# NoteBook **Repository Path**: ericling666/note-book ## Basic Information - **Project Name**: NoteBook - **Description**: 我的笔记 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-09-14 - **Last Updated**: 2023-10-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 一. c++ 基础进阶课程内容笔记 ## 1. 内存划分 调用堆栈 编译链接 ### 1.1 进程的虚拟地址空间内存划分和布局 [1-1](./1-1/readme.md) ### 1.2 函数的调用堆栈详细过程 [1-2](./1-2/readme.md) ### 1.3 程序编译链接原理 > 可参考《深入理解计算机系统》第7章 和 《程序员的自我修养》第2,3,4,6章 [1-3](./1-3/readme.md) ## 2. C++基础部分 ### 2.1 new/delete malloc/free [2-1](./2-1/readme.md) ### 2.2 引用和指针 [2-2](./2-2/readme.md) ### 2.3 const,指针和引用的结合 [2-3](./2-3/readme.md) ### 2.4 函数重载, inline函数,参数带默认值的函数 [2-4](./2-4/readme.md) ## 3. C++面向对象 ### 3.1 this指针 [3-1](./3-1/readme.md) ### 3.2 对象深拷贝和浅拷贝 [3-2](./3-2/readme.md) ### 3.3 对象的生命周期,对象的应用优化 [3-3](./3-3/readme.md) ## 4. C++模板 ### 4.1 函数模板和类模板 [4-1](./4-1/readme.md) ### 4.2 vector容器模板实现 [4-2](./4-2/readme.md) ### 4.3 容器空间配置器allocator [4-3](./4-3/readme.md) ## 5. C++运算符重载 ### 5.1 String类 [5-1](./5-1/readme.md) ### 5.2 容器迭代器iterator [5-2](./5-2/readme.md) ### 5.3 operator new和operator delete [5-3](./5-3/readme.md) ## 6. C++继承与多态 ### 6.1 静态绑定和动态绑定 [6-1](./6-1/readme.md) ### 6.2 多重继承,菱形继承,虚继承 [6-2](./6-2/readme.md) ## 7. 智能指针 ### 7.1 smart pointers [7-1](./7-1/readme.md) ## 8. 绑定器和函数对象 ### 8.1 绑定器和函数对象 [8-1](./8-1/readme.md) ### 8.2 lambda表达式 [8-2](./8-2/readme.md) ## 9. 多线程编程 - std::thread - std::this_thread - std::chrono 时间操作 - std::mutex 互斥锁 - std::lock_guard 类似于scoped_ptr 无拷贝 无移动 - std::unique_lock 类似于unique_ptr 有移动 有lock和unlock函数 - std::condition_variable 可以与std::unique_lock搭配使用 解决线程间通信问题 - std::atomic ## 10. 设计模式 创建型 单例模式 只有一个实例 分饿汉式(线程安全)和懒汉式(使用时再创建,有static(局部静态默认线程安全,自动加锁)和使用指针(需要加锁和双重确认保证线程安全)两种办法) 简单工厂 不同类型对象(可以有同一个基类)放到一个工厂中创建 使用者无需关注对象构造细节 但是不符合开闭原则 工厂方法 不同类型对象放到不同工厂中创建 一个工厂只负责一类商品 容易引入过多工厂类 且不符合实际工作逻辑 抽象工厂 一个工厂可能有多种产品 每个工厂之间生产自家不同类型的多种产品 结构型 代理模式 用户不直接访问委托类 而是与代理类打交道 代理类内部有委托类对象 代理类负责实际的访问以及额外的逻辑处理 装饰器模式 当需要额外添加功能时 一种办法是添加子类 另一种办法则是定义装饰器类 依然继承基类 但内部维护派生类 由用户构造时指定派生类 同时在多态方法上添加额外功能 可以多种功能组合定制 适配器模式 表面上是目标类型 继承了目标类型 但实际上 内部维护了老的对象 看着是HDMI 但实际内部是VGA在工作 行为型 观察者模式 也叫发布-订阅模式 目标中维护一组观察者对象 目标状态发生变化 主动通知这些观察者进行处理