时间 | 课程内容
|
第一天、上午C++导引 | 1、C++简史 1.1、C++的历史 1.2、C++之父谈C++ 2、C++的应用领域 3、C++开源项目介绍 4、基础库 boost asio folly abseil ranges fmt date 网络通信 http beast cinatra dragon rpc grpc brpc rest_rpc 反向代理 Envoy cinatra 序列化 protocol buffer msgpack nlohmann/json rapidjson 并行计算 threadpool taskflow ppl tbb 专业领域 机器学习 区块链 单元测试 catch2 doctest gtest 日志 spdlog nanolog
|
第一天下午深入应用C++11 | 1、C++11概览 2、C++11让代码更简洁 2.1、 从auto看C++演进趋势 2.2、auto的使用建议 2.3、decltype的适用场景 2.4、返回类型后置的使用建议 2.5、 从初始化列表看C++的演进趋势 2.6、代理构造 2.7、range-based for-loop 3、C++11让代码更灵活 3.1、lambda 3.2、 使用lambda需要注意的问题 3.3、std::function和函数指针 3.4、std::function和lambda 3.5 、std::function的典型应用 3.6、tuple 3.7、variadic templates 3.8、可变参数模版的展开 3.9、可变参数模版的应用 4、C++11让代码更高效 4.1、 右值引用 4.2、move语义 4.3、完美转发 5、C++11让代码更安全 5.1、 java和C++98/03的垃圾回收机制 5.2 、智能指针 5.3、使用智能指针需要注意的问题 6、noexcept 6.1、如何实现异常安全 6.2、final, override, noncopyable 6.3、 编译期检查 7、C++11多线程 7.1 、线程,线程组 7.2、原子变量 7.3、自旋锁 7.4、锁 7.5、使用锁需要注意的问题 7.6、条件变量/信号量 7.7、promise/future 7.8、线程池 8、 C++11总结
|
第二天、上午深入应用C++14,现代C++函数式编程 | 1、返回类型推断 1.1、从返回类型后置到返回类型推断 1.2、返回类型推断的应用场景 2、decltype(auto) 3、C++14中的lambda 3.1、捕获时初始化 3.2 、泛型lambda 3.3、泛型lambda的威力 3.4 、泛型lambda对泛型编程的影响 4、C++14 constexpr 4.1、constexpr相比C++11的改进 4.2、constexpr让编译期计算代码更简单 4.3、用constexpr优化性能 5、C++14变量模板 5.1、变量模版的用法 5.2、变量模版的妙用 5.3、一个编译期查找的map 6、C++14中的模版别名 6.1、对C++11变量模版的改进 6.2、模版别名的应用void_t 7、C++14中其它特性 7.1 、static_assert 7.2、make_unique 7.3、编译期整形序列 7.4、user-litrals 8、C++14真的是一个小版本吗? 8.1、C++14带来的改变 9、函数式编程的特点和应用场景 10、函数式编程范式 10.1、函数是一等公民 10.2、高阶函数 10.3、递归 10.4、pipeline 10.5、惰性求值 10.6、柯里化 11、函数式编程的应用 12、面向对象和函数式编程的比较 13、函数式编程需要注意的问题
|
第二天、下午现代C++设计模式 | 1、odern C++设计模式 2、OOP, OOD, UML 3、从最简单的nullobject模式开始 4、单例 4.1、忘掉volatile和双检测锁 4.2、两行C++11代码实现单例模式 4.3、通过C++11新特性对单例模式做一个泛化 4.4、单例模式的变体--多例 4.5、实际应用 5、工厂 5.1、非常常见的工厂方法 5.2、从工厂方法到工厂模式 5.3、从工厂到抽象工厂 5.4、用modern c++来终结工厂模式的实现 5.5、再谈工厂方法 5.6、实际应用 6、访问者模式 6.1、经典的双分派visitor的实现 6.2、经典实现存在的问题 6.3、用modern c++改进visitor模式的实现 6.4、无环的visitor模式 6.5、visitor模式在实际开发中的应用--variant 6.6、再谈visitor模式 6.7、实际应用 7、策略模式 7.1、动态多态 7.2、policy-base 7.3、pimpl 7.4、实现静态多态的几种思路 7.5、实际应用 8、对象池模式 8.1、对象复用 8.2、modern c++实现对象池模式 8.3、一个实际的数据库连接池 9、设计模式再思考 9.1、避免过度设计 9.2、忘掉设计模式 9.3、保持重构
|
可选内容其中编译器反射这个放在大纲的后面写下备选内容(祁老师觉得编译器反射和函数编程可以换下,祁老师觉得编译器反射比函数式编程更实用)
| 1、什么是编译期反射 1.1、 反射 1.2 、元数据 1.3、反射的本质 1.4、反射的用处 2、编译期反射的实现 2.1、实现编译期反射需要的技术 2.2、实现思想 2.3、具体实现 2.4、约束 2.5、编译期反射的提案 3、编译期反射的实际应用 3.1、序列化引擎 3.2、ORM 3.3、DSL 3.4、协议适配 3.5、数据绑定 4、编译期反射的未来 |
课程安排
第一天:C++导引,深入应用C++11
第二天上午:深入应用C++14,现代C++函数式编程
第二天下午:现代C++设计模式