软件评测师:第三篇 软件设计基础

适用于软件评测师考试的软件设计基础知识整合

第1章 计算机系统构成及硬件基础知识

1.1 中央处理器(CPU)

  • 用户(所有程序员)可见:PSW、通用寄存器、PC
  • 用户(所有程序员)透明:MAR、MDR、IR、Cache、微程序的结构和功能
  • 应用程序员透明:暂存寄存器、虚拟存储器
  • 汇编程序员可见:PC
  • 系统程序员可见:虚拟存储器

CPU的功能

  1. 程序控制(指令控制):通过执行指令来控制程序的执行顺序
  2. 操作控制:产生指令的操作信号并送到对应部件,从而控制部件完成指令
  3. 时间控制(时序控制):控制各种操作的时间(出现顺序、出现时间、持续时间)
  4. 数据处理:对数据进行算数运算和逻辑运算,CPU最根本的任务

CPU的组成

运算器、控制器、寄存器组、内部总线

运算器

执行所有的算数运算和逻辑运算

  1. 算数逻辑单元(ALU):实现对数据的算术运算和逻辑运算
  2. 累加寄存器(AC):当执行算数运算或逻辑运算时,为ALU提供工作区,最终的计算结果也是存放在AC中
  3. 数据缓冲寄存器(DR):用来暂存存储器读/写的一条指令或数据字,主要作用是作为CPU与内存、外部设备作为数据传输的中转站(存入和读出)与速度上的缓冲
  4. 状态条件寄存器(PSW):保存算数指令和逻辑指令的结果建立的各种条件码内容

控制器

控制整个CPU的工作,包括指令控制逻辑、时序控制逻辑、总线控制逻辑和中断控制逻辑等

1.指令寄存器(IR):CPU执行指令时从内存储器→缓冲寄存器→IR,存放当前正在执行指令的操作码表,对程序员透明(系统使用,程序员不可控制)

2.程序计数器(PC):寄存信息和计数。程序执行有顺序执行和转移执行两种情况 程序计数器中存放的是下一条指令的地址。由于多数情况下程序是顺序执行的,所以程序计数器设计成自动加一的装置。当出现转移指令时,就需重填程序计数器 通过根据当前地址移动一个位移量得到,或根据转移指令给出的地址得到程序员可用

3.地址寄存器(AR):保存当前CPU所访问的内存单元的地址

4.指令译码器(ID)指令包括操作码和地址码两部分用于对指令中的操作码字段进行分析解释,向操作控制器发出具体的控制信号,控制各部件工作

寄存器组

1.专用寄存器:运算器和控制器中的寄存器都是专用寄存器,有固定的作用

2.通用寄存器:程序员可自行规定其用途,用途广泛,不同处理器通用寄存器数目不同

CPU的性能指标

1.2 数据的表示

1.2.1 进制表示

前缀均为阿拉伯数字0加上英文大写字母,十进制一般不加前缀

进制英文范围前缀后缀
二进制Binary0-10BB
八进制Octal0-70OO
十进制Decimal0-9D
十六进制Hexadecimal0-9,A-F0xH

进制转换

  • 十进制转X进制:短除法,用十进制的数除以进制(2、8、16),余数继续除,直到余数小于进制,然后从后往前读取余数

  • X进制转十进制:按权展开,小数点前位数乘以权,小数点后位数乘以权的倒数

    11.11B=1x22+1x21+1x2-1+1x2-2D

1.2.2 原码、反码、补码、移码

定义作用
原码第一位为符号位,其余表示值
反码正数为原码,负数为原码除符号位外按位取反可进行带符号位运算
补码正数为原码,负数为反码+1①解决反码±0的问题,负数表示范围+1
②计算机内部采用补码表示
移码正数为原码除符号位取反后其余不变,负数为原码包括符号位全部取反后+1用于表示浮点数阶码

1.2.3 浮点数

N = n E ∗ F N=n^E*F N=nEF

符号表示影响
阶符Es决定绝对值大于1还是小于1
阶码E1E2E3…Em决定浮点数的表示范围
数符Ms决定浮点数大于0还是小于0
尾数M1M2M3…Mm决定浮点数的精度

1.2.4 位、字节、字、字长

bitb1位,只能表示1或0
字节ByteB1字节=8位
word由计算机定义,如64bit计算机,1字=8字节=64位

1.2.5 考点

计算内存容量:

eg:

内存按字节编制从A5000H到DCFFFH的区域其存储容量为___?

方法:结束地址-起始地址+1,再转化成10进制;按字节编址,则在最后还要乘以字节(B)

记得要+1,因为A5000H到A5000H也有1字节的存储空间

1.3 校验码

(33条消息) 计算机组成原理学习笔记——校验码_计算机校验码是什么意思_御承扬的博客-CSDN博客

码距:

一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数叫这两个码字的码距,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。

比如三位二进制合法只有:111和000,则这两个编码中三位只要有一位改变就能判断是无效编码,则码距为3

如果有效编码为:111、011和000,由于011的存在,第三位如果改变了,无法判断是否为有效编码,而后两位改变了仍可判断,则码距为2

定义特点
奇偶校验码增加一位校验位,使得数中“1”的个数为奇数(奇校验)或者偶数(偶校验)只能检测数奇数数量的错误,且不能确定出错的位置
海明码在有效信息位中加入几个校验位形成海明码,并把海明码的每个二进制位分配到几个奇偶校验组中;数据位n与校验k满足:n+k≤2k-1可同时确定出错的位置和数量
循环冗余校验码(CRC)在数据后加入r位数的0(由CRC多项式最高位次幂决定)得到被除数,被除数与CRC多项式摩尔运算,余数末尾r位即为校验码模2运算(即异或),在磁介质存储器和计算机通信广泛运用

https://blog.csdn.net/weixin_42193813/article/details/105732396

1.4 指令与寻址方式

(33条消息) 计算机组成原理——9种常用寻址方式_隐含寻址方式_佰落的博客-CSDN博客

1.4.1 指令

操作码字段地址码字段

1.4.2 寻址方式

R=寄存器,E=有效地址,S=操作数,默认示例为8086

1) 隐含寻址
含义:操作数隐含的由累加器给出。(即某指令由固定的操作数,不需要给出)
例子:8086汇编语言 CWD;把AX中的内容按符号位拓展成DX,AX双字

2)立即寻址
含义:指令中直接给出相应的操作数。
例子: MOV AX,1234H;——1234H就是采用立即寻址

3)寄存器直接寻址
含义:指令中给出寄存器号R,操作数存放在R中
E=R,S=(E)=( R )
例子:MOV AX,BX——操作数在BX中
在这里插入图片描述

4)寄存器间接寻址
含义:指令中给出寄存器号R,R中存放操作数的有效地址
E=( R ),S=(E)=(( R ))
例子:MOV AX,[SI]
在这里插入图片描述

5)直接寻址
含义:指令中给出操作数的有效地址
E=A,S=(E)=(A)
例子:MOV AX,[1234H]

在这里插入图片描述

6)间接寻址
含义:指令中给出存放有效地址E的存储单元地址。
E=(A),S=(E)=((A))
理论上讲可以多次间接寻址,但大多数计算机只允许一次(由于A的寻址范围不足以覆盖整个存储空间)

在这里插入图片描述

