自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 spring源码系列四 aop事物的实现

上面把aop大概源码介绍了,看一下aop怎么实现事物的,例如(@Transactional),aop里面说到 aop的执行流程,都是执行的拦截器,我们看一下事物拦截器的源码public class TransactionInterceptor extends TransactionAspectSupport implements MethodInterceptor, Serializable { //省略了一部分代码 @Override @Nullable public Object invok

2021-04-22 16:06:42 139

原创 spring源码系列三(spring aop 3)

我们看一下目标方法被拦截并执行的过程源码public Object intercept(Object proxy, Method method, Object[] args, MethodProxy methodProxy) throws Throwable { Object oldProxy = null; boolean setProxyContext = false; Object target = null; TargetSource targetSource = this

2021-04-22 15:43:43 131

原创 spring源码系列三(spring aop 2)

在springbean生命周期的时候,我们会看到一个这个注册AnnotationAwareAspectJAutoProxyCreator,我们看一下这个的继承关系uml图看最上面有一个BeanPostProcessor,这里定义bean实例化前后执行的方法,AbstractAutoProxyCreator这个抽象类实现的,看一下逻辑public Object postProcessBeforeInstantiation(Class<?> beanClass, String beanName

2021-04-20 17:21:16 127

原创 spring源码系列三(spring aop)

Spring是否支持注解的AOP是由一个配置文件控制的,也就是aop:aspectj-autoproxy/,我们就先看一下这个aop标签,先看这个源码public class AopNamespaceHandler extends NamespaceHandlerSupport {@Overridepublic void init() {// In 2.0 XSD as well as in 2.1 XSD.registerBeanDefinitionParser(“config”, new Co

2021-04-17 17:59:36 90

原创 spring源码系列二(Bean生命周期)

bean的生命周期如下:然后我们通过源码来看//这个类父类提供抽象,子类实现,父类@Overrideprotected Object createBean(String beanName, RootBeanDefinition mbd, @Nullable Object[] args)throws BeanCreationException { if (logger.isTraceEnabled()) { logger.trace("Creating instance of bean '"

2021-04-16 18:16:34 93

原创 spring源码系列一(BeanDefinition)

BeanDefinition顾名思义就是对bean抽象的一个接口定义,看一下有定义了啥东西大家就明白了,public interface BeanDefinition extends AttributeAccessor, BeanMetadataElement { /** * 这两个参数应该一看就明白了,singleton和prototype,这个可以看出spring默认提供这两种模式 * @see #setScope */String SCOPE_SINGLETON = Configurabl

2021-04-16 12:04:04 132

原创 java线程池详细介绍

阿里 对使用线程的规范如下:3. 【强制】线程资源必须通过线程池提供,不允许在应用中自行显式创建线程。说明:线程池的好处是减少在创建和销毁线程上所消耗的时间以及系统资源的开销,解决资源不足的问 题。如果不使用线程池,有可能造成系统创建大量同类线程而导致消耗完内存或者“过度切换”的问题4. 【强制】线程池不允许使用 Executors 去创建,而是通过 ThreadPoolExecutor 的方式,这样的处理方式让写的同学更加明确线程池的运行规则,规避资源耗尽的风险。所以说我们平常使用的多线程大部数线

2021-04-15 20:37:57 96

原创 dubbo 那些坑(通过源码分析)

1、父子类同属性的问题如果父类和子类同属性的,比如说插入数据 父子类 子类有父类的同一个属性,然后消费这是获取不到的原因是:dubbo默认采用的是hessian序列化&反序列化方式,JavaDeserializer在获取fileds时,采用了Map去重。但是在读取值时,根据serializer的顺序,对于同名字段,子类的该字段值会被赋值两次,总是被父类的值覆盖,导致子类的字段值丢失。我们看源码 反序列化方法public JavaDeserializer(Class cl) { thi

2021-04-15 19:19:02 716

原创 mysql sql优化心得

1、尽量避免使用子查询例如:SELECT * FROM t1 WHERE id IN (SELECT id FROM t2 WHERE name=‘wyt’);子查询在MySQL5.5版本里,内部执行计划器是这样执行的:先查外表再匹配内表,而不是我们认为的先查出整个内表t2,作为临时表给外表使用mysql在5.6版本里面做了优化,在执行sql优化器,优化成 joinSELECT * FROM t1 LEFT JOIN t2 on t1.id=t2.id where t2. name='wyt;

2021-04-03 15:35:52 153

原创 mysql 锁的认知

MySQL中根据锁粒度分三种锁机制:行锁(锁定粒度小,发生锁冲突的概率低,并发度高),表锁(锁定力度大,发生锁冲突概率高,并发度最低),页锁(锁定粒度介于表锁和行锁之间,并发度一般)。当需要对表中的某条数据进行写操作(insert、update、delete、select for update)时,需要先获取记录的排他锁(X锁),这个就称为行锁。MySQL GAP锁存在于MySQL隔离级别为REPEATABLE-READ或更高级别情况下,为了防止幻读,于是有gap锁和next-key锁存在,除了对

2021-04-02 15:47:22 104

原创 auth2解读

auth2四种模式第一种授权模式,指的是第三方应用先申请一个授权码,然后再用该码获取令牌。通过https://b.com/oauth/authorize?response_type=code&client_id=CLIENT_ID&redirect_uri=CALLBACK_URL&scope=read然后跳转到 CALLBACK_URL?code=AUTHORIZATION_CODE然后请求 /oauth/token?client_id=CLIENT_ID&cl

2021-03-19 16:15:46 3270

原创 springcloud分布式日志链路跟踪

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-03-18 17:34:10 958 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除