BITS PILANI WILP Third Semester MTech in Cloud Computing Study Notes
Security Fundamentals Chapter 3: Infrastructure Security Chapter 3: Infrastructure Security Summary
Curated, long-form guides on C++, Linux, embedded systems, cloud computing, AI, and more.
Modern C/C++ articles covering templates, RAII, memory management, and real-world performance engineering.
LinuxKernel programming, Linux internals, drivers, debugging tools, and low-level systems engineering.
EmbeddedEmbedded C, board bring-up, device drivers, IoT protocols, microcontrollers, and real embedded workflows.
CloudAWS pipelines, Glue ETL, Lambda automation, monitoring, cloud engineering, and DevOps practices.
AI/MLStudy notes, NLP, ML concepts, training models, GPU compute, Big Data pipelines, and distributed data processing.
NetworksRouting, distributed computing, MPI, parallel processing, networking fundamentals, and systems communication.
Big DataTechnical content focused on large-scale data processing, distributed storage systems, ETL pipelines, data partitioning, batch and streaming architectures, Hadoop-ecosystem tools, and performance optimisation for high-volume data workloads.
NotesBITS Pilani WILP notes, cloud computing summaries, AI/ML semester material, and structured study guides for students and engineers.
Security Fundamentals Chapter 3: Infrastructure Security Chapter 3: Infrastructure Security Summary
The discussion centers on returning std::vector from C++ functions, highlighting Return Value Optimization (RVO) introduced in C++17. RVO allows the compiler to avoid copying vectors by constructing them in place when there’s a single return path. For multiple return paths, std::move is used to transfer ownership efficiently. Exceptions exist, particularly with the conditional operator, which requires copying. Returning references from member functions is safer than from free functions since the object’s lifetime ensures validity.
In multi-threaded programming, protecting shared resources is crucial. std::mutex is common, but may bottleneck performance when many readers access data. std::shared_mutex can optimize scenarios with many readers and few writers, though its advantages depend on thread concurrency. Understanding the workload’s read/write balance is key for effective synchronization.
This post discusses the importance of efficient data handling in modern C++, exploring methods of passing contiguous data buffers to functions, including raw pointers, std::vector, std::array, and the C++20 feature std::span. It highlights the strengths and weaknesses of each method, emphasizing std::span’s benefits for safe, flexible data management without ownership.
Choosing an appropriate C++ container impacts memory layout, cache efficiency, and access patterns, vital for performance. Common comparisons include std::vector, std::deque, std::array, std::list, std::map, and std::unordered_map. The choice should align with data access and modification requirements, ensuring optimal performance for diverse workloads, from iteration to key-based access.
The study notes cover AI, ML, and deep learning, highlighting key concepts such as pre-trained and fine-tuned models, transfer learning, and their interpretability. It explores cognitive services across platforms like Azure and Google Cloud, emphasizing their applications in AI workflows, NLP, and computer vision tasks, along with practical examples and tools.