- 博客(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
179
原创 软件构造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
427
原创 软件构造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
320
原创 软件构造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
162
原创 软件构造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
135
原创 软件构造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
154
原创 软件构造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
150
原创 软件构造5.2
软件构造5.2creational patterns关于如何创建类的新实例的模式工厂方法模式抽象工厂模式structural patterns结构模式proxy 代理模式creational patterns关于如何创建类的新实例的模式工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法是一个类的实例化延迟到其子类当client不知道要创建那个具体类的实例,或者不想再client代码中指明要具体创建的实例时,用工厂方法抽象工厂模式提供接口以创建一组相关或相互依赖的对象,
2020-07-07 16:57:08
119
原创 软件构造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
137
原创 软件构造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
183
原创 软件构造4.2
软件构造4.2设计可复用的类设计可复用的类behavioral subtyping and LSP(里氏替换原则)子类型多态:客户端可用统一的方式处理不同类型的对象里氏替换原则:1.子类可以实现父类的抽象方法,不能覆盖父类的非抽象方法,子类的所有非私有属性和方法,必须在父类中声名2.子类可以增加自己特有的方法behavioral subtyping行为子类型1.子类型可以增加方法,但不可删2.子类型需要实现抽象类型中所有未实现方法3.子类型中重写的方法必须使用同样的类型的参数4.子
2020-06-30 10:48:32
157
原创 软件构造复习4.1
软件构造4.1levels of reusetypes of code reusesources of reusemodule-level reuselibrariesframeworksystem-level reuseexternallevels of reuse最主要的复用在代码层面,但是软件构造过程中任何实体都可能被复用代码级:方法,模块级:类,接口库级:API架构级:框架types of code reuse白盒复用:源代码可见,可修改和扩展,复制已有代码于正在开发的系统,进行
2020-06-29 09:36:13
170
原创 软件构造复习3.5
软件构造3.4== vs equalsoverload vs overrideinstanceofobject contract可变类型的相等== vs equals对于基本数据类型,使用==,非基本数据类型,其值表示的是地址,类似指针。对象类型使用equals,使用的是overload,因此要注意好参数的类型,不同的类型会导致对比的依据不同对于inreger,使用==,要求范围在-128-127之间,可以直接比较overload vs overrideoverride使用时会检查超类中是否存在
2020-06-26 11:27:49
241
原创 软件构造复习3.4
软件构造复习第三章3.4)面向对象的编程(OOP)基本概念接口和枚举封装和信息隐藏继承和重写多态,子类型和重载重要的对象方法面向对象的编程(OOP)基本概念Object(对象)一个状态和行为的集合状态:对象包含的数据,称为fields行为:对象所支持的行为,称为methodsClasses(类)每一个对象都有一个类,这个类定义了fields和methods,统称为成员(members)类定义了类型和实现,在哪里可以用和如何具体做松散地说,类的方法是其应用程序编程接口(API)定义用
2020-06-24 17:01:13
248
原创 软件构造复习第三章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
611
空空如也
interface作为struct的属性的问题
2021-10-26
TA创建的收藏夹 TA关注的收藏夹
TA关注的人