7)相对寻址
含义:指令中给出相对于PC的偏移量A
E=(PC)+A,S=(E)=((PC)+A)
注:A是个带符号数,一般用补码表示,若A的位数与PC不一致,需要带符号填充。

在这里插入图片描述

8)基址寻址
含义:指令中给出相对于基址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。

在这里插入图片描述

9)变址寻址
含义:指令中给出相对变址寄存器R的偏移量
E=( R )+A,S=(E)=(( R )+A)
注:A是个带符号数,一般用补码表示,若A的位数与R不一致,需要带符号填充。

在这里插入图片描述

1.4.3 指令集

CISC(复杂)RISC(精简)
指令数量多;使用频率差别大;可变长格式数量少;使用频率接近;定长格式;大部分为单周期指令;只有Load/Store操作内存
寻址方式支持多种昂支持方式少
实现方式微程序控制技术增加通用寄存器;硬布线逻辑控制为主;采用流水线
其他优化编译;有效支持高级语言

*RISC的编译器的子程序库通常要比CISC大得多——复杂上移

1.4.4 流水线

流水线总用时:
T k = ∑ i = 1 m Δ t i + ( n − 1 ) Δ t j T_k=\sum_{i=1}^m{\Delta t_i+(n-1)\Delta t_j} Tk=i=1mΔti+(n1)Δtj
即:一条指令执行完全部m段所需时间+(n-1)乘以指令流m段中耗时最长的一段的耗时

吞吐率:
T P = n T k TP=\frac{n}{T_k} TP=Tkn

流水线过程:

→取指→分析→执行

1.5 存储器

1.5.1 存取方式

(33条消息) 存储器中数据常用的存取方式有哪些

(1)顺序存取:顺序存取:存储器的数据以记录的形式进行组织。 对数据的访问必须按特定的线性顺序进行。 磁带存储器采用顺序存取的方式。

磁带

(2)直接存取:与顺序存取相似,直接存取也使用一个共享的读写装置对所有的数据进行访问。 但是,每个数据块都拥有唯一的地址标识,读写装置可以直接移动到目的数据块所在位置进行访问。磁盘存储器采用直接存取的方式。 数据块内的数据采用顺序存取

光盘、机械硬盘里的磁盘

(3)随机存取:存储器的每一个可寻址单元都具有自己唯一的地址和读写装置,系统可以在相同的时间内对任意一个存储单元的数据进行访问,而与先前的访问序列无关。 主存储器采用随机存取的方式。

RAM, Cache

(4)相联存取:相联存取也是一种随机存取的形式,但是选择某一单元进行读写是取决于其内容而不是其地址。 与普通的随机存取方式一样,每个单元都有自己的读写装置,读写时间也是一个常数。 )

1.6 总线

数据总线:与操作系统字长一致

地址总线:根据存储空间大小得出

若内存为4G,即232B,则地址总线宽度为32

控制总线

1.6.1 总线的性能指标

带宽、位宽、工作频率
总线带宽=总线位宽 × 总线工作频率 总线带宽=总线位宽×总线工作频率 总线带宽=总线位宽×总线工作频率

1.7 输入输出系统

1.7.1 输入输出控制方式

  • 直接程序控制:CPU参与全部字符传输过程,一直占用CPU,CPU与外部设备串行工作
    在这里插入图片描述

  • 中断驱动控制:CPU参与全部字符传输过程,打印过程中释放CPU;CPU可与外设并行工作;中断次数多

    中断向量:中断服务程序的入口地址

    在这里插入图片描述

  • Direct Memory Access 直接存储访问

允许外部设备和存储器直接拿直接读写数据,既不经过CPU,也不需要CPU干预,但要占用数据总线(所以占用时CPU无法进行数据读写操作),CPU在一个总线周期(一个访问存储器或I/O设备所需时间)结束时响应DMA请求

在这里插入图片描述

1.7.2 I/O设备端口编址方式

统一编址:输入输出通过访存指令实现

独立编址:输入输出通过专门的I**/O指令**实现

本章知识梳理

在这里插入图片描述

第2章 操作系统

(34条消息) 软考——软件设计师:第五章:操作系统考点总结(完整篇)_宋子浩的博客-CSDN博客

**原语:**不可分割或不可中断的最小程序

**互斥:**间接制约,资源间相互竞争

**同步:**直接制约,资源间需要协同完成某一工作

2.1 进程、线程

2.1.1 概念

为了描述和控制程序的并发执行

进程和程序的区别

进程实际是程序的一次执行

①进程是动态的,程序是静态的。

②进程具有生命周期,程序是永久存在的。

③进程是由**程序段、相关数据段和进程控制块(PCB)**组成,程序是指令的有序集合。

进程和线程的区别:

进程是资源分配的基本单位,线程是处理器任务调度和执行的基本单位

①包含:线程是进程中的一个子控制单元,一个进程中至少有一个线程,可以有多个线程

②资源分配:各进程拥有独立的地址空间,线程共享本进程的地址空间

③资源开销:进程间切换资源开销大。现成拥有独立的运行栈和程序计数器(PC),切换资源开销小

④执行过程:进程有独立的程序入口、顺序执行序列和程序出口;线程依赖程序,程序提供多线程控制

2.1.2 进程的状态

三态模型

在这里插入图片描述

运行态:进程已获得并占用CPU,单处理机中只有一个进程处于运行态

就绪态:进程已具备运行条件(已有除CPU外的必要资源),等待系统分配处理器以便运行

等待态(阻塞):进程不具备运行条件,等待某一事件发生(请求的数据、等待I/O操作等)

五态模型

在这里插入图片描述

三态上增加了新建终止

2.1.3 PV操作

(34条消息) PV操作简单理解_刘水镜的博客-CSDN博客

解决进程 同步和互斥问题

信号量(Saphore)

表示可用资源数,仅可由PV操作改变,初始值应为进程某一可用共享资源总数R

  • 执行一个P操作时,S-1;执行一个V操作时,S+1
  • S<0时,表示没有可用资源了
  • 当有n个进程共享可用资源R时,S的范围为[-(n-R), R]

前趋图

(34条消息) 操作系统PV操作、前趋图与PV操作_前趋图怎么画_头发太多想掉一点的博客-CSDN博客

在执行下一个进程时,一个进程→另一个进程,就是先V后P

P表示进程,S表示信号量

2.1.4 死锁

(34条消息) 死锁面试题(什么是死锁,产生死锁的原因及必要条件)_AddoilDan的博客-CSDN博客

2.1.4.1 定义

是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进

2.1.4.2 产生的原因

竞争资源

可剥夺资源:某进程占用资源后,其他高优先级进程或系统可剥夺占用资源,如CPU和主存都是可剥夺资源

不可剥夺资源:系统将资源分配后,不能强制回收,只能在进程执行完后释放

临时性资源:硬件中断、信号、消息、缓冲区内的消息

竞争不可剥夺资源或竞争临时性资源

进程间推进顺序非法

2.1.4.3 产生死锁的必要条件

① 互斥条件:进程要求对所分配的资源进行排它性控制,即在一段时间内某资源仅为一进程所占用。
② 请求和保持条件:当进程因请求资源而阻塞时,对已获得的资源保持不放。
③ 不可剥夺条件:进程已获得的资源在未使用完之前,不能剥夺,只能在使用完时由自己释放。
④ 环路等待条件:在发生死锁时,必然存在一个进程–资源的环形链。

2.1.4.4 解决死锁的办法

