软考数据库具体知识点整理(全)

打印 上一主题 下一主题

主题 776|帖子 776|积分 2328

目录
第一章 盘算机系统基本知识
1.1 盘算机系统
1.1.1 盘算机硬件组成
1.1.2 中央处置惩罚单元
1.1.3 数据表示
1.1.4 校验码
1.2 盘算机体系结构
1.2.1 体系结构分类
1.2.2 指令系统存
1.2.3 储系系统
1.2.4 输入/输出技术
1.2.5 总线结构
1.3 可靠性、性能、安全
1.3.1 盘算机可靠性
1.3.2 盘算机系统的性能评价
1.3.3 信息安全
第二章 程序语言底子知识
2.1 程序计划语言的基本概念
2.2 程序计划语言的基本成分
2.3 编译程序基本原理
第三章 数据结构与算法
3.1 数据结构
3.1.1 线性结构
3.1.2 数组
3.1.3 矩阵
3.1.4 树与二叉树
3.1.5 图
3.2 查找
3.2.1 次序查找
3.2.2 折半查找
3.2.3 哈希表
3.3 排序
3.3.1 直接插入排序
3.3.2 希尔排序
3.3.3 简朴选择排序
3.3.4 堆排序
3.3.5 冒泡排序
3.3.6 快速排序
3.3.7 归并排序
3.3.8 基数排序
3.3.9 内部排序算法总结
3.3.10 算法特性
第四章 操作系统知识
4.1 历程管理
4.1.1 操作系统概述
4.1.2 历程组成和状态
 4.1.3 前趋图
4.1.4 历程同步与互斥
4.1.5 历程调度
4.1.6 死锁
4.1.7 线程
4.2 存储管理
4.2.1 分区存储管理
4.2.3 分页存储管理
4.2.4 分段存储管理
4.2.5 段页式存储管理
4.3 设备管理
4.3.1 设备管理概述
4.3.2 I/0软件
4.3.3 设备管理技术
4.4 文件管理
4.4.1 文件管理概述
4.4.2 索引文件结构
4.4.3 文件目录
4.4.4 文件存储空间管理
第五章 盘算机网络 
5.1 网络功能和分类
5.2 OSI七层模子
5.3 TCP/IP协议
5.4 传输介质
5.5 通讯方式和互换方式
5.6 IP地址
5.7 IPv6
5.8 网络规划和计划
5.9 其他考点补充
5.10 网络安全技术
5.11 网络安全协议
第六章 数据库技术底子
6.1 基本概念
6.1.1 关于数据的基本概念
6.1.2 数据库管理系统的功能
6.1.3 数据各个发展阶段的特点
6.1.4 数据库系统的体系结构
6.2 数据模子
6.2.1 三级模式两级映像
6.2.2 数据模子_模子分类
6.2.3 数据模子_组成要素
6.2.4 概念模子中的基本概念
6.2.5 数据模子
6.3 数据存储与查询
6.4 数据仓库与数据挖掘底子知识 
6.4.1 数据仓库
6.4.2 数据挖掘 
6.4.3 贸易智能BI
第七章 关系数据库
7.1 关系数据库概述
7.2 关系代数
7.3 元组演算与域演算
7.4 查询优化
7.5 关系数据库计划 
7.6 模式分解
第八章 数据库SQL语言
8.1 SQL语言概述
8.2 数据库定义
8.2.1 创建表(create table)
8.2.2 修改表 (alter table)
8.2.3 删除表 (drop table)
8.2.4 索引
8.2.5 视图
8.3 数据操作
8.3.1 查询语句格式
8.3.2 分组查询
8.3.3 其他操作
8.3.4 约束
8.4 数据授权
8.4.1 授权grant
8.4.2 收回权限revoke
8.5 触发器
8.6 嵌入式SQL 
第九章 非关系型数据库NOSQL
9.1 概述
9.2 理论底子
9.3 分区方法
9.4 存储分布
9.5 查询模子
9.6 存储模式
第十章 系统开发与运行
10.1 系统实施
10.1.1 信息系统生命周期
10.1.2 能力成熟度模子
10.1.3 软件过程开发模子
10.1.4 信息系统开发方法
10.1.5 系统分析与计划
10.1.6 结构化开发 
10.2 系统测试
10.2.1 测试原则和方法
10.2.2 测试阶段
10.2.3 测试用例计划
10.2.4 调试
10.2.5 软件度量
10.3 系统维护
10.3.1 系统转换
10.3.2 系统维护
10.3.3 系统评价
10.4 面向对象开发
第十一章 数据库计划
11.1 数据库计划概述
11.2 系统需求分析
11.3 概念结构计划
11.4 逻辑结构计划
11.5 物理结构计划
11.6 实施阶段
11.7 运行与维护 
11.7.1 数据库系统的运行
11.7.2 数据库系统的维护 
11.7.3 数据库系统的管理
11.7.4 性能调整
第十二章 变乱管理
12.1 变乱的基本概念
12.2 数据库的并发控制
12.3 数据库的故障与恢复
12.3.1 变乱故障
12.3.2 系统故障
12.3.3 介质故障 
12.3.4 数据库备份
12.4 数据库的安全性与完备性 
第十三章 云盘算与大数据处置惩罚
13.1 云盘算
13.1.1 云盘算的关键特征
13.1.2 云盘算分类
13.1.3 云关键技术
13.1.4 云盘算的安全
13.1.5 云安全实施的步骤
13.2 大数据 
第十四章 数据库主流应用技术
14.1 分布式数据库
14.2 Web与数据库
14.3 XML与数据库
14.4 面向对象数据库
14.5 大数据与数据库
14.6 NewSQL 
第十五章 知识产权和尺度化
15.1 知识产权概述
15.2 保护限期
15.3 知识产权人的确定
15.4 侵权判定
15.5 尺度分别 


   前言:
  条记来自《文老师软考数据库》课本精讲,精讲视频在b站,某宝都可以找到,个人感觉通俗易懂。
  第一章 盘算机系统基本知识

1.1 盘算机系统

1.1.1 盘算机硬件组成



  • 盘算机的基本硬件系统由运算器控制器、存储器、输入设备和输出设备5 大部件组成。
  • 运算器、控制器等部件被集成在一起统称为中央处置惩罚单元(Central Processing Unit,CPU)。CPU是硬件系统的焦点,用于数据的加工处置惩罚,能完成各种算术逻辑运算及控制功能。
  • 存储器是盘算机系统中的影象设备,分为内部存储器和外部存储器。前者速容量小,一样平常用于暂时存放程序、数据及中央结果。而后者容量大、速度高、度慢,可以恒久生存程序和数据。
  • (简称外设),输入设备用于输入原始输入设备和输出设备合称为外部设备数据及各种下令,而输出设备则用于输出盘算机运行的结果。
1.1.2 中央处置惩罚单元

【CPU的功能】

  • 程序控制。CPU通过实行指令来控制程序的实行次序,这是PU的重要功能。
  • 操作控制。一条指令功能的实现需要若干操作信号配合来完成,CPU产生每条指令的操作信号并将操作信号送往对应的部件,控制相应的部件按指令的功能要求举行操作。
  • 时间控制。CPU对各种操作举行时间上的控制,即指令实行过程中操作信号的出现时间、连续时间及出现的时间次序都需要举行严格控制。
  • 数据处置惩罚。CPU通过对数据举行算术运算及逻辑运算等方举行加工处置惩罚,数据加工处置惩罚的结果被人们所利用。以是,对数据的加工处置惩罚也是CPU最根本的任务。
此外,CPU 还需要对系统内部和外部的制止(异常)做出相应,举行相应的处置惩罚。
【CPU的组成】
CPU 重要由运算器、控制器寄存器组和内部总线等部件组成。



  • 运算器:实行全部的算术运算,如加减乘除等,实行全部的逻辑运算并举行逻辑测试,如与、或、非、比较等。由以下组件组成:
            1.算术逻辑单元ALU :实现对数据的算术和逻辑运算;
            2.累加寄存器AC :运算结果或源操作数的存放区;
            3.数据缓冲寄存器DR:暂时存放内存的指令或数据;
            4.状态条件寄存器PSW :生存指令运行结果的条件码内容,如溢出标志等。
  • 控制器:控制整个CPU的工作,最为重要。由以下组件组成:
            1.指令寄存器IR:暂存CPU实行指令;
            2.程序计数器PC :存放指令实行地址;
            3.地址寄存器AR:生存当前CPU所访问的内存地址;
            4.指令译码器ID:分析指令操作码。
  • CPU依据指令周期的差异阶段来区分二进制的指令和数据,由于在指令周期的差异阶段,指令会下令CPU分别去取指令或者数据。
1.1.3 数据表示


  • 进制的表示:二进制、十六进制,一样平常在题目中会给出中文阐明,如果没给出,注意二进制符号为0b,一样平常表示为0b0011,十六进制符号为0x或H,可表示为0x18F或18FH。(十六进制可表示0-15,此中10-15用A-F来表示)
  • R进制整数转十进制:位权展开法,用R进制数的每一位乘以R的n次方,n是变量,从R进制数的整数最低世并婚农次为0,1,2,3..累加。
  • 例如有6进制数5043,此时R=6,用6进制数的每一位乘以6的n次方,n是变量从6进制数的整数最低位开始(5043从低位到高位分列:3,4,0,5),n依次为0,1,2,3,那么终极5043=3*6^0+4*6A1+0*6A2+5*6A3=1107。
  • 十进制转R进制:十进制整数 (除以R倒取余数)用十进制整数除以R,记录每次所得余数,若商不为0,则继续除以R,直至商为0,而后将全部余数从下至上记录,分列成从左至右次序,即为转换后的R进制数:
  • 例:有十进制数200,转换为5进制,此时R=6,将200/6,,得商为33s余数为2;由于商不等于0,因此再将商33/6,得商为5,余数为3;再将5/6,得商为0,余数为5;此时商为0,将全部余数从下到上记录,得532。
  • m进制转n进制:先将m进制转化为十进制数,再将十进制数转化为n进制数中央需要通过十进制中转,但下面两种进制间可以直接转化:
           1. 二进制转八进制:每三位二进制数转换为一位八进制数,二进制数位个数不是三的倍数,则在前面补0(原则是数值稳定),如二进制数01101有五位,前面补一个0就有六位,为001101,每三位转换为一位八进制数,001=1101=1+4=5,也即01101=15
           2. 二进制转十六进制:每四位二进制数转换为一位十六进制数,二进制数位个数不是四的倍数,则在前面补0,如二进制数101101有六位,前面补两个0就有八位,为00101101,每四位转换为一位十六进制数,0010=2,1101=13=D,也即101101=2D。
  • 呆板数:各种数值在盘算机中表示的形式,其特点是使用二进制计数制,数的符号用0和1表示,小数点则隐含,不占位置。呆板数有无符号数和带符号数之分。无符号数表示正数,没有符号位。带符号数最高位为符号位,正数符号位为0,负数符号位为1。
  • 定点表示法分为纯小数和纯整数两种,此中小数点不占存储位,而是按照以下约定:
    纯小数:约定小数点的位置在呆板数的最高数值位之前。
    纯整数:约定小数点的位置在呆板数的最低数值位之后。
    真值:呆板数对应的实际数值。
【带符号数有下列编码方式,认真值为-45时】


  • 原码:一个数的正常二进制表示最高位表示符号,数值0的源码有两种形式+0(00000000)和-0(10000000)。-45对应原码为10101101
  • 反码:正数的反码即原码;负数的反码是在原码的底子上,各位按位取反。数值0的反码也有两种形式:+0 (00000000),-0 (11111111)。-45对应反码为11010010
  • 补码:正数的补码即原码,负数的补码是在原码的底子上,除符号位外,其他各位按位取反,而后末位+1,若有进位则产生进位。因此数值0的补码只有一种形式+0=-0=00000000。-45对应补码为11010011
  • 移码:用作浮点运算的阶码,无论正数负数,都是将该原码的补码的首位 (符号位)取反得到移码。-45对应移码为01010011
