李优秀 发表于 2025-2-24 20:48:23

C++程序员内功修炼——Linux C/C++编程技术汇总

在软件开发的宏大版图中,C++ 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作体系,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C++ 与 Linux 相结合,就犹如为开发者配备了一把无坚不摧的利刃,可以或许在体系级编程、高性能盘算、游戏开发等诸多范畴披荆斩棘。对于 C++ 程序员而言,掌握 Linux 环境下的 C/C++ 编程技术,不仅仅是提拔自身技能的关键一步,更是在激烈的职场竞争中脱颖而出的必备法宝。这就好比一位武林高手,不仅要熟练掌握各种招式,更要修炼深厚的内功。而 Linux C/C++ 编程技术,就是 C++ 程序员的 “内功心法”。
在一样平常开发中,我们常常会碰到各种寻衅:如何优化代码性能,让程序运行得更加高效?怎样利用多线程技术,充分发挥多核处置惩罚器的优势?如何与底层体系举行交互,实现更强盛的功能?这些标题,都能在 Linux C/C++ 编程技术的世界中找到答案。接下来,就让我们一同踏上这趟 Linux C/C++ 编程技术的探索之旅,从基础语法到高级应用,从文件操作到网络编程,从多线程处置惩罚到内存管理,全方位地深入学习,修炼 C++ 程序员的深厚 “内功”。无论你是初出茅庐的编程新手,还是履历丰富的开发老兵,相信都能在这篇文章中收获满满,为自己的编程之路注入强盛的动力。
   本文福利, 免费领取C++学习资料包、技术视频/代码,1000道大厂口试题,内容包罗(C++基础,网络编程,数据库,中间件,后端开发,音视频开发,Qt开发)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓QQqun:1106675687
一、C/C++ Linux全栈开发

   大厂尺度 , 口试常问, 工作常用技术栈;手写代码实现:sdpk文件体系,dpdk用户态协议栈,异步网络库zvnet ,协程,io_uring,Nginx,bpf,线程池,内存池,连接池,原子操作,ringbuffer,定时器,死锁检测,分布式锁,日志,probuf,kafka,grpc,udp可靠传输;上线项目:KV存储项目,图床项目,即时通讯项目,内网穿透channel,魔兽游戏项目等。
1.1精进基石专栏

(1)数据结构与算法


[*] 随处可见的红黑树
[*] 红黑树的应用场景历程调理cfs,内存管理
[*] 红黑树的数学证实与推导
[*] 手撕红黑树的左旋与右旋
[*] 红黑树添加的实现与添加三种情况的证实
[*] 红黑树删除的实现与删除四种情况的证实
[*] 红黑树的线程安全的做法
[*] 分析红黑树工程实用的特点
[*] 磁盘存储链式的B树与B+树
[*] 磁盘结构分析与数据存储原理
[*] 多叉树的运用以及B树的界说证实
[*] B树插入的两种分裂
[*] B树删除的前后借位与节点合并
[*] 手撕B树的插入,删除,遍历,查找
[*] B+树的界说与实现
[*] B+树叶子节点的前后指针
[*] B+树的应用场景与实用特点
[*] B+树的线程安全做法
[*] 海量数据去重的abhloriter bitap
[*] hash的原理与hash函数的实现
[*] hash的应用场景
[*] 分布式hash的实现原理
[*] 海量数据去重布隆过滤器
[*] 布隆过滤的数学推导与证实
(2)筹划模式


[*] 创建型筹划模式
[*] 单例模式
[*] 策略模式
[*] 观察者模式
[*] 工厂方法模式与抽象工厂模式
[*] 原型模式
[*] 结构型筹划模式
[*] 适配器模式
[*] 代理模式
[*] 责任链模式
[*] 状态模式
[*] 桥接模式
[*] 组合模式
(3)c++新特性


[*] stI容器,智能指针,正则表达式
[*] unordered_ _map
[*] stl容器
[*] hash的用法与原理
[*] shared_ ptr,unique_ ptr
[*] basic_ regex,sub_ match
[*] 函数对象模板function, bind
[*] 新特性的线程,协程,原子操作,lamda表达式
[*] atomic的用法与原理
[*] thread_ local 与condition_ var iable
[*] 异常处置惩罚exception_ _ptr
[*] 错误处置惩罚error _ category
[*] coroutine的用法与原理
(4)Linux工程管理


[*] Makefi le/ cmake/conf igure
[*] Makefile的规则与make的工作原理
[*] 单文件编译与多文件编译
[*] Makefile的参数传递
[*] 多目录文件夹递归编译与嵌套执行make
[*] Makefile的通配符,伪目标,文件搜索
[*] Makefile的操作函数与特别语法
[*] configure生成makefile的原则
[*] cmake的写法
[*] 分布式版本控制git
[*] git的工作流程
[*] 创建操作与基本操作
[*] 分支管理,查看提交汗青
[*] git服务器搭建
[*] Linux体系运行时参数命令
[*] 历程间通讯办法状态ipcs
[*] Linux体系运行时长upt ime
[*] CPU均匀负载和磁盘活动iostat
[*] 监控,收集和汇报体系活动sar
[*] 监控多处置惩罚器利用情况mpstat
[*] 监控历程的内存利用情况pmap
[*] 体系管理员调优和基准测量工具nmon
[*] 密切关注Linux体系glances
[*] 查看体系调用strace
[*] ftp服务器基本信息ftptop
[*] 电量斲丧和电源管理powertop
[*] 监控mysq| 的线程和性能mytop
[*] 体系运行参数分析htop/top/atop
[*] Linux网络统计监控工具netstat
[*] 显示和修改网络接口控制器ethtool
[*] 网络数据包分析利刃tcpdump
[*] 长途登陆服务的尺度协议teInet
[*] 获取实时网络统计信息iptraf
[*] 显示主机上网络接口带宽利用情况iftop
(5)gdb调试


[*] vscode长途连接Linux
[*] vscode gdb开发环境设置
[*] gdb调试概述
[*] gdb调试准备
[*] gdb调试命令详解
[*] gdb多线程调试
[*] gdb附加历程调试
[*] gdb core fles调试
1.2高性能网络筹划专栏

(1)网络编程异步网络库zvnet


[*] 网络io与io多路复用select/poll/epoll
[*] socket与文件描述符的关联
[*] 多路复用select/poll
[*] 代码实现LT/ET的区别
[*] 事件驱动reactor的原理与实现
[*] reactor针对业务实现的长处
[*] poll封装send_ cb/recv_ _cb/ accept_ _cb
[*] reactor多核实现
[*] 跨平台(select/epoll/kqueue)的封装reactor
[*] redis,memcached, nginx网 络组件
[*] http服务器的实现
[*] reactor sendbuffer与recvbuffer封装http协议
[*] http协议格式
[*] 有限状 态机fsm剖析http
[*] 其他协议websocket, tcp文件传输
(2)网络原理


[*] 服务器百万并发实现(实操)
[*] 同步处置惩罚与异步处置惩罚的数据差异
[*] 网络io线程池异步处置惩罚
[*] ulimit的fd的百万级别支持
[*] sysctI. conf的rmem与wmem的调优
[*] conntrack的原理分析
[*] Posix API与网络协议栈
[*] connect,listen, accept与三次握 手
[*] listen参数backlog
[*] syn泛洪的办理方案
[*] close与四次挥手
[*] 11个状态迁徙
[*] 大量close_ wait与time wait的原因与办理方案
[*] tcp keepalive与 应用层心跳包
[*] 拥塞控制与滑动窗口
[*] UDP的可靠传输协议QUIC
[*] udp的优缺点
[*] udp高并发的筹划方案
[*] qq早期为什么选择udp作为通讯协议
[*] udp可靠传输原理
[*] quic协议的筹划原理
[*] quic的开源方案quiche
[*] kcp的筹划方案与算法原理
[*] 协程调理器实现与性能测试
[*] 调理器的界说分析
[*] 超时聚集,停当队列,io等待聚集的实现
[*] 协程调理的执行流程
[*] 协程接口实现,异步流程实现
[*] hook钩子的实现
[*] 协程实现mysql请求
[*] 协程多核方案分析
[*] 协程性能测试
(3)自研框架:基于dpdk的用户态协议栈的实现(已开源)


[*] 用户态协议栈筹划实现
[*] 用户态协议栈的存在场景与实现原理
[*] netmap开源框架
[*] eth协议,ip协议, udp协议实现
[*] arp协议实现
[*] icmp协议实现
[*] 应用层posix api的详细实现
[*] socket/bind/listen的实现
[*] accept实现
[*] recv/send的实现
[*] 滑动窗口/慢启动讲解
[*] 重传定时器,坚持定时器,time_ wait定时器,keepalive定时器
[*] 手把手筹划实现epoll
[*] epoll数据结构封装与线程安全实现
[*] 协议栈fd停当回调实现
[*] epoll接口实现
[*] LT/ET的实现
[*] 高性能异步io机制io_ _uring
[*] 与epo1l媲美的io_ uring
[*] io_ _uring体系调用io_ _uring_ setup, io_ _ur ing_ register, io_ _ur ing_ enter
[*] liburng的io_ uring的关系
[*] io_ uring与epoll性能对比
[*] io_ _uring的共享内存机制
[*] io_ uring的利用场景
[*] io_ ur ing的accept, connect, recv, send实现机制
[*] io_ uring网络读写
[*] io_ uring磁盘读写
[*] proactor的实现
[*] windows异步机制iocp(以下为新增)
[*] iocp完成端口的工作机制
[*] iocp的精髓重叠io
[*] iocp处置惩罚维护连接以及连接上的收发数据
[*] iocp多线程处置惩罚方案
1.3基础组件筹划专栏

(1)池式组件


[*] 手写线程池与性能分析(项目)
[*] 线程池的异步处置惩罚利用场景
[*] 线程池的组成任务队列执行队列
[*] 任务回调与条件等待
[*] 线程池的动态防缩
[*] 扩展: nginx线程池实现对比分析
[*] 内存池的实现与场景分析(项目)
[*] 内存池的应用场景与性能分析
[*] 内存小块分配与管理
[*] 内存大块分配与管理
[*] 手写内存池,结构体封装与API实现
[*] 避免内存泄漏的两种万能方法
[*] 定位内存泄漏的3种工具
[*] 扩展:nginx内存池实现
[*] mysq|连接池的实现(项目)
[*] 连接池性能的影响的2个因素,top连接和mysq|认证
[*] 连接请求归还策略
[*] 连接超时未归还策略
[*] 链接断开重连策略
[*] 连接数量最优策略
(2)高性能组件


[*] 原子操作CAS与锁实现(项目)
[*] 互斥锁的利用场景与原理
[*] 自旋锁的性能分析
[*] 原子操作的汇编实现
[*] 无锁消息队列实现(项目)
[*] 有锁无锁队列性能
[*] 内存屏蔽Barrier
[*] 数组无锁队列筹划实现
[*] 链表无锁队列筹划实现
[*] 网络缓冲区筹划
[*] RingBuffer筹划
[*] 定长消息包
[*] ChainBuffer 筹划
[*] 双缓冲区筹划
[*] 定时器方案红黑树,时间轮,最小堆(项目)
[*] 定时器的利用场景
[*] 定时器的红黑树存储
[*] 时间轮的实现
[*] 最小堆的实现
[*] 分布式定时器的实现
[*] 手写死锁检测组件(项目)
[*] 死锁的现象以及原理
[*] pthread_ _mutex_ lock/pthread_ _mutex_ _unlock dIsym的实现
[*] 有向图的构建
[*] 有向图dfs判断环的存在
[*] 三个原语操作 lock before, lock_ after, unlock_ after
[*] 死锁检测线程的实现
[*] 手写内存泄漏检测组件(项目)
[*] 内存泄漏现象
[*] 第三方内存泄漏与代码内存泄漏
[*] malloc与free的dIsym实现
[*] 内存检测策略
[*] 应用场景测试
[*] 手把手实现分布式锁(项目)
[*] 多线程资源竞争互斥锁
[*] 自旋锁
[*] 加锁的异常情况
[*] 非公平锁的实现
[*] 公平锁的实现
(3)开源组件


