简单动态字符串
Redis 的字符串经过这样设计,不仅可以存储字符串型的数据,还可以存储二进制数据。原生字符串是通过末尾的 \0 判断字符串的结束,但是这样就让二进制数据无法存储,因为你不确定字符串哪里是完整的部分。但现在我们通过 len 成员就可以避免这个问题,实现二进制数据存储
解决TopK问题之优先队列
就两个核心操作:上浮和下沉
三大经典排序算法
快速排序,归并排序,堆排序
实现海量数据快速查找之哈希表
学习源码数据结构,要学会从基础开始,并且结合已有资料来加快整个进程。学习源码的思想是最重要的。
Redis 事件驱动框架思路浅读
今天才体会到,阅读这种设计很多业务的代码,是相当痛苦的。就算已经明确是阅读 Reactor 模块,可是找到自己的部分也是相当痛苦的,好在结合网上的资料走过来了。只是了解 Redis 的网络模型,也不会去深究源码本身
源码阅读Source Insight
尽管我喜欢 Clion 读源码,但前提是有CMake文件,而且从大型项目角度来看,还是得用这个才可以
Nginx源码剖析之基本数据结构:双向链表
offsetof(type, link)宏函数,用于获取link成员相对于其结构体type起始地址的偏移量(以字节为单位),即这个宏返回宿主结构体的首地址。通过该宏,可以将链表操作与具体数据结构解耦,使链表可以用于多种数据结构
Nginx源码剖析之基本数据结构:字符串
nginx 的字符串 是一个字符数组,其中记录有字符串长度的信息
Nginx源码剖析之基本数据结构:单向链表
还可以明显看到,nginx 的链表中会提前创建出一个节点。到后面你就会看到,nginx 的链表中的节点,如果在没有扩容的情况下,是不会继续创建新节点的。因为它的数据存储在其他内存,这块内存起始地址由 elts 指针指向
基于二叉搜索树实现Map容器的基本操作
二叉搜索数最难的就是删除,它有三种情况。首先应该处理有两个子节点的情况,降级为叶子节点。我们后面就只需要处理叶子节点或单个子节点情况。后面这两种情况记得考虑为根节点的特殊情况,同时要更新相关的成员信息,比方说 left、right、parent 的最新指向等
12318