01 RedissonLock
redisson基于org.redisson:redisson-spring-data-27:3.27.2版本
在
java中,操作redis一般都会选择redisson框架, 我们需要了解常用功能的实现原理, 这次来介绍RedissonLock。
使用方式
| |
上面是最常见分布式锁使用示例, redisson 的锁分为好几种,我们先以 RedissonLock 来说明。
redisson基于org.redisson:redisson-spring-data-27:3.27.2版本
在
java中,操作redis一般都会选择redisson框架, 我们需要了解常用功能的实现原理, 这次来介绍RedissonLock。
| |
上面是最常见分布式锁使用示例, redisson 的锁分为好几种,我们先以 RedissonLock 来说明。
jdk 基于 8 版本
在平时的开发中,我们很少会用到
TreeMap, 但是还是需要了解源码。 TreeMap 基于红黑树来实现按照 key 排序,关于这个算法,这里不做解释。
| |
因为是 Map 接口的实现类 ,所以使用方式是差不多的。只不过在遍历过程中,是按照 key 值排序的。
jdk 基于 8 版本
在平时的开发中,我们会经常用到
LinkedHashMap, 非常有必要了解源码。LinkedHashMap基于HashMap来实现, 内部借助双向链表来维持访问顺序,可以用来实现LRU算法。
| |
对于使用方式来说,LinkedHashMap 和 HashMap 是一样的,只不过 LinkedHashMap 在遍历过程中是有序的, 实现原理是在添加元素时,需要把元素移动到双向链表的尾部,然后遍历时直接取双向链表。
jdk 基于 8 版本
在平时的开发中,我们会经常用到
HashMap, 非常有必要了解源码。HashMap基于拉链法和红黑树来实现,关于这两个算法,这里不做解释。
| |
源码位置: java.util.HashMap#put
java 的线程池可以充当一个任务执行器的,但是有时候不符合我们的要求,所以需要自定义开发。
满足1:可以根据任务数量来动态调整核心线程数和最大线程数。
满足2:支持重复执行的任务。
在
java中有四种引用类型,分为强引用,软引用,弱引用,虚引用,这里介绍如何使用软引用来实现一个缓存。
| |
注意: 我在
build.gradle文件中添加了test的jvm参数 jvmArgs = ["-Xmx10m", “-Xms10m”], 来模拟内存不足来触发回收软引用。