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