自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(26)
  • 问答 (3)
  • 收藏
  • 关注

原创 对Spring AOP框架实现的结构分析

本文的目标:从实现的角度来认识SpringAOP框架。观察的角度:从外部接口,内部实现,组成部分,执行过程四个方面来认识SpringAOP框架。本文的风格:首先列出AOP的基本概念;其次介绍框架所涉及到的核心组件列表,组件之间的结构关系图;然后细化结构图中的部分;接下来是一个简单的sample;最后是后记部分。注:1.本文的源代码基于Spri...

2011-09-13 12:12:00 152

原创 对Spring IoC容器实现的结构分析

本文的目标:从实现的角度来认识SpringIoC容器。观察的角度:从外部接口,内部实现,组成部分,执行过程四个方面来认识SpringIoC容器。本文的风格:首先列出SpringIoC的外部接口及内部实现所涉及到的组件列表;其次介绍组件之间的相互关系以对整个执行过程有所把握;然后针对每一个组件的简单介绍,包括组件的类结构图,核心功能描述,重要接口的重要方法描述;...

2011-08-31 00:55:46 108

浅析org.springframework.aop.framework包设计

写在前面:类的设计图见附件本文不详细介绍AOP相关概念,比如Concrn(关注点),Aspect(方面),Adivce(通知),Pointcut(切入点),Joinpoint(连接点),AOP实现策略, 不同的AOP实现.但熟悉这些概念是基本的前提条件,相关概念可以查找Google,参考资料查到,Development.Without.Ejb中的第八章值得一读,其中讲到了Spring AO...

2010-11-15 00:31:19 661

对象20100428

对象实例:一个抽象类型是不能够直接被实例化,这是面向对象所要求的,因为一个抽象的概念是无法被具体化的,这个也容易理解,比如说要买一些水果,那么水果是一个抽象概念,等到你买回来之后,它总是表现为苹果,桃等具体的事物,对于很在意买回来的水果不同种类差别的小朋友来说,你给他说我买回来一些水果,他马上会问都有那些种类的水果,以看有没有自己喜欢的,但是对于不关心这些类型之间差别的人比如小朋友的奶奶,你只...

2010-04-28 10:42:04 130

随笔20100427

重构心得:重构也是对待问题的处理方式,设计更多的是避免问题的发生,而重构是在问题已经发生所进行的解决办法,好的设计需要对问题的发生有遇见性,前提是需要有丰富的经验,经验的积累可以从重构开始,也许一些重构手法做过几次之后,就能总结出来可能在什么样的情况下会出现这些问题而需要重构解决,如果对发生问题的可能原因了解的相当透彻后,那么我们就可以避免这些问题的出现。重构与设计所针对的目标...

2010-04-27 12:07:44 60

Observer

观察者模式的实例描述.角色的对应关系.观察者模式的角色: .设计原则的角度, .单一职责,将数据生成和数据显示的两个职责分离. .开闭原则, 增加新的观察者类型,只需要实现观察者接口. 修改一个接口实现,也不会造成太大的影响. .里氏代换原则,实现观察者接口的类有义务遵守接口中的方法定义,不要重新定义,只要做到这些,那么任一实现之间都...

2010-03-15 18:43:41 101

IoC想到的.

Inversion of Control --Dependency Lookup --Dependency Injection --Setter Injection --Constructor Injection控制反转的一般表示形式.依赖注入. 由外部框架管理对象之间的依赖关系.查找资源的逻辑从应用代码中抽取出来,交由框架容...

2010-03-11 18:21:49 68

由XX想到的.

谁来定义接口.接口就是规则,职责在于描述外部表现,而非内部实现. 那么接口应该由谁来定义?锅炉厂生产锅炉, 客户在使用过程当中,由于没有全身心的关注锅炉,导致了一些事故的发生. 客户提出了这个问题,要求锅炉上加上报警装置, 锅炉厂本身不生产报警器的, A:锅炉厂就在锅炉上留下安装报警器的接口,然后找来生产报警器的工厂,让报警器厂按照留好的接口生产出合适的报警来.这里锅炉厂相...

2010-03-11 13:45:16 112

原创 (FlushMode.NEVER/MANUAL): Turn your Session into

org.springframework.dao.InvalidDataAccessApiUsageException: Write operations are not allowed in read-only mode (FlushMode.NEVER/MANUAL): Turn your Session into FlushMode.COMMIT/AUTO or remove 'readOnl...

2010-01-08 15:55:42 98

原创 异 常

