- 博客(41)
- 资源 (3)
- 收藏
- 关注
转载 持续交付的8条原则
软件的发布或部署过程必须是可重复且可靠的。这就引出了下一条…所有操作的自动化!我很难相信“手工操作是可重复且可靠的”这种说法。所以一定要将所有重复性的操作变成自动化的,从而变得可靠。如果某件事情做起来很困难或者让你觉得很痛苦,那么就尽早且尽可能频繁地去做。乍一看上去,这么做太蠢了
2011-08-18 09:32:51
802
原创 煎三文鱼配西兰花
<br />原料:三文鱼半斤 西兰花半颗<br />1.三文鱼去皮切片,大概0.5cm厚,西兰花掰小朵<br />2.平底锅小火加入橄榄油。油要稍微多一些。加入两颗蒜泥<br />3.放入三文鱼一面煎3-5分钟,煎的过程洒少量百里香和盐<br />4.西兰花焯水后放入煎锅,加少量生抽,稍作翻炒后起锅<br /> <br />特色:鱼肉香,西兰花有鱼的香味
2011-04-27 10:38:00
1605
原创 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
1247
3
原创 猜猜看,Hibernate会执行几句SQL(一)
POEAA中介绍了ORM中最重要的模式之一:Unit Of Work。看似简单,实现起来却非常复杂。Hibernate完美的实现了这个模式。以下我用一系列的例子来分析Hibernate的处理机制 下面有三个例子,猜猜看Hibernate会执行几句SQL(省略事务处理代码,实体对象叫User,假设主键是自增型的) 例1:User user = new User();
2010-04-26 14:51:00
902
原创 用javassist调试程序
当我研究一些复杂源码(比如Hibernate)的时候,常常需要程序运行期,某个变量的状态是什么。通常做法是导入Hibernate的源码,编译,然后加断点或者System.out。可是,导入源码常常是很麻烦,源码量也大,我只是为了看一个变量状态,至于这么麻烦吗。 这个时候javassist工具就可以帮忙了。 曾经大致的比较了一下这类工具:cglib/asm/javassist
2010-04-21 16:04:00
2007
原创 模式词语
很多类的命名都会隐喻着某些模式,我把这些命名称为模式词语。让我们看看有哪些词语经常会作为模式词语吧 和模式同名的词语Factory:满大街的Factory,就不说了Proxy:偶尔用,比如java.lang.reflect.ProxyBuilder:常用,但是并不意味着使用Builder模式,所有创建某一类东西的类都可能叫做BuilderVisitor:经典的同名词
2010-04-05 10:54:00
1089
原创 泛型工厂类
不大使用复杂的泛型,用的时候经常忘记。在此记录一下吧泛型的工厂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
原创 easyb,我对你终于失去了耐心
很多年前,我还不知道BDD为何物。当我做测试的时候,我就想能不能有一个工具,能够边写测试边写文档,测试完成了,文档也完成了。甚至想做一些annotation,按照某个规范编写测试,就能根据这些annotation产生出文档。一直没有时间做,就把这事情放下了,直到遇见的jsspec我开始使用jsspec编写BDD测试。可是不过瘾。因为js大量的是UI交互,把这些交互过程也写成jssp
2009-10-16 16:18:00
1801
原创 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
2882
原创 docbook自动加上章节号
docbook默认的xsl是不会生成章节号的,要加上章节号很简单。找到docbook-xsl/html/param.xsl修改成重新编译,OK!
2009-07-27 13:40:00
655
原创 香辣鱼块
原料:鲈鱼一条(1斤以上)配料:盐、鸡精、姜、葱、干辣椒(5个)、蒜头(4瓣)、豆瓣酱(两勺)、料酒做法:鲈鱼洗净后去头尾切略比麻将小的块,加一勺盐和料酒腌20分钟加4勺油,放入鱼块小火煎5分钟表面略焦依次加入干辣椒段、姜末、蒜末、葱末、豆瓣酱、鸡精再煎一分钟烹料酒,加水和一勺糖没过鱼块,大火烧开转中火烧至收汤特点:鱼肉香辣可口,制作简单省时要点:要腌
2009-04-19 20:35:00
1184
原创 墨鱼烧肉
原料:五花肉一斤(不用很肥的,稍微带点肥就可以),墨鱼一斤(4-5只)配料:盐、鸡精、姜、葱、料酒、八角做法:五花肉洗净,放两勺油,放五花肉中小火稍加煸炒3分钟放姜、葱、烹料酒后置于砂锅,加盐、鸡精、糖、八角放至1/3锅水,旺火煮开2分钟转微火煮一个小时以上放入墨鱼继续煮半个小时出锅特点:肉嫩而且有墨鱼的咸香,比红烧肉更美味要点:肉不要煸炒老了,稍微炒一下就
2009-04-19 20:23:00
919
原创 Groovy基础语法
开始学习Groovy内容主要来源于 http://www.ibm.com/developerworks/cn/java/j-groovygrails/index.html本文主要涉及一些简单语法和概念package study/** * Groovy的对象 */public class GroovyObject{ static void main(args){ println
2009-01-05 14:33:00
2019
原创 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
原创 Spring的FactoryBean与PropertyEditor
Spring的FactoryBean有以下功能:通过自定义的Factory类创建自己需要的对象,而不是使用Spring内置的new(或者class.forName)来创建对象。这样创建的对象有以下好处:1.和Spring无缝连接,结构清晰2.可以根据自己的要求创建一些复杂的对象,便于重用。例如hibernate的SessionFactory就可以是一个FactoryBean,它需要通过配置获得Da
2008-11-03 15:23:00
1441
原创 扩展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
原创 mootools setOptions 发生too much recursion问题
两个很简单的类Container = new Class({ Implements: [Events, Options], layout: null, initialize: function(options){ this.setOptions(options); }, setLayout: function(l){
2008-07-23 10:30:00
1554
原创 Spring调用informix存储过程的种种奇怪之处
Spring调用informix存储过程的种种怪问题: 如果informix存储过程中有事务,spring使用DataSourceTransactionManager会启动事务上下文,无论是propagation="NOT_SUPPORTED"还是propagation="NEVER",都会报错:already in transaction 如果此类不被AOP 拦截,还是会
2008-01-25 17:39:00
1176
原创 使用信号量管理多线程
应用场景如下:生产者是单线程程序,会从数据库获得数据插入阻塞队列消费者是多线程程序,会从阻塞队列获得数据进行处理为了保持一个较好的并发量,系统需要设置消费者的最高并发数程序如下:import static java.util.concurrent.TimeUnit.MILLISECONDS;import java.util.ArrayList;import java.util.Iterat
2007-12-05 14:24:00
761
原创 一种js构造函数的写法
mootools 1.2b1有了很大的变化,其中,把构造函数简化一下是这么写的:var Native = function(options)...{ var object = options.initialize; return object;};var Hash = new Native(...{ initialize: function(object)...{
2007-11-30 16:34:00
2856
1
原创 使用yui-ext中的createCallback把函数的作用域绑定到window
yui-ext支持把函数绑定到不同作用域,yutil.js中有代码如下:Function.prototype.createCallback = function()...{ var args = arguments; var method = this; return function() ...{ return method.apply(window, args); };}
2007-02-08 15:37:00
1425
原创 使用js实现observer模式
在yui中,大量使用customEvent。何为customEvent,实际就是一个观察者observer。下面给出这个observer的实现html> head> meta http-equiv="Content-Type" content="text/html; charset=GB2312" /> title>实现Observer模式.title>
2007-01-19 10:52:00
6004
原创 忽悠,你就使劲忽悠
有本书叫,是普元公司的CTO写的如今我们的客户,从项目经理到管IT的副总人手一本,都说那东西好我们的老板,不懂任何技术的老板看了一下也说那东西好.好在哪里?我得看一下吧.现在让我我慢慢道来.1.好在方法论构件中国有几章是写方法论的.比如:如何进行需求分析,如何定义软件开发的流程等等.再看看,很眼熟啊,那需求不就是USE CASE嘛,那流程,不就是RUP嘛不过,简化了,大大的简化了.简化到那些白痴项
2006-11-03 10:25:00
877
原创 移:内部匿名类、事件监听、回调、Observer模式
内部匿名类、事件监听、回调、Observer模式在和界面相关的开发中,经常会使用内部匿名类实现事件监听。而内部匿名类的好处是很容易实现回调,配合使用观察者模式,可以很方面的事件监听模型。例子如下: //界面类public class TestViewer extends TreeViewer { Model model; //构造函数 public TestViewer(final Composi
2006-09-13 15:54:00
1309
原创 移:使用没有名字空间的xmlbeans
使用没有名字空间的xmlbeansxmlbeans进行xml - java bean映射很方便,只需要写一个xsd文件就可以。并且,它是bea的核心工具之一,质量和稳定性应该有保障 要在某个package中生成相应的java bean,最简单的方法是使用名字空间,即xmlns:之类的东东。可是问题也出现了:我们和其他软件的数据交换接口xml文件中并没有xmlns属性,比如spring的配置文件如果
2006-09-13 15:53:00
988
原创 移:强悍的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
2523
1
原创 移:使用easymock单元测试
使用easymock单元测试以webwork的ApplicationMap的get方法为例 //建立mock对象 mockControl = MockControl.createControl(ServletContext.class); mockServletContext = (ServletContext) mockControl.getMock()
2006-09-13 15:49:00
1187
原创 移:工作流、规则引擎、领域模型之一:工作流的内涵
工作流、规则引擎、领域模型之一:工作流的内涵工作流看似很复杂,仔细想来也不过三部分内容:1.流程控制:消灭if-else和switch-case语句2.状态控制:对于一个领域对象,它的状态完全有工作流管理软件定义。程序中不再包括getStatus(),getFlag()之类的内容,业务表的status字段也应该放在工作流管理软件的状态表中统一规划.3.角色权限控制:系统中定义好某个应用角色的权限,
2006-09-13 15:48:00
1237
原创 移: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
原创 移:webwork的多行提交
webwork的多行提交webwork使用拦截器和OGNL自动给对象赋值和struts类似,如果要给list赋值,必须指定list里面对象的类型所以,在定义Form对象时,我们只需要这样定义:List users = new XWorkList(User.class);就能够自动赋值了
2006-09-13 15:46:00
1180
原创 移:扩展OGNL
扩展OGNLOGNL会自动把字符串内容树映射到对象树中。但是对于空对象必须自己做处理,处理方法是继承NullHandler接口,下面的例子会自动创建空对象。但是对于List等还未作处理 public class TestOGNL { public static void main(String[] args) throws Exception { try {
2006-09-13 15:45:00
1208
原创 移:使用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
原创 移: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
原创 移:AOP技术原理
AOP技术原理AOP在JDK1.3开始被支持,体现在java.lang.reflect.InvocationHandler和Proxy类。对于InvocationHandler的子类,都会被执行invoke方法代替原先的方法。例如有一个类Service,我们需要在Service的所有方法前加上事务管理代码,那么需要定义一个ServiceProxy继承自InvocationHandler,它包含实例
2006-09-13 15:39:00
1110
原创 移:使用Struts提交多行数据
使用Struts提交多行数据以下是使用struts提交多行数据的例子,提交多行数据至SurveyListForm:提交页面form.jsp,用于提交两条数据,注意[]的使用:响应页面index.jsp(survey.jui),用于获得数据: struts-config.xml: SurveyAction:public class SurveyAction extends Action {
2006-09-13 15:38:00
2399
原创 移:Naked Objects
一个SOA程序通常是层次结构的。例如,我们需要实现一个用户管理的程序,通常需要完成以下步骤:建立一个user表建立一个User对象建立UserDAO类建立UserService类建立userlist.jsp用户列表页面建立userModify.jsp用户修改页面建立Hibernate的相关xml文件建立Spring的相关配置建立Struts的相关配置建立测试类进行单元测试...完成一个简单的工作需
2006-09-13 15:37:00
1075
原创 移:该死的java中文问题
丑陋的java中文问题折腾我一下午 目标:从Oracle数据库获得数据写文件至HP Unix文件系统开发环境:windowsXP、Eclipse3.1运行环境:HP Unix数据库:Oracle 由于从数据库获得的字符集是GBK,而操作系统是8859_1,所以必须这样转换:data = new String(data.getBytes("GBK"), "8859
2006-09-13 15:31:00
812
原创 移:xdoclet2学习笔记
一个Xdoclet2插件由三部分组成:TemplateEngine,MetadataProvider,WriterMapper,通常使用构造函数来建立一个Plugin。TemplateEngine表示使用的模版库,可以选择JellyTemplateEngine和VelocityTemplateEngine。MetadataProvider表示数据来源,xdoclet2通过qdox来获得java s
2006-09-13 15:25:00
1260
J2EE6 规范中文版
2011-08-24
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人