自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(17)
  • 收藏
  • 关注

原创 3.2Abstraction data type

ADT由操作定义likeString and SBadt操作的四种类型构造器、生产器create new objects from old objects of the type,like String.concat()observers、mutator变值器改变对象的属性4设计抽象类型良好ADT的设计:靠“经验法则”,提供一组操作,设计其行为规约 spec设计规则1、设计简洁、一致的操作设计一组简单操作,通过简单操作的组合实现复杂的操作。操作的行为应该是内聚的。2、 要足以支持cli

2020-07-06 16:54:02 1445

原创 chapter7:7.1并发

1什么是并发型编程并发的两个模型(1)共享内存(2)消息传递2进程、线程、时间切片并发模块的类型:进程和线程进程:私有空间,彼此隔离 线程:程序内部的控制机制(1)进程拥有整台计算机的资源,多进程间不共享内存,进程之间通过消息传递进行协作。(2)线程进程=虚拟机;线程=虚拟CPU线程共享内存(3) Starting a thread in Java1从thread类派生2从runnable派生其中就不得不提及匿名类对于线程的问题其关键就在于run这个函数。3交错与竞争(1)

2020-07-02 21:11:11 132

原创 6.4代码调试

当防御式编程和测试都无法挡住bug时,debug就不得不做了为啥debug挺难的2 Process for debugging(1)重现bug从最小的测试用例集开始复现错误(2)诊断bug(2)分治(3)切片(4)寻找差异(6)调试器debugger(7)借鉴别人3debugging tools(1)暴力debug(2)其他(1)(2) Post-mortem debugging: stack trace(3)printf(4)logging 见之前写的(5) C

2020-07-01 21:31:15 163

原创 6.3断言与防御式编程

第2种技术——断言、防御式编程,侧重于correctness。1设计adt回忆First Defense: Make Bugs ImpossibleSecond Defense: Localize Bugs2断言(1)断言是啥断言:在开发阶段的代码中嵌入,检验某些“假设”是否成立。若成立,表明程序运行正常,否则表明存在错误(2)使用assert的时机 Java缺省关闭断言,要记得打开(-ea) 断言非常影响运行时的性能在其他一些开发者眼里,不应该针对参数的合法性使用断言。即使spec被违

2020-07-01 20:26:37 220

原创 6.2错误与异常

1错误与异常所有异常的基础类是throwable内部错误:程序员通常无能为力,一旦发生,想办法让程序优雅的结束异常:你自己程序导致的问题,可以捕获、可以处理错误分类:1用户输入 2设备错误 3物理限制3异常处理(讲义没有2我也不知道为啥)(1)异常:程序执行中的非正常事件,导致程序无法再按预想的流程执行return之外的第二种退出途径不异常处理的话:正常的逻辑代码与错误处理代码交织在一起使用异常处理可以将二者分离(2)异常分类1、运行时异常 2、其他异常运行时异常:由程序员在代码里处

2020-07-01 15:44:57 218

原创 6.1 鲁棒性&正确性

1健壮性 正确性系统在非法输入、环境等情况下仍能正常表现的程度。(1)Postel’s Law:对自己的代码要保守,对用户的行为要开放1、 总是假定用户恶意、假定自己的代码可能失败2、把用户想象成白痴,可能输入任何东西(2)健壮性编程原则封闭实现细节,限定用户的恶意行为考虑极端情况,没有“不可能”(3)正确性程序按照spec加以执行的能力,是最重要的质量指标!可靠性=健壮性+正确性2特性测量(1)外部观察角度MTBF Mean Time Between Failure平均故障间隔时

2020-07-01 11:53:30 606

原创 5.3面向可维护性的构造技术(我又来降低重复率了)

1基于状态的编程使用有限状态机来定义程序的行为、使用状态来控制程序的执行(1)基于自动机的编程程序执行可看做各自动步骤不断执行,常使用二维数组定义状态转换表。2状态模式最好不要使用if/else结构在ADT的各方法内部根据状态决定行为(考虑将来的扩展和修改)——状态模式允许在运行时修改对象的行为或状态,每个行为(一组方法构成)用一个状态类表达(3)备忘录模式 记住对象的历史状态,以便于“回滚”二基于语法的构造使 用grammar判断字符串是否合法,并解析成程序里使用的数据结构

2020-06-29 11:23:19 144

原创 面向维护性的设计模式

一创造模式1工厂模式方法通过接口来创建对象通过具体工厂创建自己只是通过工厂获得产品。静态工厂方法2抽象工厂方法提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。提供接口以创建一组相关/相互依赖的对象,但不需要指明其具体实现类创建的不是一个完整产品,而是“产品族”(遵循固定搭配规则的多类产品的实例),得到的结果是:多个不同产品的object,各产品创建过程对client可见,但“搭配”不能改变要有固定搭配,不能随意组合二、结构模式1代理模式▪ 某个对象比较“敏