预防死锁

破坏请求条件——资源一次性分配:一次性分配所有资源,这样就不会再有请求了

破坏保持条件——只要有一个资源得不到分配,也不给这个进程分配其他的资源

破坏不可剥夺条件——可剥夺资源:即当某进程获得了部分资源,但得不到其它资源,则释放已占有的资源

破坏环路等待条件——资源有序分配法:系统给每类资源赋予一个编号,每一个进程按编号递增的顺序请求资源,释放则相反

避免死锁

安全状态:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。

银行家算法、有序资源分配

检测死锁
首先为每个进程和每个资源指定一个唯一的号码;
然后建立资源分配表和进程等待表。
解除死锁:
当发现有进程死锁后,便应立即把它从死锁状态中解脱出来,常采用的方法有:

剥夺资源:从其它进程剥夺足够数量的资源给死锁进程,以解除死锁状态;
撤消进程:可以直接撤消死锁进程或撤消代价最小的进程,直至有足够的资源可用,死锁状态.消除为止;所谓代价是指优先级、运行代价、进程的重要性和价值等

2.1.4.5 避免死锁的最少竞争资源s

s ≥ n ( k − 1 ) + 1 s≥n(k-1)+1 sn(k1)+1

其中n为互斥进程数量,k为单个进程所需最大资源数

2.2 作业

一次解决或者事务处理中交给计算机系统处理的所有工作的集合

2.2.1 概念

作业

程序、数据、作业说明(书)

作业控制块 JCB

用于管理和调度作业,每个作业都有一个记录作业信息的JCB,

JCB是作业在系统中存在的唯一标志,作业进入系统时创建,退出系统时撤销

2.2.2 作业管理

交互式作业管理

交互式作业有一个输入(编辑)、编译、运行、调试、再编译、再运行的反复过程。

批处理作业管理

提交、后备、执行、完成四个状态

在这里插入图片描述

2.2.3 作业调度

  • 先来先服务(FCFS)调度算法
  • 短作业优先(SJF)调度算法
  • 优先级调度算法
  • 高响应比(HRN)优先调度算法 ——动态优先级调度算法的一种

在这里插入图片描述

2.3 存储管理

位示图:

物理块号÷字长=位示图号

磁盘容量÷物理块大小÷字长=所需位示图字

2.3.1 分区存储组织

原因:适应并发运行程序

首次适应算法:空闲分区以地址递增的次序链接。

循环首次适应算法:与首次适应算法的区别是:不是每次都从链首开始查找,而是从上一次找到的空闲分区的下一个空闲分区开始查找。

最佳适应算法:空闲分区按其容量从小到大的顺序链接。

最差适应算法:空闲分区按其容量从大到小的顺序链接(与最佳适应算法相反)

2.3.2 页式存储组织

地址分为两部分:页号和页内地址。根据页面地址可得出页内地址位数,剩余即为页号位数

页内地址位数→页的大小

页号地址位数→页的数量

2.3.3 段式存储

空间利用率比页式存储低,内存碎片大,外碎片,实际上内存未分配

类似页式存储,地址分为段号和段内地址

页是信息的物理单位。分页的主要目的是为了实现离散分配,提高内存利用率。分页仅仅是系统管理上的需要,完全是系统行为,对用户是不可见的
段是信息的逻辑单位。分段的主要目的是更好地满足用户需求。一个段通常包含着一组属于一个逻辑模块的信息。分段对用户是可见的,用户编程时需要显式地给出段名。

页的大小固定且由系统决定。段的长度却不固定,决定于用户编写的程序。

分页的用户进程地址空间是一维的,程序员只需给出一一个记忆符即可表示 一个地址。
分段的用户进程地址空间是二维的,程序员在标识一个地址时,既要给出段名,也要给出段内地址。

分段比分页更容易实现信息的共享和保护。不能被修改的代码称为纯代码或可重入代码(不属于临界资源),这样的代码是可以共享的。可修改的代码是不能共享的

访问一个逻辑地址需要几次访存?
分页(单级页表) :第一次访存–查内存中的页表,第二次访存–访问目标内存单元。总共两次
访存分段:第一次访存–查内存中的段表,第二次访存-- -访问目标内存单元。总共两次访存
与分页系统类似,分段系统中也可以引入快表机构,将近期访问过的段表项放到快表中,这样可以较少一次访问,加快地址变换速度。

2.3.4 段页式存储

段号页号页内地址

将地址先分段,再分页,地址分为三部分:段号、段内页号、页内地址

其地址变换过程如下:

  1. 根据段号查段表,得到页表起始地址
  2. 根据页号查页表,得到物理块号
  3. 将物理块号与页内地址拼接得到物理地址

img

2.3.5 页面置换算法

先进先出算法

选择先进入内存的页面予以淘汰。

最佳置换算法

选择永远不再需要的页面或者最长时间内不再使用的页面予以淘汰。

(理想情况,实际上无法预测未来的访问顺序)

最近最久未使用算法

选择最近一段时间中最长时间没有被访问过的页面予以淘汰

与先进先出的区别是,先进先出时如果无缺页,不会更新时间,而最近最久未使用中会更新时间

嵌入式系统

特点:

①微型化

②可定制

③实时性

④可靠性

⑤易移植性

操作系统的特点:

①并发性

②共享性

③虚拟性

④不确定性/随机性:操作系统在随机环境中运行,设备随时可发起终端,系统无法知道程序什么时候进行什么操作

第3章 数据库基础知识

(28条消息) 软考——软件设计师:第二章:数据库技术考点总结(完整篇)_宋子浩的博客-CSDN博客

3.1 基础概念

3.1.1 DBMS

(28条消息) 数据库管理系统(DBMS)的主要功能、组成以及数据存取的过程_数据库管理系统的工作过程_Shishishi888的博客-CSDN博客

数据库管理系统

主要功能

①数据定义功能(DDL)

定义数据表、视图、索引:CREATE(DATABASE、TABLE)、ALTER(TABLE VIEW)、DROP(VIEW)、TRUNCATE(TABLE)、ADD(column_name())

②数据操纵功能(DML)

数据表的增删查改:ELECT、UPDATE、INSERT、DELETE、ROLLBACK

③数据库运行管理功能:数据的安全性控制、数据的完整性控制、多用户环境干的并发控制和数据库的恢复。

④数据库的建立和维护功能

⑤数据通信接口

⑥数据组织、存储和管理

3.1.2 数据模型

3.1.2.1 数据模型三要素

1、数据结构

指所研究对象类型的集合,是对象和对象间联系的表达和实现。包括:数据本身和数据之间的联系。

2、数据操作

指对数据库中对象的实例允许执行的操作的集合,主要指检索和更新。

3、完整性约束

实体完整性、参照完整性、用户自定义完整性

  • 实体完整性:关系R的主属性不能存在空值

  • 参照完整性/引用完整性:描述关系模式中实体与实体间的关系

    举例:删除主表中外键所在列的数据,必须先删除子表对应的数据,否则将破坏参照完整性

  • 用户定义完整性:针对某一具体的关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足语义要求,由应用环境决定

3.1.3 数据的三级模式结构

外模式(子模式/用户模式):数据库视图,描述的是一个特定用户组所感兴趣的那部分数据库,而对该用户隐藏了数据库的其他部分

模式(逻辑模式):数据库中的各种表,定义数据库中全部数据的逻辑结构如:数据记录的名称,数据项的名称,类型,值域等。

