- 博客(17)
- 收藏
- 关注
原创 ==代替Object#equals() - 加速在容器类中搜索元素速度的可能性
== vs. Object#equals() to accelerate Collection#contains()问题的描述众所周知,在需要将对象进行大量比较(equals)的场景,比如List#contains()的大量调用中,Object#equals(Object)实现的效率是很重要的。提高对象比较效率的途径之一是用地址比较来代替内容比较。比如String#equals(Obj...
2012-09-28 22:59:26 188
原创 我对“没有银弹”的看法
Fred Brooks的《没有银弹》http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html引起了很大的争议,很多人纷纷从各种角度批驳软件业没有银弹这一观点。有些人则用该文观点否定软件工程中当前和未来一切技术和方法。我个人认为,软件开发是将人力和资本转化成软件产品的过程,它类似于物理学中的能量转...
2009-12-26 17:34:49 722
原创 读书笔记
selenium Web应用程序自动测试软件,复制和重播模式(record and replay)产生测试脚本 http://blogbin.iteye.com/blog/38215 其他相关:Telluriumhttp://www.infoq.com/cn/articles/tellurium-testing-framework...
2009-07-04 11:01:24 149
配置、脚本和编程语言
配置、脚本和编程语言,看似很不相同,其实本质上是一样的东西。这点从Ant脚本可以看出来,它基于的XML是配置所采用的流行格式。同时Ant脚本里有量,有函数,能循环和逻辑判断,已经具备编程语言的基本要素了。程序像一个水桶,边界条件的约束就像桶边,有了边才能盛水。编程就像箍桶。但通常我们不把桶做成三维密封的圆柱体,顶上留口,以便水进出。编程也一样,为灵活性考虑,我们通常会让某些条件开放着,留待部署...
2009-06-18 08:53:48 396
原创 分布式数据库项目
Amoeba,based upon Mysql. in JavaHBase,based upon Hadoop. in Java*HyperTable, optionally based upon Hadoop, in C++learn more.
2009-06-11 23:47:12 199
谈谈单元测试中的测试桩实践 (5)
接着,SystemTimeSynchronizerTests就可以作很大的改进,通过预设标准时间,测试SystemTimeSynchronizer#syncTime()的各个处理分支了。 /**shannon.demo.unittest is the unit test codes * package for the demonstration. */package shan...
2009-06-11 14:40:26 427
谈谈单元测试中的测试桩实践 (4)
在UnitTestFirewall中也要做相应的修改,以允许在测试时,定制Clock实例。 package shannon.demo; import thirdparty.any.NtpClock; /** * <code>UnitTestFirewall</code> is the facility to * ease unit test...
2009-06-11 14:34:06 242
谈谈单元测试中的测试桩实践 (3)
相应的SystemTimeSynchronizer#syncTime()也做了修改,不再直接调用NtpClock。 package shannon.demo; import thirdparty.any.NtpClock; public class SystemTimeSynchronizer { public int syncTime() { ...
2009-06-11 14:31:04 222
谈谈单元测试中的测试桩实践 (2)
首先定义一个Clock接口。并为Clock实现两个具体类,一个是NtpClockWrapper,顾名思义其实就是实现了Clock的NtpClock,另一个是SystemClock,它就提供系统当前时间作为标准时间。 package shannon.demo; /** * <code>Clock</code> is an interface for all...
2009-06-11 14:25:17 274
谈谈单元测试中的测试桩实践 (1)
写程序的时候,有时可能遇到这样的情况。比如我们开发了一个数据处理模块,被处理的数据需要调用其他模块(由其他团队开发,或者是第三方提供,总之测试的责任不在你),从数据库或者文件或者通过网络从其他进程中获取。为了对该数据处理模块进行单元测试,我们通常得相应的配置起一个数据库或者文件系统,甚至是相关进程,以求正常的得到数据,但这样做的代价往往较大。这里想讨论一种我以前曾经使用过的简化单元测试的思路。...
2009-06-11 14:17:47 485
原创 程序员的工作和上帝的一样神圣
程序员和上帝的工作是一样神圣的。上帝的工作是在宇宙范围内创造出更多愚蠢的白痴;程序员的工作则是在计算机上编造出更多愚蠢的白痴程序。到目前为止,上帝暂时领先。 当然,程序员和上帝并不是表现最糟糕的。最糟糕的表现,在已然表现糟糕的情况下,还千方百计的妄图无时无刻的只听到赞美,因而表现更加糟糕。 所以我们要认清自己,变得谦卑。记住这些话不是为了贬低同行或自己,而是为了避免自己成为最糟糕!...
2009-06-06 17:50:11 257
编程的美学标准诌议
编程的美学标准诌议做了几年的程序员,虽然自己写的代码还远远没有达到要求,但在日复一日的实践过程中,我逐渐开始信奉一条标准:在实现功能的前提下,简单即是美。其实,编程的过程就好比是一个建模的过程。设计就是将一个现实问题抽象成逻辑模型。而编码则是将逻辑模型进一步表达成程序模型(如果我可以这么叫的话)。建模是数学和物理中的很重要的方法,而数学和物理是强调“简单”的。不知通过这样的论证来给编程引入...
2009-06-06 15:28:39 196
Dan Farino谈MySpace架构
http://www.infoq.com/cn/interviews/MySpace-Architecture-Dan-Farino-cn 科学也许就是这样,现有问题的解决的同时,总是有新的问题伴生。Dan有关My Space的谈话,让我想到,面对一个有1000量级机器构成的分布式计算集群,怎样(批量的)控制远程程序,怎样做软件下载和更新,怎样调试和监控,在问题发生时怎样迅速定位,可能...
2009-06-05 18:17:11 136
使用Perf4J进行性能分析和监控
http://www.infoq.com/cn/articles/perf4j Perf4J - 在Java代码中添加打印执行时间,性能统计相关的日志 Perf4J is to System.currentTimeMillis() as log4j is to System.out.println()LogParser - 通过tag和时间片把性能统计输出书...
2009-06-05 18:04:47 97
时序相关任务的并行计算解决方案讨论 (2)
分析去“时序相关”的可能在回答主要问题之前,我们还是需要再三分析问题及其数据处理逻辑,看是否可以将数据处理逻辑由时序相关降为时序无关,这样并行计算的效率无疑会更高。前一部分对时序相关的讨论提到“时序相关取决于数据处理的业务逻辑或处理算法”,改变数据处理的算法是有可能实现去“时序相关”的。还是以第一部分提到的和告警相关的设备简单状态机为例,假如变具体实现为:保存两个计数,alarmSetCo...
2009-05-30 12:48:05 743
时序相关任务的并行计算解决方案讨论 (1)
时序相关任务的并行计算解决方案讨论(Parallel computing solution for chronologically correlative tasks) 现实问题描述想象一个设备网络,包括许多交换机、路由器、网关服务器、Radius服务器,等等。如果要集中式的监控各个设备的工作状态,就需要在网络中部署一个网络设备管理系统。从网管系统侧看来,所有设备都直接或间接与之相...
2009-05-29 13:28:49 716
多级多粒度的持续集成 (graded and multi-scaled CI solution)
也许对软件开发来说,最重要的已经不再是技术或工具、方法,而是过程。 在网上看了《跌跌撞撞的持续集成之路》(以下都称《路》),有一些想法,写出来和网友一起讨论。《路》中目标项目的持续集成迭代周期为一周,持续集成的任务流程为编译后台代码,后台代码单元测试,编译前台,部署,功能测试。任务流程决定了一个迭代周期内持续集成的实际执行时间。《路》中所反应出来的问题其实就是实际集成执行...
2009-05-27 21:07:55 294
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人