摘要:
线程安全的四种策略总结 一、Confinement限制可变变量的共享 核心思想:线程之间不共享mutable数据类型 将可变数据限制在单一线程内部,避免竞争;不允许任何线程直接读写该数据 局部变量总是线程安全的,但如果局部变量是一个对象引用,若该对象是可变对象,则必须确定该对象也是线程confine 阅读全文
摘要:
(一)LSP 子类型多态:客户端可以用统一的方法处理不同类型的对象 子类:更强的不变量,更弱的前置条件,更强的后置条件 1)子类可以增加方法、但不可删 2)子类型需要实现抽象类型中的所有未实现方法 3)子类型中重写的方法必须有相同或子类型的返回值 4)子类型中重写的方法必须使用同样类型的参数 5)子 阅读全文
摘要:
ADT和OOP中的等价性 equal和== hashcode()和equals()方法总是一起被重写 “==”:引用等价性,指向相同的内存地址, equals():对象等价性,在自己定义的ADT时,需要重写Object的equals()/ "=="是对基本数据类型,而对于对象类型,使用equals( 阅读全文
摘要:
面向对象的编程 对象是类的一个实例,有状态和行为。 比如,一只狗是一个对象,他有几种状态(名字、颜色、饥饿,品种等等),以及几种行为(叫,摇尾巴等等);自行车有齿轮,速度,踏板节奏等状态,有改变齿轮,改变速度等行为。 类是一个模板,描述了一类对象的行为和状态。 每个对象都有一个类。类定义了属性类型以 阅读全文
摘要:
抽象数据型(ADT) 抽象数据类型与表示独立性:如何设计良好的抽象数据结构,通过封 装来避免客户端获取数据的内部表示(即“表示泄露”),避免潜在 的bug ADT的特性:表示泄漏、抽象函数AF、表示不变量RI 基于数学的形式对ADT的这些核心特征进行描述并应用于设计中。 ADT的四种操作 1)Cre 阅读全文
摘要:
设计规约 概述:方法的规约、前置/后置条件、操作式规约、规约的强度及其比较、如何设计好的规约 一个完整的方法 一个完整的方法包括规约spec和实现体implementation; "方法"是程序的积木,它可以被独立的开发、测试、复用; 使用“方法”的客户端,无需了解方法内部如何工作,这就是抽象的概念 阅读全文
摘要:
3.1 数据类型与类型检验 一、数据类型 数据类型分为以下两种: 基本数据类型:int、long、boolean、double、char 对象数据类型:String、BigInteger等 他们的区别如下图: 二、静态、动态检查 静态类型:在编译阶段进行类型检查,可在编译阶段发现错误,避 免了将错误 阅读全文
摘要:
第一部分 一、软件的生命周期 1.from zero to one 计划、分析、设计、实现、测试、维护 2.from 1 to n 软件的更新与老化、不同软件之间相互取代演化 二、经典软件模型 两个基础类型:线性、迭代 现有模型:瀑布模型、增量模型、V模型、原型法、螺旋模型 考虑的关键因素:适应变化 阅读全文