第5章 慎用继承 示例 这是一个会议管理系统。用来管理各种各样的会议参与者信息。数据库里面有个表Participants,里面的每条记录表示一个参会者。因为经常会发生用户误删掉某个参会者的信息。所以现在,用户删除时,并不会真的删除那参会者的信息,而只是将该记录的删除标记设为true。24小时以后,系统会自动将这条记录删除。但是在这24小时以内,如果用户改变主意了,系统还可以将这条记录还原,将删除标记设置为false。 请认真的读下面的代码:     public class DBTable {     ...
完整: http://wingel.javaeye.com/topics/download/3589b4d8-8e29-4560-b0e7-8cb15a8ed995 或者 http://www.blogjava.net/Files/Wingel/%E7%AC%AC4%E7%AB%A0%E4%BF%9D%E6%8C%81%E4%BB%A3%E7%A0%81%E7%AE%80%E6%B4%81.rar 第4章  保持代码简洁      示例     这是一个会议管理系统。它用来管理所有 ...
完整: http://www.blogjava.net/Files/Wingel/第3章%20除去代码异味.rar http://wingel.javaeye.com/topics/download/2f7b5864-fca2-42e5-ba3e-453725fcb885                 第3章 除去代码异味      异味这个词,可能有点抽象,我们先看一下下面的例子 &n ...
pdf的下载地址: http://www.blogjava.net/Files/Wingel/敏捷开发的必要技巧第1,2章.rar 或者 http://wingel.javaeye.com/topics/download/0f826a59-905d-4392-8667-7d7bfc935973                          ...
目前jQuery网站上已经有了From的验证框架,FromValidation,但是一直觉得它的框架并不好用,因为重复写的东西太多了。于是就再次写了自己的JavaScript验证框架,完全废弃掉以前的。在新的框架下,是以这样子的用法设计的:首先,要包括自己的js文件(这点不必说),而且在包括自己写,要先包括jQuery的,如下<link rel="stylesheet" type="text/css" href="<ww:url value="/layout/css/style.cs ...
  • 10:57
  • 浏览 (354)
  • 评论 (0)
  其实这种事情都会有两个观点。一个观点是:建议使用自己熟悉的技术,采用简单的架构去实现项目,等到你把项目做出来了,能用起来了,客户认可了。以后的升级,那是你就可以比较轻松的采用其 它的架构来重构,这样你的风险,压力就相对减少很多了。 而这回,我想顶一下第二个观点:     其实如果你对代码要求比较严格的话,你就会经常发现,你的代码有很多东西可以抽取出来,或者做在公共的模块,或者作为框架的底层,我们就简单的拿jdbc来说吧,    首先,是connection的管理,这点一般用jdbc熟一些的话,都会有管理connection的公共模块,虽然偶 ...
  • 10:54
  • 浏览 (275)
  • 评论 (1)
上回碰到一个项目要求是要求写一个桌面程序,而这个程序的要求是越少占用资源越好,越小越好。虽然最近一直在写swing的程序,但Java肯定是不能用了,因为还怎么打包都要8M以上;.net的winform也是不能用了,;就只剩三个选择了,Delphi,VB跟MFC,MFC实在是不想用,就先试了下用VB写,正在写得很不爽的时候,在某个地方查到VB还要拷一些dll文件才能正常运行,于是就只剩下Delphi,后来终于在很痛苦的情况下,把程序完成了,唉,好的IDE用习惯了,对它的依赖也变得很多。(没错,我这里就是在暗示Delphi这个IDE真TMD太差了)  后来才听说了,C++有个库,叫QT,写桌面程序 ...
  • 10:53
  • 浏览 (250)
  • 评论 (0)
  用jQuery的时候,刚开始一直以为用$("#someid")取出来的是dom对象的扩展,于是就很自在的用$("#someid").value,$("#someid").text之类的,可惜一直取不出要的值。后来才发现,它并不是扩展。如果要取类似上面的值,就要用$("#someid").val(),$("#someid").text()。这些还是在查看了它的api文档以后才发现的,不禁要感慨一声,JavaScripty的api文档多重要啊。  这两个方法:$("#formId&qu ...
  • 10:52
  • 浏览 (435)
  • 评论 (0)
想搭建一个框架是使用AJAX的,首先考虑到的就是Google web toolkit,看了一下它的文档,就是将所有的dom元素封装成Java对象了,写起代码来,因为有IDE的帮助,而且凭着静态语法的特点,出错的机率就小了。但是有这样一个问题,比如说想给页面上随便增加一点东西的话,却不能随便编辑html文件,因为GWT生成的代码并不是那么好读,也就是说,每次要修改一下页面,就要重新再编译一下Java代码。这点可不好。后来就改用YUI了,YUI的example 倒是非常的丰富,但用了总感觉不舒服,后面想想,才明白是因为它的api设计得不好调用,代码不能写得很简洁。没得说,又去试了一下dojo了,感 ...
  • 10:49
  • 浏览 (627)
  • 评论 (0)
前几天同事讲了Transaction isolation level,并且大家一起在SQLServer,Oracle跟MySQL数据库上实验了一下,发觉这些知识还是挺重要的。假如有两个事务并发,顺序如下Transaction A            Transaction Bbegin    beginquery1 from table A    .......     &n ...
  • 10:48
  • 浏览 (346)
  • 评论 (0)
    sitemesh的一个问题,在web.xml中设置filter的时候,让sitemesh可以过滤/*也就是所有的后缀名,但是在decorate.xml文件里面,并没有给sitemesh增加gif,jpg等后缀的pattern,结果在打开页面的时候,发现所有的图像文件都引用失败,用resin3的话,它会报错说error content length,而用resin2或者tomcat的时候,它连报错都没有。弄了半天,都不明白是怎么回事,后来才想到有可能是sitemesh的问题,修改的filter的设置,让它只过滤部分后缀名,结果就没事了。 
  • 10:48
  • 浏览 (226)
  • 评论 (0)
  以前做完类似MonoRails的那个Java框架后,一直想把MonoRails里面那个Layout的功能也加到现在的开发框架里面,因为那框架确实是很有用啊。举个例子吧,以前做页面都是这样子做的,做一个head.jsp,一个foot.jsp,然后在每个页面里面这样子做:<jsp:include file="head.jsp"><.....页面代码><jsp:include file="footer.jsp">而现在的设想就是,在每个action的方法上加一个annotation,Layout,layout就是框架页面 ...
  • 10:46
  • 浏览 (217)
  • 评论 (0)
  我们一般项目中,都是把字典存到数据库中的。几个月前在做一个政府的项目中,觉得其实一些字典是跟开发工程紧密结合在一起的,也就是说字典变了,工程肯定也要变,这样子的字典如果也存到数据库中的话,也是多增加一些麻烦而已,后来但将这些字典写成枚举。然后数据库里面取的所谓的字典的key就是枚举的name,如:"unsubmited",而前台页面显示的,就是枚举的一个属性text,不过这里用到了webwork里面的ognl语法。/** *//** * Author: Wingel * Date: 2006-7-29 ...
  • 10:46
  • 浏览 (211)
  • 评论 (0)
在一个Swing的项目中,每个控制用户操作的action都是用new出来的,所以还要手动set一些被spring管理的对象。 后来实在受不了这些冗余的代码了,写代码的时候有时候又可能会把spring的对象跟非spring的对象顺序弄乱了,让代码结构不清晰,在spring2的介绍中,听说它连new出来的对象都可以管理,便去下了spring rc3来,布署到项目中。   研究了半天,才发现其实是很容易的事,可怜我们看文档看了半天。 1。虚拟机加个参数:-javaagent:lib/aspectjweaver.jar(后面是spring带的aspectjweaver.jar的路径) 2。在s ...
here are four isolation levels: READ UNCOMMITTED (在一个事务中,可能读到别的事务还没提交的数据) READ COMMITTED(在一个事务中,同样的语句可能查询到不同的数据,因为在这两个语句之间,别的事务更改提交了这两个语句涉及的数据)REPEATABLE READ(保证一个事务A里面读到的数据不会变,即使期间别的事务B提交更改了数据,事务A中的语句仍然会读到原来的数据) SERIALIZABLE(在事务期间,会将涉及的数据锁掉,防止别的事务修改)SQL server实现了四个级别Oracle只实现中间两个级别。  
  • 10:44
  • 浏览 (359)
  • 评论 (0)
  应上回几位同事的建议,决定在这周的技术讲座上讲一下java的annotation的用法。前面讲了annotation和interface,abstract的区别,以及各自的优缺点,后来就只讲annotation的用法了,讲到annotation可以放在3个地方,类,属性和方法,然后顺便提了一下说,可以设计这样一个框架,在属性上加一个annotation,就可以实现验证的功能。  有一位同事听了,当场就提出说,可不可以写个例子来看看,怎么实现这个验证。  这倒也难不倒我,赫拉赫拉,当场就开始写,20多分钟后,这个粗略的结构就出来了,因为以前没试过在属性里面加annotation,结果竟然发现 ...
  • 10:43
  • 浏览 (314)
  • 评论 (0)
   今天要配置hibernate时,决定用一下annotation配置OneToMany跟ManyToOne,结果在取Parent那一层的所有记录时,老是多取出一些数据,还以为配置配错了,研究了半天,后来想一下,会不会是cache的问题,一试,果然是。  因为每次调试的时候,都会重启一下Web服务器,所以都忽略了Cache的问题。看来,还是要注意一下序列化到磁盘中的cache数据的。
  • 10:43
  • 浏览 (241)
  • 评论 (0)
    上回有一段时间,做了个.net的项目, 于是就上网查了一些.net的开源框架,发现很多都是Java下的开源框架改写的。而正如spring在Java语言的地位,.net下比较火的开源框架蛮多是Castle出的。看了一个叫MonoRails的MVC框架,是从ROR下吸收了一些思想。大致看了一下,发现还是有很多特性是比较好的。    于是有感而发,就在Java下也做了一个类似MonoRails的框架,大致是具有了以下的一些特性:    Webwork的Interceptor机制。   ...
  • 10:42
  • 浏览 (771)
  • 评论 (1)
以前的版本是webwork2.2+spring m4+hibernate3.1的.有一回在网上看到hibernate3.2的发布了. 一直都觉得写hibernate的映射文件是一件苦力活,于是就决定用一下hibernate的annotation.升级的时候,还真是出了一堆的问题.要嘛是ecache的问题,要嘛又是hibernate的second level cache的问题,用了spring自带的hibernate包有问题,但用了hibernate网站上下载的包又有问题.最后,去spring下了最新的发布版本,又用了hibernate的3.2GA版,终于,问题解决了.反正都升级了一部分了,后面 ...
  • 10:41
  • 浏览 (280)
  • 评论 (0)
  进中华英才网 ...
  • 10:39
  • 浏览 (288)
  • 评论 (0)
2006-11-26

回忆1

    平常我很少回忆,因为人要向前看,因为刚气的男人都不回忆的,所以我不经常去回忆。但我清楚的记得如下的事:    刚毕业的时候,妞妞不要上班,而我要。她白天就在家里面看电脑上存的连续剧,我在上班时,偶尔会收到妞妞发过来的短信说,“猪,我把地板拖了,家里好干净啊。”“猪,我把桌子都擦了一遍了。”“猪,你在做什么呀?”。每次收到妞妞的短信我都会笑,虽然每次我都只是淡淡的回复她,但我每次都会不自禁的笑起来。很明显,我是个爱情很淡的人。但我对妞妞的感情却很浓,浓到每次 ...
  • 10:39
  • 浏览 (220)
  • 评论 (0)
Propagation behavior:PROPAGATION_MANDATORY: Indicates that the method must run within a transaction. If no existing transaction is in progress, an exception will be thrown.PROPAGATION_NESTED: Indicates that the method should be run within a nested transaction if an existing trans ...
  • 10:38
  • 浏览 (264)
  • 评论 (0)
2006-11-26

hibernate

---------------------------------------------------------------------------------------Criteria Query:其实有的时候,会比写hql更简单一些---------------------------------------------------------------------------------------(一)多对(一)多关系:如果在映射文件中加了这些描述,查询的时候会比较方便,但是增加,更新,修改的时候,最好做成双向关联.不过我还是觉得把Cascade设为none,不要让它进行级联操作 ...
  • 10:37
  • 浏览 (281)
  • 评论 (0)
注射式工厂调用的bean管理框架:    设计的目标:易用,和利用注射来达到可以实现单元测试    想法的来源:spring的ioc    不同点:spring的ioc可以简单的将实现类替换掉,但是目前我还没有碰到过将整个实现类替换掉的问题,所以我决定写一个按规则习惯寻找实现类的框架,这是不同时期的经验问题,不懂以后会不会将否决这个想法,所以决定记下来.QA的框架:    设计的目标:通用,业务无关    想法来源:模拟一个客户上网填单,以及将服 ...
  • 10:36
  • 浏览 (229)
  • 评论 (0)
    今天再一次看了《大道至简》,觉得还是有挺多地方不懂的,当然,不是说这本书就是一本圣经,必须要完完全全的理解,只不过,目前以我的层次来讲,体会得越多,走错的步子就会越少.        目前,我想记住两句话:    工具->方法->工程->过程->组织    我用了一年的时间,从工具->方法.!但我又清醒的知道我要稳稳的走!唉~    "实现"的欲望是程序员出身 ...
  • 10:35
  • 浏览 (243)
  • 评论 (0)
有一位好朋友,告诉我一件事情,然后突然跟我说,你可不要跟你老婆讲哦,我一想,这也是一件挺三八的事情,不讲就不讲了,于是就说好,然后真的就没有讲了.后来老婆知道了这件事情后,对我大发雷霆,说我们俩人之间怎么可以有事情不说呢.我刚开始还没什么觉悟,后来被老婆的一番教导,又一番教导,再一番教导,这样循环一百遍啊一百遍.我,终于,觉悟了,深深的意识到自己的错误,所以我在这边检讨,我以后再不做这种事情了. 
  • 10:34
  • 浏览 (270)
  • 评论 (0)
    到了新公司了,上车的地点也不一样了。以前经常会陪女友一起走到她公司的门口,把她哄进去了,自己再去坐车。而今,女友经常要一个人走到公司了,想到女友要一个人走那一段路,竟然会心很疼。路就是那么一小段路,她也经常会有自己走路的时候,可是就是会心疼。唉,也许照顾一个人久了,当有一天看到没有你照顾的她时,不只她会觉得难受,你也会心疼的。 
  • 10:33
  • 浏览 (214)
  • 评论 (0)
一个男人怒气冲冲的冲进某单位,嚷道:这里是动物保护协会吗?工作人员:是啊,请问是谁欺负你了?今天是我的生日,女友早早的打来电话说晚上要到家里去为我祝贺生日,还要带给我惊喜!听了这个好消息!我今天工作起来是格外买力,一下跑了十几个客户!回到公司。都下午三点了,到食堂一看,只剩下可怜巴巴的一菜一汤了,肉炒三豆(肉炒黄豆、青豆、豌豆)和萝卜汤。没办法,跑了一上午客户,肚子早就咕咕的叫了,只好要了一大盘肉炒三豆和一大盆萝卜汤,吃了起来!没想到临下班了,我的肚子里就像一台越野吉普的 发动机!--开始了,剧烈的活塞运动!刹那间,一股股气 体来势争先恐后的从我的体内冲了出来!我赶紧冲到没人的地方,肚子开始还 ...
  • 10:31
  • 浏览 (251)
  • 评论 (0)
目前jQuery网站上已经有了From的验证框架,FromValidation,但是一直觉得它的框架并不好用,因为重复写的东西太多了。 于是就再次写了自己的JavaScript验证框架,完全废弃掉以前的。 在新的框架下,是以这样子的用法设计的: 首先,要包括自己的js文件(这点不必说),而且在包括自己写,要先包括jQuery的,如下 xml 代码   <script type="text/javascript" src="jquery-latest.js"></script ...
其实如果你对代码要求比较严格的话,你就会经常发现,你的代码有很多东西可以抽取出来,或者做在公共的模块,或者作为框架的底层, 我们就简单的拿jdbc来说吧, 首先,是connection的管理,这点一般用jdbc熟一些的话,都会有管理connection的公共模块,虽然偶尔会碰到性能的问题,但是这点我们暂且压下不表。 我们查询的时候,每次都要用 rs.get...("name"), rs.get...("id"), rs.get...("age"), rs.get...(&q ...
Wingel
搜索本博客
最近加入圈子
存档
最新评论