`
jokermanager
  • 浏览: 140731 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论
文章列表

DCL失效

  Double-Checked Locking看起来是非常完美的。但是很遗憾,根据Java的语言规范,上面的代码是不可靠的。 出现上述问题, 最重要的2个原因如下: 1, 编译器优化了程序指令, 以加快cpu处理速度. 2, 多核cpu动态调整指令顺序, 以加快并行运算能力. 问题出现的顺序: 1, 线程A, 发现对象未实例化, 准备开始实例化 2, 由于编译器优化了程序指令, 允许对象在构造函数未调用完前, 将共享变量的引用指向部分构造的对象, 虽然对象未完全实例化, 但已经不为null了. 3, 线程B, 发现部分构造的对象已不是null, 则直接返回了该对象. 不过, 一些 ...
1、了解面向对象语言是必要的,但不是首要的,了解“面向对象思想”才是关键。   2、UML只是标准的图形表示法。常用的表示法是有用的,但更重要的是面向对象的内容值得学习,尤其是如何利用对象进行思考。   3、UML只是图形表示法,不是OOA/D,也不是方法。如果没有掌握如何创建优秀的面向对象设计,或者如何评估和改进现有设计,那么学习UML或者UML工具是毫无意义的。   4、对象思想才是重点和难点。   5、为对象分配职责、对象间如何协作、什么对象做什么事情,是系统设计的关键问题。   6、OO经典设计-职责驱动设计(responsibility driven design)。   7、OO开发 ...
领域模型是对领域内概念类或现实世界中对象的可视化表示。 概念类:思想、事务或对象。 概念类包括三个方面:符号、内涵、外延。 为什么要建立领域模型? 原因:降低与OO建模之间表示的差异。领域层软件类的名称要来源于领域模型中的名称,使对象有源于领域的信息和职责。 如何创建领域模型: 1、创建概念类。 2、将其描述为UML中的类 3、添加关联和属性
Global site tag (gtag.js) - Google Analytics