C++系列第2:C++2.0(11+14+17+20)详解及多线程实战
课时介绍
课程介绍
学习并掌握C++2.0(11+14+17+20)的新特性,学习线程及线程池的应用
---------------------------------------------------
给小白学员的3年学习路径及计划
技术方面分三块:
1.纯开发技术方向
2.音视频流媒体专业方向
3.项目实战
---------------------------------------------------
1.纯开发技术方向
(1) C++必须要过硬(至少学会10本经典好书)
(2) 系统级编程(Windows、Linux),必须特别熟练系统API,灵活运用
(3) 框架与工具(Qt、MFC):必须精通其中一种。
(4) 架构与设计模式:需要提升一个高度,不再是简单的编码,而是思维模式。
(5) 驱动级别(如果有兴趣,可以深入到驱动级:包括Windows、Linux)
(6) 最好学习点Java+Html+javascript等WEB技术。
2.音视频流媒体专业方向
(1) 音视频流媒体基础理论:
必须认真学会,否则看代码就是看天书
(2) 编解码方向:精通h.264,h.265(hevc),
包括理论和各个开源库(ffmpeg,libx264,libx265,...)。
(3) 直播方向: 精通各种直播协议(rtsp,rtmp,hls,http-flv,...),
钻研各个开源库(live555,darwin,srs,zlmediakit,crtmpserver,...)
(4) 视频监控: 理论+开源库(onvif+281818)(EasyMonitor、iSpy、ZoneMinder(web)、...)
3.项目实战
(1) Qt项目: 至少要亲手练习10个实战项目
(网络服务器、多线程、数据库、图像处理、多人聊天、等等)
(2)音视频项目:包括编解码、视频监控、直播等各个方向,都需要亲手实战项目,
包括视频服务器、后台管理系统、前端播放器(多端)
---------------------------------------------------
第1章 C++11新特性 4
1). nullptr关键字与新语法 4
2). auto和decltype类型推导 6
auto讲解 6
auto示例 7
decltype 8
3). for区间迭代 9
4). 初始化列表 10
5). 模板增强 11
外部模板 11
类型别名模板 12
默认模板参数 12
6). 构造函数 13
委托构造 13
继承构造 14
7). Lambda 表达式 15
8). 新增容器 20
std::array 20
std::forward_list 21
无序容器 22
元组 std::tuple 23
9). 正则表达式 26
10). 语言级线程支持 28
多线程库简介 28
11). 右值引用和move语义 31
右值引用和move语义 32
转移左值 34
12). constexpr 35
第2章 C++14新特性 36
Lambda 函数 36
类型推导 37
返回值类型推导(Return type deduction) 37
泛型lambda 39
[[弃用的]] [[deprecated]]属性 40
二进制数字和数字分隔符 41
第3章 C++17新特性 42
安装GCC10.2 42
安装msys2-x86_64-20200720 42
更新镜像 42
更新软件库 43
安装 MinGW64 等必要的软件 43
环境变量Path 43
编译命令 43
constexpr 44
typename 45
折叠表达式 47
结构化绑定 48
条件分支语句初始化 49
聚合初始化 50
嵌套命名空间 52
lambda表达式捕获*this的值 53
改写/继承构造函数 54
用auto作为非类型模板参数 55
__has_include 56
fallthrough 57
nodiscard 57
maybe_unused 58
第4章 C++20新特性 59
编译命令 59
concept 59
typename 60
explicit 61
constinit 62
位域变量的默认成员初始化 62
指定初始化 63
基于范围的for循环初始化 64
放宽基于范围的for循环,新增自定义范围方法 65
嵌套内联命名空间 66
允许用圆括弧的值进行聚合初始化 67
unicode字符串字面量 68
允许转换成未知边界的数组 68
likely和unlikely 69
第5章 C++2.0(11/14/17/20)总结与分析 70
5.1 C语言与C++ 71
5.2 语言可用性的强化 72
5.2.1 常量 72
5.2.2 变量及其初始化 73
5.2.3 类型推导 74
5.2.4 控制流 76
5.2.5 模板 77
5.2.6 面向对象 81
5.3 语言运行期的强化 83
5.3.1 Lambda 表达式 83
5.3.2 右值引用 86
5.4 容器 88
5.4.1 线性容器 88
5.4.2 无序容器 89
5.4.3 元组 89
5.5 智能指针与内存管理 90
5.5.1 RAII 与引用计数 90
5.5.2 std::shared_ptr 90
5.5.3 std::unique_ptr 91
5.5.4 std::weak_ptr 91
第6章 C++2.0多线程原理与实战 93
什么是并发 93
并发的方式 93
为什么使用并发 95
线程简介 96
创建线程的三种方式 97
1. 通过函数 97
2.通过类对象创建线程 99
3.通过lambda表达式创建线程 101
thread线程的使用 101
互斥量与临界区 105
期物Future 111
条件变量 112
原子操作 114
内存模型 118
第7章 C++2.0线程池原理与实战 120
线程与线程池的基本原理 120
1)、线程 120
2)、线程的生命周期 121
3)、什么是单线程和多线程 121
4)、线程池 122
5)、四种常见的线程池 123
线程池的架构与流程 123
线程池代码实战 125

信息系统项目管理师自考笔记
李明 · 664人在学

python从0到1:期货量化交易系统(CTP实战,高频及合成K线数据
王先生 · 21892人在学

手把手搭建Java超市管理系统【附源码】(毕设)
汤小洋 · 4175人在学

Java毕设springboot外卖点餐系统 毕业设计毕设源码 使用教
黄菊华 · 774人在学

基于SSM酒店管理系统(毕设)
小尼老师 · 825人在学

java项目实战之购物商城(java毕业设计)
Long · 5144人在学

手把手搭建Java求职招聘系统【附源码】(毕设)
汤小洋 · 1493人在学

Python Django 深度学习 小程序
钟翔 · 2299人在学

城管局门前三包管理系统+微信小程序(vue+springboot)
赖国荣 · 564人在学

Vue+Uni-app(uniapp)入门与实战+赠送仿美团点餐小程序
李杰 · 3954人在学