计算机组成与体系结构

进制

① R进制转十进制

image-20230322145127870

​ R进制转为十进制,底数为R

② 十进制转R进制 – 短除法

image-20230322150036855

​ R为待转进制数

③ 二进制转八进制和十六进制

​ (1)二进制转八进制,三位为一单位

image-20230322150640826

​ (2)二进制转十六进制,四位为一单位,10开始使用A为一个数字为进行代表,A:10,B:11, C:12, D:13, E:14, F:15

image-20230322150750112

​ 加法:

​ 减法:

​ 乘法:

image-20230324112607453

​ 除法:

image-20230324113653670


浮点数运算

浮点数能表示的数的范围由阶码(e)的位数决定,精度由尾数的位数决定。

数符:正为0 负为1

阶符:在转换时候出现 n的正负 依然遵循 正0 负1 的规律

阶码:次方数

尾数:小数点后的数

image-20230326194656210

编码

image-20230322151910323

image-20230322154312239

image-20230327170115875

①原码

​ 转为二进制,不足8为补0,最高位为符号位。(1)->00000001

​ 1为负,0为正; (-1)->100000001 (1-1)->(1+(-1))->100000010->-2

②反码

​ 正数和原码相同; 负数符号位不变其余取反,运算后除了符号位其余取反则位原码值

​ 正:(00000001)->(000000001) 负:(100000001)->(11111110)

​ (1-1)->(111111111)->(10000000)->-0

③补码

​ 正数==反码==原码

​ 负数:== 反码+1

④移码(浮点运算的接码)

​ 移码==补码的首位取反


计算机结构

image-20230322155550576

CISC 与 RISC

image-20230519155544313


流水线

​ 流水线是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。各种部件同时处理是针对不同指令而言的,它们可同时为多条指令的不同部分进行工作,以提高各部件的利用率和指令的平均执行速度

流水线周期、执行时间计算

image-20230322164946243

image-20230322172213498

​ 解: 流水线周期:2ns

​ 100条指令全部执行完毕需要的事件为:

​ ①理论公式:(2+2+1)+(100-1)*2=203

​ ②实践公式:(3+100-1)*2=204

流水线吞吐量计算

​ 吞吐率 TP:单位时间内流水线所完成的任务数量或输出的结构数量

image-20230322190451426


​ 流水线最大吞吐率:1/周期时间

image-20230322190733287

流水线的加速比计算

image-20230322191241488

流水线的效率计算

image-20230322191345872 l

image-20230322194042204

Cache:SRAM

  • Cache与主存地址的映射是由电硬件自动完成

  • 冲突数小:全相联、组相联、直接

image-20230322222752470

层次化存储结构

image-20230322222831226

image-20230322222935258

中断 / I/O

image-20230522213308092

  • 中断向量:提供中断服务程序的入口地址
  • 中断响应时间:发出中断请求开始进入中断服务程序
  • 保存现场返回来执行源程序:堆栈

image-20230519232110948

存储器

  • CPU

  • 虚拟存储器:主存+赋存

  • 主存:DRAM

  • 按内容访问:相联存储器

  • 按访问方式分类:内容、地址

  • 按寻址方式:随机RAM、顺序SAM、直接DRAM

  • EEPROM:电可擦除

  • 空间局部性:访问邻接指令

  • 时间局部性:再次被访问

  • 闪存:块为单位,

image-20230519211038955

随机存取存储器

①DRAM (Dynamic RAM,动态RAM) - SDRAM

②SRAM (Static RAM,静态)

只读存储器

①MROM (Mask ROM, 掩护式ROM)

②PROM (Programmable ROM, 一次可编程ROM)

③EROM (Erasable PROM, 可擦除的PROM)

④闪速存储器 (flash memory, 闪存)

编址

*地址单元=大内存地址-小内存地址+1

image-20230324232208904

image-20230324210848107

磁盘

image-20230323223902279

例题:

image-20230323225828855

image-20230323230159303

总线

  • 系统总线:ISA、EISA、PCI:并行总线

  • SCSI::并行总线

  • 减少信息传输线的数量

  • 带宽=时钟频率*B字节

(1)内部总线

(2)系统总线

​ ①数据总线 ②地址总线 ③控制总线

(3)外部总线

系统可靠性分析

考察:计算

例题:串联中存在并联,串联位为主体

image-20230324234143873


串联系统

​ 可靠度:R=R1xR2xR3xR4xR5x…xRn

​ 失效率:λ=λ1+λ2+λ3+λ4+λ5+…+λn

image-20230324232004292


并联系统

​ 可靠度(1-失效率):R=1-(1-R1)x(1-R2)x(1-R3)x(1-R4)x(1-R5)x…x(1-Rn)

​ 失效率:1-可靠度

image-20230324233124280


n模冗余系统

(少考)

image-20230324233824473


差错控制

image-20230324235804309

CRC循环校验码–只能检错

模2除法(异或操作 )–双1为0,1-0为1,0-1为1,补0为被除数-1位

image-20230325002415876

image-20230325002519540

奇偶校验

码距d:两个二进制比较多少位不同

海明校验码

  • 利用奇偶校验纠错
  • 码距>1,=2可以检错,>=3可以纠错

(1)确定校验位为多少位(r),>=n+r+1

image-20230326004248656

(2)校验码放的位置为2的次方