[*] 异步日志方案spdlog (项目)
[*] 日志库性能瓶颈分析
[*] 异步日志库筹划与实现
[*] 批量写入与双缓存冲机制
[*] 瓦解后的日志找回
[*] 应用层协议筹划ProtoBuf(项目)
[*] IM, 云平台,nginx, http, redis协议筹划
[*] 如何保证消息完整性
[*] 手撕protobuf IM通讯 协议
[*] protobuf序列化与反序列化
[*] protobuf编码原理
1.4中间件开发专栏

(1)Redis


[*] Redis相关命令详解及其原理
[*] string,set, zset, Iist,hash
[*] 分布式锁的实现
[*] Lua脚本办理ACID原子性
[*] Redis事务的ACID性质分析
[*] Redis协议与异步方式
[*] Redis协议剖析
[*] 特别协议操作订阅发布
[*] 手撕异步redis协议
[*] 存储原理与数据模子
[*] string的三种编码方 式int, raw, embstr
[*] 双向链表的list实现
[*] 字典的实现,hash函数
[*] 办理键辩论与rehash
[*] 跳表的实现 与数据论证
[*] 整数聚集实现
[*] 压缩列表原理证实
[*] 主从同步与对象模子
[*] 对象的范例与编码
[*] 广字符串对象
[*] 列表对象
[*] 哈希对象
[*] 聚集对象
[*] 有序聚集
[*] 范例检测与命令多态
[*] 内存接纳
[*] 对象共享
[*] 对象空转时长
[*] redis的3种集群方式主从复制,sentinel, cluster
[*] 4种长期化方案
(2)MySQL


[*] SQL语句,索引,视图,存储过程,触发器
[*] MySQL体系结构,SQL执行流程.
[*] SQL CURD与高 级查询
[*] 视图,触发器,存储过程
[*] MySQL权限管理
[*] MySQL索引原理以及SQL优化
[*] 索引,约束以及之间的区别
[*] B+树,聚集索引和辅助索引
[*] 最左匹配原则以及覆盖索引
[*] 索引失效以及索引优化原则
[*] EXPLAIN执行筹划以及优化选择过程分析
[*] MySQL事务原理分析
[*] 事务的ACID特性
[*] MySQL并发标题脏读,不可重复读,幻读
[*] 事务隔离级别
[*] 锁的范例,锁算法实现以及锁操作对象
[*] S锁X锁|S锁IX锁
[*] 记载锁,间隙锁,next-key lock
[*] 插入意向锁,自增锁
[*] MVCC原理剖析
[*] MySQL缓存策略
[*] 读写分离,连接池的场景以及其局限a
[*] 缓存策略标题分析
[*] 缓存策略强同等性办理方案
[*] 缓存策略终极同等性办理方案
[*] 2种mysql缓存同步方案从数据库与触发器+udf
[*] 缓存同步开源方案go-mysql-transfer
[*] 缓存同步开源方案canal原理分析
[*] 3种缓存故障,缓存击穿,缓存穿透,缓存雪崩
(3)Kafka


[*] Kafka使 用场景与筹划原理
[*] 发布订阅模式
[*] 点对点消息传递
[*] Kafka Brokers原 理
[*] Topi cs和Partition
[*] Kafka存 储机制
[*] Partition存储分布
[*] Partition文件存储机制
[*] Segment文件存储结构
[*] offset查找message
[*] 高效文件存储筹划
[*] 微服务之间通讯基石gRPC
[*] gRPC的 内部组件关联
[*] CI ientS ide与ServerSide, Channel, Ser ivce, Stub的概念
[*] 异步gRPC的实现
[*] 回调方式的异步调用
[*] Server 与CI ient对RPC的实现
[*] 基于http2的gRPC通讯协议
[*] 基于http协 议构造
[*] ABNF语法
[*] 请求协议Request-Headers
[*] gRPC上下文传递
(4)Nginx


[*] Nginx反 向代理与体系参数配置conf原理
[*] Nginx静态文件的配置
[*] Nginx动态接口代理配置
[*] Nginx对Mqtt协议转发
[*] Nginx对Rtmp推拉流
[*] Openresty对Redis缓存数据代理
[*] shmem的三种实现方式
[*] 原子操作
[*] nginx channel
[*] 信号
[*] 信号量
[*] Nginx过滤 器模块实现
[*] Nginx Filter模块运行原理
[*] 过滤链表的顺序
[*] 模块开发数据结构 ngx_str_t,ngx_ list_ t,ngx_ buf_ t,ngx_ chain_ t
[*] error日志的用法
[*] ngx_ comond_ t的讲解
[*] ngx_http_module_t的执行流程
[*] 文件锁,互斥锁
[*] slab共享内存
[*] 如何办理 "惊群”标题
[*] 如何实现负载均衡
[*] Nginx Handler模块实现
[*] Nginx Handler模块运行原理:
[*] ngx_ module_ t/ngx_ http_ module_ t的讲解
[*] ngx_ http_ top_ body_ filter/ngx_ http_ _top_ header_ filter的 原理
[*] ngx_ rbtree_ t的利用方法
[*] ngx_ rbtree自界说添加方法
[*] Nginx的核心数据结构ngx_ cycle_ t,ngx_ event. _moule_ t
[*] http请求的11个处置惩罚阶段
[*] http包体处置惩罚
[*] http相应发送
[*] Nginx Upstream机制的筹划与实现
[*] 模块性能测试
1.5开源框架专栏

(1)游戏服务器开发skynet (录播答疑)


[*] Skynet筹划原理
[*] 多核并发编程-多线程,多历程,csp模子,actor模子
[*] actor模子实现-lua服务和c服务
[*] 消息队列实现
[*] actor消息调理
[*] skynet网络层封装以及lua/c接口编程
[*] skynet reactor 网络模子封装
[*] socket/ socketchanne|封装
[*] 手撕高性能c服务
[*] lua编程以及lua/c接口编程
[*] skynet重要组件以及手撕游戏项目
[*] 基础接口 skynet. send, skynet. cal I, skynet. response
[*] 广播组件multicastd
[*] 数据共享组件 sharedatad datasheet
[*] 手撕万人同时在线游戏
(2)分布式API网关


[*] 高性能web网关Openresty
[*] Nginx与lua模块
[*] Openresty访问Redis,MySQL
[*] Restful API接口开发
[*] Openresty性能分析
[*] Kong 动态负载均衡与服务发现
[*] nginx,openresty, Kong之间的“苟且”
[*] 动态 负载均衡的原理
[*] 服务发现实现的原理
[*] Serverless
[*] 监控,故障检测与恢复
[*] 二代理层缓存与相应服务
[*] 体系日志
(3)SPDK助力MySQL数据落盘, 让性能腾飞(基础办法)


[*] SPDK文件体系筹划与实现
[*] NVMe与PCle的原理
[*] NVMe Controller 与bdev之间的rpc
[*] blobstore与blob的关系
[*] 文件体系的posix api实现
[*] 4层结构筹划vfs
[*] spdk的 异步改造posix同步api
[*] open/wr ite/read/close的实现
[*] 文件体系的性能测试与承接mysql业务
[*] LD_ PRELOAD更好mysql体系调用实现
[*] iodepth讲解
[*] 随机读,随机写,顺序读,顺序写
(4)高性能盘算CUDA (录播答疑)


[*] gpu并行盘算cuda的开发流程
[*] cpu+gpu的异构盘算
[*] 盘算机体系结构中的gpu
[*] cuda的环境搭建nvcc 与srun的利用
[*] cuda的向量加法与矩阵乘法
[*] MPI与CUDA
[*] 音视频编解码中的并行盘算
[*] cuda的h264编解码
[*] cuda的mpeg编解码
[*] ffmpeg的cuda支持
(5)并行盘算与异步网络引擎workflow


[*] workflow的应用场景
[*] workflow的编程范式与筹划理念
[*] mysq/redis/kafka/dns的请求实现
[*] parallel处置惩罚与任务组装
[*] workf low的组件实现
[*] 线程池实现
[*] DAG图任务
[*] msgqueue的实现
[*] 纯c的jsonparser实现
(6)物联网通讯协议mqtt的实现框架mosquitto


[*] mqtt的高效利用场景
[*] mqtt的 发布订阅模式
[*] 办理低带宽网络环境的数据传输
[*] 3种Qos等级
[*] 0Auth与JWT的安全认证
[*] mctt的broker
[*] mqtt的遗嘱机制
[*] 发布订阅的过滤器.
[*] mosqujitto的docker部暑
[*] matt的日志实时监控
(7)ZeroMQ


[*] 消息队列与ZeroMQ的应用
[*] REQ/REP模子原理分析
[*] PUB/SUB模子原理分析
[*] PUSH/PULL模子原理分析
[*] Router/Dealer模子原理分析
[*] ZeroMQ源码分析 :消息模子的实现
[*] 消息模子.
[*] 消息传递模式
[*] 消息分帧
[*] 中间层代理
[*] 消息丢失处置惩罚
[*] ZeroMQ源码分析:网络机制与性能分析
[*] 零拷贝技术
[*] 消息高水位标记
[*] 无锁队列
[*] 可靠性筹划
1.6云原生专栏

(1)Docker


[*] Docker风光下的内核功能(录播答疑)
[*] 历程namespace
[*] UTS namespace
[*] IPC namespace
[*] 网络namespace
[*] 文件体系namesapce
[*] cgroup的资源控制
[*] Docker容器管理与镜像操作(录播答疑)
[*] Docker镜像下载与镜像运行
[*] Docker存储管理
[*] Docker数据卷
[*] Docker与容器安全
[*] Docker网络管理(项目)
[*] 5种Docker网络驱动
[*] pipework跨主机通讯
[*] 0vS划分vlan与隧道模式
[*] GRE实现跨主机Docker间通讯
[*] Docker云与容器编排 (项目)
[*] Dockerfile的语法流程
[*] 编排神器Fig/Compose
[*] FIynn体系 架构
[*] Docker改变了什么?
(2)Kubernetes


[*] k8s环境搭建(录播答疑)
[*] k8s集群安全设置
[*] k8s集群网络设置
[*] k8s核心服务配置
[*] kubectI命令工具.
[*] yam|文件语法
[*] Pod与Service的用法 (录播答疑)
[*] Pod的管理配置
[*] Pod升级与回滚
[*] DNS服务之于k8s
[*] http 7层策略与TLS安全设置
[*] k8s集群管理的那些事儿(项目)
[*] Node的管理
[*] namespace隔离机制
[*] k8s集群日志管理
[*] k8s集群监控
[*] k8s二次开发与k8s API (项目)
[*] RESTful接口
[*] API聚合机制
[*] API组
[*] Go访问k8s API
1.7性能分析专栏

(1)性能与测试工具


[*] 测试框架gtest以及内存泄漏检测(录播答疑)
[*] goog letest与goog lemock文件
[*] 函数检测以及类测试
[*] test fixture测试夹具
[*] 范例参数化
[*] 事件测试
[*] 内存泄漏
[*] 设置盼望,期待参数,调用次数,满意盼望
[*] 性能工具与性能分析(录播答疑)
[*] MySQL性能测试工具mysqlslap
[*] Redis性能测试工具redis-benchmark
[*] http性能测试工具wrk
[*] Tcp性能测试工具TCPBenchmarks
[*] 磁盘,内存,网络性能分析
[*] 火焰图的生成原理与构建方式
[*] 火焰图工具讲解
[*] 火焰图利用场景与原理
[*] nginx动态火焰图
[*] MySQL火焰图
[*] Redis火焰图
(2)观测技术bpf与ebpf(原有的内容增加)


