- 博客(4)
- 收藏
- 关注
原创 Redi 持久化,主从同步,哨兵
Redis持久化 redis持久化,整体来说是分为两种: RDB和AOF,即时间快照和文件追加指令的方式.在redis4.0版本及以后推出了混合持久化的方式,即结合了RDB和AOF两种持久化方式的优点推出的一种新的持久化的方式. RDB: 按照配置的某种规则(例如 save 3 60 即60秒内有三次更新操作,就持久化到硬盘),以一定的时间频率,把当前内存中数据保存到硬盘中的文件,默认的文件名dump.rdb,此操作是通过fork一个子进程来进行的,可以通过配置文件中的dbfileName指定,rbd文
2021-07-28 17:04:29 121
原创 ConcurrentHashMap 存储以及扩容的实现原理
总结 众所周知 ConcurrentHashMap 是线程安全的,但是在实现上,它摒弃了1.7分段锁的机制,而是采用了CAS+自旋的无锁编程的方式实现的,在设计上,扩容的时候 利用多线程的并发能力,采用多线程协助扩容的方式实现的,在容器的数量的统计上,为了避免线程安全问题和高并发下过多的自旋,没有采用单一的size变量进行统计,而是采用了baseCount+CountCell[],进行分段统计,其中CountCell 采用@CountCell 标注避免了伪共享的问题出现,全程加锁的只有两个地方 1.put操
2021-07-26 19:03:49 709
原创 spring bean 生命周期
Spring bean 生命周期 整个springbean的生命周期 从大的范围来分 分为资源的定位,解析,装载,加载,卸载.定位即为bean的表现形式:1,xml,2.注解,3,文件系统,解析的过程就是把这些表现形式的bean转化为spring统一表现形式的bean(BeanDefintion),装载到容器中(ConcurrentHashMap),然后由spring容器,按照标准的逻辑加载,最后卸载.整个的加载过程如下: spring bean 加载过程 加载过程总结: 三级缓存获取(解决循环依赖),实
2021-01-27 11:15:03 89
原创 java 锁
java 锁的实现原理 java里面的锁,是由三个要素组成,分别是: 资源,线程,容器,整个的实现过程,概括起来很简单,过程如下: 线程开始尝试获取资源,这里的资源 一般指java类里面的成员变量,一般称其为许可证,这里的获取资源的过程,是所有的线程,并发获取,通过cas的方式实现最终只有一个线程获取资源成功.获取资源成功线程,记录当前拥有该资源的线程(基于锁的可重入性,进行设计),没有获取成功的线程加入等待容器(一般特指数组,链表,队列等存放资源的容器),并阻塞等待.成功获取资源的线程,执行完业务逻辑
2021-01-17 18:41:35 120
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人