image-20230326004355944

例题:

image-20230326004446123


操作系统

进程管理

进程的状态

image-20230329142047570


前趋图

image-20230329143056830


PV操作

image-20230329151040384

p操作==自-1

​ 当判断为True时被阻塞放入到进程队列等待

​ 当判断为False时则继续进行下去

v操作==自+1

​ 当判断为True时被阻塞放入到进程队列等待

​ 当判断为False时则继续进行下去

image-20230329153254055


习题

image-20230329164111459

image-20230329164129339

C A A

image-20230329164156294


死锁问题

至少资源计算:(n(需求)-1)x k(进程数)+1

死锁的预防:打破四大条件:

​ 互斥、保持和等待、不剥夺、环路等待

死锁的避免:有序资源分配法、银行家算法


存储管理

分区存储组织

image-20230329185415029


页式存储组织

image-20230329234456158

练习:

image-20230329235523601s

image-20230330001023816


段式存储组织(逻辑结构划分)

image-202303312333161827


段页存储组织

image-20230331233651221


快表

image-20230331233758309


页面置换算法

image-20230331233928223

例题:

image-20230419113435281

(1):没有使用快表:说明每读一次程序的块,需要先在内存上查表,才能读取相应的内存块,所以每一个块需要两次内存的访问,总共6个块==12

(2):规定:指令一次性读入,指令产生一次缺页中断。操作数产生两次


文件管理

索引文件结构

image-20230419141510106

① 0~9地址为直接索引,对应物理盘块,存取索引文件内容

② 一级间接索引:10 节点:存储物理盘块地址(假设一个地址4字节,一个索引节点假设4k,则可以存4k/4bite*物理盘块4k )

③ 二级间接索引:11节点,一级*1024

例题

image-20230419142226130

解:58和187、二级地址索引表

① 58和187: 逻辑号从0开始算,第5块位于i-addr[5]中的58号,索引块为1k,一个地址项4B,一个索引块有1024/4=256个地址项(5~260),第261号刚好位于第187号索引位;

② 二级地址索引表

文件和树型目录结构

考点:绝对路径、相对路径

image-20230419143752558

空闲存储空间的管理

image-20230419144414316

例题:

image-20230419145117874

解: 132 , 该子的第3个位置”1“

① 因为从0开始编位,从1位开始算,4195号位于4196,系统字节长32位,所以4195位于:(4195+1)/32=131.125

② 从0位开始算

image-20230419154443455


数据传输控制方式

image-20230419155007301


虚设备与SPOOLING技术

image-20230419155549536


微内核操作系统

image-20230419155843051


数据库系统

三级模式

image-20230419160815883

外模式-概念模式映射:表发生变化,改映射不需要改程序

外模式:比如数据库里面的视图,对数据库的数据处理

模式:如数据库的基本表

概念模式:比如数据库表的级别,把数据分成若干表

概念模式-内模式映射:内部存储形式和表的情况的映射关系

内模式:管理如何存储数据(格式、优化),存储文件

内模式层次 –> 物理级数据库层次

概念层次 –> 概念级数据库

用户应用程序层次 –> 用户级数据库

两级映射

概念模式==模式

  • 数据的物理独立性:修改模式和内模式之间的映像
  • 数据的逻辑独立性:修改外模式和模式之间的映像

完整性

image-20230523214636710


数据库设计过程

image-20230419162622952


E-R模型

image-20230419162731859

矩形 – 实体

椭圆 – 属性

菱形 – 联系

制图方法:

image-20230419163129558

image-20230419171329699

转成关系模式:一个实体转为一个模式,一个联系转为一个模式

① 1:1 –> 可以把联系合并到其中的一个实体看成一个模式也可以单独转为一个模式,则最少可以转为2个关系模式。

② 1:n –> 看情况把联系合并到哪个实体,最少可以转换为2个关系模式。

③ m:n –> 最少3个关系模式

image-20230419171544228


关系代数

考点:关系代数表达式,找出等价表达式。写出关系代数表达式

image-20230419171716549

image-20230523214947195

差集:A-B(A有且B没用)

笛卡尔积:A x B (A中一个个乘与B全部)

image-20230419192710789

投影:列与列

image-20230523215803663

选择:行与行(如下标位为数字,则为列的数据)

image-20230523215821021

连接:相同字段连接,自然连接起来,相同字段被去除,当需要计算投影,要算入相同字段,如例题则为 Sno、Sname、Sdept、Sno、Sage

元组:两个表的属性要相等

image-20230419193348343

  • 左连接:左表保留全部属性,就算右表不存在连接则显示null

    image-20230524004523552

  • 右连接:右表保留全部属性,就算左表不存在连接则显示null

    image-20230524004608661


规范化理论

函数依赖

image-20230421205843919

image-20230421211022364

部分函数依赖:

主键是两个属性的组合键,主键其中的一部分可以确定某一个属性

image-20230421211007764

传递函数依赖

A确定B,B能确定C,则A可以确定C

价值与用途

image-20230421211226284

image-20230523213943232

image-20230421211838927

超键 :唯一标识元组,可能存在冗余属性(例如学号和姓名可以确定性别,学号和姓名为超键)

候选键 : 无冗余属性,候选键可以有多个,主键只有一个

入度:被指向,指入

image-20230423164355482

