Toggle navigation
NAVI NING
Home
About
Tags
Tags
The very beginning mind itself is the most accomplished mind of true enlightenment.
Life
AI
C++
Operating System
Compilers
Memory Management
OOP
Templates
STL
Design Patterns
Interview Questions
Optimization
Multithreading
Life
Hello World!
The birth of my blog
AI
Navi's Road to AI - Prelude
Sharing my own experience in learning Artificial Intelligence
C++
Observer Pattern
Publish-subscribe model for handling one-to-many objects communication
Adapter Pattern
Enable incompatible interfaces to work together
Decorator Pattern
Add new functionality to a class without changing its structure
Proxy Pattern
Authority management of objects
Factory Pattern
Simple factory, factory method and abstract factory
Singleton Pattern
Eager singleton class and thread-safe lazy singleton class
Thread Visibility and volatile
A keyword to prevent compiler optimizations
Atomic Operations
Lock-free multithreading with atomic operations
Producer-Consumer Problem
A classical thread communication mechanism
Mutual Exclusion
Important concept to prevent race conditions
Multithreaded Programming with std::thread
Multithreading is no longer a hassle
Important Features in C++11
What you must know about C++11
More about Lambda Expressions
Simple and powerful anonymous functions
std::bind() - A Simple Thread Pool
Implement a simple thread pool with std::bind()
More about std::function
Underlying implementation of std::function
Template Specialization and Argument Deduction
More advanced techniques about templates
Introduction to std::function
A powerful class to bind a function with a function object
More about Binders
Underlying implementation of bind1st and bind2nd
Custom Deleters
Custom resource release for smart pointers
Smart Pointers with Reference Counting
shared_ptr and weak_ptr
Smart Pointers without Reference Counting
auto_ptr, scoped_ptr and unique_ptr
Smart Pointers
Powerful tools in memory management
Move Semantics and Perfect Forwarding
Implement a vector container with Rvalue reference member functions
Member Functions with Rvalue References
Good approach to improve memory efficiency
Optimizing Objects in Functions
Three principles of using objects in functions
Behind the Object
What's happening when we are using objects.
Generic Algorithms, Binders and Lambda Expressions
Powerful algorithms to facilitate our work
Function Objects
An important concept in advanced C++ programming
More about Iterators
iterator, const_iterator, reverse_iterator and const_reverse_iterator
Associative Containers
set, map, unordered_set and unordered_map
Container Adaptors
stack, queue and priority_queue
Sequence Containers
vector, deque and list
Four Kinds of Type Conversions
What should type conversions be like in modern C++
Diamond Problem
A common issue in multiple inheritance
Virtual Inheritance and Virtual Base Classes
What must be mastered in multiple inheritance
Frequently Asked Interview Questions - Polymorphism
Common questions about polymorphism
Abstract Classes
Classes with pure virtual functions
Understanding Polymorphism
Why polymorphism is important in object-oriented programming
More about Virtual Functions
Other things worth mentioning about virtual functions
Virtual Functions, Static Binding and Dynamic Binding
How does C++ implement polymorphism
More about Inheritance
Function hiding and type conversions
Look inside Inheritance
The core of object-oriented programming
Overloading of new and delete - Object Pool
A very useful design pattern for resource reuse
More about new and delete
Learn more about memory management mechanisms
Issues of Iterator Invalidation
What we must pay attention to when using iterators
Introduction to Iterators
A transparent interface of container traversal
Operator Overloading
One of my favorite c++ features
Memory Allocators
Indispensable component in template containers
Class Templates
Common programming paradigm in large libraries
Function Templates
Another important programming paradigm in C++
Pointer to Class Members
Good approach to avoid code redundancy
Various Member Functions
In-depth understanding of the relationship between member functions
Initializer List
Concise way in initializing data members
Shallow Copy and Deep Copy
Issues in copying objects
Constructor and Destructor
Manage the lifecycle of an object
Class and Object
Essences of object-oriented programming
References in Detail
An alias for an existing variable
const and Pointers
Understand const in depth
new and delete
Operators for memory management
Function Overloading
One of static polymorphism
Inline Function
A good optimization approach
Default Parameters
Function with default parameters
Program Compiling and Linking
From source code to executable file
Function Call - Stack Frame
What happen after a function is called
Virtual Address Space of Process - Memory Partition and Layout
What happen after a program starts
Operating System
Program Compiling and Linking
From source code to executable file
Function Call - Stack Frame
What happen after a function is called
Virtual Address Space of Process - Memory Partition and Layout
What happen after a program starts
Compilers
Virtual Functions, Static Binding and Dynamic Binding
How does C++ implement polymorphism
Program Compiling and Linking
From source code to executable file
Memory Management
Custom Deleters
Custom resource release for smart pointers
Smart Pointers with Reference Counting
shared_ptr and weak_ptr
Smart Pointers without Reference Counting
auto_ptr, scoped_ptr and unique_ptr
Smart Pointers
Powerful tools in memory management
Overloading of new and delete - Object Pool
A very useful design pattern for resource reuse
More about new and delete
Learn more about memory management mechanisms
Memory Allocators
Indispensable component in template containers
Shallow Copy and Deep Copy
Issues in copying objects
new and delete
Operators for memory management
OOP
Diamond Problem
A common issue in multiple inheritance
Virtual Inheritance and Virtual Base Classes
What must be mastered in multiple inheritance
Frequently Asked Interview Questions - Polymorphism
Common questions about polymorphism
Abstract Classes
Classes with pure virtual functions
Understanding Polymorphism
Why polymorphism is important in object-oriented programming
More about Virtual Functions
Other things worth mentioning about virtual functions
Virtual Functions, Static Binding and Dynamic Binding
How does C++ implement polymorphism
More about Inheritance
Function hiding and type conversions
Look inside Inheritance
The core of object-oriented programming
Pointer to Class Members
Good approach to avoid code redundancy
Various Member Functions
In-depth understanding of the relationship between member functions
Initializer List
Concise way in initializing data members
Shallow Copy and Deep Copy
Issues in copying objects
Constructor and Destructor
Manage the lifecycle of an object
Class and Object
Essences of object-oriented programming
Templates
Template Specialization and Argument Deduction
More advanced techniques about templates
Memory Allocators
Indispensable component in template containers
Class Templates
Common programming paradigm in large libraries
Function Templates
Another important programming paradigm in C++
STL
Generic Algorithms, Binders and Lambda Expressions
Powerful algorithms to facilitate our work
Function Objects
An important concept in advanced C++ programming
More about Iterators
iterator, const_iterator, reverse_iterator and const_reverse_iterator
Associative Containers
set, map, unordered_set and unordered_map
Container Adaptors
stack, queue and priority_queue
Sequence Containers
vector, deque and list
Issues of Iterator Invalidation
What we must pay attention to when using iterators
Introduction to Iterators
A transparent interface of container traversal
Memory Allocators
Indispensable component in template containers
Design Patterns
Observer Pattern
Publish-subscribe model for handling one-to-many objects communication
Adapter Pattern
Enable incompatible interfaces to work together
Decorator Pattern
Add new functionality to a class without changing its structure
Proxy Pattern
Authority management of objects
Factory Pattern
Simple factory, factory method and abstract factory
Singleton Pattern
Eager singleton class and thread-safe lazy singleton class
Overloading of new and delete - Object Pool
A very useful design pattern for resource reuse
Interview Questions
Frequently Asked Interview Questions - Polymorphism
Common questions about polymorphism
Optimization
Move Semantics and Perfect Forwarding
Implement a vector container with Rvalue reference member functions
Member Functions with Rvalue References
Good approach to improve memory efficiency
Optimizing Objects in Functions
Three principles of using objects in functions
Behind the Object
What's happening when we are using objects.
Multithreading
Thread Visibility and volatile
A keyword to prevent compiler optimizations
Atomic Operations
Lock-free multithreading with atomic operations
Producer-Consumer Problem
A classical thread communication mechanism
Mutual Exclusion
Important concept to prevent race conditions
Multithreaded Programming with std::thread
Multithreading is no longer a hassle
std::bind() - A Simple Thread Pool
Implement a simple thread pool with std::bind()