自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Redis-7. 对象

对象对象对象的类型与编码类型编码和底层实现字符串对象编码的转换字符串命令的实现列表对象编码转换列表命令的实现哈希对象编码转换哈希命令的实现集合对象编码的转换集合命令的实现有序集合对象编码的转换有序集合命令的实现类型检查与命令多态类型检查的实现多态命令的实现内存回收对象共享对象的空转时长对象Redis没有直接使用SDS等主要的数据结构来实现数据库,而是根据这些数据结构构建了一个对象系统这个系统包含5种不同类型的对象:字符串对象列表对象哈希对象集合对象有序集合对象Redis可以在执行命令前

2022-05-27 13:09:39 266

原创 Redis-6. 压缩列表

Redis/压缩列表压缩列表压缩列表的构成压缩列表节点的构成previous_entry_lengthencodingcontent连锁更新压缩列表API压缩列表压缩列表(ziplist)是列表键和哈希键的底层实现之一。当一个列表键只包含少量列表项,且每个列表项是小整数值或者长度较短的字符串时,Redis就会使用压缩列表来做列表键的底层实现当一个哈希键只包含少量键值对,且每个键值对的键和值是小整数值或者长度较短的字符串时,Redis使用压缩列表来做哈希键的底层实现压缩列表的构成压缩列表是为了节约

2022-05-26 16:46:33 176

原创 Redis-5. 整数集合

Redis/整数集合 升级升级的好处提升灵活性节约内存降级整数集合API整数集合(intset)是Redis用来保存整数值当集合抽象数据结构,可以保存类型位int16_t、int32_t、int64_t都整数值,且不会出现重复元素整数集合用intset.h文件内的intset结构表示typedef struct intset { // 编码方式 uint32_t encoding; // 集合包含的元素数量 uint32_t length; // 保存元素的数组 int8_t conten

2022-05-26 00:31:07 186

原创 Redis-4. 跳跃表

Redis/跳跃表跳跃表的实现跳跃表节点层前进指针跨度后退指针分值和成员跳跃表跳跃表API跳跃表是一种有序数据结构,它通过在每个节点维持多个指向其他节点的指针,从而达到快速访问节点的目的Redis使用跳跃表作为有序集合键的底层实现之一。如果一个有序集合包含的元素较多或者有序集合中元素的成员是较长的字符串时,Redis就会使用跳跃表作为有序集合键的底层实现。Redis只在两个地方使用了跳跃表:实现有序集合键集群节点中用作内部数据结构跳跃表的实现Redis的跳跃表由redis.h中的zski

2022-05-25 22:52:16 129

原创 Redis-3. 字典

Redis/字典字典的实现哈希表哈希表节点字典哈希算法解决键冲突rehash哈希表的扩展与收缩渐进式rehash字典APIRedis对字典的使用相当广泛,例如Redis的数据库就是使用字典来作为底层实现的,对数据库的CRUD都是构建在字典的操作之上的。除此之外,字典也是哈希键的底层实现之一。当一个哈希键包含的键值对较多,又或者键值对中的元素都是比较长的元素时,Redis就会使用字典作为哈希键的底层实现。Redis还有很多功能也使用到了字典,字典是Redis里面应用的特别广泛的一个数据结构字典的实现

2022-05-25 19:14:22 93

原创 Redis-2. 链表

Redis/链表链表及其节点的实现Redis/链表Redis中链表的应用非常广泛,比如列表键的底层实现之一就是链表。当一个列表键包含了数量比较多的元素,或者列表中包含的元素都是比较长的字符串时,Redis就会使用链表作为列表键的底层实现为什么列表包含的元素是不够长的字符串时,Redis不使用链表?这是因为链表需要保存指针变量用来指向其他元素,如果包含的元素是较短的字符串,那么可能在整个链表节点中的空间占比不够高,导致存储密度较低,会有大量空间浪费在存储指针上Redis中使用到链表的其他功能.

2022-05-23 16:53:51 82

原创 Redis-1.简单动态字符串

Redis/简单动态字符串SDS的定义SDS与C字符串的区别常数复杂度获取字符串长度杜绝缓冲区溢出减少修改字符串时带来的内存重分配次数1.空间预分配2.惰性空间释放二进制安全兼容部分C字符串函数C字符串与SDS的区别 - 小结SDS API小结Redis/简单动态字符串Redis内部使用的字符串是自己构建的简单动态字符串(SDS)的抽象类型,C字符串只作为字符串字面量使用创建KV时,有两种情况:V是字符串对象,则底层实现是 SDS:SDSV是列表,则实现是SDS:SDS,SDS,…SDS的.

2022-05-23 00:55:51 127

原创 5.重排序

文章目录@[toc]重排序1. 数据依赖性2. as-if-serial语义3. 程序顺序规则4. 重排序对多线程的影响重排序重排序:编译器和处理器为了优化程序性能而对指令序列重新排序的一种手段1. 数据依赖性定义:如果两个操作访问同一个变量,且这两个操作中有一个为写操作,则这两个操作存在数据依赖性数据依赖性类型表名称代码示例说明写后读a = 1; b = a;写一个变量之后,再读这个位置写后写a = 1; a = 2;写一个变量之后,再写这个变量读后

2021-08-01 12:10:07 75

原创 4.Java内存模型基础

文章目录@[toc]Java内存模型的基础1. 并发编程模型的两个关键问题2. Java内存模型的抽象结构3. 从源代码到指令序列的重排序4. 并发编程模型的分类5. happens-before简介Java内存模型的基础1. 并发编程模型的两个关键问题两个问题:线程之间如何通信线程之间如何同步通信:线程之间以何种机制来交换信息同步:程序组用于控制不同线程间操作发生相对顺序的机制两种并发模型:共享内存:线程之间共享程序的公共状态,通过写-读内存中的公共状态来隐式通信,同步是显式进行的

2021-07-31 17:29:20 69

原创 3.原子操作的实现原理

文章目录@[toc]术语定义处理器实现原子操作1)使用总线锁保证原子性2)通过缓存锁保证原子性Java实现原子操作1)使用循环CAS实现原子操作2)CAS实现原子操作的三大问题1.ABA问题2.循环时间长开销大3.只能保证一个共享变量的原子操作3)使用锁机制实现原子操作术语定义原子操作: 不可中断的一个或一系列操作CPU术语定义术语名称英文解释缓存行Cache Line缓存的最小单位比较并交换(CAS)Compare and SwapCAS操作需要输入两个数值,

