2019-2020-1学期20192429《网络空间安全专业导论》第四周学习总结

2019-2020-1学期20192429《网络空间安全专业导论》第四周学习总结

             # 第八章 抽象数据类型与子程序 #   

8.1 抽象数据类型

  • 抽象数据类型(Abstract Data Type,ADT):属性(数据和操作)明确地与特定实现分离的容器
  • 目标:通过抽象减小复杂度。
    Q:如何通过抽象减小复杂度
  • 计算机领域,可以通过从应用层,逻辑三个方面观察数据层和实现层
  • 应用(或用户)层:特定问题中的数据的视图
  • 逻辑(或抽象)层:数据值(域)和处理它们操作的抽象视图
  • 实现层:明确表示出了存放数据项的结构,并用程序设计语言对数据的操作进行编码
  • 数据结构:一种抽象数据类型中的复合数据域的实现
  • 容器:存放和操作其他对象的对象
    Q:对象是什么?
    8.2 栈——同队列语言为抽象复合结构
  • LIFO(Last In First Out)
  • 另一种描述栈的访问行为的说法是删除的项总是在栈中时间最短的项目
  • 插入操作:Push(推进)
  • 删除操作:Pop(弹出)
    WHILE(more data) Read value Puch(myStack value) WHILE(NOT Is Empty(myStack)) Pop(myStack value) Write value

8.3 队列——一种抽象结构

  • FIFO(First In First Out):插入操作在队列的rear(尾部)进行,删除操作在队列的front(头部)进行
  • 另一种描述队列的访问行为的说法是删除的总是在队列中时间最长的项目。插入操作没有任何约束;整个FIFO都体现在删除操作上。
  • 插入操作:Equeue Enque Enq Enter Inster
  • 删除操作:Dqueue Deque Deq Delete Remove
    WHILE(more data) Read value Enque(myQueue value) WHILE(NOT Is Empty(myQueue)) Deque(myQueue value) Write value
    Q:为什么队列不是复合结构
    8.4 列表
  • 列表三个属性特性:项目是同构的,项目是线性,列表是变长的。
  • 线性:每个项目除了第一个都有一个独特的组成部分在它之前,除了最后一个也都有一个独特的组成部分在它之后
  • 链式结构(Linked structuer):一个将数据项和找到下一项位置的信息保存到同一容器的实现方法




    8.5 树

    8.5.1 二叉树——抽象结构
  • 子女:每个节点可以有两个后继节点
  • 叶节点(leaf node):没有子女的树节点
  • 根(root):树中唯一的开始节点
  • 二叉树(binary tree):具有唯一起始节点(根节点)的抽象复合结构,其中每个节点可以有两个子女节点,根节点和每个节点之间都有且只有一条路径
    8.5.2 二叉检索树

    Q:如何解释子树是空的那段概念,没看懂
  • 左子树子节点需小于根节点才可继续检索,但它需大于初始节点。即子节点只需大于其上的根节点,右子树反之。


    8.6 图——数据结构
  • 图(graph):由一组节点和一组把节点互相连接起来的边构成的数据结构
  • 顶点(vertex):图中的节点
  • 边(弧)(edge(are)):表示图中两个节点的连接的顶点对
  • 图中的顶点表示对象,边则描述了顶点之间的关系
  • 无向图(undirected graph):其中的边没有方向的图
  • 有向图(directed graph(digraph))另一个顶点:其中的边是从一个顶点指向(或同一个顶点)的图
  • 邻顶点(adjacent vertice):通过边连接起来的两个顶点
  • 路径(path):连接图中两个顶点的一系列顶点
    8.6.1 创建图
    创建一个表格需要以下操作:
  1. 在表格中添加一个顶点
  2. 在表格中添加一条边
  3. 在表格中添加一个权值
    8.6.2 图算法
    三种经典的图搜索算法:
  4. 我能否搭乘喜爱的航线从城市X前往城市Y?
  5. 我怎样能用最少的停顿从城市X前往城市Y?
  6. 从城市X到城市Y最短的航程(公里数)是什么?
    深度优先搜索
    对于问题(1),给定一个起点和一个终点,我们来构造一种从起点(start vertex)到终点(end vertex)的路径的算法。
  • 栈是一种存储顶点的合适的数据结构
  • 一旦把一个顶点的所有相邻顶点都放入栈内,就标记这个顶点被访问过;由于它可能无法终止,所有我们不能多次处理同一个顶点。


    广度优先搜索
    对于问题(2),尝试从距此顶点最近的路径开始,也就是那些在栈顶的路径,按照相反顺序来保存元素,即最晚的路径在顶部。

    单元最短路搜索
    Q:没有看懂单元最短路搜索
    8.7 子程序
    8.7.1 参数传递
  • 参数列表(parameter list):抽象中两部分之间的通信机制
  • 形参(parameter):列在子程序名后的括号中的标识符
  • 实参(argument):子程序调用中列在括号中的标识符
  • 当动作执行时,实参将逐个替代形参
  • 调用子程序时传递的实参个数必须与子程序定义中的形参个数相同,由于实参和形参是根据位置匹配的,所以它们的名字不必一致。
  • 位置形参:当需要多次调用一个子程序而每次调用的实参又不同,根据位置调用。
    8.7.2 值参与引用参数
    传递参数的基本方式:
  1. 值传递
  2. 引用(或地址)传递
  • 值参(value parameter):由调用单元传入实参的副本(写在留言上)的形参
  • 引用参数(reference parameter):由调用单元传入实参的地址(写在留言板上)的形参

      # 第九章 面向对象设计与高级程序设计语言 #

