# CppGuide
**Repository Path**: balloonwj/CppGuide
## Basic Information
- **Project Name**: CppGuide
- **Description**: 优质的C++后端开发进阶学习资料~
- **Primary Language**: C++
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 600
- **Forks**: 228
- **Created**: 2020-10-08
- **Last Updated**: 2026-09-15
## Categories & Tags
**Categories**: ebooks-manual
**Tags**: None
## README
此仓库是公众号【**CppGuide**】文章汇总,作者是张小方,clone或转发仓库文章时时请保留作者信息。
> CppGuide仓库配有专门的微信维护和交流群,加微信easy_coder备注“cppguide仓库”拉你进群。
在线阅读站点:**https://cppguide.cn**
在线阅读站点2:https://balloonwj.github.io/cpp-guide-web/
在线阅读站点3: http://balloonwj.gitee.io/cpp-guide-web/
> **如需下载该站点源码用于自己搭建站点,可以在【CppGuide】微信公众号后台回复关键字“站点下载”即可得到搭建本仓库的站点的全套源码。**

## Part I
* [C++必知必会的知识点](articles/C++必知必会的知识点/README.md)
* [如何成为一名合格的C/C++开发者?](articles/C++必知必会的知识点/如何成为一名合格的CC++开发者?.md)
* [不定参数函数实现var_arg系列的宏](articles/C++必知必会的知识点/不定参数函数实现var_arg系列的宏.md)
* [你一定要搞明白的C函数调用方式与栈原理](articles/C++必知必会的知识点/你一定要搞明白的C函数调用方式与栈原理.md)
* [深入理解C/C++中的指针](articles/C++必知必会的知识点/深入理解CC++中的指针.md)
* [详解C++11中的智能指针](articles/C++必知必会的知识点/详解C++11中的智能指针.md)
* [C++17结构化绑定](articles/C++必知必会的知识点/C++17结构化绑定.md)
* [C++必须掌握的pimpl惯用法](articles/C++必知必会的知识点/C++必须掌握的pimpl惯用法.md)
* [用Visual Studio调试Linux程序](articles/C++必知必会的知识点/用VisualStudio调试Linux程序.md)
* [如何使用Visual Studio管理和阅读开源项目代码](articles/C++必知必会的知识点/如何使用VisualStudio管理和阅读开源项目代码.md)
* [利用cmake工具生成Visual Studio工程文件](articles/C++必知必会的知识点/利用cmake工具生成VisualStudio工程文件.md)
* [多线程](articles/多线程/README.md)
* [后台C++开发你一定要知道的条件变量](articles/多线程/后台C++开发你一定要知道的条件变量.md)
* [整型变量赋值是原子操作吗?](articles/多线程/整型变量赋值是原子操作吗?.md)
* [网络编程](articles/网络编程/README.md)
* [bind 函数重难点解析](articles/网络编程/bind函数重难点解析.md)
* [connect 函数在阻塞和非阻塞模式下的行为](articles/网络编程/connect函数在阻塞和非阻塞模式下的行为.md)
* [select 函数重难点解析](articles/网络编程/select函数重难点解析.md)
* [Linux epoll 模型(含LT 模式和 ET 模式详解)](articles/网络编程/Linuxepoll模型(含LT模式和ET模式详解).md)
* [socket 的阻塞模式和非阻塞模式](articles/网络编程/socket的阻塞模式和非阻塞模式.md)
* [非阻塞模式下 send 和 recv 函数的返回值](articles/网络编程/非阻塞模式下send和recv函数的返回值.md)
* [服务器开发通信协议设计介绍](articles/网络编程/服务器开发通信协议设计介绍.md)
* [TCP 协议如何解决粘包、半包问题](articles/网络编程/TCP协议如何解决粘包、半包问题.md)
* [网络通信中收发数据的正确姿势](articles/网络编程/网络通信中收发数据的正确姿势.md)
* [服务器端发数据时,如果对端一直不收,怎么办?](articles/网络编程/服务器端发数据时,如果对端一直不收,怎么办?.md)
* [程序员必知必会的网络命令](articles/程序员必知必会的网络命令/README.md)
* [利用telnet命令发电子邮件](articles/程序员必知必会的网络命令/利用telnet命令发电子邮件.md)
* [做Java或者C++开发都应该知道的lsof命令](articles/程序员必知必会的网络命令/做Java或者C++开发都应该知道的lsof命令.md)
* [Linux网络故障排查的瑞士军刀nc命令](articles/程序员必知必会的网络命令/Linux网络故障排查的瑞士军刀.md)
* [Linux tcpdump使用详解](articles/程序员必知必会的网络命令/Linuxtcpdump使用介绍.md)
* [从抓包的角度分析connect函数的连接过程](articles/程序员必知必会的网络命令/从抓包的角度分析connect函数的连接过程.md)
* [服务器开发中网络数据分析与故障排查经验漫谈](articles/程序员必知必会的网络命令/服务器开发中网络数据分析与故障排查经验漫谈.md)
## Part II
* [高性能服务器框架设计](articles/高性能服务器框架设计/README.md)
* [主线程与工作线程的分工](articles/高性能服务器框架设计/主线程与工作线程的分工.md)
* [Reactor模式](articles/高性能服务器框架设计/Reactor模式.md)
* [实例:一个服务器程序的架构介绍](articles/高性能服务器框架设计/实例:一个服务器程序的架构介绍.md)
* [错误码系统的设计](articles/高性能服务器框架设计/错误码系统的设计.md)
* [日志系统的设计](articles/高性能服务器框架设计/日志系统的设计.md)
* [如何设计断线自动重连机制](articles/高性能服务器框架设计/如何设计断线自动重连机制.md)
* [心跳包机制设计详解](articles/高性能服务器框架设计/心跳包机制设计详解.md)
* [业务数据处理一定要单独开线程吗](articles/高性能服务器框架设计/业务数据处理一定要单独开线程吗.md)
* [C++ 高性能服务器网络框架设计细节](articles/高性能服务器框架设计/C++高性能服务器网络框架设计细节.md)
* [服务器开发案例实战](articles/服务器开发案例实战/README.md)
* [从零实现一个http服务器](articles/服务器开发案例实战/从零实现一个http服务器.md)
* [从零实现一款12306刷票软件](articles/服务器开发案例实战/从零实现一款12306刷票软件.md)
* [从零实现一个邮件收发客户端](articles/服务器开发案例实战/从零实现一个邮件收发客户端.md)
* [从零开发一个WebSocket服务器](articles/服务器开发案例实战/从零开发一个WebSocket服务器.md)
* [从零学习开源项目系列(一)从一款多人联机实时对战游戏开始](articles/服务器开发案例实战/1从一款多人联机实时对战游戏开始.md)
* [从零学习开源项目系列(二)最后一战概况](articles/服务器开发案例实战/2最后一战概况.md)
* [从零学习开源项目系列(三) CSBattleMgr服务源码研究](articles/服务器开发案例实战/3CSBattleMgr服务源码研究.md)
* [从零学习开源项目系列(四)LogServer源码探究](articles/服务器开发案例实战/4LogServer源码探究.md)
## Part III
* [TeamTalk IM源码分析](articles/TeamTalk源码解析/index.md)
* [01 TeamTalk介绍](articles/TeamTalk源码解析/01TeamTalk介绍.md)
* [02 服务器端的程序的编译与部署](articles/TeamTalk源码解析/02服务器端的程序的编译与部署.md)
* [03 服务器端的程序架构介绍](articles/TeamTalk源码解析/03服务器端的程序架构介绍.md)
* [04 服务器端db_proxy_server源码分析](articles/TeamTalk源码解析/04服务器端db_proxy_server源码分析.md)
* [05 服务器端msg_server源码分析](articles/TeamTalk源码解析/05服务器端msg_server源码分析.md)
* [06 服务器端login_server源码分析](articles/TeamTalk源码解析/06服务器端login_server源码分析.md)
* [07 服务器端msfs源码分析](articles/TeamTalk源码解析/07服务器端msfs源码分析.md)
* [08 服务器端file_server源码分析](articles/TeamTalk源码解析/08服务器端file_server源码分析.md)
* [09 服务器端route_server源码分析](articles/TeamTalk源码解析/09服务器端route_server源码分析.md)
* [10 开放一个TeamTalk测试服务器地址和几个测试账号](articles/TeamTalk源码解析/10开放一个TeamTalk测试服务器地址和几个测试账号.md)
* [11 pc客户端源码分析](articles/TeamTalk源码解析/11pc客户端源码分析.md)
[libevent源码深度剖析](articles/libevent源码深度剖析/index.md)
* [libevent源码深度剖析01](articles/libevent源码深度剖析/libevent源码深度剖析01.md)
* [libevent源码深度剖析02](articles/libevent源码深度剖析/libevent源码深度剖析02.md)
* [libevent源码深度剖析03](articles/libevent源码深度剖析/libevent源码深度剖析03.md)
* [libevent源码深度剖析04](articles/libevent源码深度剖析/libevent源码深度剖析04.md)
* [libevent源码深度剖析05](articles/libevent源码深度剖析/libevent源码深度剖析05.md)
* [libevent源码深度剖析06](articles/libevent源码深度剖析/libevent源码深度剖析06.md)
* [libevent源码深度剖析07](articles/libevent源码深度剖析/libevent源码深度剖析07.md)
* [libevent源码深度剖析08](articles/libevent源码深度剖析/libevent源码深度剖析08.md)
* [libevent源码深度剖析09](articles/libevent源码深度剖析/libevent源码深度剖析09.md)
* [libevent源码深度剖析10](articles/libevent源码深度剖析/libevent源码深度剖析10.md)
* [libevent源码深度剖析11](articles/libevent源码深度剖析/libevent源码深度剖析11.md)
* [libevent源码深度剖析12](articles/libevent源码深度剖析/libevent源码深度剖析12.md)
* [libevent源码深度剖析13](articles/libevent源码深度剖析/libevent源码深度剖析13.md)
[leveldb源码分析](articles/leveldb源码分析/README.md)
* [leveldb源码分析1](articles/leveldb源码分析/leveldb源码分析1.md)
* [leveldb源码分析2](articles/leveldb源码分析/leveldb源码分析2.md)
* [leveldb源码分析3](articles/leveldb源码分析/leveldb源码分析3.md)
* [leveldb源码分析4](articles/leveldb源码分析/leveldb源码分析4.md)
* [leveldb源码分析5](articles/leveldb源码分析/leveldb源码分析5.md)
* [leveldb源码分析6](articles/leveldb源码分析/leveldb源码分析6.md)
* [leveldb源码分析7](articles/leveldb源码分析/leveldb源码分析7.md)
* [leveldb源码分析8](articles/leveldb源码分析/leveldb源码分析8.md)
* [leveldb源码分析9](articles/leveldb源码分析/leveldb源码分析9.md)
* [leveldb源码分析10](articles/leveldb源码分析/leveldb源码分析10.md)
* [leveldb源码分析11](articles/leveldb源码分析/leveldb源码分析11.md)
* [leveldb源码分析12](articles/leveldb源码分析/leveldb源码分析12.md)
* [leveldb源码分析13](articles/leveldb源码分析/leveldb源码分析13.md)
* [leveldb源码分析14](articles/leveldb源码分析/leveldb源码分析14.md)
* [leveldb源码分析15](articles/leveldb源码分析/leveldb源码分析15.md)
* [leveldb源码分析16](articles/leveldb源码分析/leveldb源码分析16.md)
* [leveldb源码分析17](articles/leveldb源码分析/leveldb源码分析17.md)
* [leveldb源码分析18](articles/leveldb源码分析/leveldb源码分析18.md)
* [leveldb源码分析19](articles/leveldb源码分析/leveldb源码分析19.md)
* [leveldb源码分析20](articles/leveldb源码分析/leveldb源码分析20.md)
* [leveldb源码分析21](articles/leveldb源码分析/leveldb源码分析21.md)
* [leveldb源码分析22](articles/leveldb源码分析/leveldb源码分析22.md)
[Memcached源码分析](articles/Memcached源码分析/README.md)
* [00 服务器资源调整](articles/Memcached源码分析/00服务器资源调整.md)
* [01 初始化参数解析](articles/Memcached源码分析/01初始化参数解析.md)
* [02 网络监听的建立](articles/Memcached源码分析/02网络监听的建立.md)
* [03 网络连接建立](articles/Memcached源码分析/03网络连接建立.md)
* [04 内存初始化](articles/Memcached源码分析/04内存初始化.md)
* [05 资源初始化](articles/Memcached源码分析/05资源初始化.md)
* [06 get过程](articles/Memcached源码分析/06get过程.md)
* [07 cas属性](articles/Memcached源码分析/07cas属性.md)
* [08 内存池](articles/Memcached源码分析/08内存池.md)
* [09 连接队列](articles/Memcached源码分析/09连接队列.md)
* [10 Hash表操作](articles/Memcached源码分析/10Hash表操作.md)
* [12 set操作](articles/Memcached源码分析/12set操作.md)
* [13 do_item_alloc操作](articles/Memcached源码分析/13do_item_alloc操作.md)
* [14 item结构](articles/Memcached源码分析/14item结构.md)
* [15 Hash表扩容](articles/Memcached源码分析/15Hash表扩容.md)
* [16 线程交互](articles/Memcached源码分析/16线程交互.md)
* [17 状态机](articles/Memcached源码分析/17状态机.md)
[游戏开发专题](articles/游戏开发专题/README.md)
* [1 游戏服务器开发的基本体系与服务器端开发的一些建议](articles/游戏开发专题/1游戏服务器开发的基本体系与服务器端开发的一些建议.md)
* [2 网络游戏服务器开发框架设计介绍](articles/游戏开发专题/2网络游戏服务器开发框架设计介绍.md)
* [3 游戏后端开发需要掌握的知识](articles/游戏开发专题/3游戏后端开发需要掌握的知识.md)
* [4 关于游戏服务端架构的整理](articles/游戏开发专题/4关于游戏服务端架构的整理.md)
* [5 各类游戏对应的服务端架构](articles/游戏开发专题/5各类游戏对应的服务端架构.md)
* [6 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则](articles/游戏开发专题/6从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则.md)
* [7 QQ游戏百万人同时在线服务器架构实现](articles/游戏开发专题/7QQ游戏百万人同时在线服务器架构实现.md)
* [8 大型多人在线游戏服务器架构设计](articles/游戏开发专题/8大型多人在线游戏服务器架构设计.md)
* [9 百万用户级游戏服务器架构设计](articles/游戏开发专题/9百万用户级游戏服务器架构设计.md)
* [10 十万在线的WebGame的数据库设计思路](articles/游戏开发专题/10十万在线的WebGame的数据库设计思路.md)
* [11 一种高性能网络游戏服务器架构设计](articles/游戏开发专题/11一种高性能网络游戏服务器架构设计.md)
* [12 经典游戏服务器端架构概述](articles/游戏开发专题/12经典游戏服务器端架构概述.md)
* [13 游戏跨服架构进化之路](articles/游戏开发专题/13游戏跨服架构进化之路.md)
Linux内核专题——心中的内核
- [0. 专栏说明](https://cppguide.cn/pages/the-kernel-in-the-mind-contents/)
- [1. 内核不是进程,而是系统](https://cppguide.cn/pages/the-kernel-in-the-mind-ch01/)
- [2. 为进程服务:内核的首要职责](https://cppguide.cn/pages/the-kernel-in-the-mind-ch02/)
- [3. 代码之前的概念图](https://cppguide.cn/pages/the-kernel-in-the-mind-ch03/)
- [4. 作为分层系统的内核:虚拟、映射、隔离、控制](https://cppguide.cn/pages/the-kernel-in-the-mind-ch04/)
- [5. 单体形式,协同行为:真正的内核模型](https://cppguide.cn/pages/the-kernel-in-the-mind-ch05/)
- [6. 内核对象揭示设计 —— 函数仅执行设计](https://cppguide.cn/pages/the-kernel-in-the-mind-ch06/)
- [7. 无冲突的代码 —— 内核如何在并发风暴中保持安全](https://cppguide.cn/pages/the-kernel-in-the-mind-ch07/)
- [8. 间接的力量 —— 一个内核如何为所有进程服务](https://cppguide.cn/pages/the-kernel-in-the-mind-ch08/)
- [9. 内核的设备模型:硬件如何成为 /dev](https://cppguide.cn/pages/the-kernel-in-the-mind-ch09/)
- [10. 内核如何看待内存的:不是映射,而是责任](https://cppguide.cn/pages/the-kernel-in-the-mind-ch10/)
- [11. 内存不是一个地方,而是一个系统](https://cppguide.cn/pages/the-kernel-in-the-mind-ch11/)
- [12. 内核始终存在 —— 你知道它在哪里吗?](https://cppguide.cn/pages/the-kernel-in-the-mind-ch12/)
- [13. 不只是代码执行:内核实际执行的内容](https://cppguide.cn/pages/the-kernel-in-the-mind-ch13/)
- [14. boot结束之处:内核开始之处](https://cppguide.cn/pages/the-kernel-in-the-mind-ch14/)
- [15. 从 vmlinuz 到 eBPF:Linux 内核内部实际运行的内容](https://cppguide.cn/pages/the-kernel-in-the-mind-ch15/)
- [16. 无状态 CPU,有状态内核:执行如何被协调](https://cppguide.cn/pages/the-kernel-in-the-mind-ch16/)
- [17. 内核构建的内容 —— 逐层构建](https://cppguide.cn/pages/the-kernel-in-the-mind-ch17/)
- [18. 内核执行路径:在哪里运行,以及为什么重要](https://cppguide.cn/pages/the-kernel-in-the-mind-ch18/)
- [19. 追踪执行的模板](https://cppguide.cn/pages/the-kernel-in-the-mind-ch19/)
- [20. 中断不是干扰,而是设计](https://cppguide.cn/pages/the-kernel-in-the-mind-ch20/)
- [21. 执行是逻辑的,位置是物理的](https://cppguide.cn/pages/the-kernel-in-the-mind-ch21/)
- [22. 不仅仅是一段代码:每个内核路径内部的过程](https://cppguide.cn/pages/the-kernel-in-the-mind-ch22/)
- [23. 内核如何自我通信 —— 内部通信工具](https://cppguide.cn/pages/the-kernel-in-the-mind-ch23/)
- [24. 内核模块彼此了解:仅通过导出的符号](https://cppguide.cn/pages/the-kernel-in-the-mind-ch24/)
- [25. 搭建组件之间的桥梁](https://cppguide.cn/pages/the-kernel-in-the-mind-ch25/)
- [26. libc 之外:用户空间如何真正与内核对话](https://cppguide.cn/pages/the-kernel-in-the-mind-ch26/)
- [27. CPU 不移动数据 —— 但没有 CPU,什么都无法移动](https://cppguide.cn/pages/the-kernel-in-the-mind-ch27/)
- [28. 时间与精度:内核眼中的 CPU 执行](https://cppguide.cn/pages/the-kernel-in-the-mind-ch28/)
- [29. 内核在虚拟化中的角色:理解 KVM](https://cppguide.cn/pages/the-kernel-in-the-mind-ch29/)
- [30. 两个世界,一个 CPU:虚拟化中的 root 操作和非 root 操作](https://cppguide.cn/pages/the-kernel-in-the-mind-ch30/)
- [31. 内核与 VirtIO:无需模拟的网络驱动程序](https://cppguide.cn/pages/the-kernel-in-the-mind-ch31/)
- [32. 一切仍由操作系统掌控](https://cppguide.cn/pages/the-kernel-in-the-mind-ch32/)
- [33. 对齐即理解](https://cppguide.cn/pages/the-kernel-in-the-mind-ch33/)
- [34. 如果内核不是由 Linus 创建和维护的,会怎样?](https://cppguide.cn/pages/the-kernel-in-the-mind-ch34/)
- [35. 配置并非定制,而是内核的身份标识](https://cppguide.cn/pages/the-kernel-in-the-mind-ch35/)
- [36. 内存生命周期和塑造它的角色](https://cppguide.cn/pages/the-kernel-in-the-mind-ch36/)
- [37. 中断如何在不变中演变](https://cppguide.cn/pages/the-kernel-in-the-mind-ch37/)
- [38. 并发之外的同步](https://cppguide.cn/pages/the-kernel-in-the-mind-ch38/)
- [39. 这从来不是关于炒作,而是关于硬件](https://cppguide.cn/pages/the-kernel-in-the-mind-ch39/)
- [40. 从意图到 I/O:内核如何看待文件、磁盘和设备](https://cppguide.cn/pages/the-kernel-in-the-mind-ch40/)
- [41. 心中的内核 —— 效率至上而非历史遗留原因:为什么内核仍用 C 语言开发](https://cppguide.cn/pages/the-kernel-in-the-mind-ch41/)
大型专栏:Linux网络编程从应用层到内核实现源码详解
[大型专栏:Linux网络编程从应用层到内核实现源码详解](https://mp.weixin.qq.com/s/gUfKdfRwwa8bxxtFJ8gXQw)
[第 02 篇 · 工具箱:读源码的工具,和看内核的工具](https://mp.weixin.qq.com/s/Df6u2vmd8DReAZOFk-xARg)
[第 03 篇 · 三层派发总纲:socket 函数如何找到它的内核实现](https://mp.weixin.qq.com/s/W2A3eAdv5K7jcKfZ8fQCCw)
[第 04 篇 · 读内核网络代码的最小 C 知识](https://mp.weixin.qq.com/s/JlfWcYkYNRSYdkKRttpTQg)
[第 05 篇 · 谁在和你抢同一个 socket:lock_sock() 到底锁了什么](https://mp.weixin.qq.com/s/9lRYWZpxTa_L1BD_eInE0w)
[第 06 篇 · sk_buff(上):一块内存如何同时是帧、是包、是段](https://mp.weixin.qq.com/s/cekkTdLKkMONYowuXrC_Rg)
[第 07 篇 · sk_buff(下):非线性区、克隆与引用计数](https://mp.weixin.qq.com/s/0w1sIBhQ3SJ6ZRJZwWBU2g)
[第 08 篇 · skb 的分配与回收:一个包的内存从哪来,又还到哪去](https://mp.weixin.qq.com/s/btKALhXKDZ5NpidnK0w_Rg)
[第 09 篇 · struct socket 与 struct sock:为什么一个连接要两个结构体](https://mp.weixin.qq.com/s/oT2hl1vlhNNZIFgx0t2rqA)
[第 10 篇 · sk 的队列与内存记账:SO_SNDBUF 到底限制了什么](https://mp.weixin.qq.com/s/BiiMGnFEW7R5vhSn5ExQyA)
[第 11 篇 · net_device 与多队列模型:网卡在内核里长什么样](https://mp.weixin.qq.com/s/0QSaYQ5V3w7XfbAz3BdDQQ)
[第 12 篇 · network namespace:struct net 为什么无处不在](https://mp.weixin.qq.com/s/PACx24yaUPi4JfK85MoDiQ)
[第 13 篇 · socket() :一个 fd 的诞生](https://mp.weixin.qq.com/s/b8pDZF5Kn4eVGKxZ4CH2GQ)
[第 14 篇 · bind():端口哈希表的秘密](https://mp.weixin.qq.com/s/rRSAc0fRdd0UNb0AszDugA)
[第 15 篇 · listen():两个队列的真相](https://mp.weixin.qq.com/s/KENlMbXn7693mRf-IkDFTg)
[第 16 篇 · connect():三次握手的发起端](https://mp.weixin.qq.com/s/-BYKo2QwNTZ-nh2sRVPnEw)
[第 17 篇 · accept():从全连接队列取一个 sk](https://mp.weixin.qq.com/s/l9xMoG4t87Nc0tDbFNgUAw)
[第 18 篇 · 一次连接的完整生命周期:从第一个 SYN 到最后一个 FIN](https://mp.weixin.qq.com/s/yt3RKU13Ck0AKMfokvYzhg)
[第 19 篇 · send 家族:msghdr 与 iov_iter](https://mp.weixin.qq.com/s/yPZSPcERt0bS1RkfJZyDoA)
[第 20 篇 · recv 家族:从接收队列拷贝出来](https://mp.weixin.qq.com/s/Vpxp-gMzOS8NAQYULdY_GQ)
[第 21 篇 · 阻塞与非阻塞:同一段代码,只差一个 timeo](https://mp.weixin.qq.com/s/TihSS9LFnH4MsPWcAgEL8g)
[第 22 篇 · setsockopt 的一生:level 派发与 sockptr_t](https://mp.weixin.qq.com/s/d_Gs0Ou8Ei8QC75XBdzyTQ)
[第 23 篇 · 选项 vs sysctl vs cgroup:谁说了算](https://mp.weixin.qq.com/s/VE2DWH8g-swlTFipj5oc-g)
[第 24 篇 · cmsg:被忽略的另一半接口](https://mp.weixin.qq.com/s/kOPvVS8m_eb3hyPSkuxMWw)
[第 25 篇 · select/poll/epoll:唤醒链是怎么接起来的](https://mp.weixin.qq.com/s/5Li0shMZaJYM6L8BAz8U9g)
[第 26 篇 · epoll 内部:一棵红黑树、一条就绪链、一次 ep_poll()](https://mp.weixin.qq.com/s/R5r-AX-NTS5Pdq5R0LsgmQ)
[第 27 篇 · close() 与 shutdown():语义差异的内核根源](https://mp.weixin.qq.com/s/sT_0OrA3_u3ycGhFUmaGHA)
[第 28 篇 · sendfile/splice/mmap:绕开用户态缓冲区](https://mp.weixin.qq.com/s/jRWE3ewhOQMwQVv12f7h1A)
[第 29 篇 · 同步与异步:SIGIO 那一代,和 io_uring 那一代](https://mp.weixin.qq.com/s/kEiANd5h7b6iN-6i5akuCQ)
[第 30 篇 · tcp_sendmsg_locked:用户数据如何变成 skb](https://mp.weixin.qq.com/s/A4LcfZRNOqW4iNt8Clj3Ww)
[第 31 篇 · tcp_push 与 Nagle:数据什么时候真的发出去](https://mp.weixin.qq.com/s/iG7WZDfO_xrEni9IvnWo8A)
[第 32 篇 · tcp_transmit_skb:TCP 头是怎么拼出来的](https://mp.weixin.qq.com/s/wh0UR7rtQtcfw3HU6JyOGQ)
[第 33 篇 · 八个标志位,各自由谁置上](https://mp.weixin.qq.com/s/URW8HnUfCrUSuYBxervhsQ)
[第 34 篇 · 滑动窗口:四个序号,两个窗口](https://mp.weixin.qq.com/s/7xfoVW20plft9muhg6JDeA)
[第 35 篇 · TSO / GSO:一个 skb 怎么变成多个报文](https://mp.weixin.qq.com/s/XBWJfRWsEoraDd7QG6-9qQ)
[第 36 篇 · ip_queue_xmit:路由查找与 IP 头组装](https://mp.weixin.qq.com/s/fSJsJ0EcsWe6QFvH6-w8ZA)
[第 37 篇 · 拥塞控制框架:tcp_congestion_ops 的回调表](https://mp.weixin.qq.com/s/ecC6qaD7-tMpsHJQavfNWQ)
[第 38 篇 · 重传定时器与 RTO:超时时间怎么算出来,超时之后做什么](https://mp.weixin.qq.com/s/QUjKesWtI_jHvrjMnALNQg)
[第 39 篇 · 快速重传与尾部丢包探测:不等 RTO 就判出丢包的两条路](https://mp.weixin.qq.com/s/rENVUJ4XQzdkLxGEKIJstg)
[第 40 篇 · RACK:按发送时间判定丢包](https://mp.weixin.qq.com/s/1pdUGBxuuU1wWjlZhAJhNw)
[第 41 篇 · undo:判错之后怎么撤销这次拥塞窗口下调](https://mp.weixin.qq.com/s/408UMlWyXUnkI7nQvBgq9g)
[第 42 篇 · 邻居子系统、ARP 与 __dev_queue_xmit](https://mp.weixin.qq.com/s/Y74AzQOjgPLJUlcHVyo5VA)
[第 43 篇 · 从硬中断到软中断:napi_schedule](https://mp.weixin.qq.com/s/vpokv_NPbzdqFmh0Qdkzzw)
[第 44 篇 · net_rx_action:软中断主循环与 budget](https://mp.weixin.qq.com/s/y-Jh5_tqyTmF5nfEvTwkzg)
[第 45 篇 · threaded NAPI、napi_config 与 busy_poll](https://mp.weixin.qq.com/s/_cESBpLEDaWynp9fxQfwOQ)
[第 46 篇 · 驱动 poll 内部:从 DMA 描述符环到 skb](https://mp.weixin.qq.com/s/-QZHfVnOW0sCyjWLNkd9Rw)
[第 47 篇 · GRO:把小报文粘成大报文](https://mp.weixin.qq.com/s/wQ4mpGzPjpOd_ixgBZbKjQ)
[第 48 篇 · __netif_receive_skb_core:packet_type 分发与 RPS/RFS](https://mp.weixin.qq.com/s/93DOT1Ijia2PXlMHucZpCA)
[第 49 篇 · ip_rcv到 ip_local_deliver:IP 层收包的三道关](https://mp.weixin.qq.com/s/0uwit_sixWjNOCGR_sK6bw)
[第 50 篇 ·tcp_v4_do_rcv:socket 查找、backlog 与 prequeue 的消亡](https://mp.weixin.qq.com/s/sxIxh-m1WqDDxuoIHvmt4Q)
[第 51 篇 · tcp_rcv_established:快速路径为什么快](https://mp.weixin.qq.com/s/kqnIP_OHhnDK3EkFahM7MA)
[第 52 篇 · tcp_ack 与 SACK 处理:收到一个 ACK,发送方更新哪些状态](https://mp.weixin.qq.com/s/3dtSjkOQ3Gv9NYHRcboj4Q)
[第 53 篇 · 乱序队列:一棵红黑树,进树、出树与内存不够时先丢谁](https://mp.weixin.qq.com/s/F5pCl2baHh2wDoKISapQ9w)
[第 54 篇 · 延迟 ACK、QUICKACK 与 ACK 压缩](https://mp.weixin.qq.com/s/KyWSnUtezX2pntpTA4ibdg)
[第 55 篇 · 状态机:握手、挥手、TIME_WAIT 与保活](https://mp.weixin.qq.com/s/JuKMHC8JZeGN3bn_gBfWHg)
[第 56 篇 · CUBIC 与 BBR 源码对读](https://mp.weixin.qq.com/s/MQlYVIaSFBIH31eNDUdbKg)
[第 57 篇 · 接收窗口与内存自动调优](https://mp.weixin.qq.com/s/Y0nKbm3gkIZ6hnOd1i8gng)
[第 58 篇 · 路由子系统与 dst_entry 的生命周期](https://mp.weixin.qq.com/s/8NYC8PM-3OoRPtRLwiZ_hQ)
[第 59 篇 · FIB trie、策略路由与 nexthop 对象](https://mp.weixin.qq.com/s/tXVcNnq9zPPBfTWth2BEYA)
[第 60 篇 · netfilter:hook 点如何嵌进收发路径](https://mp.weixin.qq.com/s/UEEEYigHIcbiXfknatPcKQ)
[第 61 篇 · TC 与 qdisc:pfifo_fast、fq、fq_codel](https://mp.weixin.qq.com/s/nocN_IkVl9B4DtTJDpn_ug)
[第 62 篇 · 桥接与 VLAN:帧进桥之后怎么查表转发,VLAN 标签在哪一步加减](https://mp.weixin.qq.com/s/MZ7IJaRrQsIXxn2Qh7pqXw)
[第 63 篇 · 隧道与封装:一个帧被 VXLAN 套上 50 字节,再原样拆开的全程](https://mp.weixin.qq.com/s/P_0Ewn74mU5LzQYOixsomw)
[第 64 篇 · XDP:在 skb 诞生之前拦截](https://mp.weixin.qq.com/s/ilFBP2johjzSiBqj8mbA7A)
[第 65 篇 · eBPF 网络钩子全景](https://mp.weixin.qq.com/s/a0PqGzAGKI46zeBE4jmffQ)
[第 66 篇 · 硬件卸载:NETIF_F_*如何改变代码路径](https://mp.weixin.qq.com/s/plm8Ec9l7oHt_bk5l5C6tw)
[第 67 篇 · BIG TCP:64KB 这道上限卡在哪,内核用什么办法绕过去](https://mp.weixin.qq.com/s/Ppsu5kuXNXf_nx9oVvlqFA)
[第 68 篇 · devmem TCP:数据直落 GPU 内存](https://mp.weixin.qq.com/s/Af7LJ0Etk_878IASItdiQg)
[第 69 篇 · io_uring 零拷贝收发](https://mp.weixin.qq.com/s/x04oOolIHbQdIX4ArXokKQ)
[第 70 篇 · MPTCP 与 PSP:新协议如何嵌进旧框架](https://mp.weixin.qq.com/s/MUGA4UQZTJIQVzH2OVq4DQ)
[第 71 篇 · dropreason 与观测工具箱:内核怎么给出丢包原因码,你又怎么读到它](https://mp.weixin.qq.com/s/9eSt9j3fhIJoAC8w8Pnblw)
[第 72 篇 · 性能排查实战:四个现场案例,以及怎么把这套方法用到你自己的内核上](https://mp.weixin.qq.com/s/mnZYNkfnxWs8UhWOy53Fog)
## Part IV
* [程序员面试题精讲](articles/程序员面试题精讲/README.md)
* [腾讯后台开发实习生技能要求](articles/程序员面试题精讲/腾讯后台开发实习生技能要求.md)
* [聊聊如何拿大厂的 offer](articles/程序员面试题精讲/聊聊如何拿大厂的offer.md)
* [网络通信题目集锦](articles/程序员面试题精讲/网络通信题目集锦.md)
* [我面试后端开发经理的经历](articles/程序员面试题精讲/我面试后端开发经理的经历.md)
* [Linux C/C++后端开发面试问哪些问题](articles/程序员面试题精讲/LinuxCC++后端开发面试问哪些问题.md)
* [职业规划](articles/职业规划/README.md)
* [给工作 4 年迷茫的程序员们的一点建议](articles/职业规划/给工作4年迷茫的程序员们的一点建议.md)
* [聊聊技术人员的常见的职业问题](articles/职业规划/聊聊技术人员的常见的职业问题.md)
* [写给那些傻傻想做服务器开发的朋友](articles/职业规划/写给那些傻傻想做服务器开发的朋友.md)
* [自我提升与开源代码](articles/自我提升与开源代码/README.md)
* [2020 年好好读一读开源代码吧](articles/自我提升与开源代码/2020年好好读一读开源代码吧.md)
* [后端开发相关的书籍](articles/后端开发相关的书籍/README.md)
* [后台开发应该读的书](articles/后端开发相关的书籍/后台开发应该读的书.md)
* [程序员的简历](articles/程序员的简历/README.md)
* [程序员如何写简历](articles/程序员的简历/程序员如何写简历.md)
* [程序员的薪资与年终奖那些事儿](articles/程序员的薪资与年终奖那些事儿/README.md)
* [技术面试与HR谈薪资技巧](articles/程序员的薪资与年终奖那些事儿/技术面试与HR谈薪资技巧.md)
* [聊一聊程序员如何增加收入](articles/程序员的薪资与年终奖那些事儿/聊一聊程序员如何增加收入.md)
* [谈一谈年终奖](articles/程序员的薪资与年终奖那些事儿/谈一谈年终奖.md)
* [程序员的烦心事](articles/程序员的烦心事/README.md)
* [拒绝了一家公司的offer后,他们的副总和hr总监同时打电话来询问拒绝原因并极力要求加入,我该不该去?](articles/程序员的烦心事/拒绝了一家公司的offer后,他们的副总和hr总监同时打电话来询问拒绝原因并极力要求加入,我该不该去?.md)
* [我是一名程序员,结婚时女友要求我用两年的工资作为彩礼,我该不该答应?](articles/程序员的烦心事/我是一名程序员,结婚时女友要求我用两年的工资作为彩礼,我该不该答应?.md)
* [作者的故事](articles/作者的故事/README.md)
* [我的 2019](articles/作者的故事/我的2019.md)
* [我是如何年薪五十万的](articles/作者的故事/我是如何年薪五十万的.md)
## 贡献者
> 你也可以给该仓库提交修改内容,如果你的 PULL Requeset 被采纳,你的名字将会出现在贡献者列表中。
> 如果您在阅读上述文章的过程中有任何问题或者建议,可以加本仓库微信交流群交流,可以先微信 cppxiaofang,备注“CppGuide”,备注不对不加哦。
> 仓库中部分文章来源于网络,侵权请联系删除。
> 本仓库备份QQ交流群:169315117
## 捐赠与支持
如果你觉得本仓库对你有帮助,想可以请小方喝杯咖啡,扫描下面的任一二维码捐赠即可。


Good Luck and Enjoy it!