- 博客(7)
- 收藏
- 关注
原创 TOPLINK源文件不完整
嗯,以前一直是用Jad反编译的。后来toplink既然开源了,还是看正宗的源代码比较爽。结果发现在source.jar中找不到类。代开toplink.jar和source.jar对照,才发现两者不是一一对应的oracle.toplink. publicinterface包在source中整个都没有,FT!都开源了,还藏起来着两个干吗?另外觉得Eclipse的File Assosition还
2007-10-26 10:02:00
415
原创 SRP的一个实例(2)
以前的这个设计,考虑到了Java Sheduler会被重启造成死锁,所以Scheduler重启时释放了所有的锁。但这样的方案存在以下问题: 如果Java Scheduler重启后前一个存储过程还没有执行完,由于重启释放了锁,下一个请求会被并发。这次出bug也正是由于这个原因。究其原因,这是一个违反了Single Responsiblity Principle的设计。按理说,像这种需要并发控制的
2007-10-14 23:40:00
598
原创 SRP的一个实例(1)
这两天报过来个bug,和大家讨论了解决方案后,觉得这正是SRP一个广义上的实例,值得记录一下。先讲一下业务情况:数据库中有一些存储过程,目的是生成报表数据。应用服务器上有一个Java写的Timer,定期(通常是一周,一月或一年末)调用这些存储过程,更新报表数据。这些存储过程中任何一个都能被顺序执行任意多次而不会出错,但如果同一个存储过程的两个实例并发执行会产生错误结果。先前的处理方法基
2007-10-10 23:31:00
816
原创 业务抽象——必要属性和可选属性一个例子
今天在看系统源码时,遇到了一个可选属性的例子,比较有代表性。业务描述如下:一个仓库管理系统,管理若干仓库(warehouse),每个仓库和若干货主(owner)发生业务。货主在仓库中存放若干种货物(item),货物包括名称(name)、编号(id)等属性。那么,怎么设计DB呢?第一反映是应该有这几张张表:Warehouse,Owner,Item,Owner_Warehouse_R
2007-09-30 18:14:00
911
原创 调试总结:Ant,CLASSPATH,Runtime.exec() & ultraedit
调到新项目组后部署环境,遇到了不少有趣的问题,这里记录一下。Server端的程序用ant部署。装了oc4j后,从clear case上拖下了程序,跑ant的过程中发现oc4j在ant里起不来,错误是errorcode=3, Java的IOException。手动到oc4j的home/j2ee下敲java -jar oc4j.jar是好的,怎么回事呢?打开build.xml看了看也没错,单独跑s
2007-09-29 19:56:00
1621
原创 mock.VerifyAll()? NO!
TDD我用的很久了,Mock这东西倒没怎么用过。主要是这两年都在写那个nlp的framework,一手一脚搭起来的东西,完全是由底而上,基本需要被交互的interface都有了instance class。也就自然在Junit中写XXXinterface xxx=new XXXinstance从而没有必要去面向interface编程了。最近到了新单位,开始用CAB,遇到了MVC的问题。
2007-09-22 00:05:00
1759
原创 敏捷是什么?
敏捷这个东西我接触的时间并不长,也就是2年左右。由于这2年都在学校读书,所以像什么8小时工作啊,结对编程啊都还没有机会尝试。但之前有过4年的复杂的开发经历,从最开始混杂着SQL的ASP开始,毕竟是吃过不少苦头的,所以在接触敏捷的过程中往往会感觉到很多想法正是对应这以往所遇到的某些问题。所以在尝试着用敏捷的思路和方法作过些东西后,自然对其有了很强的认同感。但是对于敏捷的核心是什么,一直没有切身的体会
2007-09-19 23:02:00
1172
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人