OpenJDK-Mybatis源码研究
小雷FansUnion
懂商业的技术合伙人。个人微信:FansUnion
微信订阅号:XiaoLeiFansUnion。
展开
-
OpenJDK源码研究笔记(一)-参数检查&抛出带关键错误提示信息的异常
OpenJDK源码研究笔记系列文章,是我在阅读OpenJDK7源码的过程中的一些体会、收获、看法。把研究过程中的成长和收获一点点地整理出来,是对自己研究学习的一个小结,也有可能给学习Java的一些同学带来一些启发。我打算每篇只讲解一点,这样篇幅较小,读起来没有太大压力。写起来压力也小,抽出10到20分钟就可以写1篇。本篇简要介绍,方法/函数体内的参数检查,遇到不合法的输入参数时,抛出带关键错误提示信息的异常。原创 2013-10-14 18:30:22 · 4829 阅读 · 2 评论 -
OpenJDK源码研究笔记(十六):在Java中使用JavaScript脚本语言
友情提示本文主要参考了51CTO上的一篇文章,代码经过自己的模仿和整理,还算凑合。本文中的代码注释比较多,不再过多解释。更多用法,还是得看JDK的API或者看原文http://developer.51cto.com/art/201007/208812.htm。1.可用的脚本引擎 /** * Java内置只支持JavaScript一种脚本 * 打印Script引擎的一些信息原创 2014-01-07 23:06:53 · 3618 阅读 · 6 评论 -
OpenJDK源码研究笔记(三)-RandomAccess等标记接口的作用
标识接口是没有任何方法和属性的接口。它仅仅表明它的类属于一个特定的类型,供其他代码来测试允许做一些事情。下面来看一个标记接口RandomAccess。public interface RandomAccessList 实现所使用的标记接口,用来表明其支持快速(通常是固定时间)随机访问。此接口的主要目的是允许一般的算法更改其行为,从而在将其应用到随机或连续访问列表时能提供良好的性能。将操作随机访问列原创 2013-10-17 12:43:59 · 3757 阅读 · 8 评论 -
OpenJDK源码研究笔记(五)-缓存Integer等类型的频繁使用的数据和对象,大幅度提升性能(一道经典的Java笔试题)
本文先给出一个看似很简单实则有深意的Java笔试面试题,引出JDK内部的缓存。JDK内部的缓存,主要是为了提高Java程序的性能。你能答对这道“看似简单,实则有深意”的Java题目?原创 2013-10-20 09:37:49 · 4361 阅读 · 1 评论 -
Mybatis源码研究7:缓存的设计和实现
一、包概述(org.apache.ibatis.cache) 本包包含了Mybatis框架的缓存接口的定义和实现。 本包只引用了Mybatis的io包的Resources,不依赖于任何第三方库。 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。 二、类和接口概述 缓存框架按照 Key-Value方式存储,Key的生成采取规则为:原创 2012-12-05 11:16:58 · 4445 阅读 · 3 评论 -
Mybatis源码研究6:元数据(metadata)
原理分析之六:元数据(metadata) 一、依赖关系 本包对mybatis的其它包没有任何依赖,mybatis的其它包也不依赖于本包, 即本包可以作为单独的组件或者工具类提出来。 二、类功能概述 包含了3个元数据实体类和一个工厂类。 Table是对表的简单封装,包括name,columns,primaryKey,catalog,schema。原创 2012-12-05 10:16:24 · 5549 阅读 · 2 评论 -
Mybatis源码研究5:数据源的实现
一、数据源概述 数据源相关核心类位于datasource包中,本包主要引用了Mybatis的reflection的ExceptionUtil类和loggin包的Log接口和LogFactory类。 Mybatis的session包的Configuration类,builder.xml包的XMLConfigBuilder类引用了本包中的类和接口。 二、核心接口 DataS原创 2012-12-04 14:25:34 · 3711 阅读 · 3 评论 -
Mybatis源码研究4:日志框架的实现
一、logging包的概述本包主要依赖了 Mybatis的reflection包的ExceptionUtil和io包的Resources, 以及第三方的Log4j,Slf4j,CommonsLogging。 Mybatis的其它包大量引用了本包中的类和接口,即严重依赖于本包。 从Mybatis自身的包和类来看,logging包对其它包仅有少量的依赖,而其它很原创 2012-12-04 13:13:15 · 3735 阅读 · 0 评论 -
Mybatis源码研究2:框架整体设计
本文转载自:http://chenjc-it.iteye.com/blog/14609901.引言本文主要讲解Mybatis的整体程序设计,理清楚框架的主要脉络。后面文章我们再详细讲解各个组件。2.整体设计 2.1 总体流程 (1)加载配置并初始化触发条件:加载配置文件配置来源于两个地方,一处是配置文件,一处是Java代码的注解,将SQL的配置信息加载成为一个个Mapp原创 2012-12-04 11:19:05 · 4365 阅读 · 0 评论 -
Mybatis源码研究1:从JDBC到Mybatis
本文转载自:http://chenjc-it.iteye.com/blog/1455688 已经写得很好了,不想再重复写。 1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。2.JDBC实现查询分析 我们先看看我们最熟悉也是最原创 2012-12-04 11:17:05 · 5049 阅读 · 6 评论 -
Mybatis源码研究序
公司开发项目中,用到了Mybatis这个框架。所以,开始了对Mybatis的认真学习-应用-研究。 DbUtils,Mybatis,Struts2,Hibernate3,Spring3 的源码都瞧了瞧,复杂度比较如下: DbUtils 在认真研究Mybatis之前,认真研究了DbUtils和Struts2,大致了解了 Hibernate3原创 2012-12-04 11:10:04 · 7358 阅读 · 5 评论 -
OpenJDK源码研究笔记(十四):三种经典的设计方法,接口,接口-抽象类-具体实现类,接口-具体实现类
在研究OpenJDK源码过程中,我发现常用的设计方法就是2种:接口,接口-抽象类-具体实现类 。在一些其它开源框架和业务开发中,经常存在着第3种设计,接口-具体实现类。原创 2013-11-08 00:04:43 · 3430 阅读 · 2 评论 -
OpenJDK源码研究笔记(十三):Javac编译过程中的上下文容器(Context)、单例(Singleton)和延迟创建(LazyCreation)3种模式
在阅读Javac源码的过程中,发现一个上下文对象Context。这个对象用来确保一次编译过程中的用到的类都只有一个实例,即实现我们经常提到的“单例模式”。今天,特意对这个上下文容器进行解析,主要是讲解上下文容器、单例模式和延迟创建。通过对OpenJDK和Javac源码的一点点解析,希望自己能够搞懂JDK和Javac的实现。原创 2013-11-06 12:24:21 · 3233 阅读 · 4 评论 -
OpenJDK源码研究笔记(二)-Comparable和Comparator2个接口的作用和区别(一道经典的Java笔试面试题)
Comparable和Comparator是JDK中定义的2个比较接口,很相似,但又有所不同。这2个接口的作用和区别也是Java中的常见经典面试题。下面我们就来详细介绍下这2个接口的定义、作用、区别、模式、应用场景和代码案例。定义public interface Comparable { public int compareTo(T o);}public interface Comparato原创 2013-10-16 15:58:03 · 4149 阅读 · 1 评论 -
OpenJDK源码研究笔记(四)-编写和组织可复用的工具类和方法
本篇主要讲解java.util.Arrays这个针对数组的工具类。原创 2013-10-20 09:28:06 · 3505 阅读 · 7 评论 -
OpenJDK源码研究笔记(六)--观察者模式工具类(Observer和Observable)和应用示例
本文主要讲解OpenJDK观察者模式的2个工具类,java.util.Observer观察者接口,java.util.Observable被观察者基类。然后,给出了一个常见的观察者应用示例。原创 2013-10-26 06:25:15 · 3902 阅读 · 2 评论 -
OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构
最近在看OpenJDK源码的过程中,顺便看了Java编译器(javac)的源码。 为了理解javac的源码,需要先搞懂Java字节码文件(.class)的结构。 于是,我就认真看了下OpenJDK中Java字节码文件的相关源码,结合大学期间对JVM的研究,参考JVM规范第2版(英文原版),特意整理下。原创 2013-10-27 08:29:01 · 4203 阅读 · 0 评论 -
OpenJDK源码研究笔记(八)-详细解析如何读取Java字节码文件(.class)
在上一篇OpenJDK源码研究笔记(七)–Java字节码文件(.class)的结构 中,我们大致了解了Java字节码文件的结构。本篇详细地介绍了如何读取.class文件的大部分细节。原创 2013-10-27 20:36:47 · 5791 阅读 · 10 评论 -
OpenJDK源码研究笔记(九)-可恨却又可亲的的异常(NullPointerException)
对于一个新人来讲,遇到异常经常会压力大,手忙脚乱,心生畏惧。对于一个程序老鸟来说,看到异常的名字,就能够镇定自若,很快搞定问题。没有异常,才是最难解决的问题。原创 2013-10-31 00:08:29 · 3370 阅读 · 0 评论 -
OpenJDK源码研究笔记(十五):吐槽JDK中的10个富有争议的设计
前14篇文章,分享了JDK中值得学习和借鉴的编码和设计方法。每个硬币都是有两面的。Every coin has two sides。当然,JDK中也有很多值得改进或者说富有争议的设计。本篇,就来详细吐槽下JDK中的10个富有争议的设计。原创 2013-11-09 09:49:29 · 4727 阅读 · 9 评论 -
OpenJDK源码研究笔记(十):枚举的高级用法,枚举实现接口,竟是别有洞天
在研究OpenJDK,Java编译器javac源码的过程中,发现以下代码。顿时发现枚举类竟然也有如此“高端大气上档次”的用法。内容摘要:沙场点兵(用法源码)、指点江山(代码说明)、别有洞天(受益匪浅)、小试牛刀(使用示例)。原创 2013-11-02 08:47:40 · 4013 阅读 · 9 评论 -
OpenJDK源码研究笔记(十一):浅析Javac编译过程中的抽象语法树(IfElse,While,Switch等语句的抽象和封装)
浅析OpenJDK源码编译器Javac的语法树包com.sun.source.tree。抽象语法树,是编译原理中的经典问题,有点难,本文只是随便写写。原创 2013-11-03 08:47:16 · 5093 阅读 · 0 评论 -
OpenJDK源码研究笔记(十二):JDBC中的元数据,数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaDa
元数据最本质、最抽象的定义为:data about data (关于数据的数据)。它是一种广泛存在的现象,在许多领域有其具体的定义和应用。JDBC中的元数据,有数据库元数据(DatabaseMetaData),参数元数据(ParameterMetaData),结果集元数据(ResultSetMetaData)分别封装了数据库产品名字等数据库信息、查询参数的个数等参数信息、结果集的列数等结果集信息。原创 2013-11-05 12:23:33 · 3699 阅读 · 0 评论 -
Mybatis源码研究3:包和类的概述
org.apache.ibatis 1.annotation 本包定义了Mybatis框架中的24个注解。 本包对Mybatis的其它包没有任何依赖,也不依赖于第三方的库。 本包只被builder.annotation包的MapperAnnotationBuilder类引用。 2.binding 映射绑定,mapper.xml等映射文件相关实体的原创 2012-12-04 11:22:56 · 3877 阅读 · 0 评论