例题1 :求候选关键字 A1

image-20230423165522410

解:只有A1入度为0且以A1为起点,可以遍历所有的结点

例题2 :求候选码 ABCD

image-20230423165706226

解:

注意事项:(ABD->E 是A与B与D汇合才能指向E,不能一个就使用单指向箭头)

错误画法:image-20230423165947453

该题的答案为:ABCD组合键才是候选码

例题3 : 组合键为A和B(如果写:AB则为一个组合键)

image-20230423170334018

解答:没用入度为0,找中间结点(有出度和入度),

范式

image-20230423171144700

第一范式(1NF)

image-20230423171903839

例题:第一范式:就是等价头目录,没有分类下去–父类

image-20230423172012055

第二范式(2NF)

image-20230423172608028

部分依赖:主键为组合键

思考题:

数据冗余:CREADIT字段

更新异常:更新CNO的CREDIT字段,必要要全部更新

插入异常:实现插入CNO+CREDIT,但没有SNO+GRADE数据

删除异常:删除一条信息,CREDIT也会被删除

image-20230423172921413

解决方案:把CNO和CREDIT提取出成一张新的表,原表删除CREDIT字段

第三范式(3NF)

image-20230423192534075

BC范式

image-20230423202222826

image-20230423202514711

T不是候选键->不是bc范式

例题

image-20230423204130361

(1) C 成为第三范式要实现 消除传递函数依赖,题意为不属于第三范式

(2) D 在多数据的表插入另一个字段

(3) A b:产生冗余数据–商品每次

模式分解

  • 保持函数依赖分解

image-20230425164735401

image-20230426135119224

分解后仍然保持函数依赖

image-20230425164901377

例题1

原始表:

image-20230425171533909

解:第一列(成绩、学生、课程)为待分解出来的表

​ a : 每一行的a代表这个表拥有这个字段,下标为原表的第几列

​ b : 不拥有这个属性使用b,下标为:第几行第几列

根据依赖关系,把表还原

image-20230426134929972

例题2 – 判断是不是无损分解 – 一分为二

image-20230426135212379

解:

image-20230426135513375

  • R1-R2=B 、R2-R1=C

​ 集合的减相当于被减数减去和减数里面相同的部分,留下不同的则为答案

在原来函数集合中满足 (交集)A 确定(R1-R2) B 或者 (交集) A 确定(R2-R1) C 则属于无损分解

并发控制

image-20230426142933020

image-20230426142952857

image-20230426143006653

完整性约束

image-20230426144229456

数据库安全

image-20230426144524495

数据备份

  • 冷备份\热备份

image-20230426151742988

  • 完全备份 \ 差量备份 \ 增量备份

image-20230426151901432

image-20230426152609783

  • 故障与恢复

image-20230426153743076

数据仓库与数据挖掘

image-20230426154916334

父分类:

image-20230426155108923

反规范化

image-20230426155327878

大数据

image-20230426160249824


计算机网络

OSI/RM七层模型

image-20230426160531360

习题1:局域网工作在底下两层,广播存在局域网

image-20230426161724174

解:求同一局域网

A :通过网桥连接,属于同一局域网

B :隔了路由器。路由器为第三层设备,不能透过通信

C :隔了集线器,属于第一层设备

D :隔了交换机,属于第二层设备


网络技术标准与协议

FTP : 可靠 TFTP:不可靠

SNMP : 简单网络管理协议

文件共享协议 (可通过UDP、TCP实现):Samba(可跨平台)、CIFS、NFS

image-20230426162623475

TCP协议

  • 三次握手

image-20230426164455819

DHCP协议

  • IP地址动态分配

image-20230426164754578

6.为假地址(没有和DHCP服务器联系上)

DNS协议

迭代查询:服务器必须回答目标IP与域名的映射关系。

递归查询:服务器收到一次迭代查询回复一次结果,这个结果不一定是目标IP与域名的映射关系,也可以是其他DNS服务器的地址

image-20230426172642267

例题

image-20230426174131936

根域名服务器直接反馈结果–>迭代

中介服务器去问其他服务器,得到结果才反馈 –> 递归

拓扑结构

image-20230426174613773

网络规划与设计

考点:了解规划和设计原则、逻辑设计和物理设计干什么

image-20230426175138166

逻辑网络设计

image-20230426175643855

物理网络设计

image-20230426175711091

分层设计

image-20230426175728039

IP地址

  • 主机号全0为网络地址全1为广播地址 ,计算主机数量要减去

  • A类 – 规定第一段首位为0

    • 前一段为网络号,后三段为主机号

    • 主机数量:2^24 - 2

  • B类 – 第一段第二位为0

    • 前两段为网络号,后两段为主机号
    • 主机数量:2^16 - 2
  • C类 – 第一段第三位为0

    • 前三段为网络地址,后一段为主机地址
    • 主机数量:2^8 - 2

image-20230426201940349

子网划分

子网掩码

  • 子网掩码 = 网络号 + 子网号 + 主机号

  • 网络号的部分为 1子网号的部分为 1主机号0

  • 求子网号 :2^k=N

    image-20230426205956929

    解:B类前16位为网络地址,在子网号中,因为 27个子网(N) 要取 5位做子网号(k) (2^5=32>27),取5位位子,网络地址和子网号都为1 转为十进制即可求得子网掩码

    image-20230426210248681

    解:因为要求每个子网要有主机700台,即 2^k - 2 >= 700,k=10,则主机位为10位,该IP地址为B类,后16位为主机号,现在主机位为10位,则主机号前6位为子网号,则 网络号和子网号为1,主机号为0 == 子网掩码

