- 博客(19)
- 问答 (1)
- 收藏
- 关注
原创 软件构造7.2
软件构造7.2What is Thread Safety 什么是线程安全Strategy 1: Confinement限制数据共享Strategy 2: Immutability策略2:使用Immutable变量。并保证是没有任何可能的mutate变异Strategy 3: Using Threadsafe Data Types 策略3:使用线程安全的数据类型 What is Thread Safety 什么是线程安全 .程序的正确性依赖于底层操作的时序。这就不可靠了 限制数据共享 共享不可变数据 共享线
2020-07-10 15:01:02
205
原创 软件构造7.1
软件构造7.1What is Concurrent Programming?Processes, Threads, Time-slicing 进程、线程、时间分片进程线程Starting a thread in Java在Java中启动一个线程Interleaving and Race Condition 交错和竞争Time slicingShared Memory among Threads 在线程之间共享内存Race Condition 竞争条件Message Passing ExampleConcur
2020-07-10 10:35:31
464
原创 软件构造6.4
软件构造6.4What is Bug and What is DebuggingProcess for debuggingReproduce the bugDiagnosing the bugDebugging toolsPost-mortem debugging: memory dump事后调试:内存转储Post-mortem debugging: stack trace 事后调试:堆栈跟踪Printf debugging 利用程序的动态信息输出进行调试Logging 充分利用日志,可以发现一些问题Com
2020-07-09 18:22:39
381
原创 软件构造6.3
软件构造6.3Recall: Designing an ADTAssertionsWhat and Why Assertions?What to Assert and What not to?Guidelines for Using Assertions使用断言的准则Defensive Programming防御式编程Techniques for defensive programmingChecklist for Defensive Programming防御性编程检查表 Recall: Designin
2020-07-09 17:25:15
194
原创 软件构造6.2
软件构造6.2Error and Exception in JavaException HandlingWhat is Exception?Classification of exceptions分类Checked and unchecked exceptionsDeclaring Checked Exceptions by throwsHow to Throw an ExceptionCreating Exception ClassesCatching ExceptionsRethrowing and C
2020-07-08 17:46:19
165
原创 软件构造6.1
软件构造6.1What are Robustness & Correctness?Robustness 健壮性Correctness 正确性Terms to denote software woes表示软件困境的术语How to measure robustness andcorrectness?如何定量测量鲁棒性与正确性? What are Robustness & Correctness? Robustness 健壮性 系统在不正常输入或不正常外部环境下依然能够表现正常的程度,尽可能保持
2020-07-08 09:05:39
183
原创 软件构造5.3
软件构造5.3State-based constructionAutomata-based programming基于自动机的编程State Pattern状态模式 (behavioral pattern)Memento Pattern备忘录模式 (behavioral)Grammar-based construction语法驱动的构造Constituents of a Grammar语法成分Operators in a Grammar运算符Recursion in grammars语法中的递归Parse
2020-07-07 19:05:46
178
原创 软件构造5.2
软件构造5.2creational patterns关于如何创建类的新实例的模式工厂方法模式抽象工厂模式structural patterns结构模式proxy 代理模式 creational patterns关于如何创建类的新实例的模式 工厂方法模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类 当client不知道要创建那个具体类的实例,或者不想再client代码中指明要具体创建的实例时,用工厂方法 抽象工厂模式 提供接口以创建一组相关或相互依赖的对象,
2020-07-07 16:57:08
141
原创 软件构造5.1
软件构造5.1软件维护和演化维护指标模块化设计与模块化原则模块化编程OO设计原则 SOLIDSRP 单一责任原则OCP 开放/封闭原则LSP liskov替换原则ISP接口隔离原则DIP依赖转职原则OO设计原则 GRASP 软件维护和演化 修复错误,改善性能 软件的大部分成本来自于维护阶段 在设计开发阶段就要考虑将来的可维护性easy to change 维护指标 maintainability 可维护性 extensibility 可扩展性 flexibility 灵活性 adaptability 可适
2020-07-02 15:52:33
166
原创 软件构造4.3
软件构造4.3structural patterns 结构型模式adapter 适配器模式decorator装饰器模式facade外观模式behavioral patterns行为类模式strategy 策略模式template method 模板模式iterator 迭代器 structural patterns 结构型模式 adapter 适配器模式 将某个类或接口转换为client期望的其他形式,通过增加一个接口,将已存在的子类封装起来,client面向接口编程,从而隐藏了具体子类。 decorat
2020-06-30 16:25:05
219
原创 软件构造4.2
软件构造4.2设计可复用的类 设计可复用的类 behavioral subtyping and LSP(里氏替换原则) 子类型多态:客户端可用统一的方式处理不同类型的对象 里氏替换原则: 1.子类可以实现父类的抽象方法,不能覆盖父类的非抽象方法,子类的所有非私有属性和方法,必须在父类中声名 2.子类可以增加自己特有的方法 behavioral subtyping行为子类型 1.子类型可以增加方法,但不可删 2.子类型需要实现抽象类型中所有未实现方法 3.子类型中重写的方法必须使用同样的类型的参数 4.子
2020-06-30 10:48:32
191
原创 软件构造复习4.1
软件构造4.1levels of reusetypes of code reusesources of reusemodule-level reuselibrariesframeworksystem-level reuseexternal levels of reuse 最主要的复用在代码层面,但是软件构造过程中任何实体都可能被复用 代码级:方法, 模块级:类,接口 库级:API 架构级:框架 types of code reuse 白盒复用: 源代码可见,可修改和扩展,复制已有代码于正在开发的系统,进行
2020-06-29 09:36:13
200
原创 软件构造复习3.5
软件构造3.4== vs equalsoverload vs overrideinstanceofobject contract可变类型的相等 == vs equals 对于基本数据类型,使用==,非基本数据类型,其值表示的是地址,类似指针。 对象类型使用equals,使用的是overload,因此要注意好参数的类型,不同的类型会导致对比的依据不同 对于inreger,使用==,要求范围在-128-127之间,可以直接比较 overload vs override override使用时会检查超类中是否存在
2020-06-26 11:27:49
263
原创 软件构造复习3.4
软件构造复习第三章3.4)面向对象的编程(OOP)基本概念接口和枚举封装和信息隐藏继承和重写多态,子类型和重载重要的对象方法 面向对象的编程(OOP) 基本概念 Object(对象) 一个状态和行为的集合 状态:对象包含的数据,称为fields 行为:对象所支持的行为,称为methods Classes(类) 每一个对象都有一个类,这个类定义了fields和methods,统称为成员(members) 类定义了类型和实现,在哪里可以用和如何具体做 松散地说,类的方法是其应用程序编程接口(API) 定义用
2020-06-24 17:01:13
281
原创 软件构造复习第三章3.3
软件构造第三章3.3抽象数据类型(ADT)数据抽象分类类型和操作设计一个抽象类型表示独立性(representation independence)RI测试ADT不变量(invariants)RI和AFbeneficent mutation (有益突变)记录AF,RI,safety from rep exposureADT不变量替换前置条件summary 抽象数据类型(ADT) 避免客户端获取数据的内部表示 (表示泄露) 特征 不变量 表示泄露 抽象函数AF 表示不变量RI 关键 抽象 模块化 封
2020-06-22 15:36:00
660
空空如也
interface作为struct的属性的问题
2021-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