自定义博客皮肤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)
  • 收藏
  • 关注

原创 INDEX SELECTION IN A SELF-ADAPTIVE ‘DATA BASE MANAGEMENT SYSTEM

目的解决了一个自动调整数据库的物理组织以优化其性能和随着其访问需求的变化的问题。提出了一个能够匹配访问需求的启发式算法。决定程序的模型很灵活,可以包含索引的创建、存储以及应用程序的编译。我们的目标是根据数据库的实际使用方式,更好地选择这些需要维护次要索引的域。主要使用的技术指数平滑技术用于平均在不同的统计时间段内观察到的统计量,以预测未来的特征。主要思想数据库管理系统的一个功能应该是在执行查询处理时合并收集。使用情况统计信息的监视机制。一个更复杂的系统会感知到“访问请求的变化,评估各种重组

2021-09-01 17:15:05 81

原创 软件构造----0x07ppt个人总结

重载规则(Overload)这段话太重要了!!!!要调用的方法的哪个重写版本在运行时根据对象类型决定,但是要调用的方法的哪个重载版本基于在编译时传递的参数的引用类型。重写调用哪个方法运行时决定。重载调用哪个方法编译时决定。重写HashCode的另辟蹊径:如何写一个Immutable的类?...

2021-06-29 23:17:24 71

原创 软件构造----0x06ppt个人总结

可变类型的对象:提供了可改变其内部数据的值的操作。不可变类型的对象,其操作不改变内部值,而是构造新的对象。构造器(Creator):创建一个类型的新对象。创造器不可以使用所构造类型的对象作为参数,可以使用其他类型的对象作为参数。生产器(Producer):用已有的对象创建同类型的新对象。观察器(Observer):通过想观察的类型的对象,返回不同类型。变值器(Mutator):改变对象属性的方法。例子如下:表示独立性:client使用ADT时无需考虑其内部如何实现,ADT内部表示的变化

2021-06-29 22:03:03 96

原创 软件构造----0x05ppt个人总结

参数类型是否匹配,返回值类型是否匹配均在静态类型检查时完成检查。“方法”是程序的“积木”,可以被独立开发、测试、复用。使用“方法”的客户端,无需了解方法内部具体如何工作—“抽象”。行为等价性:根据规约来判断是否行为等价。单纯的看实现代码,并不足以判定不同的implmentation是否是“行为等价的”。需要根据代码的spec(开发者与client之间形成的contract)判定行为等价性。在编写代码之前,需要弄清楚spec如何协商形成、如何撰写。前置条件:对客户端的约束,在使用方法时必须满足的

2021-06-29 20:54:37 71

原创 软件构造----0x04ppt个人总结

Java是静态类型语言,在编译时进行类型检查。静态类型检查比动态类型检查好,动态类型检查比不检查好。改变一个变量:将该变量指向另一个值的存储空间。改变一个变量的值:将该变量当前指向的值的存储空间中写入一个新的值。final修饰的类无法派生子类。final修饰的变量无法改变值/引用。final修饰的方法无法被子类重写。Snapshot digram基本类型的值:对象类型:不可变对象:用双线椭圆。不可变的引用:用双线箭头。引用是不可变的,但指向的值却可以是可变的。例子:fina

2021-06-29 13:56:26 65

原创 软件构造----0x03ppt个人总结

传统软件开发模型线性过程:用户需求必须非常明确。迭代过程:用户需求不稳定时使用。1.瀑布模型,传统,相当于线性过程。2.增量模型,适合需求模糊的用户。缺点是每一个模块都得是可运行的,需要经验去划分出增量。同时,第二个增量的开发不能影响第一个增量。3.微模型,每个阶段都进行测试。4.原型模型,给用户提供一个可评价的原型,快速反馈。5.螺旋模型,适合大程序,风险不确定。敏捷开发比原型模型更适合需求不断确认。GitObject Graph:版本之间的演化关系图,一条边A->B表明了:在

2021-06-29 12:53:28 95

原创 软件构造----0x02ppt个人总结

静态测试(Static Testing):并不实际执行程序。动态测试(Dynamic Testing):实际上使用给定的测试用例执行编程代码。测试:判断是否发生错误。调试:找到错误的根源,并消除错误。Not only “make it fail”, but also “fail fast”.测试用例:输入+执行条件+期望结果。...

2021-06-29 10:27:56 64

原创 软件构造----0x01ppt个人总结

软件三种视图软件的内外部质量属性外部质量属性1.Correctness(正确性)调试和测试的时候最能体现这一点。需要fail fast,快速找出程序的错误。防御式编程:在编写程序的时候就保证正确性。形式化方法:通过形式化验证发现问题。2.Robustness(健壮性)健壮性一般体现在针对异常情况的处理,是对正确性的补充。当程序运行时,出现规约之外的情形时,软件应该做出恰当的反映。出现异常时,不要直接“崩溃”!!此处异常取决于spec的范畴。此外,还有一些特点:可扩展性,可复用性,

