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

在软件开发的宏大版图中,C++ 语言宛如一座巍峨的高山,吸引着无数开发者攀登探索。而 Linux 操作系统,以其开源、稳定、高效的特性,成为了众多开发者钟爱的开发平台。将 C++ 与 Linux 相结合,就如同为开发者配备了一把无坚不摧的利刃,能够在系统级编程、高性能计算、游戏开发等诸多领域披荆斩棘。对于 C++ 程序员而言,掌握 Linux 环境下的 C/C++ 编程技术,不仅仅是提升自身技能的关键一步,更是在激烈的职场竞争中脱颖而出的必备法宝。这就好比一位武林高手,不仅要熟练掌握各种招式,更要修炼深厚的内功。而 Linux C/C++ 编程技术,就是 C++ 程序员的 "内功心法"。

在日常开发中,我们常常会遇到各种挑战:如何优化代码性能,让程序运行得更加高效?怎样利用多线程技术,充分发挥多核处理器的优势?如何与底层系统进行交互,实现更强大的功能?这些问题,都能在 Linux C/C++ 编程技术的世界中找到答案。接下来,就让我们一同踏上这趟 Linux C/C++ 编程技术的探索之旅,从基础语法到高级应用,从文件操作到网络编程,从多线程处理到内存管理,全方位地深入学习,修炼 C++ 程序员的深厚 "内功"。无论你是初出茅庐的编程新手,还是经验丰富的开发老兵,相信都能在这篇文章中收获满满,为自己的编程之路注入强大的动力。

本文福利, 免费领取C++学习资料包、技术视频/代码,1000道大厂面试题,内容包括(C++基础,网络编程,数据库,中间件,后端开发,音视频开发,Qt开发)↓↓↓↓↓↓见下面↓↓文章底部点击免费领取↓↓QQqun:1106675687

一、C/C++ Linux全栈开发

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

1.1精进基石专栏

(1)数据结构与算法

  • 随处可见的红黑树

  • 红黑树的应用场景进程调度cfs,内存管理

  • 红黑树的数学证明与推导

  • 手撕红黑树的左旋与右旋

  • 红黑树添加的实现与添加三种情况的证明

  • 红黑树删除的实现与删除四种情况的证明

  • 红黑树的线程安全的做法

  • 分析红黑树工程实用的特点

  • 磁盘存储链式的B树与B+树

  • 磁盘结构分析与数据存储原理

  • 多叉树的运用以及B树的定义证明

  • B树插入的两种分裂

  • B树删除的前后借位与节点合并

  • 手撕B树的插入,删除,遍历,查找

  • B+树的定义与实现

  • B+树叶子节点的前后指针

  • B+树的应用场景与实用特点

  • B+树的线程安全做法

  • 海量数据去重的abhloriter bitap

  • hash的原理与hash函数的实现

  • hash的应用场景

  • 分布式hash的实现原理

  • 海量数据去重布隆过滤器

  • 布隆过滤的数学推导与证明

(2)设计模式

  • 创建型设计模式

  • 单例模式

  • 策略模式

  • 观察者模式

  • 工厂方法模式与抽象工厂模式

  • 原型模式

  • 结构型设计模式

  • 适配器模式

  • 代理模式

  • 责任链模式

  • 状态模式

  • 桥接模式

  • 组合模式

(3)c++新特性

  • stI容器,智能指针,正则表达式

  • unordered_ _map

  • stl容器

  • hash的用法与原理

  • shared_ ptr,unique_ ptr

  • basic_ regex,sub_ match

  • 函数对象模板function, bind

  • 新特性的线程,协程,原子操作,lamda表达式

  • atomic的用法与原理

  • thread_ local 与condition_ var iable

  • 异常处理exception_ _ptr

  • 错误处理error _ category

  • coroutine的用法与原理

(4)Linux工程管理

  • Makefi le/ cmake/conf igure

  • Makefile的规则与make的工作原理

  • 单文件编译与多文件编译

  • Makefile的参数传递

  • 多目录文件夹递归编译与嵌套执行make

  • Makefile的通配符,伪目标,文件搜索

  • Makefile的操作函数与特殊语法

  • configure生成makefile的原则

  • cmake的写法

  • 分布式版本控制git

  • git的工作流程

  • 创建操作与基本操作

  • 分支管理,查看提交历史

  • git服务器搭建

  • Linux系统运行时参数命令

  • 进程间通信设施状态ipcs

  • Linux系统运行时长upt ime

  • CPU平均负载和磁盘活动iostat

  • 监控,收集和汇报系统活动sar

  • 监控多处理器使用情况mpstat

  • 监控进程的内存使用情况pmap

  • 系统管理员调优和基准测量工具nmon

  • 密切关注Linux系统glances

  • 查看系统调用strace

  • ftp服务器基本信息ftptop

  • 电量消耗和电源管理powertop

  • 监控mysq| 的线程和性能mytop

  • 系统运行参数分析htop/top/atop

  • Linux网络统计监控工具netstat

  • 显示和修改网络接口控制器ethtool

  • 网络数据包分析利刃tcpdump

  • 远程登陆服务的标准协议teInet

  • 获取实时网络统计信息iptraf

  • 显示主机上网络接口带宽使用情况iftop

(5)gdb调试

  • vscode远程连接Linux

  • vscode gdb开发环境设置

  • gdb调试概述

  • gdb调试准备

  • gdb调试命令详解

  • gdb多线程调试

  • gdb附加进程调试

  • gdb core fles调试

1.2高性能网络设计专栏

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

  • 网络io与io多路复用select/poll/epoll

  • socket与文件描述符的关联

  • 多路复用select/poll

  • 代码实现LT/ET的区别

  • 事件驱动reactor的原理与实现

  • reactor针对业务实现的优点

  • poll封装send_ cb/recv_ cb/ accept _cb

  • reactor多核实现

  • 跨平台(select/epoll/kqueue)的封装reactor

  • redis,memcached, nginx网 络组件

  • http服务器的实现

  • reactor sendbuffer与recvbuffer封装http协议

  • http协议格式

  • 有限状 态机fsm解析http

  • 其他协议websocket, tcp文件传输

(2)网络原理

  • 服务器百万并发实现(实操)

  • 同步处理与异步处理的数据差异

  • 网络io线程池异步处理

  • ulimit的fd的百万级别支持

  • sysctI. conf的rmem与wmem的调优

  • conntrack的原理分析

  • Posix API与网络协议栈

  • connect,listen, accept与三次握 手

  • listen参数backlog

  • syn泛洪的解决方案

  • close与四次挥手

  • 11个状态迁移

  • 大量close_ wait与time wait的原因与解决方案

  • tcp keepalive与 应用层心跳包

  • 拥塞控制与滑动窗口

  • UDP的可靠传输协议QUIC

  • udp的优缺点

  • udp高并发的设计方案

  • qq早期为什么选择udp作为通信协议

  • udp可靠传输原理

  • quic协议的设计原理

  • quic的开源方案quiche

  • kcp的设计方案与算法原理

  • 协程调度器实现与性能测试

  • 调度器的定义分析

  • 超时集合,就绪队列,io等待集合的实现

  • 协程调度的执行流程

  • 协程接口实现,异步流程实现

  • hook钩子的实现

  • 协程实现mysql请求

  • 协程多核方案分析

  • 协程性能测试

(3)自研框架:基于dpdk的用户态协议栈的实现(已开源)

  • 用户态协议栈设计实现

  • 用户态协议栈的存在场景与实现原理

  • netmap开源框架

  • eth协议,ip协议, udp协议实现

  • arp协议实现

  • icmp协议实现

  • 应用层posix api的具体实现

  • socket/bind/listen的实现

  • accept实现

  • recv/send的实现

  • 滑动窗口/慢启动讲解

  • 重传定时器,坚持定时器,time_ wait定时器,keepalive定时器

  • 手把手设计实现epoll

  • epoll数据结构封装与线程安全实现

  • 协议栈fd就绪回调实现

  • epoll接口实现

  • LT/ET的实现

  • 高性能异步io机制io_ _uring

  • 与epo1l媲美的io_ uring

  • io_ uring系统调用io uring setup, io_ ur ing register, io_ ur ing enter

  • liburng的io_ uring的关系

  • io_ uring与epoll性能对比

  • io_ _uring的共享内存机制

  • io_ uring的使用场景

  • io_ ur ing的accept, connect, recv, send实现机制

  • io_ uring网络读写

  • io_ uring磁盘读写

  • proactor的实现

  • windows异步机制iocp(以下为新增)

  • iocp完成端口的工作机制

  • iocp的精髓重叠io

  • iocp处理维护连接以及连接上的收发数据

  • iocp多线程处理方案

1.3基础组件设计专栏

(1)池式组件

  • 手写线程池与性能分析(项目)

  • 线程池的异步处理使用场景

  • 线程池的组成任务队列执行队列

  • 任务回调与条件等待

  • 线程池的动态防缩

  • 扩展: nginx线程池实现对比分析

  • 内存池的实现与场景分析(项目)

  • 内存池的应用场景与性能分析

  • 内存小块分配与管理

  • 内存大块分配与管理

  • 手写内存池,结构体封装与API实现

  • 避免内存泄漏的两种万能方法

  • 定位内存泄漏的3种工具

  • 扩展:nginx内存池实现

  • mysq|连接池的实现(项目)

  • 连接池性能的影响的2个因素,top连接和mysq|认证

  • 连接请求归还策略

  • 连接超时未归还策略

  • 链接断开重连策略

  • 连接数量最优策略

(2)高性能组件

  • 原子操作CAS与锁实现(项目)

  • 互斥锁的使用场景与原理

  • 自旋锁的性能分析

  • 原子操作的汇编实现

  • 无锁消息队列实现(项目)

  • 有锁无锁队列性能

  • 内存屏障Barrier

  • 数组无锁队列设计实现

  • 链表无锁队列设计实现

  • 网络缓冲区设计

  • RingBuffer设计

  • 定长消息包

  • ChainBuffer 设计

  • 双缓冲区设计

  • 定时器方案红黑树,时间轮,最小堆(项目)

  • 定时器的使用场景

  • 定时器的红黑树存储

  • 时间轮的实现

  • 最小堆的实现

  • 分布式定时器的实现

  • 手写死锁检测组件(项目)

  • 死锁的现象以及原理

  • pthread_ mutex lock/pthread_ mutex _unlock dIsym的实现

  • 有向图的构建

  • 有向图dfs判断环的存在

  • 三个原语操作 lock before, lock_ after, unlock_ after

  • 死锁检测线程的实现

  • 手写内存泄漏检测组件(项目)

  • 内存泄漏现象

  • 第三方内存泄漏与代码内存泄漏

  • malloc与free的dIsym实现

  • 内存检测策略

  • 应用场景测试

  • 手把手实现分布式锁(项目)

  • 多线程资源竞争互斥锁

  • 自旋锁

  • 加锁的异常情况

  • 非公平锁的实现

  • 公平锁的实现

(3)开源组件

  • 异步日志方案spdlog (项目)

  • 日志库性能瓶颈分析

  • 异步日志库设计与实现

  • 批量写入与双缓存冲机制

  • 崩溃后的日志找回

  • 应用层协议设计ProtoBuf(项目)

  • IM, 云平台,nginx, http, redis协议设计

  • 如何保证消息完整性

  • 手撕protobuf IM通信 协议

  • protobuf序列化与反序列化

  • protobuf编码原理

1.4中间件开发专栏

(1)Redis

  • Redis相关命令详解及其原理

  • string,set, zset, Iist,hash

  • 分布式锁的实现

  • Lua脚本解决ACID原子性

  • Redis事务的ACID性质分析

  • Redis协议与异步方式

  • Redis协议解析

  • 特殊协议操作订阅发布

  • 手撕异步redis协议

  • 存储原理与数据模型

  • string的三种编码方 式int, raw, embstr

  • 双向链表的list实现

  • 字典的实现,hash函数

  • 解决键冲突与rehash

  • 跳表的实现 与数据论证

  • 整数集合实现

  • 压缩列表原理证明

  • 主从同步与对象模型

  • 对象的类型与编码

  • 广字符串对象

  • 列表对象

  • 哈希对象

  • 集合对象

  • 有序集合

  • 类型检测与命令多态

  • 内存回收

  • 对象共享

  • 对象空转时长

  • redis的3种集群方式主从复制,sentinel, cluster

  • 4种持久化方案

(2)MySQL

  • SQL语句,索引,视图,存储过程,触发器

  • MySQL体系结构,SQL执行流程.

  • SQL CURD与高 级查询

  • 视图,触发器,存储过程

  • MySQL权限管理

  • MySQL索引原理以及SQL优化

  • 索引,约束以及之间的区别

  • B+树,聚集索引和辅助索引

  • 最左匹配原则以及覆盖索引

  • 索引失效以及索引优化原则

  • EXPLAIN执行计划以及优化选择过程分析

  • MySQL事务原理分析

  • 事务的ACID特性

  • MySQL并发问题脏读,不可重复读,幻读

  • 事务隔离级别

  • 锁的类型,锁算法实现以及锁操作对象

  • S锁X锁|S锁IX锁

  • 记录锁,间隙锁,next-key lock

  • 插入意向锁,自增锁

  • MVCC原理剖析

  • MySQL缓存策略

  • 读写分离,连接池的场景以及其局限a

  • 缓存策略问题分析

  • 缓存策略强一致性解决方案

  • 缓存策略最终一致性解决方案

  • 2种mysql缓存同步方案从数据库与触发器+udf

  • 缓存同步开源方案go-mysql-transfer

  • 缓存同步开源方案canal原理分析

  • 3种缓存故障,缓存击穿,缓存穿透,缓存雪崩

(3)Kafka

  • Kafka使 用场景与设计原理

  • 发布订阅模式

  • 点对点消息传递

  • Kafka Brokers原 理

  • Topi cs和Partition

  • Kafka存 储机制

  • Partition存储分布

  • Partition文件存储机制

  • Segment文件存储结构

  • offset查找message

  • 高效文件存储设计

  • 微服务之间通信基石gRPC

  • gRPC的 内部组件关联

  • CI ientS ide与ServerSide, Channel, Ser ivce, Stub的概念

  • 异步gRPC的实现

  • 回调方式的异步调用

  • Server 与CI ient对RPC的实现

  • 基于http2的gRPC通信协议

  • 基于http协 议构造

  • ABNF语法

  • 请求协议Request-Headers

  • gRPC上下文传递

(4)Nginx

  • Nginx反 向代理与系统参数配置conf原理

  • Nginx静态文件的配置

  • Nginx动态接口代理配置

  • Nginx对Mqtt协议转发

  • Nginx对Rtmp推拉流

  • Openresty对Redis缓存数据代理

  • shmem的三种实现方式

  • 原子操作

  • nginx channel

  • 信号

  • 信号量

  • Nginx过滤 器模块实现

  • Nginx Filter模块运行原理

  • 过滤链表的顺序

  • 模块开发数据结构 ngx_str_t,ngx_ list_ t,ngx_ buf_ t,ngx_ chain_ t

  • error日志的用法

  • ngx_ comond_ t的讲解

  • ngx_http_module_t的执行流程

  • 文件锁,互斥锁

  • slab共享内存

  • 如何解决 "惊群"问题

  • 如何实现负载均衡

  • Nginx Handler模块实现

  • Nginx Handler模块运行原理:

  • ngx_ module_ t/ngx_ http_ module_ t的讲解

  • ngx_ http_ top_ body_ filter/ngx_ http_ top header_ filter的 原理

  • ngx_ rbtree_ t的使用方法

  • ngx_ rbtree自定义添加方法

  • Nginx的核心数据结构ngx_ cycle_ t,ngx_ event. moule t

  • http请求的11个处理阶段

  • http包体处理

  • http响应发送

  • Nginx Upstream机制的设计与实现

  • 模块性能测试

1.5开源框架专栏

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

  • Skynet设计原理

  • 多核并发编程-多线程,多进程,csp模型,actor模型

  • actor模型实现-lua服务和c服务

  • 消息队列实现

  • actor消息调度

  • skynet网络层封装以及lua/c接口编程

  • skynet reactor 网络模型封装

  • socket/ socketchanne|封装

  • 手撕高性能c服务

  • lua编程以及lua/c接口编程

  • skynet重要组件以及手撕游戏项目

  • 基础接口 skynet. send, skynet. cal I, skynet. response

  • 广播组件multicastd

  • 数据共享组件 sharedatad datasheet

  • 手撕万人同时在线游戏

(2)分布式API网关

  • 高性能web网关Openresty

  • Nginx与lua模块

  • Openresty访问Redis,MySQL

  • Restful API接口开发

  • Openresty性能分析

  • Kong 动态负载均衡与服务发现

  • nginx,openresty, Kong之间的"苟且"

  • 动态 负载均衡的原理

  • 服务发现实现的原理

  • Serverless

  • 监控,故障检测与恢复

  • 二代理层缓存与响应服务

  • 系统日志

(3)SPDK助力MySQL数据落盘, 让性能腾飞(基础设施)

  • SPDK文件系统设计与实现

  • NVMe与PCle的原理

  • NVMe Controller 与bdev之间的rpc

  • blobstore与blob的关系

  • 文件系统的posix api实现

  • 4层结构设计vfs

  • spdk的 异步改造posix同步api

  • open/wr ite/read/close的实现

  • 文件系统的性能测试与承接mysql业务

  • LD_ PRELOAD更好mysql系统调用实现

  • iodepth讲解

  • 随机读,随机写,顺序读,顺序写

(4)高性能计算CUDA (录播答疑)

  • gpu并行计算cuda的开发流程

  • cpu+gpu的异构计算

  • 计算机体系结构中的gpu

  • cuda的环境搭建nvcc 与srun的使用

  • cuda的向量加法与矩阵乘法

  • MPI与CUDA

  • 音视频编解码中的并行计算

  • cuda的h264编解码

  • cuda的mpeg编解码

  • ffmpeg的cuda支持

(5)并行计算与异步网络引擎workflow

  • workflow的应用场景

  • workflow的编程范式与设计理念

  • mysq/redis/kafka/dns的请求实现

  • parallel处理与任务组装

  • workf low的组件实现

  • 线程池实现

  • DAG图任务

  • msgqueue的实现

  • 纯c的jsonparser实现

(6)物联网通信协议mqtt的实现框架mosquitto

  • mqtt的高效使用场景

  • mqtt的 发布订阅模式

  • 解决低带宽网络环境的数据传输

  • 3种Qos等级

  • 0Auth与JWT的安全认证

  • mctt的broker

  • mqtt的遗嘱机制

  • 发布订阅的过滤器.

  • mosqujitto的docker部暑

  • matt的日志实时监控

(7)ZeroMQ

  • 消息队列与ZeroMQ的应用

  • REQ/REP模型原理分析

  • PUB/SUB模型原理分析

  • PUSH/PULL模型原理分析

  • Router/Dealer模型原理分析

  • ZeroMQ源码分析 :消息模型的实现

  • 消息模型.

  • 消息传递模式

  • 消息分帧

  • 中间层代理

  • 消息丢失处理

  • ZeroMQ源码分析:网络机制与性能分析

  • 零拷贝技术

  • 消息高水位标记

  • 无锁队列

  • 可靠性设计

1.6云原生专栏

(1)Docker

  • Docker风光下的内核功能(录播答疑)

  • 进程namespace

  • UTS namespace

  • IPC namespace

  • 网络namespace

  • 文件系统namesapce

  • cgroup的资源控制

  • Docker容器管理与镜像操作(录播答疑)

  • Docker镜像下载与镜像运行

  • Docker存储管理

  • Docker数据卷

  • Docker与容器安全

  • Docker网络管理(项目)

  • 5种Docker网络驱动

  • pipework跨主机通信

  • 0vS划分vlan与隧道模式

  • GRE实现跨主机Docker间通信

  • Docker云与容器编排 (项目)

  • Dockerfile的语法流程

  • 编排神器Fig/Compose

  • FIynn体系 架构

  • Docker改变了什么?

(2)Kubernetes

  • k8s环境搭建(录播答疑)

  • k8s集群安全设置

  • k8s集群网络设置

  • k8s核心服务配置

  • kubectI命令工具.

  • yam|文件语法

  • Pod与Service的用法 (录播答疑)

  • Pod的管理配置

  • Pod升级与回滚

  • DNS服务之于k8s

  • http 7层策略与TLS安全设置

  • k8s集群管理的那些事儿(项目)

  • Node的管理

  • namespace隔离机制

  • k8s集群日志管理

  • k8s集群监控

  • k8s二次开发与k8s API (项目)

  • RESTful接口

  • API聚合机制

  • API组

  • Go访问k8s API

1.7性能分析专栏

(1)性能与测试工具

  • 测试框架gtest以及内存泄漏检测(录播答疑)

  • goog letest与goog lemock文件

  • 函数检测以及类测试

  • test fixture测试夹具

  • 类型参数化

  • 事件测试

  • 内存泄漏

  • 设置期望,期待参数,调用次数,满足期望

  • 性能工具与性能分析(录播答疑)

  • MySQL性能测试工具mysqlslap

  • Redis性能测试工具redis-benchmark

  • http性能测试工具wrk

  • Tcp性能测试工具TCPBenchmarks

  • 磁盘,内存,网络性能分析

  • 火焰图的生成原理与构建方式

  • 火焰图工具讲解

  • 火焰图使用场景与原理

  • nginx动态火焰图

  • MySQL火焰图

  • Redis火焰图

(2)观测技术bpf与ebpf(原有的内容增加)

  • bpftrace的实现原理

  • 跟踪,嗅探,采样,可观测的理解

  • 动态hook : kprobe/uprobe

  • 静态hook : tracepoint和USDT

  • cpu的观测taskset的使用

  • bpf对tcp请求的监控(项目)

  • bpf对网络流量的统计

  • 网络观测tcp _connect, tcp_accept,tcp _close

  • tcp_v4_ _connect与tp_v6 connect的探测点

  • struct sock的五元获取

  • bpf实现对goroutine的探测(项目)

  • go webserver的实现

  • uprobe应用层挂载点

  • bpf的ringbuffer原理

  • bpf探测java的垃圾回收(项目)

  • 运行时进程maps /proc/pid/maps

  • libjvm.so信息

  • bpf的usdt的使用

  • java gc的耗时

(3)内核源码机制

  • 进程调度机制哪些事儿

  • qemu调试内存

  • 进程调度cfs与 其他的四个调度类

  • task_ struct结构体

  • RCU机制与内存优化屏障

  • 内核内存管理运行机制

  • 虚拟内存地址布局

  • SMP/NUMA模型

  • 页表与页表缓存原理

  • 伙伴系统实现

  • 块分配(SIab/SIub/Slob) 原理实现

  • brk/kmalloc/vmalloc系统调用流程

  • 文件系统组件

  • 虚拟文件系统vfs

  • Proc文件系统

  • super_ _block与 inode结构体

  • 文件描述符与挂载流程

1.8分布式架构专栏

(1)分布式数据库

  • 不一样的kv存储RocksDB的使用场景

  • 前缀搜索

  • 低优先级写入

  • 生存时间的支持

  • Transact i ons

  • 快照存储

  • 日志结构的数据库引擎

  • TiDB存储引擎的原理

  • TiKV的Key-Value存储引擎

  • 基于RBAC的权限管理

  • 数据加密

  • TiDB集群方案与Replication原理

  • 集群三个组件 TiDB Server, PD Server, TiKV Server

  • Raft协议讲解

  • OLTP与0LAP

(2)分布式文件系统(录播答疑)

  • 内核级支持的分布式存储Ceph

  • ceph的集群部署

  • monitor与OSD

  • ceph 5个核心组件

  • ceph集群监控

  • ceph性能调调优与benchmark

  • 分布式ceph存储集群部署

  • 同步机制

  • 线性扩容

  • 如何实现高可用

  • 负载均衡

(3)分布式协同

  • 注册服务中心Etcd

  • etcd配置服务、服务发现、集群监控、leader选举、 分布式锁

  • etcd体系结构详解(gRPC, WAL,Snapshot、 BoItDB、 Raft)

  • etcd存储原理深入剖析(B树、B+树)

  • etcd读写机制以及事务的acid特性分析

  • raft共识算法详解(leader选举+日志复制)

  • 协同事件用户态文件系统fuse (项目)

  • fuse的使用场景

  • 文件系统读写事件

  • fuse的实现原 理

  • /dev/fuse的 作用

  • 快播核心技术揭秘P2P框架的实现(录播答疑)

  • 网关NAT表分析

  • NAT类型,完全锥型NAT,对称NAT,端口限制锥形NAT,IP限制锥型NAT

  • 代码逻辑实现NAT类型检测

  • 网络穿透的原理

  • 网络穿透的3种情况

(4)分布式监控Prometheus(新增)

  • Prometheus监控系统

  • 数据模型: Metric、Time Series、Sample和label

  • 指标类型 : Counter、Gauge、Histogram、Summary

  • 采集规则和警告规则

  • PromQL查询语言

  • Prometheus对MySQL/Redis的监控

  • Mysql Redis Exporter安装配置

  • go实现自定义应用程序指标

  • PromQL计算Mysq|、 Redis性能指标

  • Prometheus数据远程存储

  • Prometheus数据采集

  • 6种采集点配置方式

  • 动态重写目标采集点

  • Grafana可视化监控仪表盘

  • Prometheus构建企微与邮件的状态告警

  • 邮件和企微的接入

  • Alertmanager配置 与容器化运行

  • 警告信息的分组

1.9上线产品项目(基础架构、从零构建)

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

  • kv存储的架构设计

  • 存储节点定义

  • tcp server/client

  • hash数据存储

  • list数据存储

  • skiptable数据存储

  • rbtree数据存储

  • 网络同步与事务序列化

  • 序列化与反序列化格式

  • 建立事务与释放事务

  • 线程安全的处理

  • KV存储的性能测试

  • 网络测试tps

  • 吞吐量测试

  • go, lua, java多语言支持

  • hash/I ist/skiptable/rbtree测试

(2)zrpc的实现(上线项目,从零构建)

  • rpc使用场景与架构设计

  • 分布式核心调度业务

  • 网络与业务分离

  • 网络选型reactor, 协程,io_ uring

  • rpc的协议与序列化

  • json定义函数

  • 数据序列化

  • rpc处理流程

  • rpc的内存池的特性

  • rpc代码自动生成器的实现

  • 调用接口模式统一化

  • float与double调用的差异

  • 第三方语言的支持

  • 性能测试与业务上线

(3)PHS 高性能网关服务(上线项目,从零构建)

  • PHS后端框架构建

  • reactor事件模型

  • 核心的组成部分以及实现

  • 框架基础功能实现

  • 以PHS后端基础组件实现

  • 线程池封装实现

  • 定时器模块实现

  • 高性能web的内存池特性

  • PHS访问静态网页

  • opensssI引入

  • http协议实现

  • 静态资源管理

  • 性能测试与部署上线

(4)DPDK的数据包测试仪(测试工具开发,从零构建)

  • 测试仪架构设计与使用场景

  • 使用场景与测试方案

  • 多核与多线程亲缘性

  • 测试仪使用的命令行参数

  • 协议流组织

  • arp数据组织

  • udp数据包

  • top的syn, rst, fin, ack包

  • icmp协议组织

  • 异常情况与测试标准

  • 异常命令行参数的处理

  • 异常网络数据包的处理

  • cpu与内存不足的异常处理

1.10上线产品项目(开源项目、框架迭代)

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

  • SPDK文件系统设计与实现

  • NVMe与PCle的原理

  • NVMe Controller 与bdev之间的rpc

  • blobstore与blob的关系

  • 文件系统的posix api实现

  • 4层结构设计vfs

  • spdk的异步改造posix同步api

  • open/wr ite/read/c lose的实现

  • 文件系统的性能测试与承接mysq|业务

  • LD_ PRELOAD更 好mysql系统调用实现

  • iodepth讲解

  • 随机读,随机写,顺序读,顺序写

(2)魔兽世界后端TrinityCore (上线项目,迭代开发)

  • TrinityCore开发调试环境安装

  • linux开发调试环境安装

  • windows开发调试环境安装

  • SRP-6登录协议介绍

  • 基于openresty实现web注册服务

  • TrinityCore 中高性能基础组件应用

  • to高性能定时器方案设计

  • to线程模型以及锁、无锁队列应用

  • 数据库连接池设计

  • 日志库的设计

  • TrinityCore 高性能网络模块设计

  • boost. asio跨平台网络库

  • boost. asio核心命名空间以及异步io接口

  • boost. asio在to中的封装

  • 网络库应用实践

  • TrinityCore 游戏技能模块设计

  • 技能模块设计

  • 技术配置以及数据库表设计

  • 技能模块组成部分

  • 技能生成、处理以及生命周期管理

  • 暴风雪、背击等技能实现详解

  • 游戏AI模块设计

  • Al模块实现层次

  • Al模块三种细分方向以及选择

  • 固定Al设计实现以及幼狼AI案例讲解

  • 脚本Al设计实现以及BossAl案例讲解

  • 游戏副本模块设计

  • 副本模块:管理、匹配、积分结算逻辑实现

  • 副本模块实现的抽象,层次

  • 战歌峡谷副本实现

  • 阿拉希盆地副本实现

(3)网络数据包过滤firewall (从零构建)

  • firewall内核空间netfilter架构设计

  • 内核空间设计与实现分析

  • 设计数据包传递参数值

  • 封装端口及IP规则类型

  • 设计检测规则/IP/协议函数

  • firewall内核空间架构实现

  • 检测规则/IP/协议函数实现

  • 检查权限及规则函数实现

  • 数据包出入站过滤器实现

  • 读写规则/检查规则匹配实现

  • 删除规则/模块加载和知裁

  • firewall用户空间架构设计

  • 用户空间设计与实现分析

  • 设计数据包传递参与宏

  • 封装端口及|P规则类型

  • firewall 应用程序调试与上线

  • Hook入口函数设计与实现

  • IP/掩码/端口函数实现

  • 协议类型/解析/删除规则

  • 用户层访问及bug处理

  • 用户程序测试及调试技巧

(4)BPF网络数据包探测器(从零构建)

  • 监控探测仪的场景与架构设计

  • bpf.c实现tcp数据包探测

  • bpf.c解析tcp与http

  • 内核与应用层的通信数据格式

  • tc数据流记录存储

  • kv存储构建发送与接收的key-value

  • http请求实现集中式存储

  • 数据流记录表关系

  • 测试上线与前端显示

  • 内核与应用程序的通信测试

  • kv的存储测试

  • 数据流记录表的qps测试

  • 前端显示与上线

1.11上线产品项目(产品运营、从零落地)

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

  • fastdfs架构分析和配置

  • fastdfs架构分析

  • 快递配查fastdfs

  • 上传文件逻辑分析

  • 下载文件逻辑分析;

  • 文件传输和接口设计

  • 数据库设计

  • 图床接口设计

  • reactor网络模型构建

  • 注册/登录/我的文件功能实现

  • 分布式fastdfs存储集群部署和HTTP上传

  • storage存储原理分析.

  • 上传下载原理

  • 实现文件上传功能

  • 相同文件内容只保存一份

  • 图片分享和短链服务实现

  • 图片分享功能实现

  • 图片分享数据库设计

  • 长链转短链机制

  • Redis缓存优化

  • 分布式FastDFS存储集群部署

  • FastDFS集群部署

  • FastDFS同步原理

  • binlog机制

  • 水平扩容

  • 图床功能查漏补缺

  • 产品上云公网发布/测试用例

  • 使用云服务器的各种坑分析

  • postman模拟请求

  • wrk测试接口吞吐量

  • jmeter压力测试

(2) GitHub仓库话题聊天室(上线项目,迭代开发)

  • 项目框架分析和部暑

  • GitHub话题聊天室需求分析

  • 话题聊天室架构

  • 后端服务部署

  • Web部署

  • 接口设计与实现

  • HTTP RESTful API原 理

  • MySQL用户表设计

  • redis缓存token

  • 客户端缓序token

  • 固定话题聊天实现

  • websocket连按用户校验

  • 话题/用户映射表结构设计

  • 聊天发布到服务器

  • redis缓存房间在线人员

  • 服务器广播新消息

  • 聊天记录拉取设计与实现

  • MySQL消息表设计

  • 聊天消息存储

  • 分页拉取聊天消息

  • 登录自动拉取最新消息

  • 黑名单实现

  • 文件服务器和docker部署

  • 在线文件传输机制分析

  • 离线文件传输机制分析

  • etcd微服务注册与发现

  • docker制作与部署

  • 产品上云公网发布/公网测试上线

  • 单元测试案例

  • testbench如何设计

  • M项目性能压测

  • 定制私有功能

  • 拓展新功能(代码)

  • 云服务器部暑

(3)云原生内网穿透channel (上线项目,从零构建)

  • 系统设计以及frp开源项目

  • 项目背景与需求分析

  • 系统设计与数据库设计

  • frp TCPMUX代理与httpconnect复用器

  • frp ssh. http、https内网穿透

  • frp AuthServerConfig token鉴 权

  • 应用管理与应用配置

  • ssh、http、https等类型的应用维护

  • 应用程序端口分配以及配置生成

  • 导出应用配置为yaml格式的配置文件

  • go客户端实现Swarm集群应用的部署与更新

  • Docker启用TLS客户端访问

  • go客户端根据时间戳创建服务配置

  • go客户端检查并创建overlay网络

  • go客户端设置私有注册中心权限

  • go客户端创建并更新应用服务

  • vite/vue/elementUI实现前端页面

  • Vue组件化开发与ElementUI

  • Typescr ipt的interface的应用

  • axios实例与拦截器.

  • get与post请求封装

  • 配置文件与api调用

  • 自动化域名解析与Swarm集群Tunne|服务部暑

  • 自动化域名解析与域名备注

  • 服务的部署与客户端配置的返回

  • Tunne |服务的容器化部署与更新

  • Tunnel客户端配置部署Tunne|客户端程序

  • certbot生成道配符证书用于Tunnel应用

二、音视频流媒体高级开发

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

2.1音视频基础

(1)音频基础知识

  • 如何采集声音-模数转换原理

  • 为什么高品质音频采样率>=44.1 Khz

  • 什么是PCM

  • 一个采样点用多少位表示

  • 采样值用整数还是浮点数表示

  • 音量大小和采样值大关系

  • 多少个采样点作为一-帧数据

  • 左右通道的采样数据如何排列

  • 什么是PCM (脉冲编码调制)

  • 音频编码原理

(2)视频基础知识

  • RGB彩色原理

  • 为什么需要YUV格式

  • 什么是像素

  • 分辨率、帧率、码率

  • YUV数据存储格式区别

  • YUV内存对齐问题

  • 为什么画面显示绿屏

  • H264编码原理

  • H264IPB帧的关系

注:具体H264编码格式见FFmpeg章节

(3)解复用基础知识

  • 什么是解复用,比如MP4格式

  • 为什么需要不同的复用格式

  • MP4/FLV/TS

  • 常见的复用格式MP4/FLV/TS

注:具体复用格式详解见FFmpeg章节

(4)FFmpeg开发环境搭建

  • Windows、Ubuntu、MAC3三大平台

  • QT安装

  • FFmpeg命令行环境

  • FFmpeg API环境

  • FFmpeg编译

  • vs2019安装(win平台)

(5)音视频开发常用工具

  • Medialnfo,分析视频文件

  • mp4box,分析mp4

  • VLC播放器,播放测试

  • audacity,分析音频PCM

  • EasyICE,分析TS流

  • Elecard_ streamEye, 分析H264

  • flvAnalyser,分析FLV

  • 海康YUVPlayer,分析YUV

2.2FFmpeg实战

(1)FFmpeg命令

  • 音频PCM/AAC文件提取

  • 视频YUV/H264文件提取

  • 解复用、复用

  • 音视频录制

  • 视频裁剪和合并

  • 图片/视频转换

  • 直播推流和拉流

  • 水印/画中画/九宫格滤镜

(2)SDL跨平台

  • 多媒体开发库实战

  • SDL环境搭建

  • SDL事件处理

  • SDL线程处理

  • 视频YUV画面渲染

  • 音频PCM声音输出

注: SDL兼容Win、Ubuntu、Mac三大平台,主要用于后续项目的画面显示和声音输出

(3)FFmpeg基石精讲

  • FFmpeg框架

  • FFmpeg内存引|用计数模型

  • 解复用相关AVFormat XXX等

  • 编解码相关AVCodec XXX等

  • 压缩数据AVPacket

  • 未压缩数据AVFrame

  • FFmpeg面向对象思想

  • Packet/Frame数据零拷贝

注:目的熟悉FFmpeg常用结构体和函数接口

(4)FFmpeg过滤器

  • FFmpeg过滤chain框架

  • 音频过滤器框架

  • 视频过滤器框架

  • 多路音频混音amix

  • 视频水印watermark

  • 视频区域裁剪和翻转

  • 视频添加logo

(5)FFmpeg音视频解复用+解码

  • 解复用流程

  • 音频解码流程

  • 视频解码流程

  • FLV封装格式分析

  • MP4封装格式分析

  • FLV和MP4 seek有什么区别

  • 为什么FLV格式能用于直播

  • 为什么MP4不能用于直播

  • MP4能否用来做点播

  • AAC ADTS分析

  • H264 NALU分析

  • AVIO内存输入模式

  • 音频重采样实战

  • 重采样后的数据播放时长是否一致

  • 重采样后PTS如何表示

  • 视频解码后YUV内存对齐问题

  • 音频解码后PCM排列格式问题

  • 硬件解码dxva2/nvdec/cuvid/qSV

  • 硬件gpu数据转移到cpu

  • H265解码

注: FFmpeg API学习:视频解复用->解码->编码->复用合成视频

(6)ffplay播放器

  • 掌握ffplay.c的意义

  • ffplay框架分析

  • 解复用线程

  • 音频解码线程

  • 视频解码线程

  • 声音输出回调

  • 画面渲染时间间隔

  • 音频重采样

  • 画面尺寸格式变换

  • 音频、视频、外部时钟同步区别

  • 以视频为基准时音频重采样补偿

  • 音量静音、调节大小的本质

  • 音视频packet队列大小限制

  • 音视频packet队列线程安全

  • 音视频frame队列大小限制

  • 音视频frame队列线程安全

  • 暂停、播放实现机制

  • seek播放导致的画面卡住问题.

  • seek播放数据队列、同步时钟处理

  • 如何做到逐帧播放

  • 播放器退出的流程要点

注: ffplay.c是ffplay命 令的源码,掌握fplay对于我们自己开发播放器有事半功倍的效果

(7)FFmpeg音视频编码+复用合成视频

  • AAC音频编码

  • H264视频编码

  • PCM+ YUV复用合成MP4/FLV

  • H264编码原理

  • IDR帧和帧区别

  • 动态修改编码码率

  • GOP间隔参考值

  • 复用合成MP4音视频不同步问题

  • 编码、复用timebase问题

  • MP4合成IOS不能播放问题

  • 重采样后PTS如何表示

  • 视频编码YUV内存对齐问题

  • 硬件编码dxva2/nvenc/cuvid/qsv

  • H265编码原理

  • H264、H265编码互转

(8)ffmpeg多媒体

  • 视频处理工具

  • 掌握fmpeg.c的意义

  • ffmpeg框架分析

  • 音视频编码

  • 封装格式转换

  • 提取音频

  • 提取视频.

  • logo叠加

  • 音视频文件拼接

  • filter机制

  • 命令行解析流程

  • MP4转FLV不重新编码逻辑

  • MP4转FLV重新编码逻辑

  • MP4转FLV scale

注: ffmpeg.c是ffmpeg命令的源码,掌握ffmpeg.c的大体框架对于我们要实现一些不知道怎么编写代码的功能(用ffmepg命令行可以但不知道怎么调用ffmpeg api时可以参考ffmepg.c的逻辑)有极大的帮助,比如要裁剪视频长度。

(9)FFmpeg+ QT播放器

  • 常见开源播放器分析

  • CUVID/D3D11VA硬解

  • 界面和播放核心分离框架分析

  • 音量频谱展示

  • 播放器模块划分

  • 音频均衡器

  • 解复用模块

  • 画面旋转、翻转

  • 音视频解码

  • 画面亮度、饱和度调节

  • 播放器控制

  • 画面4:3 16:9切换

  • 音视频同步

  • 码流信息分析

2.3流媒体客户端

(1)RTMP推拉流项目实战

  • RTMP协议分析

  • wireshark抓包分析

  • H264 RTMP封装

  • AAC RTMP封装

  • RTMP拉流实战

  • H264 RTMP解析

  • AAC RTMP解析

  • RTMP推流实战

  • 0没有MetaData能否播放

  • RTMP推流是否会导致延迟

  • RTMP推流如何动态调整码率

  • RTMP推流如何动态调整帧率

  • RTMP拉流是否会导致延迟

  • 如何检测RTMP拉流延迟

  • 如何解决RTMP播放延迟

  • ffplay. vlc能否用来测试播放延迟

  • ffplay、vlc能否用来测试播放延迟

  • RTMP拉流播放变速策略设置

(2)RTSP流媒体实战

  • RTSP协议分析

  • RTP协议分析

  • H264 RTP封装

  • H264 RTP解析

  • AAC RTP封装

  • AAC RTP解析

  • RTCP协议分析

  • RTSP流媒体服务器搭建

  • RTSP推流实战

  • RTSP拉流实战

  • wireshark抓包分析

  • RTP头部序号的作用

  • RTCP的NTP和RTP的TS的区别

  • RTP头部序号的作用

  • RTCP的NTP和RTP的TS的区别

  • RTSP交互过程

  • 花屏可能的原因

  • SPS PPS如何发送

  • SDP封装音视频信息

(3)HLS拉流分析

  • HLS协议分析

  • HLS拉流实战

  • HTTP协议分析

  • FFmpeg HLS源码分析

  • TS格式分析

  • HLS多码率机制

  • m3u8文件解析

  • 如何解决HL S延迟高的问题

  • wireshark抓包分析

注:理解HL .S的拉流机制,有助于我们解决HL .S播放延迟较高的问题

2.4流媒体服务器

(1)SRS源码剖析协程

  • 整体框架分析

  • 连接和协程的关系

  • RTMP推流分析

  • 如何更快速掌握SRS源码

  • RTMP拉流分析

  • 流媒体服务器是否导致延迟

  • HLS拉流分析

  • 如何降低流媒体服务器的延迟

  • HTTP-FLV拉流分析

  • 怎么获取流媒体服务器推流信息

  • FFmpeg转码分析

  • 怎么获取流媒体服务器拉流信息

  • 首屏秒开技术分析

  • 首屏秒开能降低延迟吗

  • forward集群源码分析

  • 推流->服务器转发->拉流延迟分析

  • edge集群源码分析

  • 负载均衡部署方式

