此仓库是公众号【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】微信公众号后台回复关键字“站点下载”即可得到搭建本仓库的站点的全套源码。
- libevent源码深度剖析01
- libevent源码深度剖析02
- libevent源码深度剖析03
- libevent源码深度剖析04
- libevent源码深度剖析05
- libevent源码深度剖析06
- libevent源码深度剖析07
- libevent源码深度剖析08
- libevent源码深度剖析09
- libevent源码深度剖析10
- libevent源码深度剖析11
- libevent源码深度剖析12
- libevent源码深度剖析13
- leveldb源码分析1
- leveldb源码分析2
- leveldb源码分析3
- leveldb源码分析4
- leveldb源码分析5
- leveldb源码分析6
- leveldb源码分析7
- leveldb源码分析8
- leveldb源码分析9
- leveldb源码分析10
- leveldb源码分析11
- leveldb源码分析12
- leveldb源码分析13
- leveldb源码分析14
- leveldb源码分析15
- leveldb源码分析16
- leveldb源码分析17
- leveldb源码分析18
- leveldb源码分析19
- leveldb源码分析20
- leveldb源码分析21
- leveldb源码分析22
- 00 服务器资源调整
- 01 初始化参数解析
- 02 网络监听的建立
- 03 网络连接建立
- 04 内存初始化
- 05 资源初始化
- 06 get过程
- 07 cas属性
- 08 内存池
- 09 连接队列
- 10 Hash表操作
- 12 set操作
- 13 do_item_alloc操作
- 14 item结构
- 15 Hash表扩容
- 16 线程交互
- 17 状态机
- 1 游戏服务器开发的基本体系与服务器端开发的一些建议
- 2 网络游戏服务器开发框架设计介绍
- 3 游戏后端开发需要掌握的知识
- 4 关于游戏服务端架构的整理
- 5 各类游戏对应的服务端架构
- 6 从腾讯QQgame高性能服务器集群架构看“分而治之”与“自治”等分布式架构设计原则
- 7 QQ游戏百万人同时在线服务器架构实现
- 8 大型多人在线游戏服务器架构设计
- 9 百万用户级游戏服务器架构设计
- 10 十万在线的WebGame的数据库设计思路
- 11 一种高性能网络游戏服务器架构设计
- 12 经典游戏服务器端架构概述
- 13 游戏跨服架构进化之路
Linux内核专题——心中的内核
大型专栏:Linux网络编程从应用层到内核实现源码详解
第 03 篇 · 三层派发总纲:socket 函数如何找到它的内核实现
第 05 篇 · 谁在和你抢同一个 socket:lock_sock() 到底锁了什么
第 06 篇 · sk_buff(上):一块内存如何同时是帧、是包、是段
第 07 篇 · sk_buff(下):非线性区、克隆与引用计数
第 08 篇 · skb 的分配与回收:一个包的内存从哪来,又还到哪去
第 09 篇 · struct socket 与 struct sock:为什么一个连接要两个结构体
第 10 篇 · sk 的队列与内存记账:SO_SNDBUF 到底限制了什么
第 11 篇 · net_device 与多队列模型:网卡在内核里长什么样
第 12 篇 · network namespace:struct net 为什么无处不在
第 17 篇 · accept():从全连接队列取一个 sk
第 18 篇 · 一次连接的完整生命周期:从第一个 SYN 到最后一个 FIN
第 19 篇 · send 家族:msghdr 与 iov_iter
第 21 篇 · 阻塞与非阻塞:同一段代码,只差一个 timeo
第 22 篇 · setsockopt 的一生:level 派发与 sockptr_t
第 23 篇 · 选项 vs sysctl vs cgroup:谁说了算
第 25 篇 · select/poll/epoll:唤醒链是怎么接起来的
第 26 篇 · epoll 内部:一棵红黑树、一条就绪链、一次 ep_poll()
第 27 篇 · close() 与 shutdown():语义差异的内核根源
第 28 篇 · sendfile/splice/mmap:绕开用户态缓冲区
第 29 篇 · 同步与异步:SIGIO 那一代,和 io_uring 那一代
第 30 篇 · tcp_sendmsg_locked:用户数据如何变成 skb
第 31 篇 · tcp_push 与 Nagle:数据什么时候真的发出去
第 32 篇 · tcp_transmit_skb:TCP 头是怎么拼出来的
第 35 篇 · TSO / GSO:一个 skb 怎么变成多个报文
第 36 篇 · ip_queue_xmit:路由查找与 IP 头组装
第 37 篇 · 拥塞控制框架:tcp_congestion_ops 的回调表
第 38 篇 · 重传定时器与 RTO:超时时间怎么算出来,超时之后做什么
第 39 篇 · 快速重传与尾部丢包探测:不等 RTO 就判出丢包的两条路
第 41 篇 · undo:判错之后怎么撤销这次拥塞窗口下调
第 42 篇 · 邻居子系统、ARP 与 __dev_queue_xmit
第 43 篇 · 从硬中断到软中断:napi_schedule
第 44 篇 · net_rx_action:软中断主循环与 budget
第 45 篇 · threaded NAPI、napi_config 与 busy_poll
第 46 篇 · 驱动 poll 内部:从 DMA 描述符环到 skb
第 48 篇 · __netif_receive_skb_core:packet_type 分发与 RPS/RFS
第 49 篇 · ip_rcv到 ip_local_deliver:IP 层收包的三道关
第 50 篇 ·tcp_v4_do_rcv:socket 查找、backlog 与 prequeue 的消亡
第 51 篇 · tcp_rcv_established:快速路径为什么快
第 52 篇 · tcp_ack 与 SACK 处理:收到一个 ACK,发送方更新哪些状态
第 53 篇 · 乱序队列:一棵红黑树,进树、出树与内存不够时先丢谁
第 54 篇 · 延迟 ACK、QUICKACK 与 ACK 压缩
第 55 篇 · 状态机:握手、挥手、TIME_WAIT 与保活
第 58 篇 · 路由子系统与 dst_entry 的生命周期
第 59 篇 · FIB trie、策略路由与 nexthop 对象
第 60 篇 · netfilter:hook 点如何嵌进收发路径
第 61 篇 · TC 与 qdisc:pfifo_fast、fq、fq_codel
第 62 篇 · 桥接与 VLAN:帧进桥之后怎么查表转发,VLAN 标签在哪一步加减
第 63 篇 · 隧道与封装:一个帧被 VXLAN 套上 50 字节,再原样拆开的全程
第 66 篇 · 硬件卸载:NETIF_F_*如何改变代码路径
第 67 篇 · BIG TCP:64KB 这道上限卡在哪,内核用什么办法绕过去
第 68 篇 · devmem TCP:数据直落 GPU 内存
第 70 篇 · MPTCP 与 PSP:新协议如何嵌进旧框架
第 71 篇 · dropreason 与观测工具箱:内核怎么给出丢包原因码,你又怎么读到它
第 72 篇 · 性能排查实战:四个现场案例,以及怎么把这套方法用到你自己的内核上
你也可以给该仓库提交修改内容,如果你的 PULL Requeset 被采纳,你的名字将会出现在贡献者列表中。
如果您在阅读上述文章的过程中有任何问题或者建议,可以加本仓库微信交流群交流,可以先微信 cppxiaofang,备注“CppGuide”,备注不对不加哦。
仓库中部分文章来源于网络,侵权请联系删除。
本仓库备份QQ交流群:169315117
如果你觉得本仓库对你有帮助,想可以请小方喝杯咖啡,扫描下面的任一二维码捐赠即可。
Good Luck and Enjoy it!


