随笔分类 -  java高级特性

上一页 1 2 3
分析两种实现多线程的方式:Thread类和Runnable接口
摘要:写一个程序,模拟4个售票窗口共同卖100张火车票的程序。 1:使用继承Thread类方式实现()。2:使用实现Runnable接口方式实现()。 第一种方式(没有共享数据,售票窗口各自买100张票,那4个售票窗口就有400张票) package com.ljq.test;/** * 使用Thread 阅读全文
posted @ 2011-04-10 20:41 Ruthless 阅读(14066) 评论(4) 推荐(2) 编辑
Java线程中run和start方法的区别
摘要:Thread类中run()和start()方法的区别如下:run()方法:在本线程内调用该Runnable对象的run()方法,可以重复多次调用;start()方法:启动一个线程,调用该Runnable对象的run()方法,不能多次启动一个线程; package com.ljq.test;public class ThreadTest { /** * 观察直接调用run()和用start()启动一个线程的差别 * * @param args * @throws Exception */ public static void main(String[] args){ Thread thread= 阅读全文
posted @ 2011-04-10 13:20 Ruthless 阅读(62221) 评论(3) 推荐(3) 编辑
java一行一行写入或读取数据
摘要:假如E:/phsftp/evdokey目录下有个evdokey_201103221556.txt文件,现在对evdokey_201103221556.txt文件进行写入或读取操作,并解决写入或读取出现的乱码问题。 文件内容如:zhangsan,23,福建 lisi,30,上海 wangwu,43,北京 laolin,21,重庆 ximenqing,67,贵州 代码如下: /** * 一行一行读取文件,适合字符读取,若读取中文字符时会出现乱码 * * 流的关闭顺序:先打开的后关,后打开的先关, * 否则有可能出现java.io.IOException: Stream closed异常 * * @ 阅读全文
posted @ 2011-03-23 11:12 Ruthless 阅读(98765) 评论(1) 推荐(4) 编辑
Java动态代理三——模拟AOP实现
摘要:以下案例模拟AOP实现目录结构接口PersonService[代码]实现类PersonServiceBean[代码]动态代理类JDKProxyFactory[代码]动态代理类CGlibProxyFactory:使用CGLIB技术[代码]测试类AopTest[代码]运行结果 阅读全文
posted @ 2011-02-18 16:36 Ruthless 阅读(2888) 评论(0) 推荐(1) 编辑
Java动态代理二——CGLIB动态代理应用
摘要:JDK自从1.3版本开始,就引入了动态代理,JDK的动态代理用起来非常简单,但是它有一个限制,就是使用动态代理的对象必须实现一个或多个接口。如果想代理没有实现接口的类可以使用CGLIB包。  CGLIB是一个强大的高性能的代码生成包。它被许多AOP的框架(例如Spring AOP)使用,为他们提供方法的interception(拦截)。Hibernate也使用CGLIB来代理单端single-ended(多对一和一对一)关联。EasyMock通过使用模仿(moke)对象来测试java代码的包。它们都通过使用CGLIB来为那些没有接口的类创建模仿(moke)对象。  CGLIB包的底层是通过使用 阅读全文
posted @ 2011-02-18 11:53 Ruthless 阅读(11434) 评论(4) 推荐(3) 编辑
Java动态代理一——动态类Proxy的使用
摘要:1.什么是动态代理? 答:动态代理可以提供对另一个对象的访问,同时隐藏实际对象的具体事实。代理一般会实现它所表示的实际对象的接口。代理可以访问实际对象,但是延迟实现实际对象的部分功能,实际对象实现系统的实际功能,代理对象对客户隐藏了实际对象。客户不知道它是与代理打交道还是与实际对象打交道。2.为什么使用动态代理? 答:因为动态代理可以对请求进行任何处理3.使用它有哪些好处? 答:因为动态代理可以对请求进行任何处理4.哪些地方需要动态代理?答:不允许直接访问某些类;对访问要做特殊处理等目前Java开发包中包含了对动态代理的支持,但是其实现只支持对接口的的实现。 其实现主要通过java.lang. 阅读全文
posted @ 2011-02-18 10:52 Ruthless 阅读(59540) 评论(6) 推荐(6) 编辑
Java注解Annotation详解
摘要:注解相当于一种标记,在程序中加了注解就等于为程序打上了某种标记,没加,则等于没有某种标记,以后,javac编译器,开发工具和其他程序可以用反射来了解你的类及各种元素上有无何种标记,看你有什么标记,就去干相应的事。标记可以加在包,类,字段,方法,方法的参数以及局部变量上。自定义注解及其应用1)、定义一个最简单的注解public @interface MyAnnotation { //......}2)、把注解加在某个类上:@MyAnnotation public class AnnotationTest{ //......}以下为模拟案例自定义注解@MyAnnotation[代码]注解测试类An 阅读全文
posted @ 2011-02-16 20:55 Ruthless 阅读(56212) 评论(5) 推荐(5) 编辑
Java内省IntroSpector应用
摘要:内省(IntroSpector)是Java语言对JavaBean 类属性、事件的一种缺省处理方法。例如类A中有属性name, 那我们可以通过getName,setName 来得到其值或者设置新的值。通过getName/setName 来访问name属性,这就是默认的规则。Java中提供了一套API 用来访问某个属性的getter/setter方法,通过这些API 可以使你不需要了解这个规则,这些API存放于包java.beans 中。一般的做法是通过类Introspector的getBeanInfo方法获取某个对象的BeanInfo 信息,然后通过BeanInfo来获取属性的描述器(Prope 阅读全文
posted @ 2011-02-16 17:05 Ruthless 阅读(6501) 评论(0) 推荐(1) 编辑
框架的概念及用反射技术开发框架的原理<br/>getResourceAsStream用法详解
摘要:反射的作用—>实现框架的功能框架-用户类-工具类:框架与工具类有区别,工具类被用户的类调用,而框架则是调用用户提供的类。框架要解决的核心问题:框架如何调用未知的类:通过反射来实现综合案例: 使用配置文件读取调用类的名字工程目录ReflectTest测试类[代码]config.properties配置文件[代码]getResourceAsStream用法大致有以下几种:[代码] 阅读全文
posted @ 2011-02-14 20:51 Ruthless 阅读(6581) 评论(0) 推荐(1) 编辑
Java通过反射机制获取Class对象
摘要:Java反射机制四种获取Class对象的方法[代码]Customer类[代码] 阅读全文
posted @ 2011-02-13 20:03 Ruthless 阅读(17609) 评论(0) 推荐(1) 编辑
Java反射机制深入研究
摘要:Java反射是Java语言的一个很重要的特征,它使得Java具体了“动态性”。在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的。这种动态获取类的信息以及动态调用对象的方法的功能来自于Java语言的反射(Reflectio... 阅读全文
posted @ 2011-02-13 16:47 Ruthless 阅读(4403) 评论(1) 推荐(4) 编辑
java枚举使用详解
摘要:在实际编程中,往往存在着这样的&ldquo;数据集&rdquo;,它们的数值在程序中是稳定的,而且&ldquo;数据集&rdquo;中的元素是有限的。例如星期一到星期日七个数据元素组成了一周的&ldquo;数据集&rdquo;,春夏秋冬四个数据元素组成了四季的&ldquo;数据集&rdquo;。在java中如何更好的使用这些&ldquo;数据集&rdquo;呢?因此枚举便派上了用场,以下代码详细介绍了枚举的用法。[代码] 阅读全文
posted @ 2011-02-11 21:00 Ruthless 阅读(227303) 评论(14) 推荐(31) 编辑
Java拆箱装箱小结
摘要:http://macemers.javaeye.com/blog/860631 阅读全文
posted @ 2011-02-10 21:13 Ruthless 阅读(1268) 评论(0) 推荐(1) 编辑
Java常用集合比较
摘要:1. ArrayList 基于数组方式实现,无容量的限制。 在执行插入元素时可能要扩容,在删除元素时并不会减少数组的容量。 如果希望相应的缩小数组容量,可以调用trimToSize() 在查找元素时要遍历数组,对于非null的元素采取equals的方式寻找。 非线程安全。 2. LinkedList 基于双向链表机制实现。 元素的插入、移动较快。 非线程安全。 3. Vector 基于Object数组的方式来实现的。 基于synchronized实现的线程安全的ArrayList。 在插入元素时容量扩充的机制和ArrayList稍有不同: 如果capcacityIncr 阅读全文
posted @ 2011-02-10 20:36 Ruthless 阅读(3011) 评论(0) 推荐(1) 编辑
增强for循环用法
摘要:1.首先增强for循环和iterator遍历的效果是一样的,也就说增强for循环的内部也就是调用iteratoer实现的,但是增强for循环有些缺点,例如不能在增强循环里动态的删除集合内容。不能获取下标等。2.ArrayList由于使用数组实现,因此下标明确,最好使用普通循环。3.而对于LinkedList 由于获取一个元素,要从头开始向后找,因此建议使用增强for循环,也就是iterator。下面的例子可以证明[代码]使用ArrayList运行结果如下把ArrayList改为LinkedList,我这里内存溢出了,运行结果如下于是list改成50000,运行结果如下所以在使用的时候适当选择就 阅读全文
posted @ 2011-02-10 20:22 Ruthless 阅读(68983) 评论(1) 推荐(6) 编辑
Java可变参数的使用
摘要:Java1.5增加了新特性:可变参数。适用于参数个数不确定,类型确定的情况,java把可变参数当做数组处理。注意:可变参数必须位于最后一项。当可变参数个数多余一个时,必将有一个不是最后一项,所以只支持有一个可变参数。因为参数个数不定,所以当其后边还有相同类型参数时,java无法区分传入的参数属于前一个可变参数还是后边的参数,所以只能让可变参数位于最后一项[代码] 阅读全文
posted @ 2011-02-10 19:31 Ruthless 阅读(3172) 评论(0) 推荐(2) 编辑

上一页 1 2 3