【浮点数的表示】


  • 浮点数:表示方法为N=F*2E,此中E称为阶码,F称为尾数;雷同于十进制的科学计数法,如85.125=085125*10^2,二进制如101.011=0.101011*2A3.
  • 在浮点数的表示中,阶码为带符号的纯整数,尾数为带符号的纯小数,要注意符号占最高位(正数0负数1),其表示格式如下:   
    阶符阶码数符尾数
    很明显,与科学计数法雷同个浮点数的表示方法不是唯一的,浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定
  • 尾数的表示接纳规格化方法,也即带符号尾数的补码必须为1.0xxxx(或者0.1xxxx(正数),此中x可为0或1。
    浮点数的运算:对阶(使两个数的阶码雷同,小阶向大阶看齐,较小阶码增长几位,尾数就右移几位)。
    尾数盘算(相加,如果减运算则加负数)结果规格化(即尾数表示规格化,带符号尾数转换为1.0xxxx或0.1xxxx)。
1.1.4 校验码



  • 码距:就单个编码A:00而言,其码距为1,由于其只需要改变一位就变成另一个编码。在两个编码中,从A码到B码转换所需要改变的位数称为码距,如A:00要转换为B:11,码距为2。一样平常来说,码距越大,越利于纠错和检错
  • 奇偶校验码:在编码中增长1位校验位来使编码中1的个数为奇数 (奇校验或者偶数 (偶校验),从而使码距变为2。例如:
    ○ 发送给接收方,接收方收到后,会盘算收到的奇校验:编码中,含有奇数个1,编码有多少个1,如果是奇数个,则无误,是偶数个,则有误。
    ○ 偶校验同理,只是编码中有偶数个1,由上述,奇偶校验只能检1位错,而且无法纠错。
【CRC校验码】


  • CRC只能检错,不能纠错。使用CRC 编码,需要先约定一个生成多项式G(x)生成多项式的最高位和最低位必须是1。假设原始信息有m位,则对应多项式M(x)。生成校验码头脑就是在原始信息位后追加若干校验位,使得追加的信息能被G(x)整除。接收方接收到带校验位的信息,然后用G(x)整除。余数为0,则没有错误;反之则发生错误。
  • 例:假设原始信息串为10110,CRC的生成多项式为G(x)=x^4+x+1,求CRC校验码
    (1)在原始信息位后面添0,假设生成多项式的阶为r,则在原始信息位后添加r个0,本题中,G(x)阶为4,则在原始信息串后加4个0,得到的新串为101100000作为被除数。
    (2)由多项式得到除数,多项中x的幂指数存在的位置1,不存在的位置0。本题中,x的幂指数为0,1,4的变量都存在,而幂指数为2,3的不存在,因此得到串10011
    (3)生成CRC校验码,将前两步得出的被除数和除数举行模2除法运算 (即不进位也不借位的除法运算)。得到余数1111(注意:余数不足r,则余数左边用若千个0 补齐。如求得余数为11,r=4,则补两个0得到0011)。
    (4)生成终极发送信息串,将余数添加到原始信息后。上例中,原始信息为410110,添加余数1111后,结果为10110 1111。发送方将此数据发送给接收方
    (5)接收方举行校验。接收方的CRC 校验过程与生成过程雷同,接收方接收了带校验和的帧后,用多项式G(x)来除。余数为0,则表示信息无错,否则要求发送方举行重传。注意:收发信息双方需使用雷同的生成多项式
【海明码】


  • 海明码:本质也是利用奇偶性来错和纠错的检验方法,构成方法是在数据位之间的确定位置上插入k个校验位,通过扩大码距实现检错和纠错设数据位是n位,校验位是k位,则n和k必须满足以下关系:

  • 例:求信息1011的海明码
    (1)校验位的位数和具体的数据位的位数之间的关系全部位都编号,从最低位编号,从1开始递增,校验位处于2的n (n=0 1 2.....)次方中,即处于第1,2,4,8,16,32,.....位上,其余位才气填充真正的数据位,若信息数据为1011,则可知,第1,2,4位为校验位,第3,5,6,7位为数据位,用来从低位开始存放1011,得出信息位和校验位分布如下:

  • (2)盘算校验码
    如下图所示
    将全部信息位的编号都拆分成二进制表示 


上图中,7=4+2+1,表示7由第4位校验位(r2)和第2位校验位(r1)和第1位校验位(r0)共同校验同理,第6位数据位6=4+2,第5位数据位5=4+1,第3位数据位3=2+1前面知道,这些2的n次方都是校验位,可知,第4位校验位校验第765三位数据位,因此,第4位校验位r2等于这三位数据位的值异或,第2位和第1位校验位盘算原理同上
盘算出三个校验位后,可知终极要发送的海明校验码为1010101。
(3)检错和纠错原理
接收方收到海明码之后,会将每位校验位与某校验的位数分别异或,即做如下三组运算: 

如果是偶校验,那么运算得到的结果应该全为0,如果是奇校验,应该全为1,才是准确,假设是偶校验,且接收到的数据为1011101 (第四位堕落),此时运算的结果为: 

这里不全为0,表明传输过程有误,而且按照r2r1r0分列为二进制100,这里指出的就是错误的位数,表示第100,即第4位堕落,找到了堕落位,纠错方法就是将该位逆转。 
1.2 盘算机体系结构

1.2.1 体系结构分类



  • 按处置惩罚机的数目举行分类: 单处置惩罚系统(一个处置惩罚单元和其他设备集成)、并行处置惩罚系统(两个以上的处置惩罚机互联)分布式处置惩罚系统(物理上远距离且松合的多盘算机系统)
  • Flynn分类法:分类有两个因素,即指令流和数据流,指令流由控制部分处置惩罚,每一个控制部分处置惩罚一条指令流,多指令流就有多个控制部分;数据流由处置惩罚器来处置惩罚,每一个处置惩罚器处置惩罚一条数据流,多数据流就有多个处置惩罚器;至于主存模块,是用来存储的,存储指令流或者数据流,因此,无论是多指令流还是多数据流,都需要多个主存模块来存储,对于主存模块,指令和数据都一样。
  • 依据盘算机特性,是由指今来控制数据的传输,因此,一条指令可以控制一条或多条数据流,但一条数据流不能被多条指令控制,否则会堕落,就如同上级下令太多还互相辩论不知道该实行哪个,因此多指今单数据MISD不大概 

1.2.2 指令系统存



  • 盘算机指令的组成:一条指令由操作码和操作数两部分组成,操作码决定要完成的操作,操作数指参加运算的数据及其所在的单元地址在盘算机中,操作要求和操作数地址都由二进制数码表示,分别称作操作码和地址码,整条指令以二进制编码的形式存放在存储器中。
  • 盘算机指令实行过程:取指令--分析指令--实行指令三个步骤,起首将程序计数器PC中的指令地址取出,送入地址总线,CPU依据指令地址去内存中取出指令内容存入指令寄存器IR;而后由指令译码器举行分析,分析指令操作码;最后实行指令,取出指令实行所需的源操作数。
【指令寻址方式】
次序寻址方式:当实行一段程序时,是一条指令接着一条指令地次序实行;
跳跃寻址方式:指下一条指令的地址码不是由程序计数器给出,而是由本条指令直接给出,程序跳跌后,按新的指令地址开始次序实行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。
【指令操作数的寻址方式】

  • 立刻寻址方式:指令的地址码字段指出的不是地址,而是操作数自己;
  • 直接寻址方式:在指令的地址字段中直接指出操作数在主存中的地址;
  • 间接寻址方式:指令地址码字段所指向的存储单元中存储的是操作数的地址;
  • 寄存器寻址方式:指令中的地址码是寄存器的编号;
  • 基址寻址方式:将基址寄存器的内容加上指令中的形式地址而形成操作数的有用地址,其优点是可以扩大寻址能力;
  • 变址寻址方式:变址寻址方式盘算有用地址的方法与基址寻址方式很相似,它是将变址寄存器的内容加上指令中的形式地址而形成操作数的有用地址。
 【复杂指令系统和精简指令系统】
CISC是复杂指令系统兼容性强,指令繁多、长度可变,由微程序实现;
RISC是精简指令系统,指令少,使用频率接近,重要依靠硬件实现(通用寄存器,硬布线逻辑控制) 

【指令系统-流水线】
指令流水线原理: 将指令分成差异段,每段由差异的部分行止理,因此可以产生叠加的结果,全部的部件行止理指令的差异段。

RISC中的流水线技术
(1)超流水线 (Super Pipe Line) 技术。它通过细化流水、增长级数和进步主频,使得在每个呆板周期内能完成一个甚至两个浮点操作。着实质是以时间换取空间
(2) 超标量 (Super Scalar) 技术。它通过内装多条流水线来同时实行多个处置惩罚,其时钟频率虽然与一股流水接dw更小的CPI。着实质是以空间换取时间
(3)超长指令字 (Very Long Instruction Word,VLIW) 技术VLIW和超标量都是20世纪8年代出现的概念,其共同点是要同时实行多条指令,其差异在于超标量依靠硬件来实现并行处置惩罚的调度,VLIW 则充分发挥软件的作用,而使硬件简化性能进步。
【流水线时间盘算】
流水线周期:指令分成差异实行段,此中实行时间最长的段为流水线周期。
流水线实行时间:1条指令总实行时间+ (总指令条数-1)*流水线周期。
流水线吞吐率盘算:吞吐率即单元时间内实行的指令条数公式:指令条数/流水线实行时间。
流水线的加速比盘算:加速比即使用流水线后的效率提升度,即比不使用流水线快了多少倍,越高表明流水线效率越高,公式:不使用流水线实行时间/使用流水线实行时间 
1.2.3 储系系统



  • 盘算机接纳分级存储体系的重要目的是为了解决存储容量、本钱和速度之间的矛盾问题。
  • 两级存储:Cache-主存、主存-辅存(虚拟存储体系)。
  • 局部性原理:总的来说,在CPU运行时,所访问的数据会趋向于一个较小的局部空间地址内,包括下面两个方面:
    (1)时间局部性原理:如果一个数据项正在被访问,那么在近期它很大概会被再次访问,即在相邻的时间里会访问同一个数据项。
    (2)空间局部性原理:在最近的将来会用到的数据的地址和现在正在访问的数据地址很大概是相近的,即相邻的空间地址会被连续访问。



  • 高速缓存Cache用来存储当前最活跃的程序和数据,直接与CPU交互,位于CPU由半导体材料构成。其内容是主存和主存之间,容量小,速度为内存的5-10倍内存的副本拷贝,对于程序员来说是透明的。
  • Cache由控制部分和存储器组成,存储器存储数据,控制部分判定CPU要访问的数据是否在cache中,在则命中,不在则依据一定的算法从主存中替换。
  • 地址映射: 在CPU工作时,送出的是主存单元的地址,而应从Cache存储器中读/写信息。这就需要将主存地址转换为Cache存储器地址,这种地址的转换称为地址映像,由硬件自动完成映射,分为下列三种方法: 
    (1)直接映像:将Cache存储器等分成块,主存也等分成块并编号。主存中的块与Cache中的块的对应关系是固定的,也即二者块号雷同才气命中。地址变更简朴但不灵活,容易造成资源浪费。
    (2)全相联映像:同样都等分成块并编号。主存中恣意一块都与Cache中恣意一块对应。因此可以随意调入Cache恣意位置,但地址变更复杂,速度较慢。由于主存可以随意调入Cache恣意块,只有当Cache满了才会发生块辩论,是最不容易发生块辩论的映像方式。
    (3)组组相连映像:前面两种方式的结合,将Cache存储器先分块再分组,主存也同样先分块再分组,组间接纳直接映像,即主存中组号与Cache中组号雷同的组才气命中,但是组内全相联映像,也即组号雷同的两个组内的全部块可以恣意变更。
【磁盘结构和参数】


  • 磁盘有正反两个盘面,每个盘面有多个同心圆每个同心圆是一个磁道,每个同心圆又被分别为多个扇区,数据就被存放在一个个扇区中。
  • 磁头起首要探求到对应的磁道,然后等待磁盘举行周期旋转,旋转到指定的扇区,才气读取到对应的数据,因此,会产生寻道时间和等待时间。公式为:存取时间=寻道时间+等待时间(平均定位时间+转动延迟)。
  • 注意:寻道时间是指磁头移动到磁道所需的时间,等待时间为等待读写的扇区转到磁头下方所用的时间。
1.2.4 输入/输出技术

盘算机系统中存在多种内存与接口地址的编址方法,常见的是下面两种:
(1)内存与接口地址独立编址方法内存地址和接口地址是完全独立的两个地址空间。访问数据时所使用的指令也完全差异,用于接口的指令只用于接口的读/写,其余的指令全都是用于内存的因此,在编程序或读程序时很易使用和辨认。这种编址方法的缺点是用于接口的指令太少、功能太弱。
(2)内存与接口地址统一编址方法内存地址和接口地址统一在一个公共的地址空间里,即内存单元和接口共用地址空间。优点是原则上用于内存的指令全都可以用于接口,这就大大地增强了对接口的操作功能,而且在指令上也不再区分内存或接口指令。该编址方法的缺点就在于整个地址空间被分成两部分,此中一部分分配给接口使用,剩余的为内存所用,这经常会导致内存地址不连续。
盘算机和外设间的数据交互方式:
(1)程序控制(查询)方式:CPU主动查询外设是否完成数据传输,效率极低。
(2)程序制止方式:外设完成数据传输后,向CPU发送制止,等待CPU处置惩罚数据效率相对较高。制止相应时间指的是从发出制止请求到开始进入制止处置惩罚程序制止处置惩罚时间指的是从制止处置惩罚开始到制止处置惩罚结束。制止向量提供制止服务程序的入口地址。多级制止嵌套,使用堆栈来保护断点和现场。
(3)DMA方式(直接主存存取):CPU只需完成须要的初始化等操作,数据传输的整个过程都由DMA控制器来完成,在主存和外设之间建立直接的数据通路效率很高。


  • 在一个总线周期结束后,CPU会相应DMA请求开始读取数据;CPU相应程序制止方式请求是在一条指令实行结束时。
1.2.5 总线结构



  • 总线(Bus)是指盘算机设备和设备之间传输信息的公共数据通道。总线是毗连盘算机硬件系统内多种设备的通讯线路,它的一个重要特征是由总线上的全部设备共享,因此可以将盘算机系统内的多种设备毗连到总线上。
  • 从广义上讲,任何毗连两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
    (1)内部总线:内部芯片级别的总线,芯片与处置惩罚器之间通讯的总线。
    (2)系统总线:是板级总线,用于盘算机内各部分之间的毗连,具体分为数据总线(并行数据传输位数)、地址总线 (系统可管理的内存空间的巨细) 、控制总线(传送控制下令)。代表的有ISA总线、EISA总线、PCI总线。
    (3)外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS232(串行总线)、SCSI(并行总线)、USB (通用串行总线,即插即用,支持热插拔)。
1.3 可靠性、性能、安全

1.3.1 盘算机可靠性

【串并接洽统可靠性】
无论什么系统,都是由多个设备组成的协同工作,而这多个设备的组合方式可以是串联、并联,也可以是混合模式,假设每个设备的可靠性为R1,R2......Rn则差异的系统的可靠性公式如下:
(1)串接洽统,一个设备不可靠,整个系统瓦解,整个系统可靠性R=R1*R2*...* Rn。

 (2)并接洽统,全部设备都不可靠,整个系统才瓦解,整个系统可靠性R=1-(1-R1)
*(1-R2) * ...*(1-Rn)。

1.3.2 盘算机系统的性能评价



  • 【性能评测的常用方法】
    (1)时钟频率。一样平常来讲,主频越高,速度越快。
    (2)指令实行速度。计量单元KIPS、MIPS。
    (3)等效指令速度法。统计各类指令在程序中所占比例,并举行折算,是一种固定比例法。
    (4)数据处置惩罚速率 (Processing Data Rate,PDR)法。接纳盘算PDR 值的方法来衡量呆板性能,PDR值越大,呆板性能越好。PDR与每条指令和每个操作数的平均位数以及每条指令的平均运算速度有关。
    (5)焦点程序法。把应用程序中用得最频繁的那部分焦点程序作为评价盘算机性能的尺度程序,在差异的呆板上运行,测得其实行时间,作为各类呆板性能评价的依据。 
  • 【基准程序法】
    基准程序法是目前被用户一致认可的测试性能的较好方法,有(Benchmark)多种多样的基准程序,包括:
    (1)整数测试程序。同一厂家的呆板,接纳雷同的体系结构,用雷同的基准程序测试,得到的MIPS 值越大,一样平常阐明呆板速度越快。
    (2)浮点测试程序。指标MFLOPS(理论峰值浮点速度)。
    (3)SPEC基准程序(SPEC Benchmark)。重点面向处置惩罚器性能的基准程序集将被测盘算机的实行时间尺度化,即将被测盘算机的实行时间除以一个参考处置惩罚器的实行时间。
    (4)TPC基准程序。用于评测盘算机在变乱处置惩罚、数据库处置惩罚、企业管理与决策支持系统等方面的性能。此中,TPC-C是在线变乱处置惩罚(On-lineTransactionProcessing,OLTP)的基准程序,TPC-D是决策支持的基准程序。TPC-E作为大型企业信息服务的基准程序。 
1.3.3 信息安全



  • 信息安全含义及属性:保护信息的保密性、完备性、可用性,另外也包括其他属性,如:真实性、可核查性、不可抵赖性和可靠性。
  • 保密性:信息不被走漏给未授权的个人、实体和过程或不被其使用的特性包括:
    (1)最小授权原则
    (2)防袒露
    (3)信息加密
    (4)物理保密
  • 完备性:信息未经授权不能改变的特性。影响完备性的重要因素有设备故障误码、人为攻击和盘算机病毒等。包管完备性的方法包括:
    (1)协议:通过安全协议检测出被删除、失效、被修改的字段。
    (2)纠错编码方法:利用校验码完成检错和纠错功能。
    (3)密码校验和方法。
    (4)数字署名:能识别出发送方泉源。
    (5)公证:请求系统管理或中介机构证实信息的真实性。
  • 可用性:需要时,授权实体可以访问和使用的特性。一样平常用系统正常使用时间和整个工作时间之比来度量。
  • 其他属性:

    • 真实性:指对信息的泉源举行判定,能对伪造泉源的信息予以鉴别。
    • 可核查性:系统实体的行为可以被独一无二的追溯到该实体的特性,这个特性就是要求该实体对其行为负责,为探测和观察安全违规变乱提供了大概性。
    • 不可抵赖性:是指建立有用的责任机制,防止用户否认其行为,这一点在电子商务中是极其重要的。
    • 可靠性:系统在规定的时间和给定的条件下,无故障地完成规定功能的概率

  • 【安全需求】
    可分别为物理线路安全、网络安全、系统安全和应用安全;从各级安全需求字面上也可以理解:
    (1)物理线路就是物理设备如理环境;
    (2)网络安全指网络上的攻击、入侵;
    (3)系统安全指的是操作系统漏洞、补丁等;
    (4)应用安全就是上层的应用软件,包括数据库软件。
【对称加密技术】
数据的加密和解密的密钥 (密码) 是雷同的,属于不公开密钥加密算法。其缺点是加密强度不高 (由于密钥位数少)且密钥分发困难 (由于密钥还需要传输给接收方,也要考虑保密性等问题)。优点是加密速度快,适合加密大数据。


  • 常见的对称密钥加密算法如下:
    (1)DES:替换+移位、56位密钥、64位数据块、速度快,密钥易产生;
    (2)3DES:三重DES,两个56位密钥K1、K2。加密:K1加密->K2解密->K1加密,解密:K1解密->K2加密->K1解密;
    (3)AES:是美国联邦当局接纳的一种区块加密尺度,这个尺度用来替代原先的DES.对其的要求是“至少像3DES一样安全”;
    (4)RC-5:RSA数据安全公司的很多产品都使用了RC-5;
    (5)IDEA:128位密钥,64位数据块,比DES的加密性好,对盘算机功能要求相对低。
【非对称加密技术】
数据的加密和解密的密钥是差异的,分为公钥和私钥是公开密钥加密算法其缺点是加密速度慢。优点是安全性高,不容易破解。
非对称技术的原理是:发送者发送数据时,使用接收者的公钥作加密密钥私钥作解密密钥,这样只有接收者才气解密密文得到明文。安全性更高,由于无需传输密钥。但无法包管完备性。如下:


  • 常见的非对称加密算法如下RSA:512位(或1024位)密钥,盘算机量极大,难破解,Elgamal、ECC(圆曲线算法)、背包算法、Rabin、D-H等。
【对称密钥和非对称密钥的比较】
相比较可知,对称加密算法密钥一样平常只有56位,因此加密过程简朴,适合加密大数据,也因此加密强度不高,而非对称加密算法密钥有1024位,相应的解密盘算量巨大,难以破解,却不适合加密大数据,一样平常用来加密对称算法的密钥,这样,就将两个技术组合使用了,这也是数字信封的原理。
【数字信封原理】
信是对称加密的密钥,数字信封就是对此密钥举行非对称加密,具体过程:发送方将数据用对称密钥加密传输,而将对称密钥用接收方公钥加密发送给对方。接收方收到数字信封,用自己的私钥解密信封,取出对称密钥解密得原文。
数字信封运用了对称加密技术和非对称加密技术,本质是使用对称密钥加密数据,非对称密钥加密对称密钥,解决了对称密钥的传输问题。 
【信息择要】
所谓信息择要,就是一段数据的特征信息,当数据发生了改变,信息择要也会发生改变,发送方会将数据和信息择要一起传给接收方,接收方会根据接收到的数据重新生成一个信息择要,若此择要和接收到的择要雷同,则阐明数据准确。信息择要是由哈希函数生成的。
信息择要的特点:不算数据多长,都会产生固定长度的信息择要,任何差异的输入数据,都会产生差异的信息择要,单向性,即只能由数据生成信息择要不能由信息择要还原数据。
信息择要算法:MD5(产生128位的输出)、SHA-1(安全散列算法,产生160位的输出,安全性更高)
【数字署名】
唯一标识一个发送方发送者发送数据时,使用发送者的私钥举行加密,接收者收到数据后,只能使用发送者的公钥举行解密这样就能唯一确定发送方,这也是数字署名的过程但无法包管机密性。如下:

【公钥底子设施PKI】
是以不对称密钥加密技术为底子,以数据机密性、完备性身份认证和行为不可抵赖性为安全目的,来实施和提供安全服务的具有普适性的安全底子设施。
(1)数字证书:一个数据结构,是一种由一个可信任的权威机构签署的信息聚集。在差异的应用中有差异的证书。如X.509证书必须包罗下列信息:(1)版本号息;(2)序列号;(3)署名算法标识符; (4)认证机构;(5)有用限期;(6)主题信;(7)认证机构的数字署名;(8)公钥信息。
公钥证书重要用于确保公钥及其与用户绑定关系的安全。这个公钥就是证书所标识的那个主体的合法的公钥。任何一个用户只要知道签证机构的公钥,就能检查对证书的署名的合法性。如果检查准确,那么用户就可以信任那个证书所携带的公钥是真实的,而且这个公钥就是证书所标识的那个主体的合法的公钥例如驾照
(2)签证机构CA:负责签发证书、管理和撤销证书。是全部注册用户所信任的权威机构,CA在给用户签发证书时要加上自己的数字署名,以包管证书信息的真实性。任何机构可以用CA的公钥来验证该证书的合法性。 
第二章 程序语言底子知识

2.1 程序计划语言的基本概念



  • 程序计划语言是为了书写盘算机程序而人为计划的符号语言,用于对盘算过程举行描述、组织和推导。
  • 低级语言:呆板语言 (盘算机硬件只能识别o和1的指令序列),汇编语言
  • 高级语言:功能更强,抽象级别更高,与人们使用的自然语言比较接近。
  • 各程序计划语言特点:
    (1)Fortran语言:科学盘算,实行效率高
    (2)Pascal语言:为讲授开发,表达能力强
    (3)C语言:指针操作能力强,可以开发系统级软件,高效
    (4)C++语言:面向对象,高效。
    (5)Java语言:面向对象,中央代码,跨平台
    (6)C#语言:面向对象,中央代码,.Net框架
    (7)Python是一种面向对象、解释型盘算机程序计划语言
    (8)Prolog是逻辑型程序计划语言。
  • 汇编:将汇编语言翻译成目标程序实行。
  • 解释和编译:将高级语言翻译成目标程序实行。差异之处在于:
    (1)编译程序生成独立的可实行文件,直接运行,运行时无法控制源程序,效率高。
    (2)而解释程序不生成可实行文件,可以逐条解释实行,用于调试模式,可以控制源程序,由于还需要控制程序,因此实行速度慢,效率低。
  • 程序计划语言定义三要素::语法、语义、语用。
    (1)语法是指由程序计划语言的基本符号组成程序中的各个语法成分 (包括程序)的-组规则,此中由基本字符构成的符号 (单词)书写规则称为词法规则,由符号构成语法成分的规则称为语法规则。
    (2)语义是程序计划语言中按语法规则构成的各个语法成分的含义,可分为静态语义和动态语义。静态语义指编译时可以确定的语法成分的含义,而运行时刻才气确定的含义是动态语义。一个程序的实行结果阐明了该程序的语义,它取决于构成程序的各个组成部分的语义。
    (3)语用表示了构成语言的各个暗号和使用者的关系,涉及符号的泉源、使用和影响。
  • 语言的实现则有个语境问题。语境是指理解和实现程序计划语言的环境,包括编译环境和运行环境。
  • 程序计划语言的分类:
    (1)下令式和结构化程序计划语言,包括Fortran、PASCAL和C语言
    (2)面向对象程序计划语言,包括c++、JAVA和Smalltalk语言
    (3)函数式程序计划语言,包括LISP、Haskell、Scala、Scheme、APL等
    (4)逻辑型程序计划语言,包括PROLOG。
  • 程序计划语言的基本成分:
    (1)数据成分:指一种程序计划语言的数据和数据范例。数据分为常量(程序运行全局量 (存储空间在静态数据时不可改变)、变量(程序运行时可以改变)区分配)、局部量 (存储空间在堆栈区分配)数据范例有整型、字符型、双精度、单精度浮点型、布尔型等。
    (2)运算成分:指明允许使用的运算符号及运算规则。包括算术运算、逻辑运算关系运算、位运算等。
    (3)控制成分:指明语言允许表述的控制结构。包括次序结构、选择结构、构。
    (4)传输成分:指明语言允许的数据传输方式。如赋值处置惩罚、数据的输入输出等。
2.2 程序计划语言的基本成分



  • 函数:C程序由一个或多个函数组成,每个函数都有一个名字,此中有且仅有个名字为main的函数作为程序运行时的出发点。函数的使用涉及3个概念:函娄定义、函数声明和函数调用。
    函数的定义包括两部分:函数首部和函数体。函数的定义描述了函数做什么和怎么做。
  • 函数首部阐明了函数返回值的数据范例、函数的名字和函数运行时所需的参数及范例。函数所实现的功能在函数体部分举行描述。
  • 函数应该先声明后引用。如果程序中对一个函数的调用在该函数的定义之前举行,则应该在调用前对被调用函数举行声明。函数原型用于声明函数。函数声明的一样平常形式为:返回值范例函数名(参数范例表)。
  • 函数调用的一样平常形式为:函数名(实参表)
  • 函数调用时实参与形参间互换信息的方法有值调用和用调用两种
    (1)值调用 (Call by Value) :若实现函数调用时将实参的值传递给相应的形参,则称为是传值调用。在这种方式下形参不能向实参传递信息。在C语言中,要实现被调用函数对实参的修改,必须用指针作为参数。即调用时需要先对实参举行取地址运算,然后将实参的地址传递给指针形参。其本质上仍属于值调用。这种方式实现了间接内存访问。
    (2)引用调用 (Call by Reference):引用是C++中引入的概念,当形式参数为引用范例时,形参名实际上是实参的别名,函数中对形参的访问和修改实际上就是针对相应实参所做的访问和改变。
2.3 编译程序基本原理



  • 编译程序对高级语言源程序举行编译的过程中,要不断收集、记录和使用源程序中一些相干符号的范例和特征等信息,并将其存入符号表中,编译过程如下:
    (1)词法分析:是编译过程的第一个阶段。这个阶段的任务是从左到右一个字符一个字符地读入源程序,即对构成源程序的字符流举行扫描然后根据构词规则识别单词(也称单词符号或符号)。
    (2)语法分析:是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的底子大将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等语法分析程序判定源程序在结构上是否准确。
    (3)语义分析:是编译过程的一个逻辑阶段语义分析的任务是对结构上准确的源程序举行上下文有关性质的审查,举行范例审查。如范例匹配、除法除数不为0等。又分为静态语义错误 (在编译阶段能够查找出来)和动态语义错误 (只能在运行时发现)。



  •  中央代码和目标代码:中央代码是根据语义分析产生的,需要经过优化链接终极生成可实行的自标代码。引入中央代码的目的是举行与呆板无关的代码优化处置惩罚。常用的中央代码有后缀式(逆波兰式)三元式(三地址码)、四元式和树等形式。需要考虑三个问题(一是如何生成较短的目标代码;二是如何充分利用盘算机中的寄存器,减少目标代码访问存储单元的次数;三是如何充分利用盘算机指令系统的特点,以进步目标代码的质量)
  • 前缀表达式:+ab
  • 中缀表达式:a+b
  • 后缀表达式:ab+
  • 重要把握上述三种表达式即可,着实就是树的三种遍历,一样平常正常的表达式是中席遍历,即中缀表达式,根据其构造出树,再按题目要求求出前缀或后缀式。
  • 简朴求法:后缀表达式是从左到右开始,先把表达式加上括号,再依次把运算符加到本条理的括号后面。
第三章 数据结构与算法

3.1 数据结构

3.1.1 线性结构



  • 线性结构:每个元素最多只有一个出度和一个入度,表现为一条线状。线性表按存储方式分为次序表和链表。
  • 存储结构:

    • 次序存储:用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素物理上也相邻。
    • 链式存储:存储各数据元素的结点的地址并不要求是连续的,数据元素逻辑上相邻,物理上分开。

次序存储和链式存储的对好比下图所示 

(1)在空间方面:由于链表还需要存储指针,因此有空间浪费存在。
(2)在时间方面,当需要对元素举行破坏性操作 (插入、删除) 时,链表效率更高,由于其只需要修改指针指向即可,而次序表由于地址是连续的,当删除或插入一个元素后,后面的其他节点位置都需要变动。
(3)而当需要对元素举行不改变结构操作时(读取、查找),次序表效率更高由于其物理地址是连续的,如同数组一样平常只需按索引号就可快速定位,而链表需要重新节点开始,一个个的查找下去。


  • 栈和队列队列、栈结构如下图,队列是先辈先出,分队头和队尾栈是先辈后出,只有栈顶能收支。
  • 循环队列
    设循环队列Q的容量为MAXSIZE,初始时队列为空,且Qrear和Qfront都等于0;元素入队时修改队尾指针,即令Qrear=(Q.rear+1)%MAXSIZE;元素出队时修改队头指针,即令Qfront==(Qfront+1)%MAXSIZE
  • 根据队列操作的定义,当出队操作导致队列变为空时,有Qrear==Qfront;若入队操作导致队列满,则Qrear==Qfront。
  • 在队列空和队列满的情况下,循环队列的队头、队尾指针指向的位置是雷同的,此时仅仅根据Qrear和Qfront 之间的关系无法断定队列的状态。为了区别队空和队满的情况,可接纳以下两种处置惩罚方式:其一是设置一个标志,以区别头、尾指针的值雷同时队列是空还是满;其二是断送一个存储单元,约定以“队列的尾指针所指位置的下一个位置是队头指针时”表示队列满。
  • 字符串是一种特殊的线性表,其数据元素都为字符。

    • 空串:长度为0的字符串,没有任何字符。
    • 空格串:由一个或多个空格组成的串,空格是空白字符,占一个字符长度。
    • 子串:串中恣意长度的连续字符构成的序列称为子串。含有子串的串称为主串,空串是恣意串的子串。
    • 串的模式匹配:子串的定位操作,用于查找子串在主串中第一次出现的位置的算法。

【模式匹配算法】


  • 朴素的模式匹配算法:也称为布鲁特一福斯算法,其基本头脑是从主串的第1个字符起与模式串的第1个字符比较,若相等,则继续逐个字符举行后续的比较否则从主串中的第2个字符起与模式串的第1个字符重新比较,直至模式串中每个字符依次和主串中的一个连续的字符序列相等时为止,此时称为匹配成功,否则称为匹配失败。 
3.1.2 数组



  • 数组是定长线性表在维度上的扩展,即线性表中的元素又是一个线性表。N维数组是一种“同构”的数据结构,其每个数据元素范例雷同、结构一致。
  • 其可以表示为行向量形式或者列向量形式线性表,单个关系最多只有一个前驱和一个后继,本质还是线性的。
  • 数组结构的特点:数据元素数目固定,数据元素范例雷同;数据元素的下标关系具有上下界的约束且下标有序数
  • 组数据元素固定,一样平常不做插入和删除运算,适合于接纳次序结构
  • 数组存储地址的盘算,特别是二维数组,要注意理解,假设每个数组元素占用存储长度为len,起始地址为a,存储地址盘算如下(默认从0开始编号)
3.1.3 矩阵



  • 特殊矩阵:矩阵中的元素(或非0元素)的分布有定的规律。常见的特殊矩阵有对称矩阵、三角矩阵和对角矩阵
  • 稀疏矩阵:在一个矩阵中,若非零元素的个数远远少于零元素个数,且非零元素的分布没有规律。
  • 存储方式为三元组结构,即存储每个非零元素的(行列,值)。
3.1.4 树与二叉树



  • 树是n个节点的有限聚集(n>=0)当n=0时称为空树,在任一颗非空树中,有且仅有-个根节点。其余结点可分为m(m20)个互不相交的有限子集T1,T2,Tm,此中,每个Ti...又都是一棵树,而且称为根结点的子树。
  • 树的基本概念如下:
    (1)双亲、孩子和兄弟。结点的子树的根称为该结点的孩子,相应地,该结点称为其子结点的双亲。。具有雷同双亲的结点互为兄弟。
    (2)结点的度。一个结点的子树的个数记为该结点的度。例如A的度为3,B的度为2,C的度为0,D的度为1。
    (3)叶子结点。叶子结点也称为终端结点,指度为0的结点。例如,E、F、c、G都是叶子结点
    (4)内部结点。度不为0的结点,也称为分支结点或非终端结点。除根结点以外,分支结点也称为内部结点。例如,B、D都是内部结点。
    (5)结点的条理。根为第一层,根的孩子为第二层,依此类推,若某结点在第i层,则其孩子结点在第i+1层。例如,A在第1层,B、C、D在第2层,E、F和G在第3 层。
    (6)树的高度。一棵树的最大层数记为树的高度(或深度)。例如,图中所示树的高度为3
    (7)有序(无序)树。若将树中结点的各子树当作是从左到右具有次序的,即不能互换则称该树为有序树,否则称为无序树。



  • 二叉树是n个节点的有限聚集,它或者是空树或者是由一个根节点及两颗互不相交的且分别称为左有子村的一又村村所组成。



  • 二叉树有一些性质如下,要求把握,在实际测验中可以用特殊值法验证。
    (1)二叉树第i层 (i>=1) 上至多有2^(i-1)个节点。
    (2)深度为k的二叉树至多有2^k - 1个节点(k>=1)
    (3)对任何一棵二叉树,若其终端节点数为n0,度为2 的节点数为n2,则n0=n2 + 1。
    此公式可以画一个简朴的二叉树使用特殊值法快速验证,也可以证实如下设一棵二叉树上叶结点数为no,单分支结点数为n,,双分支结点数为n,则总结点数=n,+ni+n2。在一棵二叉树中,全部结点的分支数(即度数)应等于单分支结点数加上双分支结点数的2倍,即总的分支数=n,+2n。由于二叉树中除根结点以外每个结点都有唯一的一个分支指向它,因此二叉树中:总的分支数=总结点数-1。
    (4)具有n 个节点的完全二叉树的深度为|log2 nl+ 1 
  • 二叉树的次序存储结构:
    次序存储,就是用一组连续的存储单元存储二叉树中的节点,按照从上到下从左到右的次序依次存储每个节点。
  • 对于深度为k的完全二叉树,除第k层外,其余每层中节点数都是上一层的两倍,由此,从一个节点的编号可推知其双亲、左孩子、右孩子结点的编号。假设有编号为的节点,则有:
    (1)若i=1,则该节点为根节点,无双亲;
    (2)若i>1,则该节点的双亲节点为i/2。
    (3)若2i<=n,则该节点的左孩子编号为2i,否则无左孩子。
    (4)若2i + 1<=n,则该节点的右孩子编号为2i+1,否则无右孩子
  • 显然,次序存储结构对完全二叉树而言既简朴又节省空间,而对于一样平常二叉树则不适用。由于在次序存储结构中,以节点在存储单元中的位置来表示节点之间的关系,那么对于一样平常的二叉树来说,也必须按照完全二叉树的形式存储也就是要添上一些实际并不存在的“虚节点”,这将造成空间的浪费。
  • 二叉树的链式存储结构:
    由于二叉树中节点包罗有数据元素、左子树根、右子树根及双亲等信息,因此可以用三叉链表或二叉链表(即一个节点含有三个指针或两个指针)来存储二叉树,链表的头指针指向二叉树的根节点
  • 一颗非空的二叉树由根节点、左子树、右子树三部分组成,遍历这三部分也就遍历了整颗二叉树。这三部分遍历的基本次序是先左子树后右子树,但根节点次序可变,以根节点访问的次序为准有下列三种遍历方式:
    先序 (前序) 遍历: 根左右
    中序遍历: 左根右
    后序遍历: 左右根
    示例:前序:12457836 中序: 42785136 后序:48752631




  • 条理遍历:按条理,从上到下,从左到右
  • 反向构造二叉树
    仅仅有前序和后序是无法构造二叉树的,必须要是和中序遍历的聚集才气反向构造出二叉树。
    构造时,前序和后序遍历可以确定根节点,中序遍历用来确定根节点的左子树节点和右子树节点,而后按此方法举行递归,直至得出结果。
  • 引入线索二叉树是为了生存二叉树遍历时某节点的前驱节点和后继节点的信息,二叉树的链式存储只能获取到某节点的左孩子和右孩子结点,无法获取其遍历时的前驱和后继节点,因此可以在链式存储中再增长两个指针域,使其分别指向前驱和后继节点,但这样太浪费存储空间,考虑下述实现方法:
    (1)若n个节点的二叉树使用二叉链表存储,则一定有n+1个空指针域,利用这些空指针域来存放节点的前驱和后继节点信息,为此,需要增长两个标志,以区分指针域存放的到底是孩子结点还是遍历节点,如下:

    (2)若二又树的二叉链表接纳上述结构,则称为线索链表,此中指向前驱、后继节点的指针称为线索,加上线索的二叉树称为线索二叉树。
  • 最优二叉树又称为哈夫曼树,是一类带权路径长度最短的树,相干概念如下路径:

    • 树中一个结点到另一个结点之间的通路
    • 结点的路径长度:路径上的分支数目。
    • 树的路径长度:根节点到达每一个叶子节点之间的路径长度之和。
    • 权:节点代表的值结点的。
    • 带权路径长度:该结点到根结点之间的路径长度乘以该节点的权值
    • 树的带权路径长度(树的代价):树的全部叶子节点的带权路径长度之和

  • 哈夫曼树的求法: 给出一组权值,将此中两个最小的权值作为叶子节点,其和作为父节点,组成二叉树,而后删除这两个叶子节点权值,并将父节点的值添加到该组权值中。重复举行上述步骤,直至全部权值都被使用完。
  • 若需要构造哈夫曼编码 (要包管左节点值小于右节点的值,才是尺度的哈夫曼树),将尺度哈夫曼树的左分支设为0,右分支设为1,写出每个叶节点的编会发现,哈夫曼编码前缀差异,因此不会混淆,同时也是最优编码。
  • 查找二叉树上的每个节点都存储一个值,且每个节点的全部左孩子结点值都小于交节点值,而全部右孩子结点值都大于父节点值,是一个有规律分列的二叉树,这种数据结构可以方便查找、插入等数据操作。
  • 二叉排序树的查找效率取决于二叉排序树的深度,对于结点个数雷同的二叉排序树,均衡二叉树的深度最小,而单枝树的深度是最大的,故效率最差
  • 均衡二叉树又称为AVL 树,它或者是一棵空树,或者是具有下列性质的二又树它的左子树和右子树都是均衡二叉树,且左子树和右子树的高度之差的绝对值不超过1。若将二叉树结点的均衡因子 (Balance Factor,BF) 定义为该结点左子树的高度减去其右子树的高度,则均衡二叉树上全部结点的均衡因子只大概是-10和1。只要树上有一个结点的均衡因子的绝对值大于1,则该二叉树就是不均衡的。
3.1.5 图



  • 无向图:图的结点之间毗连线是没有箭头的,不分方向。
  • 有向图:图的结点之间毗连线是箭头,区分A到B,和B到A是两条线。
  • 完全图:无向完全图中,节点两两之间都有连线,n个结点的连线数为(n-1)+(n-2)+...+1= n*(n-1)/2;有完全图5b节点两两之间都有互通的两个箭头,个节点的连线数为n*(n-1)。
  • 度、出度和入度:极点的度是关联与该极点的边的数目。在有向图中,极点的度为出度和入度之和。
  • 路径:存在一条通路,可以从一个极点到达另一个极点。
  • 子图:有两个图G=(V, E)和G'=(V',E),如果 C VE'C E,则称G为G的子图。
  • 连通图和连通分量:针对无向图。若从极点v到极点u之间是有路径的,则阐明v和u之间是连通的,若无向图中恣意两个极点之间都是连通的,则称为连通图。无向图G的极大连通子图称为其连通分量。强连通图和强连通分量:针对有向图。若有向图恣意两个极点间都互相存在路径,即存在v到u,也存在u到v的路径,则称为强连通图。有向图中的极大连通子图称为其强连通分量。
  • 网:边带权值的图称为网
  • 图的存储:
    毗邻矩阵:假设一个图中有n个节点,!则使用n阶矩阵来存储这个图中各节点的关系,规则是若节点到节点有连线,!则矩阵Ri,j=1,否则为0,示例如下图所示



  • 毗邻链表:用到了两个数据结构,先用维数组将图中全部极点存储起来,而后,对此一维数组的每个极点元素,使用链表挂上其出度到达的结点的编号和权值,示例如下图所示:



  • 存储特点:图中的极点数决定了毗邻矩阵的阶和毗邻表中的单链表数目,边数的多少决定了单链表中的结点数,用毗邻矩阵存储。而不影响毗邻矩阵的规模,因此接纳何种存储方式与有向图、无向图没有区别,要看图的边数和极点数,完全图适合接纳毗邻矩阵存储。
  • 图的遍历是指从图的恣意节点出发,沿着某条搜索路径对图中全部节点举行访问且只访问一次,分为以下两种方式:
    (1)深度优先遍历:从任一极点出发,遍历到底,直至返回,再选取任一其他节点出发,重复这个过程直至遍历完备个图;
    (2)广度优先遍历: 先访问完一个极点的全部毗邻极点,而后再依次访问其毗邻极点的全部毗邻极点,雷同于条理遍历。



  • 图的最小生成树假设有n个节点,那么这个图的最小生成树有n-1条边 (不会形成环路,是树非图),这n-1条边应该会将全部极点都毗连成一个树,而且这些边的权值之和最小,因此称为最小生成树。共有下列两种算法:
    (1)普里姆算法:从恣意极点出发,找出与其毗邻的边权值最小的,此时此边的另外一个极点自动加入树聚集中,而后再从这这个树聚集的全部极点中找出与其毗邻的边权值最小的,同样此边的另外一个极点加入树聚集中,依次递归,直至图中全部极点都加入树聚集中,此时此树就是该图的最小生成树。普里姆算法的时间复杂度为o(n^2),与图中的边数无关,因此该算法适合于求边稠密的网的最小生成树。
    (2)克鲁斯卡尔算法:这个算法是从边出发的,由于本质是选取权值最(推荐)小的n-1条边,因此,就将边按权值巨细排序,依次选取权值最小的边,直至囊括全部节点,要注意每次选边后要检查不能形成环路。克鲁斯卡尔算法的时间复杂度为o(eloge),与图中的极点数无关,因此该算法适合于求边稀疏的网的最小生成树。



  • 拓扑序列:若图中一个节点入度为0,则应该最先实行此运动,而后删除掉此节点和其关联的有向边,再去找图中其他没有入度的结点,实行运动,依次举行,示例如下(有点雷同于历程的前趋图原理)
  • 工具与技术:
    关键路径法关键路径:是项目的最短工期,但却是从开始到结束时间最长的路径。进度网络图中大概有多条关键路径,由于运动会变革,因此关键路径也在不断变革中关键运动:关键路径上的运动,最早开始时间=最晚开始时间。通常,每个节点的运动会有如下几个时间:
    (1)最早开始时间 (ES)某项运动能够开始的最早时间
    (2)某项运动能够完成的最早时间。EF=ES+工期最早结束时间(EF)
    (3)最迟结束时间(LF)。为了使项目按时完成,某项运动必须完成的最迟时间。
    (4)最迟开始时间(LS)。为了使项目按时完成,某项运动必须开始的最迟时间。LS=LF-工期
  • 总浮动时间:在不延误项目竣工时间且不违背进度制约因素的条件下,运动可以从最早开始时间推迟或拖延的时间量,就是该运动的进度灵活性。正常情况下,关键运动的总浮动时间为零。
  • 总浮动时间=最迟开始LS-最早开始ES 或最迟完成LF-最早完成EF 或关键路径非关键路径时长。
  • 自由浮动时间:是指在不延误任何紧后运动的最早开始时间且不违背进度制约因素的条件下,运动可以从最早开始时间推迟或拖延的时间量。
  • 自由浮动时间=紧后运动最早开始时间的最小值-本运动的最早完成时间。
3.2 查找

3.2.1 次序查找



  • 次序查找的头脑:将待查找的关键字为key的元素重新到尾与表中元素举行比较,如果中央存在关键字为key的元素,则返回成功;否则,则查找失败。
  • 平均查找长度为

  • 时间复杂度为O(n)。
3.2.2 折半查找



  • 折半查找只适用于待查找序列中的元素是有序分列的情况。
  • 设查找表的元素存储在一维数组r[1..n]中,在表中元素已经按照关键字递增或递减)方式排序的情况下,举行折半查找的方法是:
    1、起首将待查元素的关键字 (key) 值与表r中央位置上 (下标为mid) 记录的关键字举行比较,若相等,则查找成功;
    2、若key>r[mid].key,则阐明待查记录只大概在后半个子表r[mid+1..n]中,下一步应在后半个子表中查找;
    3、若key<r[mid].key,阐明待查记录只大概在前半个子表rl1..mid-1]中,下一步应在r的前半个子表中查找;
    4、重复上述步骤,逐步缩小范围,直到查找成功或子表为空失败时为止。要注意两点:中央值位置求出若为小数,应该向下取整,即4.5=4,非四舍五入中央值已经比较过不相等,在分别下一次比较区间时,无需将中央值位置再纳入下一次比较区间。
  • 折半查找的时间复杂度为

3.2.3 哈希表



  • 哈希表通过一个以记录的关键字为自变量的函数 (称为哈希函数)得到该记录的存储地址,以是在哈希表中举行查找操作时,需要用同一哈希函数盘算得到待查记录的存储地址,然后到相应的存储单元去获得有关信息再判定查找是否成功。



  • 哈希函数产生了辩论的解决方法如下
    1.开放定址法: Hi=(H(key)+di) % m i=1,2,..., k(km - 1)此中,H(key)为哈希函数;m 为哈希表表长;di为增量序列常见的增量序列有以下3 种。
    (1) d =1,2,3,··,m-1,称为线性探测再散列;
    (2) 二次探测再散列;
    (3) d=伪随机数序列,称为随机探测再散列。
    2.链地址法。它在查找表的每一个记录中增长一个链域,链域中存放下一个具有雷同哈希函数值的记录的存储地址。利用链域,就把若千个发生辩论的记录链接在一个链表内。当链域的值为NULL时,表示已没有后继记录了。因此,对于发生辩论时的查找和插入操作就跟线性表一样了
    3.再哈希法: 在同义词发生地址辩论时盘算另一个哈希函数地址,直到辩论不再发生。这种方法不易产生聚集现象,但增长了盘算时间。
    4.建立一个公共溢出区。无论由哈希函数得到的哈希地址是什么,一旦发生辩论都填入到公共溢出区中