内模式(存储模式):它既定义了数据库中的全部数据的物理结构,还定义了数据的存储方法,存取策略等,内模式与数据存储的软件和硬件环境是有关的。

3.2 关系型数据库和非关系型数据库

3.2.1 关系模式

(28条消息) 数据库:第二章 《关系模式》概念总结_Re__CODE的博客-CSDN博客

3.2.1.1 名词解释

:在现实世界中从事物中提取出来的特征,即属性

:属性的取值范围的值对应的集合

度/目:属性的个数,同时是关系的“元数

:关系模式中属性的一组取值,即元组

候选码:若在一个关系中,某一属性或 属性组的值能唯一的识别一个关系的元祖,其子集不能,则该属性组称为候选码

主码(主关键字): 主码一定是候选码中的一个,且只能有一个

外部码(外码): 若F是基本关系R的一个或一组属性,但不是关系R的码,KS是关系S的主码,如果F与KS相应,则称F是关系R的外码

函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上的属性值相等而在Y上的属性值不相等,则称X函数确定YY函数依赖于X ,记作X->Y,X称为决定因素,即唯一的X确定Y

  • 若Y不是X的子集称为非平凡的函数依赖, Y是X的子集(任意关系必然成立)称为平凡的函数依赖

  • 如果X->Y,且X的真子集不函数决定Y,则称为Y对X完全函数依赖,否则称为部分函数依赖

  • 传递依赖:Y非平凡函数依赖于X,X非平凡函数依赖于Y,则X->Z

3.2.1.2 关系代数运算

(28条消息) 详解【数据库】关系代数基本运算_关系代数运算_石子君的博客-CSDN博客

(Union)


(Difference)


广义笛卡尔积

两个无数分别为 n 目和 m 目的关系 R 和 S 的 笛卡尔积是一个 (n+m) 列的元组的集合。组的前 n 列是关系 R 的一个元组,后 m 列是关系 S 的一个元组,记作 R × S,定义如下:
R × S = { t ∣ t ≤ ( t n , t m ) ∧ t n ∈ R ∧ t m ∈ S } R×S=\{t|t≤(t^n,t^m)∧t^n∈R∧t^m∈S\} R×S={tt(tn,tm)tnRtmS}


投影(Projection)

投影运算是从关系的垂直方向进行运算,在关系 R 中选出若干属性列 A 组成新的关系,记作 πA®πA®,其形式如下:
π A ® = { t [ A ] ∣ t ∈ R } π A ® = { t [ A ] ∣ t ∈ R } πA®=\{t[A]|t∈R\}πA®=\{t[A]|t∈R\} πAR={t[A]tR}πAR={t[A]tR}


选择(Selection)

选择运算是从关系的水平方向进行运算,是从关系 R 中选择满足给定条件的元组,记作 σF®σF®,其形式如下:
σ F ® = { t ∣ t ∈ R ∧ F ( t ) = T r u e } σF®=\{t|t∈R∧F(t)=True\} σFR={ttRF(t)=True}


连接(Join)

连接(join)就是把两个表中的行按照给定的条件进行拼接而达成新表。

等值连接

两个关系中将进行比较的属性组的值相等的数据相连,若比较的是相同的属性组,不会去重

自然连接

特殊的等值连接,两个关系中进行比较的分量必须是相同的属性组列名,并且在结果集中将重复属性列去掉

3.2.1.3 关系模式规范化

(28条消息) 第一范式、第二范式、第三范式、BCNF范式详解_i胡说的博客-CSDN博客

第一范式(1NF)

符合1NF的关系中每个属性都不可再分

1NF是所有关系型数据库的基本要求,即关系型数据库中的表一定符合1NF

存在数据冗余、插入异常、删除异常、修改异常的问题

插入异常:由于多个主体的属性放在一起,无法单独插入/删除某个主体的属性

修改异常:数据不唯一,修改其中一条数据后其他数据未改变


第二范式(2NF)

若关系模式R属于第一范式,且关系模式R的每个非主属性完全函数依赖于码,则R也属于第二范式。

人话版:在第一范式的基础上,消除非主属性间码的部分函数依赖

解决了数据冗余、更新异常、插入异常和删除异常


第三范式(3NF)

在满足第二范式的基础上,若关系模式中所有非主属性完成函数依赖于码且不传递依赖码,则称R属于第三范式。

满足第二范式不满足第三范式的情况:学生(学号,课程号,系号,系名,系地址),在这个关系模式中,学号可以推出系号,系号推不出学号,系号可以推出系地址,所有学号可以推出系地址。所以学号不直接决定非主属性系地址。

解决办法:拆成两个关系模式


BCNF范式

在满足第三范式的基础上,若关系模式中主属性完全依赖于码且不传递依赖码,则称R属于BCNF范式


第四、第五范式

https://blog.csdn.net/xiaoxiao_su123/article/details/113514395

3.1.2 非关系型数据库

第4章 中间件

4.1 定义

中间件是一种独立的系统软件服务程序,分布式应用软件借助这种软件在不同的技术之间共享资源,中间件位于客户机服务器的操作系统之上,管理计算资源和网络通信。

中间件:中间件=平台+通信,这也就限定了只有用于分布式系统中才能叫中间件,同时也把它与支撑软件和实用软件区分开来。

常见中间件:JDBC、ODBC、CORBA

MySQL也可以视为一种中间件,中间件没有严格定义

为什么要使用中间件

  • 屏蔽底层操作系统的复杂性

    我们对数据进行增删改查并不需要与底层操作系统的硬盘等各种指令打交道,我们只需要知道MySQL怎么使用,与MySQL进行交互即可,不需要管它是怎么进行存储和互联互通的。

  • 屏蔽技术架构的复杂性

    分布式架构下每一个微服务都可以采用不同的语言不同的技术栈,使用中间件就可以将不通的服务来连接互通起来,将不同技术架构的服务串联起来,来达到一个更加稳健、缩短开发周期维护成本低目的。

第5章 计算机网络

5.1 OSI七层网络体系结构

在这里插入图片描述

5.1.1 物理层

透明地传输比特流

光缆、电缆、双绞线、无线电波等方式。它主要规定了网络的一些电气特性,作用是负责传送0和1的电信号。

设备:

集线器:多端口的中继器,不能隔离广播域和冲突域

中继器:放大信号,不能隔离广播域和冲突域

5.1.2 数据链路层

将网络层交下来的IP数据报封装成,在两个相邻结点间的链路上传送帧,每一帧包括数据和必要的控制信息。

功能为:封装成帧、透明传输、差错检验

数据包定义以太网协议,每帧分成标头(Head)和数据(Data)。"标头"的长度,固定为18字节。"数据"的长度,最短为46字节,最长为1500字节。因此,整个"帧"最短为64字节,最长为1518字节。

MAC地址:以太网规定,连入网络的所有设备,都必须具有"网卡"接口。数据包必须是从一块网卡,传送到另一块网卡。网卡的地址,就是数据包的发送地址和接收地址,这叫做MAC地址。

广播:向本网络的所有计算机发送数据包,接收方自行比对标头与自身MAC地址是否相同,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包。

设备:

网桥:可以隔离冲突域,不能隔离广播域

交换机

5.1.3 网络层

