`
文章列表
面向对象的基本原则 前五项原则是关于类设计的,它们是: SRP,单一职责原则,一个类应该有且只有一个改变的理由。 OCP,开放封闭原则,你应该能够不用修改原有类就能扩展一个类的行为。 LSP,Liskov替换原则,派生类要与其基类自相容。 DIP,依赖倒置原则,依赖于抽象而不是实现。 ISP,接口隔离原则,客户只要关注它们所需的接口。 另外的六项是关于包的设计原则。在本文中,包是指一个二进制的可发布文件,比如.jar文件、或dll文件, 而不是Java包或是C#的命名空间.其中前三项包原则是关于包内聚性的,它们会告诉我们该把什么划分到包中 ...
2009 - 04 - 24 让Hibernate输出SQL语句参数配置 关键字: 让hibernate输出sql语句参数配置 在J2ee应用中,如果采用Hibernate框架,可以自动建立数据库实体与Java实体类的映射关系,大大方便Java程序进行持久化对象访问和操作,从而明显提高企业应用开发效率,减轻Java程序与后台数据库的依赖性。 但是,有时候如果操作不慎,可能造成映射关系不完整(特别是存在外键链接的时候),造成访问数据库对象时程序有Bug。这时,可以通过参数配置,让 Hibernate在每次需要从数据库查询记录或者每次插入、更新数据库 ...
spring对AOP的代理支持——JDK动态代理和CGLIB字节码生成 2010-01-27 15:02 spring对AOP的代理支持 1、如果目标对象实现了接口,默认情况下会采用JDK的动态代理实现AOP 2、如果目标对象实现了接口,可以强制使用CGLIB实现AOP 3、如果目标对象没有实现了接口,必须采用CGLIB库,spring会自动在JDK动态代理和CGLIB之间转换 如何强制使用CGLIB实现AOP? * 添加CGLIB库,SPRING_HOME/cglib/*.jar * 在spring配置文件中加入<aop:aspectj-au ...
Spring 在进行反射时候主要有两种策略,一种是直接用 JDK 的反射,另外是用 CgLib 。 cglib是一个开源项目, 是一个强大的,高性能,高质量的Code生成类库,它可以在运行期扩展Java类与实现Java接口。Hibernate用它来实现PO字节码的动态生成。cglib项目主页: http://cglib.sourceforge.net/ CgLib 底层用的 asm   Asm 是一个强大的 Java 字节码生成框架,和 BCEL 或者 SERP 很类似,但是小很多,可以动态修改 java 字节码 . 其中最核心的代码为 newProxyInstance ( ...
Spring强制使用CGLIB代理事务.. 2009年11月06日 星期五 00:18 Spring1.2: 将事务代理工厂[TransactionProxyFactoryBean ] 或 自动代理拦截器[BeanNameAutoProxyCreator ] 的 proxyTargetClass 属性,设置为true ,则使用CGLIB 代理,此属性 默认为false ,使用JDK 动态代理. 以下引用 Spring Framework reference 2.0.5: Spring2.0: ...
转载:   完整的jBPM4 PVM介绍发表在《程序员》第8期,这里截取部分的意思是PVM的过程调度是非常灵活的,PVM提供了一套和token类似的execution过程调度机制,通过对execution的完全操控,节点运行期行为有了无限的可能 。     PVM的流程定义模型 首先要说明的是,上图里的类全是接口。位于最上层的是ObservableElement,其提供给流程元素以附加Event(事件)的能力。在ObservableElementImpl里,它持有一个events的集合属性。对于流程元素来说,典型的事件有:流程启动/结束,节点启动/结束和转移线执行(take ...
--  作者:apire --  发布时间:2010-4-9 22:52:31 --  新手,问个概念 processinstance和execution的区别processinstance 和execution,这连个好像很一样啊,具体有什么区别,用在什么地方,谢了 --  作者:xyz20003 --  发布时间:2010-4-10 9:39:12 --    两者是存储在一张表里的,两个接口的具体实现类也是一样的,都是ExecutionI ...
2009-10-30 SQL语句效率问题的几点总结 1. SQL优化的原则是:   将一次操作需要读取的BLOCK数减到最低,即在最短的时间达到最大的数据吞吐量。     调整不良SQL通常可以从以下几点切入:     检查不良的SQL,考虑其写法是否还有可优化内容     检查子查询   考虑SQL子查询是否可以用简单连接的方式进行重新书写     检查优化索引的使用     考虑数据库的优化器       2. 避免出现SELECT   *   FROM   table     语句,要明确查出的字段。         3. 在一个SQL语句中,如果一个where条 ...
2009-11-02 数据库设计技巧14则 关键字: 数据库 设计     1. 原始单据与实体之间的关系   可以是一对一、一对多、多对多的关系。在一般情况下,它们是一对一的关系:即一张原始单据对应且只对应一个实体。在特殊 ...
Eclipse @override报错解决 关键字: eclipse @override 报错 解决 我想这个问题肯定困扰了很多人,我也不例外。新公司用的东西多多少少会与我们以前公司的有所不同。所以这个问题也时常伴随在我们身边。 第一种解决方案: @Ove ...
最近趁有空学习了一下Hibernate的缓存,其包括一级缓存,二级缓存和查询缓存(有些是参照网络资源的): 一、一级缓存    一级缓存的生命周期和session的生命周期一致,当前sessioin一旦关闭,一级缓存就消失,因此一级缓存也叫 session级的缓存或事务级缓存,一级缓存只存实体对象的 ,它不会缓存一般的对象属性(查询缓存可以),即当获得 对象后,就将该对象的缓存起来,如果在同一session中如果再去获取这个对象时,它会先判断缓存中有没有该对象的 ID,如果有就直接从缓存中取出,反之则去数据库中取,取的同时将该对象的缓存起来,有以下方法可以支持一级缓存 :    * g ...
et和load方式是根据id取得一个记录 下边详细说一下get和load的不同,因为有些时候为了对比也会把find加进来。 1.从返回结果上对比: load方式检索不到的话会抛出org.hibernate.ObjectNotFoundException异常 get方法检索不到的话会返回null 2.从检索执行机制上对比: get方法和find方法都是直接从数据库中检索 而load方法的执行则比较复杂 ■ 首先查找session的persistent Context中是否有缓存,如果有则直接返回 ■ 如果没有则判断是否是lazy,如果不是直接访问数据库检索,查到记录返回,查不到抛出异常 ■ 如果是 ...
做FF的扩展,有时候避免不了与页面做些交互。其实FF与页面的交互利用的是事件的机制。 原理大概是这样,如果我想从页面传一值给FF的extension。 1.在extension里监听一个事件,(这事件是我们自定义的)。 在页面上该怎么做呢?既然有监听,当然也有创建咯。 对了,就是在页面上创建自定义的事件。 2.不过创建事件之前也先创建一个自定义的元素,放到documentElement里去。 3.然后给这个元素添加一些属性,注意:这里属性就是要传的值。 4;接着创建事件,初始化后再把元素里的属性分配到事件里 。OK,这样当监听到这个事件就可以获取事件的对象,那么这个事件的所有信息也 ...
<!-- END HEADER --><!-- LEFTBAR --> Mozilla的架构 <!-- lixianjing added --> 文章出处:http://www.limodev.cn/blog作者联系方式:李先静 <xianjimli@gmail.com>   原文发表于《程序员》2007第5期,BLOG首发。     Firefox的横空出世在很多人的意料之外,其体积小巧功能强大,在安全性、扩展性和可移植性上都有惊人的表现。这样优秀的软件,实在想不出是在 mozilla这棵老树上生出的新花。我们都认为m ...
转载:http://zhxiong.bokee.com/3857888.html 应用Mozilla框架的感受 关键词: Firefox    Mozilla    社区                                             Firefox 1.5已经正式发布了,Firefox热还在持续升温。浏览Mozilla网站,发现除了各种插件、扩展以外,Mozilla文档整理、平台开发比起两年前真是不可同日而语,想来这些变化和Firefox所引发的关注应该也不无关系。 是的,Mozilla不仅仅是一个浏览器,她是一个平台,一个客户端应用框架——Client ...
Global site tag (gtag.js) - Google Analytics