2020年11月3日

Mybatis的结果集中的Do要不要有setter

摘要: 这个问题起源于我和同事一次讨论,我说一个Do必须要有setter,同事说不用,结果打脸了,真的不需要一定要有setter。 我当时就纳闷了,怎么做到的呢?于是我翻了下源码 终于让我找到了 整个ResultSetHandler就不分析了,过程也并不复杂 public class SetFieldInv 阅读全文

posted @ 2020-11-03 17:57 MaXianZhe 阅读(175) 评论(0) 推荐(0) 编辑

MyBatis整合Spring怎么使用connnection

摘要: 今天下午突然脑袋灵光一闪,就想到了mybatis在整合了spring后,在web环境下多线程的时候是怎么使用connnection的呢? 于是我翻出了源码 DefaultSqlSessionFactory private SqlSession openSessionFromDataSource(Ex 阅读全文

posted @ 2020-11-03 17:50 MaXianZhe 阅读(257) 评论(0) 推荐(0) 编辑

2020年10月31日

ConcurrentHashMap扩容分析

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

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

2020年10月27日

LongAdder源码分析

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

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

2020年10月21日

使用SpringAop意外发现了神坑

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

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

2020年10月19日

关于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 阅读(213) 评论(0) 推荐(0) 编辑

ConcurrentHashMap中sizeCtl的说明

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

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

2020年10月15日

Spring源码解析(七) -- Spring事务-初始化篇

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

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

2020年10月13日

Spring源码解析(六) -- AOP

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

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

导航