9.1 面向对象方法
Polya的问题求解策略将应用于数据,而不是任务
9.1.1 面向对象

  • 对象(object):在问题背景中相关的事物或实体
  • 对象类(object class)或类(class):一组具有相似的属性和行为的对象的描述
  • 域(field):类中的特定项,可以是数据或子程序
  • 方法(method):定义了类的行为的一种行为的特定算法
    9.1.2 设计方法
    分解过程的四个阶段:
  1. 集体讨论
  2. 过滤
  3. 场景
  • 封装(encapsulation):把数据和动作集中在一起,使数据和动作的逻辑属性与它们的实现细节分离
  1. 责任算法

    9.2 翻译过程
    9.2.1 编译器(所以它到底是什么???)
  • 编译器(complier):把高级语言编写的程序翻译成机器码的程序
  • 要编译一个程序,就必须具有这个编译器在特定机器上的机器码版本;想要在多种类型的机器上使用一种高级语言,就要具备这种语言的多个编译器
    9.2.2 解释器
  • 解释器(interpreter):输入用高级语言编写的程序,指导计算机执行每个语句指定的动作的程序
  • 字节码(bytecode):编译Java源代码使用的标准机器语言

    9.3 程序设计语言的范型
    9.3.1 命令式范型
  1. 面向过程的范型
  • 面向过程编程是一种命令式模型,在这里语句被分组为子程序
  • 伪代码示例描述了这种模型
  • 每一层执行整个问题求解的一个必要的特定的任务
  1. 面向对象的范型
  • 面向对象视角是与对象交互的一种方式
    Q:什么是对象和操作对象的代码绑定在一起
    9.3.2 声明式范型
  1. 函数式模型
  • 该模型基于函数的数学概念
    Q:没有看懂p132的函数示例
  1. 逻辑编程
  • 该编程基于象征逻辑的原则
    Q:什么是象征逻辑
    9.4 高级程序设计语言的功能性
    选择和循环是命令是命令式语言的标志
    9.4.1 布尔表达式
  • 布尔表达式(Boolean expression):一个标识符序列,标识符之间由相容的运算符分隔,求得的值是true或false

    9.4.2 数据归类
  • 强类型化(strong typing):每个变量都有一个类型,只有这种类型的值才能存储到该变量中
  • 数据类型(data type):一组值以及能够应用于这种类型的值的基本操作集合的说明
    计算机能够执行一条指令,是因为这条指令的地址被载入了程序计数器,而指令被载入了指令寄存器
  1. 整数:一个整数值的范围,这个范围由表示整数值的字节数决定
  • 模运算符:返回整数除法的余数的运算符
  1. 实数:特定精度的数的范围,这个范围由表示实数值的字节数决定
  2. 字节
  3. 布尔型
  4. 字符串:一种具有复合数据类型的特征的数据类型,但通常被看作简单数据类型;是一个字符序列,在某种语言中这个序列通常被看作一个数据值
  5. 声明(declaration):把变量、动作或语言中的其他实体与标识符关联起来的语句,使程序猿可以通过名字引用这些项目
  • 保留字(reserved word):一种语言中具有特殊语言的字,不能用它作为标识符
  • 区分大小写(case sensitive):大写字母和小写字母被看作是不同的;两个拼写方法相同但大小写形式不同的标识符被看作是两个不同的标识符
    9.4.3 输入/输出结构
  • 高级语言把输入的文本数据看作一个分为多行的字符流。字符的含义则由存放值的内存单元的数据类型决定
  • 所有输入语句都由三部分组成:
  1. 要存放数据的变量的说明
  2. 输入语句
  3. 要读入的变量名以及数据流自身
    9.4.4 控制结构(control structure)
  • 定义:确定程序中的其他指令的执行顺序的指令
  • 程序中的每个逻辑单元都只能有一个入口和一个出口,程序不应随意地跳入或跳出这些逻辑模块
  • 嵌套逻辑
    选择控制结构被嵌入循环控制结构;控制结构中有控制结构……理论上,控制结构的嵌套有多深是没有限制的!(纳尼)
  • 异步处理
    也叫作事件驱动处理
  • 异步(asynchronous):不与计算机中的其他操作同时发生;换句话说,与计算机的动作不同步
    9.5 面向对象语言的功能性
    9.5.1 封装
  • 封装(encapsulation):实施信息隐藏的语言特性
  • 对象类或类(问题求解阶段)(object class or class(problem-solving phrase)):属性和行为相似的一组对象的说明
  • 对象(问题求解阶段)(object (problem-solving phrase)):与问题背景相关的事物或实体
  • 对象(实现阶段)(object(implementation phrase)):类的一个示例
  • 类(实现阶段):对象的模式
    9.5.2 类
  • 实例化(instantiate):创建类的对象
    9.5.3 继承
  • (inheritance):类获取其他类的属性(数据域和方法)的机制
    9.5.4 多态
  • (polymorphism):一种语言的继承体系结构中具有两个同名方法且能够根据对象应用合适的方法的能力
    9.6 过程设计与面向对象设计的区别
  • 在面向对象的设计中,列表数据结构和子程序需要在类中绑定在一起
  • 在面向过程的版本中,列表被呈现为传递给子程序的记录
  • 在面向对象的版本中,类对象的实现通过封装实现对用户的隐藏