无分类编址

image-20230426203905992

解:

172 网络号位于B类(128~191),**/24** 表示:该IP地址转为二进制后,前24bite位为网络号 ,后8bite位为主机号,主机数为:2^8 - 2 = 254台

image-20230426211340356

例题

image-20230426211523547

解:

因为这是C类IP地址,所以前24bite位为网络号,8个bite位为主机号,

题目给出的地址块,前20位为网络号,后12位为主机号,不满足C类,所以主机号让出4位做子网号,则子网数量 = 2^4 = 16 个C类子网

特殊含义的IP地址

image-20230426212032795

无线网

image-20230426235106719

网络接入技术

image-20230426235323038

IPV6

image-20230427000549366


系统安全分析与设计

信息系统安全属性

image-20230505145251743

image-20230526003825953

对此加密技术

  • 对此加密:加密密钥和解密密钥相同
  • 大数据量

image-20230505150334304

非对称加密技术

  • 使用甲公钥加密,甲公钥公开,需要使用甲私钥解
  • 甲私钥加密(数字签名),由于甲公钥公开,所以谁都可以解开,但只有甲自己有私钥,所以定位是甲发出来的
  • 不适合大数据量加密
  • 拿对方公钥加密发送密文

image-20230505150153442

信息摘要

防止篡改

image-20230505151900265

数字签名

签名-私钥

验证–公钥

不可否认

  • A私钥加密(****数字签名),A公钥解,由于A公钥公开,所以谁都可以解开,但只有A自己有私钥,用公钥验证,所以定位是A发出来的(识别身份作用),无保密职能

image-20230505152910069

数字信封与PGP

  • 发送对称密钥

image-20230505153640541

练习题 - 设计邮件加密系统

image-20230505154958334

解:

image-20230505155248472

image-20230505155743142

加密算法

image-20230520011216639

  • MD5 输入512 生成128
  • AES 分组加密

网络安全 – 各个网络层次的安全保障

image-20230505160930685

网络安全 – 网络威胁与攻击

image-20230505162647037

image-20230505162754816

网络安全 – 防火墙

  • 屏蔽子网
    • DMZ
    • 弥补防外不防内
    • 外网和内网间设置屏蔽区,为隔离区:放置对外服务的服务器(WEB服务器。。。)

image-20230505163212630


数据结构

数组

len = 元素的字节数

image-20230419200154425

例题

image-20230419200359874

解: a+(2x5+3)*2


稀疏矩阵

image-20230419201136436

例题:A

image-20230419201913147

代数计算,例如A(0,0)应该存在M数据的M[1],A[1,0]–>M[2]


数据结构的定义

image-20230419203543563


线性表

链表:由一系列的结点组件,一个结点包含两个域,数据域和指针域(保存下一个结点的地址)

image-20230505172406874

  • 单链表

  • 引入头节点,不存任何信息,可以令所有结点操作方式变成一致

    • 删除

      (删除)q结点

      p->next = q->next
    • 插入

      增加s结点

      s->next = p->next
      p->next = s

顺序存储与链式存储对比

image-20230505174630041

队列与栈

  • 队列:先进先出(两端操作)

  • 栈:先进后出(一端操作)

  • 循环队列 – 尾指针指向下位空

    • 队空:头=尾
    • 队满:(只存n-1位数据)(尾下一位为头元素则满)尾+1%n=0

image-20230505175554174

image-20230505175605047

解:cba abc acb bac bca

image-20230505180741374

解:D(输出为靠左的依次输出)

广义表

image-20230505211922796

  • 表中表

image-20230505213939348

  • 长度:最外层的表包含多少个元素

  • 深度: 有多少个不同的表,外表,子表

  • 1…

  • 表头head(Ls):第一个元素

  • 表尾tail(Ls):除第一个元素其余都是表尾元素组成的新广义表

    image-20230505214001373

image-20230505213617003

  • 长度:最外层的表包含多少个元素 (例如LS1的长度为3,第一为表元素,第二三为子表)

  • 深度: 有多少个不同的表,外表,子表1…(例如LS1的深度为2,第一个为表元素,算重数1,第二个和第三个都一层子表,算重数1,1+1)

image-20230505213631162

  • 最后解只能取表头
  • 1.先取表尾 tail(LS1)=((b,c),(d,e))
  • 2.取表头 head(tail(LS1))=(b,c)
  • 3.再取表头 head(head(tail(LS1)))=b

树与二叉树

image-20230505214524233

  • 结点的度:拥有的孩子结点树 (结点1的度为 2)
  • 树的度: 结点最高的度
  • 叶子结点:4,5,7,8
  • 分支结点: 有分支,1,2,3,6
  • 内部结点:非叶子结点和根结点,2,3,6
  • 兄弟结点: 同父
  • 层次 : 同层结点

完全二叉树

image-20230505215222591

  • 满二叉树:每一层满
  • 完全二叉树:最后一层左边顺序排满,除了最后一层,其余全满

二叉树遍历

image-20230506171331324

  • 前序遍历(先访问根节点,再访问左子树结点,再访问右子树结点根、左、右):1、2、4、5、7、8、3、6
  • 中序遍历(先访问左子树结点,再访问根节点,再访问右子树结点 – 左、根、右):4、2、7、8、5、1、3、6
  • 后序遍历(先访问左子树结点,再访问右子树,再访问结点 – 左、右、根):4、8、7、5、2、6、3、 1
  • 层次遍历(一层一层遍历):1、2、3、4、5、6、7、8

反向构造二叉树

image-20230506172855718

image-20230506174517927

image-20230506174434166

树转二叉树

image-20230508234105881

  • 孩子结点转为左子树的根节点,如果有多个孩子结点,采用最左边的孩子结点作为根结点,剩余的为兄弟结点
  • 兄弟结点:全为树的右孩子结点,右边的兄弟为上一位兄弟的右节点第二个孩子结点的根为孩子结点

image-20230508234220297

  • 连线法(多个孩子则只保留一个孩子和父节点的连线,兄弟连起来)

查找二叉树

image-20230508234851015

最优二叉树(哈夫曼树)

  • 不计算中间结点,只计算叶子结点

  • 树的路径长度:每段累加起来的长度,有多少树枝

  • 权:某个叶子结点的数值,数值代表某种数据出现的频度

  • 带权路径长度:路径长度 * 权 (例结点2:带权路径长度=2 * 2,例结点4:带权路径长度=3 * 4)

  • 树的带权路径长度(只计算孩子结点,根节点排除):所有的带权路径长度累加 (例1:47 例2:25)

  • 构造哈夫曼树:树的带权路径长度最短

image-20230508235928078

例题

  • 选取两棵根结点权值最小的树
  • 选两个加起来的权最小作为新树

image-20230508235943618

先选两个最小权值权值的,计算和,然后替换原来的两个最小的,一直替换,生成树

①(当前3+5=8 -> min) 选 3,5 构成树,根 8 ,当前组的权值变为 29,7,8,14,23,11,8

②(当前7+8=-15 -> min)选 7,8 构成树 ,根15,当前组的权值变为 29,8,14,23,11,15

③(当前8+11=19 -> min)选8,11 构成树,根19,当前组的权值变为 29,14,23,15,19

④(当前14+15=29 -> min)选14,15 构成树,根29,当前组的权值变为 29,23,19,29

⑤(当前19+23=42 -> min)选19,23 构成树,根42,当前组的权值变为 29,42,29

⑥(当前29+29=58 -> min)选29,29 构成树,根58,当前组的权值变为 42,58

⑥(当前42+58=100 -> min)选42,58 构成树,根100

哈夫曼树的带权路径长度:5 * 5+3 * 5+7 * 4+14 * 3+29 * 2+8 * 3+11 * 3+23 * 2

线索二叉树

  • 在二叉树的基础上存在虚线把各结点串起来

image-20230509005418057

例如孩子结点左右都为空指针,有一些根节点的左或右为空

  • 左子树的指针指向遍历的 前驱结点

  • 右子树的指针指向遍历的 后驱结点

  • 前序线索二叉树:前序遍历结果:A,B,D,E,H,C,F,G,I

    • D的前驱结点为B,后驱结点为E

平衡二叉树

image-20230509140453507

  • 深度:多少个孩子结点 (结点7的深度为3)
  • 平衡度:结点的 左深度 减 右深度 (如1的平衡度=0-0=0,如5的平衡度=1-0=1,8的平衡度=0-1=-1,39的平衡度=3-0=3)

image-20230509141931328

图的存储

邻接矩阵

image-20230509142127526

  • N x N 二维表

邻接表

image-20230509142347464

图的遍历

image-20230509142558585

  • 深度:访问到最后一个结点再返回 – 1、2、4、8、5、3、6、7
  • 广度:遍历同层 – 1、2、3、4、5、6、7、8

image-20230509143109482

  • 深度:0、4、6、7、3、1、2、5、3
  • 广度:0、1、3、4、6、2、5、7

拓扑排序

image-20230509143535300

  • 要使箭头前的结点全部完成(不分先后)才能输出,不受约束才能执行

图的最小生成树

普里姆算法

  • 树没有环路 :边= n - 1

image-20230509144051530

image-20230509144714950

  • 定义红点集:从红点集出发,比如接入了B,则A-B为红点集,判断哪个点到红点集里面哪个点最短,则纳入下一个点为红点集

  • 定义蓝点集:剩余的点

  • 不能形成环

克鲁斯卡尔算法

  • 选当前最短的边,多条则一起选

    image-20230509144915382

算法

算法的特性

image-20230509145012446

算法的复杂度

时间复杂度 – 考试频率高

image-20230509145324347

  • O(1) : 一条语句:例如赋值、输出
  • O(n) : 一层循环,次数为n或n条语句
  • O(n*2) : 两层循环,每层次数为n
  • O(n*3) : 三层循环,每层次数为n
  • log(2n) : 例如平衡很高的排序二叉树,查找键值,先跟顶结点比较再跟下层结点比较,如果当前二叉树为当前为3层,则需要比较3次,所n为结点的数量

空间复杂度

image-20230509145341719

查找

顺序查找

image-20230509150714475

  • 平均查找长度:平均比较次数,例如上图,最好的情况比较 1 次,最坏比较 8 次,则平均查找长度为(1+8)/2
  • 时间复杂度:O(n)