[*] bpftrace的实现原理
[*] 跟踪,嗅探,采样,可观测的理解
[*] 动态hook : kprobe/uprobe
[*] 静态hook : tracepoint和USDT
[*] cpu的观测taskset的利用
[*] bpf对tcp请求的监控(项目)
[*] bpf对网络流量的统计
[*] 网络观测tcp _connect, tcp_accept,tcp _close
[*] tcp_v4_ _connect与tp_v6 connect的探测点
[*] struct sock的五元获取
[*] bpf实现对goroutine的探测(项目)
[*] go webserver的实现
[*] uprobe应用层挂载点
[*] bpf的ringbuffer原理
[*] bpf探测java的垃圾接纳(项目)
[*] 运行时历程maps /proc/pid/maps
[*] libjvm.so信息
[*] bpf的usdt的利用
[*] java gc的耗时
(3)内核源码机制


[*] 历程调理机制哪些事儿
[*] qemu调试内存
[*] 历程调理cfs与 其他的四个调理类
[*] task_ struct结构体
[*] RCU机制与内存优化屏蔽
[*] 内核内存管理运行机制
[*] 虚拟内存地址布局
[*] SMP/NUMA模子
[*] 页表与页表缓存原理
[*] 搭档体系实现
[*] 块分配(SIab/SIub/Slob) 原理实现
[*] brk/kmalloc/vmalloc体系调用流程
[*] 文件体系组件
[*] 虚拟文件体系vfs
[*] Proc文件体系
[*] super_ _block与 inode结构体
[*] 文件描述符与挂载流程
1.8分布式架构专栏

(1)分布式数据库


[*] 不一样的kv存储RocksDB的利用场景
[*] 前缀搜索
[*] 低优先级写入
[*] 生存时间的支持
[*] Transact i ons
[*] 快照存储
[*] 日志结构的数据库引擎
[*] TiDB存储引擎的原理
[*] TiKV的Key-Value存储引擎
[*] 基于RBAC的权限管理
[*] 数据加密
[*] TiDB集群方案与Replication原理
[*] 集群三个组件 TiDB Server, PD Server, TiKV Server
[*] Raft协议讲解
[*] OLTP与0LAP
(2)分布式文件体系(录播答疑)


[*] 内核级支持的分布式存储Ceph
[*] ceph的集群部署
[*] monitor与OSD
[*] ceph 5个核心组件
[*] ceph集群监控
[*] ceph性能调调优与benchmark
[*] 分布式ceph存储集群部署
[*] 同步机制
[*] 线性扩容
[*] 如何实现高可用
[*] 负载均衡
(3)分布式协同


[*] 注册服务中央Etcd
[*] etcd配置服务、服务发现、集群监控、leader选举、 分布式锁
[*] etcd体系结构详解(gRPC, WAL,Snapshot、 BoItDB、 Raft)
[*] etcd存储原理深入剖析(B树、B+树)
[*] etcd读写机制以及事务的acid特性分析
[*] raft共识算法详解(leader选举+日志复制)
[*] 协同事件用户态文件体系fuse (项目)
[*] fuse的利用场景
[*] 文件体系读写事件
[*] fuse的实现原 理
[*] /dev/fuse的 作用
[*] 快播核心技术揭秘P2P框架的实现(录播答疑)
[*] 网关NAT表分析
[*] NAT范例,完全锥型NAT,对称NAT,端口限制锥形NAT,IP限制锥型NAT
[*] 代码逻辑实现NAT范例检测
[*] 网络穿透的原理
[*] 网络穿透的3种情况
(4)分布式监控Prometheus(新增)


[*] Prometheus监控体系
[*] 数据模子: Metric、Time Series、Sample和label
[*] 指标范例 : Counter、Gauge、Histogram、Summary
[*] 采集规则和警告规则
[*] PromQL查询语言
[*] Prometheus对MySQL/Redis的监控
[*] Mysql Redis Exporter安装配置
[*] go实现自界说应用程序指标
[*] PromQL盘算Mysq|、 Redis性能指标
[*] Prometheus数据长途存储
[*] Prometheus数据采集
[*] 6种采集点配置方式
[*] 动态重写目标采集点
[*] Grafana可视化监控仪表盘
[*] Prometheus构建企微与邮件的状态告警
[*] 邮件和企微的接入
[*] Alertmanager配置 与容器化运行
[*] 警告信息的分组
1.9上线产物项目(基础架构、从零构建)

(1)dkvstore实现(上线项目,从零构建)


[*] kv存储的架构筹划
[*] 存储节点界说
[*] tcp server/client
[*] hash数据存储
[*] list数据存储
[*] skiptable数据存储
[*] rbtree数据存储
[*] 网络同步与事务序列化
[*] 序列化与反序列化格式
[*] 创建事务与开释事务
[*] 线程安全的处置惩罚
[*] KV存储的性能测试
[*] 网络测试tps
[*] 吞吐量测试
[*] go, lua, java多语言支持
[*] hash/I ist/skiptable/rbtree测试
(2)zrpc的实现(上线项目,从零构建)


[*] rpc利用场景与架构筹划
[*] 分布式核心调理业务
[*] 网络与业务分离
[*] 网络选型reactor, 协程,io_ uring
[*] rpc的协议与序列化
[*] json界说函数
[*] 数据序列化
[*] rpc处置惩罚流程
[*] rpc的内存池的特性
[*] rpc代码自动生成器的实现
[*] 调用接口模式同一化
[*] float与double调用的差异
[*] 第三方语言的支持
[*] 性能测试与业务上线
(3)PHS 高性能网关服务(上线项目,从零构建)


[*] PHS后端框架构建
[*] reactor事件模子
[*] 核心的组成部分以及实现
[*] 框架基础功能实现
[*] 以PHS后端基础组件实现
[*] 线程池封装实现
[*] 定时器模块实现
[*] 高性能web的内存池特性
[*] PHS访问静态网页
[*] opensssI引入
[*] http协议实现
[*] 静态资源管理
[*] 性能测试与部署上线
(4)DPDK的数据包测试仪(测试工具开发,从零构建)


[*] 测试仪架构筹划与利用场景
[*] 利用场景与测试方案
[*] 多核与多线程亲缘性
[*] 测试仪利用的命令行参数
[*] 协议流构造
[*] arp数据构造
[*] udp数据包
[*] top的syn, rst, fin, ack包
[*] icmp协议构造
[*] 异常情况与测试尺度
[*] 异常命令行参数的处置惩罚
[*] 异常网络数据包的处置惩罚
[*] cpu与内存不足的异常处置惩罚
1.10上线产物项目(开源项目、框架迭代)

(1)SPDK助力MySQL数据落盘,让性能腾飞(基础办法)


[*] SPDK文件体系筹划与实现
[*] NVMe与PCle的原理
[*] NVMe Controller 与bdev之间的rpc
[*] blobstore与blob的关系
[*] 文件体系的posix api实现
[*] 4层结构筹划vfs
[*] spdk的异步改造posix同步api
[*] open/wr ite/read/c lose的实现
[*] 文件体系的性能测试与承接mysq|业务
[*] LD_ PRELOAD更 好mysql体系调用实现
[*] iodepth讲解
[*] 随机读,随机写,顺序读,顺序写
(2)魔兽世界后端TrinityCore (上线项目,迭代开发)


[*] TrinityCore开发调试环境安装
[*] linux开发调试环境安装
[*] windows开发调试环境安装
[*] SRP-6登录协议先容
[*] 基于openresty实现web注册服务
[*] TrinityCore 中高性能基础组件应用
[*] to高性能定时器方案筹划
[*] to线程模子以及锁、无锁队列应用
[*] 数据库连接池筹划
[*] 日志库的筹划
[*] TrinityCore 高性能网络模块筹划
[*] boost. asio跨平台网络库
[*] boost. asio核心命名空间以及异步io接口
[*] boost. asio在to中的封装
[*] 网络库应用实践
[*] TrinityCore 游戏技能模块筹划
[*] 技能模块筹划
[*] 技术配置以及数据库表筹划
[*] 技能模块组成部分
[*] 技能生成、处置惩罚以及生命周期管理
[*] 暴风雪、背击等技能实现详解
[*] 游戏AI模块筹划
[*] Al模块实现层次
[*] Al模块三种细分方向以及选择
[*] 固定Al筹划实现以及幼狼AI案例讲解
[*] 脚本Al筹划实现以及BossAl案例讲解
[*] 游戏副本模块筹划
[*] 副本模块:管理、匹配、积分结算逻辑实现
[*] 副本模块实现的抽象,层次
[*] 战歌峡谷副本实现
[*] 阿拉希盆地副本实现
(3)网络数据包过滤firewall (从零构建)


[*] firewall内核空间netfilter架构筹划
[*] 内核空间筹划与实现分析
[*] 筹划数据包传递参数值
[*] 封装端口及IP规则范例
[*] 筹划检测规则/IP/协议函数
[*] firewall内核空间架构实现
[*] 检测规则/IP/协议函数实现
[*] 检查权限及规则函数实现
[*] 数据包出入站过滤器实现
[*] 读写规则/检查规则匹配实现
[*] 删除规则/模块加载和知裁
[*] firewall用户空间架构筹划
[*] 用户空间筹划与实现分析
[*] 筹划数据包传递参与宏
[*] 封装端口及|P规则范例
[*] firewall 应用程序调试与上线
[*] Hook入口函数筹划与实现
[*] IP/掩码/端口函数实现
[*] 协议范例/剖析/删除规则
[*] 用户层访问及bug处置惩罚
[*] 用户程序测试及调试技巧
(4)BPF网络数据包探测器(从零构建)


[*] 监控探测仪的场景与架构筹划
[*] bpf.c实现tcp数据包探测
[*] bpf.c剖析tcp与http
[*] 内核与应用层的通讯数据格式
[*] tc数据流记载存储
[*] kv存储构建发送与接收的key-value
[*] http请求实现集中式存储
[*] 数据流记载表关系
[*] 测试上线与前端显示
[*] 内核与应用程序的通讯测试
[*] kv的存储测试
[*] 数据流记载表的qps测试
[*] 前端显示与上线
1.11上线产物项目(产物运营、从零落地)

(1)图床共享云存储(上线项目,从零构建)


[*] fastdfs架构分析和配置
[*] fastdfs架构分析
[*] 快递配查fastdfs
[*] 上传文件逻辑分析
[*] 下载文件逻辑分析;
[*] 文件传输和接口筹划
[*] 数据库筹划
[*] 图床接口筹划
[*] reactor网络模子构建
[*] 注册/登录/我的文件功能实现
[*] 分布式fastdfs存储集群部署和HTTP上传
[*] storage存储原理分析.
[*] 上传下载原理
[*] 实现文件上传功能
[*] 雷同文件内容只保存一份
[*] 图片分享和短链服务实现
[*] 图片分享功能实现
[*] 图片分享数据库筹划
[*] 长链转短链机制
[*] Redis缓存优化
[*] 分布式FastDFS存储集群部署
[*] FastDFS集群部署
[*] FastDFS同步原理
[*] binlog机制
[*] 水平扩容
[*] 图床功能查漏补缺
[*] 产物上云公网发布/测试用例
[*] 利用云服务器的各种坑分析
[*] postman模拟请求
[*] wrk测试接口吞吐量
[*] jmeter压力测试
(2) GitHub堆栈话题聊天室(上线项目,迭代开发)


