在软件开发的宏大版图中,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编译和应用
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)
(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服务应用操作
(7)Qt网络及多线程
- 套接字编程API函数详解
- UDP协议工作原理
- TCP服务器筹划
- TCP客户端筹划
- TCP协议工作原理
- UDP服务器筹划
- UDP客户端筹划
- 多线程编程
- 互斥量
- 信号量
- 多线程C/S模子项目实战
- HTTP协议编程技术
- Websocket原理及编程技术
(8)Qt数据分析:图表详解
- Qt图表基础知识
- Qt ChartView详解
- Qt常用图表范例
- 曲线图
- 拆线图
- 柱形图
- 饼状图
(9)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岁的搭档一句话:
决定上限的不是年龄,而是技术。
最后:盼望学习路线对你有所帮助,盼望码农的我们越来越好!
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |