从基础到实习项目:C++后端开发学习指南
在当今技术快速迭代的背景下,后端开发作为软件工程的核心支柱持续发挥着关键作用。C++凭借其卓越的性能表现和系统级控制能力,依然是构建高性能后端服务的首选语言之一。本文将系统性地解析现代C++后端开发的核心技术体系,包括从语言特性精要到架构设计模式的全方位知识图谱,同时结合行业最新趋势,为开发者提供清晰的职业进阶路径和实战能力培养方案。
C++ 后端都是干什么的?
C++ 后端开发主要涉及到构建和维护基于 C++ 的服务器端应用程序。C++ 是一种高性能的编程语言,广泛应用于需要高性能和底层系统访问的场景。C++ 后端开发人员通常专注于以下几个方面:
-
性能优化:C++ 具有良好的性能特性,因此后端开发人员通常会关注代码性能优化,以确保应用程序运行得更快、更高效。
-
服务器端应用程序开发:C++ 后端开发人员负责构建和维护基于 C++ 的服务器端应用程序,包括处理客户端请求、与数据库交互、实现业务逻辑等。
-
分布式系统:构建和维护大规模分布式系统,以支持高并发、高吞吐量的需求。
-
网络编程:C++ 后端开发人员需要具备网络编程知识,如套接字编程、TCP/IP、HTTP 等,以便更好地处理服务器端与客户端之间的通信。
-
安全性:确保服务器端应用程序和数据的安全,通过加密、安全传输和访问控制等手段来保护数据和应用程序。
-
内存管理:C++ 后端开发人员需要关注内存管理,以避免内存泄漏、内存溢出等问题。
C++后端都有哪些工作岗位呢?
在 C++ 后端领域,有以下一些典型的工作岗位:
-
后端开发工程师:负责服务器端应用程序的开发和维护。
-
系统架构师:负责设计和规划后端系统的架构,以满足性能、可扩展性和可维护性的要求。
-
性能工程师:专注于优化代码性能,提升应用程序的运行效率。
-
网络工程师:负责处理网络相关的问题,如网络通信、协议实现等。
-
数据库工程师:专注于后端数据存储、检索和优化。
这些岗位可能会有一定的重叠,具体职责可能因公司和项目而异。不同公司可能会有不同的职位名称,但核心技能和职责通常是相似的。
薪资水平
在中国,C++
开发者的薪资水平通常高于很多其他编程语言的开发者。根据不同城市和经验水平,C++
后端开发工程师的薪资普遍较为可观。例如,北京、上海等一线城市C++
后端开发工程师年薪通常在 20
万 - 60
万人民币之间。
学习路线
来自零声教育的linux c/c++课程体系,通过原理技术+源码讲解+实战项目,全面解析linux c/c++底层开发技术,15个上线项目,2W+行手写代码。
公开课试听:最全C++后端开发架构师进阶教程,适合校招进大厂、1-5年程序员进阶、跳槽涨薪,一套搞定offer!2025年B站最全C++后端开发架构师进阶教程,适合校招进大厂、1-5年程序员进阶、跳槽涨薪,一套搞定offer!共计48条视频,包括:从腾讯内部C++职级标准来看C++后端技术栈、5种红黑树的用途,从应用到内核场景的优缺点、准备好linux开发环境,基于红黑树,现场手撕高效定时器模块等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1hedAYkEzT/
1、精进基石专栏
(一)数据结构与算法
随处可见的红黑树
- 红黑树的应用场景进程调度cfs,内存管理
- 红黑树的数学证明与推导
- 手撕红黑树的左旋与右旋
- 红黑树添加的实现与添加三种情况的证明
- 红黑树删除的实现与删除四种情况的证明
- 红黑树的线程安全的做法
- 分析红黑树工程实用的特点
磁盘存储链式的B树与B+树
- 磁盘结构分析与数据存储原理
- 多叉树的运用以及B树的定义证明
- B树插入的两种分裂
- B树删除的前后借位与节点合并
- 手撕B树的插入,删除,遍历,查找
- B+树的定义与实现
- B+树叶子节点的前后指针
- B+树的应用场景与实用特点
- B+树的线程安全做法
海量数据去重的abhloriter bitap
- hash的原理与hash函数的实现
- hash的应用场景
- 分布式hash的实现原理
- 海量数据去重布隆过滤器
- 布隆过滤的数学推导与证明
(二)设计模式
创建型设计模式
- 单例模式
- 策略模式
- 观察者模式
- 工厂方法模式与抽象工厂模式
- 原型模式
结构型设计模式
- 适配器模式
- 代理模式
- 责任链模式
- 状态模式
- 桥接模式
- 组合模式
(三)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的用法与原理
(四)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
gdb调试
- vscode远程连接Linux
- vscode gdb开发环境设置
- gdb调试概述
- gdb调试准备
- gdb调试命令详解
- gdb多线程调试
- gdb附加进程调试
- gdb core fles调试
2、高性能网络设计专栏
(一)网络编程异步网络库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文件传输
(二)网络原理
服务器百万并发实现(实操)
- 同步处理与异步处理的数据差异
- 网络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的设计方案与算法原理
(三)自研框架:协程框架NtyCo的实现
协程设计原理与汇编实现
- 协程存在的3个原因
- 同步与异步性能,服务端异步处理,客户端异步请求
- 协程原语 switch,resume,yield,
- 协程切换的三种实现方式,setjmp/longjmp,ucontext,汇编实现
- 汇编实现 寄存器讲解
- 协程初始启动 eip寄存器设至
- 协程栈空间定义,独立模与共享栈的做法
- 协程结构体定义
协程调度器实现与性能测试
- 调度器的定义分析
- 超时集合,就绪队列,io等待集合的实现
- 协程调度的执行流程
- 协程接口实现,异步流程实现
- hook钩子的实现
- 协程实现mysql请求
- 协程多核方案分析
- 协程性能测试
(四)自研框架:基于dpdk的用户态协议栈的实现
用户态协议栈设计实现
- 用户态协议栈的存在场景与实现原理
- netmap开源框架
- eth协议,ip协议, udp协议实现
- arp协议实现
- icmp协议实现
tcp的原理实现
- tcp 11个状态实现
- 滑动窗口与慢启动
- 重传定时器,坚持定时器
- time_wait定时器,keepalive定时器
应用层posix api的具体实现
- socket/bind/listen的实现
- accept实现
- recv/send的实现
- 滑动窗口/慢启动讲解
- 重传定时器,坚持定时器,time_ wait定时器,keepalive定时器
手把手设计实现epoll
- epoll数据结构封装与线程安全实现
- 协议栈fd就绪回调实现
- epoll接口实现
- LT/ET的实现
(五)高性能异步io机制
与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多线程处理方案
3、基础组件设计专栏
(一)池式组件
手写线程池与性能分析(项目)
- 线程池的异步处理使用场景
- 线程池的组成任务队列执行队列
- 任务回调与条件等待
- 线程池的动态防缩
- 扩展: nginx线程池实现对比分析
内存池的实现与场景分析(项目)
- 内存池的应用场景与性能分析
- 内存小块分配与管理
- 内存大块分配与管理
- 手写内存池,结构体封装与API实现
- 避免内存泄漏的两种万能方法
- 定位内存泄漏的3种工具
- 扩展:nginx内存池实现
mysq|连接池的实现(项目)
- 连接池性能的影响的2个因素,top连接和mysq|认证
- 连接请求归还策略
- 连接超时未归还策略
- 链接断开重连策略
- 连接数量最优策略
(二)高性能组件
原子操作CAS与锁实现(项目)
- 互斥锁的使用场景与原理
- 自旋锁的性能分析
- 原子操作的汇编实现
无锁消息队列实现(项目)
- 有锁无锁队列性能
- 内存屏障Barrier
- 数组无锁队列设计实现
- 链表无锁队列设计实现
网络缓冲区设计
- RingBuffer设计
- 定长消息包
- ChainBuffer 设计
- 双缓冲区设计
定时器方案红黑树,时间轮,最小堆(项目)
- 定时器的使用场景
- 定时器的红黑树存储
- 时间轮的实现
- 最小堆的实现
- 分布式定时器的实现
手写死锁检测组件(项目)
- 死锁的现象以及原理
- pthread_ _mutex_ lock/pthread_ _mutex_ _unlock dIsym的实现
- 有向图的构建
- 有向图dfs判断环的存在
- 三个原语操作 lock before, lock_ after, unlock_ after
- 死锁检测线程的实现
手写内存泄漏检测组件(项目)
- 内存泄漏现象
- 第三方内存泄漏与代码内存泄漏
- malloc与free的dIsym实现
- 内存检测策略
- 应用场景测试
手把手实现分布式锁(项目)
- 多线程资源竞争互斥锁
- 自旋锁
- 加锁的异常情况
- 非公平锁的实现
- 公平锁的实现
(三)开源组件
异步日志方案spdlog (项目)
- 日志库性能瓶颈分析
- 异步日志库设计与实现
- 批量写入与双缓存冲机制
- 奔溃后的日志找回
应用层协议设计ProtoBuf(项目)
- IM, 云平台,nginx, http, redis协议设计
- 如何保证消息完整性
- 手撕protobuf IM通信 协议
- protobuf序列化与反序列化
- protobuf编码原理
4、中间件开发专栏
(一)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种持久化方案
(二)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种缓存故障,缓存击穿,缓存穿透,缓存雪崩
(三)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上下文传递
(五)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机制的设计与实现
- 模块性能测试
5、开源框架专栏
(一)游戏服务器开发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
- 手撕万人同时在线游戏
(二)分布式API网关
高性能web网关Openresty
- Nginx与lua模块
- Openresty访问Redis,MySQL
- Restful API接口开发
- Openresty性能分析
Kong 动态负载均衡与服务发现
- nginx,openresty, Kong之间的“苟且”
- 动态 负载均衡的原理
- 服务发现实现的原理
- Serverless
- 监控,故障检测与恢复
- 二代理层缓存与响应服务
- 系统日志
(三)高性能计算CUDA
gpu并行计算cuda的开发流程
- cpu+gpu的异构计算
- 计算机体系结构中的gpu
- cuda的环境搭建nvcc 与srun的使用
- cuda的向量加法与矩阵乘法
- MPI与CUDA
音视频编解码中的并行计算
- cuda的h264编解码
- cuda的mpeg编解码
- ffmpeg的cuda支持
(四)并行计算与异步网络引擎workflow
workflow的应用场景
- workflow的编程范式与设计理念
- mysq/redis/kafka/dns的请求实现
- parallel处理与任务组装
workf low的组件实现
- 线程池实现
- DAG图任务
- msgqueue的实现
- 纯c的jsonparser实现
(五)物联网通信协议mqtt的实现框架mosquitto
mqtt的高效使用场景
- mqtt的 发布订阅模式
- 解决低带宽网络环境的数据传输
- 3种Qos等级
- 0Auth与JWT的安全认证
mctt的broker
- mqtt的遗嘱机制
- 发布订阅的过滤器.
- mosqujitto的docker部暑
- matt的日志实时监控
(六)ZeroMQ
消息队列与ZeroMQ的应用
- REQ/REP模型原理分析
- PUB/SUB模型原理分析
- PUSH/PULL模型原理分析
- Router/Dealer模型原理分析
ZeroMQ源码分析 :消息模型的实现
- 消息模型.
- 消息传递模式
- 消息分帧
- 中间层代理
- 消息丢失处理
ZeroMQ源码分析:网络机制与性能分析
- 零拷贝技术
- 消息高水位标记
- 无锁队列
- 可靠性设计
6、云原生专栏
(一)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改变了什么?
(二)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
7、性能分析专栏
(一)性能与测试工具
测试框架gtest以及内存泄漏检测
- goog letest与goog lemock文件
- 函数检测以及类测试
- test fixture测试夹具
- 类型参数化
- 事件测试
- 内存泄漏
- 设置期望,期待参数,调用次数,满足期望
性能工具与性能分析
- MySQL性能测试工具mysqlslap
- Redis性能测试工具redis-benchmark
- http性能测试工具wrk
- Tcp性能测试工具TCPBenchmarks
- 磁盘,内存,网络性能分析
火焰图的生成原理与构建方式
- 火焰图工具讲解
- 火焰图使用场景与原理
- nginx动态火焰图
- MySQL火焰图
- Redis火焰图
(二)观测技术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的耗时
(三)内核源码机制
进程调度机制哪些事儿
- qemu调试内存
- 进程调度cfs与 其他的四个调度类
- task_ struct结构体
- RCU机制与内存优化屏障
内核内存管理运行机制
- 虚拟内存地址布局
- SMP/NUMA模型
- 页表与页表缓存原理
- 伙伴系统实现
- 块分配(SIab/SIub/Slob) 原理实现
- brk/kmalloc/vmalloc系统调用流程
文件系统组件
- 虚拟文件系统vfs
- Proc文件系统
- super_ _block与 inode结构体
- 文件描述符与挂载流程
8、分布式架构
(一)分布式数据库
不一样的kv存储RocksDB的使用场景
- 前缀搜索
- 低优先级写入
- 生存时间的支持
- Transact i ons
- 快照存储
- 日志结构的数据库引擎
TiDB存储引擎的原理
- TiKV的Key-Value存储引擎
- 基于RBAC的权限管理
- 数据加密
TiDB集群方案与Replication原理
- 集群三个组件 TiDB Server, PD Server, TiKV Server
- Raft协议讲解
- OLTP与0LAP
(二)分布式文件系统
内核级支持的分布式存储Ceph
- ceph的集群部署
- monitor与OSD
- ceph 5个核心组件
- ceph集群监控
- ceph性能调调优与benchmark
分布式ceph存储集群部署
- 同步机制
- 线性扩容
- 如何实现高可用
- 负载均衡
(三)分布式协同
注册服务中心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种情况
(三)分布式监控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配置 与容器化运行
- 警告信息的分组
九、实战项目
一、分布式kvstore(基础架构开发方向)
1 kv存储的架构设计
- 存储节点定义
- tcp server/client
- hash数据存储
- list数据存储
- skiptable数据存储
- rbtree数据存储
2 网络同步与事务序列化
- 序列化与反序列化格式
- 建立事务与释放事务
- 线程安全的处理
3 内存池的使用与LRU的实现
- 大块与小块分配策略
- 内存回收机制
- 数据持久化
4 KV存储的性能测试
- 网络测试tps
- 吞吐量测试
- go, lua, java多语言支持
- hash/I ist/skiptable/rbtree测试
二、zrpc的实现(基础架构开发方向)
1 rpc使用场景与架构设计
- 分布式核心调度业务
- 网络与业务分离
- 网络选型reactor, 协程,io_ uring
2 rpc的协议与序列化
- json定义函数
- 数据序列化
- rpc处理流程
- rpc的内存池的特性
3 rpc代码自动生成器的实现
- 调用接口模式统一化
- float与double调用的差异
- 第三方语言的支持
- 性能测试与业务上线
三、DPDK的数据包测试仪(网络开发方向)
1 测试仪架构设计与使用场景
- 使用场景与测试方案
- 多核与多线程亲缘性
- 测试仪使用的命令行参数
2 协议流组织
- arp数据组织
- udp数据包
- top的syn, rst, fin, ack包
- icmp协议组织
3 异常情况与测试标准
- 异常命令行参数的处理
- 异常网络数据包的处理
- cpu与内存不足的异常处理
四、openresty的zv_waf的实现(网关防火墙开发)
1 WAF 基础架构与 IP/URL 防御
- OpenResty 与WAF架构设计
- IP黑白名单实现
- URL 基础过滤
- 日志记录与监控
2 WAF 请求头与基础参数防御
- User-Agent 智能识别
- Referer 可信来源验证
- Cookie 基础过滤
- HTTP 方法限制
3 WAF CC攻击防护与请求频率控制
- CC攻击原理与防御策略
- 人机验证联动机制
- IP动态好禁与放行
- CC防护
4 WAF 深度参数过滤与SOL注入/XSS防御
- Query参数过滤
- POST数据过滤
- SQL注入过滤
- XSS 攻击防御
五、qemu的virtio/vhost虚拟化实现(虚拟化开发)
1 virtio与vhost的工作原理
- vhost与qemu通信协议
- vhost通信协议解析get features
- vhost/virtio通信与reovmsg的作用
2 virtio设备模型实现
- virtio的setmem与vring的设置
- gpa.gva.hva.hpa之间的关系
- ifreq的tap/tun创建
3 vhost的性能优化与多队列网卡
- vring的物理内存与虚拟内存决射
- 多队列网卡实现
- vhost用户空间后端开发
- vhost/virtio的总结
六、SPDK助力MySQL数据落盘,让性能腾飞 (存储方向)
1 SPDK文件系统设计与实现
- NVMe与PCle的原理
- NVMe Controller 与bdev之间的rpc
- blobstore与blob的关系
2 文件系统的posix api实现
- 4层结构设计vfs
- spdk的异步改造posix同步api
- open/wr ite/read/c lose的实现
3 文件系统的性能测试与承接mysq|业务
- LD_ PRELOAD更 好mysql系统调用实现
- iodepth讲解
- 随机读,随机写,顺序读,顺序写
七、魔兽世界后端TrinityCore(游戏方向)
1 TrinityCore开发调试环境安装
- linux开发调试环境安装
- windows开发调试环境安装
- SRP-6登录协议介绍
- 基于openresty实现web注册服务
2 TrinityCore 中高性能基础组件应用
- to高性能定时器方案设计
- to线程模型以及锁、无锁队列应用
- 数据库连接池设计
- 日志库的设计
3 TrinityCore 高性能网络模块设计
- boost. asio跨平台网络库
- boost. asio核心命名空间以及异步io接口
- boost. asio在to中的封装
- 网络库应用实践
4 TrinityCore 游戏技能模块设计
- 技能模块设计
- 技术配置以及数据库表设计
- 技能模块组成部分
- 技能生成、处理以及生命周期管理
- 暴风雪、背利等技能实现详解
5 游戏AI模块设计
- Al模块实现层次
- Al模块三种细分方向以及选择
- 固定Al设计实现以及幼狼AI案例讲解
- 脚本Al设计实现以及BossAl案例讲解
6 游戏副本模块设计
- 副本模块:管理、匹配、积分结算逻辑实现
- 副本模块实现的抽象,层次
- 战歌峡谷副本实现
- 阿拉希盆地副本实现
八、网络数据包过滤firewall(网络安全方向)
1 firewall内核空间netfilter架构设计
- 内核空间设计与实现分析
- 设计数据包传递参数值
- 封装端口及IP规则类型
- 设计检测规则/IP/协议函数
2 firewall内核空间架构实现
- 检测规则/IP/协议函数实现
- 检查权限及规则函数实现
- 数据包出入站过滤器实现
- 读写规则/检查规则匹配实现
- 删除规则/模块加载和知裁
3 firewall用户空间架构设计
- 用户空间设计与实现分析
- 设计数据包传递参与宏
- 封装端口及|P规则类型
4 firewall 应用程序调试与上线
- Hook入口函数设计与实现
- IP/掩码/端口函教实现
- 协议类型/解析/删除规则
- 用户层访问及bug处理
- 用户程序测试及调试技巧
九、BPF网络数据包探测器(网关开发方向)
1 监控探测仪的场景与架构设计
- bpf.c实现tcp数据包探测
- bpf.c解析tcp与http
- 内核与应用层的通信数据格式
2 tc数据流记录存储
- kv存储构建发送与按收的key-value
- http请求实现集中式存储
- 数据流记录表关系
3 测试上线与前端显示
- 内核与应用程序的通信测试
- kv的存储测试
- 数据流记录表的qps测试
- 前端显示与上线
十、ROS+gazebo+TurtleBot3项目实践(自动驾驶与机器人方向)
1 ROS 基础认知与框架搭建
- 一在Ubuntu 系统上安装 ROS 的详细步骤
- 搭建 ROS 开发环境,配里工作空间
- ROS 的基本命令行工具
2 TurtleBot3 初步操控
- TurtlsBot3 的硬件连接与网络设置
- 启动 TurtleBot3 及相关节点的方法
- 使用键盘控制 TurtleBot3 运动的指令
- 在RViz 中显示 TurtlsBot3 模型及运动状态
3 话题蘧信深入
- 话题遗信的底层原理与数搭流向
- 自定义控制消息类型及多字段含义
- 实现从 PC 端到 TurtleBot3 的话题通信与运动指令传输
- 运用 rostopic 工具进行指令消息监测与分析
4 服务与参数管理
- 服务通信的架构设计与应用场景
- 编写用于控制 TurtleBot3 运动的服务端和客户端代码
- 参数服务器在设至 TurtleBot3 运动参数中的作用
- 利用 rosservice 工具调用服务实现运动控制
5 导航基础与运动指令
- 导航功能包中与运动控制的租件
- 配至导航功能包以核受外部运动指令
- 苏于导航功能包求送精确的运动指令(如真线、转弯)
- 实现 TurtleBot3 楼预设路径运动的指令编写
6 高级运动控制与实践
- 苏于传感器反情调整运动指令的策略
- 实现 TurtleBot3 在复杂环境下(如避障、循迹》的运动指令逻择
- 多 TurtleBot3 协同运动的指令规划与通信实现
- 设计并实现一个基于指令控制的 TurtleBot3 应用场景
十一、图床共享云储存(云原生基础设施开发方向)
1 fastdfs架构分析和配置
- fastdfs架构分析
- 快递配查fastdfs
- 上传文件逻辑分析
- 下载文件逻辑分析;
2 文件传输和接口设计
- 数据库设计
- 图床接口设计
- reactor网络模型构建
- 注册/登录/我的文件功能实现
3 分布式fastdfs存储集群部署和HTTP上传
- storage存储原理分析.
- 上传下载原理
- 实现文件上传功能
- 相同文件内容只保存一份
4 图片分享和短链服务实现
- 图片分享功能实现
- 图片分享数据库设计
- 长链转短链机制
- Redis缓存优化
5 分布式FastDFS存储集群部署
- FastDFS集群部署
- FastDFS同步原理
- binlog机制
- 水平扩容
- 图床功能查漏补缺
6 产品上云公网发布/测试用例
- 使用云服务器的各种坑分析
- postman模拟请求
- wrk测试接口吞吐量
- jmeter压力测试
十二、分布式推送系统项目实战(互联网产品项目)
1 项目框架分析和部署
- 分布式推进系统架构
- 话题聊天家落地
- 后端服务部署
- Web部署
2 注册/登录接口设计与实现
- HTTP RESTful API原理
- MySQL用户表设计
- 注册密码加密
- redis骏存token
- 客户端缓存token
3 固定话题聊天实现
- websocket迹接用户校验
- 话题/用户映射表结构设计
- 聊天发布到服务器
- redis缓存房间在线人员
- 服务器广播新消息
4 聊天记录拉取设计与实现
- MySQL消息表设计
- 聊天消息存储
- 分页拉取聊天消息
- 鉴录自动拉取最新消息
- 黑名单实现
5 自定义话题聊天实现
- MySQL话题表设计
- 管理员创建聊天话题
- HTTP拉取所有话题
- 用户自动加入新话题
- 用户退出话题
6 单机->分布式架构改进
- kafka队列削峰
- Erpc远程调用
- etcd注册和发现服务
- job模块
- nginx负载均衡
7 产品上云发布和性能测试
- 使用云服务器要点
- 测试接口性能
- 数据库素引优化
- 面试要点总结
十三、k8s二开内网穿透Tunnel(运维部署开发)
1 系统设计以及frp开源项目
- 项目背景与需求分析
- 系统设计与数据库设计
- frp TCPMUX代理与httpconnect复用器
- frp ssh、http、https 内网穿造
- frp AuthServerConfig token签权
2 应用管理与应用配置
- ssh、http、https等类型的应用维护
- 应用程序端口分配以及配至生成
- 导出应用配置为yaml格式的配亚文件
3 go客户端实现Kubernetes集群应用部署与更新
- go客户端追接Kubernetes api server
- Eo客户端创建配置资源ConfigMap
- 80苏户端创建部署资源Deployment
- 20客户端创建服务资源Service
4 vite/vue/elementUI实现前端页面
- Vue组件化开发与ElementUI
- Typescript的interface的应用
- axios实例与拦救器
- get与post请求好装
- 配置文件与api词用
5 自动化域名解析与Kubernetes 集群部署tunnel服务
- 自动化域名解析与域名备注
- 服务的部景与案户端配置的返回
- Tunnel服务的容器化部是与更新
- Tunnel客户端配置部署Tunnel客户端程序
- certbot 生成通配将证书用于Tunnel应用
十四、零声教学Ai助手一代(AI部署落地开发方向)
1 AI助手架构设计与需求分析
- chatgpt的构想与需求分析
- 基于开源项目初步构建项目
- gin框架实现代理服务
2 接口功能设计
- grpc与protobu的使用流程
- token计数器 与tokenizer的服务封装
- 敏感词识别服务
3 向量数据库与连接池设计
- redis实现上下文管理
- 问题记录保存
- web端协议解析
- OneBot协议
4 服务部署上线
- docker stack服务部署
- wrk接C吞吐量测试
- 线上节点监控
十五、Linux嵌入式多路监控系统项目实战(基于RV1126)
1 Linux嵌入式多路监控系统项目架构分析和部署
- 嵌入式多路监控架构分析
- rv1126部署监控程序
- 部署C++后端服务器
- 部署web远程查看实时自击
2 快速掌道Linux驱动开发
- Linux嵌入式系统架构
- Linux字符驱动设备
- Linux块设备驱动
- 虚拟内存和物理内存决射
- i2c驱动实战
3 Linux并发和设备材
- 中断/自旋锁/互斥量
- 阻塞/非阻塞
- 异步通知和异步I/O
- 设备树的特点和组成
- 设备树语法和节点解析
4 alsa驱动源码分析和应用实践
- alsa框架分析
- alsa audio接寸
- alsa 控制接口
- alsa采集pom实战
- aac音频编码
5 v412驱动源码分析和应用实践
- v412架构分析
- v412_device
- vidso_device
- v412来集yuv实战
- yuv h264硬件编码
6 RTMP实时推流
- ffmepg7.1裁剪和交叉编译
- 采集/编码/推流时间戳转换
- 推流队列设计
- 推流音视频同步机制
- 处理服务器实时任务