
Java
文章平均质量分 60
kentchenj
这个作者很懒,什么都没留下…
展开
-
移:xdoclet2学习笔记
一个Xdoclet2插件由三部分组成:TemplateEngine,MetadataProvider,WriterMapper,通常使用构造函数来建立一个Plugin。TemplateEngine表示使用的模版库,可以选择JellyTemplateEngine和VelocityTemplateEngine。MetadataProvider表示数据来源,xdoclet2通过qdox来获得java s原创 2006-09-13 15:25:00 · 1260 阅读 · 0 评论 -
Spring的FactoryBean与PropertyEditor
Spring的FactoryBean有以下功能:通过自定义的Factory类创建自己需要的对象,而不是使用Spring内置的new(或者class.forName)来创建对象。这样创建的对象有以下好处:1.和Spring无缝连接,结构清晰2.可以根据自己的要求创建一些复杂的对象,便于重用。例如hibernate的SessionFactory就可以是一个FactoryBean,它需要通过配置获得Da原创 2008-11-03 15:23:00 · 1441 阅读 · 0 评论 -
docbook自动加上章节号
docbook默认的xsl是不会生成章节号的,要加上章节号很简单。找到docbook-xsl/html/param.xsl修改成重新编译,OK!原创 2009-07-27 13:40:00 · 655 阅读 · 0 评论 -
eclipse4.0(e4)的例子跑起来
刚看到eclipse4.0将采用新的xwt平台,全新的概念。赶紧去官方网站下载了一个试试。 一进入就不一样嘛。赶紧运行一下它的两个demo。 1.下载eclipse e4 0.9http://download.eclipse.org/e4/downloads/drops/R-0.9-200907291930/index.htmleclipse-e4-repo-i原创 2009-08-08 13:16:00 · 2883 阅读 · 0 评论 -
easyb,我对你终于失去了耐心
很多年前,我还不知道BDD为何物。当我做测试的时候,我就想能不能有一个工具,能够边写测试边写文档,测试完成了,文档也完成了。甚至想做一些annotation,按照某个规范编写测试,就能根据这些annotation产生出文档。一直没有时间做,就把这事情放下了,直到遇见的jsspec我开始使用jsspec编写BDD测试。可是不过瘾。因为js大量的是UI交互,把这些交互过程也写成jssp原创 2009-10-16 16:18:00 · 1801 阅读 · 0 评论 -
泛型工厂类
不大使用复杂的泛型,用的时候经常忘记。在此记录一下吧泛型的工厂public class TestProduct { public static void main(String[] args) { Factory factory = new FactoryImpl(); ProductImpl p = factory.getProduct(ProductImpl.class原创 2010-03-03 16:33:00 · 1218 阅读 · 0 评论 -
模式词语
很多类的命名都会隐喻着某些模式,我把这些命名称为模式词语。让我们看看有哪些词语经常会作为模式词语吧 和模式同名的词语Factory:满大街的Factory,就不说了Proxy:偶尔用,比如java.lang.reflect.ProxyBuilder:常用,但是并不意味着使用Builder模式,所有创建某一类东西的类都可能叫做BuilderVisitor:经典的同名词原创 2010-04-05 10:54:00 · 1089 阅读 · 0 评论 -
用javassist调试程序
当我研究一些复杂源码(比如Hibernate)的时候,常常需要程序运行期,某个变量的状态是什么。通常做法是导入Hibernate的源码,编译,然后加断点或者System.out。可是,导入源码常常是很麻烦,源码量也大,我只是为了看一个变量状态,至于这么麻烦吗。 这个时候javassist工具就可以帮忙了。 曾经大致的比较了一下这类工具:cglib/asm/javassist原创 2010-04-21 16:04:00 · 2008 阅读 · 0 评论 -
猜猜看,Hibernate会执行几句SQL(一)
POEAA中介绍了ORM中最重要的模式之一:Unit Of Work。看似简单,实现起来却非常复杂。Hibernate完美的实现了这个模式。以下我用一系列的例子来分析Hibernate的处理机制 下面有三个例子,猜猜看Hibernate会执行几句SQL(省略事务处理代码,实体对象叫User,假设主键是自增型的) 例1:User user = new User();原创 2010-04-26 14:51:00 · 902 阅读 · 0 评论 -
Spring Component-scan和eclipse的兼容问题
<br />Spring使用component-scan的时候,如果把spring bean打包到jar文件中,spring无法找到相应的bean<br />要处理正确很简单:当使用eclipse export成.jar的时候,把add directory entries选上就可以了原创 2010-09-15 20:47:00 · 1248 阅读 · 3 评论 -
扩展swt combo
swt的combo有两个麻烦的问题:如果选中上次选中的内容,它照样会触发addSelectionListener方法如果使用setData(String key, Object value)时,必须设定key值。通常会使用index作为key值。但是如果删除了一项,它的index会自动-1,不能和key相对应了为了解决这个问题,重新写了一个Combo类要解决问题1,写了一个新的接口:public原创 2008-10-14 16:27:00 · 4642 阅读 · 0 评论 -
使用信号量管理多线程
应用场景如下:生产者是单线程程序,会从数据库获得数据插入阻塞队列消费者是多线程程序,会从阻塞队列获得数据进行处理为了保持一个较好的并发量,系统需要设置消费者的最高并发数程序如下:import static java.util.concurrent.TimeUnit.MILLISECONDS;import java.util.ArrayList;import java.util.Iterat原创 2007-12-05 14:24:00 · 763 阅读 · 0 评论 -
移:AOP技术原理
AOP技术原理AOP在JDK1.3开始被支持,体现在java.lang.reflect.InvocationHandler和Proxy类。对于InvocationHandler的子类,都会被执行invoke方法代替原先的方法。例如有一个类Service,我们需要在Service的所有方法前加上事务管理代码,那么需要定义一个ServiceProxy继承自InvocationHandler,它包含实例原创 2006-09-13 15:39:00 · 1110 阅读 · 0 评论 -
移:Spring AOP的简单例子
Spring AOP的简单例子一个使用Spring AOP的简单例子有一个UserLogger类,用于记录user信息:public class UserLogger { private String userName = ""; public void setUserName(String i) { this.userName = i; } //记录用户信息原创 2006-09-13 15:43:00 · 1194 阅读 · 0 评论 -
移:使用Spring AOP实现MVC拦截器
使用Spring AOP实现MVC拦截器Webwork实现了拦截器,但未用AOP技术,只不过是预留了接口。下面定义一个使用Spring AOP作为拦截器的伪代码定义Action,就是AOP中的Target:public interface Action { public void setDomain(DomainObject object);//设置领域对象,每个Action都有一个领域对象原创 2006-09-13 15:44:00 · 2767 阅读 · 0 评论 -
移:扩展OGNL
扩展OGNLOGNL会自动把字符串内容树映射到对象树中。但是对于空对象必须自己做处理,处理方法是继承NullHandler接口,下面的例子会自动创建空对象。但是对于List等还未作处理 public class TestOGNL { public static void main(String[] args) throws Exception { try {原创 2006-09-13 15:45:00 · 1208 阅读 · 0 评论 -
移:webwork的多行提交
webwork的多行提交webwork使用拦截器和OGNL自动给对象赋值和struts类似,如果要给list赋值,必须指定list里面对象的类型所以,在定义Form对象时,我们只需要这样定义:List users = new XWorkList(User.class);就能够自动赋值了原创 2006-09-13 15:46:00 · 1182 阅读 · 0 评论 -
移:webwork的bug?
webwork的bug?OGNL映射对象时,如果对象定义成:List list = new XWorkList(Integer.class);映射会报错:java.lang.InstantiationException: java.lang.Integer原因在于XWorkList的get方法创建对象时,会调用class.newInstance()而newInstance方法是无法创建不带无参数构原创 2006-09-13 15:47:00 · 889 阅读 · 0 评论 -
移:使用easymock单元测试
使用easymock单元测试以webwork的ApplicationMap的get方法为例 //建立mock对象 mockControl = MockControl.createControl(ServletContext.class); mockServletContext = (ServletContext) mockControl.getMock()原创 2006-09-13 15:49:00 · 1187 阅读 · 0 评论 -
移:强悍的ANTLR Lexer
强悍的ANTLR LexerANTLR的Lexer不是基于DFA的,所以更加灵活比如,我要解析一段这样的代码,class的大括号{}需要解析,method的大括号{}内的内容不需要解析,只要作为一个整体就可以class clazz{ test1(){ abc; } test2(){ { efg; } }} code.g:header{ import java.util.*; impor原创 2006-09-13 15:52:00 · 2524 阅读 · 1 评论 -
移:使用没有名字空间的xmlbeans
使用没有名字空间的xmlbeansxmlbeans进行xml - java bean映射很方便,只需要写一个xsd文件就可以。并且,它是bea的核心工具之一,质量和稳定性应该有保障 要在某个package中生成相应的java bean,最简单的方法是使用名字空间,即xmlns:之类的东东。可是问题也出现了:我们和其他软件的数据交换接口xml文件中并没有xmlns属性,比如spring的配置文件如果原创 2006-09-13 15:53:00 · 989 阅读 · 0 评论 -
Java移位运算符定义常量
一直忽略这个基本技术。看Eclipse源码的时候经常发现用移位运算符定义常量。来看看这是怎么用的吧。public static final int SELECTED = 1 public static final int FOCUSED = 1 public static final int BACKGROUND = 1 public static final int FOREGROUND = 1原创 2008-12-01 15:06:00 · 860 阅读 · 0 评论