#源码剖析
简单动态字符串
Redis 的字符串经过这样设计,不仅可以存储字符串型的数据,还可以存储二进制数据。原生字符串是通过末尾的 \0 判断字符串的结束,但是这样就让二进制数据无法存储,因为你不确定字符串哪里是完整的部分。但现在我们通过 len 成员就可以避免这个问题,实现二进制数据存储
实现海量数据快速查找之哈希表
学习源码数据结构,要学会从基础开始,并且结合已有资料来加快整个进程。学习源码的思想是最重要的。
Redis 事件驱动框架思路浅读
今天才体会到,阅读这种设计很多业务的代码,是相当痛苦的。就算已经明确是阅读 Reactor 模块,可是找到自己的部分也是相当痛苦的,好在结合网上的资料走过来了。只是了解 Redis 的网络模型,也不会去深究源码本身
Nginx源码剖析之基本数据结构:双向链表
offsetof(type, link)宏函数,用于获取link成员相对于其结构体type起始地址的偏移量(以字节为单位),即这个宏返回宿主结构体的首地址。通过该宏,可以将链表操作与具体数据结构解耦,使链表可以用于多种数据结构
Nginx源码剖析之基本数据结构:字符串
nginx 的字符串 是一个字符数组,其中记录有字符串长度的信息
Nginx源码剖析之基本数据结构:单向链表
还可以明显看到,nginx 的链表中会提前创建出一个节点。到后面你就会看到,nginx 的链表中的节点,如果在没有扩容的情况下,是不会继续创建新节点的。因为它的数据存储在其他内存,这块内存起始地址由 elts 指针指向
Nginx源码剖析之基本数据结构:数组
支持从后面添加一个或多个元素,不支持弹出元素
Nginx源码剖析之基本数据结构:内存池
阅读任何源代码基础数据结构之前,得先阅读内存池源码