为什么选这门 C++ 高并发网络编程课

对很多后端开发者而言,写业务逻辑已经足够熟练,但一碰到“十万级 QPS”或“高并发场景”就容易卡住。常见的痛点是:知道要用多线程,却不清楚线程池怎么设计;知道要处理粘包,却分不清 NIO 和 epoll 的边界;知道 Redis 和 Nginx 性能好,却说不清它们的底层为什么快。这门课解决的就是这种“知其然不知其所以然”的问题。它不教你套框架,而是从内核机制出发,手把手让你从零搭建一个能支撑百万并发的 Reactor 服务器。你会理解事件循环、I/O 多路复用、线程池、锁竞争控制这些核心组件是如何配合的,而不只是调包侠。学完这套流程,你面对任何高并发系统都不再是“黑盒”状态,能独立分析瓶颈并给出优化方案。

适合什么基础,建议先看哪几块

这门课对 C++ 基础有一定要求。至少你得分清楚值传递、引用传递、指针解引用,理解类、继承、多态的基本语法,最好用过一次多线程(哪怕只是 std::thread)。如果连“变量在栈上还是在堆上”都说不清,直接上手会很痛苦。建议的学习顺序是:先啃“C++11 新特性”部分,重点看智能指针、右值引用、lambda 表达式,这些是后面网络代码的语法骨架;然后是“线程池与线程安全”模块,理解生产者消费者模型、条件变量、互斥锁的使用场景;最后才是“Reactor 模型实现”和“网络编程”部分。不要一上来就冲进 Nginx 源码分析,先确保自己的代码能跑通、能并发,再谈优化。资料包里的代码结构清晰,每一步都有注释,适合边看边敲,切忌只看不写。

学完能独立做什么,资料怎么用

学完这门课,你不再需要背面试题里的“什么是 IO 多路复用”,而是能亲手写出一个支持十万长连接的服务端。具体而言,你能独立实现:1. 基于 epoll 的事件驱动网络层;2. 主从 Reactor 架构,解决 IO 密集和 CPU 密集型任务分离;3. 线程池调度策略,避免线程爆炸;4. 智能指针管理资源,避免内存泄漏。这些能力直接对应高级工程师的岗位需求——不是“会用框架”,而是“能造轮子”或“能 debug 框架”。资料包是配套代码,建议按模块拆解:每完成一个功能(比如实现一个 TCP 连接建立),就把代码合入主工程,跑通测试用例。重点练习“粘包拆包”和“超时连接处理”这两个场景,它们是实际生产中最常出问题的点。如果学有余力,可以尝试把课程代码改成支持 HTTP 协议,或者接入一个消息队列做异步落库。这门课不承诺让你立刻进大厂,但它会给你一个扎实的底层认知,以后看 Nginx、Redis 源码时,你会发现自己不再抓瞎,而是能顺着逻辑线一路读下去。这种“看得懂源码”的能力,比背十个八股文更有长期价值。

课程目录

