09 2022 档案
摘要:介绍了分布式锁的特性,模拟想要实现redis分布式锁的演变流程,分析redisson源码是如何实现分布式锁的,面对高并发下,我们该如何提升分布式锁性能
阅读全文
摘要:针对实例化过程中会做什么的分析,其中主要的是怎么推断出构造方法,怎么进行匹配
阅读全文
摘要:针对线程池底层原理详解与源码分析部分的补充,由于那边篇幅太长了,我再另开一篇补充一下定时线程池
阅读全文
摘要:深入剖析了线程池的生命周期,参数解析,调用方法详解,包括方法流程
阅读全文
摘要:仅作为索引目录,打算针对每个阻塞队列都进行剖析
阅读全文
摘要:先了解动态代理的详解,在分析AOP的演变过程,结合对AOP对工厂类的不同处理,深入剖析AOP的整个过程,附加流程图
阅读全文
摘要:CAS(Compare And Swap,比较并交换)原本指一种操作,后感觉衍生成为一种思想,作为解决并发冲突的一种手段:如自旋+CAS操作形成的乐观锁,如原子操作类的产生。究其根源:要解决并发冲突,要了解并发三大特性:可见性,有序性,原子性。那么是怎么保证这三种特性的?
阅读全文
摘要:1.说明 代理模式的解释:为其他对象提供一种代理以控制对这个对象的访问,增强一个类中的某个方法,对程序进行扩展。 2.类型: CGLib动态代理和JDK动态代理 3.使用介绍 (1)CGLib动态代理的使用 使用示例: 1、针对代理类的示例 //构建代理对象 public class TestObj
阅读全文
摘要:synchronized的意义 解决了Java共享内存模型带来的线程安全问题: 如:两个线程对初始值为 0 的静态变量一个做自增,一个做自减,各做 5000 次,结果是 0 吗?(针对这个问题进行分析) 代码展示 public class SyncDemo { private static vola
阅读全文
摘要:概念说明 逃逸分析,是一种可以有效减少Java 程序中同步负载和内存堆分配压力的跨函数全局数据流分析算法。通过逃逸分析,Java Hotspot编译器能够分析出一个新的对象的引用的使用范围从而决定是否要将这个对象分配到堆上。逃逸分析的基本行为就是分析对象动态作用域。 逃逸类型 方法逃逸(对象逃出当前
阅读全文
摘要:概念说明 Hotspot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据 (Instance Data)和对齐填充(Padding)。 对象头:比如 hash码,对象所属的年代,对象锁,锁状态标志,偏向锁(线程)ID,偏向时间,数组长度(数组对象才有)等。 实例数据
阅读全文
摘要:说明 Monitor,直译为“监视器”,而操作系统领域一般翻译为“管程”。管程是指管理共享变量以及对共享变量操作的过程,让它们支持并发。在Java 1.5之前,Java语言提供的唯一并发语言就是管程,Java 1.5之后提供的SDK并发包也是以管程为基础的。除了Java之外,C/C++、C#等高级语
阅读全文
摘要:死锁的定义 所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,每个进程持有某种资源而又都等待着别的进程释放它或它们现在保持着的资源,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进的情况,称这一组进程产生了死锁。 死锁的原因 1.竞争资源 2.进程间推进顺序非法 死锁的条件
阅读全文
摘要:计算机与进程和线程之间的关系 1.计算机中有一个重要的指标就是CPU,而CPU中又有一个重要的指标就和核心数。 2.每当我们开启一个软件的时候,如QQ,微信(运行中的程序,被称为进程)。它们的运行必然是占据了CPU,而CPU就是进程运行的重要标准。(每个进程的运行都是占据着一个CPU的资源) 3.而
阅读全文
摘要:作用 1.注解@PostConstruct可以添加在类的方法上面,如果这个类被IOC容器托管,那么在对Bean进行初始化前的时候会调用被这个注解修饰的方法 被定义在哪里? 1.被定义在了CommonAnnotationBeanPostProcessor类,这个类是InitDestroyAnnotat
阅读全文
摘要:实例化前的作用 1.初始化前,也是Spring提供的一个扩展点:BeanPostProcessor.postProcessBeforeInitialization()。 2.利用初始化前,可以对进行了依赖注入的Bean进行处理。 使用示例 1.首先必须要添加@Component注解,因为处理器不加入
阅读全文
摘要:意义 1.为什么需要自动注入? 需要自动注入的原因是基于控制反转的理念产生的,在IOC容器中,我把所有需要用的类变成Bean对象,当发现某个Bean需要用到我所拥有的其他Bean的时候,我就自动将Bean的实例赋予过去。 2.为什么现在使用自动注入的方式会被放弃? 具体原因是 容易调用无关的东西,不
阅读全文
摘要:意义 1.这部分的代码看似很简洁,但是却便于扩展,而且对于增加功能也不用改动主体代码(策略模式,也是为什么要用设计模式的原因) 2.其次是为什么要有这一步,这一步针对的是 BeanDefinition 的处理,正如我们经常在类加上一些依赖注入或者其他的注解(这里便是为了让把这些注解封装成对象,塞入到
阅读全文
摘要:作用 @DependsOn注解可以定义在类和方法上,意思是我这个组件要依赖于另一个组件,也就是说被依赖的组件会比该组件先注册到IOC容器中。 在哪里被解析 解析的地方在 ComponentScanAnnotationParser类#doScan方法 【可查看Spring基于注解的扫描底层流程】 代码
阅读全文
摘要:代码部分 说明 1.hasInstantiationAwareBeanPostProcessors()方法说明 其实是判断 AbstractBeanFactory类的hasInstantiationAwareBeanPostProcessors中 是否标志有处理器( 5.3版本后其实是存放于Bean
阅读全文
摘要:说明 意义 1.在Spring中,Bean的作用域可以通过scope属性来指定。 2.指定作用域的目的是 存储在此类单例bean的高速缓存中,并且对该命名bean的所有后续请求和引用都返回该高速缓存的对象。(本身的理念就是以空间换时间的思维,创建步骤繁杂,而且频繁用到,我就存起来,下次用的时候就不用
阅读全文