- 浏览: 117767 次
- 来自: ...
最新评论
文章列表
Essential SICP Primer
- 博客分类:
- 术
综述
本书以Lisp语言本身为例,完整而辨证的讲述了“计算机程序”的各种形而上形而下的问题:
程序语言本身的要素(原语、组合手段、抽象手段)
程序的计算模型(代换模型、环境模型,迭代、递归)
程序的 ...
Thinking Everyday II
- 博客分类:
- 道
1, 是业务,不是技术,傻瓜
是集成,不是编程
是使用,不是创造
是创造,不是祈求
是合作,不是独立
是开放,不是保密
是实践,不是谣言
是选择,不是忠诚,更不是媒妁,傻瓜
2, 所谓文化
即是规则,模式,惯用法的积累:在一个狭小的空间内,积聚了大量高度内聚的原则,模式,惯用法,便形成了文化
3,Iterative
Matrix是迭代开发的,事实上所有的事务本质上都是迭代的,共产主义不会一蹴而就,需要经过原始社会,奴隶社会,封建社会,资本主义社会,社会主义社会(分初级和高级两个阶段),n-1主义社会,才能最终到达
4,Balance
Matrix不是完美的,它只是达到了 ...
访问控制 : 语言和平台
- 博客分类:
- 道
程序逻辑上的组织方式(如名称空间,包等)可以和部署时的分发方式(如程序集,jar包等)不同,那么不同class间的相互访问权限应该在逻辑组织上限制还是物理分发上限制呢?
Java
语言本身
采用了对逻辑组织方式进行限制,即你可以访问java.lang中的私有类而能够通过编译,只要你自己的代码也以java.lang为包名[我猜的,没试过]
运行时
采用了对物理分发方式进行限制,可能跟缺省的ClassLoader有关,即使你通过编译了,但部署时同一包名下的类分成了不同的jar包,那么对私有类的访问可能会出错[我猜的,没试过]
. ...
Essential C++ Primer
- 博客分类:
- 术
Please "Learning Standard C++ as a New Language", and "Speaking C++ as a Native"朋友的公司还在用C++的环境编写着“带类的C”代码,每天回来就倒苦水,我曾经工作过的一家公司也有动辄几千行的C风格的函数这里概述一下C++最最 ...
古代的软件开发 (一)
- 博客分类:
- 道
1,额外的中间层鞋子:人类发明鞋子的意义无论如何评价都不过分,鞋子屏蔽了各种地况的差异,脚掌不必再受不同环境带来的痛苦,如针棘,石子等鞋垫:进一步抽象出来的中间层2,模式《三十六计》或许是较早的模式书籍了,记载了可复用的三十六个军事方面的模式
Nucleus中的WebService
- 博客分类:
- 术
一、开发包
现有文档:
《简单的axis》
现用开发包:
服务端开发包使用apache axis
客户端开发包使用systinet wasp 5.0
服务端和客户端使用不同开发包的原因:
systinet的服务端开发包必须与systinet server一起使用,而我们选择了JBoss等,因此服务端选择了其它的开发包
systinet的服务端开发包和客户端开发包缺省占用同一个socket端口,因此无法在同一个应用中同时使用必须systinet的服务端和客户端,因此服务端选择了其它的开发包,对systinet进一步的学习可能会解决这 ...
1, 事务脚本 vs. 领域模型(Transaction Script vs. Domain Model)
作者基于功能的复杂性来区分两种模式的使用时机,却忽略了另外一个因素:功能的增加
领域模型将功能和数据置于同一个对象中,当需要增加新的功能时,只能通过为 ...
Language Oriented Programming : The Next Programming Paradigm
Sergey Dmitriev, JetBrains
现在是软件开发中开始下一次技术革命的时候了,而这次革命的轮廓正变得越来越清晰。下一代编程范型也在接近我们,但仍然没有完全成形--不同 ...
工作流第二版设计总结
一、Existing Problems
没有进一步总结工作流领域模型,还基本停留在第一版的层次上,导致:
层次不甚清楚
增加新功能困难
事务脚本过多,带来重复代码
组件职责相对混乱,尤其是服务组件与其它模块耦合太多,应更清晰的定义一个内核服务层
没有做并发设计,导致:
性能低下
存在死锁可能
二、Design Principles
针对接口编程与控制反转
整个系统针对接口编程,降低了编译时依赖;利用IoC,通过配置来组装系统,定制运行时行为;带来的最大好处就是,我们获得了一个可在分布式和嵌入式之间通过配置切换的引擎,不需要修改源代码,大大提高了持续集成的 ...
- 2005-02-17 08:55
- 浏览 732
- 评论(0)
工作流第二版过程总结
这段时间增加了几个实践:
持续集成:目前的问题是单元测试覆盖率不够,再就是没有单独的集成机器,一直使用我的机器,当有人checkin,触发update/compile/test/package/checkin序列后,我的机器就慢的无法无天
CRC卡片:没用Together,移植并重构后的系统架构用了6张CRC卡片来描述;问题是用的太少,下一版应该多多使用,再配合数码相机就更好了
每日例会:
See Also:
《工作流:第一次发版,过程总结》
- 2005-02-17 08:52
- 浏览 612
- 评论(0)
一、我们要解决的问题
功能的描述、表达,即功能的实现
结构的描述、表达,即功能的组织
业务的描述、表达,即最终的目标
二、我们对功能的描述、表达
开始,人们用指令封装了电路来表达功能
后来,人们用函数封装了指令来表达功能
再后来,人们用库封装了函数来表达功能
那么现在,我们用什么来封装库去表达功能呢?【问题一】
三、我们对结构的描述、表达
3.1,programming principles
开始,人们用文字来描述简单、正确、灵活、高效的有关软件结构的principles,如 ...
一、现状
软件越来越庞大,细节越来越多---->难以改错,改进
开发周期越来越长---->浪费金钱、生命
二、原因
生产工具与任务之间的差距太大:要砍伐整片森林,手里只有斧子
生产资料与产品之间的差距太大:要葱油鲤鱼,手里只有鱼籽葱籽
要建立一个金融系统,手里只有C++Java编译器,UML“建模”工具
要建立一个化学反应模拟系统,手里还是只有C++Java编译器,UML“建模”工具
三、其它领域的样例
要创作一首曲子,只需写出它的五线谱,你几乎不可能用自然语言来描述
要证明一个数学定理,只需用数学符号、现有的数学公式来推理、自然语言语焉不详,不够精确
...
1,公交支线,如375和375支
现实一:无论命名上多么相近,对乘客来说,还是互不相干的两条独立的路线
现实二:有时命名上毫不相干的两条路线,反而比支线更为接近,如726和826支几乎一模一样,826和826支反而相差较大
现 ...
错误处理规范
〇、概念澄清
概念
解释
错误
是指:导致系统不能按照用户意图工作的一切原因、事件
不是指:java.lang.Error及其子类
异常
是指:特定编程语言、开发平台提供的一种错误表现机制
不是指但包括:java.lang.Error及其子类,java.lang.Exception及其子类,System.Exception及其子类 ,std::exception及其子类
一、整体规范
按照错误类型,通常的处理方式如下:
错误类型
范围
处理方式
操作员错误
与人机界面交互时不满足输 ...
Nucleus.MockAOP.Net简介
一、功能
基于配置文件,动态载入Aspects
对不同的类,指定不同的Aspects (基于正则表达式或者继承关系)
对类的不同方法,指定不同的Aspects (基于正则表达式)
指定Aspects的相对执行顺序
提供了一种ChainOfResponsbility模式的RealProxy实现,并提供了该RealProxy所需的Aspect的框架,及三个示例Aspect,分别用来计算执行时间、打印输入参数和返回值、和捕捉所有异常
二、限制
未找到好方法将Aspect变为无状态,导 ...