`
shannon977
  • 浏览: 19178 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论
文章列表
== vs. Object#equals() to accelerate Collection#contains() 问题的描述 众所周知,在需要将对象进行大量比较(equals)的场景,比如List#contains()的大量调用中,Object#equals(Object)实现的效率是很重要的。 提高对象比较效率的途径之一是用地址比较来代替内容比较。比如String#equals(Object)实现的内部逻辑应该是先进行地址比较,看是不是同一个对象;否则再进行内容比较。 但是String#equals(Object)还是不能彻底摆脱内容比较。 以String为例,我们来讨论用纯粹地 ...
Fred Brooks的《没有银弹》http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html引起了很大的争议,很多人纷纷从各种角度批驳软件业没有银弹这一观点。有些人则用该文观点否定软件工程中当前和未来一切技术和方法。 我个人认为,软件开发是将人力和资本转化成软件产品的过程,它类似于物理学中的能量转换过程。能量转换的过程不能创生新的能量,也即不存在永动机的事实,可以帮助我们理解软件生产的效率不可能无限提升的论断。 某些人相信的一些能够革命性提高软件生产效率的技术或方法,绝大多数是一种幻觉。举个我 ...
selenium Web应用程序自动测试软件,复制和重播模式(record and replay)产生测试脚本   http://blogbin.iteye.com/blog/38215   其他相关:Tellurium http://www.infoq.com/cn/articles/tellurium-testing-framework
配置、脚本和编程语言,看似很不相同,其实本质上是一样的东西。这点从Ant脚本可以看出来,它基于的XML是配置所采用的流行格式。同时Ant脚本里有量,有函数,能循环和逻辑判断,已经具备编程语言的基本要素了。 程序像一个水桶,边界条件的约束就像桶边,有了边才能盛水。编程就像箍桶。但通常我们不把桶做成三维密封的圆柱体,顶上留口,以便水进出。编程也一样,为灵活性考虑,我们通常会让某些条件开放着,留待部署时配置。我们通常对这种灵活性认识深刻。 程序又可被看作是一个数学命题。命题通常先题设,再推断。程序也有像题设一样的“边界条件”,比如用什么算法,内存组织,持久化策略,具体到数据库的url。编程就是用配 ...
Amoeba,based upon Mysql. in Java HBase,based upon Hadoop. in Java *HyperTable, optionally based upon Hadoop, in C++ learn more.
接着,SystemTimeSynchronizerTests就可以作很大的改进,通过预设标准时间,测试SystemTimeSynchronizer#syncTime()的各个处理分支了。   /**shannon.demo.unittest is the unit test codes  * package for the
在UnitTestFirewall中也要做相应的修改,以允许在测试时,定制Clock实例。   package shannon.demo;   import thirdparty.any.NtpClock;   /**  * <code>UnitTestFirewall</code> is
相应的SystemTimeSynchronizer#syncTime()也做了修改,不再直接调用NtpClock。   package shannon.demo;   import thirdparty.any.NtpClock;   public class SystemTimeSynchronizer {        
首先定义一个Clock接口。并为Clock实现两个具体类,一个是NtpClockWrapper,顾名思义其实就是实现了Clock的NtpClock,另一个是SystemClock,它就提供系统当前时间作为标准时间。   package shannon.demo;   /**  * <code>Clock</code>
写程序的时候,有时可能遇到这样的情况。比如我们开发了一个数据处理模块,被处理的数据需要调用其他模块(由其他团队开发,或者是第三方提供,总之测试的责任不在你),从数据库或者文件或者通过网络从其他进程中获取。为了对该数据处理模块进行单元测试,我们通常得相应的配置起一个数据库或者文件系统,甚至是相关进程,以求正常的得到数据,但这样做的代价往往较大。 这里想讨论一种我以前曾经使用过的简化单元测试的思路。通过接口来封装对外部模块的调用,在单元测试时,用调试实现代替外部实现。受myworkfirst指点,又google了一下,才知道这是单元测试里早已成熟的“测试桩”。但我仍然想把我的实践和大家分享一下。 ...
程序员和上帝的工作是一样神圣的。上帝的工作是在宇宙范围内创造出更多愚蠢的白痴;程序员的工作则是在计算机上编造出更多愚蠢的白痴程序。到目前为止,上帝暂时领先。   当然,程序员和上帝并不是表现最糟糕的。最糟糕的表现,在已然表现糟糕的情况下,还千方百计的妄图无时无刻的只听到赞美,因而表现更加糟糕。   所以我们要认清自己,变得谦卑。记住这些话不是为了贬低同行或自己,而是为了避免自己成为最糟糕!   原名言:程序员在跟宇宙赛跑,他们在努力开发出更大更好的傻瓜程序,而宇宙则努力培养出更大更好的白痴.到目前为止,宇宙领先.(Rich Cook)来自http://news.csdn.net/a/ ...
编程的美学标准诌议 做了几年的程序员,虽然自己写的代码还远远没有达到要求,但在日复一日的实践过程中,我逐渐开始信奉一条标准:在实现功能的前提下,简单即是美。 其实,编程的过程就好比是一个建模的过程。设计就是将一个现实问题抽象成逻辑模型。而编码则是将逻辑模型进一步表达成程序模型(如果我可以这么叫的话)。建模是数学和物理中的很重要的方法,而数学和物理是强调“简单”的。不知通过这样的论证来给编程引入简单美是否令人信服。 我喜欢从“成本”的角度看程序的简单与否。有三个方面: 实现的便捷(实现成本)               学习的便捷(学习成本
http://www.infoq.com/cn/interviews/MySpace-Architecture-Dan-Farino-cn   科学也许就是这样,现有问题的解决的同时,总是有新的问题伴生。 Dan有关My Space的谈话,让我想到,面对一个有1000量级机器构成的分布式计算集群,怎样(批量的)控制远程程序,怎样做软件下载和更新,怎样调试和监控,在问题发生时怎样迅速定位,可能成为一个新的问题。 我目前所能想到的是,分布式计算也需要一个类似EMS的东西,或许集成式的不好,可以做成一个工具集。
http://www.infoq.com/cn/articles/perf4j   Perf4J - 在Java代码中添加打印执行时间,性能统计相关的日志            Perf4J is to System.currentTimeMillis() as log4j is to System.out.println() LogParser - 通过tag和时间片把性能统计输出书籍分组,生成详细的统计信息   Google Chart API - 时间序列图
分析去“时序相关”的可能 在回答主要问题之前,我们还是需要再三分析问题及其数据处理逻辑,看是否可以将数据处理逻辑由时序相关降为时序无关,这样并行计算的效率无疑会更高。 前一部分对时序相关的讨论提到“时序相关取决于数据处理的业务逻辑或处理算法”,改变数据处理的算法是有可能实现去“时序相关”的。还是以第一部分提到的和告警相关的设备简单状态机为例,假如变具体实现为:保存两个计数,alarmSetCount统计告警产生事件的次数,alarmClearCount统计告警消除事件的次数,则设备当前状态为: alarmSetCount – alarmClearCount > 0 ? 故障 : 正常 ...
Global site tag (gtag.js) - Google Analytics