2021-06-28 22:08:49 77

原创 软件构造----AF&RI 总结

Abstraction Functions先理解不变量 Invariants:不变量:程序在任何时间总是true的性质。一旦创建,不变性对象在其整个生命周期中都应始终代表相同的值。Immutability就是一个典型的不变量。为什么需要不变量?①当ADT保留自己的不变量时,对代码的推理就变得容易得多。有String不会改变的事实,那么可以在调试使用String的代码时或尝试为使用String的另一个ADT建立不变量时排除这种可能性。将其与可变的字符串类型进行对比,该可变的字符串类型可以由任何有权

2021-06-27 18:28:30 153

原创 软件构造----Java基础补充

编译检查(switch-case)使用IDE时,可以自动检查是否漏写了break语句和default语句,方法是打开IDE的编译检查:在Eclipse中,选择Preferences - Java - Compiler - Errors/Warnings - Potential programming problems,将以下检查标记为Warning:'switch' is missing 'default' case'switch' case fall-through在Idea中,选择Prefe

2021-05-29 19:42:19 157

原创 C++ pair&make_pair

pairpair是一种模板类型,其中包含两个数据值,两个数据的类型可以不同。pair <int,string>a;pair a("James", "Joy");由于pair类型的使用比较繁琐,因为如果要定义多个形同的pair类型的时候,可以时候typedef简化声明。typedef pair author;author pro("May", "Lily");对于pair类,由于它只有两个元素,分别名为first和second,因此直接使用普通的点操作符即可访问其成员,使用.访

2021-05-28 14:28:47 237

转载 软件构造----Git 个人总结

什么是GitGit是目前世界上最先进的分布式版本控制系统(没有之一)。分布式版本控制系统没有“中央服务器”,每个人的电脑上都是一个完整的版本库。这样,工作时就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。和集中式版本控制系统相比,分布式版本控制系统的安全性要高很多,因为每个人电脑里都有完整的版本库,某一个人的

2021-05-22 17:35:23 59

原创 C++ Primer 第七章 类

概述C++中可用类定义自己的数据类型。数据抽象能帮助将对象的具体实现与对象能执行的操作分离。类的基本思想是数据抽象和封装。数据抽象:接口和实现分离的编程/设计技术。接口包括用户能执行的操作,实现包括类的数据成员、接口实现的函数体、定义类所需的各种私有函数。封装:实现了类的接口和实现的分离,封装后的类隐藏了它的实现细节。用户只能使用接口而无法访问实现部分。类要实现数据抽象和封装,需定义一个抽象数据类型。定义抽象数据类型允许用户访问其所有成员且需要用户实现操作的类不是抽象数据类型。成员函数的声

2021-04-10 22:37:18 93

原创 软件构造----Java基础入门----main方法

main()方法详解在Java中,main()方法是Java应用程序的入口方法,也就是说,程序在运行的时候,第一个执行的方法就是main()方法,这个方法和其他的方法有很大的不同,比如方法的名字必须是main,方法必须是public static void 类型的,方法必须接收一个字符串数组的参数等等。为什么要这么定义,和JVM的运行有关系。当一个类中有main()方法,执行命令“java 类名”则会启动虚拟机执行该类中的main方法。由于JVM在运行这个Java应用程序的时候,首先会调用main方

2021-04-06 13:13:41 254

原创 软件构造----Java基础入门----字符串

字符串与不可变不可变对象在创建后,它的内部状态会保持不变,这就意味着,一旦我们将一个对象分配给一个变量,就无法再通过任何方式更改对象的状态了。那么,为什么Java中字符串是不可变的呢?可以从四个方面说起,缓存、安全性、同步和高性能。一)字符串常量池字符串是Java中最常用的数据类型之一,所以,把字符串缓存起来,并且重复使用它们会节省大量堆空间(堆内存用来存储 Java 中的对象,无论是成员变量、局部变量,还是类变量,它们指向的对象都存储在堆内存中)字符串常量池是 Java 虚拟机用来存储字符串的

2021-04-05 21:00:29 71

原创 软件构造----Java基础入门----基本数据类型

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

2021-04-04 22:45:58 96

原创 判断给定的链表是否有环

哈希缓存法过程:(1)首先创建一个以节点 ID 为键的 HashSet集合,用来存储曾经遍历过的节点。(2)从头节点开始,依次遍历单链表的每一个节点。(3)每遍历到一个新节点,就用新节点和 HashSet 集合当中存储的节点作比较,如果发现 HashSet 当中存在相同节点 ID,则说明链表有环,如果HashSet 当中不存在相同的节点 ID,就把这个新节点 ID 存入 HashSet ,之后进入下一节点,继续重复刚才的操作。算法分析:假设从链表头节点到入环点的距离是 a ,链表的环长是 r 。

2020-10-22 13:14:46 140

空空如也

空空如也

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

TA关注的人

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