网络层的任务就是要选择合适的路由,在发送数据时, 网络层把运输层产生的报文段或者用户数据报封装成分组或包进行交付给目的站的运输层。

"网络层"出现以后,每台计算机有了两种地址,一种是MAC地址,另一种是网络地址。两种地址之间没有任何联系,MAC地址是绑定在网卡上的,网络地址则是管理员分配的,它们只是随机组合在一起。网络地址帮助我们确定计算机所在的子网络,MAC地址则将数据包送到该子网络中的目标网卡。因此,从逻辑上可以推断,必定是先处理网络地址,然后再处理MAC地址。

  • IP协议:规定网络地址的协议,叫做IP协议,它所定义的地址,称为IP地址。网络地址由32个二进制位组成。根据IP地址来判断两台计算机是否属于同一个子网络,采用的是“子网掩码”,将两个IP地址与子网掩码分别进行AND运算(两个数位都为1,运算结果为1,否则为0),然后比较结果是否相同,如果是的话,就表明它们在同一个子网络中,否则就不是。一个IP地址在整个因特网范围内是唯一的,分类的IP地址包括A类(1126)、B类(128191)、C类(192~223单播地址)、D类(多播地址)。

  • ARP协议:如果两台主机不在同一个子网络,那么将数据包传送到两个子网络连接处的网关,否则使用ARP协议来得到对方的MAC地址。ARP协议只适用于IPV4,不能用于IPV6,IPV6用ICMPV6发送邻居搜索消息。

    地址解析协议(ARP)和反地址解析协议(RARP)是驻留在网际层(网络层)中的另一个重要协议。ARP的作用是将IP地址转换为物理地址。RARP的作用是将物理地址转换为IP地址。

网络层的主要功能

  1. 处理来自运输层的分组发送请求:收到请求后,将分组装入IP数据报,填充报头,选择去往信宿机的路径,然后将数据报发往适当的网络接口。
  2. 处理输入数据报:首先检查其合法性,然后进行寻径–假如该数据报已到达信宿机,则去掉报头,将剩下部分交给适当的传输协议;假如该数据报尚未到达信宿机,则转发该数据报。
  3. 处理路径、流控、拥塞等问题。(其中拥塞控制是通过ICMP传递的)网络层包括:IP协议、ICMP控制报文协议、ARP地址转换协议、RARP反向地址转换协议。IP是网络层的核心,通过路由选择将下一跳IP封装后交给下一层,IP数据报是无连接服务。ICMP协议可以回送报文,用来检测网络是否通畅。Ping命令就是发送ICMP的echo包,通过回送的echo relay进行网络测试。ARP是正向地址解析协议,通过已知的IP寻找对应主机的MAC地址。RARP是反向地址解析协议,通过MAC地址确定IP地址。

设备:

路由器:可以隔绝广播域

三层交换机:可以隔离冲突域,不能隔离广播域

5.1.4 运输层

任务:运输层的任务是负责向两个主机中的进程之间的通信提供可靠的端到端服务,应用层利用该服务传送应用层报文。

  • UDP协议:提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。对实时应用很有用,如QQ聊天、在线视频、网络语音电话、直播、实时视频会议等。

    UDP是一种不可靠的、无连接的协议,可以保证应用程序进程间的通信。它的错误检测功能要比TCP弱的多。可以这样说:TCP有助于提供可靠性,UDP有助于提高传输的高速率性。

  • TCP协议:提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段。传输有三个连接:连接建立、数据传送、连接释放。TCP连接建立采用三次握手机制,连接释放采用四次握手机制。效率比UDP低,一般用于:文件传输、接受邮件、远程登录等

    TCP在IP提供的不可靠数据服务的基础上为应用程序提供了一个可靠的、面向连接的、全双工的数据传输服务。

5.1.5 应用层

任务:应用层的任务是通过应用进程间的交互来完成特定网络应用。

应用层是体系结构中的最高层,应用层协议定义的是应用进程间通信和交互的规则。应用层的作用,就是规定应用程序的数据格式。对于不同的网络应用需要不有不同的应用层协议。在互联网的应用层协议很多,如域名DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议等等。我们把应用层的数据单元称为报文。

5.1.6 TCP/IP协议簇

各层对应的协议及设备

计算机网络各层网络设备(中继器、集线器、网桥、交换机、路由器、网关)总结_物理层设备_尸者狗的博客-CSDN博客

在这里插入图片描述

注SMTP用于发送邮件、POP3用于接收邮件、IMAP用于远程查看邮件

5.2 IP地址

5.2.1 IPv4地址格式

32位地址,分为四个字段,每个字段的范围为0-255

11001010.11000100.00000100.01101010        转换为十进制如下:
202.196.4.106                              称为点分十进制

范围

00000000.00000000.00000000.00000000-11111111.11111111.11111111.11111111

0.0.0.0-255.255.255.255

5.2.2 子网掩码

IP地址由网络位主机位组成,二者位数不固定,从应用场景出发,取决于需要有多少主机位才能满足要求,子网掩码就是用来确定网络位

子网掩码不是一个IP地址,在二进制的表示上是一堆连续的1、后面接一堆连续的0

用IP地址和地址掩码进行与运算,可以得出网络号

子网中可用地址个数(n表示主机位数):2^n-2

5.2.3 IP地址分类

IP地址分为A、B、C、D、E

在这里插入图片描述

5.2.4 IPv4与IPv6的过渡技术

  • 双栈技术:双栈技术是IPv4向IPv6过渡的一种有效的技术,其节点同时支持IPv4和IPv6协议栈,当IPv6节点与IPv6节点互通时使用IPv6协议栈,与IPv4节点互通时借助于IPv4 over IPv6隧道使用IPv4协议栈,通过此技术,实现分别与IPv4或IPv6节点间的信息互通。
  • 隧道技术:这种模式运用于IPv4 和IPv6的边界。首先,借助IPv4网络来建立IPv4隧道,然后实现IPv6点到点访问,通常用于IDC出口边界或内部IGP跨域访问。
    效果:使得IPv6结点可以在现有的IPv4网络进行通信
  • 转换/翻译技术:即在不改动现有网络结构情况下,通过地址转换协议,进行IPv4 to IPv6 或IPv6 to IPv4 访问转换,可满足IPv4与IPv6之间的双向访问需求。
    效果:实现纯IPv6结点和纯IPv4结点通信

5.3 网络的分类

5.3.1 按覆盖范围

  1. 广域网(Wide Area Network,WAN):原因特网的核心部分
  2. 城域网(Metropolitan Area Network,MAN):主要采用以太网技术(CSMA/CD(载波监听多路访问冲突检测)技术)
  3. 局域网(Local Area Network,LAN):数据传输速率高、误码率低、传输延迟短

5.3.2 按拓扑结构

计算机网络基本知识(二):网络拓扑结构
在这里插入图片描述

5.4 其他网络协议

DHCP协议:动态主机配置协议,是一个局域网协议,使用UDP协议工作,用于给内部网络或网络服务提供商自动分配地址,一般会指定DNS服务器

5.5 Windows网络相关命令

ipconfig:

tracert:路由跟踪

Ping :

route print:打印路由

netstat:查看网络,监听端口

第6章 程序设计与编译原理

6.1 编译原理

6.1.1 编译过程

在这里插入图片描述

6.1.2 编译型语言与解释型语言