[*] 项目框架分析和部暑
[*] GitHub话题聊天室需求分析
[*] 话题聊天室架构
[*] 后端服务部署
[*] Web部署
[*] 接口筹划与实现
[*] HTTP RESTful API原 理
[*] MySQL用户表筹划
[*] redis缓存token
[*] 客户端缓序token
[*] 固定话题聊天实现
[*] websocket连按用户校验
[*] 话题/用户映射表结构筹划
[*] 聊天发布到服务器
[*] redis缓存房间在线人员
[*] 服务器广播新消息
[*] 聊天记载拉取筹划与实现
[*] MySQL消息表筹划
[*] 聊天消息存储
[*] 分页拉取聊天消息
[*] 登录自动拉取最新消息
[*] 黑名单实现
[*] 文件服务器和docker部署
[*] 在线文件传输机制分析
[*] 离线文件传输机制分析
[*] etcd微服务注册与发现
[*] docker制作与部署
[*] 产物上云公网发布/公网测试上线
[*] 单位测试案例
[*] testbench如何筹划
[*] M项目性能压测
[*] 定制私有功能
[*] 拓展新功能(代码)
[*] 云服务器部暑
(3)云原生内网穿透channel (上线项目,从零构建)


[*] 体系筹划以及frp开源项目
[*] 项目配景与需求分析
[*] 体系筹划与数据库筹划
[*] frp TCPMUX代理与httpconnect复用器
[*] frp ssh. http、https内网穿透
[*] frp AuthServerConfig token鉴 权
[*] 应用管理与应用配置
[*] ssh、http、https等范例的应用维护
[*] 应用程序端口分配以及配置生成
[*] 导出应用配置为yaml格式的配置文件
[*] go客户端实现Swarm集群应用的部署与更新
[*] Docker启用TLS客户端访问
[*] go客户端根据时间戳创建服务配置
[*] go客户端检查并创建overlay网络
[*] go客户端设置私有注册中央权限
[*] go客户端创建并更新应用服务
[*] vite/vue/elementUI实现前端页面
[*] Vue组件化开发与ElementUI
[*] Typescr ipt的interface的应用
[*] axios实例与拦截器.
[*] get与post请求封装
[*] 配置文件与api调用
[*] 自动化域名剖析与Swarm集群Tunne|服务部暑
[*] 自动化域名剖析与域名备注
[*] 服务的部署与客户端配置的返回
[*] Tunne |服务的容器化部署与更新
[*] Tunnel客户端配置部署Tunne|客户端程序
[*] certbot生成道配符证书用于Tunnel应用
二、音视频流媒体高级开发

   本套学习路线让你全面掌握音视频基础,深入探讨FFmpeg实战,详细讲解编码解码技术,精通流媒体客户端与服务端开发,深入掌握WebRTC实战,并通过Android NDK和IOS音视频扩展实战技能。让你全面掌握音视频处置惩罚技术,从基础到高级,从理论到实践,让你成为音视频范畴的专家!


2.1音视频基础

(1)音频基础知识


[*] 如何采集声音-模数转换原理
[*] 为什么高品质音频采样率>=44.1 Khz
[*] 什么是PCM
[*] 一个采样点用多少位体现
[*] 采样值用整数还是浮点数体现
[*] 音量巨细和采样值大关系
[*] 多少个采样点作为一-帧数据
[*] 左右通道的采样数据如何排列
[*] 什么是PCM (脉冲编码调制)
[*] 音频编码原理
(2)视频基础知识


[*] RGB彩色原理
[*] 为什么需要YUV格式
[*] 什么是像素
[*] 分辨率、帧率、码率
[*] YUV数据存储格式区别
[*] YUV内存对齐标题
[*] 为什么画面显示绿屏
[*] H264编码原理
[*] H264IPB帧的关系
注:详细H264编码格式见FFmpeg章节
(3)解复用基础知识


[*] 什么是解复用,比如MP4格式
[*] 为什么需要不同的复用格式
[*] MP4/FLV/TS
[*] 常见的复用格式MP4/FLV/TS
注:详细复用格式详解见FFmpeg章节
(4)FFmpeg开发环境搭建


[*] Windows、Ubuntu、MAC3三大平台
[*] QT安装
[*] FFmpeg命令行环境
[*] FFmpeg API环境
[*] FFmpeg编译
[*] vs2019安装(win平台)
(5)音视频开发常用工具


[*] Medialnfo,分析视频文件
[*] mp4box,分析mp4
[*] VLC播放器,播放测试
[*] audacity,分析音频PCM
[*] EasyICE,分析TS流
[*] Elecard_ streamEye, 分析H264
[*] flvAnalyser,分析FLV
[*] 海康YUVPlayer,分析YUV
2.2FFmpeg实战

(1)FFmpeg命令


[*] 音频PCM/AAC文件提取
[*] 视频YUV/H264文件提取
[*] 解复用、复用
[*] 音视频录制
[*] 视频裁剪和合并
[*] 图片/视频转换
[*] 直播推流和拉流
[*] 水印/画中画/九宫格滤镜
(2)SDL跨平台


[*] 多媒体开发库实战
[*] SDL环境搭建
[*] SDL事件处置惩罚
[*] SDL线程处置惩罚
[*] 视频YUV画面渲染
[*] 音频PCM声音输出
注: SDL兼容Win、Ubuntu、Mac三大平台,重要用于后续项目的画面显示和声音输出
(3)FFmpeg基石精讲


[*] FFmpeg框架
[*] FFmpeg内存引|用计数模子
[*] 解复用相关AVFormat XXX等
[*] 编解码相关AVCodec XXX等
[*] 压缩数据AVPacket
[*] 未压缩数据AVFrame
[*] FFmpeg面向对象头脑
[*] Packet/Frame数据零拷贝
注:目的认识FFmpeg常用结构体和函数接口
(4)FFmpeg过滤器


[*] FFmpeg过滤chain框架
[*] 音频过滤器框架
[*] 视频过滤器框架
[*] 多路音频混音amix
[*] 视频水印watermark
[*] 视频区域裁剪和翻转
[*] 视频添加logo
(5)FFmpeg音视频解复用+解码


[*] 解复用流程
[*] 音频解码流程
[*] 视频解码流程
[*] FLV封装格式分析
[*] MP4封装格式分析
[*] FLV和MP4 seek有什么区别
[*] 为什么FLV格式能用于直播
[*] 为什么MP4不能用于直播
[*] MP4能否用来做点播
[*] AAC ADTS分析
[*] H264 NALU分析
[*] AVIO内存输入模式
[*] 音频重采样实战
[*] 重采样后的数据播放时长是否同等
[*] 重采样后PTS如何体现
[*] 视频解码后YUV内存对齐标题
[*] 音频解码后PCM排列格式标题
[*] 硬件解码dxva2/nvdec/cuvid/qSV
[*] 硬件gpu数据转移到cpu
[*] H265解码
注: FFmpeg API学习:视频解复用->解码->编码->复用合成视频
(6)ffplay播放器


[*] 掌握ffplay.c的意义
[*] ffplay框架分析
[*] 解复用线程
[*] 音频解码线程
[*] 视频解码线程
[*] 声音输出回调
[*] 画面渲染时间间隔
[*] 音频重采样
[*] 画面尺寸格式变换
[*] 音频、视频、外部时钟同步区别
[*] 以视频为基准时音频重采样赔偿
[*] 音量静音、调节巨细的本质
[*] 音视频packet队列巨细限制
[*] 音视频packet队列线程安全
[*] 音视频frame队列巨细限制
[*] 音视频frame队列线程安全
[*] 暂停、播放实现机制
[*] seek播放导致的画面卡住标题.
[*] seek播放数据队列、同步时钟处置惩罚
[*] 如何做到逐帧播放
[*] 播放器退出的流程要点
注: ffplay.c是ffplay命 令的源码,掌握fplay对于我们自己开发播放器有事半功倍的效果
(7)FFmpeg音视频编码+复用合成视频


[*] AAC音频编码
[*] H264视频编码
[*] PCM+ YUV复用合成MP4/FLV
[*] H264编码原理
[*] IDR帧和帧区别
[*] 动态修改编码码率
[*] GOP间隔参考值
[*] 复用合成MP4音视频不同步标题
[*] 编码、复用timebase标题
[*] MP4合成IOS不能播放标题
[*] 重采样后PTS如何体现
[*] 视频编码YUV内存对齐标题
[*] 硬件编码dxva2/nvenc/cuvid/qsv
[*] H265编码原理
[*] H264、H265编码互转
(8)ffmpeg多媒体


[*] 视频处置惩罚工具
[*] 掌握fmpeg.c的意义
[*] ffmpeg框架分析
[*] 音视频编码
[*] 封装格式转换
[*] 提取音频
[*] 提取视频.
[*] logo叠加
[*] 音视频文件拼接
[*] filter机制
[*] 命令行剖析流程
[*] MP4转FLV不重新编码逻辑
[*] MP4转FLV重新编码逻辑
[*] MP4转FLV scale
注: ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的大体框架对于我们要实现一些不知道怎么编写代码的功能(用ffmepg命令行可以但不知道怎么调用ffmpeg api时可以参考ffmepg.c的逻辑)有极大的帮助,比如要裁剪视频长度。
(9)FFmpeg+ QT播放器


[*] 常见开源播放器分析
[*] CUVID/D3D11VA硬解
[*] 界面和播放核心分离框架分析
[*] 音量频谱展示
[*] 播放器模块划分
[*] 音频均衡器
[*] 解复用模块
[*] 画面旋转、翻转
[*] 音视频解码
[*] 画面亮度、饱和度调节
[*] 播放器控制
[*] 画面4:3 16:9切换
[*] 音视频同步
[*] 码流信息分析
2.3流媒体客户端

(1)RTMP推拉流项目实战


[*] RTMP协议分析
[*] wireshark抓包分析
[*] H264 RTMP封装
[*] AAC RTMP封装
[*] RTMP拉流实战
[*] H264 RTMP剖析
[*] AAC RTMP剖析
[*] RTMP推流实战
[*] 0没有MetaData能否播放
[*] RTMP推流是否会导致延迟
[*] RTMP推流如何动态调整码率
[*] RTMP推流如何动态调整帧率
[*] RTMP拉流是否会导致延迟
[*] 如何检测RTMP拉流延迟
[*] 如何办理RTMP播放延迟
[*] ffplay. vlc能否用来测试播放延迟
[*] ffplay、vlc能否用来测试播放延迟
[*] RTMP拉流播放变速策略设置
(2)RTSP流媒体实战


[*] RTSP协议分析
[*] RTP协议分析
[*] H264 RTP封装
[*] H264 RTP剖析
[*] AAC RTP封装
[*] AAC RTP剖析
[*] RTCP协议分析
[*] RTSP流媒体服务器搭建
[*] RTSP推流实战
[*] RTSP拉流实战
[*] wireshark抓包分析
[*] RTP头部序号的作用
[*] RTCP的NTP和RTP的TS的区别
[*] RTP头部序号的作用
[*] RTCP的NTP和RTP的TS的区别
[*] RTSP交互过程
[*] 花屏大概的原因
[*] SPS PPS如何发送
[*] SDP封装音视频信息
(3)HLS拉流分析


[*] HLS协议分析
[*] HLS拉流实战
[*] HTTP协议分析
[*] FFmpeg HLS源码分析
[*] TS格式分析
[*] HLS多码率机制
[*] m3u8文件剖析
[*] 如何办理HL S延迟高的标题
[*] wireshark抓包分析
注:理解HL .S的拉流机制,有助于我们办理HL .S播放延迟较高的标题
2.4流媒体服务器

(1)SRS源码剖析协程