二分查找

image-20230509151131357

例题

image-20230509151513846

  • mid中间值:(low+high)/2 得数取整 为 6
  • 不停的和中间值比较,如果比较过则免除
  • 最多比较次数:[Log2n]+1
  • 时间复杂度:O(log2n)

查找-散列表

  • 按内容存储,

image-20230509161502022

例题

image-20230509161519832

  • h=key%p
  • 3%5=3
  • image-20230509161706105
  • 8%5=3冲突,使用线性探测法,放到下一位空间
  • 12%5=2
  • 17%5=2,冲突,计划按照线性探测法放到3号,3号被3占用,4号被8占用,则放到5号位置
  • 9%5=4,冲突,4、5被占用,放到6号

排序

image-20230525220205364

image-20230509162322091

image-20230510004350190

直接插入排序

image-20230509164044586

希尔排序

  • 根据d设置间隔进行排序交换双方数值

image-20230509164105785

直接选择排序

image-20230509165743168

堆排序

image-20230509170301145

  • 小顶堆:孩子结点比父节点打

  • 大顶堆:父节点最大

    大顶堆:

    ①以完全二叉树排下来,每层从左到右填满

    ②父节点跟孩子结点比较,存在孩子大则替换,

    image-20230509171314902

    image-20230509171732389

    • ①把顶取走,把最后一个结点 20 替换顶 80
    • ②进行调整:把顶点和孩子对比,和最大的孩子交换
    • ③再跟孩子比较,和最大的孩子交换
    • ④再把顶拿走,最后一个结点上位为顶,继续进行比较替换

    一次次取出来的顶组合成顺序表则为堆排序后的顺序表

冒泡排序

image-20230510002509153

快速排序

image-20230510002737483

  • 小于基准的,和基准交换,往前放
  • 大于基准的,和基准交换,往后放
  • 最后基准前面的元素都比基准小,基准后都大于基准,则对这两个数组排序则得到排序后的数据

归并排序

image-20230510003317180

  • 57 和 52 比较,52 添加到R数组中,然后 57 和 59 比较,57复制到R中,然后 68 和 59并比较,59 添加到R,最后 68 添加到R,得到一次归并的排序后表,多次子表归并后则得到总排序表

基数排序

image-20230510003923906

  • 先按数的个位排序得到新的有序表
  • 再按数的十位排序得到新的有序表
  • 再按数的百位排序得到新的有序表

*程序设计语言与语言处理程序基础

image-20230510004854183

编译过程

image-20230510224949191

  • 编译:编写完全部代码,编译运行才编译成目标程序

  • 解释:编写完一段代码,编译器则后台进行解释看有没有写错误

  • 词法错误:非法字符,关键字或标识符拼写错误

  • 语法错误:语法结构出错,if endif不匹配,缺分号

  • 语义错误:死循环,零除数,其它逻辑错误

  • 目标代码:可执行的代码,涉及操作系统、底层硬件

文法定义

image-20230510225941840

image-20230510230111944

  • 上下文无关法:广泛用于语法规则

语法推导树

  • 语法推导:表达的串,构造的类型

image-20230510233629334

例题:

image-20230510233650355

  • 终结符:{a,b} 一般在{ }的小写字母代表,终结符不能推导出别的元素
  • 非终结符:这种符号可以推出其他符号,一般在{ }的大写字母在{ }表示,终结符可以推导出别的元素
  • 起始符:S
  • 产生式 \ 推导式:P、S->aAS|a、A->SbA|SS|ba
    • S->aAS|a : S->aAS 、S->a

有限自动机

image-20230511200830790

  • 起始:S
  • 结束:双圈代表结束点来的串**

例题:

image-20230511203414580

解:

以选项的串进行输入,输入完毕看能不能从起始点到结束点

正规式

image-20230511201450205

实例

  • (a|b)* 代表:a 或 b ,a,b,aa,bb …….

  • *** 代表多次**,0~无穷大,可代表空串

image-20230511203038053

  • 1、D:按选项进行校验
  • 2、C:看能不能代表能实现所有可能的串

表达式

image-20230511204020576

  • D:先构造树:看题目,后缀表达式则为后序遍历树(左右根 ab-c5+*)

传值和传址

image-20230512150921678

各程序语言特点

image-20230512151028793

中间代码

中间代码是源程序的一种内部表示,或称中间语言。中间代码的作用是可使编译程序的结构在逻辑上更为简单明确,使用中间代码可提高编译程序的可移植性,常见的有逆波兰记号、四元式、三元式和树。

法律法规

image-20230512151354453

保护期限

image-20230512152156967

知识产权人确定

image-20230512152825615

image-20230512160818519

侵权判定

image-20230512172244441

image-20230512174143911

标准化

表准的分类

image-20230512200240669

标准的编号

image-20230512200543996

多媒体基础

image-20230512201118262

音频

image-20230512201139400

  • 次声波、低声波:< 20Hz
  • 超声波: > 20kHz
  • 保证不失真:采样频率为被采样的音种最高率的两倍

图像

image-20230512201809791

image-20230512203958334

  • RGB:彩色显示器
  • YUV:电视机
  • CMY(CMYK):印刷
  • HSV(HSB):艺术

媒体种类

