
读书笔记
StanleyWm_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Redis设计与实现-05-跳跃表
跳跃表介绍 原书中并没有对跳跃表做详细的介绍,记录下来的信息为自己整理。 参考 https://www.cnblogs.com/thrillerz/p/4505550.html https://redisbook.readthedocs.io/en/latest/internal-datastruct/skiplist.html 跳跃表概念 跳跃表是在有序链表的基础上进行扩展,解决有序链表查找困难的问题。 有序链表查找的时间复杂度为O(n) 跳跃表查找的时间复杂度为O(longN) 跳跃表的结构原创 2020-05-23 16:47:21 · 287 阅读 · 0 评论 -
Redis设计与实现-04-字典
哈希表(hash table):又叫散列表,是根据关键码值进行访问的数据结构。将关键码值映射到表中的一个位置来访问,以加快查找的速度。这个函数映射叫做哈希函数,存放记录的数组叫做散列表。 哈希表常用于通过key快速的找到对应的value时使用。 哈希表的负载因子等于实际元素数目/哈希表的容量,负载因子越大表示冲突越大,负载因子越小,表示空间越浪费。一般负载因子位于0-0.7。 哈希算法:当将一个新的键值对添加到字典里面时,先根据键值对的键计算出哈希值和索引值,然后根据索引值,将包含新键值对的哈希表节点放到.原创 2020-05-17 16:57:59 · 254 阅读 · 0 评论 -
Redis设计与实现-03-链表
Redis链表的特性 双端 无环 带表头指针和表尾指针 带链表长度计数器 多态 typedef struct list { // 表头节点 listNode *head; // 表尾节点 listNode *tail; // 链表中所有节点的数量 unsigned long len; // 节点复制函数 void *(*dup)(void *ptr); // 节点释放函数 void (*free)(void *ptr).原创 2020-05-17 16:57:11 · 215 阅读 · 0 评论 -
Redis设计与实现-02-数据结构与对象
简单动态字符串 Redis构建了一种名为简单动态字符串(simple dynamic string, SDS)的抽象类型,作为默认字符串表示。 SDS遵循C字符串以空字符结尾的惯例,保存空字符的一个字节空间不计算在SDS的len属性里面,并且为空字符分配额外的一个字节,以及添加空字符到字符串末尾等操作,都是由SDS函数自动完成的,所以空字符对SDS的使用者来说是完全透明的。 struct sdshr { // 记录buf数组中已使用字节的数量 // 等于sds所保存字符串的长度原创 2020-05-10 19:09:39 · 298 阅读 · 0 评论 -
Redis设计与实现-01-引言
Redis数据库里面的每个键值对(key-value pair)都是由对象(object)组成的,其中 数据库键总是一个字符串对象(string) 数据库键的值则可以是字符串对象、列表对象(list)、哈希对象(hash)、集合对象(set)、有序集合(sorted set )对象这五种对象中的其中一种。 ...原创 2020-05-10 19:08:21 · 244 阅读 · 0 评论