3.3 排序

3.3.1 直接插入排序



  • 要注意的是,条件条件是前i-1个元素是有序的第i个元素依次从第i-1个元素而后插入,插入位置及厥后往前比较,直到找到一个比第i个元素值小的元素的元素依次向后移动。
  • 当给出一队无序的元素时,起首,应该将第1个元素看做是一个有序的队列,而后从第2个元素起,按插入排序规则,依次与前面的元素举行比较,直到找到一个小于他的值,才插入。示例如下图所示:下图中,59依次向前比较,先和68比较,再和57比较,发现57比他小,才插入:

3.3.2 希尔排序



  • 希尔排序又称“缩小增量排序“是对直接插入排序方法的改进。
  • 希尔排序的基本头脑是:先将整个待排记录序列分割成若千子序列,然后分别举行直接插入排序,待整个序列中的记录基本有序时,再对全体记录举行一次直接插入。
  • 排序具体做法是:先取一个小于n 的整数d1作为第一个增量把文件的全部记录分成d1个组,将全部距离为d1 倍数的记录放在同一个组中,在各组内举行直接插入排序;然后取第二个增量d2(d2<d1),重复上述分组和排序工作,依此类推,直至所取的增量di=1(di < di-1< ...< d2<d1),即全部记录放在同一组举行直接插入排序为止。
  • 按上述,希尔排序实际是为了解决大数据的排序问题当待排序的数据很多时,使用直接插入排序效率很低,因此,采取分组的方法,使问题细化,可以进步效率,适用于多数据。

3.3.3 简朴选择排序



  • n个记录举行简朴选择排序的基本方法是: 通过n - i(1<=i<=n)次关键字之间的比较,从n - i +1个记录中选出关键字最小的记录,并和第i 个记录举行互换,当i等于n时全部记录有序分列。按上述,本质就是每次选择出最小的元素举行互换重要是选择比较过程互换过程只有一次。示例如下:

3.3.4 堆排序



  • 堆排序的基本头脑是:对一组待排序记录的关键字,起首按堆的定义排成一个序列(即建立初始堆),从而可以输出堆顶的最大关键字(对于大根堆而言),然后将剩余的关键字再调整成新堆,便得到次大的关键字,云云反复,直到全部关键字排成有序序列为止。
  • 为序列(55,60,40,10,80,65,15,5,75) 建立初始大根堆的过程如图所示



  • 由上图可知,起首将给出的数组按完全二叉树规则建立,而后,找到此完全又树的最后一个非叶子节点 (也即最后一颗子树),比较此非叶子节点和其两个孩子结点的巨细,若小,则与其孩子结点中最大的结点举行互换;依据此规则再去找倒数第二个非叶子节点;这是只有一层的情况,当涉及到多条理时又打破了之前的堆,因此,又要举行变更。
  • 建立初始堆后,开始排序,每次取走堆顶元素 (一定是最大的)而后将堆中最后一个元素移入堆顶,而后按照初始建堆中的方法与其孩子结点比较巨细依次向下判定互换成为一个新的堆,再取走堆顶元素,重复此过程。堆排序适用于在多个元素中找出前几名的方案计划,由于堆排序是选择排序而且选择出前几名的效率很高。

3.3.5 冒泡排序



  • n个记录举行冒泡排序的方法是:起首将第一个记录的关键字和第二个记录的关键字举行比较,若为逆序,则互换这两个记录的值,然后比较第二个记录和第三个记录的关键字依此类推,直至第n- 1个记录和第n 个记录的关键字比较过为止。上述过程称为一趟冒泡排序,其结果是关键字最大的记录被互换到第n 个记录的位置上。然后举行第二趟冒泡排序,对前n - 1个记录举行同样的操作,其结果是关键字次大的记录被互换到第n - 1个记录的位置上。最多举行n - 1 趟全部记录有序分列。若在某趟冒泡排序过程没有举行相邻位置的元素互换处置惩罚,则可结束排序过程。
  • 示例给的是从后往前排序,也是可以的,需要从最后两个元素开始举行比较,将较小的元素互换到前面去,依次举行比较互换。比较是为了互换,互换次数很多。区分冒泡排序和简朴选择排序。

3.3.6 快速排序



  • 快速排序是将n个记录分成两块,再递归,实际分成两块的方法如图所示:设定一个基准为57,设定两个指针high=1,low=n,从low指向的第n个元素开始,与基准值举行比较,若小于基准值,则与基准举行互换low--,此时,转而从high指向的第1个元素开始和基准值举行比较,若大于基准值,则和基准值举行互换此时,又转而从low一指向的值和基准举行比较,重复上述过程。
  • 要注意的是:每次都是和基准值举行比较,因此终极是以基准值为中央,将队列分成两块。只有当和基准值发生了互换,才变更high和low指针的计数,否则会不停low-下去
  • 上图中,终极以57为界,左边都是小于57的元素右边都是大于57的元素,完成一次快速排序,接着对两块再分别举行递归即可