2021-07-26 15:53:51 414

原创 2. synchronized的实现原理与应用

文章目录@[toc]synchronized的实现原理与应用Java对象头锁的升级与对比偏向锁轻量级锁锁的优缺点对比synchronized的实现原理与应用synchronized被称作重量级锁,但是在JavaSE 1.6的各种优化以后,部分情况下就并非那么重了这主要是因为1.6以后引入了偏向锁和轻量级锁,以及锁的存储结构和升级过程这些都是为了减少获得锁和释放锁而带来的性能消耗。java的每一个对象都可以作为锁,具体表现为以下三种形式:普通同步方法,锁是当前的实例对象静态同步方法,锁是当前

2021-06-17 17:16:24 103

原创 1. volatile的应用

文章目录@[toc]volatile的应用定义原理volatile的具体实现原则1. Lock前缀指令会引起处理器缓存回写到内存2. 一个处理器的缓存回写会导致其他处理器的缓存无效volatile的使用优化volatile的应用volatile是轻量级的synchronized,它在多处理器开发中保证共享变量的**“可见性”**,它不会引起线程上下文的切换和调度若是能够恰当的使用volatile,它的使用和执行成本会比synchronized更低定义Java允许线程访问共享变量,为了确保共享变量

2021-06-02 20:12:27 83

原创 LeetCode - 1 二分查找 概念

文章目录概述工作原理识别二分与二分模板简介模板I模板II模板III模板分析小结概述————————————什么是二分查找二分查找是计算机科学中最基本、最有用的算法之一。 它描述了在有序集合中搜索特定值的过程。二分查找中使用的术语:目标 Target —— 你要查找的值索引 Index —— 你要查找的当前位置左、右指示符 Left,Right —— 我们用来维持查找空间的指标中间指示符 Mid —— 我们用来应用条件来确定我们应该向左查找还是向右查找的索引工作原理在最简单的形式

2021-03-24 20:26:57 169

空空如也

空空如也

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

TA关注的人

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