摘要: 原文地址/xrq730/p/7048693.html,转载请注明出处,谢谢 前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。阅读全文
posted @ 2017-06-20 23:33 五月的仓颉 阅读(2010) 评论(16) 编辑
摘要: 原文地址/xrq730/p/7003082.html,转载请注明出处,谢谢 前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础。这篇文章最后的推荐以及回复认为我写的对大家有帮助的评论有很多,但是现在阅读全文
posted @ 2017-06-19 00:26 五月的仓颉 阅读(2414) 评论(11) 编辑
摘要: 原文地址/xrq730/p/6867924.html,转载请注明出处,谢谢! 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结阅读全文
posted @ 2017-05-20 13:35 五月的仓颉 阅读(1329) 评论(5) 编辑
摘要: 置顶一篇文章,主要是整理一下写过的JDK中各个类的源码及其他框架源码解析的文章,方便自己随时阅读也方便网友朋友们阅读与指正 基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:阅读全文
posted @ 2017-05-01 13:46 五月的仓颉 阅读(1176) 评论(2) 编辑
摘要: 问题描述 业务有一个需求,我把问题描述一下: 不知道这个问题有没有说清楚,没说清楚没关系,写一段测试代码: 简单说就是,传入一个IP,尽量构建一个全局唯一的字符串(这么做的原因是,如果字符串的唯一性不强,比方说锁的"192.168.1.1",如果另外一段业务代码也是锁的这个字符串"192.168.1阅读全文
posted @ 2017-04-04 13:37 五月的仓颉 阅读(2077) 评论(14) 编辑
摘要: 公平模式ReentrantLock实现原理 前面的文章研究了AbstractQueuedSynchronizer的独占锁和共享锁,有了前两篇文章的基础,就可以乘胜追击,看一下基于AbstractQueuedSynchronizer的并发类是如何实现的。 ReentrantLock显然是一种独占锁,首阅读全文
posted @ 2017-07-03 09:28 五月的仓颉 阅读(464) 评论(4) 编辑
摘要: 共享模式acquire实现流程 上文我们讲解了AbstractQueuedSynchronizer独占模式的acquire实现流程,本文趁热打铁继续看一下AbstractQueuedSynchronizer共享模式acquire的实现流程。连续两篇文章的学习,也可以对比独占模式acquire和共享模阅读全文
posted @ 2017-07-02 21:16 五月的仓颉 阅读(309) 评论(10) 编辑
摘要: JVM的四种引用状态 在Java虚拟机5:Java垃圾回收(GC)机制详解一文中,有简单提到过JVM的四种引用状态,当时只是简单学习,知道有这么一个概念,对四种引用状态理解不深。这两天重看虚拟机这部分的时候,写了很多例子详细研究了一下JVM的几种引用,对于JVM的引用理解加深了不少,因此总结写一篇文阅读全文
posted @ 2017-06-27 22:01 五月的仓颉 阅读(766) 评论(6) 编辑
摘要: 关于AbstractQueuedSynchronizer JDK1.5之后引入了并发包java.util.concurrent,大大提高了Java程序的并发性能。关于java.util.concurrent包我总结如下: AbstractQueuedSynchronizer是并发类诸如Reentra阅读全文
posted @ 2017-06-23 00:09 五月的仓颉 阅读(529) 评论(5) 编辑
摘要: 原文地址/xrq730/p/7048693.html,转载请注明出处,谢谢 前言 我们知道volatile关键字的作用是保证变量在多线程之间的可见性,它是java.util.concurrent包的核心,没有volatile就没有这么多的并发类给我们使用。阅读全文
posted @ 2017-06-20 23:33 五月的仓颉 阅读(2010) 评论(16) 编辑
摘要: 原文地址/xrq730/p/7003082.html,转载请注明出处,谢谢 前言 一年半前写了一篇文章Spring3:AOP,是当时学习如何使用Spring AOP的时候写的,比较基础。这篇文章最后的推荐以及回复认为我写的对大家有帮助的评论有很多,但是现在阅读全文
posted @ 2017-06-19 00:26 五月的仓颉 阅读(2414) 评论(11) 编辑
摘要: 一个对象占多少字节? 关于对象的大小,对于C/C++来说,都是有sizeof函数可以直接获取的,但是Java似乎没有这样的方法。不过还好,在JDK1.5之后引入了Instrumentation类,这个类提供了计算对象内存占用量的方法。至于具体Instrumentation类怎么用就不说了,可以参看这阅读全文
posted @ 2017-06-14 15:56 五月的仓颉 阅读(619) 评论(1) 编辑
摘要: MyBatis缓存 我们知道,频繁的数据库操作是非常耗费性能的(主要是因为对于DB而言,数据是持久化在磁盘中的,因此查询操作需要通过IO,IO操作速度相比内存操作速度慢了好几个量级),尤其是对于一些相同的查询语句,完全可以把查询结果存储起来,下次查询同样的内容的时候直接从内存中获取数据即可,这样在某阅读全文
posted @ 2017-06-12 23:39 五月的仓颉 阅读(1061) 评论(7) 编辑
摘要: MyBatis插件原理 从<plugins>解析开始 本文分析一下MyBatis的插件实现原理,在此之前,如果对MyBatis插件不是很熟悉的朋友,可参看此文MyBatis7:MyBatis插件及示例 打印每条SQL语句及其执行时间,本文我以一个例子说明了MyBatis插件是什么以及如何实现。由于M阅读全文
posted @ 2017-06-11 16:23 五月的仓颉 阅读(454) 评论(0) 编辑
摘要: 示例代码 之前的文章说过,对于MyBatis来说insert、update、delete是一组的,因为对于MyBatis来说它们都是update;select是一组的,因为对于MyBatis来说它就是select。 本文研究一下select的实现流程,示例代码为: selectMailById方法的阅读全文
posted @ 2017-06-11 12:44 五月的仓颉 阅读(574) 评论(0) 编辑
摘要: Plugins 摘一段来自MyBatis官方文档的文字。 MyBatis允许你在某一点拦截已映射语句执行的调用。默认情况下,MyBatis允许使用插件来拦截方法调用 Executor(update、query、flushStatements、commint、rollback、getTransacti阅读全文
posted @ 2017-06-09 19:13 五月的仓颉 阅读(1486) 评论(2) 编辑
摘要: Configuration的newStatementHandler分析 SimpleExecutor的doUpdate方法上文有分析过: 这两天重看第5行的newStatementHandler方法的时候,发现方法上文在这个方法中分析地太简略了,这里过一遍一下Configuration的newSta阅读全文
posted @ 2017-06-07 09:16 五月的仓颉 阅读(668) 评论(0) 编辑
摘要: TCP是什么 首先看一下OSI七层模型: 然后数据从应用层发下来,会在每一层都加上头部信息进行封装,然后再发送到数据接收端,这个基本的流程中每个数据都会经过数据的封装和解封的过程,流程如下图所示: 在OSI七层模型中,每一层的作用和对应的协议如下图所示: 说回TCP,简单说TCP(Transmiss阅读全文
posted @ 2017-05-31 23:41 五月的仓颉 阅读(1192) 评论(2) 编辑
摘要: 红黑树移除节点 上文详细讲解了红黑树的概念,红黑树的插入及旋转操作,根据测试代码建立起来的红黑树结构为: 本文先研究一下红黑树的移除操作是如何实现的,移除操作比较复杂,具体移除的操作要进行几次旋转和移除的节点在红黑树中的位置有关,这里也不特意按照旋转次数选择节点了,就找三种位置举例演示红黑树移除操作阅读全文
posted @ 2017-05-25 19:44 五月的仓颉 阅读(484) 评论(1) 编辑
摘要: 原文地址/xrq730/p/6867924.html,转载请注明出处,谢谢! 初识TreeMap 之前的文章讲解了两种Map,分别是HashMap与LinkedHashMap,它们保证了以O(1)的时间复杂度进行增、删、改、查,从存储角度考虑,这两种数据结阅读全文
posted @ 2017-05-20 13:35 五月的仓颉 阅读(1329) 评论(5) 编辑
摘要: 打开一个会话Session 前文分析了MyBatis将配置文件转换为Java对象的流程,本文开始分析一下insert方法、update方法、delete方法处理的流程,至于为什么这三个方法要放在一起说,是因为: 示例代码为这段: 首先关注的是第2行的代码,ssf是SqlSessionFactory,阅读全文
posted @ 2017-05-09 12:29 五月的仓颉 阅读(673) 评论(2) 编辑
摘要: 元素设置 继续MyBatis的Configuration加载源码分析: 上回看到了第7行的<typeAlias>标签的解析,后面先暂时跳过<plugins>、<objectFactory>、<objectWrapperFactory>、<reflectorFactory>、<typeHandlers阅读全文
posted @ 2017-05-08 18:34 五月的仓颉 阅读(346) 评论(0) 编辑
摘要: config.xml解析为org.w3c.dom.Document 本文首先来简单看一下MyBatis中将config.xml解析为org.w3c.dom.Document的流程,代码为上文的这部分: 第3行的代码实现为: 相当于就是将输入的路径转换为一个字符输入流并返回。 接着继续看静态块第4行的阅读全文
posted @ 2017-05-06 10:36 五月的仓颉 阅读(564) 评论(0) 编辑
摘要: 前言 之前一段时间写了【Spring源码分析】系列的文章,感觉对Spring的原理及使用各方面都掌握了不少,趁热打铁,开始下一个系列的文章【MyBatis源码分析】,在【MyBatis源码分析】文章的基础之上,可以继续分析数据库连接池、Spring整合MyBatis源码、Spring事物管理tx等等阅读全文
posted @ 2017-05-01 15:39 五月的仓颉 阅读(1248) 评论(1) 编辑
摘要: 置顶一篇文章,主要是整理一下写过的JDK中各个类的源码及其他框架源码解析的文章,方便自己随时阅读也方便网友朋友们阅读与指正 基础篇 从为什么String=String谈到StringBuilder和StringBuffer Java语法糖1:可变长度参数以及foreach循环原理 Java语法糖2:阅读全文
posted @ 2017-05-01 13:46 五月的仓颉 阅读(1176) 评论(2) 编辑