FuLucas's blog

Archives · 2021

Home

About

Archives

loading..
HIT-Software-Construction

HashSet

HashSet添加元素时如何保证不重复 调用 add(Object 方法时,首先会调用 Object 的 hashCode 方法判 hashCode 是否已经存在 HashCode 相同的元素,如不存在则直接插入元素;如果已存在,则调用 Object 对象的 equals 方法判断是否返回true, 如果为 true 则说明元素已经存在,如为false则插入元素。 可以认为HashMap的key是不能重复的,而这里HashSet的元素是作为了map的key,所以也不能重复。 image-20210718104050829 image-20210914180921174

Read more
HIT-Software-Construction

Java静态实例方法

Java方法 类可以有两种类型的方法:实例方法(非静态方法)和类(静态方法)方法。实例方法用于实现类的实例的行为,只能在类的实例的上下文中调用。类方法用于实现类本身的行为,类方法总是在类的上下文中执行,但也能在类的实例的上下文中调用。 用静态修饰符(static)定义类方法,若缺少则为实例方法。 静态方法和实例方法的调用 外部调用静态方法时:类名.方法名/对象名.方法名;调用实例方法:对象名.方法名,即调用静态方法不需要创建对象。 1234567891011121314public class staticMethod { // a static method public static void callStatic() {    System.out.println("static ..

Read more
loading..
HIT-Software-Construction

软件构造笔记九——面向复用的软件构造技术

Software Reuse 优点:降低成本和开发时间;经过充分测试,可靠、稳定;标准化,在不同应用中保持一致。 缺点:开发可复用的软件(性能差,缺少针对性)和使用已有软件进行开发(需要适配)都需要代价。 measure “reusability”:复用的机会有多频繁;复用的代价有多大(搜索、获取,适配、扩展,实例化,与软件其他部分的互连的难度) 最主要的复用是在代码层面,但软件构造过程中的任何实体都可能被复用(包括需求、规约spec、数据、测试用例、文档等) Source code level: methods, statements, etc (lowest level) Module level: class and interface Library level: API (Java Librar..

Read more
loading..
HIT-CSAPP

CSAPP FinalHomeWork

image002 计算机系统 大作业 题 目 程序人生-Hello's P2P 专 业 计算机 学 号 1190202105 班 级 1903002 学 生 傅浩东    指导教师 郑贵滨    计算机科学与技术学院 2021年6月 摘 要 摘要是论文内容的高度概括,应具有独立性和自含性,即不阅读论文的全文,就能获得必要的信息。摘要应包括本论文的目的、主要内容、方法、成果及其理论与实际意义。摘要中不宜使用公式、结构式、图表和非公知公用的符号与术语,不标注引用文献编号,同时避免将摘要写成目录式的内容介绍。 关键词: hello;程序的一生;预处理;编译;汇编;链接;进程管理;存储管理;I/O管理 本文在Ubuntu系统下,通过介绍hello程序从编写到最终运行结束的过程..

Read more
loading..
HIT-CSAPP

CSAPP Chapter09

虚拟内存是硬件异常、硬件地址翻译、主存、磁盘文件和内核软件的完美交互,它为每个进程提供了一个大的、一致的和私有的地址空间。 本章的前一部分描述虚拟内存工作原理,后一部分描述应用程序如何使用和管理虚拟内存。 9.1 物理和虚拟寻址 物理寻址 (physical addressing):计算机系统的主存被组织成一个由M个连续的字节大小的单元组成的数组。每字节都有一个唯一的物理地址(Physical Address, PA). 物理地址应用:早期的PC,而诸如数字信号处理器、嵌入式微控制器(汽车、电梯、数字图像帧等)以及Cray超级计算机仍然继续使用这种寻址方式。 PhysicalAddressing 虚拟寻址 (virtual addressing):CPU 通过生成一个虚拟地址 (Virtual Ad..

Read more
loading..
HIT-Software-Construction

软件构造笔记三——软件构造过程与配置管理

重点掌握:软件开发过程与版本控制工具 Software Development Life Cycle (SDLC) 软件开发生命圈(了解即可) 从无到有,从有到好。 SDLC Traditional Software Process Models 要求 区别不同开发过程模型的异同 根据不同场景给出相应模型 线性过程 Linear:顺序,要求一点要明确,难以更改 迭代过程 Iterative:每个阶段给用户反馈,用户需求不明确 选择合适模型依据:用户参与程度,适应变化能力,开发效率,管理复杂段,开发出的软件质量 瀑布过程 Waterfall (Linear, non-interative) 线性推进、阶段划分清楚、整体推进、无迭代、管理简单 无法适应需求增加/变化(prohibitively ..

Read more
loading..
HIT-Software-Construction

软件构造笔记二——软件测试与测试优先编程

IMPORTANCE 本章重点 什么是测试 白盒测试与黑盒测试 按阶段、分步骤测试 1. Software Testing What is Testing 软件测试:为涉众提供有关被测试产品或服务的质量信息而进行的调查,是提高软件质量的重要手段,但是软件质量取决于设计而不是testing。 - 寻找bug,确认是否达到可用级别(用户需求) - 关注系统的某一侧面的质量特性 测试无法达到100%的无错误,never completely prove the absence of errors。 residual defect rates 残留缺陷率(bugs left over after the software has shipped)。对于大的系统来说,即使残留缺陷率很低,残留的bu..

Read more
loading..
HIT-Software-Construction

软件构造笔记一——软件构造的多维视图和质量目标

多维视图和质量目标 MultiDimensionalSoftwareViews ThreeDimension Build-time Views Build-time(构造阶段):idea -> requirement -> design -> code -> installable / executable package Code-level view(代码的逻辑组织):source code -- how source code are logically organized by basic program blocks such as functions(函数), classes(类), methods(方法), interfaces(接口). Component..

Read more
loading..
HIT-Software-Construction

软件构造——实验二总结

循环判断删除list元素 错误演示增强for循环 12345678List<String> lists = new ArrayList<String>();String deleteString = "del";lists.add("del");lists.add("fhd");lists.add("test");for (String s : lists) if (s.equals(deleteString)) lists.remove(s); 删除元素后继续循环会报错误信息ConcurrentModificationException,如下图所示: 增强forError 直接原因:modCount != expectedModCount + modCoun..

Read more