- 博客(15)
- 收藏
- 关注
原创 第十章 并行/分布式 GUI
进程与线程Process(进程)(2) ThreadWays to create a thread: Subclass Thread Interleaving and Race Condition交错和竞争 Interleaving and Race Condition交错和竞争时间分片是由OS自动调度的Shared Memory among Threads(内存共享模式)(3) Race Con...
2018-06-21 15:24:50
371
原创 第八章 面向性能的构造技术
Performance Metrics 性能度量指标 Memory Performance 存储性能 – Memory Allocation: Static, Stack-based, and Heap-based – Java Memory Model – Garbage Collection and its Basic Algorithms: Reference Counting, M...
2018-06-20 16:13:18
319
原创 第七章 面向健壮性的构造
Robustness 健壮性 健壮性:系统在不 正常输入或不正常外部环境下仍能够表现正常的程度 处理未期望的行为和错误终止 即使终止执行,也 要准确/无歧义的向用户展示全面的错误信息Correctness 正确性正确性:程序按照spec加以执行的能力,是最重要 的质量指标!正确性倾向于直接报错(error),健壮性则倾向于容错(fault-tolerance) Reliability(可靠性)...
2018-06-18 21:58:29
447
原创 第六章 面向可维护性的构造(第二部分)
(接上一部分)Façade vs. Command均强调对某个复杂系统内部提供的功能的“封装”,对外提供简单的 调用接口,简化client的使用,“隐藏”细节 。Command:强调将指令封装为了“对象”,提供了统一的对外接口Façade:没有显式的“对象”,仍然通过类的方法加以调用。 Chain of responsibility(职责链模式) 针对一个请求,可能有多个处理模块各种不确定 情况存...
2018-06-18 21:35:33
232
原创 第六章 面向可维护性的构造(第一部分)
可维护性的常见度量指标可维护性:可轻松修改软件系统或组件,以纠正故障,提高性能或其他属性,或适应变化的环境。除此之外,可维护性还有其他许多别名:可扩展性(Extensibility)、灵活性(Flexibility)、可适应性(Adaptability)、可管理性(Manageability)、支持性(Supportability)。总之,有好的可维护性就意味着容易改变,容易扩展。软件可维护性的五...
2018-06-18 19:51:32
591
原创 第三章 ADT OOP
基本数据类型和对象数据类型基本数据类型:int, long, byte, short, char, float, double, boolean对象数据类型:String BigInteger 还有什么class Array等等 都是。 静态类型检查和 动态类型检查静态类型检查:可在编译阶段发现错误,避 免了将错误带入到运行阶段,可提高程序正 确性/健壮性 包括 语法错误 类名/函数名错误 ...
2018-06-17 11:17:09
281
原创 第二章 软件的生命周期以及git的一些东西
软件的构造过程: 分为线性过程迭代过程具体如图:SCM: 软件配置管理:追踪和控制软件的变化 基线:软件持续变化过程中的“稳定时刻”(例如:对外发布的版本)CI:软件配置项:软件中发生变化的基本单元(例如:文件)CMDB:配置管理数据库 存储软件的各配置项随时间发生变化的信息 +基线VCS:Local VCS 本地版本控制系统: 仓库存储于开发者本地机器 无法共享和协作Centralized V...
2018-06-16 21:23:28
175
1
原创 第一章 软件构造多维视图以及内部外部的质量指标
软件构造的四个视图八个维度: Component-level简单的说明下 在buildtime的阶段 code-level 对于时刻 那么就是 源代码 ,类,属性和方法,源代码如何由基本的程序快进行逻辑的组织。对于一段时间就是代码变化。 Component-level 在时刻的时候是 包 源文件 链接库,测试项目,也就是软件的实体。对于在一段时间:就是各个软件实体随时间的变化。...
2018-06-11 22:37:00
390
原创 Decorator(装饰器模式)
主要功能概述: 动态地给一个对象添加一些额外的方法功能。就增加功能来说,Decorator模式相比生成子类更为灵活。对单个对象需要任意的或动态的可组合扩展。 解决方案:实现作为扩展对象的公共接口,添加功能,但将主要责任委托给基础对象...
2018-05-08 22:01:16
147
原创 Strategy 策略模式
问题: 对于特定的任务存在不同的算法,但是客户端可以在动态时间上下文中在运行时间之间切换算法;例如:对客户列表进行排序(冒泡排序、合并排序、快速排序)解决方案:为算法创建一个接口,并为算法的每个变量使用一个实现类。优点:易于扩展的新算法实现-从客户端上下文中分离算法。 具体的案例分析: 问题: 这里有三个算法,对这三个算法使用策略的设计模式,使得这三个散发可以在客户端随便切换:那么首先我...
2018-05-07 22:41:16
122
原创 浅谈 extends和implements
主要不同之处 通过实验三,我了解到,implements和extends 前者通过声明这个类实现一个或者多个接口,而后者通过继承父类,拥有了父类的功能,可以重写父类的方法,也可以不重写。相对于implements而言,它是实现接口,可想而知,实现接口(interface)一般为空的,所以你一般要重写接口所有的方法。一个类不能extends多个类,但是可以通过接口然后让一个类去i...
2018-05-07 22:16:50
7921
原创 关于java抽象类
一 什么是抽象类? 普通的类具有比较完善的功能,它可以直接直接产生实例化对象。而抽象方法具有抽象的方法,其实,就是因为有了抽象方法,一个“普通类变成了一个抽象类”。 抽象方法在抽象类中可以定义,但是可以不写,就是直接可以只有一个函数名称。什么时候实例化这个抽象类的时候。可以在子类中重写具体的这个方法。二抽象类的使用 在我做的实验三中,我们主要内容是构造一个可复用性比较高的...
2018-05-05 21:59:38
109
原创 java 中在Lab2_实验 中遇到的问题 关于equals hashcode 和==
== 我在实验中碰到了这样的一个问题,在进行两个类的比较的时候,我错用成了==,这导致我的程序一直出现bug,其原因就是这个if语句一直不能够通过。 关于==首先要明确java中的基本的数据类型 他和C语言的个人感觉没有区别 byte,short,char,int,long,float,double,boolean 对于比较他们,我们用 ==比较的是他们的值。而对于类,数组 我们用==去...
2018-03-27 22:02:54
145
原创 对于git的学习和使用
Git是用来干什么的? git是非常先进的分布式版本控制系统。什么是版本控制系统?版本控制系统简单通俗的来讲就是:当你对编写一个文件的时候,你需要不断的修改去完善这个文件,但是,不管的去修改和完善需要你不断的去“另存为”这样导致你的文件很乱,你甚至不知道最终的文件是那个。还有你的修改过程(你什么时候修改了文件的哪几行)这就很痛苦! 于是分布式版本就出现了,它可以记录你的文件的每一次改动...
2018-03-16 10:46:21
137
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人