image-20230512205453229

多媒体相关计算

image-20230512205649895

  • 求容量

  • 像素 x 位数 : 位数,每个像素为16位:16 / 8 = 占2字节 =像素 x 位数的字节

  • 像素 x 色数:256色的图像:占2^k=256 ,8位 占1字节 =像素 x 色数的字节

例题

  • K=1024:1024只在存储使用
  • 传输k为1000

image-20230512213424019

  • 1、颜色深度24位占3字节

image-20230512213201288

常见多媒体标准

image-20230512213719328

数据压缩基础

  • 压缩前提:存在冗余

image-20230512215000821

有损压缩与无损压缩

image-20230512215754926

软件工程

开发模型

瀑布模型

image-20230512220259550

  • 瀑布模型:结构化方法中的模型,只适用于需求清晰的项目

image-20230512220526937

增量模型与螺旋模型

image-20230513000300616

其他经典模型

image-20230513000915580

构建组模型(CBSD)

image-20230513001841679

统一过程UP

image-20230513002515044

敏捷开发方法

image-20230513104632677

信息系统开发方法

image-20230513105309213

需求开发 - 需求分类与需求获取

image-20230513111051022

结构化设计

基本原则

image-20230513112248505

内聚和耦合

image-20230513112809462

系统结构/模块结构

image-20230513112907176

软件测试

测试原则与类型

image-20230513113416265

  • 回归测试:把之前测试过的模块重新设计
  • 代码走查:人工执行

测试用例设计

image-20230513114507299

  • 黑盒测试:例如只知道模块功能,输入输出暂未知

  • 白盒测试:看到程序内部结构,把所有的路径都进行测试

  • 语句覆盖:全部语句都执行一遍 层次级最低

  • 判定覆盖:真假分支都要执行

  • 条件覆盖:把判定拆分开,

  • 路径覆盖:所有可能都覆盖了,最高层级

测试阶段

image-20230513141825427

  • 单元测试:测局部功能、模块的相关接口
  • 集成测试:模块之间的衔接

McCabe复杂度

  • 计算:V(G)=m-n+2

image-20230513143032692

  • 结点:分叉的地方可抽象为结点,也可不抽象为结点

CMMI

  • 级别:一级~五级

image-20230513145242474

项目管理

时间管理

  • 甘特图:简单明了,各任务逻辑、依赖关系不清楚,
  • PERT图:圆圈,
    • 右上为最早开始时间前序任务都完成的情况下,即多个前结点箭头上的最长持续时间后,例如:6,前两个持续时间分别为3、4,即4为最长
    • 右下为最晚开始时间:求出最后一个任务的最早完成时间后,则最晚时间=最早时间,开始逆推-持续时间

风险管理

image-20230513150840270

面向对象设计

需求工程

image-20230513151503991

设计原则

image-20230513152113663

UML

  • 用例图:行为图、动态图|静态图(系统和外部的交互关系)
  • 顺序图:按顺序
  • 状态图:状态的变迁的转移情况
  • 活动图:和流程图结构一致

image-20230513161056060

设计模式的概念

image-20230513161511873

  • 架构模式:高层决策

设计模式的分类

image-20230513162043828

创建型模式

image-20230513162606800

  • 原型模式:克隆模式

结构型模式

image-20230513163705619

行为型模式

image-20230513164237556

image-20230513165442740

数据流图(DFD)

下午题1

image-20230523140900358

  • 存储题目没有名字,根据数据流名称+表自拟

基本概念

image-20230514164821178

image-20230514165307624

数据字典

image-20230514172812236

数据流图平衡原则

  • 父图和子图之间的平衡

image-20230514174247978

  • 顶层数据流图 和 0层数据流图 对比:找出缺少的数据流,一一匹配,指向方向:缺少->处理后的操作结果

  • 1、父图子图平衡

  • 2、加工既有输入流也要有输出流:加工至少有一条输入和输出流,只有输入无输出 -> 黑洞 只有输出无输入 -> 奇迹

image-20230514174603688

  • 3、数据守恒:题目的生成标题对应多少个加工数量

  • 数据流的起点或终点必须有一个是加工

答题技巧

image-20230514174753049

  • 试题1

image-20230514203904247

image-20230514204016978

image-20230514204046569

答案

1、和文本进行审题

2、文本审题

3、和顶层图进行比较,看缺少哪个步骤:①处理后的操作结果:P->E1 ; ②操作结果:E3->P

4、实现有入一定要有出

image-20230514211720602

  • 试题2

image-20230514212709418

image-20230514212750230

image-20230514212807609

解:

image-20230514215224644

IMG_20230514_215912

数据库设计

  • 回答模板

image-20230524183844208

  • 主键外键:把1方写入多方,

  • 外模式、模式和内模式:视图、基本表和存储文件

image-20230514220022603

数据库设计过程

image-20230515225538389

E-R模型

实体间联系类型

image-20230515225919851

  • 实体

  • 弱实体:双框,前提必须以另一个实体存在才存在

  • 继承:线加圆圈

  • 子实体:两条杠

image-20230524133228165

  • 属性

  • 主键:下划线

  • 字段名称:椭圆

图向关系模型的转换

image-20230515230308495

  • 一对一:可以把联系合并到其中一个实体内

  • 一对多:只可以把联系合并到的实体

  • 多对多:必须单独转为一个关系模式

