![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
读书笔记
文章平均质量分 96
读书记录
wifiiiiiiii
You may see me struggle, but you will never see me fall
展开
-
Redis学习(七)对象
文章目录1. 简介2. 对象的类型和编码2.1 对象类型 - type2.2 对象编码 - encoding3. 字符串对象3.1 raw 和 embstr 的区别是?3.2 字符串编码的转换3.3 不同字符串编码对应的命令实现参考1. 简介我们可知,Redis 的用到的主要的数据结构有:简单字符串(SDS)、链表、字典、压缩列表、整数集合等等。Redis 的对象都是由这些数据结构所实现。并且,Redis 为了可以对不同的对象在不同的使用场景下选择更加合适的数据结构实现,Redis 基于这些数据结构创建原创 2021-06-15 18:57:07 · 704 阅读 · 1 评论 -
Redis学习(六)压缩列表(ziplist)
文章目录11. 什么是压缩列表(ziplist)2. 压缩列表的构成2.1 压缩列表的组成2.2 压缩列表节点的组成2.2.1 previous_entry_length2.2.2 encoding2.2.2.1 字节数组编码2.2.2.2 整数编码2.2.3 content2.2.4 例子3. 压缩列表和数组的区别3.1 内存3.2 数据类型4. 压缩列表存在的“问题”5. 压缩列表的 API6. 参考7. 其他相关文章11. 什么是压缩列表(ziplist)压缩列表(ziplist) 是哈希键的底层原创 2021-06-01 17:35:29 · 751 阅读 · 0 评论 -
Redis学习(五)整数集合
文章目录1. 整数集合是什么2. 整数集合的数据结构3. 升级3.1 升级的好处3.1.1 提升整数集合的灵活度3.1.2 节约内存4. 降级5. 整数集合 API6. 参考7. 其他相关文章1. 整数集合是什么整数集合(intset)是集合键的底层实现之一,当一个集合只包含整数值元素,并且这个集合的元素数量不多时,Redis 就会使用整数集合作为集合键的底层实现。例如:127.0.0.1:6379> SADD numbers 1 2 3 4 5 6 7 8 9 10(integer) 10翻译 2021-06-01 14:22:57 · 271 阅读 · 0 评论 -
Redis学习(四)跳跃表(skiplist)
1. 什么是跳跃表(skiplist)跳跃表(skiplist)是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针,从而达到快速访问节点的目的。Redis 使用跳跃表作为有序集合键(ZSET)的底层实现之一,如果一个有序集合包含的元素数量比较多,又或者有序集合中元素的成员是比较长的字符串时,Redis 就会使用跳跃表来作为有序集合键的底层实现。Redis 只在两个地方用到了跳跃表(skiplist)实现有序集合键在集群节点中用作内部数据结构1.2 为什么需要跳跃表(skipli原创 2021-05-31 07:49:19 · 768 阅读 · 0 评论 -
《软技能:代码之外的生存指南》读书记录
第6章 就业选择:列出你的选择到底应该选择什么对大多数软件开发人员而言,特别是在职业生涯的起步,做一名雇员是明智的选择。这个选择的风险最小,你不需要具备大量的经验。我倾向于认为:做一名雇员就像当学徒一样。即使你已经树立了“为自己工作”的志向,做雇员是学习并锤炼技能的良好起点。第7章 你是哪类软件开发人员从表面上看,身为“专才”后,潜在雇主和客户群都变小了,但是实际上你对他们更有吸引力了。只要你专业能力雄厚,市场没有过度饱和,与那些自称为“软件开发人员”的人相比,你更能轻松地找到工作或者赢得客户。原创 2020-08-19 11:52:32 · 246 阅读 · 0 评论 -
《Head First设计模式》读书随手记
设计模式入门:策略模式使用继承,会有哪些缺点?代码在多个子类中重复运行时的行为不容易改变很难知道所有子类的操作改动会牵一发而动全身Java接口不具有实现代码,所以继承接口无法达到代码的复用。这意味着:无论何时你需要修改某个行为,你必须得往下追踪并在每一个定义此行为的类中修改它,一不小心,可能会造成新的错误。设计原则找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。即:把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其原创 2020-05-19 22:58:39 · 227 阅读 · 0 评论 -
Redis学习(三)字典(hash)
1. 什么是字典(hash)Redis 的字典相当于 Java 语言里面的 HashMap,如图所示:它是无序字典,内部存储了很多键值对。实现结构上与 Java 的 HashMap也是一样的,都是**“数组 + 链表”**的二维结构。在数组位置发生 hash 冲突时,就会将冲突的元素使用链表串起来,如图所示:与 Java HashMap 不同的是,Redis 的字典的值只能是字符串,另外它们 rehash 的方式也不一样。因为 Java HashMap 在字典很大时,rehash 是一个耗时的操作原创 2021-05-25 18:35:33 · 580 阅读 · 0 评论 -
Redis学习(二)链表(list)
1. 什么是链表链表作为一种常用数据结构,链表内置在很多高级的编程语言里面,以为 Redis 使用的 C语言并没有内置这种数据结构,所以 Redis 构建了自己的链表实现。在Redis 中,链表的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,又或者列表中包含的元素都是比较长的字符串时,Redis 就会使用链表作为列表建的底层实现。2. 链表的数据结构2.1 链表节点typedef struct listNode { // 前置节点 struct原创 2021-05-23 10:41:31 · 446 阅读 · 2 评论 -
Redis学习(一)简单动态字符串(SDS)
文章目录1. 什么是简单动态字符串(SDS)2. SDS 的数据结构2.1 示例2.2 SDS 以 \0 结尾的好处3. SDS 基本使用3.1 SET3.1.1 语法3.1.2 示例3.2 GET3.2.1 语法3.2.2 示例3.3 GETRANGE3.3.1 语法3.3.2 示例3.4 MSET3.4.1 语法3.4.2 示例3.5 MGET3.5.1 语法3.5.2 示例3.6 STRLEN3.6.1 语法3.6.2 示例3.7 SETNX3.7.1 语法3.7.2 示例3.8 SETEX3.8.1原创 2021-05-22 15:29:22 · 953 阅读 · 0 评论