3.3.7 归并排序



  • 所谓“归并”是将两个或两个以上的有序文件合并成为一个新的有序文件归并排序的一种实现方法是把一个有n 个记录的无序文件当作是由n 个长度为1的有序子文件组成的文件,然后举行两两归并,得到[n/21个长度为2或1的有序文件,再两两归并,云云重复,直至最后形成包罗n个记录的有序文件为止。这种反复将两个有序文件归并成一个有序文件的排序方法称为两路归并排序。要仔细理解上述过程,一样平常归并排序都是用来合并多个线性表的,对单列数据,二路归并排序可以对元素举行两两合并,示例如下!对第三次归并,将52与28比较,28小,放入新表头,52再与33比较,33放入新表,52再与72比较,52放入新表,57再与72比较,57放入新表.....

3.3.8 基数排序



  • 基数排序是基于多个关键字来举行多轮排序的,本质也是将问题细分,如图例子,分别按个位、十位、百位的巨细作为关键字举行了三轮排序,终极得出结果。
  • 基数排序是一种借助多关键字排序头脑对单逻辑关键字举行排序的方法。基数排序不是基于关键字比较的排序方法,它适合于元素很多而关键字较少的序列。基数的选择和关键字的分解是根据关键字的范例来决定的,例如关键字是十进制数,则按个位、十位来分解。
3.3.9 内部排序算法总结


  • 若待排序的记录数目n 较小,可接纳直接插入排序和简朴选择排序。由于直接插入排序所需的记录移动操作较简朴选择排序多,因此当记录自己信息量较大时,用简朴选择排序方法较好。
  • 若待排序记录按关键字基本有序,则宜接纳直接插入排序或冒泡排序
  • 当n 很大且关键字的位数较少时,接纳链式基数排序较好。
  • 若n 较大,则应接纳时间复杂度为o(nlogn)的排序方法,例如快速排序、堆排序或归并排序。

3.3.10 算法特性



  • 算法 (Algorithm)是对特定问题求解步骤的一种描述,它是指令的有限序列此中每一条指令表示一个或多个操作。此外,一个算法还具有下列5个重要特性:
    (1)有穷性一个算法必须总是(对任何合法的输入值)在实行有穷步之后结束且每一步都可在有穷时间内完成确定性。算法中的每一条指令必须有确切的含义,理解时不会产生二义性.
    (2)而且在任何条件下,算法只有唯一的一条实行路径,即对于雷同的输入只能得出雷同的输出。
    (3)可行性。一个算法是可行的,即算法中描述的操作都可以通过已经实现的基本运算实行有限次来实现。
    (4)输入。一个算法有零个或多个输入,这些输入取自于某个特定的对象的聚集.
    (5)输出。一个算法有一个或多个输出,这些输出是同输入有着某些特定关系的量。
第四章 操作系统知识

4.1 历程管理

4.1.1 操作系统概述



  • 操作系统定义:能有用地组织和管理系统中的各种软/硬件资源,合理地组织盘算机系统工作流程,控制程序的实行,而且向用户提供一个精良的工作环境和友爱的接口。
  • 操作系统有两个重要的作用:
    第一,通过资源管理进步盘算机系统的效率;
    第二,改善人机界面向用户提供友爱的工作环境。
  • 操作系统的4个特征是并发性、共享性、虚拟性和不确定性。
  • 操作系统的功能
    (1)历程管理。实质上是对处置惩罚机的实行“时间”举行管理接纳多道程序等技术将CPU的时间合理地分配给每个任务,重要包括历程控制.历程同步、历程通讯和历程调度。
    (2)文件管理。重要包括文件存储空间管理、目录管理、文件的读/写管理和存取控制。
    (3)存储管理。存储管理是对主存器“空间”举行管理,重要包括存储分配与接纳、存储保护、地址映射 (变更)和主存扩充。
    (4)设备管理。实质是对硬件设备的管理,包括对输入/输出设备的分配、启动、完成和接纳。
    (5)作业管理。包括任务、界面管理、人机交互、图形界面、语音控制和虚拟实际等。
  • 操作系统的分类:
    (1)批处置惩罚操作系统:单道批处置惩罚和多道批处置惩罚(主机与外设可并行)。
    (2)分时操作系统:一个盘算机系统与多个终端设备毗连。将CPU的工作时间分别为很多很短的时间片,轮番为各个终端的用户服务。
    (3)实时操作系统:实时是指盘算机对于外来信息能够以充足快的速度举行处置惩罚并在被控对象允许的时间范围内做出快速反应。实时系统对交互能力要求不高但要求可靠性有保障。
    (4)网络操作系统:是使联网盘算性能方便而有用地共享网络资源,为网络用户提供各种服务的软件和有关协议的聚集。三种模式:会合模式、客户端/服务器模式、对等模式。
    (5)分布式操作系统:分布式盘算机系统是由多个分散的盘算机经毗连而成的盘算机系统,系统中的盘算机无主、次之分,恣意两台盘算机可以通过通讯互换信息。
    (6)微型盘算机操作系统:简称微机操作系统,常用的有Windows、Mac os、LinuX。 
  • 嵌入式操作系统重要特点:
    (1)微型化。从性能和本钱角度考虑,希望占用的资源和系统代码量少,如内存少、字长短、运行速度有限、能源少(用微小型电池)
    (2)可定制。从减少本钱和收缩研发周期考虑,要求嵌入式操作系统能运行在差异的微处置惩罚器平台上,能针对硬件变革举行结构与功能上的配置,以满足差异应用需要。
    (3)实时性。嵌入式操作系统重要应用于过程控制、数据收罗、传输通讯、多媒体信息及关键要害范畴需要迅速相应的场所,以是对实时性要求较高。
    (4)可靠性。系统构件、模块和体系结构必须达到应有的可靠性,对关键要害应用还要提供容错和防故障措施。
    (5)易移植性。为了进步系统的易移植性,通常接纳硬件抽象层和板级支撑包的底层计划技术。
  • 嵌入式系统初始化过程按照自底向上、从硬件到软件的次序依次为:片级初始化>板级初始化>系统初始化。 
4.1.2 历程组成和状态



  • 历程的组成:历程控制块PCB(唯一标志)、程序(描述历程要做什么)、数据(存放历程实行时所需数据)。
  • 历程底子的状态是下左图中的三态图。需要纯熟把握左下图中的历程三态之间的转换。

 4.1.3 前趋图



  • 用来表示哪些任务可以并行实行,哪些任务之间有次序关系,具体如下图可知,ABC可以并行实行,但是必须AB C都实行完后,才气实行D,这就确定了两点:任务间的并行、任务间的先后次序。

4.1.4 历程同步与互斥



  • 临界资源:各历程间需要以互斥方式对其举行访问的资源。
  • 临界区:指历程中对临界资源实施操作的那段程序。本质是一段程序代码。
  • 互斥:某资源(即临界资源)在同一时间内只能由一个任务单独使用,使用时需要加锁,使用完后解锁才气被其他任务使用;如打印机。
  • 同步:多个任务可以并发实行,只不过有速度上的差异,在一定情况下停下等待,不存在资源是否单独或共享的问题;如自行车和汽车
  • 互斥信号量:对临界资源接纳互斥访问,使用互斥信号量后其他历程无法访问,初值为1。同步信号量:对共享资源的访问控制,初值一样平常是共享资源的数目
【PV操作】


  • P操作:申请资源,S=S-1,若S>=0,则实行P操作的历程继续实行;若S<0,则置该历程为壅闭状态(由于无可用资源)并将其插入壅闭队列。
  • V操作:释放资源,S=S+1,若S>0,则实行V操作的历程继续实行;若S<=0并将其插入停当队列(此时由于缺少资源被P操作则从壅闭状态叫醒一个历程,壅闭的历程可以继续实行),然后实行V操作的历程继续。



  • 经典问题:生产者和消费者的问题三个信号量:互斥信号量S0(仓库独立使用权),同步信号量S1(仓库空闲个数),同步信号量S2(仓库商品个数)

4.1.5 历程调度



  • 历程调度方式是指当有更高优先级的历程到来时如何分配CPU。分为可剥夺和不可剥夺两种,可剥夺指当有更高优先级历程到来时,强行将正在运行历程的CPU分配给高优先级历程;不可剥夺是指高优先级历程必须等待当前历程自动释放CPU。
  • 在某些操作系统中,一个作业从提交到完成需要经历高、中、低三级调度
    (1)高级调度。高级调度又称“长调度”“作业调度”或“接纳调度”,它决定处于输入池中的哪个后备作业可以调入主系统做好运行的准备,成为一个或一组停当历程。在系统中一个作业只需经过一次高级调度。
    (2)中级调度。中级调度又称“中程调度”或“对换调度”,它决定处于互换区中的哪个停当历程可以调入内存,以便直接参与对CPU的竞争。
    (3)低级调度。低级调度又称“短程调度”或“历程调度”它决定处于内存中的哪个停当历程可以占用CPU。低级调度是操作系统中最活跃、最重要的调度程序,对系统的影响很大。
  • 调度算法:
    (1)先来先服务FCFS:先到达的历程优先分配CPU。用于宏观调度。
    (2)时间片轮转:分配给每个历程CPU时间片,轮番使用CPU,每个历程时间片巨细雷同,很公平,用于微观调度优先级调度:每个历程都拥有一个优先级,优先级大的先分配CPU。
    (3)多级反馈调度:时间片轮转和优先级调度结合而成,设置多个停当队列1,2,3...n,每个队列分别赋予差异的优先级,分配差异的时间片长度;新历程先辈入队列1的末属,按FCFS原则,实行队列1的时间片:若未能实行完历程,则转入队列2的末尾,云云重复。
4.1.6 死锁



  • 当一个历程在等待永远不大概发生的变乱时,就会产存亡锁,若系统中有多个历程处于死锁状态,就会造成系统死锁。
  • 死锁产生的四个须要条件: 资源互斥、每个历程占据资源并等待其他资源系统不能剥夺历程资源、历程资源图是一个环路。
  • 死锁产生后解决措施是打破四大条件,有下列方法:
    (1)死锁防备接纳某种战略限定并发历程对于资源的请求,破坏死锁产生的四个条件之一使系统任何时刻都不满足死锁的条件。
    (2)死锁克制一样平常接纳银行家算法来克制,银行家算法,就是提前盘算出一条不会死锁的资源分配方法,才分配资源,否则不分配资源,相当于借贷,考虑对方还得起才借钱,提前考虑好以后,就可以克制死锁。
    (3)死锁检测:允许死锁产生,但系统定时运行一个检测死锁的程序,若检测到系统中发存亡锁,则设法加以解除。
    (4)死锁解除:即死锁发生后的解除方法,如强制剥夺资源,撤销历程等。
  • 死锁资源盘算:系统内有n个历程,每个历程都需要R个资源,那么其发存亡锁的最大资源数为n*(R-1)。其不发存亡锁的最小资源数为n*(R-1)+1。
4.1.7 线程



  • 传统的历程有两个属性:可拥有资源的独立单元;可独立调度和分配的基本单元。
  • 引入线程的原因是历程在创建、撤销和切换中,系统必须为之付出较大的时空开销,故在系统中设置的历程数目不宜过多,历程切换的频率不宜太高,这就限定了并发水平的进步。引入线程后,将传统历程的两个基本属性分开,线程作为调度和分配的基本单元,历程作为独立分配资源的单元。。用户可以通过创建线程来完成任务,以减少程序并发实行时付出的时空开销。
  • 线程是历程中的一个实体,是被系统独立分配和调度的基本单元。线程基本上不拥有资源,只拥有一点运行中必不可少的资源(如程序计数器、一组寄存器和栈),它可与同属一个历程的其他线程共享历程所拥有的全部资源,例如历程的公共数据、全局变量、代码、文件等资源,但不能共享线程独有的资源如线程的栈指针等标识数据。
4.2 存储管理

4.2.1 分区存储管理



  • 所谓分区存储组织,就是整存,将某历程运行所需的内存整体一起分配给它然后再实行。有三种分区方式:固定分区:静态分区方法,将主存分为若千个固定的分区,将要运行的作业装配进去,由于分区固定,巨细和作业需要的巨细差异,会产生内部碎片
  • 可变分区:动态分方法,主存空间的分区是在作业转入时分别,正好分别为作业需要的巨细,这样就不存在内部碎片,但容易将整片主存空间切割成很多块,会产生外部碎片。可变分区的算法如下系统分配内存的算法有很多,如下图所示,根据分配前的内存情况,还需要分配9K空间,对差异算法的结果介绍如下:
  • 可重定位分区可以解决碎片问题,移动全部已经分配好的区域,使其成为个连续的区域,这样其他外部细小的分区碎片可以合并为大的分区,满足作业要求。只在外部作业请求空间得不到满足时举行。
4.2.3 分页存储管理



  • 逻辑页分为页号和页本地址,页本地址就是物理偏移地址,而页号与物理块号并非按序对应的,需要查询页表,才气得知页号对应的物理块号,再用物理块号加上偏移地址才得出了真正运行时的物理地址。
    优点:利用率高,碎片小,分配及管理简朴
    缺点:增长了系统开销,大概产生抖动现象。



  • 页面置换算法:
    (1)最优算法:OPT,理论上的算法无法实现,是在历程实行完后举行的最佳效率盘算,用来让其他算法比较差距。原理是选择将来最长时间内不被访问的页面置换,这样可以包管将来实行的都是马上要访问的。
    (2)先辈先出算法:FIFO,先调入内存的页先被置换淘汰,会产生抖动现象,即分配的页数越多,缺页率大概越多(即效率越低)
    (3)最近最少使用:LRU,在最近的过去,历程实行过程中,过去最少使用的页面被置换淘汰,,根据局部性原理,这种方式效率高,且不会产生抖动现象,使用大量计数器但是没有LFU多
    (4)淘汰原则:优先淘汰最近未访问的,而后淘汰最近未被修改的页面
【快表】


  • 是一块小容量的相联存储器,由快速存储器组成,按内容访问,速度快,而且可以从硬件上包管按内容并行查找,一样平常用来存放当前访问最频繁的少数运动页面的页号。
  • 快表是将页表存于cache中;慢表是将页表存于内存上。慢表需要访问两次内存才气取出页,而快表是访问一次cache和一次内存,因此更快。
4.2.4 分段存储管理



  • 将历程空间分为一个个段,每段也有段号和段本地址,与页式存储差异的是每段物理巨细差异,分段是根据逻辑整体分段的,因此,段表也与页表的内容差异,页表中直接是逻辑页号对应物理块号,而下图所示,段表有段长和基址两个属性,才气确定一个逻辑段在物理段中的位置。
     
4.2.5 段页式存储管理



  • 对历程空间先分段,后分页,具体原理图和优缺点如下!优点:空间浪费小、存储共享容易、存储保护容易、能动态链接缺点:由于管理软件的增长,复杂性和开销也随之增长,需要的硬件以及占用的内容也有所增长,使得实行速度大大降落

4.3 设备管理

4.3.1 设备管理概述



  • 设备是盘算机系统与外界交互的工具,具体负责盘算机与外部的输入/输出工作以是常称为外部设备(简称外设)。在盘算机系统中,将负责管理设备和输入/输出的机构称为I/0系统。因此,i/0 系统由设备、控制器、通道(具有通道的盘算I0 设香机系统)、总线和I/0 软件组成。
  • 设备的分类:
    (1)按数据组织分类:块设备、字符设备;
    (2)按照设备功能分类:输入设备、输出设备、存储设备、网络联网设备、供电设备;
    (3)源分副角度分类:独占设备资共享设备和虚拟设备;
    (4)数据传输速率分类:低速设备、中速设备、高速设备。
  • 设备管理的任务是包管在多道程序环境下,当多个历程竞争使用设备时,按定的战略分配和管理各种设备,控制设备的各种操作,完成//0 设备与主存之间的数据互换。
  • 设备管理的重要功能是动态地把握并记录设备的状态、设备分配和释放、缓冲区管理、实现物理1/0 设备的操作、提供设备使用的用户接口及设备的访问和控制
4.3.2 I/0软件



  • I/O设备管理软件的全部条理及每一层功能如下图:
    实例:当用户程序试图读一个硬盘文件时,需要通过操作系统实现这一操作与设备无关软件检查高速缓存中有无要读的数据块,若没有,则调用设备驱动程序,向i/0 硬件发出一个请求。然后,用户历程壅闭并等待磁盘操作的完成当磁盘操作完成时,硬件产生一个制止,转入制止处置惩罚程序。制止处置惩罚程序检查制止的原因,熟悉到这时磁盘读取操作已经完成,于是叫醒用户历程取回从磁盘读取的信息,从而结束此次I/0 请求。用户历程在得到了所需的硬盘文件内容之,后继续运行。

4.3.3 设备管理技术



  • 一台独占设备,在同一时间只能由一个历程使用,其他历程只能等待,且不知道什么时间打印机空闲,此时,极大的浪费了外设的工作效率。
  • 引入SPOOLING (外围设备联机操作)技术,就是在外设上建立两个数据缓冲区,分别称为输入井和输出井,这样,无论多少历程,都可以共用这一台打印机,只需要将打印下令发出,数据就会排队存储在缓冲区中,打印机会自动按次序打印,实现了物理外设的共享,使得每个历程都感觉在使用一个打印机,这就是物理设备的虚拟化。如下图所示

4.4 文件管理

4.4.1 文件管理概述



  • 文件是具有符号名的、在逻辑上具有完备意义的一组相干信息项的聚集。
  • 信息项是构成文件内容的基本单元,可以是一个字符,也可以是一个记录记录可以等长,也可以不等长。一个文件包括文件体和文件阐明。文件体是文件真实的内容。文件阐明是操作系统为了管理文件所用到的信息,包括文件名文件内部标识文件的范例、文件存储地址、文件的长度、访问权限、建立时间和访问时间等。
  • 文件管理系统,就是操作系统中实现文件统一管理的一组软件和相干数据的聚集,专门负责管理和存取文件信息的软件机构,简称文件系统。文件系统的功能包括按名存取;统一的用户接口;并发访问和控制;安全性控制;优化性能;差错恢复。
  • 文件的范例:
    (1)按文件性质和用途可将文件分为系统文件、库文件和用户文件;
    (2)按信息生存限期分类可将文件分为暂时文件、档案文件和永久文件;
    (3)按文件的保护方式分类可将文件分为只读文件、读/写文件、可实行文件和不保护文件;(4) UNIX 系统将文件分为平凡文件、目录文件和设备文件 (特殊文件)。
  • 文件的逻辑结构可分为两大类:有结构的记录式文件;无结构的流式文件
  • 文件的物理结构是指文件在物理存储设备上的存放方法,包括:
    (1)连续结构。连续结构也称次序结构,它将逻辑上连续的文件信息 (如记录)依次存放在连续编号的物理块上。
    (2)链接结构。链接结构也称串联结构,它是将逻辑上连续的文件信息 (如记录)存放在不连续的物理块上,每个物理块设有一个指针指向下一个物理块。
    (3)索引结构。将逻辑上连续的文件信息 (如记录)存放在不连续的物理块中系统为每个文件建立一张索引表。索引表记录了文件信息所在的逻辑块号对应的物理块号,并将索引表的起始地址放在与文件对应的文件目录项中。
    (4)多个物理块的索引表。索引表是在文件创建时由系统自动建立的,并与文件一起存放在同一文件卷上。根据一个文件巨细的差异,其索引表占用物理块的个数不等,一样平常占一个或几个物理块。 
4.4.2 索引文件结构



  • 如图所示,系统中有13个索引节点,0-9为直接索引,即每个索引节点存放的是内容,假设每个物理盘巨细为4KB,共可存4KB*10=40KB数据;
  • 10号索引节点为一级间接索引节点,巨细为4KB,存放的并非直接数据,而是链接到直接物理盘块的地址,假设每个地址占4B,则共有1024个地址,对应1024个物理盘,可存1024*4KB=4096KB数据。
  • 二级索引节点雷同,直接盘存放一级地址,一级地址再存放物理盘快地址,而后链接到存放数据的物理盘块,容量又扩大了一个数目级,为1024*1024*4KB数据。

4.4.3 文件目录



  • 文件控制块中包罗以下三类信息:基本信息类、存取控制信息类和使用信息类。
    (1)基本信息类。例如文件名、文件的物理地址、文件长度和文件块数等。
    (2)存取控制信息类。文件的存取权限,像UNIX 用户分成文件主、同组用户和一样平常用户三类,这三类用户的读/写实行RWX权限。
    (3)使用信息类。文件建立日期、最后一次修改日期、最后一次访问的日期、当前使用的信息(如打开文件的历程数在文件上的等待队列)等。
  • 文件控制块的有序聚集称为文件目录
  • 相对路径:是从当前路径开始的路径
    绝对路径:是从根目录开始的路径。
    全文件名=绝对路径+文件名。要注意,绝对路径和相对路径是不加最后的文件名的,只是单纯的路径序列。

4.4.4 文件存储空间管理



  • 文件的存取方法是指读/写文件存储器上的一个物理块的方法。通常有次序存取和随机存取两种方法。次序存取片法是指对文件中的信息按次序依次举行读写;随机存取方法是指对文件中的信息可以按恣意的次序随机地读/写
  • 文件存储空间的管理:
    (1)空闲区表。将外存空间上的一个连续的未分配区域称为“空闲区”。操作系统为磁盘外存上的全部空闲区建立一张空闲表,每个表项对应一个空闲区适用于连续文件结构。
    (2)位示这种方法是在外存上建立一张位示图(Bitmap),记录文件存储每一位对应文件存储器上的一个物理块,取值0 和1 分别表示空闲和暂用。
    (3)空闲块链。每个空闲物理块中有指向下-个空闲物理块的指针,全部空闲物理块构成一个链表,链表的头指针放在文件存储器的特定位置上(如管理块中),不需要磁盘分配表,节省空间。
    (4)成组链接法。例如,在实现时系统将空闲块分成若干组,每100个空闲块为一组,每组的第一个空闲块登记了下一组空闲块的物理盘块号和空闲块总数如果某个组的第一个空闲块号等于0,意味着该组是最后一组,无下一组空闲块。
第五章 盘算机网络 

5.1 网络功能和分类



  • 盘算机网络是盘算机技术与通讯技术相结合的产物,它实现了远程通讯、远程信息处置惩罚和资源共享。
  • 盘算机网络的功能:数据通讯、资源共享、负载均衡、高可靠性。



  • 总线型(利用率低、干扰大、价格低)、星型(互换机形成的局域网、中央单元负荷大)、环型(流动方向固定、效率低扩充难)、树型(总线型的扩充、分级结构)、分布式(恣意节点毗连管理难本钱高)

5.2 OSI七层模子


5.3 TCP/IP协议



  • 网络协议三要素:语法、语义、时序。此中语法部分规定传输数据的格式,语义部分规定所要完成的功能,时序部分规定实行各种操作的条件、次序关系等。



  • 网络层协议:

    • IP:网络层最重要的焦点协议,在源地址和目的地址之间传送数据报,无毗连、不可靠。
    • ICMP:因特网控制报文协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络自己的消息。
    • ARP和RARP:地址剖析协议,ARP是将IP地址转换为物理地址,RARP是将物理地址转换为IP地址。
    • IGMP:网络组管理协议,允许因特网中的盘算机参加多播,是盘算机用做向相邻多目路由器报告多目组成员的协议,支持组播。

  • 传输层协议:

    • TCP:整个TCP/IP协议族中最重要的协议之一,在IP协议提供的不可靠数据数据底子上,接纳了重发技术,为应用程序提供了一个可靠的、面向毗连的、全双工的数据传输服务。一样平常用于传输数据量比较少,且对可靠性要求高的场所。
    • UDP:是一种不可靠、无毗连的协议,有助于进步传输速率,一样平常用于传输数据量大,对可靠性要求不高,但要求速度快的场所。

  • 应用层协议:基于TCP的FTP、HTTP等都是可靠传输。基于UDP的DHCP、DNS等都是不可靠传输。

    • FTP:可靠的文件传输协议,用于因特网上的控制文件的双向传输。
    • HTTP:超文本传输协议,用于从WWW服务器传输超文本到本地欣赏器的传输协议。使用SSL加密后的安全网页协议为HTTPS。
    • SMTP和POP3:简朴邮件传输协议,是一组用于由源地址到目的地址传送邮件的规则,邮件报文接纳ASCII格式表示。
    • Telnet:远程毗连协议,是因特网远程登录服务的尺度协媾和重要方式。
    • TFTP:不可靠的、开销不大的小文件传输协议。
    • SNMP:简朴网络管理协议,由一组网络管理的尺度协议,包罗一个应用层协议、数据库模子和一组资源对象。该协议能够支持网络管理系统,泳衣监测毗连到网络上的设备是否有任何引起管理师行关注的情况。
    • DHCP:动态主机配置协议,基于UDP,基于C/S模子,为主机动态分配IP地址,有三种方式:固定分配、动态分配、自动分配。
    • DNS:域名剖析协议,通过域名剖析出IP地址


5.4 传输介质



  • 双绞线:将多根铜线按规则缠绕在一起,能够减少扰:分为无屏蔽双绞线UTP和屏蔽双绞线STP,都是由一对铜线族组成。也即我们常说的网线: 双绞线的传输距离在100m以内。
  • 无屏蔽双绞线UTP:价格低,安装简朴,但可靠性相对较低,分为CAT3(3类UTP,速率为10Mbps)、CAT4(4类UTP,与3类差不多,无应用)、CAT5(5类UTP,速率为100Mbps,用于快速以太网)、CAT5E(超5类UTP,速率为1000Mbps)、CAT6 (6类UTP,用来替代CAT5E,速率也是1000Mbps)
  • 屏蔽双绞线STP:比之UTP增长了一层屏蔽层,可以有用的进步可靠性,但对应的价格高,安装贫苦,一样平常用于对传输可靠性要求很高的场所。
  • 网线有如下两种安装尺度:都是八根差异颜色的网线按照差异的次序排序,插入水晶头中区分在第1236四根网线的位置差异。
  • 光纤:由纤芯和包层组成,传输的光信号在纤芯中传输,然而从PC端出来的信号都是电信号,要经过光纤传输的话,就必须将电信号转换为光信号。
  • 多模光纤MMF:纤芯半径较大,因此可以同时传输多种差异的信号,光信号在光纤中以全反射的形式传输,接纳发光二极管LED为光源,本钱低,但是传输的效率和可靠性都较低,适合于短距离传输其传输距离与传输速率相干,速率为100Mbps时为2KM,速率为1000Mbps时为550m。
  • 单模光纤SMF:纤芯半径很小,一样平常只能传输一种信号,接纳激光二极管LD作为光源,而且只支持激光信号的传播,同样是以全反射形式传播,只不过反射角很大,看起来像一条直线,本钱高,但是传输距离远,可靠性高。传输距离可达5KM。
5.5 通讯方式和互换方式



  • 通讯方向:数据通讯是指发送方发送数据到接收方,这个传输过程可以分类如下:
    单工:只能由设备A发给设备B,即数据流只能单向流动。
    半双工:设备A和设备B可以互相通讯,但是同一时刻数据流只能单向流动。
    全双工:设备A和设备B在恣意时刻都能互相通讯。
  • 同步方式
    异步传输:发送方每发送一个字符,需要约定一个起始位和制止位插入到字符的起始和结尾处这样当接收方接收到该字符时能够识别,但是这样会造成资源浪费,传输效率低落。
    同步传输:以数据块为单元举行传输,当发送方要发送数据时,先发送一个同步帧,接收方收到后做好接收准备,开始接收数据块,结束后又会有结束帧确认,这样一次传输一个数据块,效率高。
  • 串行传输:只有一根数据线,数据只能1bit挨个排队传送,适合低速设备、远距离的传送,般用于广域网中。
  • 并行传输:有多根数据线,可以同时传输多个bit数据,适合高速设备的传送,常用语盘算机内部各硬件模块之间。 
5.6 IP地址



  • 呆板中存放的IP地址是32位的二进制代码,每隔8位插入一个空格,可进步可读性,为了便于理解和设置,一样平常会接纳点分十进制方法来表示:将32位二进制代码每8位二进制转换成十进制,就变成了4个十进制数,而后在每个十进制数间隔中插入。
  • 由于每个十进制数都是由8个二进制数转换而来,因此每个十进制数的取值范围为0-255(把握二进制转十进制的快速盘算方法,牢记2的幂指数值,实现快速转换)
  • 分类IP地址:IP地址分四段,每段八位,共32位二进制数组成在逻辑上,这32位IP地址分为网络号和主机号,依据网络号位数的差异,可以将P地址分为以下几类:



  • 今无分类编址:即不按照A B C类规则,自动规定网络号,无分类编址格式为:IP地址/网络号,示例:128.168.0.11/20表示的1P地址为128.168.0.11,其网络号占20位,因此主机号占32-20=12位,也可以分别子网。
  • 公有地址:通过它直接访问因特网。是全网唯一的IP地址。
    私有地址:属于非注册地址,专门为组织机构内部使用,不能直接访问因特网,下表所示为私有地址范围。



  •  其他特殊地址如下表所示:




  • 子网分别一样平常公司在申请网络时,会直接获得一个范围很大的网络,如一个B类地址,由于主机数之间相差的太大了,倒霉于分配,我们一样平常接纳子网分别的方法来分别网络,即自定义网络号位数,就能自定义主机号位数,就能根据主机个数来分别出最适合的方案,不会造成资源的浪费。
  • 因此就有子网的概念,一样平常的IP地址按尺度分别为ABC类后,可以举行再一步的分别,将主机号拿出几位作为子网号,就可以分别出多个子网,此时IP地址组成为: 网络号+子网号+主机号。
  • 子网掩码网络号和子网号都为1,主机号都为0,这样的地址为子网掩码。
  • 要注意的是:子网号可以为全0和全1,主机号不能为全0或全1,因此,主机数需要-2,而子网数不用。
  • 还可以聚合网络为超网,就是分别子网的逆过程,将网络号取出几位作为主机号,此时,这个网络内的主机数目就变多了,成为一个更大的网络。 
5.7 IPv6



  • 重要是为了解决IPv4地址数不敷用的情况而提出的计划方案,IPv6具有以下特性::
    (1)Pv6地址长度为128位,地址空间增大了2^96倍;
    (2)灵活的IP报文头部格式,使用一系列固定格式的扩展头部取代了IPv4中可变长度的选项字段。IPv6中选项部分的出现方式也有所变革,使路由器可以简朴撸过选项而不做任那边置惩罚,加快了报文处置惩罚速度;
    (3)IPv6简化了报文头部格式,加快报文转发;
    (4)进步了吞吐量;进步安全性,身份认证和隐私权是IPv6的关键特性;
    (5)支持更多的服务范例;
    (6)允许协议继续演变,增长新的功能,使之顺应将来技术的发展。
  • IPv4和IPv6的过渡期间,重要接纳三种基本技术:
    (1)双协议栈:主机同时运行IPv4和1Pv6两套协议栈,同时支持两套协议,一样平常来说IPv4和IPv6地址之间存在某种转换关系,如IPv6的低32位可以直接转换为IPv4地址,实现互相通讯。(2)隧道技术:这种机制用来在Pv4网络之上建立一条能够传输PV6数据报的陈道,例如可以将IPv6数据报当做IPv4数据报的数据部分加以封装,只需要加一个IPv4的首部,就能在IPv4网络中传输IPV6报。
    (3)翻译技术:利用一台专门的翻译设备(如转换网关),在纯IP4和纯IPV6网络之间转换IP报头的地址,同时根据协议差异对分组做相应的语义翻译,从而使纯IPv4和纯IPv6站点之间能够透明通讯。
5.8 网络规划和计划



  • 三层模子将网络分别为焦点层、汇聚层和接入层,每一层都有着特定的作用。
  • 焦点层提供差异区域之间的最佳路由和高速数据传送;
  • 汇聚层将网络业务毗连到接入层,而且实施与安全、流量、负载和路由相干的战略
  • 接入层为用户提供了在本地网段访问应用系统的能力,还要解决相邻用户之间的互访需要,接入层要负责一些用户信息(例如用户IP地址、MAC地址和访问 日志等)的收集工作和用户管理功能(包括认证和计费等)



  •  修建物综合布线系统PDS:
    (1)工作区子系统:实现工作区终端设备到水平子系统的信息插座之间的互联。
    (2)水平布线子系统然实现管息插和管理子系统之间的毗连。
    (3)设备间子系统:实现中央主配线架与各种差异设备之间的毗连。
    (4)垂直干线子系统:实现各楼层设备间子系统之间的互连。
    (5)管理子系统:毗连各楼层水平布线子系统和垂直干缆线,负责毗连控制其他子系统为毗连其他子系统提供毗连本事。
    (6)修建群子系统:各个修建物通讯系统之间的互联
5.9 其他考点补充



  • 网络地址翻译NAT:公司内有很多电脑,在公司局域网内可以互联通讯,但是要访问外部因特网时,只提供固定的少量IP地址能够访问因特网,将公司全部电脑这个大的地址聚集映射到能够访问因特网的少量IP地址聚集的过程就称为NAT。很明显,使用了NAT后,一个公司只有少量固定IP地址可以上网,大大减少了IP地址的使用量。
  • 默认网关:一台主机可以有多个网关。默认网关的意思是一台主机如果找不到可用的网关,就把数据包发给默认指定的网关,由这个网关来处置惩罚数据包。现在主机使用的网关,一样平常指的是默认网关。默认网关的IP地址必须与本机IP地址在同一个网段内,即同网络号。
  • 虚拟局域网VLAN:是一组逻辑上的设备和用户,这些设备和用户并不受物理位置的限定,可以根据功能、部门及应用等因素将它们组织起来,相互之间的通讯就似乎它们在同一个网段中一样。
  • VLAN工作在0SI参考模子的第2层和第3层,一个VLAN就是一个广播域,VLAN之间的通讯是通过第3层的路由器来完成的。
  • 与传统的局域网技术相比较,VLAN技术更加灵活,它具有以下优点: 网络设备的移动、添加和修改的管理开销减少;可以控制广播运动;可进步网络的安全性。
  • 虚拟专用网VPN是在公用网络上建立专用网络的技术。其之以是称为虚拟网,重要是由于整个VPN网络的恣意两个节点之间的毗连并没有传统专网所需的端到端的物理链路,而是架构在公用网络服务商所提供的网络平台,如Internet、ATM(异步传输模式》、Frame Relay (中继)等之上的逻辑网络,用户数据在逻辑链路中传输。
  • PPP:安全认证介绍PP的NCP可以承载多种协议的三层数据包。PPP使用LCP控制多种链路的参数(建立、认证、压缩、回拨)。PPP的认证范例:pap认证是通过二次握手建立认证(明文不加密),chap挑衅握手认证协议通过三次握手建立认证(密文接纳MD5加密)。PPP的双向验证,接纳的是chap的主验证风格。PPP的加固验证,接纳的是两种 (pap,chap)验证同时使用
  • 辩论域和广播域:路由器可以阻断广播域和辩论域,互换机只能阻断辩论域,因此一个路由器下可以分别多个广播域和多个辩论域:一个互换机下整体是一个广播域,但可以分别多个辩论域:而物理层设备集线器下整体作为一个辩论域和一个广播域。 
5.10 网络安全技术

【防火墙】


  • 防火墙是在内部网络和外部因特网之间增长的一道安全防护措施,分为网络级防火墙和应用级防火墙。
  • 网络级防火墙条理低,但是效率高,由于其使用包过滤和状态监测本事,般只检验网络包外在(起始地址、状态)属性是否异常,若异常,则过滤掉不与内网通讯,因此对应用和用户是透明的。
  • 但是这样的问题是,如果遇到伪装的危险数据包就没办法过滤,此时,就要依靠应用级防火墙,条理高,效率低,由于应用级防火墙会将网络包拆开,具体检查内里的数据是否有问题,会斲丧大量时间,造成效率低下,但是安全强度高。
【入侵检测】


  • 入侵检测系统IDS防火墙技术重要是分隔来自外网的威胁,却对来自内网的直接攻击无能为力此时就要用到入侵检测IDS技术,位于防火墙之后的第二道屏障,作为防火墙技术的补充。
  • 原理:监控当前系统/用户行为,使用入侵检测分析引擎举行分析,这里包罗个知识库系统,囊括了汗青行为、特定行为模式等操作,将当前行为和知识库举行匹配,就能检测出当前行为是否是入侵行为,如果是入侵,则记录证据并上报给系统和防火墙,交由它们处置惩罚
  • 差异于防火墙,IDS入侵检测系统是一个监听设备,没有跨接在任何链路上无须网络流量流经它便可以工作。因此,对IDS的部署,唯一的要求是: DS应当挂接在全部所关注流量都必须流经的链路上。因此,IDS在互换式网络中的位置般选择在: (1)尽大概靠近攻击源 (2) 尽大概靠近受保护资源 
【入侵防御】


  • 入侵防御系统IPSIDS和防火墙技术都是在入侵行为已经发生后所做的检测和分析,而iPS是能够提前发现入侵行为,在其还没有进入安全网络之前就防御。在安全网络之前的链路上挂载入侵防御系统IPS,可以实时检测入侵行为,并直接举行阻断,这是与IDS的区别,要注意。
  • 杀毒软件用于检测和解决盘算机病毒,与防火墙和IDS要区分,盘算机病毒要靠杀毒软件防火墙是处置惩罚网络上的非法攻击。
  • 蜜罐系统:伪造一个蜜罐网络引诱黑客攻击蜜罐网络被攻击不影响安全网络,,而且可以借此了解黑客攻击的本事和原理,从而对安全系统举行升级和优化 
  • 网络攻击和威胁

【盘算机病毒和木马】


  • 病毒:编制或者在盘算机程序中插入的破坏盘算机功能或者破坏数据,影响盘算机使用而且能够自我复制的一组盘算机指令或者程序代码。
  • 木马:是一种后门程序,常被黑客用作控制远程盘算机的工具,隐蔽在被控制电脑上的一个小程序监控电脑一切操作并盗取信息。
  • 代表性病毒实例:
    蠕虫病毒(感染EXE文件):熊猫烧香,罗密欧与朱丽叶,恶鹰,尼姆达,冲击波,欢乐时光。
    木马Q消息尾巴木马,特洛伊木马,x卧底。
    宏病毒(感染word、excel等文件中的宏变量):美丽沙,台湾1号
    CIH病毒:史上唯一破坏硬件的病毒。
    赤色代码:蠕虫病毒+木马。
5.11 网络安全协议

物理层重要使用物理本事,隔离、屏蔽物理设备等,其它层都是靠协议来包管传输的安全,具体如下图所示:



  • SSL协议:安全套接字协议,被计划为加强Web安全传输(HTTP/HTTPS/)的协议安全性高,和HTTP结合之后,形成HTTPS安全协议,端口号为443。
  • SSH协议:安全外壳协议,被计划为加强Telnet/FTP安全的传输协议。
  • SET协议:安全电子生意业务协议重要应用于B2C模式(电子商务) 中保障支付信息的安全性。SET协议自己比较复杂,计划比较严格,安全性高,它能包管信息传输的机密性、真实性、完备性和不能否认性。SET协议是PKI架下的一个典型实现,同时也在不断升级和完善,如SET20将支持借记卡电子生意业务。
  • Kerberos协议:是一种网络身份认证协议该协议的底子是基于信任第三方它提供了在开放型网络中举行身份认证的方法,认证实体可以是用户也可以是用户服务。这种认证不依靠宿主机的操作系统或盘算机的IP地址,不需要包管网络上全部盘算机的物理安全性,而且假定命据包在传输中可被随机窃取和算改。
  • PGP协议:使用RSA公证书举行身份认证,使用IDEA (128位密)举行数据加密,使用MD5举行数据完备性验证。发送方A有三个密钥:A的私钥、B的公A成的一次性对称密接收方B有两个密钥:B的私钥、A的公钥。

第六章 数据库技术底子

6.1 基本概念

6.1.1 关于数据的基本概念



  • 数据:是数据库中存储的基本对象,是描述事物的符号记录数据的种类:文本、图形、图像、音频、视频、学生的档案记录、货品的运输情况等。
  • 数据库(DB):是恒久存储在盘算机内、有组织的、可共享的大量数据的聚集。
    数据库的基本特征:数据按一定的数据模子组织、描述和存储,可为各种用户共享,几余度较小;数据独立性较高;易扩展。
  • 数据库管理系统DBMS:是位于用户与操作系统之间的一层数据管理软件,用于科学地获取、组织、存储和维护数据,是一个大型复杂的软件系统。
  • 数据库系统(DBS)是盘算机系统中引入数据库后的系统构成。
    数据库库系统的构成:数据库;硬件平台;软件 (应用程序) ;数据库管理员。
6.1.2 数据库管理系统的功能


DBMS的组成部分:
● 数据定义语言DDL及编译处置惩罚程序
● 数据操纵语言DML及其编译程序
● 数据库运行控制程序
● 实用程序 
DBMS的重要功能:
● 数据定义
● 数据操纵
● 数据库运行管理
● 数据组织、存储和管理
● 数据库的建立和维护
● 数据通讯接口
● 数据控制功能
数据控制功能 
(1)数据的安全性(Security) 保护保护数据,以防止不合法的使用造成的数据的泄密和破坏。
(2)数据的完备性(Integrity)检查将数据控制在有用的范围内,或包管数据之间满足一定的关系。
(3)并发(Concurrency)控制对多用户的并发操作加以控制和调和,防止相互干扰而得到错误的结果。
(4)数据库恢复(Recovery) 将数据库从错误状态恢复到某一已知的准确状态
6.1.3 数据各个发展阶段的特点


6.1.4 数据库系统的体系结构



  • 从数据库应用开发职员或数据库管理系统的角度看(内部体系结构): 数据库接纳三级模式结构,是数据库系统的内部的系统结构,外模式、模式、内模式
  • 从数据库终极用户角度看(外部体系结构):
    (1)会合式:数据、数据管理、功能应用、用户接口到DBMS焦点都会合在DBMS所在的盘算机上。
    (2)分布式数据库系统是数据库系统和盘算机网络相结合的产物。是针对面向地理上分散,而管理上又需要差异水平会合管理的需求而提出的一种数据管理信息系统。
    (3)客户-服务器结构:一个处置惩罚机(客户端)的请求被送到另一个处置惩罚机(服务器上实行。
    (4)并行式:使用相毗连的多个CPU和多个磁盘举行并行操作,进步数据处置惩罚和I/O速度。
    (5)数据库技术是盘算机处置惩罚与数据存储最有用、最成功的技术,而Web技术的特点是资源共享,因此数据与资源共享这两种技术的结合即形成了今天广泛应用的IWeh数据库(即网络数据库)
6.2 数据模子

6.2.1 三级模式两级映像



  • 模式(概念模式、逻辑模式):就是我们通常使用的表这个级别;是数据库中全体数据的逻辑结构和特征的描述,是全部用户的公共数据视图,综合了全部用户的需求;一个数据库只有一个模式。如公司的全部员工管理信息系统。
  • 外模式(子模式、用户模式):对应数据库中的视图这个级别;是数据库用户 (包括应用程序员和终极用户使用的局部数据的逻辑结构和特征的描述,数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。员工管理员和薪酬管理员关注的差异方面。介于模式与应用之间,可以有多个外模式,通常是模式的子集;反映了差异的用户的应用需求外模式的用途:包管数据库安全性的一个有力措施每个用户只能看见和访问所对应的外模式中的数据。
  • 内模式《存储模式):管理如何存储物理的数据,是数据物理结构和存储方式的描述,是数据在数据库内部的表示方法;一个数据库只有一个内模式。 

【三个级别】
● 用户级数据库:对应于外模式,是用户看到和使用的数据库,又称用户视图,一个数据库可有多个差异的用户视图;
● 概念级数据库:对应于概念模式,是全部用户视图的最小并集,一个数据库应用系统只有一个DBA视图。
● 物理级数据库:对应于内模式,是数据库的底层表示,它描述数据的实际存储组织,是最接近于物理存储的,又称为内部视图。
6.2.2 数据模子_模子分类

数据模子,实际世界的模拟,对实际世界中的概念举行抽象、表示和处置惩罚(对数据举行描述、组织和操作)的工具。数据模子是数据库系统的焦点和底子。
● 概念模子(信息模子):按用户的观点来对数据和信息建模,通常用ER图举行描述,用于数据库计划。与盘算机无关。
● 逻辑模子:按盘算机系统的观点对数据建模,用于DBMS实现。重要包括:网状模子、条理模子、关系模子、面向对象模子等。与盘算机有关
● 物理模子:是对数据最底层的抽象,描述数据在系统内部的表示方式和存取方法。与盘算机有关。
6.2.3 数据模子_组成要素



  • 实体完备性:实体完备性是指实体的主属性不能取空值。实体完备性规则规定实体的全部主属性都不能为空。
  • 参照完备性:在关系数据库中重要是外键参照的完备性。
  • 用户定义完备性:用户定义完备性是针对某一个具体关系的约束条件。

6.2.4 概念模子中的基本概念



  • 实体型之间的接洽:E-R图(实体-关系图)
    概念模子用于信息世界的建模是数据库计划的有力工具,也是数据库计划职员和用户之间举行交流的语言,重要通过E-R图举行描述。

(1)实体(Entity):客观存在并可相互区别的事物称为实体。可以是具体的人、事、物或抽象的概念客观实体:人、课桌、书籍......
抽象实体:账户、贷款......
(2)属性(Attribute):实体所具有的某一特性称为属性。一个实体可以由若干个属性来描画如员工实体由员工编号、姓名、年事、职务、部门......
(3)码(Key):标识实体的属性集称为码。
(4)域(Domain):属性的取值范围称为该属性的域
(5)实体型(Entity Type):用实体名及其属性名聚集来抽象和描画同类实体称为实体型


  • 属性的分类
    ● 简朴属性:原子的、不可再分的。
    ● 复合属性:可细分为多个属性部分,如name有first name和last name。或者家庭地址:北京市向阳区望京街道
    ● 单值属性:定义的属性对于一个特定的实体都只有单独的一个值。
    ● 多值属性:一个属性大概对应一组值。如员工的电话号码:每个员工就大概有0、1或多个与之相对应。
    ● NULL属性:当实体在某个属性上没有值或属性值未知时,使用NULL值。
    ● 派生属性:这类属性的值可以从别的相干属性或实体中派生(盘算出来)
【概念模子-E-R图-接洽(2个实体)】


  • 一对一接洽(1:1)定义:如果对于实体集A中的每一个实体,实体集B中至多有一个(也可以没有)实体与之接洽,反之亦然,则称实体集A与实体集B具有一对一接洽,记为1:1。
  • 一对多接洽(1:n)定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n20)与之接洽,反之,对于实体集B中的每一个实体,实体集A中至多只有一个实体与之接洽,则称实体集A与实体集B有一对多接洽,记为1:n。
  • 多对多接洽(m:n)定义:如果对于实体集A中的每一个实体,实体集B中有n个实体(n20)与之接洽,反之,对于实体集B中的每一个实体,实体集A中也有m个实体(m20)与之接洽,则称实体集A与实体B具有多对多接洽,记为m:n。

6.2.5 数据模子



  • 条理模子(Hierarchical Model)
  • 网状模子(Network Model)
  • 关系模子(Relational Model)
  • 面向对象模子(Object Oriented Model)
  • 对象关系模子(Object Relational Model)
条理模子用树形结构来表示各类实体以及实体间的接洽条理模子只能表示1:n接洽,不能表示mn接洽。条理模子中的术语:根结点,双亲结点,兄弟结点,叶结点。条理模子两个基本条件:有且只有一个结点没有双亲结点,这个结点称为根结点;根以外的其它结点有且只有一个双亲结点。
关系数据库系统接纳关系模子作为数据的组织方式,以关系代数为数据底子,数据用二维表表示。大多数数据库均为关系数据模子。优点:建立在严格的数学概念底子上;概念单一、结构简朴、清晰,用户易懂易用,存取路径对用户透明从而数据独立性、安全性好,简化数据库开发工作。缺点:由于存取路径透明,查询效率每每不如非关系数据模子。 
● 关系:一个关系对应一张表(Relation);
● 元组(Tuple):表中的一行即为一个元组;
● 属性(Attribute):表中的一列即为一个属性;
● 主码(Key):唯一确定一个元组属性聚集;
● 域(Domain):属性的取值范围;
● 分量:元组中的一个属性值;
● 关系模式:对关系的描述基本形式,关系名 (属性1,属性2,...,属性n)示例:学生(学号,姓名,年事,性别,系,年级);
● 关系的规范化理论-属性的原子性,即属性是不可再分,表中不再包罗表同一关系中属性唯一性;
● 关系中元组唯一性关系中元组的有限性;
● 关系中元组次序无关紧急;
● 关系中属性次序无关紧急
6.3 数据存储与查询



  • 存储管理器在数据库系统中负责在数据库中存储的低层数据与应用程序以及向系统提交的查询之间提供接口的部件,负责数据库中数据的存储、检索和更新。存储管理器部件包括以下四个:
    (1)权限及完备性管理器:检察访问数据库的用户权限,检测数据是否满足完备性约束;
    (2)变乱管理器:包管一旦发生故障,数据库的一致性状态,以及并发变乱实行时不发生辩论(3)文件管理器:管理磁盘存储空间的分配。
    (4)缓冲区管理器:负责将数据从硬盘放入内存,并决定哪些数据应被缓冲区放入内存
  • 查询处置惩罚器其组件包括:
    DDL解释器:解释DDL语句并将其放入数据字典中;
    DML编译器:将查询语言中的DML语句翻译为一个盘算方案,包括一系列查询盘算引擎能理解的下令。
6.4 数据仓库与数据挖掘底子知识 

6.4.1 数据仓库



  • 数据仓库四大特点:
    (1)面向主题:按照一定的主题域举行组织的;
    (2)集成的:数据仓库中的数据是在对原有分散的数据库数据抽取、清理的底子上经过系统加工、汇总和整理得到的,必须消除源数据中的不一致性,以包管数据仓库内的信息是关于整个企业的一致的全局信息。
    (3)相对稳定的:数据仓库的数据重要供企业决策分析之用所涉及的数据操作重要是数据查询,一旦某个数据进入数据仓库以后,一样平常情况下将被恒久保存,也就是数据仓库中一样平常有大量的查询操作,但修改和删除操作很少通常只需要定期的加载、刷新。
    (4)反映汗青变革:数据仓库中的数据通常包罗汗青信息系统记录了企业从过去某一时点(如开始应用数据仓库的时点)到目前的各个阶段的信息,通过这些信息,可以对企业的发展历程和将来趋势做出定量分析和预测。

6.4.2 数据挖掘 



  • 概念:是从大量数据中发现并提取隐蔽在内的,人们事先不知道的但大概有用的信息和知识的一种新技术。
  • 目的:资助决策者探求数据间潜伏的关联,发现经营者被忽略的要素。
  • 数据挖掘技术涉及数据库技术、人工智能技术、呆板学习、统计分析等多种技术。
  • 数据挖掘和传统分析方法的区别:数据挖掘是在没有明确假设的条件下去挖掘信息,发现知识。其得到的信息应具有事先未知、有用和可实用3个特征。
  • 数据挖掘的应用过程:确定挖掘对象-准备数据-建立模子-数据挖掘-结果分析-知识应用。
数据挖掘分析方法:
(1)关联分析:关联分析重要用于发现差异变乱之间的关联性,即一个变乱发生的同时,另一个变乱也经常发牛。
(2)序列分析:序列分析重要用于发现一定时间间隔内接连发生的变乱,这些变乱构成一个序列,发现的序列应该具有广泛意义。
(3)分类分析:分类分析通太过析具有类别的样本特点,得到决定样本属于各种类别的规则或方法。分类分析时起首为每个记录赋予一个标记(一组具有差异特征的类别),即按标记分类记录,然后检查这些标定的记录,描述出这些记录的特征。
(4)聚类分析:聚类分析是根据“物以类聚”的原理,将自己没有类别的样本聚集成差异的组,而且对每个这样的组举行描述的过程。
数据挖掘算法(了解分类即可) :
● EM:在概率模子中探求参数最大似然估计的算法;
● Apriori:先验算法是关联规则学习的经典算法之一;
● K-means:是非监督学习中的聚类算法;
● SVM:中文名为支持向量机,是常见的一种鉴别方法。在呆板学习范畴,是一个有监督的学习模子,通常用来举行模式识别、分类以及回归分析;
● 决策树:典型的分类算法。 
6.4.3 贸易智能BI

BI系统重要包括数据预处置惩罚、数据分析和数据显现四个重要阶段建立数据仓库。


  • 数据预处置惩罚是整合企业原始数据的第一步,它包括数据的抽取(Extraction)、转换(Transformation)和加载(Load)三个过程(ETL过程);
  • 建立数据仓库则是处置惩罚海量数据的底子;
  • 数据分析是体现系统智能的关键,一样平常接纳联机分析处置惩罚(OLAP)和数据挖掘两大技术。联机分析理不但举行数据汇总/聚集,同时还提供切片、切块、下钻、上卷和旋转等数据分析功能,用户可以便地对海量数据举行多维分析。数据挖掘的目标则是挖掘数据背后隐蔽的知识,通过关联分析、聚和分类等方法建立分析模子,预测企业将来发展趋势和将要面临的问题;
  • 数据据显现:在海量数据和分析本事增多的情况下,数据显现则重要保障系统分析结果的可视化。
第七章 关系数据库

7.1 关系数据库概述



  • 关系模子接纳单一的数据结构一关系,来表示实际世界的实体以及实体间的接洽,对应的逻辑结构为二维表。
  • 候选码(Candidate Key):若关系中的某一属性或属性组的值能唯一标识一个元组,则称该属性或属性组为候选码。
  • 主码(Primary Key):或称主键,若一个关系有多个候选码,则选定此中一个为主码。
  • 主属性(Primeattribute):包罗在任何候选码中的属性称为主属性。不包罗在任何候选码中的属性称为非主属性(NonPrime attribute)
  • 外码(Foreignkey):如果关系模式R中的属性或属性组非该关系的码,但它是其他关系的码,那么该属性集对关系模式R而言是外码。
  • 全码(AIl-key):关系模子的全部属性组是这个关系模式的候选码,称为全码。
7.2 关系代数





  • 并:结果是两张表中全部记录数合并,雷同记录只显示一次;
  • 交:结果是对长表中雷同的过录;
  • 差:S1- S2 结果是S1表中有,而S2表中没有的那些记录。



  • 笛卡尔积:S1*S2,产生的结果包括S1和S2的全部属性列,而且S1中每条记录依次和S2中全部记录组合成一条记录,终极属性列为S1+S2属性列,记录数为S1*S2记录数;
  • 投影:实际是按条件选择某关系模式中的某列,列也可以用数字表示;
  • 选择:实际是按条件选择某关系模式中的某条记录。



  • 自然毗连的结果显示全部的属性列,但是雷同属性列只显示一次,显示两个关系模式中属性雷同且值雷同的记录设有关系R、S如下左图所示,自然毗连结果如下右图所示:



  • 一样平常毗连(
    毗连)和等值毗连:先做笛卡尔积,在其底子上满足毗连条件,如下图分别是选取RS笛卡尔积后条件第C行小于第E的数据,R的第B行等于S的第B行数据



  • 全外毗连(FULLOUTERJOIN):关系RS举行自然毗连时,把舍弃的元组也生存在结果关系中,在其他表的属性上填NULL。
  • 左外毗连(LEFTOUTERJOIN):关系RS举行自然毗连时,只把左边关系R中要舍弃的元组保存。
  • 右外毗连:关系RS举行自然毗连时,只把右边关系S中要舍弃的元组保存


7.3 元组演算与域演算

把数理逻辑的谓词演算引入到关系运算中,就可得到以关系演算为底子的运算关系演算又可分为:
● 元组关系演算(元组演算):以元组为变量
● 域关系演算(域演算):以属性(域)为变量
7.4 查询优化

【选择操作的实现】


  • 查询方法:
    简朴的全表扫描方法:对查询的基本表次序扫描,逐一检查每个元组是否满足选择条件,把满足条件的元组作为结果输出。
    对于小表,这种方法简朴有用;对于大表,次序扫描十分费时,效率低。
  • 优化方法:索引(或散列)扫描方法:如果选择条件中的属性上有索引(如hash索引),用索引扫描法通过索引先找到满足条件的元组主键或元组指针,再通过元组指针直接在查询的基本表中找到元组。
【毗连操作的实现】
毗连操作是查询处置惩罚中最耗时的操作之一。


  • 查询方法:
    嵌套循环方法:对外层循环R的每一个元组,检索内层循环S中的每一个元组,并检查这两个元组在毗连属性sno上是否相等,如果满足毗连条件,则串接后作为结果输出,直到双重循环结束。
  • 优化方法:
    排序-合并方法:适合毗连的各表已经有序的情况,步骤为:
    (1)先给各表排序;
    (2)取R表中第一个sno,依次扫描S表中具有雷同sno的元组把它们毗连起来;
    (3)当扫描到sno不雷同的第一个元组时,返回到R表扫描其下一个元组,再用其下一个元组去S表中查找雷同sno的元组,重复这个过程。
  • 查询优化的目标:选择有用战略,求得给定关系表达式的值,使得查询代价最小。
  • 优化准则:
    (1)提早实行选择运算,目的是减少中央结果
    (2)合并乘积与选择运算为毗连运算,目的是克制扫描大的关系
    (3)将投影运算与其他运算同时举行,目的是克制重复扫描关系
    (4)将投影运算与二目运算结合起来,目的是减少扫描关系的次数
    (5)在实行毗连前对关系得当的预处置惩罚,如索引毗连法、排序合并法存储公共子表达式,目的是只需检索中央结果,不需重复盘算。
  • 效率问题
    关系代数运算的效率,归根结底是看参与运算的两张表格的属性列数和记录数属性列和记录数越少,参与运算的次数自然越少,效率就越高。
7.5 关系数据库计划 



  • 给定一个X,能唯一确定一个Y,就称X确定Y,或者说Y依靠于x,例如Y=X*X函数。
  • 函数依靠又可扩展以下两种规则:
    (1)部分函数依靠:A可确定C,(A,B)也可确定C,(A,B)中的一部分 (即A) 可以确定C,称为部分函数依靠。
    (2)传递函数依靠:当A和B不等价时,A可确定B,B可确定C,则A可确定C,是传递函数依靠;若A和B等价,则不存在传递,直接就可确定C。



  • 函数依靠的公理系统(Armstrong)设关系模式R<U,F>U是关系模式R的属性全集,F是关系模式R的一个函数依靠集。对于R<U,F>来说有以下的:

 【几个比较重要的概念】


  • 超键:能唯一标识此表的属性的组合;
  • 侯选键:超键中去掉冗余的属性,剩余的属性就是候选键;
  • 主键:任选一个候选键,即可作为主键;
  • 外键:其他表中的主键;
  • 主属性:候选键内的属性为主属性,其他属性为非主属性;
  • 实体完备性约束:即主键约束,主键值不能为空,也不能重复;
  • 参照完备性约束:即外键约束,外键必须是其他表中已经存在的主键的值或者为空;
  • 用户自定义完备性约束:自定义表达式约束,如设定年事属性的值必须在0到150之间。
【第一范式1NF】
● 关系中的每一个分量必须是一个不可分的数据项。通俗地说,第一范式就是表中不允许有小表的存在。好比,对于如下的员工表,就不属于第一范式:

实例:用一个单一的关系模式学生来描述学校的教务系统学生(学号,学生姓名,系号,系主任姓名课程号,成绩)依靠关系(学号->学生姓名,学号->系号,系号->系主任姓名,学号->课程号,(学号,课程号) ->成绩)

【第二范式】
● 如果关系R属于1NF,且每一个非主属性完全函数依靠于任何一个候选码,则R属于2NF。通俗地说,2NF就是在1NF的底子上,表中的每一个非主属性不会依靠复合主键中的某一个列。按照定义,上面的学生表就不满足2NF,由于学号不能完全确定课程号和成绩(每个学生可以选多门课)。
将学生表分解为:
● 学生(学号,学生姓名,系编号,系名,系主任)
● 选课(学号,课程号,成绩)
● 每张表均属于2NF。 
第二范式消除了非主属性对主属性的部分函数依靠
【第三范式】
● 在满足1NF的底子上,表中不存在非主属性对码的传递依靠;
继续上面的实例,学生关系模式就不属于3NF,由于学生无法直接决定系主任和系名,是由学号->系编号,再由系编号->系主任,系编号->系名,因此存在非主属性对主属性的传递依靠
将学生表进一步分解为:
学生(学号,学生姓名,系编号)
系(系编号,系名,系主任)
选课(学号,课程号,成绩)
每张表都属于3NF。
【BC范式BCNF】
是指在第三范式的底子上进一步消除主属性对于码的部分函数依靠和传递依靠。通俗的来说,就是在每一种情况下,每一个依靠的左边决定因素都一定包罗候选律,如下:



  • 上图中,候选键有两种情况:组合键(S,T)或者(S,J),依靠集为(SJ-T,T一可知,STJ三个属性都是主属性,因此其达到了3NF(无非主属性),然而,第二种情况,即(SJ)为候选键的时间,对于依靠T->J,T在这种情况不是候选键,即T-J的决定因素不包罗恣意候选码,因此上图不是BCNF。
  • 要使上图关系模式转换为BCNF也很简朴,只需要将依靠T->J变为TS->J即可这样其左边决定因素就包罗了候选键之一S 
7.6 模式分解



  • 范式之间的转换一样平常都是通过拆分属性,即模式分解,将具有部分函数依靠和传递依靠的属性分离出来,来达到一步步优化,一样平常分为以下两种:
    (1)保持函数依靠分解对于关系模式R,有依靠集F,若对R举行分解,分解出来的多个关系模式,保持原来的依靠集稳定,则为保持函数依靠的分解。另外,注意要消除掉冗余依靠(如传递依靠)
    ● 实例:设原关系模式R(A,B,C),依靠集F(A->B,B-C,A-C),将其分解为两个关系模式R1(A,B)和R2(B,C),此时R1中保持依靠A->B,R2保持依靠B->C,阐明分解后的R1和R2是保持函数依靠的分解,由于A->C这个函数依靠实际是一个几余依靠,可以由前两个依靠传递得到,因此不需要管。
  • 无损分解:分解后的关系模式能够还原出原关系模式,就是无损分解,不能还原就是有损。
  • 当分解为两个关系模式,可以通过以下定理判定是否无损分解定理:如果R的分解为p=R1,R2),F为R所满足的函数依靠聚集,分解p具有无损毗连性的充分须要条件是R1nR2->(R1-R2)或者R1nR2->(R2-R1)。
  • 当分解为三个及以上关系模式时,可以通过表格法求解,如下

第八章 数据库SQL语言

8.1 SQL语言概述



  • 数据定义语言DDL:数据结构定义与数据库对象定义的语言,由create、alter、drop三个语法组成。
  • 数据操纵语言DML: 实现对数据库的基本操作,包罗select、update、insert、delete等语法。
  • 数据库语言的分类
    ● 作为独立语言使用;
    ● 嵌入到高级语言中使用:嵌入式SQL、宿主语言。
  • SQL由以下几个部分组成:
    (1)数据定义语言。SQL DDL提供定义关系模式和视图、删除关系和视图修改关系模式的下令。
    (2)交互式数据操纵语言。SQLDML 提供查询、插入、删除和修改的下令。
    (3)变乱控制。SQL 提供定义变乱开始和结束的下令。
    (4)嵌入式SQL和动态SQL。用于嵌入到某种通用的高级语言(C、C+ +、JavaPL/l、COBOL和VB等)中混合编程。此中,SQL负责操纵数据库,高级语言负责控制程序流程。
    (5)完备性。SQLDDL 包括定义数据库中的数据必须满足的完备性约束条件的下令,对于破坏完备性约束条件的更新将被克制。
    (6)权限管理。SQLDDL 中包括阐明对关系和视图的访问权限。
8.2 数据库定义


8.2.1 创建表(create table)

CREATE TABLE<表名>(<列名><数据范例>[列级完备性约束条件]
                                   [,<列名><数据范例>[列级完备性约束条件]]...
[,<表级完备性约束条件>]) ;

● 列级完备性约束条件有 NULL (空)和UNTQUE(取值唯一)。
● 表级完备性约束条件有 primary key 和 foreign key 等。

  1. create table stu(sno int not null unique,
  2.                  sex char(6),
  3.                  departnum int,
  4.                  sname char(10),
  5.                  primary key(sno),
  6.                  foreign key(departnum) references depart (departnum));
复制代码
8.2.2 修改表 (alter table)

ALTER TABLE<表名>[ADD<新列名<数据范例>[完备性约束条件]]
[DROP<完备性约束名>]
[MODIFY<列名><数据范例>]; 

  1. alter table stu add telephone char(11);
  2. alter table stu modify sno char(6);
复制代码
8.2.3 删除表 (drop table)

DROP TABLE <表名>
  1. drop table stu;
复制代码
8.2.4 索引

【索引的作用】
(1)通过创建唯一索引,可以包管数据记录的唯一性。
(2)可以大大加快数据检索速度。
(3)可以加速表与表之间的毗连,这一点在实现数据的参照完备性方面有特别的意义。
(4)在使用ORDERBY和GROUP BY子句中举行检索数据时,可以明显减少查中分组和排序的时间。
(5)使用索引可以在检索数据的过程中使用优化隐蔽器,进步系统性能。


  • 索引分为聚集索引和非聚集索引。聚集索引是指索引表中索引项的次序与表中记录的物理次序一致的索引。
创建索引
CREATE  [UNIQUE] [CLUSTER] INDEX <索引名>ON<表名>(<列名>[<次序>][,<列名>[次序>]]... ) ;
● 次序:可选ASC (升序) 或DSC (降序) ,默认升序。
● UNIQUE:表明此索引的每一个索引值只对应唯一的数据记录。
● CLUSTER:表明要建立的索引是聚簇索引,索引项的次序是与表中记录的物理次序一致的索引组织。
删除索引
DROPINDEX<索引名>
8.2.5 视图

视图不是真实存在的基本表,而是一个虚拟表,视图所对应的数据并不实际地以视图结构存储在数据库中,而是存储在视图所引用的表中。使用视图的优点和作用如下:
(1)可以使视图会合数据、简化和定制差异用户对数据库的差异数据要求。
(2)使用视图可以屏蔽数据的复杂性,用户不必了解数据库的结构,就可以方便地使用和管理数据简化数据权限管理和重新组织数据以便输出到其他应用程序中。
(3)视图可以使用户只关心他感爱好的某些特定命据和所负责的特定任务,而那些不需要的或者无用的数据则不在视图中显示。
(4)视图大大地简化了用户对数据的操作
(5)视图可以让差异的用户以差异的方式看到差异或者雷同的数据集。
(6)在某些情况下,由于表中数据量太大因此在表的计划时常将表举行水平或者垂直分割,但表的结构的变革对应用程序产生不良的影响。
(7)视图提供了一个简朴而有用的安全机制。
创建视图
CREATE VIEW 视图名(列表名)
AS SELECT 查询子句[WITH CHECK OPTION];


  • 子查询可以是恣意复杂的 select 语句,但通常不允许含有 order by 和distinct。ewith check option 表示实行 update、insert、delete 操作时包管更新、插入、删除的行满足视图定义中的条件。“
  • 组成视图的属性列名或者全部省略或者全部指定。如果省略属性列名,则隐含该视图由 select子查询目标列的主属性组成。
  1. create view cs-stu as select * from stu where depart='cs' with check option;
复制代码
删除视图 
drop view 视图名
  1. drop view cs-stu;
复制代码
8.3 数据操作

8.3.1 查询语句格式

SELECT [ALL | DISTINCT] <目标列表达式> [目标列表达式>]..
FROM <表名或视图名> [,<表名或视图名>]
[WHERE<条件表达式>]
[GROUPBY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]...]



  • SOL查询中的子句次序为SELECT、FROM、WHERE、GROUP BY、HAVING 和ORDER BY此中,SELECT、FROM 是必须的,HAVING条件子只能与GROUP BY搭配起来使用。
    (1)SELECT子句对应的是关系代数中的投影运算,用来列出查询结果中的属性。其输出可以是列名表达式、集函数(AVG、COUNT、MAX、MIN、SUM),DISTINCT选项可以包管查询的结果会合不存在重复元组。
    (2)FROM子句对应的是关系代数中的笛卡儿积,它列出的是表达式求值过程中需扫描的关系,即在FROM子句中出现多个基本表或视图时,系统起首实行笛卡儿积操作。
    (3)WHERE子句对应的是关系代数中的选择谓词。WHERE 子句的条件表达式中可以使用的运算符如表所示。
  • 简朴查询:只涉及一张表。查询盘算机系学生的学号和姓名。
    1. select sno,sname from stu where depart='CS‘;
    复制代码
  • 毗连查询:查询涉及两个以上的表。查询选修了课程号为C1的学生号和学生姓名。
    1. select sno,sname from SSC where S.sno=SCsno and SCcno='C1';
    复制代码

  • 子查询:也称为嵌套查询,是指一个select-from-where查询块可以嵌入另一个查询块之中,SQL中允很多重嵌套。查询选修了课程号为C1的学生号和学生姓名。 
    1. select sno,sname from S where sno in (select sno from SC where cno=’ C1');
    复制代码



  • 聚集函数:是以一个值的聚集为输入,返回单个值的函数,SQL提供的聚集函数如下:



  • 使用ANY和ALL谓词必须同时使用比较运算符用聚集函数实现子查询通常比直接用ALL或ANY查询效率更高,二者等价转换如下:

8.3.2 分组查询

● group by<列名1>[having <条件表达式>];
● group by 按某一列分组,一样平常只能select分组的列以及使用聚集函数
● 在group by子句后面加一个having子句,对分组设置过滤条件,可以使用聚集函数,注意:
● 空值在任何聚集操作中都会被忽视,如求和、求平均值和计数都没有影响,如count(*)是某个关系中全部元组数组之和,但count(A)却是A属性非空的元组个数之和。
● NULL值可以看做分组属性中的一个一样平常的值,例如,在select A,avg(B) from R中,当A的属性值为空时,就会统计A=NULL的全部元组中B的均值。
● 查找订单总金额小于2000的客户:
  1. select customer, sum(orderPrice) from orders group by customer having sum(orderPrice) <2000;
复制代码
8.3.3 其他操作



  • 更名操作(as子句: ld name as new-name既可以出现在select子句中,也可以出现在from子句中select sname as 姓名, sage as 年 from S where SD=' CS';
  • 字符串操作作对于字符串举行的最通用的操作时使用操作符like的模式匹配,使用两个特殊的字符描述:
    %:匹配恣意字符串
    _:匹配恣意一个字符模式是巨细写敏感的,例如zhang%,mary_ 等。
    select sname from S where saddress like '%张江%';
  • 聚集操作:在关系代数中用聚集的并、交、差来组合关系,SQL提供了对应的操作,但是查询的结果必须具有雷同的属性和范例列表。保存字union、intersect、 except分别对应并、交、差;
  • 查询选修了180101号或180102号课程或二者都选修了的学生学号、课程号和成绩。
    (SELECT学号课程号,成绩 FROM学习WHERE 课程号=180101)UNION
    (SELECT学号课程号成绩 FROM学习WHERE 课程号=180102)
    ● UNION运算自动去除重复。如果想保存全部的重复,则必须用UNION ALL代替UNION,目查询结果中出现的重复元组数等于两个聚集中出现的重复元组数的和。
  • 查询同时选修了180101和180102号课程的学生学号、课程号和成绩。
    (SELECT学号,课程号,成绩 FROM学习 WHERE 课程号=180101) INTERSECT
    (SELECT学号课程号,成绩 FROM学习 WHERE 课程号=180102)
    ● INTERSECT运算自动去除重复,如果想保存全部的重复,必须用INTERSECT ALL代替● INTERSECT结果中出现的重复元组数等于两聚集出现的重复元组数里较少的那个。
  • 查询选修了180101号课程的学生中没有选修180102号课程的学生学号、课程号和成绩(SELECT学号课程号,成绩FROM学习WHERE课程号=180101)EXCEPT
    (SELECT学号课程号,成绩 FROM学习WHERE 课程号=180102)
    ● EXCEPT运算自动去除重复,如果想保存全部的重复,必须用EXCEPT ALL代替EXCEPT,结果中出现的重复元组数等于两聚集出现的重复元组数之差(条件是差是正值)
SQL对视图更新必须遵照以下规则:
(1)从多个基本表通过连结操作导出的视图不允许更新。
(2)对使用了分组、集函数操作的视图则不允许举行更新操作。
(3)如果视图是从单个基本表通过投影、选取操作导出的则允许举行更新操作,且语法同基本表 。


  • 和过程定义差异的是Create view子句会在数据库中建立视图定义,该视图定义会不停生存,直到实行drop view 下令。但是,with子句提供了定义一个暂时视图的方法,该定义只对with子句出现的那条查询有用。
  • 插入insert
    INSERTINTO 表名称 VALUES(值1值2,....)INSERTINTO table name(列1,列2...) VALUES (值1, 值2....)INSERT INTO Persons VALUES (GatesBill,Xuanwumen 10Beijing)INSERT INTO Persons (LastName, Address) VALUES (WilsonChamps-Elysees’)
  • 删除delete
    DELETE FROM 表名称WHERE 列名称=值DELETE FROM Person WHERE LastName=Wilson'
  • 更新update
    UPDATE 表名称SET 列名称=新值WHERE列名称=某值UPDATE Person SET FirstName =Fred' WHERE LastName = Wilson'
8.3.4 约束



  • 主键约束primary key
  • 完备性约束条件作用的对象有关系、元组和列



  • 完备性控制具有的功能:定义功能、检测功能和处置惩罚功能。
  • 检查是否违背完备性约束的机遇有两种: 在一条语句实行完后立刻检查称为立刻实行约束;需要延到整个变乱实行完后再检查称为延迟实行约束。
  • 实体完备性:关系中只能由一个主键,声明主键有两种方法;
  • 属性范例后加primary key 保存字;
  • 在属性列表的最后增长一行primary key(属性或属性组) 
外键约束foreign key
参照完备性定义格式:
foreign key(属性名)references 表名(属性)[on delete cascade set nullj;
references指明外键对应于哪个表的主键;
on delete cascade指明删除被参照关系的元组时,同时删除参照关系中的元组:
set null表示空值。 
属性值上的约束,属性值上的约束通过下面关键字举行
not null:不允许空值
unique:唯一值
check:属性值要满足指定条件 
  1. create table students (sno char(8)not null unique,
  2. sname char(10),
  3. sage int,
  4. sdept char(20),
  5. primary key(sno),
  6. foreign key(sdept) references D(dept),
  7. check(sage >=15 and sage <= 22))
复制代码
8.4 数据授权

8.4.1 授权grant

GRANT<权限>[<权限>]... [ON<对象范例><对象名>)TO<用户>[,<用户]>]...[WITH GRANT OPTION]


  • 若指定了WITH GRANT OPTION子句,那么获得了权限的用户还可以将权限赋给其他用户: 接受权限的用户可以是单个或多个具体的用户,PUBLIC参数可将权限赋给全体用户。差异范例的操作对象有差异的操作权限,常见的操作权限如表所示。

  1. grant all privileges on table S,PJ to user1, user2;
  2. grant insert on table S to user1 with grant option;
复制代码
8.4.2 收回权限revoke

REVOKE<权限>[,<权限>]... [ON<对象范例><对象名>]FROM<用户>[,<用户]>]... ;
  1. revoke all privileges on table S,PJ from user1,user2;revoke select on table S from user1;
复制代码
8.5 触发器



  • 触发器和存储过程
    ● 触发器trigger是与表变乱相干的特殊的存储过程,它的实行不是由程序调用,也不是手工启动,而是由变乱来触发。
    ● 触发器经常用于加强数据的完备性约束和业务规则等;
    ● 触发器与存储过程的唯一区别是触发器不能实行execute语句调用,而是在用户实行transact-SQl语句时自动触发实行。
    ● 存储过程:是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来实行它。
  • 触发器为数据库对象,当创建一个触发器时必须指定:
    (1)名称;
    (2)在其上定义触发器的表;
    (3)触发器将何时引发;
    (4)指明触发器实行时应做的动作。
  • 触发动作实际上是一系列SQL语句,可以有两种方式:
    (1)对被变乱影响的每一行(FOR EACH ROW)-每一元组实行触发过程,称为行级触发器。(2)对整个变乱只实行一次触发过程(FOREACHSTATEMENT),称为语级触发器。该方式是触发器的默认方式。
  • 触发器的定义包括两个方面:指明触发器的触发变乱,指明触发器的实举措作。

创建触发器:
(1)BEFORE:指示DBMS在实行触发语之前引发触发器
(2)AFTER:指示DBMS在实行触发语之后引发触发器。
(3)DELETE:每当一个DELETE语从表中删除一行时引发触发器。
(4)INSERT:每当一个时SERT 语句向表中插入一行时引发触发器
(5)UPDATE:每当UPDATE 语修改由OF子指定的列值时,引发触发器。如果忽略OF子,每当UDPATE 语修改表的任何列值时DBMS都将引发触发器
(6)REFERENCING<暂时视图名>:指定暂时视图的别名。在触发器运行过程中,系统会生成两个暂时视图,分别存放被更新值 (旧值)和更新后的值(新值》。对于行级触发器,默认暂时视图名分别是OLD 和NEW (oracle,在MS中,为Deleted,Inserted) ;对于语句级触发器,默认暂时视图名分别是OLD-TABLE和NEW-TABLE。一旦触发器运行结束,暂时视图就不在。
(7)WHEN<触发条件>:指定触发器的触发条件。当满足触发条件时,DBMS才引发触发器。触发条件中必须包罗暂时视图名,不包罗查询。
CREATE TRIGGER<触发器名>LBEFORE | AFTER)([DELETE | INSERT | UPDATEOF [列名清单]])ON表名
[REFERENCING<暂时视图名>][WHEN<触发条件>]
BEGIN
<触发动作>
END[触发器名]
【修改触发器】
ALTER TRIGGER<触发器名> [(BEFORE | AFTER]([DELETE | INSERTIUPDATEOF[列名清单]])
ON表名 | 视图名
AS
BEGIN
        要实行的SQL语句
END
【删除触发器】
drop trigger trigger name
8.6 嵌入式SQL 



  • 将SQL语言嵌入到高级程序计划语言中使用
    1.区分主语言语句与SQL 语句:
    ● 为了区分主语言语句与SQL 语句,需要在全部的SQl语句前加前缀EXEC SQL,而SQL的结束标志随主语言的差异而差异
    ● 例如,PL/1和C语言的引用格式为: EXEC SQLSQL 语句>;
    ● 又如,COBOL语言的引用格式为: EXEC SQL<SQL语句>END-EXEC。
    2.主语言工作单元与数据库工作单元通讯:
    1)SQL 通讯区SQL通讯区向主语言传递SQL 语句实行的状态信息使主语言能够根据此信息控制程序流程。
    2)主变量
  • 主变量也称共享变量。主语言向SQL语句提供参数重要通过主变量,主变量由主语言的程序定义,并用SQL的DECLARE语句阐明。例如在C语言中可用如下形式阐明主变量
  • 【游标】
    一条SQL 语句可产生或处置惩罚多条记录。而主语言是面向记录的,一组主变SQL 语言是面向聚集的量一次只能放一条记录,以是,引入游标,i通过移动游标指针来决定获取哪一条记录。与游标相干的SQL语句有四条:
    (1)定义游标,格式如下
    EXEC SOL DECLARE <游标名> CURSOR FOR
              <SELECT语句>
    END EXEC
    这是一条阐明性语句,定义中的 SELECT 语句并不立刻实行。
    (2) 打开游标,格式如下:
    EXEC SQL OPEN <游标名> END EXEC
    该语句实行游标定义中的 SELECT 语句,同时游标处于运动状态。游标是一个指针,此时指向查询结里的第一行之前。
    (3)推进游标,格式如下
    EXEC SQLFETCH FROM<游标名>INTO<变量表>ENDEXEC该语句使用时,游标推进一行,并把游标指向的行(称为当前行)中的值取出,送到共享变量中。变量表由用逗号分开的共享变量组成。该语句常置于宿主语言程序的循环结构中。
    (4)关闭游标,格式如下:EXEC SQLCLOSE<游标名>END EXEC该语句关闭游标,使它不再和查询结果相接洽。关闭了的游标,可以再次打开,与新的查询结果相接洽。
第九章 非关系型数据库NOSQL

9.1 概述



  • 传统的关系数据库在应付Web 2.0网站,特别是超大规模和高并发的SNS范例的Web2.0纯动态网站方面已经显得力不从心,袒露了很多难以克服的问题,重要包括以下几个方面。
    1)对数据库高并发读写的需求;
    2)对海量数据的高效率存储和访问的需求;
    3)对数据库的高可扩展性和高可用性的需求。