a>:异常只应该被用于不正常的条件,它们永远不应该被用于正常的控制流.b>:一个设计良好的API不应该强迫它的客户为了正常的控制流而使用异常。如Iterator, next()状态方法,hasNext()状态测试方法.pubilc interface Iterator { public boolean hasNext(); public T next(); p...

2009-12-25 12:01:45 171

原创 类与对象

在面向对象中讲,类是对象群体的抽象,对象是类的实例, 类做为对象的模板可以生成无数多个实体,每一个实体都是类的一种特例.这是普通的情况,也是就一个类对应多个对象.有普通就有特殊,一个类没有实例对象,如工具类.一个类只有一个实例对象,如单体类,一个类有有限数量的实例对象,如枚举类.定义一个工具类:[code="java"]public class XXXUtil {...

2009-11-15 04:29:14 94

原创 序列化笔记

序列化: 将对象编码成一个字节流,以及从字节流编码中重新构造对象. 将一个对象编码成一个字节流称为序列化,相反的处理过程称为反序列化.54:=======实现序列化的代价: 1.一旦一个类发布,则改变这个类的灵活性将大大降低. 字节流编码变成了它的导出API的一部分.指:类自身的演变和类所在继承体系的演变(对子类序列化所加的影响). 2.它增加了错误(bug)...

2009-10-19 14:08:33 72

原创 分离责任,消除代码级别耦合

例子--安全检查.假设希望检查用户是否有权限执行某个方法,如果没有权限就抛出一个异常,也就是说对要执行安全检查的代码进行方法拦截,以加入检查代码.如果编程解决这个问题,OO无法给我们任何有效的帮助.得到的是这样的代码.[code="java"]public class MyBusinessObject implements BusinessObject { public...

2009-10-15 21:21:08 95

原创 关于对象生成的方式

1.使用new关键字生成和不使用new关键字生成对象.对象生成的方式.1:new 关键字生成.Person person = new Man();这是生成对象最直接的方式.2:反射方式生成.使用反射方式生成对象,首先要获得一个Class对象.获得一个Class对象的方式: 1: Class clazz = Class.forName("mypack...

2009-10-14 13:12:47 148

原创 MVC

MVC 把用户界面交互拆分到不同的三种角色中.Model View Controller之所以这样做的原因:1,你可能要使用数个不同的用户界面来表现相同的业务逻辑,如果同时承担两种责任,用户界面会变得过分复杂 2,与GUI隔离之后,domain Objects的维护和演化更容易,甚至可以让不同的开发者负责不同部分的开发.用过MVC后,替换视图才成...

2009-10-14 11:32:19 60

原创 观察者

Observable提供必要的信息.Observer(Listener)则对Observer所提供的数据做自己感兴趣的处理 .比如TimeSource提供时间这一数据,TimeSink可以获所得TimeSource提供的时间数据,有人可能要实现数字时钟,另外有人可能想使用所提供的时间实现一个提醒服务。还有人可能想启动每晚备份功能。简而言之,希望一个单一的TimeSource对象能够为多个T...

2009-10-10 17:20:07 69

原创 笔记111

What,Why,How,When; Struts2 中获取request,response,session,application 的方式1,2,1:(1)使用帮助类ActionContext的静态方法 ActionContext.getContext() (2)使用ServletActionContext帮助类的静态方法,ServletActionContex...

2009-10-09 20:45:31 111

原创 抽象类,接口.

抽象类仍然一个类,这可能会影响到灵活性.因为 Java是单一继承.接口的灵活性要更大.接口可以模拟多重继承.(参见Spring BeanFactory接口体系的设计)抽象类的后继演变要比接口更容易些,可以直接在抽象类里添加具体方法,但是接口会要求所有实现类都实现新添加的抽象方法.抽象类的使用应该做为一种实现手段来用,而不是做为类的体系设计来用.抽象类在设计时应该多的拥有...

2009-10-09 19:08:34 64

原创 继承多态

继承:使得相同的代码可以在不同类型之间得到复用.多态:使得不同的代码可以以一种相同的方式得到调用.继承可以做为复用的手段,但这不是继承的最大意义,继承的最大意义在于封装变化的代码,将变化的代码和不变的代码进行剥离,使得代码的维护性,扩展性,重用性得增强.继承分为extends和implements.在子类重写方法时,要注意到这有可能是在修改父类,违背LSP. 子类...

2009-10-09 18:45:38 68

原创 一个重构的简单例子

[code="java"]import java.util.*;//重构前:根据所给出的数字n,返回1-n之间的所有质数.class GeneratorPrimes { public static void main(String[] args) { long start = System.currentTimeMillis(); int[] a = Prim...

2008-12-08 03:58:55 547

原创 全世界所有程序员都会犯的错误-蔡学镛

[code="java"] // 程序1class Singleton {private static Singleton obj = new Singleton();public static int counter1;public static int counter2 = 0;private Singleton() {counter1++;counter2+...

2008-10-09 20:24:19 96

原创 equals和hashCode

[code="java"] public class Person { private int id; private String name; private String password; private double salary; private int hashCode; public Pers...

2008-10-08 01:51:53 70

原创 代理与动态代理

代理模式: [code="java"] public interface Interface { void doSomething(); void somethingElse(String arg); } public class RealSubject implements Interface { public void doSo...

2008-09-27 01:43:27 73

原创 singleton与serializable

一个Singleton类如果可序列化,则除实现java.io.Serializable标记接口,还需定义[code="java"]private Object readResolve() throws ObjectStreamException;[/code]如果没有第二步则在反序列化的时候会重新生成一个对象.因而失去了Singleton.原因在于:反序化也相当于构造方法生成一次对象....

2008-09-11 18:47:03 84

原创 类型安全枚举

[code="java"] public class Suit { private static int nextOrdinal = 0; private final int ordinal = nextOrdinal++; private final String name; private Suit (String name) { ...

2008-09-09 21:44:56 200

原创 内存泄漏(消除过期的对象引用)

内存泄漏:应用程序中保留了从不会再被使用的引用,引用未被释放,GC无法工作.[code="java"] import java.util.*;public class Test { private Object[] objs; private int count; public Test(int size) { objs = new Object[size...

2008-09-03 21:04:39 125

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除