- 浏览: 536370 次
- 性别:
- 来自: 杭州
最新评论
-
飞天奔月:
public List<String> gener ...
实践中的重构30_不做油漆匠 -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道public class A {
...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在世界的中心呼喚愛 写道在classB ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
在世界的中心呼喚愛 写道在classB的finalize上打断 ...
深入理解ReferenceQueue GC finalize Reference -
在世界的中心呼喚愛:
iteye比较少上,如果可以的话,可以发e-mail交流:ch ...
深入理解ReferenceQueue GC finalize Reference
文章列表
最新版本
http://zhang-xzhi-xjtu.iteye.com/blog/474702
CodeLineCounter2.1 note.
version 2.1
作者: zhang_xzhi
email: zhang_zhi@163.com
blog: http://zhang-xzhi-xjtu.iteye.com
svn: https://codelinecounter.svn.sourceforge.net/svnroot/codelinecounter
1 一句话介绍
源代码统计工具,支持基于Spring的配置以及提供了一些扩展点使得用户可以方便的扩展。
同时可以生成各 ...
Collecting Parameter是我比较喜欢使用的一个模式。
其精髓为把一个参数做为收集结果的数据容器,然后把该容器当作参数传递给所有参与计算结果的方法,而从达到收集结果的效果。
例如:
private void f(Set<String> fileNames) {
Set<ResultItem> resultItems = new HashSet<ResultItem>();
for (String fileName : fileNames) {
parseFile(fileName, resultItems);
}
...
- 2009-08-22 01:42
- 浏览 1962
- 评论(0)
领域模型的建模有时候是很复杂的,大量对象之间构成复杂的关系网,而一般这些领域对象都是存储在数据库里,所以对象的建立保存就会变得比较复杂。
Lazy Load是一个缓解这个问题的一个办法,但是不是所有场合都适用。
问题的解决还是应该回到领域模型的建立上来,当定义对象时,要对不同的关注点进行分离。当对象之间有复杂的关系网时,并不是相关对象的网络要一次的建立好。可以加一些对象的键来分离对象模型,利用这些键可以进一步构建对象关系网。
比如,A中有B,C,B中有D,E,C中有F,并不需要一次构建起A的整个对象,有可能用一些键进行一些划分,例如A中有B,C,B中不直接引用D,E,而且构建KeyOfD, ...
- 2009-08-21 00:59
- 浏览 1209
- 评论(0)
不说了,两个字,完美。除了time bug有点闪眼睛。
通关后发现OCD模式。呵呵,挑战啊。
上图。
夏天。
秋天。
冬天。
计算机。
春天
不建议这么使用finally。
但是这两个例子可以帮助更好的理解finally。
// always return 1.
public static int f(boolean b) {
while (b) {
try {
return 0;
} finally {
break;
}
}
return 1;
}
// always return 1.
public static int f() {
try {
return 0;
} finally {
return 1;
}
...
最新版本
http://zhang-xzhi-xjtu.iteye.com/blog/474702
CodeLineCounter2.0 note.
version 2.0
作者: zhang_xzhi
email: zhang_zhi@163.com
blog: http://zhang-xzhi-xjtu.iteye.com
1 一句话介绍
源代码统计工具,支持基于Spring的配置以及提供了一些扩展点使得用户可以方便的扩展。
2 系统设计及扩展
系统按照以下阶段执行。
阶段1 接收文件 阶段2 统计行数 阶段3 生成报告
接收文件用
public inter ...
Drools5的一些重要改动。
改一些基本类名字。Drools5试图统一Rule Engine,Workflow,EPM(事件处理模型)。所有的东西都改为Knowledge什么什么。
可以定义rule engine的局部类型。
Stateful session可以持久化了。
CommandExecutor统一了stateless和stateful session的调用模型,并且都可以返回result。
Batch Executor简单的帮助工具。
Knowledge Agent+change Set提供了监控资源文件以及rebuild KnowledgeBase的功能,但是并不完全。
...
在jbpm中,task可以指派给一个actor,这个actor是一个string,所以扩展性比较好。它的意义可以根据具体的逻辑来制定,如user,role,group等等都是可以的。
另外,还可以指定task的pooledActors,这个是task的备用actor。使用思路是,如果actor ...
使用swimlane可以让process的task的assignment更加清晰。
如下所示:task0和task1都是引用了swimlane admin。可以看成一种task assigment的连续性,task0和task1是相关的,因为它们的assignment都是同一个swimlane。
<process-definition name='testSwimlane'>
<swimlane name='admin'>
<assignment class='test.swimlane.Admin' />
</swimlane>
...
jbpm的版本为3.2.3
timer本身是由JobExecutor执行的。所以要先启动它,
JbpmConfiguration.getInstance().startJobExecutor();
action必须实现ActionHandler。
<process-definition name='testTimer'>
<start-state>
<transition to='start' />
</start-state>
<state name='start'>
<timer name='remi ...
decision节点可以实现多路选择。
<?xml version="1.0" encoding="UTF-8"?>
<process-definition name="testDecision">
<start-state name="s">
<transition to="inputScore" />
</start-state>
<state name="inputScore">
...
fork的使用有一些小的地方需要注意。
1 fork节点出去的transition必须有name属性,因为Fork要用该属性来构建子token,如果不指定的话,那么所有的transition的name都为null,则只有一个transition会被调用。
2 fork的行为是依次调用transition,所以在底层它并不是一个并发的模型,如果需要使用并发模型的话,可以考虑jbpm的异步调用,当然,也可以自己起一个Thread去完成一些task。
3 token的name是和transition的name相关的,如下例所示,rootToken的fullName为'/',fork出来的两个子tok ...
当process流进task-node 't'的时候,进入wait-state,当两个task都被end的时候,process继续。
<process-definition name='simpleTask'>
<start-state>
<transition to='t' />
</start-state>
<task-node name='t'>
<task name='task0'>
<assignment class='test.task.TaskA' />
</t ...
重新改了一下jbpm的教程的第一个例子,希望对刚接触jbpm的人有帮助。
HelloWorldProcess.xml
<process-definition name='helloProcess'>
<event type="node-enter">
<script>
System.out.println("this script is entering node "+node);
</script>
</event>
<start-state >
& ...
<settings cacheModelsEnabled="true" />是一定要配置的,不然cache不起作用。
readonly的配置
当readonly为true时,serialize是没有意义的,每个返回的对象就是cache中的对象,所以如果改动了该对象,则cache和数据库就不一致了。当readonly为true是不改动返回值要靠我们人工了。
当readonly为false时,serialize为false时,cache的实体是不需要实现Serializable的,但是很奇怪的是,其返回的实体不是原本cache中的实体,改动返回值不会影响以后的返 ...