- 博客(17)
- 资源 (10)
- 收藏
- 关注
原创 mybatis源码分析 插件机制
目录简介插件机制原理源码分析植入插件逻辑执行插件逻辑实现一个分页插件注意:本文转自https://www.tianxiaobo.com/2018/08/26/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E6%8F%92%E4%BB%B6%E6%9C%BA%E5%88%B6/简介一般情况下,开源框架都会提供插件或其他形式的拓展点,供开发者自行拓展。这样的好处是显而易见的,一是增加了框架的灵活性。二是开发者可以结合实际需求,..
2021-05-23 21:56:48 151
原创 mybatis源码分析 缓存原理
目录简介缓存类介绍PerpetualCacheLruCacheBlockingCacheCacheKey一级缓存二级缓存总结注意:本文转自https://www.tianxiaobo.com/2018/08/25/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E7%BC%93%E5%AD%98%E5%8E%9F%E7%90%86/简介在 Web 应用中,缓存是必不可少的组件。通常我们都会用 Redis 或 me..
2021-05-23 21:47:46 122
原创 mybatis源码分析 内置数据源
目录简介内置数据源初始化过程UnpooledDataSource初始化数据库驱动获取数据库连接PooledDataSource辅助类介绍获取连接回收连接小节总结注意:本文转自https://www.tianxiaobo.com/2018/08/19/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-%E5%86%85%E7%BD%AE%E6%95%B0%E6%8D%AE%E6%BA%90/简介本篇文章将向大家..
2021-05-23 21:37:40 239
原创 mybatis源码分析 SQL 的执行过程
注意:本文转自https://www.tianxiaobo.com/2018/08/17/MyBatis-%E6%BA%90%E7%A0%81%E5%88%86%E6%9E%90-SQL-%E7%9A%84%E6%89%A7%E8%A1%8C%E8%BF%87%E7%A8%8B/简介在前面的文章中,我分析了配置文件和映射文件的解析过程。经过前面复杂的解析过程后,现在,MyBatis 已经进入了就绪状态,等待使用者发号施令。本篇文章我将分析MyBatis 执行 SQL 的过程,该过程比较复杂,涉及..
2021-05-23 21:30:16 238
原创 mybatis源码分析 映射文件解析过程
简介在上一篇文章中,我详细分析了 MyBatis 配置文件的解析过程。由于上一篇文章的篇幅比较大,加之映射文件解析过程也比较复杂的原因。所以我将映射文件解析过程的分析内容从上一篇文章中抽取出来,独立成文,于是就有了本篇文章。在本篇文章中,我将分析映射文件中出现的一些及节点,比如 <cache>,<cache-ref>,<resultMap>, <select | insert | update | delete> 等。除了分析常规的 XML 解...
2021-05-22 17:20:11 247
原创 mybatis源码分析 配置文件解析过程
目录简介配置文件解析入口解析 properties 配置解析 settings 配置settings 节点的解析过程元信息对象创建过程DefaultReflectorFactory 源码分析Reflector 源码分析PropertyTokenizer 源码分析设置 settings 配置到 Configuration 中解析 typeAliases 配置从 typeAlias 节点中解析并注册别名从指定的包中解析并注册别名注册 MyBatis 内部类
2021-05-22 16:34:41 147
原创 java多线程 SynchronousQueue源码分析
目录前言Transferer抽象类TransferStack节点成员节点类型TransferStack成员transfer方法awaitFulfillcleanTransferQueue节点成员节点类型TransferQueue成员transfer方法awaitFulfillclean无效操作总结注意:本文转自https://blog.csdn.net/anlian523/article/details/107872233前..
2021-05-07 22:30:55 171
原创 java多线程 LinkedTransferQueue源码分析
目录前言LinkedTransferQueue概述术语解释xfer交易后来的一方交易先来的一方tryAppendtryMatchDataunsplice为什么是普通语义而不是CAS内部删除 remove迭代器总结注意:本文转自 https://blog.csdn.net/anlian523/article/details/107876299前言LinkedTransferQueue是一种特殊的无界阻塞队列,它提供一种Transfer的功能,..
2021-05-07 22:18:05 190
原创 java多线程 DelayQueue源码分析
目录前言成员Leader-Follower入队出队take内存泄漏超时poll迭代器总结注意:本文转自https://blog.csdn.net/anlian523/article/details/107801405前言DelayQueue是一个无界阻塞队列,它和PriorityBlockingQueue一样是一个优先队列,但区别在于队列元素只能放置Delayed对象,而且只有元素到期后才能将其出队。内部是一个最小堆,堆顶永远是最先“到期”的那个元..
2021-05-07 22:01:52 230 2
原创 java多线程 PriorityBlockingQueue源码分析
目录前言成员构造器原地建堆入队offer扩容出队poll获取堆顶方法peek内部删除迭代器总结注意:本文转自https://blog.csdn.net/anlian523/article/details/107703623前言PriorityBlockingQueue是一个无界阻塞队列,它的出队方式不再是FIFO,而是优先级高的先出队。其内部实现是最小堆,即堆顶元素是逻辑上最小的那个元素,也是最先出队的那个元素。简单的说,如果a.com..
2021-05-06 23:00:27 166
原创 java多线程 LinkedBlockingDeque源码分析
目录前言成员构造器入队操作putFirstputLast出队操作takeFirsttakeLast删除内部节点removeFirstOccurrenceremoveLastOccurrence迭代器总结注意:本文转自 https://blog.csdn.net/anlian523/article/details/107685245前言LinkedBlockingDueue是一种有界阻塞队列,它的底层是双向链表,所以它是双向的。也就是说,..
2021-05-06 22:15:47 198
原创 java多线程 LinkedBlockingQueue源码分析
目录前言成员构造器入队addofferput超时offer入队方法总结出队removepolltake超时poll出队方法总结内部删除 remove(Object o)获取操作peekelement迭代器总结注意:本文转自 https://blog.csdn.net/anlian523/article/details/107601481前言LinkedBlockingQueue是一种FIFO(first-in..
2021-05-06 22:05:34 270
原创 java多线程 ArrayBlockingQueue源码分析
目录前言成员构造器入队addofferput超时offer总结出队peekpolltake超时poll总结remove 删除操作总结注意:本文转自 https://blog.csdn.net/anlian523/article/details/107577452前言ArrayBlockingQueue是一种FIFO(first-in-first-out 先入先出)的有界阻塞队列,底层是数组,也支持从内部删除元素。并发操作依赖..
2021-05-06 21:38:54 155
原创 java多线程 ConcurrentLinkedDeque源码分析
目录前言概述linkFirst 入队pollFirst 获取并出队first()succ()unlink()unlinkFirstskipDeletedPredecessorsupdateHeadupdateTailgc-unlinking松弛阈值unlink的Unlink interior node逻辑peekFirst 仅获取remove 删除操作size迭代器总结注意:本文转自 https://blog.csdn.ne..
2021-05-06 21:22:12 348
原创 java多线程 ConcurrentLinkedQueue源码分析
目录前言概述不变式基本不变式headtail初始化队列初始化Node初始化add/offer 入队操作出队操作pollpeekfirstremove 删除操作remove的bugsize 弱一致性的方法addAll迭代器总结注意:本文转自 https://blog.csdn.net/anlian523/article/details/107453433前言ConcurrentLinkedQueue是一种FIFO(..
2021-05-06 20:23:11 276
原创 java多线程 ScheduledThreadPoolExecutor源码分析
目录简介4个字段,方法now,内部类ScheduledTutureTask方法canRunInCurrentRunState,delayedExecute,reExecutePeriodic,onShutdown,2个decorateTask,4个构造函数方法2个triggerTime,overflowFree,4个scheduleXXX,execute,3个submit方法3个setXXX/getXXX,shutdown,shutdownNow,getQueue内部类Delayed
2021-05-05 22:35:30 233
原创 java多线程 ConcurrentHashMap源码分析
目录前言常量成员节点类构造器put 插入操作加锁情况红黑树的binCount固定为2返回情况spreadinitTablehelpTransferresizeStampsizeCtl的低16bit退出循环的条件treeifyBintryPresizeaddCount计数部分计数部分结束时扩容部分CAS失败影响扩容fullAddCountwasUncontended的作用collide的作用cellsBus
2021-05-05 22:14:54 242
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人