[*] 团体框架分析
[*] 连接和协程的关系
[*] RTMP推流分析
[*] 如何更快速掌握SRS源码
[*] RTMP拉流分析
[*] 流媒体服务器是否导致延迟
[*] HLS拉流分析
[*] 如何低落流媒体服务器的延迟
[*] HTTP-FLV拉流分析
[*] 怎么获取流媒体服务器推流信息
[*] FFmpeg转码分析
[*] 怎么获取流媒体服务器拉流信息
[*] 首屏秒开技术分析
[*] 首屏秒开能低落延迟吗
[*] forward集群源码分析
[*] 推流->服务器转发->拉流延迟分析
[*] edge集群源码分析
[*] 负载均衡部署方式
注:对于SRS流媒体服务器,我们恒久更新,从3.0->4.0->5.0
(2)ZLMediaKit源码剖析


[*] 团体框架分析
[*] 数据转发模子
[*] 线程模块划分
[*] SDP剖析
[*] RTSP推流连接处置惩罚
[*] RTP H264剖析
[*] RTSP拉流连接处置惩罚
[*] RTP AAC剖析
注: ZLMediaKit重要讲解RTSP流媒体服务器相关的模块,其他模块RTMP/HLS等参考SRS。
2.5WebRTC项目实战

(1)WebRTC中级开发手把手写代码


[*] WebRTC通话原理分析
[*] WebRTC开发环境搭建
[*] coturn最佳搭建方法
[*] 如何采集音视频数据
[*] 一对一通话时序分析
[*] 信令服务器筹划
[*] SDP分析
[*] Candidate范例分析
[*] Web-对一通话
[*] Web和Android通话
[*] AppRTC快速演示
[*] 如何设置编码器优先级
[*] 如何限制最大码率
[*] 信令服务器的本质是什么
[*] Web和Android的SDP差异
[*] A要和B通话, A怎么知道B的存在
[*] 新增C++、IOS客户端两大版本
注:学习WebRTC建议从web端入手,可以直接调用js接口(千万别刚接触WebRTC就忙着去编译WebRTC源码) , 对WebRTC通话流程有清楚的理解再考虑其他端。
(2)WebRTC高级开发-SRS 4.0/5.0源码分析


[*] RTMP转发WebRTC逻辑
[*] WebRTC转发RTMP逻辑
[*] WebRTC音视频一对一通话
[*] WebRTC多人通话
[*] WebRTC SFU模子分析
[*] SRTP分析
[*] RTCP分析
[*] SDP分析
[*] NACK分析
[*] turn分析
[*] stun分析
[*] 拥塞控制算法
[*] FEC
[*] jitter buffer
(3)WebRTC高级开发-MESH模子多人通话


[*] 自界说摄像头分辨率
[*] 码率限制
[*] 调整编码器顺序
[*] Mesh模子多方通话分析
[*] 多人通话信令服务器开发
[*] 动态分配stun/turn服务器
[*] Web客户端源码
[*] Android客户端源码
(4)WebRTC高级开发-Janus SFU模子多人通话


[*] Janus框架分析
[*] Janus信令筹划
[*] 基于Janus实现集会体系
[*] Janus Web客户端源码分析
[*] Janus Android客户端源码分析
[*] Janus Windows客户端源码分析
[*] 基于Full ICE的部署
[*] 基于Lite ICE的部署
[*] Full ICE和Lite ICE的区别
[*] 发布订阅模子
1.6Android NDK

(1)Android NDK开发基础


[*] So库适配总结
[*] GDB调试技巧
[*] Makefile_ I程构造
[*] CMake工程构造
[*] 生成指定CPU平台的so库
[*] JNI基础和接口生成
[*] JNI Native层构建Java对象
[*] JNI异常处置惩罚
(2)Android FFmpeg编译和应用


[*] 编译x264
[*] 编译x265
[*] 编译mp3
[*] 编译fdk-aac
[*] 编译FFmpeg
[*] 利用ffmpeg实现mp4转格式
[*] 利用FFmpeg开发播放器
(3)Android RTMP推拉流


[*] RTMP推流协议实现
[*] RTMP拉流协议实现
[*] RTMP拉流音视频同步
[*] MediaCodec硬件编码
[*] MediaCodec硬件解码
[*] OpenSL ES播放音频数据
[*] MediaCodec硬件解码
[*] OpenGL ES Shader显示视频
(4)Android Ijkplayer源码分析


[*] 编译jkplayer和实践
[*] 项目框架分析
[*] 播放状态转换
[*] 拉流分析
[*] 解码分析
[*] 音频播放流程
[*] 视频渲染流程
[*] OpenSL ES播放音频数据
[*] MediaCodec硬件解码
[*] OpenGL ES Shader显示视
[*] 变速播放实现原理
[*] 低延迟播放实现
[*] 缓存队列筹划机制分析
1.7IOS音视频开发

(1)IOS FFmpeg6.0编译和应用


[*] xcode调试FFmpeg
[*] IOS调用FFmpeg
[*] QT调试FFmpeg
(2)IOS FFmpeg RTMP推拉流


[*] AVFoundation视频采集
[*] Metal视频渲染
[*] Audio Unit音频采集
[*] Audio Unit音频播放
[*] FFmpeg推流
[*] FFmpeg拉流
[*] 直播延迟和办理方法
(3)VideoToolbox硬件编解码


[*] VideoToolbox框架的流程
[*] 硬件编解码步骤
[*] CVPixelBuffer剖析
[*] 如何获取SPS/PPS信息
[*] 判断是否关键帧
[*] 编码参数优化
(4)IOS jkplayer编译和应用


[*] 本地视频播放
[*] RTMP拉流播放
[*] HTTP点播
[*] 音频播放流程
[*] 视频渲染流程
(5)IOS ijkplayer编译和应用


[*] 基于Mesh一对一通话
[*] 基于SFU多人通话
1.8音视频项目实战

(1)0voice播放器
支持播放/暂停,上一/下一视频,变速播放,文件seek播放进度显示,截屏,调节音量,播放列表,显示缓存时间实现直播低延迟播放

https://i-blog.csdnimg.cn/img_convert/002dccb1116aa5069ad387e44dc3d3f9.jpeg
(2)0voice录制推流软件
支持屏幕+麦克风RTMP直播,支持本地文件推送;支持录制保存到本地,支持录制预览功能,支持添加图片水印功能;支持文字水印功能,支持屏幕+摄像头同时捕获,支持降噪功能。

https://i-blog.csdnimg.cn/img_convert/975a86a0d60ae44c5a7c976bf4914a19.jpeg
 
(3)0voice低延迟拉流直播——实现500毫秒~1秒的低延迟直播

https://i-blog.csdnimg.cn/img_convert/7b0031123f25b5580d5fedf72bb17e9e.jpeg
三、DPDK高性能开发

   走进高性能世界:探索dpdk、spdk、网络协议栈、vpp、OvS、DDos、SDN、NFV和虚拟化,成为专业的技术大师!

3.1DPDK网络专栏

(1)dpdk基础知识


[*] 多队列网卡,vmxnet/e1000
[*] igb_ uio与vfio模块
[*] kni模块
[*] hugepage的理解
[*] 零拷贝
[*] dpdk与netmap区别
[*] dpdk的工作环境
(2)网络协议栈


[*] dpdk-arp
[*] netsh静态arp表设置
[*] dpdk-icmp
[*] udp协议格式分析
[*] udp协议sendto, recvfrom实现
[*] dpdk-ip
[*] dpdk-tcp
[*] tcp协议栈bind,listen, accept实现
[*] tcp协议栈recv, send, close的实现
[*] tcp三次握手实现
[*] tcp四次挥手实现
[*] tcp acknum与seqnum简直认机制实现
[*] tcp的并发连接筹划
[*] epoll并发的实现
[*] tcp协议栈与epoll之间的回调实现
(3)dpdk组件项目


[*] dpdk-ac
[*] dpdk-kni
[*] /dev/ kni的原理分析
[*] kni_ dev的流程
[*] kni的t缓冲区,rx缓冲区
[*] kni的用户空间与内核空间映射
[*] mbuf如何转化为kernel的sk_ buff
[*] dpdk- timer
[*] bpftrace的利用
[*] dpdk- bpf源码流程
(4)dpdk经典项目


[*] dpdk- dns
[*] dpdk- gateway
[*] dpdk-ddos熵盘算源码
[*] ddos attach检测精确度调试
[*] ddos attach测试T具hping3
[*] 布谷鸟hash原理与利用
3.2储存技术专栏

(1)高效磁盘io读写spdk(C)


[*] 存储框架spdk,为技术栈打开扇存储的大门
[*] spdk运行环境与vhost
[*] NVMe与PCl的关系
[*] 手把手实现spdk_ server
[*] nvme与pcie以及手写nvme读写操作
[*] bdev与blob之间的关系
[*] 实现blob异步读写
[*] blobstore的读写操作实现与rpc的关系
[*] fio性能测试性能对比libaio,io_ uring,psync
[*] fio plugin工作流程
[*] fio plugin开发
(2)spdk文件体系的实现


[*] 文件体系功能拆解
[*] spdk_ env_ init与spdk_ app init的差异
[*] spdk_ _thread_ poll实现rpc回调
[*] fs_ operations结构体界说
[*] file_ operations结构体界说
[*] dir_ operations结构体界说
[*] syscall的hook实现


[*] 基数树对文件体系内存管理
[*] spdk_ blob的open,read,write,close
[*] 测试用例与调试入口函数

(3)spdk kv存储的实现


[*] KV存储拆解Set, Get, Mod, Del
[*] app/.a库/so库对于kv存储的选择
[*] bdev与blob对于kv存储的选择
[*] kv service启动blob资源操作
[*] kv service关闭blob资源接纳
[*] kv service接口set,get,modify,delete
[*] kv遍历与查找实现
[*] page存储chunk的管理
[*] pagechunk的get与put
[*] page单查找与多页查找
[*] btree, artree, hashmap,radixtree, rbtree之间的选择
[*] slab的实现
[*] slab分配slot与开释slot
[*] 为kv加上conf文件
[*] 测试用例与性能测试
3.3安全与网关开发专栏

(1)可扩展的矢量数据包处置惩罚框架vpp(c/c++)


[*] vpp命令详解
[*] mac/ip转发plugin
[*] load_ balance plugin
[*] flowtable plugin
[*] vpp源码之间的差异
[*] 多网卡数据接收与转发
[*] 办理plugin编译加载
[*] vpp启动load so的流程
[*] vpp的结构体vlib_ _main实现分析
[*] vpp的结构体vnet_ main
[*] vector的操作实现
[*] vpp vcl库与LD_ PRELOAD实现分析
[*] vcl原理讲解
[*] vcl tcpserver实现原理
[*] vcl tcpclient实现原理
[*] vcl与iperf3的客户端与服务器
[*] vcl与nginx的wrk性能测试
[*] vcl与haproxy的性能测试
[*] vpp 1801版本与vpp 2206版本
[*] vpp httpserver的实现源码
[*] vpp plugin quic源码分析
[*] vpp plugin hs_ app的源码
[*] vpp plugin rdma的实现分析
[*] vpp plugin loadbalance
[*] vpp plugin nat的源码分析
[*] vpp host-stack tcp协议实现
[*] vpp plugin的测试用例实现
(2)golang的网络开发框架nff-go(golang)


[*] nff-go实现的技术原理
[*] nff-go/low.h实现分析
[*] nff- go数据接收的实现
[*] nff-go数据发送的实现
[*] ipsec协议剖析与strongswan的ipsec
[*] nff go的缺陷与不足
3.4虚拟化与云原生专栏

(1)DPDK的虚拟交换机框架OvS


[*] ovs编译安装,ovs核心组件内容
[*] ovs-vswitchd的工作原理
[*] ovs-vswitchd与dpdk的关系
[*] ovs-vsctl的网桥,网口操作
[*] qemu-system-x86_ 64构建多子网
[*] ovs与qemu数据流分发
[*] ovs搭建docker跨主机通讯
[*] ovsdb server与ovsdb协议
[*] json-rpc为控制面提供开发
[*] ovs-tcpdump/ovs-l3ping
[*] OvS 4种数据路径
[*] VXL AN数据协议
[*] ovs流量统计
(2)高性能4层负载均衡器DPVS