9.2 理论底子



  •  CAP原则又称CAP定理,指的是在一个分布式系统中,Consistency(一致性)、Availability (可用性)、Partition tolerance (分区容错性),三者最多只能得其二。
  • 一致性(C): 在分布式系统中的全部数据备份,在同一时刻是否同样的值。 (等同于全部节点访问同一份最新的数据副本)
  • 可用性 (A): 在集群中一部分节点故障后,集群整体是否还能相应客户端的读写请求。(对数据更新具备高可用性)
  • 分区容忍性(P):以实际结果而言,分区相当于对通讯的时限要求。系统如果不能在时限内告竣数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
  • 由于CAP 理论的存在,为了进步性能,出现了ACID 的一种变种BASE: Basically Available(基本可用),Soft state (软状态) 和 Eventually consistent (终极一致性)。
  • Base理论焦点头脑是:既然无法做到强一致性,但每个应用都可以根据自身的业务特点,接纳得当的方式来使系统达到终极一致性。
  • 基本可用:系统出现了不可预知的故障,但相比较于正常系统还是能用的。
  • 软状态:允许系统中的数据存在中央状态,并认为该状态不影响系统的整体可用性,即允许系统在多个差异节点的数据副本存在数据延时。
  • 终极一致性:系统能够包管在没有其他新的更新操作的情况下,数据终极一定能够达到一致的状态,因此全部客户端对系统的数据访问终极都能够获取到最新的值。
  • 具体地说,如果选择了CP (一致性和分区容忍性),那么就要考虑ACID 理论如果选择了AP (可用性和分区容忍性)那么就要考虑BASE 系统。如果选择了CA(一致性和可用性),那么在网络发生分区的时间,将不能举行完备的操作。

9.3 分区方法

