2019-2020-1学期20192423《网络空间安全专业导论》第四周学习总结
一、内容总结
第八章:
1. 抽象结构
- 栈:是一种抽象结构,只能从一端访问栈中的元素。 删除的总是在栈中时间最短的项目。会计师称为LIFO,插入操作叫Push,删除操作叫Pop。
- 队列:是一种抽象结构,队列中的项目从一端入,另一端出。删除的总是在队列中时间最长的项目。会计师称为FIFO,Enqueue、Enque、Enq、Enter和Insert都可以表示插入操作,Dequeue、Deque、Deq、Delete和Remove都可以表示删除操作。
- 列表:抽象复合结构,拥有三个属性特征:项目是同构的,项目是线性的,列表是变长的。(数组是内嵌结构,列表是抽象结构。列表可被形象化为链式结构。链式结构:一个将数据项和找到下一项位置的信息保存到同一容器的实现方法。)
- 树:抽象复合结构,分层体系结构,要用某种程序对关系建模,且拥有大量的数学理论。
- 二叉树:具有唯一起始节点(根节点)的抽象复合结构,其中每个节点可以有两个子女节点,根节点和每个节点之间都有且只有一条路径。根:树中唯一的开始节点。叶节点:没有子女的树节点。
- 图:由一组节点和一组把节点相互连接起来的边构成的数据结构。顶点:图中的节点。边(弧):表示图中两个节点的是连接的顶点对。无向图:其中的边没有方向的图有向图:其中的边是从一个顶点指向另一个顶点(或同一个顶点)的图。邻顶点:通过边连接起来的两个顶点。路径:连接图中两个顶点的一系列顶点。
2. 二叉检索树
- 定义:
(1)若左子树不空,则左子树上所有节点的值均小于它的根结点的值;
(2)若右子树不空,则右子树上所有节点的值均大于它的根结点的值;
(3)左、右子树也分别为二叉排序树;
(4)没有键值相等的节点。
- 查找: 若根节点的关键字值等于查找的关键字,成功。 否则,若小于根结点的关键字值,递归查左子树。 若大于根结点的关键字值,递归查右子树。 若子树为空,查找不成功。
3.图算法
- 深度优先搜索:
(1)首先选定一个未被访问过的顶点V作为起始顶点(或者访问指定的起始顶点V),并将其标记为已访问过;
(2)然后搜索与顶点V邻接的所有顶点,判断这些顶点是否被访问过,如果有未被访问过的顶点,则任选一个顶点W进行访问;再选取与顶点W邻接的未被访问过的任一个顶点并进行访问,依次重复进行。当一个顶点的所有的邻接顶点都被访问过时,则依次回退到最近被访问的顶点。若该顶点还有其他邻接顶点未被访问,则从这些未被访问的顶点中取出一个并重复上述过程,直到与起始顶点V相通的所有顶点都被访问过为止。
(3)若此时图中依然有顶点未被访问,则再选取其中一个顶点作为起始顶点并访问之,转(2)。反之,则遍历结束。
- 广度优先搜索:
(1)假设存在一个空的搜索队列Queue,首先将节点A添加进队列Queue
(2)判断队列第一个节点是否是需要查找的目标节点,若不是,则将第一个节点的直接子节点添加进队列,并移除第一个节点
(3)重复判断,直到第一个节点为目标节点,或者队列为空(即代表没有合适的)
- 单源最短搜索:这里的“最短路径”指的是将路径上的边的值(权值)加在一起得到的和最小。
4.子程序
- 参数传递
参数列表:程序中两部分之间的通信机制。
形参:列在子程序名后的括号中的标识符。
实参:子程序调用中列在括号中的标识符。
- 值参与引用参数
值参:由调用单元转入实参的副本(写在留言板上)的形参
引用参数:由调用单元转入实参的地址(写下留言板上)的形参。
第九章:
1.面向对象方法
设计方法:
- 集体讨论::一种集体问题求解的方法。为的是生成解决某个特定问题要用到的候选类的列表
- 过滤:确定问题解决方案中的核心类
- 场景:给每个类分配任务。类把它的数据封装了起来。封装:把数据和动作集中在一起,使数据和动作的逻辑属性与他们的实现细节分离。
- 责任算法
2.翻译过程
编译器:能够完成从一种语言到另一种语言的保语义变换的软件称为翻译器,这两种语言分别称为该翻译器的源语言和目标语言。编译器是一种翻译器,它的特点是目标语言比源语言低级。
解释器:解释器是不同于编译器的另一类语言处理器。解释器不像编译器那样通过翻译来生成目标程序,而是直接执行源程序所指定的运算。解释器也有和编译器类似的地方,它也需要对源程序进行词法分析、语法分析和语义分析等,这样它才有可能知道源程序指定了一些什么运算。
解释执行的效率比编译器生成的机器代码的执行效率低。对于编译方式来说,对源程序的词法分析、语法分析和语义分析只要进行一次。而对于解释执行来说,每次执行到源程序的某个语句,都要对它进行一次词法分析、语法分析和语义分析,确定了这个语句的含义后,才能执行它指定的运算。
3.程序设计语言的范型
- 命令式泛型
- 面向过程的范型:在这里语句被分组为子程序。
- 面向对象的范型:数据对象是活跃的。对象和操作对象的代码绑定在一起,使得每个对象负责控制自己的操作。
- 声明式范型
- 函数式模型:函数式模型基于函数的数学概念。
- 逻辑编程:逻辑编程基于象征逻辑的原则。
4.高级程序设计语言
- 布尔表达式
- 数据归类 数据类型:整数、实数、字符、布尔型、字符串、声明、保留字。
- 输入/输出结构
- 控制结构
5.面向对象语言
- 封装:实施信息隐蔽的语言特性。
- 对象类或类(问题求解阶段):属性和行为相似的一组对象的说明。
- 对象(问题求解阶段):与问题背景相关的事物或实体。
- 对象(实现阶段):类的一个实例。
- 类(实现阶段):对象的模式。
- 继承:类获取其他类的属性(数据域和方法)的机制。
- 多态:一种语言的继承体系结构中具有两个同名方法且能够根据对象应用合适的方法的能力。
二、心得体会
通过对第八章,第九章的学习,我了解了几种抽象复合结构以及各自的特征,了解了子程序和子算法以及高级语言和面向对象设计过程中的阶段。
三、问题过程
1.功能设计及面向对象设计的区别不太清晰 2.对广度优先搜索存有模糊