[*] dpvs的技术组件与功能界限
[*] lvs+keepalived配置高可用server
[*] dpvs与|lvs+ keepalived的关系
[*] dpvs.conf的配置文件
[*] dpvs的FNat/NAT/SNAT模式
[*] dpvs的DR模式
[*] dpvs的tun模式
[*] 通过quagga配置ospf
[*] dpvs的tc流控操作与源码实现
[*] dpvs代码架构分析
[*] dpvs测试用例ipset, tc,mempool
3.5测试工具专栏

(1)perf3


[*] vpp vcl的perf3接口hook
[*] perf3测网络带宽
[*] tcp吞吐量测试
[*] udp丢包与延迟测试
[*] json测试效果输出
(2)TRex


[*] TRex的运行原理
[*] TRex与dpdk
[*] 构建TRex测试体系
[*] t-rex -64- debug gdb调试
[*] bg-sim- 64模拟单位测试
[*] YAML文件编写
[*] 流编排与自动化框架
[*] 报文变量设置
(3)dpdk-pktgen


[*] pktgen命令讲解
[*] default.cfg配置文件分析
[*] 120M bits/s的转发速率
(4)fio


[*] ioengine的实现
[*] ioengine_ ops的分析
[*] iodepth的分析
[*] spdk_ nvme的fio分析
[*] spdk_ bdev的fio分析
[*] spdk_ blob的ioengine实现
[*] psync,io_ uring, libaio性能对比
3.6性能测试专栏

(1)性能指标


[*] 吞吐量bps
[*] 拆链/建链pps
[*] 并发
[*] 最大时延
[*] 最小时延
[*] 均匀时延
[*] 负载
[*] 包速fps
[*] 丢包率
(2)测试方法


[*] 测试用例
[*] vpp sandbox
[*] perf3灌包
[*] rfc2544
四、Linux内核开发

   本套学习路线精选5大主题深入剖析,提拔内核开发者技术水平:历程管理、内存管理、网络协议栈、设备驱动管理以及文件体系及内核组件。学习后,你将掌握内核开发的核心技术,提高自身竞争力。

4.1历程管理专栏

(1)历程管理基础部分


[*] Linux内核源码构造结构
[*] Linux内核5个子体系关系
[*] Linux内核源码目录结构详解
[*] 如何快速掌握阅读内核源码方法与技巧
[*] 历程原理及体系调用详解
[*] 历程/历程生命周期
[*] task_ struct数据结构
[*] 历程优先级/体系调用
[*] 调理器及CFS调理器
[*] 实时调理类/SMP/NUMA
[*] 历程优先级与调理策略案例分析
[*] RCU机制及内存优化屏蔽
[*] 内存布局和堆管理
[*] 多核调理分析
[*] 内核数据结构:链表和红黑树案例分析
(2)历程管理案例分析


[*] 编译自己Linux内核实战分析
[*] 历程管理4大常用API案例分析
[*] 体系调用API1
[*] kthread _create_on_node案例分析
[*] wake_up_process案例分析
[*] 体系调用API2
[*] 获取历程NICE值案例分析
[*] 设置历程NICE值案例分析
[*] 体系调用API3
[*] complete_all案例分析
[*] wake_up_sync_key案例分析
[*] RCU案例实战分析
[*] 模拟cfs调理器案例分析
[*] 历程间通讯案例分析
[*] SMP调理详解
4.2内存管理专栏

(1)内存管理基础部分


[*] 拟地址空间布局架构
[*] 内存管理架构分析
[*] 虚拟地址空间布局
[*] 内存映射原理机制
[*] 物理内存构造结构
[*] 统调用sys mmap/sys_ munmap
[*] 内存模块及三级结构
[*] 引导内存分配器原理
[*] bootmem分配器原理
[*] memblock分配器原理
[*] 搭档分配器
[*] 搭档分配器原理
[*] 分配页及开释页
[*] Slab分配器详解
[*] 不连续页分配器及页表
[*] 胪空间缺顽异常
[*] 页表缓存(TLB)与巨型页
[*] TLB表项格式及管理
[*] ASID原理/NMID原理
[*] 处置惩罚器对巨型页的支持
[*] 尺度巨型页原理及查看
[*] 巨型页池
[*] 页接纳机制详解
[*] 发起页接纳
[*] 接纳不活动页
[*] 页交换
[*] 盘算描页数
[*] 紧缩活动页链表
[*] 接纳slab缓存
[*] 内存反碎片技术
[*] 虚拟可移动区域技术原理
[*] 内存碎片整理算法
[*] Linux内核内存池案例分析
[*] 内存检测与死锁检测
(2)内存管理案例分析


[*] 搭档体系算法案例分析
[*] 筹划per-cpu变量案例分析
[*] 缺页异常分析
[*] 写时复制缺页异常
[*] 文件映射缺页停止
[*] 匿名页面缺页异常
[*] do_ page_fault函数分析
[*] 内核调优参数
[*] /proc/sys/kernel/
[*] /proc/sys/vm/
[*] /proc/sy/fs/
[*] 水位调优参数min_ free_kbytes
[*] 面分配参数lowmem_reserve _ratio
[*] 内存管理meminfo&zoneinfo信息分析
[*] 分配物理页实战分析
[*] 历程虚拟区间实战分析
[*] vmalloc案例实战分析
[*] kmalloc案例实战分析
[*] kzalloc&kcallolc案例实战分析
[*] 创建slab缓存案例实战分析
[*] 创建内存池案例实战分析
[*] slab分配器案例实战分析
[*] 内存映射案例实战分析
[*] 统计历程虚拟区间页数案例分析
[*] 缓存着色
[*] 处置惩罚器缓存机制
[*] 文件页缓存
[*] 内存与Kasan_ I分析
[*] 五大常见内存访问错误
[*] Kasan内核检测工应用
4.3设备驱动专栏

(1)设备驱动基础部分


[*] I/O体系结构
[*] 体系总线(PCI、ISA、 SCSI、 USB等)
[*] 外设交互及总线控制设备
[*] 访问设备深度详解
[*] 内核块设备详解
[*] 块设备I/O操作及源码分析
[*] 通用磁盘及磁盘分区源码分析
[*] 文件体系关联及字符设备操作
[*] inode/字符设备及块设备操作
[*] cdev数据结构及读写操作
[*] 资源分配及总线体系
[*] 资源分配I/O内存I/O端口
[*] device数据结构/PCI总线/USB总线
[*] 内核插入模块及删除模块
[*] 内核模块基础知识
[*] module_ init/module_exit
[*] insmod/mmod/dmesg
[*] PCI设备驱动讲解
[*] PCI基础及拓扑关系
[*] pci host _bridge/pci _bus/pci. dev
[*] PC驱动讲解与实现
[*] USB设备驱动详解
[*] 总线速率及主机控制器
[*] 传输模式与寻址方法
[*] USB驱动总线数据结构分析
[*] 字符设备操作
[*] 主设备与次设备
[*] 开设备文件
[*] 分配与注册字符设备
[*] 文件操作实现
[*] open/release方法
[*] read/wite方法
[*] lslek/poll防法
[*] 填充file operations结构体
(2)设备驱动案例分析


[*] USB设备驱动架构分析
[*] USB体系架构
[*] 传输模式与寻址方法
[*] USB驱动总线数据结构分析
[*] USB驱动分析
[*] USB基础及层次详解
[*] USB驱动常见数据结构
[*] 以太网驱动分析
[*] 网络设备驱动框架
[*] sk buff/net_device/napi_struct
[*] USB3.0设备控制器驱动分析
[*] USB控制器分析
[*] dwc3_ event/dwc3 _event_buffer
[*] 输入设备驱动程序
[*] 输入设备驱动程序基础及分析
[*] 核心数据结构input_dev
[*] 常用内核编程API接口
[*] V4|2视频设备驱动框架
[*] V4L2视频设备驱动
[*] V4L2驱动数据结构分析
[*] V4I2框架常用API详解
[*] 字符设备驱动项目实战分析
[*] 字符设备驱动通讯案例分析
[*] 字体设备驱动数据结构筹划
[*] 数据发送端筹划
[*] 数据读取端筹划
[*] Makefile文件筹划
[*] make及字符设备驱动测试
[*] 删除字符设备驱动模块
[*] 杂项(MISC)驱动实例分析
4.4文件体系专栏

(1)文件体系基础部分


[*] 通用文件模子
[*] 磁盘文件体系(DF)
[*] 虚拟文件体系(VF)
[*] 网络文件体系(NF)
[*] 链接
[*] API编程接口
[*] VFS数据结构
[*] 超级块(super. _block)
[*] 挂载描述符(mount结构体)
[*] 索|结点(inode结构体)
[*] 录项缓存(dentry结构体)
[*] 处置惩罚VFS对象及尺度函数
[*] Ext2文件体系
[*] Ext2物理结构
[*] Ext2数据结构分析
[*] Ext2文件体系操作
[*] Ext4_ 日志JBD2
[*] Ext4文件体系特性
[*] Ext4文件体系数据结构
[*] Ext4_日志JBD2
[*] proc文件体系
[*] proc数据结构
[*] 初始化及装载proc
[*] 管理proc数据项
[*] 数据读写实现
[*] 体系控制机制
[*] 简单文件体系
[*] 顺序文件
[*] 利用libfs编写FS
[*] 调试文件体系
[*] 文件体系API : vfs fstat/fget/get. max_ files
[*] 挂载文件体系
[*] 体系调用mount处置惩罚流程
[*] 绑定挂载/挂载命名空间
[*] 挂载/注册rootfs文件体系
[*] 文件体系调用
[*] 打开/关闭文件
[*] 创建/删除文件
[*] 读/写文件实现
[*] 文件回写技术原理/接口实现
[*] sysfs文件体系
[*] sysfs数据结构
[*] 装载文件体系
[*] 文件和目录操作
[*] 向sysfs添加数据内容
(2)文件体系案例分析


[*] proc文件体系案例实战分析
[*] debugfs案例实战分析
[*] super_block案例分析
4.5网络协议栈专栏

(1)网络协议栈基础部分


[*] 套接字及分层模子
[*] 套接字通讯基础
[*] 网络分层模子
[*] 接字缓冲区及net _device
[*] sk buff数据结构分析
[*] net _device数据结构分析
[*] 从套接字缓冲区获取TCP首部
[*] 内核毗邻子体系
[*] 毗邻子体系基础
[*] ARP协议(IPv4)
[*] 内核Netlink套接字案例分析
[*] 数据结构筹划与API体系调用
[*] 内核模块与用户应用程序筹划
[*] 网络接口及IP地址实现
[*] 网络层分析
[*] 接收分组原理分析
[*] 分组转发原理与分析
[*] 发送分组原理与分析
[*] TCP/UDP协议栈分析
[*] 套接字分析
[*] 发送与接收UDP数据包分析
[*] 发送与接收TCP数据包分析
[*] 传输层分析
[*] 流控制传输协议(SCTP)
[*] 数据报拥塞控制协议(DCCP)
[*] ICMP协议分析
[*] 发送/接收ICMPv4消息
[*] 发送/接收ICMPv6消息
[*] NIC数据包接收与发送分析
[*] NIC原理机制
[*] NC数据包接收与发送流程分析
[*] IPsec(互联网安全协议)
[*] IPsec基础知识部分
[*] XFRM框架/策略/状态
[*] 传输模式/隧道模式/IPsec高可靠性
[*] Netfilter框架分析
[*] Netfilter架构分析
[*] Netfilter挂接点
[*] Netfilter连接跟踪
[*] epoll分析
[*] poll体系调用
[*] epoll数据结构
[*] epoll内核实现
[*] IPv4路由选择子体系
[*] FIB表
[*] ICMPv4重定向消息
[*] 高级路由选择
[*] 组播路由选择
[*] 策略路由选择
[*] IPv6协议分析
[*] IPv6协议基础架构
[*] 接收IPv6数据包
[*] 发送IPv6数据包
[*] InfiniBand架构
[*] InfiniBand组件与编址
[*] InfiniBand功能与数据包
[*] 无线子体系分析
[*] 802.11 MAC帧结构分析
[*] 扫描/身份验证/关联
[*] 高郚吐量(802.11n)