2019-2020-1学期20192429《网络空间安全专业导论》第四周学习总结

原文地址:https://www.cnblogs.com/meeyee/p/11768370.html

时间: 2024-07-29 16:43:12

2019-2020-1学期20192429《网络空间安全专业导论》第四周学习总结的相关文章

2019-2020-1学期 20192421 《网络空间安全专业导论>>第四周学习总结

通过这周的自主学习,我在第八章学到了很多有关抽象数据类型与子程序的知识.在计算机领域,这些抽象的容器称为抽象数据类型,第八章第一节就对此进行了阐述. 第八章 抽象数据类型与子程序第八章 抽象数据类型与子程序 8.1 抽象数据类型 抽象数据类型(ADT)是属性(数据与操作)明确的与特定实现分离的容器. 在计算领域可以从应用层,逻辑层,实现层三个方面观察数据. 1.应用层:特定问题中的数据的视图. 2.逻辑(或抽象)层:数据值(域)和处理它们的操作的抽象视图. 3.实现层:明确表示出了存放数据项的结

2019-2020-1学期 20192421 《网络空间安全专业导论>>第二周学习总结

在本次对第五章与第四章进行了自主学习后,我对电脑硬件层的门和电路以及计算部件的有关知识有了一定了解,这两章从硬件层结构的层面出发,来辅助加深对于计算机的理解. 计算机是电子设备,它的大多数基础硬件元件控制着电流,而人类则通过这技术利用电流能量来进行计算,第四章将继承前两章讲述的计数系统,进而探讨计算机如何让使用电信号来表示和操作这些二进制值.首先要了解我们根据信号的电平区分信号的值,0-2伏是低电平,由二进制数字0表示,2-5伏范围内是高电平,由二进制数字1表示,然后再来来介绍一下有关概念, 门

2019-2020-1学期20192429《网络空间安全专业导论》第三周学习总结

