求阙厅

春有百花秋有月,夏有凉风冬有雪。若无闲事挂心头,便是人间好时节。

Java 基础 Future

深究Java基础

Future 接口 Future 代表异步计算的结果。并且提供了检查计算是否完成,等待完成,检索计算结果等方法。

Java 基础 Stream

深究 Java 基础

Stream 作为 Java 8 的一大亮点,它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。它也不同于 StAX 对 XML 解析的 Stream,也不是 Amazon Kinesis 对大数据实时处理的 Stream。 Java 8 中的 Stream 是对集合(Collection)对象功能的增强,它专注于对集合对象进行各种非常便...

Java 基础 代理

深究Java基础

代理是代替客户端去访问服务器,反向代理是代替服务器接受客户端的请求 正向代理(Forward Proxy) A找B直接沟通,这就等于没有代理。然而中间夹一个传话的C,C就是代理。A通过C把信息传递给B,然后C再把B的反馈转达给A。在这个过程中,A知道沟通的直接目标是B,只不过由于各种原因无法直接和B面对面,需要中间人C,这就是所谓“正向代理” 要点 response 需...

Redis 系列 跳跃列表

开启 redis 探索新篇章

跳表是一种有序数据结构,它通过在每个节点中维持多个指向其他节点的指针作为索引,实现高效范围查询。 简单说明 跳跃列表类似于层级制,最下面一层所有的元素都会串起来。然后每隔几个元素挑选出一个代表来,再将这几个代表使用一级指针串起来。然后在这些代表里再挑出二级代表,再串起来。以此类推,最终就形成了金字塔结构。 跳跃列表之所以「跳跃」,是因为内部的元素可能「身兼数职」,比如上图中间的...

Redis 系列 紧凑列表

开启 redis 探索新篇章

Redis 5.0 引入了一个新的数据结构 listpack,它是对 ziplist 结构的改进,在存储空间上会更加节省,而且结构上也比 ziplist 要精 listpack 的设计彻底消灭了 ziplist 存在的级联更新行为,元素与元素之间完全独立,不会因为一个元素的长度变长就导致后续的元素内容会受到影响。 1 2 3 4 5 6 struct listpack&l...

Redis 系列 整数集合

开启 redis 探索新篇章

Redis 的 intset 是一个紧凑的整数数组结构,它用于存放元素都是整数的并且元素个数较少的 set 集合。 如果整数可以用 uint16 表示,那么 intset 的元素就是 16 位的数组,如果新加入的整数超过了 uint16 的表示范围,那么就使用 uint32 表示,如果新加入的元素超过了 uint32 的表示范围,那么就使用 uint64 表示,Redis 支持 set...

Redis 系列 数据结构

总结redis中涉及的数据结构

Redis 有 5 种基础数据结构,分别为 string 字符串,list 列表,set 集合,hash 哈希,zset 有序集合。 Redis 里面的每一种数据结构不止有一种底层实现,在不同的场景下Redis 会使用不同的底层实现,例如 zset,在元素个数不超过 64 时采用压缩列表实现,否则采用跳表+哈希表实现。 string 字符串 Redis 字符串是简单动态字符串,是...

Redis 系列 快速列表

开启 redis 探索新篇章

Redis list 数据结构的底层实现之一是 quicklist。 quciklist 是从 3.2 版本加入 Redis 的,用于取代普通的双向链表结构。主要用于减少拥有大量节点的列表的内存使用量。 quicklist 是 ziplist 和 linkedlist 的混合体,它将 linkedlist 按段切分,每一段使用 ziplist 来紧凑存储,多个 ziplist ...

Redis 系列 字符串

开启 redis 探索新篇章

Redis 简单动态字符串(SDS)是可以修改的字符串,在内存中它是以字节数组的形式存在的。 SDS Redis 字符串叫「SDS」,也就是 Simple Dynamic String 。它的结构是一个带长度信息的字节数组。 1 2 3 4 5 6 struct SDS<T> { T capacity; // 数组容量 T len; // 数组长度 ...

Redis 系列 字典

开启 redis 探索新篇章

字典是 Redis 服务器中出现最为频繁的复合型数据结构。除了 hash 数据结构会用到字典外,整个 Redis 数据库的所有 key 和 value 也组成了一个全局字典,还有带过期时间的 key 集合也是一个字典。 zset 集合中存储 value 和 score 值的映射关系也是通过 dict 结构实现的。Redis 里面 set 的结构底层实现也是字典,只不过所有的 value 都是...