[*] 网状网络(802.11s)
(2)网络协议栈案例分析


[*] epoll原理及体系调用案例分析
[*] NIC网-卡驱动案例实战分析
[*] NIC网-卡驱动的recv与sk _buff
[*] NIC网卡open与stop的实现
[*] NIC编译与用户态协议栈
[*] RDMA栈架构
[*] Netfilter内核防火墙报文处置惩罚
[*] Iptables基础/表和链及过滤规则
[*] Netilter5种挂接点详解
[*] netfilter注册和注销钩子函数
4.6停止管理与基础部分

(1)停止管理部分


[*] ARM64异常处置惩罚技术
[*] 异常级别与分类
[*] 异常向量表与异常处置惩罚
[*] 停止及软停止
[*] tasklet等待队列工作队列
[*] 停止控制器及域
[*] 停止处置惩罚流程
[*] 克制_开启停止
[*] 处置惩罚器间停止
[*] 软停止分析
[*] 审计规则及数据结构
[*] 停止管理API案例分析
[*] tasklet_init/tasklet_schedule
[*] tasklet_hi_ schedule/tasklet_ kill
[*] tasklet_disable_ nosync/tasklet _disable
[*] setup_irq/request _threaded. irq/irqp_set _chip_data
[*] 停止管理之保存停止上下文
[*] 内核调试方法printk案例分析
[*] gdb调试内核和模块案例分析
[*] perf性能分析工具案例分析
[*] perf原理机制与安装配置
[*] perf采集数据命令29种工具应用
[*] perf采集数据至火焰图分析
[*] 开源社区
[*] 如何参与开源社区
[*] 如何提交Linux内核补丁
(2)内核基础


[*] Linux操作体系历程
[*] 盘算机基础技术
[*] 历程原理
[*] Linux特性与内核版本
[*] 历程特性与调理算法
[*] 死锁产生须要条件
[*] 历程状态及转换
[*] 历程调理策略与调理依据
[*] 存储器结构与分区存储管理
[*] 主存储器结构及技术指标
[*] 分区存储管理技术
[*] 物理内存与虚拟内存
[*] 存储管理
[*] 段式存储管理
[*] 页式存储管理
[*] 文件管理基础架构
[*] 文件基础知识
[*] Linux文件体系
[*] VFS(虚拟文件体系)
[*] x86处置惩罚器架构
[*] CPU(中央处置惩罚器)和内存
[*] x86平台
[*] 64位通用寄存器结构.
[*] 汇编基础与寻址方式
[*] 汇编基础技术
[*] 常用寻址方式
[*] 立刻寻址
[*] 直接寻址
[*] 间接寻址
[*] 址寻址
[*] 相对寻址
[*] 基址寻址
[*] KVM架构基础
[*] CPU虚拟化技术
[*] I/O虚拟化技术
[*] 内存虚拟化技术
[*] 网络虚拟化技术
[*] 内审定时器
[*] 斥锁分析
[*] 自旋锁机制
[*] 原子变量案例实战分析
[*] 信号量案例实战分析
[*] 自旋锁项目实战分析
[*] 顺序锁案例实战分析
[*] 互斥锁项目实战分析
五、Qt跨平台开发

   Qt是一款广泛应用于软件开发范畴的跨平台开发框架。课程内容包罗核心概念、窗口体系、界面筹划、事件处置惩罚、绘图等功能,以及多线程编程、数据库访问等高级开发。打造高效Qt开发工作流:Qt5、C++、数据库、OpenCV、Quick、Qt实战技术栈。

5.1Qt C++语言编程基础专栏

(1)Qt C++语言编程基础


[*] Visual Studio 2022安装
[*] C++语言基础概述
[*] C++指针与引用
[*] C++类与对象(一)
[*] C++类与对象(二)
[*] 类的基它特性
[*] 构造函数&析构函数&拷贝构造函数
[*] C++友元与动态内存
[*] 函数重载与运算符重载
(2)Qt C+ +语言进阶


[*] 单继承
[*] 多继承
[*] 虚继承及其它特性
[*] 虚函数与抽象类
[*] 命名空间与模板
[*] C+ +I0流类库
[*] STL(vector & deque & stack)
[*] STL(queue & set & map)
[*] C+ +异常处置惩罚
(3)Qt C+ +语言新特性


[*] 范例推导: auto & decltype
[*] 序列for循环
[*] lambda表达式
[*] 构造函数:委托构造和继承构造
[*] 容器: array & forward list & tuple
[*] 垃圾接纳机制
[*] 正则表达式基础
[*] 智能指针: shared_ ptr & unique_ ptr & weak_ ptr
[*] 关键字: nullptr & constexpr
[*] 共享内存&互斥量mutex
[*] C++11: STL hashmap
[*] 关联容器: unordered_ map
[*] atomic flag & atomic应用
[*] 条件变量: condition variable
[*] 异常处置惩罚: exception
[*] is integral应用实战
[*] is_ rvalue_ reference应用实战
[*] is_ arithmetic应用实战
[*] is volatile应用实战
[*] is class应用实战
[*] 变量模板
[*] inline应用实战
5.2Qt编程入门到精通专栏

(1)Qt开发基础体系


[*] Qt下载与安装配置
[*] Windows Qt环境安装
[*] Linux Qt环境安装
[*] Qt Creator工具先容与利用.
[*] Qt信号与槽机制
[*] Qt字符串&数据范例&容器类
[*] 字符串类应用与常见数据范例
[*] 常用容器类
[*] QMap类& QHash类& QVector类
[*] QList类& QLinkedList类
[*] QVariant类应用
[*] 常用算法及正则表达式
(2)Qt开发常用控件详解


[*] Layouts & Spacers
[*] Buttons & Containers
[*] Item Views
[*] Item Widgets
[*] Input Widgets
[*] Display Widgets
(3)Qt布局及对话框详解


[*] 布局管理
[*] QLayout & QStackedWidget类
[*] QSplitter类& QDockWidget类
[*] 对话框
[*] 文件对话框
[*] 颜色对话框
[*] 字体对话框
[*] 输入对话框
[*] 消息对话框
[*] 自己界说消息框
(4)Qt图形&模子&视图


[*] 绘图原理双缓冲机制
[*] Graphics View特性详解
[*] Mode & View & Delegate
(5)Qt文件操作及事件处置惩罚


[*] 目录操作及文件体系
[*] QCoreApplication类
[*] QFilelnfo类
[*] QDir类
[*] QTemporaryDir
[*] QTemporaryFile
[*] 获取文件特性实现
[*] 鼠标及键盘事件
[*] 事件过滤处置惩罚分析
(6)Qt服务应用操作


[*] INI文件操作
[*] JSON文件操作
[*] XML文件操作
(7)Qt网络及多线程


[*] 套接字编程API函数详解
[*] UDP协议工作原理
[*] TCP服务器筹划
[*] TCP客户端筹划
[*] TCP协议工作原理
[*] UDP服务器筹划
[*] UDP客户端筹划
[*] 多线程编程
[*] 互斥量
[*] 信号量
[*] 多线程C/S模子项目实战
[*] HTTP协议编程技术
[*] Websocket原理及编程技术
(8)Qt数据分析:图表详解


[*] Qt图表基础知识
[*] Qt ChartView详解
[*] Qt常用图表范例
[*] 曲线图
[*] 拆线图
[*] 柱形图
[*] 饼状图
(9)Qt应用程序打包及发布


[*] 打包QT应用程序


[*] 发布QT应用程序
5.3Qt高级进阶专栏

(1)MySQL数据库编程技术


[*] 数据库基础知识
[*] MySQL基本操作
[*] MySQL运算符
[*] 数据范例及存储引擎
[*] 表数据增&删&改&查&高级查询
[*] MySQL流程控制语句
[*] SQL语句详解
[*] 索引
[*] 视图
[*] 存储过程和函数
[*] 触发器
[*] 事件
[*] MySQL备份与恢复
[*] Qt操作MySQL数据库实战
(2)sQLite数据库编程技术


[*] SQLite下载与安装配置
[*] sQLite创建数据库
[*] SQL ite附加&分离数据库
[*] SQLite数据范例
[*] SQLite创建表&删除表
[*] SQLite insert into语句详解
[*] SQLite select & update & delete语句
[*] sQLite Distinct & Orderby & Groupby
[*] SQLite触发器
[*] sQLite索引
[*] SQLite视图
[*] sQLite事务
[*] Qt操作SQLite数据库实战
(3)OpenCV编程开发常用技术


[*] OpenCV与VS2022环境搭建
[*] OpenCV常见API及绘图详解
[*] OpenCV图像读写技术
[*] OpenCV视频读写技术
[*] OpenCV图像滤波技术
[*] OpenCV视频录制技术
[*] OpenCV图像翻转技术
[*] OpenCV图像旋转技术
[*] OpenCV实现窗口置顶
[*] OpenCV边缘检测技术1
[*] OpenCV边缘检测技术2
[*] OpenCV向上向下采样
[*] OpenCV形态学之膨胀
[*] OpenCV图像浮雕技术
[*] OpenCV图像人脸识别
(4)C++ 23种筹划模式


[*] 创建型模式(5种)
[*] 工厂模式
[*] 抽象工厂模式
[*] 原型模式
[*] 单例模式
[*] 建造者模式
[*] 结构型模式(7种)
[*] 适配器模式
[*] 桥接模式
[*] 组合实体模式
[*] 装饰器模式
[*] 外观模式
[*] 享元模式
[*] 代理模式
[*] 举动模式(11种)
[*] 责任链模式
[*] 中介者模式
[*] 策略模式
[*] 模板模式
[*] 状态模式
[*] 观察者模式
[*] 备忘录模式
[*] 命令模式
[*] 访问者模式
[*] 解释器模式
[*] 迭代器模式
5.4Qt项目开发实战专栏

(1)文字编辑: Word处置惩罚软件


[*] Word文字编辑软件架构筹划分析
[*] 菜单栏工具栏状态栏功能模块筹划
[*] 菜单栏工具栏状态栏动作与实现
[*] 体系模块团体功能关联与实现
[*] Word文件编辑软件调试及测试
(2)音频项目实战: MP3播放器搜索引擎(Qt5+SQLite)


[*] MP3音乐播放器搜索引 |擎筹划与实现
[*] SQLite数据库 数据表筹划与实现歌曲搜索
[*] HTTP下载音乐数据剖析Json显示歌词
[*] 上一曲播放暂停下一 曲循环播放实现
[*] 音乐搜索引|擎关于皮肤更换体系托盘

https://i-blog.csdnimg.cn/img_convert/e5ba2b117c291fb3501ab5217f45b110.jpeg
(3)信息管理项目:库存管理体系(Qt5+ MySQL)


[*] 商品数据库筹划及配置测试
[*] 库存新增商品和查询商品
[*] 商品入库与商品出库
[*] 商品删除与导出数据
[*] 数据汇总及数据备份

https://i-blog.csdnimg.cn/img_convert/74dd4ebdb1a2c6f801c7deb7f1427a73.jpeg
(4)即时通讯项目:腾讯QQ客户端软件