2019-2020-1学期20192429<网络空间安全专业导论> 第六章 低级程序设计语言与伪代码 6.1 计算机操作 计算机是能够存储.检索和处理数据的可编程电子设备. 要改变计算机对数据的处理,只需要改变指令即可. 存储.检索和处理是计算机能够对数据执行的动作. 6.2 机器语言 计算机真正执行的程序设计指令是用机器语言编写的指令,这些指令固定在计算机的硬盘中. 机器语言(machine language):由计算机直接使用的二进制编码指令构成的语言. 这些指令是处理器唯一**真正能够执

2019-2020-1学期 20192429《网络空间安全专业导论》第十一周学习总结

2019-2020-1学期 20192429<网络空间安全专业导论>第十一周学习总结 # 第5章 应用安全 # 5.1 应用安全概述 早期的应用系统采用的客户/服务器模式是一种双层的结构,通常是将一台个人计算机做客户机使用,另外一台服务器用于存放后台的数据库系统,应用程序可以和客户端直接相连,中间没有其他的逻辑. 应用系统的新结构是一种三层客户/服务器结构,该结构构建了一种分隔式的应用程序. 攻击者主要攻击方面:利用Web应用系统.中间件或者数据库的漏洞进行攻击. 5.2 常见的Web应用安全

2019-2020-1学期 20192415 《网络空间安全专业导论》openssl实践

2019-2020-1学期 20192415 <网络空间安全专业导论>openssl实践 - 任务详情 参考https://www.cnblogs.com/rocedu/p/5087623.html,https://www.cnblogs.com/yangxiaolan/p/6256838.html,两人一组实践附图中的混合加密,提交实践截图. A,B两位同学分别产生一个公私钥对Apub,Apri, Bpub,Bpri,自己把公钥文件发送给对方(A的Apub给B,B的Bpub给A) A同学准备

2019-2020-1学期 20192415《网络空间安全专业导论》第一周学习总结

2019-2020-1学期 20192415 <网络空间安全专业导论> 第一周学习总结(第二章) 2.1数字形式储存信息 数字分类 数字,自然数,负数,整数,有理数 2.2 位置计数法 一个数字采用以R为基数的记数系统,具有n个数位,可表示为: 注: 任何技术系统中的最大数字比基数小1 同一数值有多种不同表示方式 无论以谁为基数,10是基数值本身 2.加减计算(进位与借位) 二进制与(2^n)进制之间的特殊关系 二进制数转换为八进制数:每三个数为一组 二进制数转换为十六进制数:每四个数为一组

2019-2020-1学期 20192415 《网络空间安全专业导论》第一周学习总结 第四章

2019-2020-1学期 20192415 <网络空间安全专业导论>第二周学习总结 第四章 门与电路 硬件元件,用电信号表示操作二进制值 4.1 计算机与电学 信号电平区分信号的值: 0~2伏为低电压,由二进制数字0表示 2~5伏为高电压,由二进制数字1表示 门(gate):对电信号执行基本运算的设备. 电路(circuit):相互关联的门组合,用于实现特定的逻辑函数. 表示法: 布尔代数--用数学符号定义和操作逻辑电路 逻辑框图--图形化表示(特定) 真值表--列举,定义功能 注:三种表示

2019-2020-1学期 20192403 《网络空间安全专业导论》第三周学习总结

2019-2020-1学期 20192403 <网络空间安全专业导论>第三周学习总结 第六章 学习收获 计算机能够执行的操作 机器语言的定义 Pep/8 指令格式 汇编语言,汇编器,实例Hello程序的汇编语言版本 表达算法,伪代码 测试 理解思路 计算机能真正执行的程序设计是机器语言编写的-在Pep/8中体会运用机器语言-关于Pep/8本身(指令格式,一些指令)-汇编语言-表达算法(伪代码)-写伪代码算法,并检测-伪代码算法和汇编语言之间的联系(翻译) 理解难点 Pep/8的指令格式-时刻谨

2019-2020-1学期20192423《网络空间安全专业导论》第五周学习总结

2019-2020-1学期20192423<网络空间安全专业导论>第五周学习总结 一.内容总结 第十章: 操作系统的角色 应用软件:为了满足特定需要—解决现实世界中的问题的程序 系统软件:管理计算机系统并与硬件进行交互的程序.它为创建和运行应用软件提供了工具及环境.系统软件通常直接与硬件交互. 操作系统:计算机的操作系统是系统软件的核心.管理计算机资源并为系统交互提供界面的系统软件. 引导计算机:初始时载入永久性存储器(ROM)中存储的一小组系统指令.这些指令将从二级存储器(通常是硬盘)中载入