
源码
文章平均质量分 81
筏镜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
AOP源码解析
前言我之前在看源码都是局限于其中一步、两步没有一个整体观,我们在看源码的时候如果能在一个整体观去看,很多时候有些内容就豁然开朗了。介绍我们先看一下,整改spring容器启动这个流程,其中AOP 就在 初始化Bean后面由BeanPostProccessor 进行后置处理将Bean替换为AOP的代理类进行操作。如果我们认识到这一点那么我们就有两个需要重点关注:第一个是关于BeanPostProccessor 实现类对容器的注入。第二个是BeanPostProccessor 的实现类对Bean本身代原创 2021-06-17 14:56:01 · 1108 阅读 · 1 评论 -
spring源码框架解析
前言我们很多时候在阅读源码之前对源码的大体结构没有一个认识,导致在看源码的时候迷失在各个代码的细节里。这篇文章试着介绍一下spring源码的大体框架。让我们能在框架里面进一步认识spring源码。介绍IOC 和AOP 的关系说起spring源码我们都会想到AOP 和IOC ,IOC 实际上就是spring 构造一个容器,将各个bean 对象初始化到这个容器的过程。AOP 是IOC的构建容器中bean的一小步,这里主要介绍关于IOC构建容器和bean 中的过程。实例化和初始化在开始这个IOC 构原创 2021-06-10 15:36:12 · 438 阅读 · 0 评论 -
ReentrantLock源码分析
ReentrantLock基本结构ReentrantLock中有3个内部类,这个三个内部类的关系为FairSync 是公平锁的主要实现类,NonfairSync 是非公平锁的主要实现类,默认为非公平锁的实现。非公平锁加锁过程非公平锁的加锁方法,加锁默认为非公平锁ReentrantLock reentrantLock = new ReentrantLock(); reentrantLock.lock();1、构造方法中没有任何参数的时候,sync 默认为非公平锁的实现。原创 2020-07-12 17:46:00 · 165 阅读 · 0 评论 -
ThreadLocal源码认识和理解
ThreadLocal是一个非常常用对象,线程的变量副本,每个线程隔离,但对具体如何实现线程隔离,这篇文章试着去了解一下。hreadLocal代码演示public class ThreadLocalDemo { private static ExecutorService executor = new ThreadPoolExecutor(5, 5, 10L, TimeUnit.SECONDS, new LinkedBlockingQueue&l原创 2020-05-30 18:11:50 · 303 阅读 · 0 评论 -
mybatis中Mapper接口的动态代理实现及仿照其例子实现接口动态注入生成实现类
我们在使用mybatis的时候,一般都只需写一个Mapper的接口类和xml文件。我们只知道接口是不能够实现功能的。这篇文章主要想通过对mybatis代码的理解,找出mybatis如何通过接口就实现对数据库的增删改查的。一、mybatis源码理解1、我这里将MapperScannerConfigurer 作为mybatis配置核心类,从这作为入口理解。aware接口:翻译过来是知道的,已感知的,意识到的,所以这些接口从字面意思应该是能感知到所有Aware前面的含义。BeanNameAware的例原创 2020-05-17 16:09:21 · 1493 阅读 · 0 评论 -
Spring循环依赖(源码上分析)
一、spring bean 的创建 四个阶段1、实例化 instantiation(createBeanInstance)2、属性赋值 Populate (populateBean)3、初始化 Initialization(initializeBean)4、销毁 Destruction(ConfigurableApplicationContext#close())二、DefaultSin...原创 2020-05-05 23:08:41 · 251 阅读 · 0 评论 -
Spring Bean的生命周期(生命周期阶段和扩展点分开)
Spring 有一些常用扩展点,了解Spring Bean的生命周期,能够对spring宏观有一定的认识,这里尝试答一下。Spring Bean的生命周期分为四个阶段。这里将spring Bean的四个阶段添加部分常用扩展点便于理解。一、spring bean 四个阶段1、实例化 instantiation(createBeanInstance)2、属性赋值 Populate (popu...原创 2020-04-05 19:01:49 · 778 阅读 · 0 评论 -
hashmap 初始化大小合适
我在公司项目中发现有个地方有初始化hashmap的容量,发现有个地方 初始化70的容量。其实即使是初始70也会转化为2^n的容量,变成初始化为128。那么今天探究一下hashmap到底初始化多少容量比较合适。 hashmap为什么需要扩容呢? 在hashmap数组扩容之后,最消耗性能的点就出现了:原数组中的数据必须重新计算其在新数组中的位置,并放进去,这就是resize...原创 2019-10-19 11:53:27 · 3602 阅读 · 0 评论