├── 第1章 C++从0实现百万并发的Reactor服务器-课程概览/ │ └── [ 19M] 1-1C++从0实现百万并发的Reactor服务器-课程概览 ├── 第2章 C++工程师必须掌握-脱离Linux操作系统,谈并发没什么意义/ │ ├── [5.6M] 2-1Linux环境高级编程导学 │ ├── [ 40M] 2-2Linux的Helloworld │ ├── [ 33M] 2-3VSCode的安装和配置 │ ├── [ 35M] 2-4静态库和动态库 │ ├── [ 53M] 2-5编译规则文件makefile │ ├── [ 22M] 2-6main函数的参数 │ ├── [ 43M] 2-7gdb常用命令 │ ├── [ 18M] 2-8gdb调试core文件 │ └── [ 13M] 2-9gdb调试正在运行中的程序 ├── 第3章 对网络通讯重要的-Linux的目录、文件和时间操作/ │ ├── [ 30M] 3-1Linux的时间操作 │ ├── [ 24M] 3-2Linux的目录操作 │ ├── [ 40M] 3-3Linux的系统错误 │ └── [ 32M] 3-4目录和文件的更多操作 ├── 第4章 进程控制和进程同步/ │ ├── [ 64M] 4-1Linux的信号 │ ├── [ 25M] 4-2进程终止 │ ├── [ 36M] 4-3调用可执行程序 │ ├── [ 54M] 4-4创建进程 │ ├── [ 43M] 4-5僵尸进程 │ ├── [ 25M] 4-6多进程与信号 │ ├── [ 33M] 4-7共享内存 │ ├── [ 46M] 4-8循环队列 │ ├── [ 58M] 4-9信号量 │ ├── [ 15M] 4-10多进程的生产消费者模型 │ ├── [ 16M] 4-11pthread线程库 │ └── [7.6M] 4-12UNIX环境高级编程 ├── 第5章 网络服务器基石-网络编程与网络通讯原理/ │ ├── [1.7M] 5-1网络编程基础导学 │ ├── [ 59M] 5-2.第一个网络通讯程序 │ ├── [ 46M] 5-3基于Linux的文件操作 │ ├── [ 37M] 5-4socket函数详解 │ ├── [ 21M] 5-5主机字节序与网络字节序 │ ├── [ 83M] 5-6万恶的结构体 │ ├── [ 86M] 5-7封装socket客户端 │ ├── [ 35M] 5-8封装socket服务端 │ ├── [ 87M] 5-9实现文件传输功能 │ ├── [ 58M] 5-10多进程的服务端 │ ├── [ 86M] 5-11三次握手与四次挥手 │ └── [ 43M] 5-12TCP缓存 ├── 第6章 高并发的基石-I&O多路复用/ │ ├── [ 61M] 6-1IO多路复用-select模型(上) │ ├── [ 39M] 6-2IO多路复用-select模型(下) │ ├── [ 29M] 6-3IO多路复用-poll模型 │ ├── [ 46M] 6-4IO多路复用-epoll模型 │ ├── [ 46M] 6-5阻塞&非阻塞的IO │ ├── [ 79M] 6-6水平触和&边缘触发 │ └── [4.4M] 6-7epoll的原理 ├── 第7章 开始手把手带大家从0实现百万并发的Reactor服务器/ │ ├── [6.8M] 7-1从0实现百万并发的Reactor服务器导学 │ ├── [ 49M] 7-2优化epoll服务端程序,为封装做准备 │ ├── [ 25M] 7-3优化epoll服务端程序,为封装做准备 │ ├── [ 51M] 7-4把网络地址协议封装成InetAddress类 │ ├── [ 75M] 7-5把socket的库函数封装成Socket类 │ ├── [ 47M] 7-6把epoll的各种操作封装成Epoll类 │ ├── [ 36M] 7-7把与TCP连接通道封装成Channel类(上) │ ├── [ 95M] 7-8把与TCP连接通道封装成Channel类(中) │ └── [ 46M] 7-9把与TCP连接通道封装成Channel类(下) ├── 第8章 Reacor模式中的事件驱动机制核心原理/ │ ├── @www. │ ├── [ 52M] 8-1用C++11的function实现函数回调 │ ├── [ 19M] 8-2把事件循环封装成EventLoop类 │ ├── [ 28M] 8-3把服务端封装成TcpServer类 │ ├── [ 33M] 8-4把接受客户端连接封装成Acceptor类 │ ├── [ 23M] 8-5把TCP连接封装成Connection类 │ ├── [ 26M] 8-6在Channel类中回调Acceptor类的成员函数 │ └── [ 31M] 8-7在Acceptor类中回调TcpServer类的成员函数 ├── 第9章 来,先实现单线程的Reactor服务器的功能/ │ ├── [ 32M] 9-1用map容器管理Connection对象 │ ├── [ 33M] 9-2在Channel类中回调Connection类的成员函数 │ ├── [ 31M] 9-3在Connection类中回调TcpServer类的成员函数 │ ├── [ 50M] 9-4网络编程为什么需要缓冲区Buffer? │ ├── 【www.】 │ ├── [ 55M] 9-5封装缓冲区Buffer类 │ ├── [ 87M] 9-6使用接收缓冲区inputbuffer │ ├── [ 70M] 9-7使用发送缓冲区outputbuffer │ ├── [ 51M] 9-8优化回调函数 │ └── [ 86M] 9-9实现回显服务器EchoServer ├── 第10章 单线程不能发挥多核CPU的效率-线程池技术实现多线程的Reactor服务器/ │ ├── [ 23M] 10-1简单优化Buffer │ ├── [ 44M] 10-2封装线程池ThreadPool类 │ ├── [ 88M] 10-3多线程的主从Reactor模型 │ └── [ 53M] 10-4增加工作线程 ├── 第11章 优化Reactor服务器的种种细节/ │ ├── [ 43M] 11-1在多线程中如何管理资源? │ ├── [100M] 11-2用shared_ptr管理共享资源 │ ├── [132M] 11-3用unique_ptr管理自己的资源 │ ├── [ 43M] 11-4用eventfd实现事件通知 │ ├── [ 53M] 11-5异步唤醒事件循环(上) │ ├── [ 91M] 11-6异步唤醒事件循环(下) │ ├── [ 57M] 11-7性能优化-阻止浪费,清除空闲的TCP连接(上) │ ├── [ 62M] 11-8性能优化-阻止浪费,清除空闲的TCP连接(中) │ └── [156M] 11-9性能优化-阻止浪费,清除空闲的TCP连接(下) ├── 第12章 真金不怕火炼-在正式PC服务器测试,见证每秒百万并发/ │ ├── [ 88M] 12-1如何让多线程的网络服务程序体面的退出 │ ├── [ 70M] 12-2如何设计更高效的Buffer │ ├── [ 79M] 12-3性能测试-100万秒的吞吐量 │ └── [105M] 12-4如何基于Reactor服务器开发业务 └── 第13章 课程总结-有问题常来问答区,给你更多帮助。/ └── [7.2M] 13-1课程复盘 └── 资料代码/