自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 SOLID原则

目录单一责任原则开放封闭原则里氏替换原则接口隔离原则依赖倒置原则综上在复习的时候重温了一下SOLID原则,感觉在实验的基础上又有了更深的认识。单一责任原则一个对象应该只包含单一的职责,并且该职责被完整地封装在一个类中,即又定义有且仅有一个原因使类变更。如果某个类负责两个不同的职责A、B,当A需求发生改变而需要修改该类时,有可能会导致原本运行正常的B功能发生问题,也就不符合软件构造的正确性原则了。开放封闭原则即对扩展开放,对修改关闭。一个类独立之后就不应该去修改它,而是以扩展的方式适应新需求。

2020-07-11 20:48:41 285

原创 浅谈线程安全问题

目录共享内存的原因线程安全需要满足的特点如何保证线程安全synchronized和ReentrantLock的区别共享内存的原因在Java内存模型中,分为主内存和线程工作内存,线程使用共享数据时,都是先从主内存中拷贝到工作内存,使用完成之后再写入主内存,可以理解为线程之间通讯是通过共享内存的方式实现的。线程安全需要满足的特点原子性:对数据的操作不会受其他线程打断,意味着一个线程操作数据过程中不会插入其他线程对数据的操作可见性:当线程修改了数据的状态时,能够立即被其他线程知晓,即数据修改后会立即写

2020-07-10 22:01:43 177

原创 软件构造课程总结

目录上课感想实验感想课程建议总结上课感想刚开始上前两章的内容的时候,上得算得上是一头雾水的,概念多而杂,而且偏向文科类的记忆内容,比如记住三维度八视图、git指令什么的,就对这门课的指向性感到很迷惑。但是随着学习的深入,就会发现这门课讲的还是比较系统化的,涉及到ADT、OOP、可复用性构造、可维护性构造、健壮性构造、并行构造等等一应俱全,大大加深了我们对工业化编写软件的认识,也改变了我之前编写代码的一些不好的习惯,增加代码的可读性。在上完这门课后,除了学习到了很多可行的设计模式,还培养了测试优先的编

2020-07-05 21:28:03 225

原创 软件构造 Lab3总结

目录设计思想设计PlanningEntry设计R设计Location设计Timeslot设计模式PlanningEntryCollection该实验在代码逻辑上难度不大,不需要设计很复杂的算法,但是代码量巨大,所以需要设计好类与类之间的关系再下手,否则一次次推翻重来非常搞心态,比如我 。设计思想该实验要求在航班管理、高铁车次管理、操作系统管理、大学课表管理、学习课程管理中一必选、二三选一、四五选一,我选择了航班管理、高铁车次管理、大学课表管理。设计PlanningEntry用过实验指导书的分析,不

2020-06-10 22:42:16 163

原创 手把手实现日志管理

目录实现日志管理其它可能存在的问题有多个类都需要写入同一个日志文件日志文件输出的日期格式不符合yy-MM-dd HH:mm:ss调用日志查询功能结束后抛出了java.util.NoSuchElementException原因解决方法调用日志管理功能过程出现.lck结尾的空文件原因解决方法调用日志管理功能过程中出现.log.1、.log.2等等的文件,并且其中也写入了日志原因解决方法Lab4中使用Java.util.logging.Logger管理日志文件。实现日志管理在主函数Main中对日志管理进行维

2020-06-10 21:22:36 973

原创 软件构造第三章总结

目录数据类型数据类型检查静态类型检查动态类型检查可变性与不可变性可变类型不可变类型代码快照图基本类型对象类型不可变类型规约规约的结构可变方法的规约规约的强度规约的确定性如何设计好的规约抽象数据类型(ADT)ADT四种操作设计ADT表示独立性数据类型分为基本数据类型和对象数据类型两大类。数据类型检查分为动态类型检查和静态类型检查两大类。静态类型检查在编译阶段进行;涉及到的错误类型有...

2020-04-08 17:31:59 243

原创 软件构造 Lab2总结

目录ADT详解可变类型与不可变类型详解断言导致代码覆盖度低的解决方法Playing Chess 设计思路1: Position2: Piece3: Player4: Board5: Action6: Game7: MyChessandGoGameADT详解AF:抽象函数,代表值到其对应的抽象值的映射。RI:表示不变量,代表某个值必须满足的条件。safety from rep expose...

2020-04-02 10:44:54 277

原创 软件构造第二章总结

目录软件的生命周期从0到1从1到n传统软件处理模型线性模型瀑布模型增量模型V模型迭代模型原型法螺旋模型敏捷开发快速迭代极限编程软件配置管理(SCM)软件配置项(SCI)基线配置管理数据库(CMDB)版本控制系统(VCS)GitGit仓库文件三种状态Git的对象图Git的基本指令广义的软件构造编程静态代码评审动态代码评审调试与测试重构狭义的软件构造涉及build的场景编译型语言解释型语言基于Web的...

2020-04-01 22:44:43 318

原创 软件构造第一章总结

目录软件构造的多维度视图软件构造各阶段详述Build-timeRun-time软件构造的实质影响软件质量的因素外部质量因素内部质量因素软件构造的多维度视图从阶段层面看:构造vs运行(build vs run)从动态层面看:时刻vs周期(moment vs period)从级别层面看:代码vs模块化(code vs component)软件构造各阶段详述Build-timeBuil...

2020-03-05 17:03:23 315

原创 软件构造 Lab1总结

1 MagicSquare1.1 关于读文件问题FileInputStream fileInputStream = new FileInputStream(file); //使用FileInputStream实现读取txt文件内容 InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);...

2020-03-05 15:56:31 293

空空如也

空空如也

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

TA关注的人

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