(1)内存缓存:缓存技术可以当作一种分区。内存中的数据库系统将使用频率最高的数据复制到缓存中,加快了数据给用户传递的速度,同时也大大减轻了数据库服务器的负担。
(2)集群:数据库服务器集群在为用户提供服务时的透明性(用户感觉数据像是在同一个地2是另外一个对数据举行分区的方法。
(3)读写分离: 指定一台或多台主服务器,全部或部分的写操作被送至此,同时再设一定命目的副本服务器用以满足读请求。
(4)范围分割技术/分片(sharding): 指对数据按照如下方式举行分区操作,即对数据的请求和更新在同一个结点上,而且对于分布在差异服务器上的数据存储和下载的量大抵雷同。
9.4 存储分布


  • 行存储和列存储:两者之间的重要区别在于,行存储将每条记录的全部字段的数据聚合存储而列存储将全部记录中雷同字段的数据聚合存储。行存储重要适用于OLTP,或者更新操作,尤其是插入、删除操作频繁的场所: 而列存储重要适用于OLAP,数据仓库,数据挖掘等查询麋集型应用。
  • 带有局部性群组的列存储:是指根据需要将原来不存储在一起的数据,以列族为单元存储至单独的字表中。如用户对网站排名、语言等分析信息感爱好,那么可以将这些列族放在单独的子表减少无用信息读取,改善存取效率。
  • LSM-Tree:日志结构合并树,与前面介绍的存储结构有所差异,前面的存储结构在描述如何序列化逻辑数据结构,而LSM-Tree 描述的则是为了满足高效、高性能、安全地读写的要求,如何有用地利用内存和磁盘存储。重要用于解决日志记录索引的问题
9.5 查询模子


  • 结合SQL 数据库:一个最直接的方式是通过将NOSQL 数据库拷贝到关系数据库或者文本数据库来提供查询能方。
  • 分散/聚集本地搜索:一些NOSQL数据库提供本地数据库内的索引和查询处置惩罚机制。在这种情况下,我们可以让查询处置惩罚器将查询广播到DHT(分散哈希表)中的全部节点,在每个节点大将会实行查询,并将结果送回到查询处置惩罚器,然后查询处置惩罚器将结果聚集成一个单一相应。
  • 分布式B十树:其基本思路是为了定位B+树的根节点哈希要搜索的属性。根节点的“值”包罗其孩子节点的ID。
  • 前缀哈希表/分布式Trie:前缀哈希表 (Prefix Hash Table, PHT,又名分布式Trie) 目的是一个树形数据结构。在这个树形结构中,从根节点到叶子的每一条路径上均包罗了键值的前缀,而且每个Trie中的节点都包罗了它是谁的前缀的全部数据。
9.6 存储模式


其他存储模式:
(1)多值数据库:是分布式数据库系统的重要分支。它速度快,体积小,比关系数据库便宜,很快得到了认可。它提供了一个通用的数据集成与访问平台,屏蔽了现有各数据库系统差异的访问方法和用户界面,给用户呈现出一个访问多种数据库的公共接口。多值数据库系统使用的多个异构的数据源之间可以共享它们相互依靠的数据,并具有相互操作的能力。常见的多值数据库有Rocket U2, Extensible Storage Engin (ESE/NT)、OpenInsight 和OpenQM等。
(2)时间序列与流数据库:时间序列数据库是指具有处置惩罚时间序列数据,能对时间数据数组建立索引的优化数据库系统。流数据库又被称为实时数据库,这是一种使用实时处置惩罚数据的方式来处置惩罚状态不断变革的数据库系统。对时间序列的数据库提出实时的处置惩罚要求,那么时间数据库就是流数据库。常见的时间序列数据库InfluxDB、OpenTSDBo。
(3)网格和云数据库:是基于网格盘算或者云盘算的数据库。
第十章 系统开发与运行

10.1 系统实施

10.1.1 信息系统生命周期



  • 软件工程基本原理:用分阶段的生命周期筹划严格管理、坚持举行阶段评审、实现严格的产品控制接纳现代程序计划技术、结果应能清楚的审查、开发小组的职员应少而精、认可不断改进软件工程实践的须要性。
  • 软件工程的基本要素:方法、工具、过程。
  • 软件生存周期:可行性分析与项目开发筹划、需求分析、概要计划(选择系统解决方案,规划子系统)、具体计划(计划子系统内部具体实现)、编码、测试、维护。


  • 系统规划阶段:任务是对组织的环境、目标及现行系统的状态举行开端观察,根据组织目标和发展战略确定信息系统的发展战略,对建设新系统的需求做出分析和预测,同时考虑建设新系统所受的各种约束,研究建设新系统的须要性和大概性。根据需要与大概,给出制建系统的备选方案输出:可行性研究报告、系统计划任务书。
  • 系统分析阶段:任务是根据系统计划任务书所确定的范围,对现行系统举行具体观察,描述现行系统的业务流程,指出现行系统的局限性和不足之处,确定新系统的基本目标和逻辑功能要求,即提出新系统的逻辑模子。系统分析阶段又称为逻辑计划阶段。这个阶段是整个系统建设的关键阶段,也是信息系统建设与一样平常工程项目的重要区别所在。输出:系统阐明书
  • 系统计划阶段:系统分析阶段的任务是回答系统“做什么”的问题,而系统计划阶段要回答的问题是“怎么做”。该阶段的任务是根据系统阐明书中规定的功能要求,具体计划实现逻辑模子的技术方案,也就是计划新系统的物理模子。这个阶段又称为物理计划阶段,可分为总体计划(概要计划)和具体计划两个子阶段。输出:系统计划阐明书 (概要计划、具体计划阐明书)
  • 系统实施阶段:是将计划的系统付诸实施的阶段。这一阶段的任务包括盘算机等设备的购置、安装和调试程序的编写和调试、职员培训、数据文件转换、系统调试与转换等。这个阶段的特点是几个互相接洽、互相制约的任务同时展开,!必须精心安排、合理组织。系统实施是按实施计分别阶段完成的,每个阶段应写出实施进展报告。系统测试之后写出系统测试分析报告输出:实施进展报告、系统测试分析报告。
  • 系统运行和维护阶段:系统投入运行后,需要经常举行维护和评价,记录系统运行的情况,根据一定的规则对系统举行须要的修改,评价系统的工作质量和经济效益。
10.1.2 能力成熟度模子


【能力成熟度模子集成CMMI】
是若干过程模子的综合和改进不但仅软件,而是支持多个工程学科和范畴的系统的、致的过程改进框架能顺应现代工程的特点和需要,能进步过程的质量和工作效率。
CMMI两种表示方法:
(1)阶段式模子:雷同于CMM,它关注组织的成熟度,五个成熟度模子如下:

10.1.3 软件过程开发模子

【瀑布模子】
瀑布模子(SDLC)
:瀑布模子是一个经典的软件生命周期模子一样平常将软件开发分为:可行性分析 (筹划)、需求分析、软件计划 (概要计划、具体计划)、编码 (含单元测试)、测试、运行维护等几个阶段。
瀑布模子特点:
(1)从上一项开发运动接受该项运动的工作对象作为输入;
(2)利用这一输入,实施该项运动应完成的工作内容;
(3)给出该项运动的工作成果,作为输出传给下一项开发运动。
(4)对该项运动的实施工作成果举行评审。若其工作成果得到确认,则继续举行下一项开发运动;否则返回前一项,甚至更前项的运动。尽量减少多个阶段间的反复。以相对来说较小的费用来开发软件。

【螺旋模子】


  • 螺旋模子是一个演化软件过程模子,将原型实现的迭代特征与线性次序(瀑布)模子中控制的和系统化的方面结合起来。在螺旋模子中,软件开发是一系列的增量发布。
  • 开发过程具有周期性重复的螺旋线状。四个象限分别标志每个周期所分别的四阶段:制定筹划、风险分析、实施工程和客户评估。螺旋模子强调了风险分析,特别适用于巨大而复杂的、高风险的系统。

【V模子】


  • V模子从整体上看起来,就是一个V字型的结构,由左右两边组成。左边的下画线分别代表了需求分析、概要计划、详编码。右边的上画线代表了单元测试、集成测试细计划、系统测试与验收测试。v模子的特点如下:
    (1)单元测试的重要目的是针对编码过程中大概存在的各种错误;
    (2)集成测试的重要目的是针对具体计划中大概存在的问题;
    (3)系统测试重要针对概要计划,检查系统作为一个整体是否有用地得到运行;
    (4)验收测试通常由业务专家或者用户举行,以确认产品能真正符适用户业务上的需要;
    (5)V模子用于需求明确和需求变更不频繁的情况。

【原型化模子】


  • 原型化模子第一步就是创建一个快速原型能够满足项目千系人与将来的用户可以与原型举行交互,再通过与相干干系人举行充分的讨论和分析,终极弄清楚当前系统的需求,举行了充分的了解之后,在原型的底子上开发出用户满足的产品。原型法认为在很难一下子全面准确地提出用户需求的情况下,原型应当具备的特点如下:
    (1)实际可行;
    (2)具有终极系统的基本特征;
    (3)构造方便、快速,造价低。原型法的特点在于原型法对用户的需求是动态相应、逐步纳入的。
【增量模子】


  • 增量模子:起首开发焦点模块功能,而后与用户确认,之后再开发次焦点模块的功能,即每次开发一部分功能并与用户需求确认,终极完成项目开发优先级最高的服务最先交付。
  • 特点:但由于并不是从系统整体角度规划各个模块,因此倒霉于模块分别难点在于如何将客户需求分别为多个增量。与原型不用的是增量模子的每一次增量版本都可作为独立可操作的作品,而原型的构造一样平常是为了演示。

【其他模子】


  • 喷泉模子:是一种以用户需求为动力,以对象作为驱动的模子,适合于面向对象的开发方法。使开发过程具有迭代性和无间隙性。
  • 基于构件的开发模子CBSD:利用预先包装的构件来构造应用系统。构件可以是组织内部开发的构件,也可以是商品化成品软件构件。特点是增强了复用性,在系统开发过程中,会构建一个构件库,供其他系统复用,因此可以进步可靠性,节省时间和本钱
  • 形式化方法模子:建立在严格数学底子上的一种软件开发方法,重要运动是生成盘算机软件形式化的数学规格阐明。
10.1.4 信息系统开发方法

【结构化方法】


  • 结构是指系统内各个组成要素之间的相互接洽、相互作用的框架。
  • 结构化方法也称为生命周期法,是一种传统的信息系统开发方法,由结构化分析 (Structured Analysis,SA) 、结构化计划 (Structured Design, SD) 和结构化程序计划 (Structured Programming,SP)三部分有机组合而成,其精华是自顶向下、逐步求精和模块化计划。
  • 结构化方法的重要特点:
    (1)开发目标清晰化。结构化方法的系统开发遵照“用户第一”的原则;
    (2)开发工作阶段化。每个阶段工作完成后,要根据阶段工作目标和要求举行审查,这使各阶段工作井井有条地举行,便于项目管理与控制;
    (3)开发文档规范化。结构化方法每个阶段工作完成后,要按照要求完成相应的文档,以包管各个工作阶段的衔接与系统维护工作的遍历;
    (4) 计划方法结构化。在系统分析与计划时,从整体和全局考虑,自顶向下地分解,在系统实现时,根据计划的要求,先编写各个具体的功能模块,然后自底向上逐步实现整个系统。
  • 结构化方法的不足和局限:
    (1)开发周期长:按次序经历各个阶段,直到实施阶段结束后,用户才气使用系统;
    (2) 难以顺应需求变革:不适用于需求不明确或经常变更的项目;
    (3)很少考虑数据结构:结构化方法是一种面向过程,面向数据流的开发方法,很少考虑数据结构。
  • 结构化方法常用工具:结构化方法一样平常利用图形表达用户需求,常用工具有数据流图、数据字典、结构化语言、判定表以及判定树等.。
【面向对象方法】


  • 面向对象 (Object-Oriented,OO)方法认为,客观世界是由各种对象组成的,任何事物都是对象,每一个对象都有自己的运动规律和内部状态,都属于某个对象类,是该对象类的一个元素。复杂的对象可由相对简朴的各种对象以某种方式而构成,差异对象的组合及相互作用就构成了系统。
  • 面向对象方法的特点:
    (1)使用OO方法构造的系统具有更好的复用性,其关键在于建立一个全面合理、统一的模子(用例模子和分析模子)。
    (2)OO方法也分别阶段,但此中的系统分析、系统计划和系统实现三个阶段之间已经没有“缝隙”。也就是说,这三个阶段的界限变得不明确,某项工作既可以在前一个阶段完成,也可以在后一个阶段完成;前一个阶段工作做得不敷细,在后一个阶段可以补充。
    (3)面向对象方法可以广泛适用于各类信息系统的开发。
  • 面向对象方法的不足之处必须依靠一定的面向对象技术支持在大型项目的开发上具有一定的局限性不能涉足系统分析以前的开发环节。
  • 当前,一些大型信息系统的开发,通常是将结构化方法和OO方法结合起来起首,使用结构化方法举行自顶向下的整体分别;然后,自底向上地接纳OO方法举行开发。因此,结构化方法和OO方法仍是两种在系统开发范畴中相互依存的、不可替代的方法。
【原型化方法】


  • 原型化方法也称为快速原型法,或者简称为原型法。它是一种根据用户开端需求,利用系统开发工具,快速地建立一个系统模子展示给用户,在此底子上与用户交流,终极实现用户需求的信息系统快速开发的方法。
  • 按是否实现功能分类:分为水平原型(行为原型,功能的导航)、垂直原型(结构化原型,实现了部分功能)。
  • 按终极结果分类:分为抛弃式原型、演化式原型 。



  • 原型法的特点:
    原型法可以使系统开发的周期收缩本钱和风险低落、速度加快,获得较高的综合开发效益。
    原型法是以用户为中央来开发系统的,用户参与的水平大大进步,开发的系统符适用户的需求,因而增长了用户的满足度,进步了系统开发的成功率。由于用户参与了系统开发的全过程,对系统的功能和结构容易理解和接受,有利于系统的移交,有利于系统的运行与维护。
  • 原型法的不足之处:开发的环境要求高。管理水平要求高。
  • 由以上的分析可以看出,原型法的优点重要在于能更有用地确认用户需求。从直观上来看,原型法适用于那些需求不明确的系统开发。毕竟上,对于分析层面难度大、技术层面难度不大的系统,适合于原型法开发。
  • 从严格意义上来说,目前的原型法不是一种独立的系统开发方法,而只是一种开发头脑,它只支持在系统开发早期阶段快速生成系统的原型,没有规定在原型构建过程中必须使用哪种方法。因此,它不是完备意义上的方法论体系。这就注定了原型法必须与其他信息系统开发方法结合使用。
【敏捷开发】


  • 敏捷开发是一种以人为焦点、迭代、循规蹈矩的开发方法,相对于传统软件开发方法的“非敏捷”,更强调程序员团队与业务专家之间的紧密协作、面对面的沟通 (认为比书面的文档更有用)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地顺应需求变革的代码编写和团队组织方法,也更注重软件开发中人的作用
  • 敏捷软件开发宣言:
    (1)个体和交互胜过过程和工具;
    (2)可以工作的软件胜过八面见光的文档;
    (3)客户互助胜过合同谈判;
    (4)相应变革胜过遵照筹划 。



  • 结对编程:个程序员开发,另一个程序在一观看察审查代码,能够有用的进步代码质量在开发同时对代码举行开端审查,共同对代码负责。
  • 自顺应开发:强调开发方法的顺应性 (Adaptive)。不象其他方法那样有很多具体的实践做法,它更侧重为软件的重要性提供最根本的底子,并从更高的组织和管理条理来论述开发方法为什么要具备顺应性。
  • 水晶方法:每一个差异的项目都需要一套差异的战略、约定和方法论。
  • 特性驱动开发:是一套针对中小型软件开发项目的开发模式。是一个模子驱动的快速迭代开发过程,它强调的是简化、实用、易于被开发团队接受,适用于需求经常变动的项目。
  • 极限编程XP:焦点是沟通、简明、反馈和勇气。由于知道筹划永远赶不上变革,XP无需开发职员在软件开始初期做出很多的文档。XP提倡测试先行,为了将以后出现bug的几率降到最低。
  • 并列争球法SCRUM:是一种迭代的增量化过程,把每段时间 (30天) 一次的,并按需求的优先级别来实现产品,多个自组织和自治迭代称为一个“冲刺”的小组并行地递增实现产品。
  • 统一过程(RUP)提供了在开发组织中分派任务和责任的纪律化方法。它的目标是在可预见的日程和预算条件下,确保满足终极用户需求的高质量产品。

    • 3个明显特点:用例驱动、以架构为中央、迭代和增量。
    • 4个流程:初始阶段、细化阶段、构建阶段和交付阶段。每个阶段结束时都要安排一次技术评审,以确定这个阶段的目标是否已经达到。
    • 适用:一个通用过程框架,可以用于种类广泛的软件系统、差异的应用范畴差异的组织范例、差异性能水平和差异的项目规模。

10.1.5 系统分析与计划



  • 系统分析过程一样平常按如图所示的逻辑举行:
    (1)熟悉、理解当前的实际环境,获恰当前系统的“物理模子”;
    (2)从当前系统的“物理模子”抽象出当前系统的“逻辑模子”;
    (3)对当前系统的“逻辑模子”举行分析和优化,建立目标系统的“逻辑模子”;
    (4)对目标系统的逻辑模子具体化(物理化),建立目标系统的物理模子。
  • 系统开发的目的是把现有系统的物理模子转化为目标系统的物理模子,即图中所描述的路径,而系统分析阶段的结果是得到目标系统的逻辑模子。逻辑模子反映了系统的功能和性质,而物理模子反映的是系统的某一种具体实现方案。



  • 系统计划基本原理:抽象(模块化信息隐蔽、模块独立。衡量模块独立水平的尺度有两个:耦合性和内聚性。内聚水平从低到高如下表:



  • 耦合水平从低到高如下表所示:



  • 系统总体结构计划是要根据系统分析的要求和组织的实际情况对新系统的总体结构形式和可利用的资源举行大抵计划,这是一种宏观、总体上的计划和规划。
  • 系统结构计划原则
    (1)分解-调和原则。
    (2)自顶向下的原则。
    (3)信息隐蔽、抽象的原则。
    (4)一致性原则。
    (5)明确性原则。
    (6)模块之间的耦合尽大概小,模块的内聚度尽大概高。
    (7)模块的扇入系数和扇出系数要合理。
    (8)模块的规模得当 
  • 子系统分别的原则:
    (1)子系统要具有相对独立性。
    (2)子系统之间数据的依靠性尽量小。
    (3)子系统分别的结果应使数据冗余较小。
    (4)子系统的设置应考虑今后管理发展的需要。
    (5)子系统的分别应便于系统分阶段实现。
    (6)子系统的分别应考虑到各类资源的充分利用。
  • 子系统结构计划的任务是确定分别后的子系统模块结构,并画出模块结构图王这个过程中必须考虑以下几个问题。
    (1)每个子系统如何分别成多个模块。
    (2)如何确定子系统之间、模块之间传送的数据及其调用关系。
    (3)如何评价并改进模块结构的质量。
    (4)如何从数据流图导出模块结构图。
【系统模块结构计划】


  • 模块是组成系统的基本单元,它的特点是可以组合、分解和更换。系统中的任何一个处置惩罚根据功能都可以当作是一个模块,具体化水平的差异,模块可以分为逻辑模块和物理功能。模块。个模块应具备以下4 个要素:
    (1)输入和输出。
    (2)处置惩罚功能。指模块把输入转换成输出所做的工作
    (3)内部数据。指仅供该模块自己引用的数据。
    (4)程序代码。指用来实现模块功能的程序。
    前两个要素是模块外部特性,反映了模块的外貌。后两个要素是模块的内部特性
  • 模块结构图为了包管系统计划工作的顺遂举行,结构计划应遵照以下原则。
    (1)所分别的模块其内部的凝聚性要强,模块之间的接洽要少,即模块具有较强的独立性。
    (2)模块之间的毗连只能存在上下级之间的调用关系,不能有同级之间的横向接洽。
    (3)整个系统呈树状结构,不允许网状结构或交叉调用关系出现。
    (4)全部模块(包括后继IPO图)都必须严格地分类编码并建立归档文件模块结构图重要关心的是模块的外部属性,即上下级模块、同级模块之间的数据传递和调并不关心模块的内部。
10.1.6 结构化开发 



  • 结构化分析与计划方法是一种面向数据流的传统软件开发方法,它以数据流为中央构建软件的分析模子和计划模子。结构化分析(Structured Analysis,SA)结构化计划 (Structured Design,SD)和结构化程序计划 (StructuredProgramming Design,SPD)构成了完备的结构化方法。
    结构化方法的分析结果由以下几部分组成:一套分层的数据流图、一本数据词典、一组小阐明 (也称加工逻辑阐明) 、补充材料。


  • 数据流:由一组固定成分的数据组成,表示数据的流向。在DFD 中,数据流的流向必须经过加工
  • 加工:描述了输入数据流到输出数据流之间的变更,数据流图中常见的三种错误如图所示:
    加工3.1.2有输入但是没有输出,称之为“黑洞”;
    加工3.1.3有输出但没有输入。称之为“奇迹“;
    加工3.1.1中输入不足以产生输出,我们称之为“灰洞“。
  • 数据存储:用来存储数据。
  • 外部实体(外部主体)是指存在于软件系统之外的职员或组织,它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。

 【分层数据流图】




【数据字典DD】
数据流图描述了系统的分解,但没有对图中各成分举行阐明。数据字典就是为数据流图中的每个数据流、文件、加工,以及组成数据流或文件的数据项做出阐明。
数据字典有以下4 类条目:数据流、数据项、数据存储和基本加工。

加工逻辑也称为“小阐明”。常用的加工逻辑描述方法有结构化语言、判定表和判定树3 种。 


  • 结构化计划(Structured Design,SD)方法是一种面向数据流的计划方法,它可以与SA方法衔接。结构化计划方法的基本头脑是将系统计划成由相对独建功能单一的模块组成的结构。
  • 结构化计划方法中用结构图 (structure chart)来描述软件系统的体系结构指出一个软件系统由哪些模块组成,以及模块之间的调用关系。模块结构图是结构化计划的工具,由模块、调用、数据、控制和转接五种基本符号组成。
  • 结构化计划重要包括:
    (1)体系结构计划:定义软件的重要结构元素及其关系;
    (2)数据计划:基于实体接洽图确定软件涉及的文件系统的结构及数据库的表结构描述用户界面,软件和其他硬件设备、其他软件系统及使用职员;
    (3)接口计划:的外部接口,以及各种构件之间的内部接口;
    (4)过程计划:确定软件各个组成部分内的算法及内部数据结构,并选定某种过程的表达形式来描述各种算法。 
10.2 系统测试

10.2.1 测试原则和方法



  • 系统测试是为了发现错误而实行程序的过程,成功的测试是发现了至今尚未发现的错误的测试。
  • 测试原则:

    • 应尽早并不断的举行测试;
    • 测试工作应该克制由原:软件的人或小组承担;
    • 在计划测试方案时,不但要确定输入数据,而且要根据系统功能确定预期的输出结果;
    • 既包罗有用、合理的测试用例,也包罗不合理、失效的用例;检验程序是否做了该做的事,且是否做了不该做的事;
    • 严格按照测试筹划举行;
    • 妥善生存测试筹划和测试用例:
    • 测试用例可以重复使用或追加测试。

  • 软件测试方法可分为静态测试和动态测试。

    • 静态测试:指被测试程序不在呆板上运行,而接纳人工检测和盘算机辅助静态分析的本事对程序举行检测,包括对文档的静态测试和对代码的静态测试。对文档的静态测试重要以检查单的形式举行,而对代码的静态测试,包括桌前检查、代码审查、代码走查大方式。使用这种方法能够有用地发现30%-70%的逻辑计划和编码错误
    • 动态测试:指在盘算机上实际运行程序举行软件测试,一样平常接纳白盒测试和黑盒测试方法。
      黑盒测试法:功能性测试,不了解软件代码结构,根据功能计划用例,测试软件功能。
      白盒测试法:结构性测试,明确代码流程,根据代码逻辑计划用例,举行用例覆盖。 

10.2.2 测试阶段

(1)单元测试:也称为模块测试,测试的对象是可独立编译或汇编的程序模块软件构件或OO软件中的类(统称为模块),测试依据是软件具体计划阐明书
(2)集成测试:目的是检查模块之间,以及模块和已集成的软件之间的接口关系,并验证已集成的软件是否符合计划要求。测试依据是软件概要计划文档。
(3)系统测试:测试对象是完备的、集成的盘算机系统;测试的目的是在真实系统工作环境下验证完成的软件配置项能否和系统准确毗连,并满足系统/子系统计划文档和软件开发合同规定的要求。测试依据是用户需求或开发合同。重要内容包括功能测试、健壮性测试、性能测试、用户界面测试、安全性测试安装与反安装测试等,此中,最重要的工作是举行功能测试与性能测试。功能测试重要接纳黑盒测试方法;性能测试重要指标有相应时间、吞吐量、并发用户数和资源利用率等。
(4)确认测试:重要用于驰证软件的功能、性能和其他特性是否与用户需求-致。根据用户的参与水平,通常包括以下范例:
● 内部确认测试:重要由软件开发组织内部按照SRS举行测试;
● Alpha测试:用户在开发环境下举行测试。用户在实际使用环境下举行测试,通过改测试后,产品才气交付用户;
● Beta测试:验收测试:针对SRS,在交付前以用户为主举行的测试。其测试对象为完备的、集成的盘算机系统。验收测试的目的是,在真实的用户工作环境下,检验软件系统是否满足开发技术合同或SRS。
● 验收测试的结论是用户确定是否接收该软件的重要依据。除应满足一样平常测试的准入条件外,在举行验收测试之前,应确认被测软件系统已通过系统测试。
(5)配置项测试:测试对象是软件配置项,测试目的是检验软件配置项与SRS的一致性。测试的依据是SRS。在此之间,应确认被测软件配置项已通过单元测试和集成测试。
(6)回归测试:测试目的是测试软件变更之后,变更部分的准确性和对变更需求的符合性,以及软件原有的、准确的功能、性能和其他规定的要求的不侵害性。


  • 测试战略
    ● 自底向上:从最底层模块开始测试需要编写驱动程序,而后开始逐一合并模块,终极完成整个系统的测试。优点是较早的验证了底层模块。
    ● 自顶向下:先测试整个系统,需要编写桩程序,而后逐步向下直至最后测试最底层模块。优点是较早的验证了系统的重要控制和判定点
    ● 三明治:既有自底向上也有自顶向下的测试方法,二者都包括。兼有二者的优点,缺点是测试工作量大。
10.2.3 测试用例计划

【黑盒测试用例】


  • 黑盒测试用例:将程序看做一个黑盒子,只知道输入输出,不知道内部代码由此计划出测试用例,分为下面几类:等价类分别:把全部的数据按照某种特性举行归类,而后在每类的数据里选取一个即可。
  • 等价类测试用例的计划原则::计划一个新的测试用例,使其尽大概多地覆盖尚未被覆盖的有用等价类,重复这一步,直到全部的有用等价类都被覆盖为止;计划一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到全部的无效等价类都被覆盖为止。
  • 界限值分别:将每类的界限值作为测试用例,界限值一样平常为范围的两端值以及在此范围之外的与此范围间隔最小的两个值,如年事范围为0-150,界限值为0,150,-1,151四个。
  • 错误推测:没有固定的方法,凭经验而言,来推测有大概产生问题的地方作为测试用例举行测试。
  • 因果图:由一个结果来反推原因的方法,具体结果具体分析,没有固定方法
【白盒测试用例】


  • 白盒测试用例:知道程序的代码逻辑,按照程序的代码语句,来计划覆盖代码分支的测试用例,覆盖级别从低至高分为下面几种:
    (1)语句覆盖SC:逻辑代码中的全部语句都要被实行一遍,覆盖层级最低,由于实行了全部的语句,不代表实行了全部的条件判定。
    (2)判定覆盖DC: 逻辑代码中的全部判定语句的条件的真假分支都要覆盖一。

(3)条件覆盖CC:针对每一个判定条件内的每一个独立条件都要实行一遍真和假。
(4)条件判定组合覆盖CDC::同时满足判定覆盖和条件覆盖。

(5)路径覆盖:逻辑代码中的全部可行路径都覆盖了,覆盖层级最高。

10.2.4 调试



  • 测试是发现错误,调试是找堕落误的代码和原因。
  • 调试需要确定错误的准确位置;确定问题的原因并设法改正;改正后要举行回归测试。
  • 调试的方法有:蛮力法、回溯法 (从堕落的地方开始,向回找)、原因排除法(找出全部大概的原因,逐一举行排除,具体包括演绎法、归纳法、二分法)。
10.2.5 软件度量



  • 软件的两种属性:外部属性指面向管理者和用户的属性,可直接测量一样平常为性能指标。内部属性指软件产品自己的的属性,如可靠性等,只能间接测量。
  • McCabe度量法:又称为环路复杂度,假设有向图中有向边数为m,节点数为n,则此有向图的环路复杂度为m-n+2。
  • 注意m和n代表的含义不能混淆,可以用一个最简朴的环路来做特殊值影象此公式,另外,针对一个程序流程图,每一个分支边(连线)就是一条有向边,每一条语句(语句框)就是一个极点。
10.3 系统维护

10.3.1 系统转换



  • 遗留系统是指任何基本上不能举行修改和演化以满足新的变革了的业务需求的信息系统,它通常具有以下特点:
    (1)系统虽然完成企业中很多重要的业务管理工作,但仍然不能完全满足要求。一样平常实现业务处置惩罚电子化及部分企业管理功能,很少涉及经营决策。
    (2)系统在性能上已经落伍,接纳的技术已经逾期。例如多接纳主机/终端形式或小型机系统,软件使用汇编语言或第三代程序计划语言的早期版本开发,使用文件系统而不是数据库。
    (3)通常是大型的软件系统,已经融入企业的业务运作和决策管理机制之中,维护工作十分困难。
    (4)没有使用现代信息系统建设方法举行管理和开发,现在基本上已经没有文档,很难理解。



  • 系统转换是指新系统开发完毕,投入运行,取代现有系统的过程,,需要考虑多方面的问题,以实现与老系统的交代,有以下三种转换筹划:
    (1)直接转换:现有系统被新系统直接取代了,风险很大,适用于新系统不复杂或者现有系统已经不能使用的情况。优点是节省本钱。
    (2)并行转换:新系统和老系统并行工作一段时间,新系统经过试运行后再取代若新系统在试运行过程中有问题,也不影响现有系统的运行,风险极小,在试运行过程中还可以比较新老系统的性能,适用于大型系统。缺点是泯灭人力和时间资源,难以控制两个系统间的数据转换。
    (3)分段转换:分期分批逐步转换,是直接和并行转换的聚集,将大型系统分为多个子系统,依次试运行每个子系统,成熟一个子系统,就转换一个子系统。同样适用于大型项目,只是更耗时,而且现有系统和新系统间混合使用,需要调和好接口等问题。
  • 数据转换与迁移:将数据从旧数据库迁移到新数据库中。有三种方法:系统切换前通过工具迁移、系统切换前接纳手工录入、系统切换后通过新系统生成。
10.3.2 系统维护



  • 系统的可维护性可以定义为维护职员理解、改正、改动和改进这个软件的难易水平,其评价指标如下:
    (1)易分析性。软件产品诊断软件中的缺陷或失效原因或识别待修改部分的能力。
    (2)易改变性。软件产品使指定的修改可以被实现的能力,实现包括编码、计划和文档的更改。
    (3)稳定性。软件产品克制由于软件修改而造成不测结果的能力。
    (4)易测试性。软件产品使已修改软件能被确认的能力。
    (5)维护性的依从性。软件产品遵照与维护性相干的尺度或约的能力。
  • 系统维护包括硬件维护、软件维护和数据维护,此中软件维护范例如下准确性维护:
    发现了bug而举行的修改;
    ● 准确性维护:发现了bug而举行的修改。
    ● 顺应性维护:由于外部环境发生了改变,被动举行的对软件的修改和升级。
    ● 完善性维护:基于用户主动对软件提出更多的需求,修改软件,增长更多的功能,使其比之前的软件功能、性能更高,更加完善。
    ● 防备性维护:对将来大概发生的bug举行防备性的修改。
10.3.3 系统评价

【系统评价分类】
立项评价:系统开发前的预评价,分析是否立项开发,做可行性评价。
中期评价:项目开发中期每个阶段的阶段评审。或者项目在开发中途遇到巨大变故,评价是否还要继续。


  • 结项评价:系统投入正式运行后,了解系统是否达到预期的目的和要求而对系统举行的综合评价。系统评价的指标
    (1)从信息系统的组成部分出发,信息系统是一个由人机共同组成的系统,以是可以按照运行结果和用户需求(人)、系统质量和技术条件(机)这两条线索构造指标。
    (2)从信息系统的评价对象出发,对于开发方来说,他们所关心的是系统质量和技术水平:对于用户方而言,关心的是用户需求和运行质量:系统外部环境则重要通过社会效益指标来反映。
    (3)从经济学角度出发,分别按系统本钱、系统效益和财务指标3 条线索建立指标。
10.4 面向对象开发



  • (1)对象:由数据及其操作所构成的封装体,是系统中用来描述客观变乱的-个实体,是构成系统的一个基本单元。一个对象通常可以由对象名、属性和方法3个部分组成。
  • (2)类:实际世界中实体的形式化描述类将该实体的属性(数据) 和操作(函数)封装在一起。对象是类的实例,类是对象的模板类可以分为三种:实体类、接口类《界限类) 和控制类实体类的对象表示实际世界中真实的实体,如人、物等。接口类(界限类) 的对象为用户提供一种与系统互助交互的方式,分为人和系统两大类,此中人的接口可以是显示屏窗口、Web 窗体、对话框、菜单、列表框、其他显示控制、条形码、二维码或者用户与系统交互的其他方法。系统接口涉及到把数据发送到其他系统,或者从其他系统接收数据。控制类的对象用来控制运动流,充当调和者。
  • (3) 抽象:通过特定的实例抽取共同特征以后形成概念的过程。它强调重要特征,忽略次要特征。一个对象是实际世界中一个实体的抽象,一个类是一组对象的抽象,抽象是一种单一化的描述,它强调给出与应用相干的特性,抛弃不相干的特性。
  • (4)封装:是一种信息隐蔽技术,将相干的概念组成一个单元模块,并通过-个名称来引用。面向对象封装是将数据和基于数据的操作封装成一个整体对象对数据的访问或修改只能通过对象对外提供的接口举行
  • (5)继承:表示类之间的条理关系 (父类与子类)这种关系使得某类对象可以继承另外一类对象的特征,又可分为单继承和多继承。
  • (6)多态:差异的对象收到同一个消息时产生完全差异的结果。包括参数多态(差异范例参数多种结构范例)包罗多态 (父子范例关系) 、过载多态 (类强制多态(强制范例转换) 四种范例。多态以于重载,一个名字差异含义)由继承机制支持,将通用消息放在抽象层,具体差异的功能实现放在低层。
  • (7)接口: 描述对操作规范的阐明,其只阐明操作应该做什么,并没有定义操作如何做。
  • (8)消息:体现对象间的交互,通过它向目标对象发送操作请求
  • (9)覆盖:子类在原有父类接口的底子上,用适合于自己要求的实现去置换父类中的相应实现。即在子类中重定义一个与父类同名同参的方法
  • (10)函数重载:与覆盖要区分开,函数重载与子类父类无关,且函数是同名差异参数。
  • (11)绑定是一个把过程调用和相应调用所需要实行的代码加以结合的过程在一样平常的程序计划语言中,绑定是在编译时举行的,叫作静态绑定。动态绑定则是在运行时举行的,因此,一个给定的过程调用和代码的结合直到调用发生时才举行。 
第十一章 数据库计划

11.1 数据库计划概述

数据库应用系统的生命周期:
(1)数据库规划:出发点,数据库应用系统的任务陈述和任务目标制定阶段;
(2)需求描述与分析:从用户的角度,收集和整理用户需求;
(3)数据库计划与应用程序计划: 针对用户数据的组织和存储计划,在此底子上对数据操作及业务实现的计划,包括变乱计划和用户界面计划;
(4)实现:依据计划,使用DBMS支持的DDL实现数据库的建立,用高级语言编写应用程序;
(5)测试:对数据库系统举行测试;
(6)运行维护:不断的对DBS举行评价、调整与修改,直至系统消亡。


  • 数据库计划的一样平常战略:自顶向下,自底向上。
  • 数据库计划的步骤
    (1)用户需求分析·即分析数据存储的要求和界限,产出物有数据流图、数据字典、需求阐明书。
    (2)概念结构计划,计划用户的数据模子,与具体DBMS无关的概念模子,一样平常般是计划E-R图,也即实体-属性图,与物理实现无关,就是阐明有哪些实体,实体有哪些属性。

    (3)逻辑结构计划将抽象的概念模子转化为与选用的DBMS 产品所支持的数据模子相符合的逻辑模子,它是物理结构计划的底子。包括模式初始计划、子模式计划、应用程序计划、模式评价以及模式求精。
    (4)物理结构计划: 逻辑模子在盘算机中的具体实现方案。
    (5)数据库实施阶段。数据库计划职员根据逻辑计划和物理计划阶段的结果建立数据库,编制与调试应用程序,组织数据入库,并举行试运行。
    (6)数据库运行和维护阶段。数据库应用系统经过试运行即可投入运行,但该阶段需要不断地对系统举行评价、调整与修改。

  • 数据库计划一样平常应包括数据库的结构计划和行为计划两部分内容。数据库的结构计划是指系统整体逻辑模式与子模式的计划,是对数据的分析计划:数据库的行为计划是指施加在数据库上的动态操作 (应用程序集)的计划,是对应用系统功能的分析计划。
11.2 系统需求分析



  • 在整个计划开发过程中是最困难、最耗时的一步。
  • 需求分析的任务:对实际世界中要处置惩罚的对象举行具体观察,确定新系统功能,收集支持系统目标的底子数据及处置惩罚方法。
  • 分析和表达用户需求的方法重要包括自顶向下和自底向上两类方法。
  • 需求分析的重点是观察组织机构情况、观察各部门的业务运动情况、协助用户明确对新系统的各种要求、确定新系统的界限,以此获得用户对系统的如下要求:
    (1)信息要求。用户需要在系统中生存哪些信息,由这些生存的信息要得到什么样的信息,这些信息以及信息间应当满足的完备性要求。
    (2)处置惩罚要求。用户在系统中要实现什么样的操作功能,对生存信息的处置惩罚过程和方式,各种操作处置惩罚的频度、相应时间要求、处置惩罚方式等以及处置惩罚过程中的安全性要求和完备性要求。
    (3)系统要求。包括安全性要求、使用方式要求和可扩充性要求。安全性要求:系统有几种用户使用,每一种用户的使用权限如何。使用方式要求:用户的使用环境是什么,平均有多少用户同时使用,最高峰时有多少用户同时使用,有无查询相应的时间要求等。可扩充性要求:对将来功能、性能和应用访问的可扩充性的要求。
  • 需求分析阶段的文档: 需求阐明文档、数据流图DFD、数据字典DD
11.3 概念结构计划



  • 概念结构计划的目标是产生反映系统信息需求的数据库概念结构,即概念模式。概念结构是独立于支持数据库的DBMS 和使用的硬件环境的。此时,i计划职员从用户的角度看待数据以及数据处置惩罚的要求和约束,产生一个反映用户观点的概念模式,然后再把概念模式转换为逻辑模式。
  • 概念结构计划战略与方法: 自顶向上、自底向上、逐步扩张、混合战略。
  • 使用E-R 方法,无论是哪种战略,都要对实际事物加以抽象熟悉,以E-R 图的形式描述出来对实际事物抽象熟悉的三种方法分别是分类、聚集和概括。
    (1)分类:对实际世界的事物,按照其具有的共同特征和行为,定义一种范例。这在实际生活中很常见,如学校中的学生和西席就属于差异的范例。在某一范例中,个体是范例的一个成员或实例,即“is member of”,如李娜是学生范例中的一个成员。
    (2)聚集:定义某一范例所具有的属性。如学生范例具有学号、姓名、性别、班级等共同属性每一个学生都是这一范例中的个体,通过在这些属性上的差异取值来区分。各个属性是所属范例的一个成份,即“is part of”,如姓名是学生范例的一个成份。
    (3)概括:由一种己知范例定义新的范例。如由学生范例定义研究生范例,在学生范例的属性上增长导师等其他属性就构成研究生范例。通常把己知范例称为超类,新定义的范例称为子类。子类是超类的一个子集,即“is subset of”,如研究生是学生的一个子集。
  • 用E-R方法建立概念模子:
    (1)选择局部应用:依据数据流图,将巨大的数据分别成一个个局部应用场景。
    (2)逐一计划分E-R图:依据局部应用,计划分E-R图。实际生活中很多事物,作为实体还是属性没有明确的界定,这需要根据具体情况而定,一样平常遵照以下两条准则:属性不可再分,即属性不再具有需要描述的性质,不能有属性的属性属性不能与其他实体发生接洽,接洽是实体与实体间的接洽。
    (3)E-R图合并: 多个分E-R图合并
    合并的目的是为了消除分E-R图之间存在的辩论和信息几余,会产生如下辩论:属性辩论:同一属性大概会存在差异的分E-R图,由于计划职员差异或是出发点差异,属性的范例、取值范围及数据单元大概会不一致。命名辩论:雷同意义的属性,在差异分E-R图上有着差异的命名,或者是差异意义的属性有着雷同的名称。同一实体在差异的分E-R图中有差异的属性,同一个对象在分E-R图中被抽象为实体结构辩论:或属性。
  • E-R图合并时的优化:
    (1)实体范例的合并:两个具有1:1 接洽或1:接洽的实体,可以予以合并,使实体个数减少有利于减少将来数据库操作过程中的毗连开销
    (2)几余属性的消除:一样平常在各分E-R 图中的属性是不存在余的,但合并后就大概出现几余由于合并后的E-R 图中的实体继承了合并前该实体在分E-R 图中的全部属性,属性间就大概存在几余,即某一属性可以由其他属性确定。
    (3)几余接洽的消除:在分E-R 图合并过程中,大概会出实际体接洽的环状结构,即某一实体A另一实体B 间有直接接洽,同时A 又通过其他实体与实体B 发生间接接洽,通常直接接洽可以通过间接接洽所表达,可消除直接接洽。
11.4 逻辑结构计划



  • 逻辑结构计划的重要任务:确定命据模子、将E-R图转换为指定的数据模子、确定完备性约束、确定用户视图。
  • E-R图转换为关系模式:
    1.实体向关系模式的转换:将E-R 图中的实体逐一转换成为一个关系模式实体名对应关系模式的名称,实体的属性转换为关系模式的属性,实体标识符就是关系的码。
    2.接洽向关系模式的转换:
    (1)一对一接洽的转换。通常一对一接洽不需要将其转换为一个独立的关系模式,只需要将接洽归并到关联的两个实体的任一方,给待归并的一方实体属性会合增长另一方实体的码和该接洽的属性即可,归并后的实体码保持稳定。
    (2)一对多接洽的转换。通常一对多接洽也不需要将其转换为一个独立的关系模式,只需要将接洽归并到关联的两个实体的多方,给待归并的多方实体属性会合增长一方实体的码和该接洽的属性即可,归并后的多方实体码保持稳定。
    (3)多对多接洽的转换。多对多接洽只能转换成一个独立的关系模式,关系模式的名称取接洽的名称,关系模式的属性取该接洽所关联的两个多方实体的码及接洽的属性,关系的码是多方实体的码构成的属性组。
  • 由E-R图转换得来的初始关系模式并不完全符合要求,还会有数据几余或更新异常存在,需要经过进一步的规范化处置惩罚,步骤如下:
    (1)根据语义确定各关系模式的数据依靠
    (2)根据数据依靠确定关系模式的范式
    (3)如果关系模式不符合要求,要根据关系模式的分解算法举行分解,达到规定范式级别(4)关系模式的评价及修正。根据处置惩罚要求,大概还需要增长部分几余以满足处置惩罚要求,这就需要做部分关系模式的处置惩罚,分解、合并或增长几余属性,进步存储效率和处置惩罚效率。
  • 确定完备性约束:根据规范化理论确定了关系模式之后,还要对关系模式加以约束包括数据项的约束、表级约束及表间约束等
  • 确定用户视图:确定了整个系统的关系模式之后,还要根据数据流图及用户信息建立视图模式进步数据的安全性和独立性:
    (1)根据数据流图确定处置惩罚过程使用的视图。
    (2)根据用户范例确定差异用户使用的视图。
11.5 物理结构计划



  • 数据库在物理设备上的存储结构与存取方法称为数据库的物理结构,它依靠于给定的盘算机系统。为一个给定的逻辑数据模子计划个最适合应用要求的物理结构的过程,就是数据库的物理计划。
  • 数据库物理计划的目标:
    (1)使计划出的物理数据库占用较少的存储空间。
    (2)对数据库的操作具有尽大概高的速度。
  • 物理计划的步骤:
    1.确定命据分布:从企业盘算机应用环境出发,需要确定命据是会合管理还是分布式管理,但目前企业内部网及因特网的应用越来越广泛,大都接纳分布式管理。对于数据如何分布需要从以下几个方面考虑:
      (1)根据差异应用分布数据。
      (2)根据处置惩罚要求确定命据的分布。
      (3)对数据的分布存储一定会导致数据的逻辑结构的变革,要对关系模式做新的调整,回到数    据库逻辑计划阶段做须要的修改。
    2.确定命据的存储结构:存储结构具体指数据文件中记录之间的物理结构。在文件中,数据是以记录为单元存储的,可以接纳次序存储、哈希存储、堆存储和B + 树存储等方式。为进步数据的访问速度,通常会接纳索引技术。
    3.确定命据的访问方式:数据的访问方式是由其存储结构所决定的,接纳什么样的存储结构,就使用什么样的访问方式。数据库物理结构重要由存储记录格式、记录在物理设备上的安排及访问路径(存取方法)等构成包括记录的组成、数据项的范例、长度和数据项间的接洽,以及逻辑记录:
    1)存储记录结构计划:到存储记录的映射。
    2)存储记录结构:就是确定命据的存放位置。存储记录作为一个整体,如何分布在物理区域上是数据库物理结构计划的重要环节。接纳聚簇功能可以大大进步按聚簇码举行查询的效率。建立聚簇索引的原则如下:
        (1)聚簇码的值相对稳定,没有或很少需要举行修改。
        (2)表重要用于查询,而且通过聚簇码举行访问或毗连是该表的重要应用。
        (3)对应每个聚簇码值的平均元组数既不太多,也不太少。
    3)存取方法的计划:是为存储在物理设备 (通常是外存储器)上的数据提供存储和检索的能力是快速存取数据库中数据的技术。存取方法包括存储结构和检索机制两部分。此中:存储结构限定了大概访问的路径和存储记录:检索机制定义每个应用的访问路径。在数据库中建立存取路径最广泛的方法是建立索引。确定索引的一样平常次序如下:
    (1)起首可确定关系的存储结构,即记录的存放是无序的,还是按某属性(或属性组)聚簇存放。
    (2)确定不宜建立索引的属性或表。
    (3)确定宜建立索引的属性。
