深入学习EnumSet Set接口的实现类HashSet/TreeSet,它们内部都是用对应的HashMap/TreeMap实现的,但EnumSet的实现与EnumMap没有任何关系,而是用极为精简和高效的位向量实现的,除了实现机制,EnumSet的用法也有一些不同。与TreeSet/HashSet不同,EnumSet是一个抽象类,不能直接通过new新建,EnumSet提供了若干静态工厂方法创建EnumS...
Mybatis源码分析别名实现机制。 在Mybatis中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名在mapper文件中[code="java"] select * from user where c_id=#{id} [/code]Mybatis给我们提供了一种叫别名的机制,意思就是对某个具...
枚举中valueOf用法 Enum的特征如下:1.它不能有public的构造函数,这样做可以保证客户代码没有办法新建一个enum的实例。 2.所有枚举值都是public , static , final的。注意这一点只是针对于枚举值,我们可以和在普通类里面定义 变量一样定义其它任何类型的非枚举变量,这些变量可以用任何你想用的修饰符。 3.Enum默认实现了java.lan...
mybatis源码学习总结-class.getResource方法与claasloader.getResource方法的区别 Class.getResources(String path) path如果是以 / 开头,就从classpath中去找(classpath可以认为是eclipse的bin目录或者是target的classes目录),如果不以/开头,就以当前类的位置开始找,也就是它有两种搜索方式。.classloader不能以/为开头,classloader.getResource只能从class...
mybatis源码学习总结-class.getResource方法与claasloader.getResource方法的区别 Class.getResources(String path) path如果是以 / 开头,就从classpath中去找(classpath可以认为是eclipse的bin目录或者是target的classes目录),如果不以/开头,就以当前类的位置开始找,也就是它有两种搜索方式。.classloader不能以/为开头,classloader.getResource只能从class...
建造者模式 一种场景:客户需要设计一个汽车模型,基本的功能有启动、停止、按喇叭、引擎这些功能,执行的顺序由客户自己控制。时间紧迫的情况下,我们设计出这种模型:[code="java"]public abstract class CarModel { private ArrayList sequence = new ArrayList(); protected abstract...
使用自定义注解搭建简单框架 本文主要介绍如何使用Java运行时级别的注解配合反射来搭建框架,以下是构建sql表的简单例子,阐明了搭建运行时框架的方法1.定义两个运行时注解,分别作用于类和字段表示表名和列名[code="java"]@Retention(RetentionPolicy.RUNTIME)public @interface Table { String name();}@Re...
java注解处理器 [b]注解处理器:[/b]Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement):Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。除此之外,Java在java.lang.reflect 包下新增了Annotate...
java注解处理器 [b]注解处理器:[/b]Java SE5扩展了反射机制的API,以帮助程序员快速的构造自定义注解处理器。注解处理器类库(java.lang.reflect.AnnotatedElement):Java使用Annotation接口来代表程序元素前面的注解,该接口是所有Annotation类型的父接口。除此之外,Java在java.lang.reflect 包下新增了Annotate...
理解注解中的@Inherited @Inherited: @Inherited 元注解是一个标记注解,@Inherited阐述了某个被标注的类型是被继承的。如果一个使用了@Inherited修饰的annotation类型被用于一个class,则这个annotation将被用于该class的子类。注意:@Inherited annotation类型是被标注过的class的子类所继承。类并不从它所实现的接口...
JAVA注解总结 元注解: 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。 Java5.0定义的元注解:[code="java"] 1.@Target, 2.@Retention, 3.@Documented, 4.@Inherited[/code]...
apache-fileupload文件上传 临时文件的清理:[code="java"]FileCleaningTracker fileCleaningTracker = FileCleanerCleanup.getFileCleaningTracker(servletcontext);DiskFileItemFactory factory = new DiskFileItemFactory(); factory.se...
java泛型理解2 泛型类型注意细节:1.泛型类型变量不能是基本数据类型比如,没有ArrayList,只有ArrayList。因为当类型擦除后,ArrayList的原始类型变为Object,但是Object类型不能存储double值,只能引用Double的值。2.泛型类型没有特定的classArrayList arrayList=new ArrayList(); 因为类型擦除之后,A...
JAVA泛型理解 泛型类型的擦除: [code="java"] ArrayList arrayList1=new ArrayList(); ArrayList arrayList2=new ArrayList(); System.out.println(arrayList1.getClass()==arrayList2.getClass());//结果为...
NIO响应中断 不同于IO,NIO通道会自动地相应中断,代码如下:public class NIOBlocked implements Runnable{ private final SocketChannel sc; public NIOBlocked(SocketChannel sc) { this.sc=sc; } @Override public void run(...
桥接模式 现实中场景:发送提示消息从业务上看,消息又分成普通消息、加急消息和特急消息多种,不同的消息类型,业务功能处理是不一样的: 加急消息是在消息上添加加急,而特急消息除了添加特急外,还会做一条催促的记录,多久不完成会继续催促。从发送消息的手段上看,又有系统内短消息、手机短消息、邮件等等。考虑简单情况: 消息先只是实现发送普通消息,先实现系统内短消息和邮件。...
单例模式 单例模式分为两种:懒汉式和饿汉式,先看下懒汉式的实现:[code="java"]public class Singleton { /** * 定义一个变量来存储创建好的类实例 */ private static Singleton uniqueInstance = null; /** * 私有化构造...
逻辑运算与移位运算 [code="java"]源码:正数的补码与原码相同例+7 源码:00000111 补码 :00000111 (用8位二进制表示一个数)[/code][code="java"]负数的补码: 符号位为1,其余位为该数绝对值的原码按位取反;然后整个数加1。[/code] -7 源码: 10000111 ,其绝对值为00000111 取反加一:11111001 为-7补码...
线程中断 线程的中断"interrupt"线程的"中断"不是让线程停止java中线程的中断(interrupt)只是改变了线程的中断状态,这个中断状态改变后带来的结果,是无法确定的,有时它更是让停止中的线程继续执行的唯一手段.不但不是让线程停止运行,反而是继续执行线程的手段.一个线程在调用interrupt()后,自己不会抛出InterruptedException异常,如果线程...
数字证书和数字签名的理解 数字签名的理解:[code="java"]1.张三有两把钥匙,一把是公钥,另一把是私钥。2.张三把公钥送给他的朋友们----李四、王五、赵六----每人一把。3.李四给张三写信,写完后用张三的公钥加密,达到保密的效果。4.张三收信后,用私钥解密,看到信件内容。5.张三给李四回信,写完后用Hash函数,生成信件的摘要(digest)。6.张三使用私钥,对这个摘要加密,生成"数...