Nginx源码剖析之基本数据结构:双向链表
offsetof(type, link)宏函数,用于获取link成员相对于其结构体type起始地址的偏移量(以字节为单位),即这个宏返回宿主结构体的首地址。通过该宏,可以将链表操作与具体数据结构解耦,使链表可以用于多种数据结构
Nginx源码剖析之基本数据结构:字符串
nginx 的字符串 是一个字符数组,其中记录有字符串长度的信息
Nginx源码剖析之基本数据结构:单向链表
还可以明显看到,nginx 的链表中会提前创建出一个节点。到后面你就会看到,nginx 的链表中的节点,如果在没有扩容的情况下,是不会继续创建新节点的。因为它的数据存储在其他内存,这块内存起始地址由 elts 指针指向
基于二叉搜索树实现Map容器的基本操作
二叉搜索数最难的就是删除,它有三种情况。首先应该处理有两个子节点的情况,降级为叶子节点。我们后面就只需要处理叶子节点或单个子节点情况。后面这两种情况记得考虑为根节点的特殊情况,同时要更新相关的成员信息,比方说 left、right、parent 的最新指向等
Gdb基础教程
掌握基本的 gdb 命令,在实践中学习
Nginx源码剖析之基本数据结构:数组
支持从后面添加一个或多个元素,不支持弹出元素
Nginx源码剖析之基本数据结构:内存池
阅读任何源代码基础数据结构之前,得先阅读内存池源码
存储器层次结构
存储器层次结构是可行的,这是因为与下一个更低层次的存储设备相比来说,一个编写良好的程序倾向千更频繁地访问某一个层次上的存储设备。所以,下一层的存储设备可以更慢速一点,也因此可以更大,每个比特位更便宜。整体效果是一个大的存储器池,其成本与层次结构底层最便宜的存储设备相当,但是却以接近于层次结构顶部存储设备的高速率向程序提供数据
C++内存模型
atomic包含两个部分:原子操作和内存序
C++死锁和数据竞争检查工具
我觉得工具是不错的,可随着程序越大,这类工具就极其耗时
12317