11.6 实施阶段



  • 根据逻辑和物理计划的结果,在盘算机上建立起实际的数据库结构,数据加载(或称装入)举行试运行和评价的过程,叫作数据库的实施(或称实现)。
  • 1)建立实际的数据库结构: 用DBMS 提供的数据定义语言(DDL)编写描述逻辑计划和物理计划结果的程序(一样平常称为数据库脚本程序),经盘算机编译处置惩罚和实行后,就生成了实际的数据库结构。应包罗以下内容:
    (1)数据库模式与子模式以及数据库空间等的描述;
    (2)数据库完备性描述;
    (3)数据库安全性描述;
    (4)数据库物理存储参数描述。
  • 2)数据加载:数据库应用程序的计划应该与数据库计划同时举行。一样平常地,应用程序的计划应该包括数据库加载程序的计划。
  • 3)数据库试运行和评价:一样平常将数据库的试运行和评价结合起来的目的是测试应用程序的功能测试数据库的运行效率是否达到计划目标,是否为用户所容忍。
11.7 运行与维护 

11.7.1 数据库系统的运行



  • 数据库系统的运行筹划重要包括三个方面: 数据库系统运行战略、数据库系统监控对象和监控方式以及数据库系统管理筹划。

  • 制定运行战略:要考虑正常运行战略和非正常运行战略两个方面。
    (1)正常运行战略是指在正常运行状态下的数据库实行战略,包括:
    系统运行对物理环境的要求;
    系统运行对职员的要求;
    数据库的安全性战略;
    数据库备份和恢复战略
    (2)非正常运行战略是指在特殊时期的数据库运行战略,包括:
    突发变乱的应对战略;
    高负载状态的应对战略
  • 确定命据库系统监控对象和监控方式
    (1)依照监控对象的差异,系数据库系统监控的对象分别是系统性能系统故障和系统安全00统监控分为性能监控、故障监控、安全监控。
    ● 性能监控是把握系统运行性能的本事。
    ● 性能监控应当从资源占用率、变乱相应时间、变乱量死锁、用户量等方面实现。
    ● 故障监控是保障数据库系统正常运行的本事。从数据库系统故障的范例入手,监控变乱故障系统故障和介质故障,出现需要管理员干预的故障时及时恢复。
    ● 安全监控是对破坏数据库安全变乱的监控,包括入侵监控、用户访问监控、病毒监控等。
    (2)数据库系统的监控方式分为系统监控和应用程序监控系统。
    ● 监控是通过DBMS 提供的监控功能,举行参数设定后,由系统自动监控。
    ● 应用程序监控需要管理职员根据具体情况编制应用程序举行系统监控,是对DBMS监控功能的补充。
  • 需要注意的是,系统日志是监控中的重要依据。日志文件具体记录了系统运行中的各种信息管理员可以从日志文件中了解系统运行状态和变乱,以此为据发现系统运行中的问题。


  • 1.监控数据的收集与分析:系统监控能够动态地把握数据库的运行状态,监控就是对系统运行信息的记录,称为监控数据,监控数据是发现系统问题和改进系统性能的依据。依照监控的范例,监控数据分为性能监控数据、故障监控数据和安全监控数据
  • 2.稳定运行中的业务连续性:业务连续性是指一个组织的重要业务流程、营运服务,以及IT 服务能够得到连续性处置惩罚。业务连续性需要从以下方面考虑:
    (1)界定哪些是不允许停工的连续性业务,哪些是允许有一定时间的停工期的弹性业务;
    (2)要有业务连续性的技术体系,如高效率服务器、存储系统、网络、DBMS;
    (3)检测和相应管理,包括紧急决策制定、准备工作、最初的紧急相应和系统恢复等全部具体程序;
    (4)要有保障业务连续性的设备
    (5)界定相干职员的职务和权责包括各类技术职员(程序员、管理员和操作员》,实行司理(紧急变乱决策者),设备管理职员(电力、供冷、电缆),人力资源 (人事问题和需求),业务实体(业务流程),以及外部组织(外包机构、电信、供应商等》。
11.7.2 数据库系统的维护 



  • 数据库维护:在数据库运行阶段,对数据库的维护重要由DBA 完成:
    1)对数据库性能的监测和改善;
    2)数据库的备份及故障恢复;
    3)数据库重组和重构:数据库的重组是指在不改变数据库逻辑和物理结构的情况下,去除数据库存储文件中的废弃空间以及碎片空间中的指针链,使数据库记录在物理上紧连。
  • 在数据库系统的运行过程中,大概会由于某些原因需要修改数据库的结构,称为数据库重构.对于如下情况,数据库重组和重构的处置惩罚方法为:
    (1)修改属性列名或数据范例:由于修改表中的属性列名或数据范例,必须修改使用该表的应用程序,以是应尽量减少这样的修改。
    (2)增长和删除属性:只修改使用该列的应用程序。
    (3)约束的修改:如果是DBMS 支持的约束,如主码约束、参照完备性约束和检查约束,一样平常不需要修改应用程序,复杂的约束可以通过修改触发器程序实现。
    (4)表的分解:可以通过建立与分解前表同名的视图来克制修改应用程序。但这样会相应引起性能的降落,如果分解是为了进步性能,则需要修改应用程序,只访问分解后的一个表。
    (5)表的合并:通常也是为了进步系统性能,可以通过建立两个与原表同名的视图来克制应用程序的修改。
  • 在数据库重构过程中引入或修改视图,大概会影响数据的安全性,因此必须对视图举行评价和验证,包管不会由于数据库的重构而引起数据的泄密。
  • 文档必须与系统保持一致性,否则会造成人为的困难和错误。修改汗青必须在文档中体现。
11.7.3 数据库系统的管理



  • 数据字典的管理:当用户使用DDL 语言定义数据库对象或某些DML语言举行表扩展等操作时系统会自动修改数据字典中的元数据。数据字典是只读的,可以利用DBMS 提供相应的数据字典访问下令,访问数据字典的内容。
  • 数据完备性维护和管理: 是通过DBMS 系统提供的完备性约束机制和应用程序来实现,以包管运行过程中数据的准确性。在系统运行过程中对数据完备性的维护和管理接纳两种方式:
    (1)对于DBMS 管理的约束,通过修改数据库的定义,如增长或删除实体完备性约束、参照完备性约束、检查约束来实现。
    (2)对于应用程序实现的复杂的完备性约束,通太过析和修改应用程序,通常是接纳触发器程序来实现。
  • 数据库的存储管理:通过以下本事举行存储管理,可有用地进步系统性能:
    (1)索引文件和数据文件分开存储,变乱日志文件存储在高速设备上。
    (2)适时修改数据文件和索引文件的页面巨细。
    (3)定期对数据举行排序。
    (4)增长须要的索引项。除举行数据库的存储管理之外,也可以通过增长盘算机内存、引入高速存储设备等方式来进步系统的访问效率。
  • 备份和恢复:备份筹划的制定和实施,有以下发起:
    (1)根据数据变更情况,设定合理的备份周期和备份时间,最好是在业务量最小的时段举行备份。
    (2)变乱日志文件生存在最稳定的存储设备上。
    (3)定期在变乱日志文件中加入检查点(Checkpoint)。
  • 并发控制与死锁管理:管理员通过系统监控了或系统日志,找出频繁产存亡锁的变乱,分析死锁的原因,修改变乱程序来减少死锁,进步系统的井发性。
  • 数据安全性管理:实际运行中的数据库系统可以从以下几个方面实现安全性管理:
    (1)建立网络级安全,重要是防火墙的设置。
    (2)操作系统级安全,举行登录用户的管理。
    (3)DBMS级安全,对访问数据库的用户举行密码验证。
    (4)角色和用户的授权管理。
    (5)建立视图和存储过程加强安全性。
    (6)使用审计功能,为追纠非法入侵者法律责任提供证据,发现安全漏洞。
11.7.4 性能调整



  • SQL语句的编码校验:
    ● 尽大概的减少多表查询或建立物化视图
    ● 以不相干子查询代替相干子查询。
    ● 只检索需要的列。
    ● 用带IN的条件子句等价替换OR子句。
    ● 经常提交commit,以尽早释放锁。
  • 表计划的评价:
    ● 如果频繁的对两个相干表举行毗连操作,考虑将其合并;
    ● 如果频繁的访问表中的某一部分字段,考虑分解表,将该部分单独作为一个表;
    ● 对于很少更新的表,引入物化视图。
  • 索引维护和改进:
    ● 如果查询时瓶颈则在关系上建立得当的索引,通常,在作为查询条件的属性上建立索引可以进步查询效率;
    ● 如果更新是瓶颈,考虑删除某些索引;
    ● 选择得当的索引范例,如果经常使用范围查询,则B树索引比散列索引更高效;
    ● 将有利于大多数数据查询和更新的索引设为聚簇索引。
  • 设备增强:在数据库系统运行过程中,如果经过各种调整之后,仍不能满足性能要求,则应当考虑增强系统设备。例如,引入高速的盘算机、增长系统内存、使用高速的网络设备和高速的存储设备等方面。
第十二章 变乱管理

12.1 变乱的基本概念



  • DBMS运行的基本工作单元是变乱。
  • 变乱是用户定义的一个数据库操作序列,这些操作序列要么全做,要么全不做,是一个不可分割的工作单元,变乱和程序是两个差异的概念,一样平常一个程序可包罗多个变乱。一个变乱由应用程序的一组操作序列组成,变乱定义的语句如下:
    (1)BEGIN TRANSACTION: 变乱开始;
    (2)END TRANSACTION: 变乱结束;
    (3)COMMIT:变乱提交。该操作表示变乱成功地结束,它将通知变乱管理器该变乱的全部更新操作现在可以被提交或永久地保存;
    (4)ROLLBACK:变乱回滚。该操作表示变乱非成功地结束,它将通知变乱管理器出故障了,数据库大概处于不一致状态,该变乱的全部更新操作必须回滚或撤销。
  • 变乱状态:
    如果不出现故障,那么全部变乱都能实行完成。一旦在实行过程中发生故障,不能实行完成的变乱称为中断变乱;将中断变乱对数据库的更新撤销称为变乱回滚;成功实行完成的变乱称为己提交变乱。
  • 中断的变乱是可以回滚的,通过回滚恢复数据库,保持数据库的一致性,这是DBMS的责任。己提交的变乱是不能回滚的,必须由程序员或DBA 手工实行一个“补偿变乱”才气撤销提交的变乱对数据库的影响。
  • 为了更明确地描述变乱的实行过程,一样平常将变乱的实行状态分为五种:
    (1)运动状态:变乱的初始状态,变乱实行时处于这个状态。
    (2)部分提交状态:当操作序列的最后一条语句自动实行后,变乱处于部分提交状态。这时势务虽然己经完全实行,但由于实际输出大概还暂时驻留在内存中,在变乱成功完成前仍有大概出现硬件故障,变乱仍有大概不得不中断。因此,部分提交状态并不等于变乱成功实行。
    (3)失败状态:由于硬件或逻辑等错误,使得变乱不能继续正常实行,变乱就进入了失败状态处于失败状态的变乱必须举行回滚 (ROLLBACK) 。这样,变乱就进入了中断状态。
    (4)中断状态:变乱回滚而且数据库恢复到变乱开始实行前的状态。可选重启变乱或杀死变乱。
    (5)提交状态:当变乱成功完成后,称变乱处于提交状态。只有变乱处于提交状态后,才气说变乱已经提交。

12.2 数据库的并发控制



  • 变乱:由一系列操作组成,这些操作,要么全做,要么全不做,拥有四种特性,详解如下:(操作)原子性:要么全做,要么全不做。(数据)一致性:变乱发生后数据是一致的,例如银行转账,不会存在A账户转出,但是B账户没收到的情况。(实行)隔离性:任一变乱的更新操作直到其成功提交的整个过程对其他变乱都是不可见的,差异变乱之间是隔离的,互不干涉。(改变)连续性:变乱操作的结果是连续性的。
  • 变乱是并发控制的条件条件,并发控制就是控制差异的变乱并发实行,进步系统效率,但是并发控制中存在下面三个问题:
    丢失更新:变乱1对数据A举行了修改并写回变乱2也对A举行了修改并写回此时势务2写回的数据会覆盖变乱1写回的数据,就丢失了变乱1对A的更新。即对数据A的更新会被覆盖
    不可重复读:变乱2读A,而后变乱1对数据A举行了修改并写回,此时若变乱2再读A,发现数据不对。即一个变乱重复读A两次,会发现数据A有误。
    读脏数据:变乱1对数据A举行了修改后,变乱2读数据A,而后变乱1回滚,数据A恢复了原来的值,那么变乱2对数据A做的事是无效的,读到了脏数据。



  • X锁是排它锁(写锁)。若变乱T对数据对象A加上X锁,则只允许T读取和修改其他变乱都不能再对A加任何范例的锁,直到T释放A上的锁。
  • S锁是共享锁(读锁)。若变乱T对数据对象A加上S锁,则只允许T读取A,但不能修改A,其他变乱只能再对A加S锁 (也即能读不能修改),直到T释放A上的S锁。
共分为三级封锁协议,如下
一级封锁协议:变乱在修改数据R之前必须先对其加X锁,直到变乱结束才释放。可解决丢失更新问题:

二级封锁协议:
一级封锁协议的底子上加上变乱T在读数据R之前必须先对其加S锁,读完后即可释放S锁。
可解决丢失更新、读脏数据问题:
 

三级封锁协议:
级封锁协议加上变乱T在读取数据R之前先对其加S锁,直到变乱结束才释放可解决丢失更新读脏数据、数据重复读问题




  • 串行调度(serial schedule) 是指多个变乱依次串行实行,且只有当一个变乱的全部操作都实行完后才实行另一个变乱的全部操作。
  • 并发调度 (concurrent schedule): 利用分时的方法同时处置惩罚多变乱”其实行的结果与串行调度实行的结果雷同,则称这个并发调度是准确的。可恢复调度:若变乱Ti提交失败,则应当撤销Ti的影响以包管其原子性。在允许并发实行的系统中,还必须确保依靠于Ti的任何变乱也中断。例如,Ti要读Ti写的数据,则称T 依靠于Ti。
  • 可恢复调度(recoverable schedule) 应满足: 当变乱 要读变乱Ti 写的数据时,变乱Ti必须要先于变乱Ti 提交
  • 可串行化的调度:多个变乱的并发实行是准确的当且仅当其结果与某一次序串行地实行它们时的结果雷同,称这种调度战略是可串行化的调度(serializability schedule)。
  • 辩论可串行化
    辩论 (conflict):当li和li是差异变乱在雷同的数据项上操作的下令,月至少有一个是write 下令时,则称i与ii是辩论的。
  • 等价调度:设l与i是调度S 的两条连续的下令,若与是差异变乱的下令且不辩论,则可以互换li与ij的次序得到一个新的调度S*。我们称S 与S*是等价的。
【两段锁协议】


  • 两段锁协议:是指对任何数据举行读写之前必须对该数据加锁在释放一个封锁之后,变乱不生长阶段(加锁、扩展阶段)再申请和获得任何其他封锁。每个变乱的实行可以分为两个阶段和衰退阶段 (解锁、收缩阶段)。
  • 加锁阶段:在该阶段可以举行加锁操作。在对任何数据举行读操作之前要申请并获得S锁,在举行写操作之前要申请并获得X锁。加锁不成功,则变乱进入等待状态,直到加锁成功才继续实行。
  • 解锁阶段:当变乱释放了一个封锁以后,变乱进入解锁阶段,在该阶段只能举行解锁操作不能再举行加锁操作
  • 如果变乱部遵照两段锁协议,那么它们的并发调度是可串行化的。两段锁是可串行化的充分条件,但不是须要条件。需要注意的是接纳两段锁协议也有大概产存亡锁,这是由于每个变乱都不能及时解除被它封锁的数据,大概会导致多个变乱互相都要求对方己封锁的数据不能继续运行。
  • 封锁的粒度封锁的粒度是被封锁数据目标的巨细,在关系数据库中封锁粒度有属性值、属性值集、元组关系、索引项、整个关系数据库等几种。
  • 封锁粒度小则并发性高,但开销大,封锁粒度大则并发性低,但开销小。