答题技巧

例题1:

image-20230515232123632

image-20230515232214570

image-20230515232259195

image-20230515233717617

解析:

问题1:(1)1:n(1个部门对应多个员工)、(2)m 、(3)n

问题2:(不要求关联名称)

image-20230516001240595

问题3:(4)员工号,部门号、(5)客房号、(6)身份证号、(7)岗位、(8)客房号、身份证号

问题4:优点:减少连接操作

​ 缺点:数据产生冗余,重复存储

例题2:

image-20230517002403545

image-20230517002841564

image-20230517002511690

image-20230517002537060

image-20230517002601619

解:

问题1

  • 经理是特殊员工: 用横线中间圆圈表示,且特殊的职位设置两条竖线

image-20230517005212060

问题2

a:商场编号

b:部门编号

c:员工编号

部门 – 主键:部门编号、外键:商城编号

员工 – 主键:员工编号、外键:部门编号

经理 – 主键:员工编号、外键:员工编号

问题3:

image-20230517011449989

添加的实体:紧急联系人(员工编号、姓名、电话)

联系:1:n

UML建模

image-20230525001128636

image-20230517011633239

用例图

  • 题干有关项目的描述,写参与者和用例(名称,参与者,角色)

  • 包含关系(include):两个用例必然使用关系(登记外借信息 – 用户登录)

  • 扩展关系(extend) :不必须使用第二个用例(查询书籍信息 – 修改书籍信息)

  • 泛化关系

  • image-20230517112955425

类图与对象

image-20230517164137880

  • 填类名,方法名、属性名

  • 填多重度

  • 多重度:一个书籍列表对应0个或多个书籍

  • 填关系

  • 重点:范化、组合、聚合、实现关系

  • image-20230525001836450

  • 聚合:聚合进而独立

  • 组合与聚合

image-20230525002809823

  • 泛化:子类指向父类
  • image-20230525002919145
  • 实现

image-20230517165614616

  • 包含:包含-》被包含

顺序图

  • 对象写在顶端,对象引出生命线(虚线)

  • 箭头:向 * 发送 消息

  • 考点:消息,填入某些消息,根据处理流程填入

    image-20230517170255844

活动图

  • 接近程序流程图

  • 横线:分支、合并

  • 考点:补充完整

  • image-20230517170549082

    image-20230517170514956

状态图

  • 状态的变迁–动态图

  • 状态为结点,触发事件

  • 考点:根据系统描述,根据状态的变迁,填入状态和状态变迁的条件

  • 例:会员升级

    image-20230517170748895

通信图

  • 协助图、交互图
  • 和顺序图类似,顺序图强调时间顺序
  • 考点:填空题、填对象和传递的消息

image-20230517171247625

案例分析1

image-20230517171314425

image-20230517172458068

image-20230517171500341

image-20230517171514898

  • 问题1:

C:乐队

D:歌手,歌手聚成乐队 – 聚合关系

image-20230517212050308

  • 问题2

(1)0..* 一名歌手对应0个乐队或者多个乐队

(2)2..* 一个乐队对应两名或多名歌手

image-20230517212705222

  • 问题3

音轨:对应上一条下一条

image-20230517213132940

  • 问题4

按任意键 – 选择歌曲 – 播放

案例分析2

image-20230517213535677

image-20230517213548510

image-20230517213606779

  • 问题1

S1:普卡会员

S2:银卡会员

S3:金卡会员

T1:2500<=里程<50000

T2:里程 >= 50000

T3:里程 >= 50000

  • 问题2image-20230517214633318

  • 问题3:

    • 设计模式:状态模式

    • 必须要有的属性:CLevel

    • 计算里程数,判断里程数来计算会员等级

数据结构及算法应用

image-20230517215241701

分治法

image-20230517231854288

递归技术

image-20230517232648101

二分查找

  • L 数列
  • a:开始下标、b:结束下标、x:查找值

image-20230517233108076

回溯法

  • 深度优先

image-20230517233709848

贪心法

image-20230517233740594

动态规划法

image-20230517234216195

试题1

image-20230517234716136

image-20230517234732374

image-20230517234803538

问题1

(1) j=0

(2) b[ j ]=b[ j ]+s[ i ]

(3) min = temp

(4) b[m]=b[m]+s[i]

问题2

(5)贪心

(6)贪心

(7)O(n*2)

image-20230518001916791

(8)O(n*2)

问题3

image-20230518000805549

试题2

image-20230518104351250

image-20230518104439283

image-20230518104517805

image-20230518104619785

问题(1)

image-20230518161234770

image-20230518161245403

  • 问题2

(5)分治

(6)递归式:T(n)=2T(n/2)+O(n) :子问题为T(n/2),两个子问题,归并复杂度为O(n)

(7)时间复杂度:O(nlogn)

(8)空间复杂度(需要多少个交换空间==多少个元素):O(n)

  • 问题3

(9)n1+n2

面向对象程序设计

C++

image-20230518162206443

image-20230518162313640

image-20230518162332742

image-20230518163008074

JAVA

image-20230518163016353

image-20230518163050189

实例1

image-20230518163535362

image-20230518164052609

image-20230518164135633

image-20230518164220638

实例2

image-20230518164245481

image-20230518164359801

image-20230518165226263

image-20230518165236568