1. 原子性的操作:read,load,assign,use,shore,write 2. 可见性的操作:volatile,synchronized,final 3. 有序性...
1. 原子性的操作:read,load,assign,use,shore,write 2. 可见性的操作:volatile,synchronized,final 3. 有序性...
时间先后顺序于先行发生没有绝对关系,一切以先行发生原则为主。 1. 程序次序原则。同一个线程内,按照程序代码顺序先后执行。 2. 管道锁定规则。一个unlock操作先行于后面...
1. 不可变。final。如果是对象,所有属性为final即可。 2. 绝对线程安全。 3. 相对线程安全。对象单独操作都是线程安全的,对于一些特定顺序的连续调用,需要额外使...
1. 互斥同步。保证在某一时刻共享数据只被一个线程使用。 synchronize为什么消耗大呢?synchronize在方法完成之前,会阻塞后面的进程,Java的线程映射...
1. 自旋锁与自适应自旋。共享数据的锁定只会持续短时间,通过自旋看看持有锁的线程是否会很快释放。1.6之后加入自适应自旋,根据前一次在同一个锁上的自旋时间及拥有者状态而定。 ...
SDS:simple dynamic String 优势: 1.提升效率,C语言的字符串如果需要知道字符串的长度,需要遍历,复杂度是O(n),而针对SDS,复杂度是O(1...
每个字典的底层采用哈希表实现,每个字典带有两个哈希表,一个平常使用,一个仅在rehash时使用。redis使用murmurHash2算法来计算hash值 渐进式rehash ...
Redis 并没有直接使用数据结构来构建键值对,而是基于这些数据结构创建了一个对象系统。 该对象保存与数据有关的三个属性分别是:type(类型),encoding(编码类型)...
哈希对象的编码可以是ziplist或hashtable 1. ziplist编码的哈希对象使用压缩列表作为底层实现,每当新的键值对加入哈希对象时,程序首先会将保存了键的压缩列...
集合对象的编码可以是intset或是hashtable 有序集合对象的编码可以是ziplist或是skiplist。 skiplist编码的有序集合使用zset结构作为底层实...
1. 所有的过期指令最终都变成了PEXPIREAT指令 2. redis保存一份过期字典,键是一个指针,指向某个键对象,值是过期时间,一个毫秒精度的时间戳。过期字典与键空间中...
1. RDB文件的创建与载入 1. 有两个指令可以创建RDB文件,分别是save与bgsave,前者stw,后者创建子进程运行。 2. RDB文件的载入没有指令控制,...
/common 目录:类库可被 Tomcat 及所有 Web 应用程序使用 /server 目录:类库可被Tomcat使用,对所有Web引用不可见 /shared 目录:类库...
类的生命周期:加载,连接,初始化,使用,卸载。连接包括验证,准备,解析。
oopMap 安全点 主动式中断(抢断式中断) 安全区域 Serial收集器:单线程收集器,工作时必须暂停虚拟机的其他工作,STW ParNew收集器:Serial收集器的多...
1. 标记清除算法。最基础的收集算法,缺点是标记跟清除效率不高,清除后会产生大量的不连续碎片,这样在之后遇到大对象的时候会重新出发一次收集算法。 2. 复制算法。将内存分为两...
jps:虚拟机进程状况工具 jps -l jstat:虚拟机统计信息监视工具 查询gc:jstat -gc 250 20 每250毫秒输出输出一次gc日志,共20次 ...
堆的回收比较好理解,方法区同时也会被回收 回收策略: 1. 废弃常量,即该常量不再被任何String对象所引用; 2. 无用的类。需同时满足下列三个条件: a...