类型代表优点缺点
编译型语言C、Pascal、Delphi编译一次后,脱离了编译器也可以运行(可以脱离开发环境运行),并且运行效率高可移植性差,一般不可以跨平台(不能在不同的操作系统之间随意切换),不够灵活。
解释型语言Python、JavaScript、PHP、Shell跨平台性好,通过不同的解释器,将相同的源代码解释成不同平台下的机器码一边执行一边解释,效率很低。
  • Java既存在编译的过程,又需要解释器
  • 编译型语言跑的是可执行程序,可执行程序无法跨平台,而且编译型语言的源代码在不同平台的函数、变量、类型等定义可能不同

6.1.3 文法分析和有限自动机

6.2 程序语言

汇编语言:有汇编指令和伪指令,其中汇编指令可直接翻译橙机器代码,伪指令需要编译器编译

6.2.1 语言的分类

动态类型语言:Prel、Python、PHP

动态类型语言无需声明变量类型,程序运行过程中确认

静态类型语言:C、C++、Java

静态语言需要声明全部变量类型,编译时检查


表达式的结合和优先级

逗号表达式取右操作数作为结果返回


6.3 数据结构

数据结构概述 (biancheng.net)

6.3.1 线性表

  • 链表不能随机访问,但插入和删除不需要移动元素,顺序存储反之

数组和链表对比

数组/顺序表链表
插入、删除速度慢速度快
查询速度快速度慢

数组:

存储地址计算公式:

以二维数组为例:

m行n列数组,按行存储a[i][j],则存储地址为:a+(i·n+j)*len

m行n列数组,按列存储a[i][j],则存储地址为:a+(j·m+i)*len

队列

6.3.2 树

6.3.2.1 名词解释
  • 树中一个结点的孩子个数称为该结点的度,树中结点的最大度数称为树的度
  • 度大于0的结点称为分支结点(又称非终端结点);度为0(没有子女结点)的结点称为叶子结点(又称终端结点)。在分支结点中,每个结点的分支数就是该结点的度。
6.3.2.2 二叉树

二叉树的性质

  1. 二叉树中,第 i 层最多有 2i-1 个结点。
  2. 如果二叉树的深度为 K,那么此二叉树最多有 2K-1 个结点。
  3. 二叉树中,终端结点数(叶子结点数)为 n0,度为 2 的结点数为 n2,则 n0=n2+1。
  4. 二叉树中,设节点下标为i,则其左子节点下标为2i,右子节点下标俄日2i+1

完全二叉树:设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边

满二叉树:深度为k且有2^k-1个结点的二叉树称为满二叉树

二叉树的遍历

①先序遍历(先根遍历):根左右(NLR)

先访问根结点,再访问该根结点的左子树结点,最后访问该根结点的右子树结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍先序遍历,这种访问方式也是一种递归方式。

②中序遍历(中根遍历):左根右(LNR)

先访问根结点的左子树结点,再访问根结点,最后访问根结点的右子树结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍中序遍历。

③后序遍历(后根遍历):左右根(LRN)

先访问根结点的左子树结点,再访问根结点的右子树结点,最后访问根结点;如果其左子树或右子树为分支结点,则需要对分支结点再进行一遍后序遍历。

6.3.3 堆

性质:

  • 堆中某个结点的值总是不大于(大根堆)或不小于(小根堆)其父节点的值
  • 堆总是一颗完全二叉树

6.3.5 图

图的存储结构

  • 邻接矩阵表示法
  • 邻接链表表示法

6.3.6 卡特兰数

n个结点的数的形态、n个数的序列合法的出栈顺序:
f ( n ) = 2 n ! n ! ( n + 1 ) ! f(n)=\frac{2n!}{n!(n+1)!} f(n)=n!(n+1)!2n!

6.4 算法设计

6.4.1 排序算法

稳定:计基插归冒

六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序

在这里插入图片描述

排序算法平均时间复杂度最坏时间复杂度空间复杂度稳定性
冒泡排序O(n2)O(n2)O(1)稳定
选择排序O(n2)O(n2)O(1)不稳定
插入排序O(n2)O(n2)O(1)稳定
希尔排序O(n log n)O(n2)O(1)不稳定
归并排序O(n log n)O(n log n)O(n)稳定
快速排序O(n log n)O(n2)O(log n)不稳定
堆排序O(n log n)O(n log n)O(1)不稳定
计数排序O(n+k)O(n+k)O(k)稳定
桶排序O(n+k)O(n2)O(n+k)稳定
基数排序O(n*k)O(n*k)O(n+k)稳定

其中,n表示数据规模,k表示数据的取值范围。

  • 如果排序算法能够保证相等的元素在排序前后的顺序不变,则称该算法是稳定的;反之,称该算法是不稳定的。

6.5 表达式

中缀表达式转后缀表达式:

  • 规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止,剩余栈内符号逐个出栈

将算术表达式转化为后缀表达式-CSDN博客

中缀表达式转前缀表达式:

  • 规则:从右到左遍历中缀表达式,若是数字就输出;若是符号,则判断其与栈顶符号的优先级,是左括号或优先级低于找顶符号(乘除优先加减)则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出,剩余栈内符号逐个出栈,最后将得到的输出逆序,得到前缀表达式

第7章 软件工程

软件工程方法学三要素:方法、工具、过程

7.0 软件的生命周期

软件定义阶段

  1. 问题定义及规划

    • 制定软件项目计划
  2. 可行性研究

  3. 需求分析

  • 输出软件需求说明书(或原型图)
  • 制定验收测试标准

软件设计阶段

  1. 总体设计阶段
    • 总体设计说明书
  2. 详细设计阶段
    • 详细设计说明书

软件开发阶段

  1. 编码
    • 编码
  2. 测试
    • 单元测试
    • 集成测试
    • 系统测试
    • 验收测试

7.0.2

7.1 软件开发模型

https://blog.csdn.net/a15626250225/article/details/127517178

各模型对比

名称特点缺点
瀑布模型各阶段划分明确,线性连接不适应需求变化,交付时间长
V模型开发设计过程与测试并行进行,与测试V模型一致
增量模型增量模型将软件系统划分为多个增量部分,每个增量部分都是一个完整的系统,通过逐步添加新的功能来逐步构建最终系统对系统设计要求较高(模块化设计),确保增量的集成和兼容
演化模型可视作若干次瀑布模型的迭代,通过迭代和增量逐步开发完善系统需要明确需求
螺旋模型强调风险管理,每次迭代都要进行风险评估对项目管理和风险评估要求较高
敏捷模型强调迭代、协作、自组织,版本发布频繁,持续反馈优化对团队协作和沟通要求较高

7.1.1 瀑布模型

需求设计、总体设计、详细设计、编码和调试、集成测试、系统测试

7.1.2 V模型

说的比较多的是在软件测试里,开发模型里说的少一点,特点是设计开发与测试是并行的过程,尽早建立相关活动间的联系

7.1.3 增量模型

增量模型也称渐增模型。使用增量模型开发软件时,把软件产品作为一系列的增量构件来设计、编码、集成和测试。每个构件由多个相互作用的模块构成,并且能够完成特定的功能

使用增量模型时,第一个增量构件往往实现软件的基本需求,提供最核心的功能

把软件产品分解成增量构件时,唯一必须遵守的约束条件是,当把新构件集成到现有构件中时,所形成的产品必须是可测试的

7.1.4 螺旋模型

