
源码
Spring源码
IT_10-
我爱编程 编程爱我❤️
展开
-
MyBatis源码简读
前期准备pom.xml:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocat...原创 2020-01-06 22:50:00 · 397 阅读 · 0 评论 -
JUC——ReentrantLock源码简读(中)
前言《JUC——ReentrantLock源码简读(上)》提到会在这篇讨论hasQueuedPredecessors() 方法,为了方便看,再来贴下源码和上篇写的注释:package java.util.concurrent.locks;public class ReentrantLock implements Lock, java.io.Serializable { // ....忽略很多源码 /** * Sync object for fair locks */原创 2020-05-21 12:44:55 · 287 阅读 · 0 评论 -
JUC——ReentrantLock源码简读(上)
先简单说下ReentrantLock的起源最开始Java自带Synchronized关键字保证并发安全,但是它最大的缺点就是它是个重量级锁,线程唤醒和挂起会进行系统调用,触发用户态和内核态的转换,主要是这个过程很耗费资源和性能。基于这个问题,ReentrantLock出现了,在JDK层面上解决线程安全问题。并发模式有两种:交替执行和并发执行。在JDK1.6之前,即使是交替执行模式,Synchronized的做法也是当一个线程来了,就要加锁,执行完了,就要释放锁。而ReentrantLock的做法是,使原创 2020-05-21 11:36:08 · 462 阅读 · 0 评论 -
Spring源码——AOP
文章目录准备分析@EnableAspectJAutoProxy创建MathCalculator的代理对象-前期流程创建MathCalculator的代理对象-中期流程(执行后置处理器)创建MathCalculator的代理对象-后期流程(开始创建)用代理对象执行目标方法拦截器链chainCglibMethodInvocation.proceed()执行拦截器链准备public class MathCalculator { public int div(int i, int j) {原创 2020-05-15 12:34:38 · 560 阅读 · 0 评论 -
Spring源码——容器创建
Spring5.0.2准备public class Blue { public Blue() { System.out.println("Blue---Constructor"); }}@ComponentScan("cn.example.ext")@Configurationpublic class ExtConfig { @Bean public Blue blue() { return new Blue(); }.原创 2020-05-14 20:38:33 · 320 阅读 · 0 评论 -
Spring源码——ApplicationListener
注:摘抄自《阿里巴巴Java开发手册》命名规范代码中的命名均不能以下划线或美元符号开始,也不能以下划线或美元符号结束。说明:定义JQuery变量时,可以用$开头表示该变量为JQuery对象,和JavaScript对象区分。代码中的命名严禁使用拼音与英文混合的方式,更不允许直接使用中文的方式。类名使用 UpperCamelCase 风格,必须遵从驼峰形式。 除特殊情形外。方法名、参数名...原创 2019-06-08 16:39:06 · 1543 阅读 · 0 评论 -
Spring源码——BeanFactoryPostProcessor和BeanDefinitionRegistryPostProcessor
同步和异步同步:一个任务的完成需要依赖另外一个任务时,只有等待被依赖的任务完成后,依赖的任务才能算完成。即如果B任务依赖于A任务,则只有当A任务完成后,B任务才算完成,A、B任务要么都成功,要么都失败。异步:不需要等待被依赖的任务完成,只是通知被依赖的任务要完成什么工作,依赖的任务也是立即执行的,只要自己完成了整个任务就算完成了。即如果B任务依赖于A任务,但是B任务可以在A任务未完成之前完成,...原创 2019-06-27 19:52:35 · 302 阅读 · 0 评论