- 浏览: 367203 次
- 性别:
- 来自: 北京
最新评论
-
litongke:
类比的方式总是能帮助我们快速的理解一个晦涩的理念。楼主的很厉害 ...
从面向对象到面向切面 -
snowflate_summer:
这是从数学上来论证面向对象和面向切面吗?很深奥
从面向对象到面向切面 -
奥义之舞:
我好像更迷茫了。、、、
从面向对象到面向切面 -
canonical:
很遗憾,从现在已知的物理学来看,所谓能量也只是一种偏移量而已。 ...
逆元:不存在的真实存在 -
suifeng:
关于最后一段:我也有类似的思考信息是能量的动态呈现, 也就相当 ...
逆元:不存在的真实存在
文章列表
软件开发是从设计开始的,
而设计的产物是一堆描述性的文档. 我们总是希望这些描述能够尽量完备, 例如在一个用例描述中我们总是希望加入尽量多的异常流描述,
尽量把所有的相关情况都同时呈现出来. 当我们对系统进行了大量的分解和分析工作之后, 往往会遇到一种理解上和验证上的困难,
即我们如何才能确保某个use case的运行结果恰好能够满足另外一个use case的输入需求, 整个系统能否精密的配合在一起.
此时我们可以依赖一些整体架构设计的文档描述, 或者补充更多的系统连接上的说明, 但是无论如何,
要在思维中同时把握那么多条执行路径是一件艰难的事情.
设计文档可以说是对系统行为的 ...
- 2005-11-26 10:37
- 浏览 1188
- 评论(0)
http://ajaxanywhere.sourceforge.net/index.html
AjaxAnywhere利用JSP标签把Web页面标注出可以动态装载的区域, 可以直接把任何JSP页面转化为AJAX感知组件而不需要进行复杂的Javascript编码.
<script> ajaxAnywhere.getZonesToLoad = function(ur ...
- 2005-11-23 21:53
- 浏览 2065
- 评论(0)
witrix平台中的tpl模板技术的重点在于标签定义的设计, 在于如何最大限度的发挥xml格式的表达能力。
tpl自定义标签的基本结构如下:
<Namespace:TagName tpl:tag="realTagName"
tpl:noborder="${booleanExprInCo ...
- 2005-11-22 23:09
- 浏览 1782
- 评论(0)
经济学的核心概念是合同(contract),多个利益主体(具有不同的价值目标)在交互中达成一致协议。这本质上是个多目标优化的问题。这与物理学的精
神是有着本质区别的。物理学传统上认为世界是完美的,存在着唯一的真理。根据Lagrange原理,最低能量原理等,物理世界总是在众多可比的备选结构中
选择那唯一最优的结果。在经济学中不存在唯一的价值取向,并不是所有的事物之间都是能够进行比较并排出座次的。比如,我们大多数人会认为10个老婆饼比一
个老婆饼好,10个葱油饼比一个葱油饼好,10个老婆饼加10个葱油饼比一个老婆饼加一个葱油饼好,但是10个老婆饼和10个葱油饼之间如何比较,却是没
有确定的结 ...
- 2005-11-22 17:59
- 浏览 1289
- 评论(0)
过程控制的要点是哪些?我从以下几点来考虑这个问题。
第一点是测量,衍生出定义,标识,记录,评判等。测量需要在具有分歧的变化之处进行(与其它过程的交连之处)。
第二点是预测,预测不准的原因一般是信息不足或者是非线性。确定性系统中可以产生貌似随机的混沌现象。物理学中混沌控制的基本要点是缩短控制间隔,尽量利
用确定性的信息,而且间隔减小之后,多半可以部分恢复线性。此外,控制所需的信息也并不需要是整个动力学过程的全部信息,只需要是某个动力学切面上的信息
即可。
第三点是控制点的选择,控制点分为时点(时机)和位点(对象)。有时需要在系统中制造出某个瓶颈来便于施加控制。
第四点是执行,控制 ...
- 2005-11-22 17:58
- 浏览 1556
- 评论(0)
quartz是一个高质量的任务调度软件包。其主要组成部分为:
Scheduler接口: quartz的执行线程,它根据Trigger决定调度时刻,根据JobDetail的说明实例化并运行Job
JobDetail类: 可持久化的任务描述信息。任务虽然分组,但是仅用作管理标示 ...
- 2005-11-22 17:55
- 浏览 4256
- 评论(0)
hibernate等O/R
Mapping软件包中使用javabean来作为数据的载体, 但这些bean一般除了get/set等数据访问方法之外没有什么其它的业务方法。
前一段时间有人认为这是所谓贫血的领域模型(Anemia Domain Model),引发了一场讨论。
其实这些bean的作用仅是表达了领域内的数据关系, 本身并不可能作为完整的领域模型层存在。
在数据层,我们所需要的是数据对外暴露,因为我们无法预知这些数据的使用方式,
就象是实验数据发表出来以后你无法预知别人如何分析一样,这时信息流是开放的,向外的:信息在这里,放马过来吧。
而在业务逻辑层,复杂的逻辑控制交织在一起,我们需要 ...
- 2005-11-22 17:53
- 浏览 1450
- 评论(0)
在程序中需要返回一个数据集合的时候, 应该尽量选用标准的Java集合类接口,例如List, Map等.
有时也见到有人选择返回Iterator对象, 一般情况下这不是很好的选择. Iterator对象的功能有限, 而且存在一种即时消费的特点,
我们一般不能把一个Iterator保存起来留待以后使用. 而且JDK提供的集合类也不能从Iterator直接构造出来,例如没有 new
ArrayList(myIterator), 这样为数据复制造成一定的困难.
Iterator在理论上的好处之一是可以支持延迟加载数据, 但是实现起来比较繁琐而且单条加载也是比较低效的. 在witrix平 ...
- 2005-11-19 11:04
- 浏览 1308
- 评论(0)
Ivar Jacobson 在其著作"Aspect-Oriented
Software Development with Use Cases"中将AOP(Aspect-Oriented
Programming)上升为一种贯穿软件开发全生命周期的设计技术,由建筑学的隐喻引出了decoration overlay(existion
+
extensions)的策略。在建筑学中,首先基础设计图规划了房间的空间划分,电气工程师基于这张基础图决定电气设施排布图,而装修设计师可能依据基
础设计图决定装修方案。所有这些扩展(extension)设计图叠加到基础设计图之上构成的最终设计方案 ...
- 2005-11-19 11:03
- 浏览 1267
- 评论(0)
交叉表(Cross Table)的基本特点是具有横纵两个自由延展的维度,而平面表结构只有一个可延展的维度,因为平面表的列名和列数是确定的。例如,地区的产品销售数量,在平面表中表达为
district_id product_id sell_num
如果表现为交叉表,则为
productA productB
districtA sellNum sellNum
districtB sellNum sellNum
这种结构上的失配需要通过程序逻辑来进行调整。
注意到平面表结构只具有一个可延展的维度,而join可以看作是该维度上的连接操作。因此我们可以将交叉表看作是 ...
- 2005-11-19 11:02
- 浏览 1396
- 评论(0)
数据导出的功能大致可以分解为三个部分: 1. 从数据源读取一条记录 2. 将一条记录导出为指定格式 3. 循环调用1和2
首
先我们需要一种机制来对外暴露数据源(一种Container)中的数据,Iterator模式恰能满足要求。其次,我们需要一种机制来对一系列数据进行
处理,这对应于Visitor模式。第三,在组合Iterator模式和Visitor模式的处理过程中,我们需要表达出平面表数据集的基本特征。
在witrix平台中,平面表数据导出和转换通过TablePageProcessor对象来完成,
class TablePageProcessor{
IPageViewer viewer;
...
- 2005-11-19 11:01
- 浏览 1286
- 评论(0)
分页的功能由两部分组成:取数据和计算分页。其中取数据的功能由IPageViewer接口实现
interface IPageViewer{
int getTotalCount();
List getAll();
int listPage(int startPos, int maxCount);
}
Pager是用户调用时的接口
class Pager{
public List getAll(){}
public List listPage(){}
public int getPageCount(){}
public int getPageSize(){}
public int ge ...
- 2005-11-19 11:00
- 浏览 1277
- 评论(0)
java中最常用的数据结构类型是Map和List,
它们也是Container的两种基本模式,一个是根据特征值定位,一个是根据地址定位。
它们共同的一个特征是表达了数据之间的直接的,短程的一种相关性。另一种常见的数据结构Tree则表达了数据之间的一种长程的关联:根节点与其所有层次上
的子节点之间都存在着关联。 文件系统,组织机构, XML文档等都可以对应为Tree数据结构。在描述树形结构的时候,我们经常使用XML文件,
但是XML文件在程序中操纵起来并不方便,这其中的一个重要原因是XML是面向文档的,即操纵XML的API返回的和使用的都只能是文本字符串,而不能直
接使用程序中常见的其他数据结构。 ...
- 2005-11-19 10:59
- 浏览 1670
- 评论(0)
CRUD(Create, Read,Update, Delete)操作中最难处理的是查询。因为查询总是多样化的,如果每个特定查询调用都编制一个对象方法,则维护量太大且扩展性很差。如果编制一个通用的
查询接口,一般的做法是直接以SQL文本作为参数,但这样就几乎丧失了封装的意义。这里的核心问题是Query本身是复杂的,我们应该将它对象化为一个
类,在程序中控制Query的结构,而一个文本对象与一个复杂的Java结构对象的差异就在于对于文本对象我们很难有什么假定,因而在程序中也很难编制通
用的程序对其进行处理,一般只能对它进行传递。实际上,文本中描述的结构存在于java程序之外!当然,我们可以利 ...
- 2005-11-19 10:58
- 浏览 1562
- 评论(0)
新手总是有很多不好的代码习惯. 最常见的一个是不使用临时变量.例如
for(int i=0;i<myList.size();i++){
otherList.get(i).getSomeVar().getName();
otherList.get(i).getSomeVar().getValue();
}
这种做法有如下后 ...
- 2005-11-17 11:55
- 浏览 1419
- 评论(0)