RAFT-NOTE
《云原生分布式存储基石 etcd深入解析》读书笔记,深入解读了Raft论文,并列举了集群的各种异常情况,最后附上Raft的性能优化。
Spring-事务原理
Spring事务通过自动配置+AOP拦截器实现,在拦截器中获取事务的注解和事务管理器,invoke调用目标方法,出现异常则通过事务管理器进行回滚。
Spring-aop原理
对于Spring的源码确实不能一路往下debug,不然人容易迷失,需要了解一些常见接口的作用,也要大胆猜测作者的思路。
Spring-循环依赖
源码分析Spring如何解决循环依赖,还有一些Q&A。
Spring-bean的生命周期
没看源码,直接验证,大概就是:实例化、接口回调、初始化和销毁。
Spring-组件注册
学会使用使用@Import、ImportSelector和ImportBeanDefinitionRegistor等方式批量注册组件,掌握有助于定制化IOC容器开发。
ArrayBlockingQueue
有界并阻塞,数组存储,ReentrantLock保证线程安全,资源不足时,offer和poll返回false,put和take会进入条件队列等待,size结果准确。
LinkedBlockingQueue
有界并阻塞队列,底层采用单向队列保存数据,内部使用两个ReentrantLock实现线程安全,分别用于用于执行poll等消费性性操作和offer等生产性操作,size方法的结果是准确的。
ConcurrentLinkedQueue
无界非阻塞,单向链表处处,volatile+CAS无锁操作保证线程安全,在并发情况下size结果可能不准确。
HashMap
🔍分析了JDK1.8 HashMap的源码,图示并发情况下的JDK1.7和JDK1.8 HashMap的问题,另外有负载因子的一些个人猜想和证明。