​ 螺旋模型结合瀑布模型原型化模型的优点,在每一个开发阶段前引入一个非常严格的风险识别、风险分析和风险控制,它把软件项目分解成一个个小项目。每个小项目都标识一个或多个主要风险,直到所有的主要风险因素都被确定,适合庞大复杂高风险的系统

在这里插入图片描述

7.1.5 敏捷模型

快速开发,高频迭代

在这里插入图片描述

7.1.6 原型模型

原型模型要求在进行实际软件开发之前,应建立系统的工作原型。
原型通常是实际系统的一个非常粗糙的版本,与实际软件相比,可能表现出有限的功能能力、低可靠性和低效的性能。
在许多情况下,客户只能对软件产品的期望有一个大致的了解。在没有关于系统输入、处理需求和输出需求的详细信息的这种情况下,可以使用原型模型。

7.2 软件开发方法

7.2.1 结构化法

  • 用户之上严格区分工作阶段,每阶段有任务与成果

  • 强调系统开发过程的整体性和全局性

  • 系统开发过程工程化,文档资料标准化

  • 面向数据流,自顶向下,逐步分解

7.2.2 原型法

  • 使用于需求不明确的开发

  • 包括抛弃型原型和演化原型

7.2.3 面向对象方法

  • 更好的复用性
  • 关键在于建立一个全面、合理、统一的模型
  • 分析、设计、实现三个阶段,界限不明确

7.2.4 面向服务方法

  • SO方法有三个主要的抽象级别:操作、服务、业务流程
  • SOAD分为三个层次:基础设计层(底层服务构件)、应用结构层(服务之间的接口和服务级协定)和业务组织层(业务流程建模和服务流程编排)
  • 服务建模:分为服务发现、服务规约和服务实现三个阶段

7.3 软件工程的七条基本原理

1、用分阶段的生命周期计划严格管理

2、坚持进行阶段评审

3、实行严格的产品控制

4、采用现代程序设计技术

5、结果应能清楚审查

6、开发小组成员应该少而精

7、承认不断改进软件工程实践的必要性

7.4 软件设计

7.4.1 内聚

①功能内聚:这是最强的内聚,指模块内的所有元素共同作用完成一个功能,缺一不可。

②顺序内聚:指一个模块中的各个处理元素都密切相关于同一功能,且必须按顺序执行,前一功能元素的输出就是下一功能元素的输入。

③通信内聚(信息内聚):指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。

④过程内聚:指一个模块完成多个任务,这些任务必须按指定的次序执行

⑤瞬时内聚(时间内聚):把需要同时执行的动作组合在一起形成的模块,所包含的任务必须在同一时间间隔内执行。

⑥逻辑内聚:指模块内执行若干个逻辑上相似的功能。

⑦偶然内聚(巧合内聚):指一个模块内的各处理元素之间没有任何联系

内聚性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚(内聚性越高,模块独立性越强)

模块独立性:功能内聚>顺序内聚>通信内聚>过程内聚>时间内聚>逻辑内聚>偶然内聚

7.4.2 耦合

①无直接耦合:两个模块之间没有直接的关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

②数据耦合:指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。

③标记耦合:指两个模块之间传递的是数据结构

④控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用模块通过该控制变量的值有选择地执行模块内的某一功能。

⑤外部耦合:模块间通过软件之外的环境联结(如I/O将模块耦合到特定的设备、格式、通信协议上)。

⑥公共耦合:指多个模块都访问同一个公共数据环境

⑦内容耦合:当一个模块直接使用另一个模块的内部数据,或通过非正常入口转入另一个模块内部的耦合。

耦合性:无直接耦合<数据耦合<标记耦合<控制耦合<外部耦合<公共耦合<内容耦合(耦合性越低,模块独立性越强)

模块独立性:无直接耦合>数据耦合>标记耦合>控制耦合>外部耦合>公共耦合>内容耦合

7.4.3 软件设计模式

分为三类,共计23种,简单理解即可

7.4.3.1 创建型模式
  • 单例模式

    创建的类在当前进程中只有一个实例,并提供一个全局性的访问点,这样可以规避因频繁创建对象而导致的内存飙升情况。

  • 生成器模式(建造者模式)Builder Pattern

    将一个复杂对象的构建与其表示分离,使同样的构建过程可以创建不同的表示。

  • 工厂模式

    定义一个用于创建对象的工厂接口,并让工厂子类决定实例化哪一个产品类,使产品类的实例化延迟到工厂子类中执行

  • 抽象工厂模式

    提供一个创建一系列相关或相互依赖对象的接口,而无需指定具体类。

  • 原型模式

    通过复制现有对象来生成新对象。

7.4.3.2 结构性模式
  • 适配器模式
  • 桥接模式
  • 装饰模式
  • 组合模式
  • 外观模式
  • 享元模式
  • 代理模式
7.4.3.3 行为型模式
  • 模板方法模式

  • 命令模式

  • 迭代器模式

  • 观察者模式

    定义对象间的一种一对多的依赖关系,使得当一个对象状态改变时,所有依赖它的对象都会得到通知并自动更新。

  • 中介者模式

    用一个中介对象来封装一系列的对象交互,使各对象不需要显式地相互引用。

  • 备忘录模式

  • 解释器模式

  • 状态模式

  • 策略模式

  • 责任链模式

  • 访问者模式

7.5 软件维护

  1. 纠错性/正确性维护(Corrective Maintenance):修复软件中发现的错误、缺陷或故障,以确保软件的正常运行。
  2. 适应性维护(Adaptive Maintenance):根据环境变化或外部要求对软件进行修改,以适应新的硬件、操作系统、法规或业务规则等变化。
  3. 完善性维护(Perfective Maintenance):对软件进行改进和优化,以提高性能、可靠性、可维护性或用户体验。
  4. 预防性维护(Preventive Maintenance):对软件进行定期检查和修复,以预防潜在的问题和故障,并提高软件的可靠性和稳定性。
  5. 增量性维护(Incremental Maintenance):根据用户需求或市场变化,对软件进行增量式的功能扩展或改进。
  6. 重构性维护(Refactoring Maintenance):对软件的内部结构进行重构,以改进代码质量、可读性和可维护性,而不改变其外部行为。
  7. 转移性维护(Transitional Maintenance):将软件从一个平台或环境迁移到另一个平台或环境,例如从一个操作系统迁移到另一个操作系统。

生产实际中维护内容可能存在重叠,比如既是适应性也是增量性

(34条消息) 【软考——软件设计师】_宋子浩的博客-CSDN博客

数据结构概述 (biancheng.net)

7.6 UML 统一建模语言

https://blog.csdn.net/qq_29912325/article/details/120673082

7.6.1 UML的事务

7.6.1.1 结构事务

(Structural Things)

结构事务用于描述系统的静态结构和组成部分。它们包括:

  • 类(Class)、

  • 接口(Interface)、

  • 组件(Component)、

  • 节点(Node)、

  • 用例(Use Case)、

  • 协作(Collaboration)、

  • 活动类/主动类(Active Class)

七种。结构事务描述了系统中的实体、它们的属性和关系等。

7.6.1.2 行为事务

(Behavioral Things)

行为事务用于描述系统的动态行为和交互

  • 交互(Interaction):描述对象之间的消息交互和时序关系。
  • 状态机(State Machine):描述对象的状态和状态转换。
7.6.1.3 组织事务

(Grouping Things)

