自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 图文详解Redis跳跃表skiplist

Redis跳跃表图文详解 列表 数组实现(ArrayList) 链表实现(LinkedList) 关于有序列表的思考 什么是跳跃表? 图解跳跃表 跳跃表节点 结构体 图解跳跃表节点 跳跃表 结构体 图解跳跃表 层高算法 上帝也掷骰子 跳表常用操作过程解析 查询 插入 删除

2021-05-02 01:01:07 730

原创 图文详解Redis字典的底层实现

字典的实现 哈希表(dictionary hashtable) 图解哈希表数据结构 哈希节点(dictionary entry) 图解哈希节点数据结构 字典(dictionary) 图解字典数据结构 哈希掩码在哈希算法中的巧妙应用 哈希冲突 rehash(重新散列) Redis对字典哈希表进行rehash的步骤 渐进式rehash期间读/写操作的执行过程 那么问题来了:渐进式rehash期间如果没有读写操作,是 如果在内存将满或已满时进行rehash的话,内存会继续飙升 哈希表的扩容和缩容

2021-04-10 15:46:53 720

原创 Redis List底层实现:链表

1. 链表被广泛用于实现Redis各种功能,如列表键、发布与订阅、慢查询、监视器等;2. 链表节点由一个listNode结构来表示,每个节点都有指向前一个节点的前驱节点和指向后一个节点的后继结点,构成了双端链表;3. 每个链表都由一个list结构来表示,有表头节点指针,表尾节点指针和链表长度等信息,可以让Redis在部分情况下进行O(1)复杂度的操作;4. 因为list的表头节点head的prev和表尾节点tail的next都指向NULL,所以Redis的链表是一条无环链表;5.dup、free和match

2021-03-29 12:35:34 286

原创 Redis字符串的底层实现:SDS

Redis字符串的底层实现:SDS 字符串是Redis里最常用到的一种数据类型,在Redis中,默认字符串底层实现就是SDS(Simple Dynamic String),即简单动态字符串。 空间预分配。 不用C语言字符串的原因: 1. 效率低:获取字符串长度时间复杂度高 2. 可能出现缓冲区溢出 3. 二进制不安全 4. 内存重分配次数太过频繁

2021-03-21 21:48:24 530 2

原创 Java单例模式的8种写法

单例(Singleton)是指仅仅被实例化一次的类。 单例设计模式的8种写法:懒汉(线程安全、双重检查锁DCL、volatile指令重排序)、饿汉、静态内部类、枚举单例(推荐)。 单例懒汉设计模式的线程安全问题及解决方案。 单元素的枚举类型经常成为实现Singleton的最佳方法。 --《Effective Java》

2021-01-17 23:21:27 592 1

原创 Integer比较问题和JDK缓存设计

1. 八大基本类型的包装类在比较2个对象值是否相等时使用equals方法,不推荐使用==进行比较。 2. JDK默认帮我们缓存了[-128,127]之间的值,我们可以配置JVM参数往上扩大上限的值,可扩展的范围为[128,2147483519],在显式或隐式使用Integer.valueOf初始化后,使用==比较得到的结果为true.

2020-12-13 16:52:35 383

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除