底层原理
wangshili程序员
这个作者很懒,什么都没留下…
展开
-
SpringBoot自动配置原理-通俗易懂
SpringBoot自动配置原理和手写starter-通俗易懂自动配置原理1.主程序的 @SpringBootApplication进入,这个注解包含了一个重要的注解 @EnableAutoConfiguration。2.@EnableAutoConfiguration包含了一个 @Import注解,并且会加载AutoConfigurationImportSelector类。3.其中的selectImports()方法通过SpringFactoriesLoader.loadFactoryNames原创 2020-08-16 16:27:13 · 502 阅读 · 0 评论 -
什么是循环依赖,Spring是如何解决的,为什么要使用三级缓存来解决,二级缓存不能吗
关于源码好多文章都写了源码,而且源码还是要看视频学着去看才可能看的懂,这里就不贴了,主要是简介明了的说一下循环依赖以及Spring中是如何解决的。什么是循环依赖大家了解过套娃没,挺类似的,不过这个是A套B,B又套A,死循环了,所以就有了循环依赖的问题。在创建A的时候发现A中的属性需要B对象,那就先去创建B对象,又发现B中的属性需要A对象,那又去创建A,形成死循环,这就是循环依赖。在了解Spring解决循环依赖问题之前,需要了解注入属性的方式、Spring中的三级缓存、bean的创建过程。关于注入属原创 2020-08-14 17:05:44 · 5167 阅读 · 19 评论 -
Sychronized底层原理及特性详解
特性原子性 原子性就是一个操作或者多个操作要么一起执行,要么不执行。比如i++就是不具备原子性,它是先取出i的数据再进行加1,那这个过程在多线程中可能会出现脏读的情况。(Volatile与Sychronized的最大区别就是不具备原子性)可见性 Sychronzied被加锁对象的锁对于每个线程都是可见的,都能获取到锁的状态,在释放锁之前,会把最新的值更新到主存,保证值都是最新状态。 Volatile修饰的变量,每当值要改变时,都会立即更新到主存中,主存的内容对于其他线程都是可见的,就能保证值原创 2020-05-30 09:50:39 · 1193 阅读 · 0 评论 -
HashCode跟地址值的关系
关于底层很详细的解析,总结来说就是跟地址可能有关系,要看设置的是什么hashCode模式,JDK8是默认按照下面的方式进行的,C++源码如下 // Marsaglia's xor-shift scheme with thread-specific state // This is probably the best overall implementation -- we'll // likely make this the default in future releases.原创 2020-05-17 23:50:34 · 1609 阅读 · 0 评论