网站建设企业建站方案网站建设和网络推广服务公司
在软件开发的宏大版图中,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播放进度显示,截屏,调节音量,播放列表,显示缓存时间实现直播低延迟播放

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

(3)0voice低延迟拉流直播——实现500毫秒~1秒的低延迟直播

三、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显示歌词
 -  
上一曲播放暂停下一 曲循环播放实现
 -  
音乐搜索引|擎关于皮肤更换系统托盘
 

(3)信息管理项目:库存管理系统(Qt5+ MySQL)
-  
商品数据库设计及配置测试
 -  
库存新增商品和查询商品
 -  
商品入库与商品出库
 -  
商品删除与导出数据
 -  
数据汇总及数据备份
 

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

(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岁的伙伴一句话:
决定上限的不是年纪,而是技术。
最后:希望学习路线对你有所帮助,希望码农的我们越来越好!