【数据库变乱的四种隔离级别】
数据库变乱的四种隔离级别数据库变乱的隔离级别有4个,由低到高依次为Readuncommitted、Read committed.Repeatable read、Serializable.


  • READ UNCOMMITTED:读未提交,这是变乱最低的隔离级别,它允许另外一个变乱可以看到这个变乱未提交的数据
  • READ COMMITTED: 读提交,包管一个变乱修改的数据提交后才气被另外一个变乱读取另外一个变乱不能读取该变乱未提交的数据。解决丢失更新、读脏数据问题。
  • REPEATABLE READ:重复读,在开始读变乱时,不允许修改操作。进一步解决了不可重复读问题。
  • SERIALIZABLE:这是耗费最高代价但是最可靠的变乱隔离级别。变乱被处置惩罚为串行化实行。
12.3 数据库的故障与恢复

12.3.1 变乱故障



  • 数据库故障重要分:变乱故障、系统故障和介质故障。
  • 变乱故障:是由于程序实行错误而引起变乱非预期的、异常制止的故障。通常有如下两类错误引起变乱实行失败。
    (1)逻辑错误。如非法输入、找不到数据、溢出、超出资源限定等原因引起的变乱实行失败(2)系统错误。系统进入一种不良状态(如死锁),导致变乱无法继续实行
  • 对于不可以预期的错误应用程序无法处置惩罚,是由DBMS 系统实现故障恢复的。如非法输入、运算溢出等。非预期的故障如非法输入是由约束机制检查并恢复的。变乱故障通常指非预期的故障变乱故障意味着变乱没有达到预期的止境,因此数据库大概处于不准确状态。恢复程序要在不影响其他变乱运行的情况下,强行回滚该变乱,即撤销该变乱己经做出的任何对数据库的修改,这类恢复操作称为变乱撤销 (UNDO)。
    恢复过程:
    (1)反向 (从后向前)扫描日志文件查找该变乱的更新操作;
    (2)对该变乱的更新操作实行逆操作,也就是将日志记录更新前的值写入数据库;
    (3)继续反向扫描日志文件,查找该变乱的其他更新操作,并作同样处置惩罚;
    (4)云云处置惩罚下去,直到读到了此变乱的开始标记,变乱故障恢复就完成了。
  • 变乱故障的恢复由系统自动完成,对用户是透明的。
12.3.2 系统故障

系统故障(通常称为软故障):是指硬件故障、软件(如DBMS、OS 或应用程》漏的影响,导致丢失了内存中的信息,影响正在实行的变乱,但未破坏存储在外存上的信息。这种情况称为故障 - 制止假设。


  • 系统故障会使数据库的数据不一致,原因有两个:
    (1)是未完成的变乱对数据库的更新大概己写入数据库;
    (2)是己提交的变乱对数据库的更新大概还在缓冲区中没来得及写入数据库。因此恢复操作就是要撤销故障发生时未完成的变乱,重做 (REDO) 已提交的变乱。
  • 恢复过程:
    (1)正向 (重新到尾)扫描日志文件,找出故障发生前已经提交的变乱 (这些变乱既有BEGINTRANSACTION 记录,也有COMMIT记录),将其变乱标识记入重做 (REDO) 队列。同时找出故障发生时尚未完成的变乱 (这些变乱只有BEGIN TRANSACTION 记录,无相应的COMMIT记录),将其变乱标识记入撤销 (UNDO) 队列;
    (2)反向扫描日志文件,对每个UNDO变乱的更新操作实行逆操作,也就是将日志记录中更新前的值写入数据库。对每个REDO变乱重新实行日志文件登记的操作,也就是将日志记录中更;
    (3)正向扫描日志文件,新后的值写入数据库。
  • 系统故障是在系统重启之后自动实行的,对用户是透明的 
12.3.3 介质故障 

介质故障(称为硬件故障):是指外存故障,例如磁盘损坏、磁头碰撞,瞬时强磁场干扰等。这类故障将破坏数据库或部分数据库,并影响正在存取这部分数据的全部变乱,日志文件也被破坏。


  • 恢复过程:
    (1)装入最新的数据库后备副本,使数据库恢复到最近一次转储时的一致性状态;
    (2)转入相应的日志文件副本,重做已完成的变乱。
  • 介质故障的恢复需要DBA的参与,具体的恢复操作仍由DBMS完成。
12.3.4 数据库备份



  • 静态转储:即冷备份,指在转储期间不许对数据库举行任何存取、修改操作;优点是非常快速的备份方法、容易归档(直接物理复制操作);缺点是只能提供到某一时间点上的恢复,不能做其他工作,不能按表或按用户恢复。
  • 动态转储:即热备份,在转储期间允许对数据库举行存取、修改操作,因此,转储和用户变乱可并发实行,优点是可在表空间或数据库文件级备份,数据库仍可使用,可达到秒级恢复;缺点是不能堕落,否则后果严重,若热备份不成功,所得结果几平全部无效。
  • 海量转储和增量转储。海量转储是指每次转储全部数据,增量转储是指每次只转储上次转储后更新过的数据。
    ● 完全备份:备份全部数据。
    ● 差量备份:仅备份上一次完全备份之后变革的数据。
    ● 增量备份:备份上一次备份之后变革的数据。
  • 日志文件
    ● 在变乱处置惩罚过程中,DBMS把变乱开始、变乱结束以及对数据库的插入、删除和修改的每一次操作写入日志文件。一旦发生故障,DBMS的恢复子系统利用日志文件撤销变乱对数据库的改变回退到变乱的初始状态。
    ● 备份毕竟是偶然间节点的,不是实时的,例如:上一次备份到这次备份之间数据库出现了故障则这期间的数据无法恢复,因此,引入日志文件,可以实时记录针对数据库的任何操作,包管数据库可以实时恢复。
  • 数据库镜像:
    根据DBA的要求,自动把整个数据库或此中的关键数据复制到另一个磁盘上。DBMS自动包管镜像数据与主数据的一致性。
    作用:用于数据库的恢复;用于并发操作。
12.4 数据库的安全性与完备性 



  • 恶意访问的形式重要包括: 未经授权读取数据(窃取信息);未经授权修改数据,未经授权破坏数据。
  • 数据库安全性(data base security) 指保护数据库不受恶意访问。为了保护数据库的安全可以在以下五个条理上采取安全性措施:
    (1)数据库系统条理 (database system)。数据库系统的某些用户获得的授权大概只允许他访问数据库中有限的部分,而另外一些用户获得的授权大概允许他提出查询,但不允许他修改数据包管这样的授权限定不被违背是数据库系统的责任。
    (2)操作系统条理 (operating system)。不管数据库系统多安全,操作系统安全性方面的缺点总是大概成为对数据库举行未授权访问的一种本事。
    (3)网络条理(network)。由于几乎全部的数据库系统都允许通过终端或网络举行远程访问网络软件的软件层安全性和物理安全性一样重要,不管在因特网上还是在私有的网络内。
    (4)物理条理(physical)。盘算机系统所位于的结点(一个或多个)必须在物理上受到保护,以防止入侵者强行闯入或暗中潜入。
    (5)职员条理(human)。对用户的授权必须格外小心,以减少授权用户接受贿赂或其他利益而给入侵者提供访问机会的大概性。
  • 为了包管数据库安全,用户必须在上述全部条理上举行安全性维护。如果较低条理上(物理条理或职员条理)安全性存在缺陷,高层安全性措施即使很严格也大概被绕过。下面重要在数据库系统条理上讨论安全性,重要包括: 权限机制、视图机制和数据加密。
  • 授权:通过DBMA提供的授权功能赋予用户在数据库各个部分上的几种形式的授权,此中包括read、insert、update、 delete。
  • 用户还可以获得修改数据库模式的授权: index 授权允许创建和删除索引。resource 授权允许创建新关系。alteration 授权允许添加或删除关系中的属性。drop 授权允许删除关系。
  • 用户角色是具有雷同操作权限的用户聚集,差异角色的用户授予差异的数据管理和访问操作权限。一样平常可以将权限角色分为三类: 数据库登录权限类、资源管理权限类、DBA权限类。
  • 存取控制(数据授权):数据库授权可以分为静态授权和动态授权:
    ● 静态授权是DBMS的隐性授权,也即用户对于自己所拥有的信息是不需要有指定的授权动作就拥有管理和操作权限的。
    ● 动态授权指数据对象的全部者或者DBA默认的拥有对数据的存取权,允许他们把这些权利授子其他的用户。
  • 访问控制可以对用户访问的数据对象举行控制,数据对象粒度从大到小分为如下四个级别:数● 据库级别;
    ● 表级,判定用户是否可以访问关系内里的内容;
    ● 记录级,判定用户是否能访问关系中的一行记录的内容属性级,判定用户是否能访问某列的内容。
  • 视图控制:建立视图,将表中的数据按应用显现和隐蔽,有助于隐蔽表中的关键信息,增强安全性。
  • 审计功能:是一种事后监督的本事。审计作为一种安全检查的措施,会把系统的运行状态和用户访问数据库的行为记录以日志生存下来,该日志作为稽查用户行为的一种证据。数据库系统的审计工作包括: 设备安全审计、操作审计、应用计划、攻击审计
  • 数据加密:防止数据库的敏感信息在存储和传输过程中被窃取的有用本事。包括数据传输加密技术、数据存储加密技术、数据完备性鉴别技术、密钥管理技术。
第十三章 云盘算与大数据处置惩罚

13.1 云盘算

13.1.1 云盘算的关键特征



  • 云盘算是与信息技术、软件、互联网相干的一种服务,这种盘算资源共享池叫作“云”,,云盘算把很多盘算资源聚集起来,通过软件实现自动化管理,只需要很少的人参与,就能让资源被快速提供。
  • 云盘算的关键特征:
    1)广泛的网络接入:用户可以通过网络,接纳尺度机制访问云中的物理和虚拟资源的特性。尺度机制有助于用户通过异构平台使用资源。
    2)可测量的服务:通过可计量的服务交付使得服务使用情况可监控、控制和计费的特性。这个特性强调用户只为自己使用的服务付费,低落用户本钱,为用户带来代价。
    3)多租户:通过对物理或虚拟资源的分配包管多个租户以及他们的盘算和数据彼此隔离和不可访问的特性。在云中可以实现多种差异形式的租户组织。
    4)按需自服务:客户能够根据自身的实际需求,自动或在最少交互的情况下,配置盘算能力的特性。
    5)快速的弹性和可扩展性:物理或虚拟资源能够快速、弹性,偶然是自动化地供应,以达到快速增减资源目的的特性。
    6)资源池化:将云服务提供者的物理或虚拟资源举行集成,以便服务于一个或多个云服务客户的特性。该特性通过抽象对用户屏蔽了资源处置惩罚和分配的复杂性,用户无需知道资源是如何分布,如何分配的。
  • 其他关键特征:.
    1) 虚拟化技术 虚拟化突破了时间、空间的界限,是云盘算最为明显的特点。
    2) 可靠性高:倘若服务器故障也不影响盘算与应用的正常运行。
    3)性价比高。
13.1.2 云盘算分类



  • 根据云部署模式和云应用范围分类
    1)公有云:云的底子设施一样平常是被一个云盘算服务提供商所拥有,该组织将云盘算服务销售给
    公众。
    2)社区云:云的底子设施被一些组织共享,并为一个有共同关注点的社区服务(例如任务、安全要求、政策和遵守的考虑)。
    3)私有云:云的底子设施是为一个客户单独使用而构建的。
    4)混合云:云的底子设施是由两种或两种以上的云(私有、社区或公有)组成,每种云仍然保持独立,但用尺度的或专有的技术将它们组合起来,具有数据和应用程序的可移植性《例如,可以用来处置惩罚突发负载),混合云有助于提供按需和外部供应方面的扩展。
  • 根据云盘算的服务条理和服务范例分类:
    1)底子设施即服务(aas): 底子设施即服务是重要的服务类别之一,提供虚拟化盘算资源,如虚拟机、存储、网络和操作系统。通过网络作为尺度化服务提供按需付费的弹性底子设施服务其焦点技术是虚拟化。
    2)平台即服务(PaaS):平台即服务是一种服务类别,为开发职员提供通过全球互联网构建应用程序和服务的平台。Paas 为开发、测试和管理软件应用程序提供按需开发环境。其焦点技术是分布式并行盘算。
    3)软件即服务(Saas): 软件即服务也是其服务的一类,通过互联网提供按需软件付费应用程序云盘算提供商托管和管理软件应用程序,并允许其用户毗连到应用程序井通过互联网访问应用程字。、
13.1.3 云关键技术

1.虚拟化技术 是一种资源管理技术,是将盘算机的各种实体资源(CPU、内存、磁盘空间、网络适配器等)予以抽象、转换后呈现出来,并可供分割、组合为一个或多个电脑配置环境。云盘算中的虚拟化每每指的是系统虚拟化。系统虚拟化是指将一台物理盘算机系统虚拟化为一台或多台虚拟盘算机系统。
2.分布式数据存储:包罗非结构化数据存储和结构化数据存储。此中,非结构化数据存储重要接纳文件存储和对象存技术62而结构化数据荐储生要接纳分布式数据库技术,特别是NOSQL数据库。
3.并行盘算:云盘算下把海量数据分布到多个结点上,将盘算并行化,利用多机的盘算资源,加快数据处置惩罚的速度。云盘算下的并行处置惩罚需要考虑以下关键问题,任务分别、任务调度和自动容错处置惩罚机制。
4.运营支撑管理:为了支持规模巨大的云盘算环境,需要成千上万台服务器来支撑。如何对数以万计的服务器举行稳定高效地运营管理,成为云服务被用户认可的关键因素之一。
13.1.4 云盘算的安全

云盘算面临的重要数据安全问题和风险包括:
(1)数据存储及访问控制:数据丢失或损坏,数据被非法访问和篡改,多租户之间的数据干扰走漏,数据服务被壅闭,逾期数据的妥善保管或销毁等等。
(2)数据传输保护:数据在分布式应用中传递时被窃取或攻击。
(3)数据隐私及敏感信息保护:数据全部权问题,非法授信,隐私走漏等。
(4)数据可用性:异常瓦解、业务制止等。
(4)依从性管理:数据服务违背了法律及政策的要求等。
针对上述盘算面临的重要数据安全问题和风险,相应可采取的数据安全管理技术列举如下:
(1)数据保护及隐私保护:包括虚拟镜像安全、数据加密及解密、数据验证、密钥管理、数据恢复、云迁移的数据安全等。
(2)身份及访问管理: 包括身份验证、目录服务、联邦身份鉴别/单点登录(Single Sign、个人身份信息保护、安全断言置标语言、虚拟资源访问、多租用数据授权、基于角色on,sso)的数据访问、云防火墙技术等。
(3)数据传输:包括传输加密及解密、密钥管理、信任管理等。
(4)可用性管理:包括单点失败 (SPOF)、主机防攻击、容灾保护等。
(5)日志管理:包括日志系统、可用性监控、流量监控、数据完备性监控、网络入侵监控等。
(6)审计管理:包括审计信任管理、审计数据加密等。
(7)依从性管理:包括确保数据存储和使用等符合相干的风险管理和安全管理的规定要求。
13.1.5 云安全实施的步骤

(1)确保拥有有用的管理、风险及合规性流程;
(2)审计运维和业务流程报告;
(3)管理职员、角色及身份;
(4)的确保对数据和信息的合理保护;
(5)实行隐私战略;
(6)评估云应用程序的安全规定;
(7)确保云网络和毗连的安全性;
(8)的评估物理底子设施和设备的安全管理;
(9)管理云服务水平协议(SLA)的安全条款;
(10)了解退出过程的安全需要。
13.2 大数据 



  • 大数据是具有数目巨大、泉源多样、生成极快且多变等特征且难以使用传统数据体系结构有用处置惩罚的包罗大量数据集的数据。
  • 大数据的5V特征: Variety (多样性)、Velocity (速度) 、Volume (数目) 、Value (代价)Veracity (真实性)。
  • 从大数据生命周期的角度看,大数据处置惩罚的基本流程包括:数据收罗、数据分析和数据解释。

第十四章 数据库主流应用技术

14.1 分布式数据库



  • 分布式数据库是一个物理上分布在盘算机网络的差异地点,而逻辑上又属于同一系统的数据聚集。网络的每个站点的数据库都有自治能力,能够完成局部应用,同时每个站点的数据库又属于整个系统,通过网络也可以完玉成局应用。其组成如下图:

满足下面条件的数据库系统被称为完全分布式数据库系统:
(1)分布性:即数据存储在多个差异的节点上。
(2)逻辑相干性:即数据库系统内的数据在逻辑上具有相互关联的特性。
(3)场地透明性:即使用分布式数据库中的数据时不需指明数据所在的位置。
(4)场地自治性:即每一个单独的节点能够实行局部的应用请求。


  • 分布式数据库的特点:数据的会合控制性数据独立性;数据几余可控性;场地自治性存取的有用性。
  • 局部数据库位于差异的物理位置,使用一个全局DBMS将全部局部数据库联网管理。其四层体系结构如下图所示:



  • 从分布透明特性来说,分布式数据库的全局概念层应具有三种模式描述信息:
    (1)全局概念模式:
    (2)分片模式:描述全局数据逻辑分别的视图它是全局数据的逻辑结构根据某种条件的分别每一个逻辑分别即一个片段,或称为分片。
    (3)分配模式:描述局部逻辑的局部物理结构,是分别后的片段(或分片)的物理分配视图它与会合式数据库物理存储结构的概念差异,是全局概念层的内容。
  • 分片模式:
    水平分片:将表中水平的记录分别存放在差异的地方。
    垂直分片:将表中的垂直的列值分别存放在差异的地方。
    水平和垂直结合的分片:以上两种的混合。
  • 分布透明性:
    分片透明性:用户或应用程序不需要知道逻辑上访问的表具体是如何分块存储的。
    位置透明性:应用程序不关心数据存储物理位置的改变。
    逻辑透明性:用户或应用程序无需知道局部使用的是哪种数据模子。
    复制透明性:用户或应用程序不关心复制的数据从何而来。 
  • 分布式数据库的查询和优化与会合式数据库相比,分布式数据库查询还要考虑以下两方面:
    (1)数据和信息均要通过通讯线路举行传输,存在的延迟问题将减慢整个查询的实行过程。(2)网络中多处置惩罚器的存在提供了并行数据处置惩罚和传输的机会,应充分利用以加快查询速度.查询优化:查询实行代价的优化、查询相应时间的优化。
  • 分布式数据库管理系统DDBMS包括综合型和联合型两种体系结构:
    (1)综合型体系结构:是指在分布式数据库建立之前,还没有建立独立的会合式数据库管理系统,计划职员根据用户的需求,计划出一个全新的完备的数据库管理系统。
    (2)联合型体系结构:是指每个节点的数据库管理系统已经存在,在此底子上建立的分布式数据库系统。同时,联合型体系结构又分为同构系统和异构系统。
  • 分布式数据库管理系统由四部分组成DBMS(局部数据库管理系统)、GDBMS(全局数据).、库管理系统)、全局数据字典 (GDD)、通讯管理(CM)。
  • 分布式变乱特性:原子性、可串行性或一致性、隔离性、持久性。与会合式数据库变乱区别:
    (1)实行特性:创建一个控制历程调和各子变乱的操作。
    (2)操作特性:需要加入大量通讯原语负责调和历程和署理历程之间的数据传送等。
    (3)控制制板文“变乱操作举行调和。
  • 分布式数据库故障:介质故障、系统故障、变乱故障、网络分割故障、报文故障分布式数据库的恢复原则:
    1)孤立和逐步退失变乱的原则: 对于不影响其他变乱的可排除性局部故障,例如变乱操作的删除超时、违背完备性规则、资源、限定、死锁等,应令某个变乱孤立地和逐步地退出,将其所做过的修改复原,即做UNDO。
    2)成功结束变乱原则:成功结束变乱所做过的修改应超越各种故障,当故障发生时,应该重做(REDO) 变乱的全部操作。
    3)天折变乱的原则:若发生了非局部性的不可排除的故障,例如系统崩愤,则撤销全部变乱,恢复到初态。这有两种做法:一种是利用数据库的备份实现:另一种是按反向次序操作,复原其启动以来所做过的一切修改。
  • 两阶段提交2PC:包管分布式变乱的原子性。由于数据库分布在差异的地址位置,其变乱大概涉及到差异数据库的操作,需要二阶段提交来包管原子性。
  • 第一阶段是表决阶段,目的是形成一个共同的决定,由调和者发起开始提交的记录,全部参与者决定是否能提交本地变乱,只要有一个参与者做出发起撤销的提议,为了包管原子性,调和者就必须整体上撤销这个提交。
  • 第二阶段是实行阶段,调和者依据第一阶段的决定实行撤销或提交该变乱。
14.2 Web与数据库



  • 数据与资源共享这两种技术的结合即成为今天广泛应用的Web 数据库(也叫网络数据库)个Web 数据库就是用户利用欣赏器作为输入接口,输入所需要的数据,欣赏器将这些数据传送给网站,由网站对这些数据举行处置惩罚。网站上的后台数据库就是Web 数据库。
  • 毗连数据库的常用方法: ODBC、DAO、RDO、ADO。
  • Web和数据库的运行模式:

14.3 XML与数据库



  • XML,意为可扩展的标记语言。XML是一套定义语义标记的规则,这些标记将文档分成很多部件并对这些部件加以标识。
  • 接纳文件存储XML,那么会受到文件系统的限定,出现如下问题: 巨细、并发性、工具选择.版本、安全、综合性(会合和重复)。
  • XML文档中的数据视图模子:
    (1)表格模子:很多中央件软件包都接纳表格模子在XML和关系型数据库之间举行转换。它把XML的模子当作是一个单独的表格或者是一系列的表格。
    (2)特定命据对象模子:在该模子中,元素范例通常对应对象,而XML 中的内容模子、属性和PCDATA则对应对象的属性。这种模子直接映射成面向对象的数据库和条理型数据库,当然借助于传统的对象-关系映射技术和SOL对象视图也可以映射成关系数据库。
14.4 面向对象数据库



  • 数据库技术与面向对象程序计划方法相结合形成了面向对象数据库系统(OODBS),它是支持将数据当作对象来模拟和创造的一种数据库管理系统。通常认为,对象数据库必须满足两项尺度:它必须是一个数据库管理系统,而且必须是面向对象的系统。
  • 面向对象数据库系统的特征:
    (1)面向对象数据库系统应该具有表达和管理对象的能力。
    (2)面向对象数据库系统中的对象可以具有恣意复杂度的对象结构。
    (3)面向对象数据库系统必须具有与面向对象编程语言交互的接口。
    (4)面向对象数据库应具有表达和管理数据库变革的能力。
  • 面向对象数据模子的基本概念有对象、类、继承、对象标识、对象嵌套等。
    1.对象结构我们可以认为一个对象对应着E-R 模子中的一个实体。对象中封装的属性和方法对外界是不可见的,对象之间的相互作用要通过消息来实现。一样平常来讲,一个对象包括:属性聚集方法聚集、消息聚集。
    2.对象类:在面向对象数据库中,类是一系列相似对象的聚集,对应于E-R 模子中的实体集概念3.继承与多重继承。
    4.对象标识:每个对象有一个唯一的、由系统生成的对象标识。
    5.对象嵌套:对象的一个属性可以是一个单一值,也可以是一个来自于值域的值集,即一个对象的属性可以是一个对象,形成了嵌套关系。一个对象被称为复杂对象,如果它的某个属性的值是另一个对象。
  • 面向对象数据库语言重要包括对象定义语言和对象操纵语言。对象查询语言是对象操纵语言的个重要子集。面向对象数据库语言一样平常应具备功能:类的定义和操纵、操作/方法的定义、对象的操纵。
  • 对象关系数据模子扩展关系数据模子的方式是通过提供一个包括复杂数据范例和面向对象的更丰富的范例系统。有如下本事:
    (1)嵌套关系
    (2)复杂范例
    (3)继承、引用范例
    (4)与复杂范例有关的查询
    (5)函数与过程。
    (6)面向对象与对象关系
14.5 大数据与数据库



  • 大数据是一种具有海量的数据规模,在获取、存储、管理和分析等方面都远远超过传统数据库处置惩罚范围的数据聚集。
  • 工业界便用三大特征作为大数据的分类尺度。第一个维度是体量大,第二个维度是速度快,第个维度是多样性。
  • 大数据之数据仓库计划:数据仓库相干内容在数据库技术底子已经论述过,这里不再整述。
  • 数据转移,也称为数据转换或数据变更,就是把多种传统资源或外部资源信息中不完善的数据自动转换为商务中准确可靠的数据。在数据仓库环境中举行数据转移的目的应该有两个:
    第一,改进数据仓库中数据的质量;
    第二,进步数据仓库中数据的可用性。
  • 包括四种转移范例:
    (1)简朴转移。简朴转移是全部数据转移的基本构成单元。
    (2)洗濯。洗濯的目的是包管前后一致地格式化和使用某--字段或相干的字段群。
    (3)集成。集成是指将业务数据从一个或几个泉源中取出,并逐字段地将数据映射到数据仓库的新数据结构上。
    (4)聚集和概括。聚集和概括是把业务环境中找到的零星数据压缩成仓库环境中的较少数据块.。 

14.6 NewSQL 



  • NewSQL 是一种新型关系数据库管理系统是对各种新的可扩展和高性能数据库的简称,这类数据库不但具有NoSQL 对海量数据的存储管理力,试图为联机变乱处置惩罚(OLTP)读写工作负载提供与NOSQL系统雷同的可伸缩性能,还保持了传统数据库支持ACID 和SQL等特性。
  • NewSQL 系统虽然在的内部结构变革很大,但是它们有两个明显的共同特点: 支持关系数据模子和使用SQL 作为其重要的接口。目前NewSQL 系统可通过架构、SQL引擎和数据分片分成三类:
    (1)新架构:接纳新架构的NewSQL 系统是全新的数据库平台,使用两种差异的计划方法:
    第一种计划的数据库工作在一个分布式集群的节点上,此中每个节点拥有一个数据子集。SQI查询被分成查询片段发送给自己所在的数据的节点上实行。
    第二种计划的数据库系统通常有一个单一的主节点的数据源。它们有一组节点用来做变乱处置惩罚这些节点接到特定的SQL 查询后,会把它所需的全部数据从主节点上取返来后实行SQL查询,再返回结果。
    (2)SQL引擎:第二类是高度优化的SQL 存储引警。这些系统提供了MySQL 雷同的编程接口,但扩展性比MySQL内置的引警更好。
    (3)数据分片:关系型数据库不能满足每秒大量的数据操作和写入率。为了解决这个问题,提供了分片的中央件层,数据库自动分割在多个节点运行。
第十五章 知识产权和尺度化

15.1 知识产权概述



  • 知识产权是指公民、法人、非法人单元对自己的创造性智力成果和其他科技成果依法享有的民事权。是智力成果的创造人依法享有的权利和在生产经营运动中标记全部人依法所享有的权利的总称。包罗著作权、专利权、商标权、贸易秘密权、植物新品种权、集成电路布图计划权和地理标志权等
  • 无体性:知识产权的对象是没有具体形体,是智力创造成果,是一种抽象的产业。
  • 专有性:指除权利人同意或法律规定外,权利人以外的任何人不得享有或使用该项权利。
  • 地域性:指知识产权只在授予其权利的国家或确认其权利的国家产生,而且只能在该国范围内受法律保护,而其他国家则不受保护。
  • 时间性:仅在法律规定的限期内受到保护,一旦超过限期,权利自行消灭相干知识产品即成为整个社会的共同产业,为全人类所共同使用。
15.2 保护限期

知识产权具有地域限定,保护限期各种情况如下表所示:

15.3 知识产权人的确定

知识产权人的确定:
(1)职务作品

(2)委托作品
单元和委托的区别在于,当合同中未规定著作权的归属时,著作权默认归于单元,而委托创作中,著作权默认归属于创作方个人,具体如下:

15.4 侵权判定



  • 中国公民、法人或者其他组织的作品,不论是否发表,都享有著作权开发软件所用的头脑、处置惩罚过程、操作方法或者数学概念不受保护。
  • 著作权法不适用于下列情况法律、法规、国家机关的决议、决定、下令和其他具有立法、行政、司法性质的文件,及其官方正式译文;时势新闻;历法、通用数表、通用表格和公式。
侵权判定:

15.5 尺度分别 

根据尺度制定机构和适用范围的差异,可分为国际尺度、国家尺度、行业尺度、区域/地方尺度和企业尺度:
(1)国际尺度是指国际尺度化组织 (IS0)、国际电工委员会 (IEC) 和国际电信同盟 (ITU)制定的尺度以及国际尺度化组织确认并公布的其他国际组织制定的尺度。国际尺度在世界范围内统一使用,提供各国参考;
(2)国家尺度:是指由国家尺度化主管机构制定或答应发布,在天下范围内统一适用的尺度。好比:GB-.中华人民共和国国家尺度;强制性国家尺度代号为GB,推荐性国家尺度代号为GB/T,国家尺度指导性文件代号为GBZ,国军标代号为GJB,ANSI(American National Standards nstitute) ---美国国家尺度协会尺度;
(3)行业尺度:是由某个行业机构、团体等制定的,适用于某个特定行业业务范畴的尺度。好比:IEEE美国电气电子工程师学会尺度;GA---公共安全尺度,YD---通讯行业尺度。
(4)区域/地方尺度:是由某一区域/地方内的尺度化主管机构制定、答应发布的,适用于某个特定区域/地方的尺度。好比:EN---欧洲尺度;
(5)企业尺度:是企业范围内根据需要调和、统一的技术要求、管理要求和工作要求所制定的尺度,适用于本企业内部的尺度。一样平常以Q字开头,好比Q/320101 RER 007--2012,此中320101代表地区,RER代表企业名称代号,001代表该企业该尺度的序号,2012代表年号。

 相干章节:

【软考数据库】第一章 盘算机系统底子知识 
【软考数据库】第二章 程序语言底子知识
【软考数据库】第三章 数据结构与算法
【软考数据库】第四章 操作系统知识
【软考数据库】第五章 盘算机网络
【软考数据库】第六章 数据库技术底子
【软考数据库】第七章 关系数据库
【软考数据库】第八章 数据库SQL语言
【软考数据库】第九章 非关系型数据库NOSQL
【软考数据库】第十章 系统开发与运行
【软考数据库】第十一章 数据库计划
【软考数据库】第十二章 变乱管理
【软考数据库】第十三章 云盘算与大数据处置惩罚
【软考数据库】第十四章 数据库主流应用技术
【软考数据库】第十五章 知识产权和尺度化

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

曹旭辉

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表