4006-998-758
3000+课程任你选择
C++赋能训练营
研发学院 C++导引 C++赋能训练营 深入应用C++11 开课时间:2021-07-03
祁宇

祁老师,工学硕士,C++国际标准委员会审稿委员、《深入应用C++11》作者、《程序员》特约撰稿人。开源技术社区purecpp创始人兼社区负责人,C++专家,开源库rest_rpc, iguana, cinatra, feather, ormpp作者。热爱开源,热爱modern c++,乐于研究和分享技术,多次在国际C++大会上做演讲。现任某互联网公司技术专家,负责大型分布式系统、并行计算、边缘计算等领域的研究。



查看老师详情
课程内容

时间

课程内容

 

 

第一天、上午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++设计模式


返回上一级