2020-06-28 16:13:23 207

原创 关于状态设计模式 加几个字嘿嘿标题重复率就不高了哈哈哈^^

一、结构模式1适配器模式通过增加一个借口来解决类之间借口不兼容的问题、itarget就是需要实现的方式而适配器的作用就是将原来的类进行包装作为itarget的实现供client使用2装饰器模式为对象增加不同侧面的特性 。对每一个特性构造子类,通过委派机制增加到对象上客户端需要一个具有多种特性的object,通过一层一层的就像一层一 装饰实现层的穿衣服3外观模式客户端需要通过一个简化的接口来访问复杂系统内的功能 便于解耦二、行为模式1策略模式有多种不同的算法来实现同一个任务,但需

2020-06-19 16:53:34 170

原创 软件构造总结

从我之前的博客开始讲起lab1以及lab2主要针对的是对于java的基础知识,lab1主要目的是要让大家了解java的语言并且初步掌握list map set等的使用而lab2的目的在于初步了解adt以及oop的含义到底是什么。这两次实验其实也没啥好说的所以在之前做的是实验的总结。而带来lab3就是软件构造的重头戏,不想之前lab1 2所需要的是单纯对实验进行一次规则性总结,了解大致思想lab3的目的是在让你拥有初步对于adt以及oop的了解基础上,对于adt的一种使用并且要保证复用性以及可维护性,

2020-06-15 21:16:01 252

原创 状态设计模式

状态设计模式 顾名思义就是将状态作为adt进行设计的模式,这里先给出class diagram所以在设计状态设计模式就是为了实现你所实现的东西,即为上下文,先设计一个状态的接口,找到所有状态的共同特点,然后通过设计具体子类实现,具体操作状态,就在上下文中对状态进行操作就可以了...

2020-06-14 22:55:18 110

原创 关于lab3 的迭代器和比较器模式

1迭代器

2020-06-13 18:55:29 182

原创 chapter2 软件构造的那些事

重点:软件配置管理 git以及 版本控制系统1开发的过程从无到有 从有到好

2020-06-11 20:35:58 101

原创 软构复习 内外部指标

软件质量: 内部指标 外部指标五个质保:易读 易变 适合开发 鲁邦 效率(2020未涉及)外部:客户内部:软件开发者外部取决于内部一:外部指标1 正确性测试防御式编程(开坑)形式化方法2 鲁棒性3 可扩展性4 复用性5兼容性…9功能性10及时性及时更新满足用户要求其余要素二、三、不同因素之间冲突的要素之间的折中最重要的 正确与鲁邦 可扩展和可服用:模块化的矛盾??可扩展 越简单越可以扩展 复用 发现共性面向对象如何提升质量encapsula

2020-06-10 15:14:51 328

原创 关于软件构造 java.logging

java 自带logging 总结软件构造2020java自带的log分为几部分1logging首先需要设置函数的logger通过javalogget的setglobal或者setlogger来设置不妨叫log这里logger的给到的setlevel是对你设置的读入日志的等级筛选,而log.infolog.warning 这些是给你可以读入的信息一个等级设置,如果等级不在你setlevel之上则则不读入2handler在log的过程中,缺省的是在控制台中输出信息,但是如果设置handle

2020-06-09 15:37:11 129 2

原创 软件构造 lab2 实验

本实验针对ADT的设计由于大部分学生初次接触java,为了让大家更加能够接触面向对象编程,所以设计了该次实验3.1Poetic Walk通过所给的Graph来实现有向图的应用并且通过调用String来写诗为该部分的最终目的1首先设计Graph设计Graph有以边为引导的还有以点为引导的类,所以事先这两种具体的类型之后需要实现,但之前实现的图是面向具体对象的,所以说现在需要面向泛型类来实现,这些方法都较为简单。2之后实现的就是最终目的,即为poet walk,首先需要通过万能的csdn学习一下ja

2020-06-01 20:01:17 227

原创 软件构造2020 lab1总结

软件构造lab1的目的在于初步了解java的熟悉以及使用,所以才用的实验材料源于MIT 和 CMU ,实验分为三部分,是这几个实验中简单地一个。由于是第一次实验首先介绍一下实验环境,哈工大采用的是github里再带的classroom具体形式见实验指导书。3.1magic square3.1 Magic SquaresA magic square of order n is an arrangement of n×n numbers, usually distinctintegers, in a s

2020-05-24 22:21:58 211

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除