`
yangtsefisher
  • 浏览: 26089 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
RT

复合优于继承

    博客分类:
  • Java
1. 继承破坏了封装性,换句话说,子类依赖于父类的实现细节。   需要进一步说明,这与方法调用不同,方法调用也依赖被调用的方法,但是并不依赖细节,也就是说,只要方法整体实现没有问题,方法调用就没有问题,但是继承很容易改变父类实现的细节(所以父类中能写成final尽量写成final),即使父类整体没有问题,也有可能因为子类细节实现不当,而破坏父类的约束。这使得继承具有脆弱性。   或者说,继承让子类很容易破坏影响父类的约束,父类约束的实现依赖子类的实现,并且,父类在他的后续版本中可以获得新的方法,而这个会对子类造成影响,虽然子类的代码没有变化,当初子类实现的时候也不知道未来的变化,显得很无 ...
破窗理论: 一个房子如果窗户破了,没有人去修补,隔不久,其它的窗户也会莫名其妙地被人打破;一面墙,如果出现一些涂鸦没有被清洗掉,很快的,墙上就布满了乱七八糟、不堪入目的东西;一个很干净的地方,人们不好意思丢垃圾,但是一旦地上有垃圾出现之后,人就会毫不犹疑地抛,丝毫不觉羞愧。 软件开发中也是这样: 如果你发现自己在有好些"破窗户"的项目里工作,会很容易产生这样的想法:“这些代码的其余部分已经是垃圾,我只要照着做就行了”   编程的首要原则(s)是什么? http://mindhacks.cn/2009/03/09/first-principles-of-pr ...
1.用if __name__ == "__main__":实现测试模块 2.List的负索引和Slice分片, li[1: -1] 3.Tuple的不可变性,速度比List快 4.当定义一个只包含一个元素的 tuple 时逗号是必须的。如果省略逗号, Python 不会知道 (userCount) 究竟是一个只包含一个元素的 tuple 还是变量 userCount 的值。 5. 字符串格式化,"%s=%s" % (k, v) 6. "%s=%s" % (k, v) for k, v in params.items(),对Li ...
Robin分享了一个PPT,是他两年前用于培训介绍缓存知识的: http://robbin.iteye.com/blog/770553   还有我附上的问题一枚, 42楼:   "各位好: 想问一下关于 "应用服务器读取磁盘" 和 "访问数据库", 这两者的速度比较如何?因为感觉网络传输界限也会造成差异,因为这一点在PPT中没有提及,想问一下。另外,根据我的理解,Hibernate查询缓存,如果整个结果集太大,除了内存,是不是也用了本地磁盘?"   今天也学习一下Robin,把我一年前用于培训介绍FR缓存的PPT分享出来 ...
1. 无处不在的自动化. Q 你目前是否在GUI中用手工做一些事情? 你是否曾将一些说明发给同事,其中涉及许多“点这个按钮”、“选哪一项”之类的步骤?它们能自动化吗? A: 其实有很多自动化工具可以进行录制动作,是否可以通过录制过程,自动生成这种文档。   2. 强大的编辑器,这方面我比较很弱,需要改进   3. 源码控制, 它是一个巨大的UNDO键   进步远非由变化组成,而是取决于好记性。不能记住过去的人,被判重复过去。 ——George Santayana, Life of Reason 追踪变动,对于bug追踪、审计、性能及质量等目的 ...
MVC中的设计模式 一个以MVC为架构的系统包含了很多的设计模式,但是与MVC最为密切相关的是下面三种模式:Observer, Composite和Strategy。 1. Observer模式 MVC通过使用定购/通知的方式分离了Model和View。View要保证自己显示能正确地反映出Model的内容和状态。一旦Model的内容发生变化,必须有一个机制来使得Model能够通知相关的View,使得相关的View可以在适当的时机刷新数据。这个设计还可以解决更一般的问题,将对象分离,使得一个对象的改变能够影响到另一些对象,而这个对象并不知道那些被影响的对象的细节。这就是被描述为Obser ...
ThreadLocal, 是JDK的,想法有点 "线程作用域"之类的变量   相对于全局Map<Thread, Object>的 实现来说, ThreadLocal有一些优点, 它把线程自己用的对象放在了Thread对象的threadLocals里面,而不是放在全局的map里面,在调用exit()方法的时候,会把threadLocals释放。 这样就算只set()而没有remove()也没有关系,但全局map就必须得记得要remove(). ThreadLocal只是作为引用key变量,指向值,提供工具方法,不存任何东西,感 ...
Java Concurrency in Practice :   1. Thread Confinement的几种形式保证Thread Safe Single Threaded, GUI Ad-hoc, Connection Pool,一个Connection同一时刻只会出现在一个Thread中 Stack Confinement, 为什么局部变量是Thread Safe的 ThreadLocal Instance Confinement, syn ...
今天首次尝试结对编程,和一个新手搭档,他做driver,我做director,实践中遇到的一些问题,总结一下: 1. 任务是driver挑的,是一个涉及代码质量方面的重构,driver作为新手很没有计划性,不知道目标是什么,导致我不得不花了很长时间来帮他搞清楚问题是什么,或许搞清楚问题也算是结对编程中的一个部分? 2. 其中有很大一部分时间是在Debug,感觉Debug这类事情是不适合两个人来弄的,debug需要集中注意力,一个人反而容易分散另外一个的注意力。 3. 本来结对编程是需要TDD的,但是因为代码基本上都没什么单元测试,更谈不上TDD了,没有TDD的结对编程还算不算结对编程,能否 ...
这是MIT上介绍Sikuli的一篇文章 Sikuli的网站: http://sikuli.org/ 延伸阅读:http://blog.vgod.tw/2010/01/25/change-the-world/   --------------------- ---------------------   图片驱动的计算机技术   译者:YantseFisher 原文:http://web.mit.edu/newsoffice/2010/screen-shots-0120.html 译言:http://article.yeeyan.org/view/YangtseFisher/ ...
The principal questions of ontology are "What can be said to exist?" and "Into what categories, if any, can we sort existing things?" Various philosophers have provided different answers to these questions. One common approach is to divide the extant entities into groups call ...
Oracle与java.sql.Types的对应 Oracle                                java.sql.Types  blob                                     blob  char                                     char  clob                                     clob  date                                    date  number                    ...
——万事开头难   如果你的应用程序能够满足内存和速度的要求,有时还是不够的,对于某些应用程序来说,尤其是实时系统,它还必须满足良好的用户体验,这就要求你的程序能够做到好的实时性。 关于用户体验,有很多心理学的研究。如果你了解用户懒惰和缺乏耐心等心理,你也许会更加明白,实时性有时会如此重要。相关的文章比如网站打开速度的心理学,人之初,性本懒 等等。但是实时性的要求也不局限于用户体验,有许多被称之为硬 RT 应用的程序要求必须严格地满足实时同步需求,比如控制飞机方向的应用程序不能够有任何原因的延迟,否则将导致灾难性的后果。 由
——当你拿着一把锤子的时候,所有的东西看起来都像钉子。 ——当你看到钉子的时候,手上拿着的东西看起来就像一把锤子。 性能优化有时候很像玩一个策略游戏(免费),对手不是计算机,程序员,设计架构,编译器,控制流,而是时间,内存,竞争条件,预算限制等等。有三个资源限制几乎所有应用都会面临:1.CPU速度和有效性2.系统内存3.磁盘I/O。 性能分析的关键是找到瓶颈所在,符合二八原理的是,计算机通常会将80%的时间花在20%的程序上,所以找出这20%的瓶颈很重要,这就是我上篇中所说的,为什么在优化之前一定要分析,不要相当然。我从二八原理学到的就是要统筹分析,使做事效 ...
Global site tag (gtag.js) - Google Analytics