240 发简信
IP属地:北京
  • 12.4 原子性,可见性

    1. 原子性的操作:read,load,assign,use,shore,write 2. 可见性的操作:volatile,synchroniz...

  • 12.5 先行发生原则

    时间先后顺序于先行发生没有绝对关系,一切以先行发生原则为主。 1. 程序次序原则。同一个线程内,按照程序代码顺序先后执行。 2. 管道锁定规则。...

  • 13.1 线程安全级别

    1. 不可变。final。如果是对象,所有属性为final即可。 2. 绝对线程安全。 3. 相对线程安全。对象单独操作都是线程安全的,对于一些...

  • 13.2 线程安全的实现方法

    1. 互斥同步。保证在某一时刻共享数据只被一个线程使用。 synchronize为什么消耗大呢?synchronize在方法完成之前,会阻塞...

  • Resize,w 360,h 240
    13.3 锁优化

    1. 自旋锁与自适应自旋。共享数据的锁定只会持续短时间,通过自旋看看持有锁的线程是否会很快释放。1.6之后加入自适应自旋,根据前一次在同一个锁上...

  • Resize,w 360,h 240
    1.1 简单动态字符串

    SDS:simple dynamic String 优势: 1.提升效率,C语言的字符串如果需要知道字符串的长度,需要遍历,复杂度是O(n)...

  • Resize,w 360,h 240
    1.2 链表、字典

    每个字典的底层采用哈希表实现,每个字典带有两个哈希表,一个平常使用,一个仅在rehash时使用。redis使用murmurHash2算法来计算h...

  • Resize,w 360,h 240
    1.4 字符串以及List底层实现

    Redis 并没有直接使用数据结构来构建键值对,而是基于这些数据结构创建了一个对象系统。 该对象保存与数据有关的三个属性分别是:type(类型)...

  • 1.5 哈希对象底层实现

    哈希对象的编码可以是ziplist或hashtable 1. ziplist编码的哈希对象使用压缩列表作为底层实现,每当新的键值对加入哈希对象时...