此仓库是公众号【**CppGuide**】文章汇总，作者是张小方，clone或转发仓库文章时时请保留作者信息。

> CppGuide仓库配有专门的微信维护和交流群，加微信easy_coder备注“cppguide仓库”拉你进群。

<font style="color:red;font-size:15"> 在线阅读站点：**https://cppguide.cn**</font>

在线阅读站点2：https://balloonwj.github.io/cpp-guide-web/

在线阅读站点3: http://balloonwj.gitee.io/cpp-guide-web/

> **如需下载该站点源码用于自己搭建站点，可以在【CppGuide】微信公众号后台回复关键字“站点下载”即可得到搭建本仓库的站点的全套源码。**



![](articles/cppguide-wechat.png)

## 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/)

## 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)
    

## 贡献者

<a href="https://github.com/balloonwj/CppGuide/graphs/contributors">
  <img src="https://contrib.rocks/image?repo=balloonwj/CppGuide" />
</a>

> 你也可以给该仓库提交修改内容，如果你的 PULL Requeset 被采纳，你的名字将会出现在贡献者列表中。

> 如果您在阅读上述文章的过程中有任何问题或者建议，可以加本仓库微信交流群交流，可以先微信 cppxiaofang，备注“CppGuide”，备注不对不加哦。

> 仓库中部分文章来源于网络，侵权请联系删除。

> 本仓库备份QQ交流群：169315117

## 捐赠与支持

如果你觉得本仓库对你有帮助，想可以请小方喝杯咖啡，扫描下面的任一二维码捐赠即可。

![](articles/wechat_pay.png)
![](articles/zfb_pay.png)



Good Luck and Enjoy it!

