10 2020 档案

ConcurrentHashMap扩容分析
摘要:CHM的扩容方法是 transfer ,发现调用该方法的地方一共有三处 tryPresize 在treeifyBin被调用,判断该数组节点相关元素是不是已经超过8个的时候,此时要判断桶的数量是不是超过了64个,如果还没超过就先扩容。如果超过则把链表转为树 helpTransfer 一个线程要对tab 阅读全文

posted @ 2020-10-31 21:23 MaXianZhe 阅读(203) 评论(0) 推荐(0) 编辑

LongAdder源码分析
摘要:之前一直没有重视LongAdder这个类,直到开始看ConcurrentHashMap源码后才发现在ConcurrentHashMap中计算map的size使用的正是LongAdder。 只不过ConcurrentHashMap并没有直接引用LongAdder,而是把LongAdder中的代码都拷贝 阅读全文

posted @ 2020-10-27 21:55 MaXianZhe 阅读(219) 评论(0) 推荐(0) 编辑

使用SpringAop意外发现了神坑
摘要:今天使用aop时,发现一件很值得研究的事情。 我使用aop对一个service类的一个方法进行@After加强,该方法是开启了事务的,姑且叫它func()。 我也是看过aop源码的,我本以为func()的执行如果func()方法本身不报错,那么对它进行事务增强的Interceptor就会执行完毕,事 阅读全文

posted @ 2020-10-21 22:51 MaXianZhe 阅读(317) 评论(0) 推荐(0) 编辑

关于HashMap的两个小知识点
摘要:1 在put的时候,使用的并不是原始的hash值 而是高16位不变,低16位是 高十六位和低十六位异或 static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >> 阅读全文

posted @ 2020-10-19 17:46 MaXianZhe 阅读(103) 评论(0) 推荐(0) 编辑

ConcurrentHashMap红黑数的读写逻辑
摘要:本文就ConcurrentHashMap红黑树的读写逻辑,尤其是jdk怎么控制读写同步的逻辑梳理下 本文要讨论的问题主要分两种 1 有线程在读,写进程怎么办? 2 有线程在写,读进程怎么办? TreeBin的hash值 -2哦 static final int TREEBIN = -2; // ha 阅读全文

posted @ 2020-10-19 16:03 MaXianZhe 阅读(226) 评论(0) 推荐(0) 编辑

ConcurrentHashMap中sizeCtl的说明
摘要:ConcurrentHashMap设计很强,其中sizeCtl设计十分巧妙。但是在网上查资料真的是以讹传讹啊。所以,我来写一下sizeCtl的说明。 sizeCtl有多重含义,其中除了扩容的时候难理解外,其他的比较好理解 · 1 如果一个ConcurrentHashMap正在初始化,值为-1 2 C 阅读全文

posted @ 2020-10-19 10:44 MaXianZhe 阅读(1412) 评论(0) 推荐(1) 编辑

Spring源码解析(七) -- Spring事务-初始化篇
摘要:spring中事务也是很重要的知识点,有了之前的aop的知识,分析事务源码会更容易懂。 1 事务入口 要想使用事务,就需要在配置文件里加tx命名空间。同时配置文件里要这么配 <tx:annotation-driven transaction-manager="transactionManager" 阅读全文

posted @ 2020-10-15 20:09 MaXianZhe 阅读(277) 评论(0) 推荐(0) 编辑

Spring源码解析(六) -- AOP
摘要:最近项目上上了一个功能用到了aop。事情是这样的,本来是我们自己管理调用原生的kafka接口的。不过由于能力有限,决定把kafka交给公司的专业团队。这就有一个需求,要把kafka相关的调用换成公司团队提供的接口。为了不动之前的代码,我采用了aop的方式。对于aop原理还是懂一点点的,源码之前也看过 阅读全文

posted @ 2020-10-13 15:19 MaXianZhe 阅读(208) 评论(0) 推荐(0) 编辑

Spring源码解析(五) -- 解决循环依赖
摘要:在上一节Spring源码解析(四)中,有一些代码并没有仔细分析。而这些代码都和spring解决循环依赖相关的。比较重要的有两处 第一处在 AbstractAutowireCapableBeanFactory的 doCreateBean方法 if (instanceWrapper == null) { 阅读全文

posted @ 2020-10-09 14:17 MaXianZhe 阅读(324) 评论(0) 推荐(0) 编辑

Spring源码解析(四) -- getBean(String name, Class<T> requiredType)
摘要:前言 早在分析beanFactoryPostProcessor的时候,就出现了BeanFactory.getBean方法,因为每一个beanFactoryPostProcessor也是spring管理的bean,也是要经过spring实例化和初始化才能够使用的,只是当时该方法还不是要分析的重点。 这 阅读全文

posted @ 2020-10-07 18:02 MaXianZhe 阅读(882) 评论(0) 推荐(0) 编辑

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示