群体事务用于组织和管理其他事务,是UML模型中组织的部分,它们本身不描述系统的结构或行为。

  • 包(Package)
7.6.1.4 辅助事务/注释事务

(Annotational Things)

注释事务用于提供额外的说明和文档信息,对其他事务进行补充和解释。

  • 注释(Comment):提供对模型元素的额外说明和描述。
  • 约束(Constraint):定义模型元素的限制条件或规则。
  • 标记(Stereotype):用于扩展和定制UML元素的定义。

7.6.2 类图

7.6.2.1 类图中的关系

1、关联关系

普通箭头

​ 其中一个类对象使用另一个类对象作为成员变量或方法参数。包括聚合、组合和派生

  • 聚合关系:整体-部分的关联,但二者之间有独立的生命周期

    空心菱形箭头

  • 组合关系:整体-部分的关联,部分完全依赖于整体

    实心菱形箭头

在这里插入图片描述

2、泛化关系

空心三角箭头

较普通的元素与一个较特殊的元素之间的类元关系

单继承与多继承

3、依赖关系

虚线箭头

依赖是指一个类对象使用了另一个类对象,但两者之间的关系是临时性的,短暂存在的。依赖关系通常表示一个类对象依赖于另一个类对象的功能或接口

4、实现关系

虚线空心箭头

实现关系用来表示规格说明与实现之间的关系。在类图中,实现关系主要用于接口与实现该接口的类之间

第8章 信息安全

8.1 信息安全基本概念

8.1.1 信息安全五要素

  • 机密性(Confidentiality):确保只有授权的人或实体能够访问敏感信息,防止未经授权的披露。
  • 完整性(Integrity):确保信息在传输、存储和处理过程中不被篡改、损坏或未经授权的修改。
  • 可用性(Availability):确保信息和系统在需要时可用,防止因故障、攻击或其他原因导致的服务中断。
  • 可控性(Controllability):对信息和信息系统实施安全监控管理,防止非法利用信息和信息系统
  • 不可抵赖性/可审查性(Non-repudiation):确保发送方和接收方都无法否认已进行的通信或交易,防止抵赖行为。

8.1.2 信息安全保护等级

五个等级,由低到高:

  • 用户自主保护级
  • 系统审计保护级
  • 安全标记保护级
  • 结构化保护级
  • 访问验证保护级

8.1.3 安全防护策略

  • 安全日志

  • 入侵检测

    • 一般安装在防火墙之外
  • 隔离防护

    • 防火墙,实现内外网逻辑隔离
  • 漏洞扫描

8.2 网络攻击与网络安全

8.2.1 网络攻击

  • 主动攻击:导致数据流的篡改和虚假数据的产生
    • 中断
    • 篡改
    • 伪造
    • 拒绝服务
  • 被动攻击:不对数据信息进行修改
    • 窃听
    • 流量分析
    • 破解弱密码数据流

8.2.2 网络安全协议

8.2.2.1 安全的协议
  1. SSL/TLS(Secure Sockets Layer/Transport Layer Security):用于在客户端和服务器之间建立安全的加密通信连接,确保数据的保密性和完整性。
  2. IPsec(Internet Protocol Security):提供对IP数据包的加密、认证和完整性保护,用于保护网络层通信的安全。
  3. SSH(Secure Shell):用于在网络上安全地远程登录和执行命令,通过加密通信和身份验证来确保连接的安全性。
  4. S/MIME(Secure/Multipurpose Internet Mail Extensions):用于对电子邮件进行加密和数字签名,确保邮件的机密性和真实性。
  5. VPN(Virtual Private Network):通过加密和隧道技术,在公共网络上建立安全的私密通信通道,用于远程访问和分支机构连接。
  6. PGP(Pretty Good Privacy):用于加密和数字签名的协议,使用对称加密和非对称加密,常用于加密电子邮件通信、文件加密和数字签名
  7. HTTPS(Hypertext Transfer Protocol Secure):用于在客户端和服务器之间建立安全的加密通信连接,使用SSL/TLS协议进行身份验证
8.2.2.2 不安全的协议
  1. WEP(Wired Equivalent Privacy):一种无线网络安全协议,但已被证明存在严重的漏洞,易受到破解和攻击。
  2. FTP(File Transfer Protocol):用于文件传输的协议,通信内容未加密,可能导致敏感数据泄露。
  3. Telnet:用于远程登录和管理的协议,通信内容未加密,容易被窃听和篡改。
  4. HTTP(Hypertext Transfer Protocol):用于在Web浏览器和Web服务器之间传输数据的协议,通信内容未加密,容易被窃听和篡改。

8.3 加密技术

8.3.1 对称加密与非对称加密

  • 对称加密:

    加密和解密使用同一个密钥

    • DES
    • 3DES
    • RC-5
    • IDEA
    • AES
  • 非对称加密:

    加密和解密需要成对的一组公开密钥和私有密钥

    • RSA
    • Elgamal
    • ECC:椭圆曲线算法

8.3.2 信息摘要

作用

​ 对所有数据提取指纹信息以实现数据签名、数据完整性校验等功能,由于其不可逆性,有时候会被用做敏感信息的加密。

​ 对于小文本量的信息,可以直接使用信息摘要作为加密方式,但如果文本量较多,经过加密后只会得到固定长度的密文

算法:

  • MD算法: Message Digest Algorithm ,目前主流的是MD5算法,为第五版算法,之前有MD2、MD3、MD4算法。
  • SHA算法:安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA);
  • MAC算法:带有密码信息的信息摘要算法,是对MD和SHA算法的演变和改进,包括HmacMD2、HmacMD4、HmacMD5、HmacSHA-256等。

第9章 信息化

9.1 通信系统

9.1.1 通信系统四要素

  1. 信源:信源是指信息的产生源头,可以是人、设备或系统。信源生成要传输的信息,并将其转换为适合传输的信号形式。
  2. 信宿:信宿是指信息的目的地,接收并解析传输过来的信号,将其转换回可理解的信息形式。信宿可以是人、设备或系统。
  3. 信道:信道是信息传输的媒介或通道,它可以是物理介质(如电缆、光纤)或无线传输介质(如无线电频谱)。信道负责将信号从信源传输到信宿。
  4. 噪声:噪声是指在信道中引入的干扰或扰动。噪声可以来自各种来源,如电磁干扰、信号衰减、信号失真等。噪声会影响信号的质量,可能导致传输错误或降低传输速率。

9.1.2 媒体

  1. 感觉媒体:能够刺激人类感官的媒体,如声音、图像、视频

  2. 表示媒体:传输信息的中介媒体,即用于数据交换的编码,如图像编码、文本编码、声音编码等

  3. 表现媒体:进行输入输出的媒体,如鼠标、键盘、扫描仪、打印机、显示器、VR设备等

  4. 交换媒体:系统之间进行信息交换的媒介

    • 存储媒介:用于存储的物理介质:硬盘、光盘、磁盘

第10章 知识产权

在这里插入图片描述

  • 外观设计专利权已延长为15年

在这里插入图片描述

  • 对于计算机软件,保护期满后,著作者享有署名权、修改权和保护作品完整权,不受限制

在这里插入图片描述

参考资料

(1条消息) 【软考——软件设计师】_宋子浩的博客-CSDN博客

  • 部分信息和图片转载自网络和各社区,有原文链接或水印,侵删
  • 19
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值