注:对于SRS流媒体服务器,我们长期更新,从3.0->4.0->5.0

(2)ZLMediaKit源码剖析

  • 整体框架分析

  • 数据转发模型

  • 线程模块划分

  • SDP解析

  • RTSP推流连接处理

  • RTP H264解析

  • RTSP拉流连接处理

  • RTP AAC解析

注: ZLMediaKit主要讲解RTSP流媒体服务器相关的模块,其他模块RTMP/HLS等参考SRS。

2.5WebRTC项目实战

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

  • WebRTC通话原理分析

  • WebRTC开发环境搭建

  • coturn最佳搭建方法

  • 如何采集音视频数据

  • 一对一通话时序分析

  • 信令服务器设计

  • SDP分析

  • Candidate类型分析

  • Web-对一通话

  • Web和Android通话

  • AppRTC快速演示

  • 如何设置编码器优先级

  • 如何限制最大码率

  • 信令服务器的本质是什么

  • Web和Android的SDP差异

  • A要和B通话, A怎么知道B的存在

  • 新增C++、IOS客户端两大版本

注:学习WebRTC建议从web端入手,可以直接调用js接口(千万别刚接触WebRTC就忙着去编译WebRTC源码) , 对WebRTC通话流程有清晰的理解再考虑其他端。

(2)WebRTC高级开发-SRS 4.0/5.0源码分析

  • RTMP转发WebRTC逻辑

  • WebRTC转发RTMP逻辑

  • WebRTC音视频一对一通话

  • WebRTC多人通话

  • WebRTC SFU模型分析

  • SRTP分析

  • RTCP分析

  • SDP分析

  • NACK分析

  • turn分析

  • stun分析

  • 拥塞控制算法

  • FEC

  • jitter buffer

(3)WebRTC高级开发-MESH模型多人通话

  • 自定义摄像头分辨率

  • 码率限制

  • 调整编码器顺序

  • Mesh模型多方通话分析

  • 多人通话信令服务器开发

  • 动态分配stun/turn服务器

  • Web客户端源码

  • Android客户端源码

(4)WebRTC高级开发-Janus SFU模型多人通话

  • Janus框架分析

  • Janus信令设计

  • 基于Janus实现会议系统

  • Janus Web客户端源码分析

  • Janus Android客户端源码分析

  • Janus Windows客户端源码分析

  • 基于Full ICE的部署

  • 基于Lite ICE的部署

  • Full ICE和Lite ICE的区别

  • 发布订阅模型

1.6Android NDK

(1)Android NDK开发基础

  • So库适配总结

  • GDB调试技巧

  • Makefile_ I程组织

  • CMake工程组织

  • 生成指定CPU平台的so库

  • JNI基础和接口生成

  • JNI Native层构建Java对象

  • JNI异常处理

(2)Android FFmpeg编译和应用

  • 编译x264

  • 编译x265

  • 编译mp3

  • 编译fdk-aac

  • 编译FFmpeg

  • 使用ffmpeg实现mp4转格式

  • 使用FFmpeg开发播放器

(3)Android RTMP推拉流

  • RTMP推流协议实现

  • RTMP拉流协议实现

  • RTMP拉流音视频同步

  • MediaCodec硬件编码

  • MediaCodec硬件解码

  • OpenSL ES播放音频数据

  • MediaCodec硬件解码

  • OpenGL ES Shader显示视频

(4)Android Ijkplayer源码分析

  • 编译jkplayer和实践

  • 项目框架分析

  • 播放状态转换

  • 拉流分析

  • 解码分析

  • 音频播放流程

  • 视频渲染流程

  • OpenSL ES播放音频数据

  • MediaCodec硬件解码

  • OpenGL ES Shader显示视

  • 变速播放实现原理

  • 低延迟播放实现

  • 缓存队列设计机制分析

1.7IOS音视频开发

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

  • xcode调试FFmpeg

  • IOS调用FFmpeg

  • QT调试FFmpeg

(2)IOS FFmpeg RTMP推拉流

  • AVFoundation视频采集

  • Metal视频渲染

  • Audio Unit音频采集

  • Audio Unit音频播放

  • FFmpeg推流

  • FFmpeg拉流

  • 直播延迟和解决方法

(3)VideoToolbox硬件编解码

  • VideoToolbox框架的流程

  • 硬件编解码步骤

  • CVPixelBuffer解析

  • 如何获取SPS/PPS信息

  • 判断是否关键帧

  • 编码参数优化

(4)IOS jkplayer编译和应用

  • 本地视频播放

  • RTMP拉流播放

  • HTTP点播

  • 音频播放流程

  • 视频渲染流程

(5)IOS ijkplayer编译和应用

  • 基于Mesh一对一通话

  • 基于SFU多人通话

1.8音视频项目实战

(1)0voice播放器

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

(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岁的伙伴一句话:

决定上限的不是年纪,而是技术。

最后:希望学习路线对你有所帮助,希望码农的我们越来越好!

相关推荐
打不了嗝 ᥬ᭄4 小时前
Linux的权限
linux
落幕4 小时前
C语言-进程
linux·运维·服务器
风静如云6 小时前
OpenBMC:BmcWeb定义service
linux
leoufung6 小时前
VIM FZF 安裝和使用
linux·编辑器·vim
bugtraq20217 小时前
XiaoMi Mi5(gemini) 刷入Ubuntu Touch 16.04——安卓手机刷入Linux
linux·运维·ubuntu
CodeWithMe8 小时前
[ Vim ] 常用命令 and 配置
linux·编辑器·vim
DC_BLOG8 小时前
Linux-GlusterFS进阶分布式卷
linux·运维·服务器·分布式
cookies_s_s8 小时前
Linux--进程(进程虚拟地址空间、页表、进程控制、实现简易shell)
linux·运维·服务器·数据结构·c++·算法·哈希算法
丁劲犇9 小时前
碳基生物的悲歌-DeepSeek思考实现Linux动态库递归收集工具
linux·递归·deepseek·ldd