
java进阶
文章平均质量分 84
iteye_6099
这个作者很懒,什么都没留下…
展开
-
模拟spring AOP框架(基于annotation)
反射,反射,程序员的快乐。哈哈哈。最近看了张孝祥关于模拟AOP的视频,自己动手做了修改,也吸取了一些网络上关于模拟spring aop的一些思想,做了一些整理。下面把代码分享给有需要的朋友。bean工厂:public class ProxyFactory { public static <T> T getBean(Class<T> clz) thr...原创 2013-09-26 12:41:40 · 114 阅读 · 0 评论 -
读编写高质量代码整理(十一)—反射让模板方法模式更强大
模板方法模式(Template Method Pattern )的定义:定义一个操作中的算法骨架,将一些步骤延迟到子类中,使子类不改变一个算法的结构即可重新定义该算法的某些特定步骤。考虑这样的场景:你要造房子,首先你要有地基,还要有砖块,有搬运工,泥水匠等,你要造一个房子,前途要完成很多东西,抽象成我们的java类,一个house对象的产生需要很多前期准备,如果每个因素分为一个方法,那么如何...原创 2013-09-23 19:13:38 · 134 阅读 · 0 评论 -
读编写高质量代码整理(十)—使用反射增加装饰模式的普遍性
1。何为装饰者模式(Decorator Pattern)?"动态地给一个对象天剑一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活"。2。装饰模式类图 3。代码如下:书本例子:我们以卡通片《猫和老鼠》(《Tom and Jerry》)为例,看看如何包装小Jerry让它更强大。Component接口:/** * Component * @author dec...原创 2013-09-22 14:23:52 · 134 阅读 · 0 评论 -
读编写高质量代码整理(九)-警惕泛型不能协变和逆变
先引进两个名词“协变”、“逆变”协变——用一个窄类型替换宽类型逆变——用宽类型替换窄类型 协变代码如下:public class Base { public Number doStuff() { return 0; }}class Sub extends Base { @Override public Integer doStuff() { ...原创 2013-09-18 16:24:21 · 107 阅读 · 0 评论 -
强制声明泛型的强制类型
List<T> list = Arrays.<T>asList();原创 2013-09-18 15:22:08 · 199 阅读 · 0 评论 -
读编写高质量代码整理(八)
java的泛型是类型擦除的。java泛型加强了参数类型的安全性,减少了类型转换,它与C++模板(template)非常类似,有不同,java的泛型在编译器有效,在运行期被删除。import java.util.List;public class Foo { //overload public void arrayMethod(String[] strArray) { ...原创 2013-09-18 15:02:02 · 84 阅读 · 0 评论 -
读编写高质量代码整理(七)
可以通过枚举构造函数,声明每个枚举项即是枚举实例的属性和行为。package enumeration;/** * 通过枚举构造函数,描述枚举的属性 * @author Administrator * */public enum Season { Spring("春"),Summer("夏"),Autumn("秋"),Winter("冬"); private ...原创 2013-09-11 10:59:08 · 83 阅读 · 0 评论 -
集合大家族(六)
java中的集合类实在是太丰富了,有常用的ArrayList、hashMap,也有不常用的Stack,Queue,有线程安全的Vector、HashTable,也有线程不安全的LinkedList,TreeMap,有阻塞式的ArrayBlockingQueue,也有非阻塞样式的PriorityQueue等,整个集合家族非常庞大,可以划分为一下几类。(1)List实现List 接口...原创 2013-09-09 19:04:25 · 103 阅读 · 0 评论 -
非稳定排序推荐使用list(整理)(五)
Set 和 list 最大的区别是Set中元素不可重复(这个重复指的是equals返回值相同),Set中的常用类TreeSet,该类实现了类默认排序为升序的Set集合,会在插入元素过程中按照升序排列(当然根据Comparable接口中的compareTo返回值确定排序的位置),不过这种方法不适合在元素经常变化的场景中使用,来看下边的例子:普通pojo类,实现Comparable接口,重现c...原创 2013-09-09 15:01:37 · 99 阅读 · 0 评论 -
读编写高质量代码整理(四)
集合中的元素必须做到compareTo和equals的同步package performance;import org.apache.commons.lang.builder.CompareToBuilder;import org.apache.commons.lang.builder.EqualsBuilder;class City implements Compa...原创 2013-09-03 16:44:20 · 110 阅读 · 0 评论 -
Java编程中“为了性能”需做的26件事(转载)
下面是参考网络资源总结的一些在Java编程中尽可能要做到的一些地方。1.尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:控制资源的使用,通过线程同步来控制资源的并发访问;控制实例的产生,以达到节约资源的目的;控制数据共享,在不建立直接关联的条件下,让多个不相关的进程或线程...原创 2013-09-03 10:23:09 · 102 阅读 · 0 评论 -
读编写高质量代码整理(三)-性能
先在下面代码: package performance;import java.util.ArrayList;import java.util.List;import java.util.Random;public class PerformanceTest { @SuppressWarnings("unchecked") public static...原创 2013-09-02 18:06:03 · 71 阅读 · 0 评论 -
常用汉字排序
public static void main(String[] args) { String[] strs = {"张三","李四","王五"}; Comparator c = Collator.getInstance(Locale.CHINA); Arrays.sort(strs,c); int i = 0; for(String str : strs) {...原创 2013-08-30 15:50:55 · 512 阅读 · 0 评论 -
读编写高质量代码整理(二续)
请先看完(二),这里直接该处解决办法,写一个CloneUtils(克隆工具)package clone;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import java.io.ObjectInputStream;import java.io.ObjectOutputSt...原创 2013-08-30 10:14:30 · 90 阅读 · 0 评论 -
读编写高质量代码整理(二)
如何避免对象的浅拷贝:为什么需要实现对象的拷贝?拷贝是在内存中进行的,性能上比直接通过new生成对象快得多,特别是在大对象生成上,会显著提升性能。但是对象拷贝的过程中,浅拷贝(shadow clone)也是一个比较容易忽略的问题。 package clone;public class Employee implements Cloneable{ privat...原创 2013-08-29 15:46:17 · 90 阅读 · 0 评论 -
读编写高质量代码整理(一)
在毕业工作的这两个月里,项目开发过程中总有些代码自己感觉写的不漂亮,总感觉会有更好的方式,然而时间又有限,所以在不影响程序运行的情况下就搁在一边了,然而有这样的疙瘩在心里总感觉不爽。所以工作之余,拜读改善java程序的151个建议这本书,并根据自己实际情况,做出整理。下面的都以建议的形式给出,代码千变万化,这里介绍的是比较高质量的建议写法。下边是昨天看的一些知识整理:避免带有变长参数的方法重载...原创 2013-08-28 13:56:30 · 117 阅读 · 0 评论