[*] 即时通讯项目简介
[*] QQ客户端登录筹划
[*] QQ登录窗口翻转效果实现
[*] IP地址控件设置
[*] 主界面及窗口移动实现
[*] QQ登录逻辑业务处置惩罚分析
[*] 项目全局类界说与实现
[*] 完善MainWindow及托盘技术
[*] QQ好友组及U|效果实现
[*] QQ聊天窗口和排版筹划
[*] 头像裁剪技术
[*] 音频技术分析与实现
[*] QQ添加好友逻辑业务处置惩罚
[*] QQ聊天逻辑处置惩罚分析
[*] 消息时序图和头像截图处置惩罚技术
[*] 即时通讯群组功能实现
[*] QQ表情与gif图片处置惩罚技术
[*] 文件上传功能实现
[*] QQ文件传输技术
[*] QQ头像显示与添加好友显示实现

https://i-blog.csdnimg.cn/img_convert/1658e5701ddf34e8a1b0a77102347042.jpeg
(5)视频项目实战:视频播放器(Qt+ FFmpeg)


[*] 播放器项目需求分析
[*] Player UI主界面筹划
[*] 播放文件Title筹划实现
[*] 控制条CtrlBar筹划实现
[*] 播放文件列表Playlist实现
[*] 播放器模块分析与筹划
[*] 买通UI到播放器核心的通道消息队列
[*] 买通Ul到播放器核心的通道类名和接口
[*] 状态处置惩罚: stream open和stream close
[*] 解复用&数据读取read thread筹划
[*] 解码线程Decoder封装
[*] 音频输出及视频渲染输出
[*] 音视频同步原理与技术详解
5.5Qt开发工程师提拔专栏

(1)Qt开发工程师提拔: Quick编程常用技术


[*] QML基础知识
[*] QML语言基础
[*] QML元素1: Image & Rectangle & Text
[*] QML元素2: ButtonStyle & ltem & BusyIndicator
[*] Quick事件处置惩罚
[*] 键盘事件
[*] 鼠标事件
[*] 定时器
[*] Quick组件及元素布局
[*] Component & Loader
[*] 定位器及布局管理器
[*] Quick开发常用元素及Canvas(画布)
[*] TextField & TextArea & TextInput
[*] CheckBox & GroupBox & TabView
[*] Canvas(画布)绘制图形
[*] 动画及.Mode & View
[*] 动画常用元素
[*] Animation & PropertyAnimation & NumberAnimation
[*] ColorAnimation & PathAnimation & SpringAnimation
[*] 组合动画部分: ParallelAnimation & SequentialAnimation
[*] 动画协同元素: Behavior & ParentAnimation & AnchorAnimation
(2)Qt开发工程师提拔: QSS编程常用技术


[*] QSS实战开发1: QSS作用及应用场景
[*] QSS实战开发2: QSS常用基本语法
[*] QSS实战开发3: QSS控件样式QL abel & QLineEdit & QPushButton
[*] QSS实战开发4: QSS控件样式QComboBox
[*] QSS实战开发5: QSS控件样式QTableWidget
[*] QSS实战开发6: QSS控件样式QProgressBar
[*] QSS实战开发7: QSS控件样式QSlider
[*] QSS实战开发8: QSS控件样式CheckBox
[*] QSS实战开发9: Ubuntu体系控件风格
[*] QSS实战开发10: Mac体系控件风格
(3)Qt开发工程师提拔:核心技术模块


[*] QtConcurrent线程处置惩罚(过滤和映射)
[*] Qt之QWebEngineView框架分析
[*] Qt生成及读取XML文件及应用实战
六、C++后端游戏开发

   基于魔兽开源后端框架 TrinityCore 的技术拆解课程;课程涉及 MMORPG 核心模块实现(高性能网络模块、数据库模块、日志模块、地图模块、以及战斗模块等),同时也包罗 MMORPG 核心玩法实现(任务、背包、工会、以及副本等)。通过课程学习,将掌握 MMORPG 核心开发技能。
6.1TrinityCore CMake项目构建

(1)CMake的利用


[*] 什么是 CMake,CMake的工作流程
[*] CMakeLists.txt的编写规则
[*] 静态库生成以及链接
[*] 动态库生成以及链接
[*] 嵌套CMake
(2)Windows和Linux下编译调试环境搭建


[*] cmake和graphviz生成目标依赖图
[*] linux vscode编程环境搭建
[*] cmake和clangd实现精俳跳转
[*] C/C++插件实现调试
[*] vs2019 windows下编译调试搭建
6.2TrinityCore数据库模块

(1)连接池筹划概要


[*] 什么是连接池
[*] 为什么需要复用连接
[*] 为什么固定连接数
[*] 重要应用场景
(2)同步连接池实现


[*] 同步连接池的线程模子
[*] 同步连接池接口封装
[*] 同步连接池接口利用
[*] 同步连接池应用场景
(3)异步连接池实现


[*] 异步连接池的线程模子
[*] 异步连接池接口封装
[*] 异步连接池接口利用
[*] 异步连接池应用场景
(4)事务处置惩罚


[*] 什么是事务
[*] 什么情况下讨论事务
[*] 事务操作
[*] TrinityCore 中事务处置惩罚封装
[*] TrinityCore 中事务处置惩罚案例
(5)数据库模块实践


[*] 剥离可复用数据库模块
[*] 应用同步连接池案例
[*] 异步连接池-单SQL语句的利用
[*] 异步连接池-多SQL语句chain式应用
[*] 异步连接池-多SQL语句holder式应用
[*] 异步连接池-多SQL语句transaction式应用
6.3TrinityCore日志模块

(1)日志模块概要


[*] 日志模块的作用
[*] 日志模式核心抽象: logger和appender
[*] logger规则:继承关系、日志级别、以及appender列表
[*] appender如何界说日志打印目的地
(2)日志模块实现


[*] 日志模块单例构建
[*] 采用宏界说定制日志利用接口
[*] 如何扩展appender
[*] appender中筹划模式-模板模式
[*] 同步日志方式实现
[*] 异步日志方式实现
[*] 异步日志线程模子
(3)日志模块实践


[*] 剥离可复用日志模块
[*] 为什么保举利用异步日志
[*] 异步日志日志安全分析及测试
6.4TrinityCore网络模块

(1)阻塞io 网络模子编程


[*] 什么是阻塞io网络模子
[*] 阻塞io办理连接创建的标题
[*] 阻塞 io办理连接断开的标题
[*] 阻塞io办理数据接收的标题
[*] 阻塞io办理数据发送的标题
[*] 阻塞 io办理网络标题的毛病
(2)reactor 网络模子编程


[*] 什么是reactor?
[*] reactor构成部分
[*] reactor办理连接创建的标题
[*] reactor办理连接断开的标题
[*] reactor办理数据接收的标题
[*] reactor办理数据发送的标题
[*] reactor办理网络标题的特性: io同步,事件异步
(3)windows iocp 网络编程


[*] 什么是完成端口
[*] 重叠io的作用
[*] iocp办理连接创建的标题
[*] iocp办理连接断开的标题
[*] iocp办理数据接收的标题
[*] iocp办理数据发送的标题
[*] iocp编程步骤
[*] iocp与reactor在编程处置惩罚io时的差异
(3)boost.asio 网络编程


[*] boost.asio跨平台网络库
[*] cmake如何在项目中引入boost.asio
[*] boost.asio中核心命名空间
[*] boostasio中核心对象: io_context、socket、endpoint
[*] boost.asio中异步io接口
[*] asio办理连接创建的标题
[*] asio办理连接断开的标题
[*] asio办理数据接收的标题
[*] asio办理数据发送的标题
(4)网络缓冲区筹划


[*] 为什么需要在用户层实现网络缓冲区
[*] 读缓冲区的工作原理
[*] 写缓冲区的工作原理
[*] 手撕缓冲区实现
(5)网络模块实践


[*] 剥离可复用网络模块
[*] AsyncAcceptor职责与实现
[*] NetworkThread职责与实现
[*] Socket职责与实现
[*] 手撕多线程模式下网络模块的应用
6.5TrinityCore地图模块

(1)地图模块概要


[*] 哪些功能模块需要用到地图模块
[*] 地图模块的功能构成


[*] 地冬对象抽象:map、area、grid、cell
[*] 网络数据驱动地图模块
[*] 定时更新驱动地图模块
(2)地图模块AOI核默算法


[*] AOI有哪些实现方式
[*] AOI静态数据工具生成
[*] AOI静态数据数据划分
[*] AOI静态数据构造方式
[*] AOI动态数据构造方式
[*] AOI动态数据驱动方式
[*] AOI地图数据加载
[*] grid 网格状态机以及状态转换
[*] AOl地图数据卸载
[*] 采用访问者模式实现地图数据与算法的隔离
(3)AABB算法实现碰撞检测


[*] 轴对称界限盒算法-AABB算法
[*] TrinityCore中AABB算法实现
[*] AABB算法优化
[*] 碰撞检测接口封装以及应用
(4)A*寻路算法


[*] A*寻路算法概述
[*] recast-detour开源车
[*] recast根据模子生成导航数据
[*] detour利用导航网格做寻路
[*] 寻路接口封装以及应用
6.6TrinityCore战斗模块专栏

(1)技能筹划


[*] 技能筹划概述
[*] 技能数据库表筹划(配置)
[*] 技能触发:距离、冷却时间、斲丧等
[*] 技能效果:伤害盘算、增益效果等
[*] 技能开释流程
(2)AI筹划


[*] AI筹划概述
[*] 基于举动树的Al筹划
[*] Al类继承层次关系
[*] 04.Al攻击目标选择
[*] AIl攻击方式选择
[*] Al移动方式选择
[*] AI基于事件的驱动机制
(3)怪物管理


[*] 怪物数据库筹划(配置)-属性和举动
[*] 怪物刷新规则筹划-时间间隔以及范围
[*] 怪物属性、技能、掉落、Al
(4)战场副本筹划


[*] 创建和加载 battlegrounds场景地图数据
[*] battlegrounds规实现
[*] battlegrounds队伍匹配、队伍均衡以及角色分配
[*] battlegrounds奖励体系和排名机制
6.7TrinityCore mmorpg核心功能与玩法

(1)任务体系筹划


[*] 任务体系数据库筹划(配置)
[*] 玩家数据库状态存储
[*] 任务范例筹划
[*] 任务触发机制
(2)背包筹划


[*] 背包数据结构筹划以及数据库表筹划
[*] 背包涵量控制
[*] 背包格子管理
[*] 背包交互功能实现
(3)工会体系筹划


[*] 数据库表结构筹划
[*] 工会创建逻辑实现
[*] 工会成员管理
[*] 工会资源管理及分配机制
[*] 工会活动与事件
[*] 工会排名实现
[*] 工会权限控制
6.8语言专栏

(1)lua程序筹划


[*] lua基础
[*] lua错误处置惩罚
[*] lua编译与预编译
[*] lua模块与包
[*] 元表与元方法
[*] 环境
[*] lua/c接口编程
(2)c++新特性


[*] 智能指针shared_ptr, unique _ptr
[*] 函数对象以及闭包
[*] 右值引用
[*] 原了操作与锁: atomic、mutex、condition_variable
[*] 多线星环竟队列筹划:MPSCQueue、ProducerConsumerQueue
(3)C++筹划模式


[*] 单例模式
[*] 工厂模式
[*] 模板模式
[*] 访问者模式
[*] 责任链模式
第一份工作不亚于一次高考,珍惜校招,社招的竞争是你目前想象不到的。能去大厂觉不当协,IT行业第一份工作配景越好,起点越高,后续发展空间越好!
给那些1-3年的安于现状的搭档一句话:
不要抱怨市场,不要安于现状,在低端,往中端范畴看,在中端往高端范畴看。认知以及对自身的要求,都会有所改变。
给那些担心35岁的搭档一句话:
决定上限的不是年龄,而是技术。
最后:盼望学习路线对你有所帮助,盼望码农的我们越来越好!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: C++程序员内功修炼——Linux C/C++编程技术汇总