计算机的基本硬件系统:运算器、控制器、存储器、输入设备、输出设备
cpu负责获取程序指令,对指令进行译码并加以执行 (原题)
控制器(保证程序正常执行,处理异常事件) |
程序控制 |
操作控制 | |
运算器(只能运算) | 时间控制 |
数据处理 |
指令包括操作码和地址码
指令寄存器对用户是完全透明的(原题)
名称 | 单位 | 简写 | 换算 |
位(比特) | bit | b |
|
字节 | byte | B | 1字节=8bit |
千字节 | KB | K | 1KB=1024b |
兆字节 | MB | M | 1MB=1024KB |
吉字节 | GB | G | 1GB=1024MB |
太字节 | TB | T | 1TB=1024GB |
最小的数据单位:位(bit)
最小的存储单位:字节(btye)
十进制(D)二进制(B)、八进制(O)、十六进制(H)
_(H) = _ _ _ _(B)= _(O)= _ _ _(D)
FF(H) = 1111 1111(B)= 128+64+32+16+8+4+2+1 = 255
15*16¹+15*16⁰ = 255
756(O) = 1 1110 1110(B)=256+128+64+32+8+4+2 = 494
7*8²+5*8¹+6*8⁰ = 494
A | B | C | D | E | F |
10 | 11 | 12 | 13 | 14 | 15 |
(n)进制,超过n减n 写余数 进1
ABDFE(H) 205(O) 90E(H)
+ 1024 - 7 - F
—————— —————— —————
ACE22 176 8FF
0表示正号,1表示负号
[+0]原 = 0 0000000
[- 0]原 = 1 0000000
正数的反码与原码相同、负数的反码则是其绝对值按位求反
[+0]反 = 0 0000000
[- 0]反 = 1 1111111
正数的补码与其原码和反码相同
负数的补码等于其反码末位加1
[-3]原 = 1 0000011 [-3]反 = 1 1111100 [-3]补 = 1 1111101
[+0]补 = [-0]补 = 0 0000000
移码:补码基础上符号位取反
[[x]补]补 = [x]原 补码的补码等于其原码
原码:+127~-127
反码:+127~-127
补码:+127~-128
移码:+127~-128 因为 +0 与 -0 相同,所以补码与移码最小到-128 *
N=2ᴱ × F E为阶码,F为尾数 小数点前数字的个数为阶码,小数点后的数为尾数
例:1011.10101 = 2⁴ * 0.101110101
对齐方式:小阶向大阶对齐,浮点数向右移动。10² —> 10⁴(原题)
规格化浮点数就是将尾数的绝对值限定在[0.5,1] *(原题)
按时间快慢排序:
只能校验奇数个出错,不能纠错,只能校验
码距为2
利用多组奇偶性进行校验
可以检错、纠错 *
数据位n位,校验位k位,则需要满足 2ᴷ - 1>=n+k
可以检错、不能纠错
k个数据位后r个检验位
模2运算
码距为2
reduce 精简的 | complex 复杂的 |
RISC 精简指令 | CISC 复杂指令 |
长度固定 | 长度变化 |
寻址方式少 | 寻址方式多样化 |
实现译码硬布线控制 | 微程序控制技术 |
大量寄存器 | 一般 |
支持流水线 | 不支持流水线 |
指令种类少 | 指令多、丰富 |
第一条指令执行时间+(n-1)×(最大时间) = 采用流水线时间
加速比 = 不采用流水线 / 流水线时间
操作周期:所有时间段中最长时间段
吞吐率:最长时间段的倒数
n条指令的吞吐率:n/流水线
可以通过提升速率,提高利用率(原题)
闪存存储器,简称闪存(类似U盘) 以块为单位
对于存储器有2中分类方式:
一、按地址访问的存储器和安内容访问的存储器
二、按寻址方式:随机存储器、顺序存储器、直接存储器
相联存储器是一种按内容访问的存储器
虚拟存储器(主存+辅存)
计算机系统的主存主要是由DRAM构成的、(动态随机存储器,通过周期性刷新来保持数据的存储器械)
cache主要是由SRAM构成的、(静态随机存储器,静态是指只要保持通电即可实现数据恒常保持)
电可擦除存储器主要是由EEPROM构成的
DRAM周期性属性来保持数据的存储(原题)
高速缓存(cache)用来存放当前最活跃的程序和数据
位于cpu与主存之间,速度比主存快5-10倍
对程序员透明
用来存放部分拷贝信息 cache容量小
cache的命中率与cache容量有关
cache容量越大,命中率越高,cache成本越高,耗时越多
cache与贮存地址的映射是由硬件自动完成的
中断向量提供中断服务程序的入口地址
中断响应时间:发出中断请求开始,到进入中断服务程序
保存现场的目的:返回去继续执行原程序
微机中的总线分为数据总线、地址总线和控制总线(原题)
简记:数地控
PCI总线是内总线,采用并行传输方式
SCSI总线是并行外总线
简记:都是并行的,pc一般家里用,所以内总线,另一个scsi在外面,所以是外总线。
总线的复用可以减少总线中信号线的数量(原题)
只有一把密钥,密钥分发有缺点
加密解密速度快,适合加密大量明文
有两把密钥,用公钥加密-->私钥解密,私钥加密-->公钥解密
不能通过一把推出另一把,加密解密速度慢
发给谁就用谁的公钥加密
防止假冒和否认
防止篡改
CA:权威机构
用CA的公钥验证数字证书
私钥用于:解密和签名
公钥用于:加密和认证
口诀:公加验,私解签
DES、3DES、RC-5、IDEA、AES、RC4
RSA、ECC、DSA
MD5
SHA-1安全散列
串联系统
R=R1R2R3...RN
并联系统
R=1-(1-R1)(1-R2)...(1-RN)
指令寄存器的尾数取决于指令字长
计算机采用分级存储体系的目的是为了解决存储容量成本和速度之间的矛盾(原题)
计算机中对cpu范文速度最快的是通用寄存器
主动攻击:重放、IP地址欺骗、拒绝服务
被动攻击:流量分析、会话拦截
解释器:
解释程序和源程序要参与到程序的运行过程中
编译器:
源程序和编译程序都不再参与目标程序从的运行过程
翻译(编译)时将源程序翻译成独立保存的目标程序
速记: 编译NB一些,生成目标程序不参与运行
解释垃圾一点,不是生成目标程序,要参与
程序的三种基本控制结构:顺序、选择、循环(重复)
程序中必须有数据类型:
程序设计语言的基本成分包括:数据、运算、控制和传输
只传递值,不改变原数值
引用调用:传递地址,会改变原数值,参数不能为常量、表达式(原题)
编译方式:词法分析、语法分析、语义分析、(中间代码生成、代码优化、目标代码生成)
解释方式:词法分析、语法分析、语义分析
符号表:不断搜集、记录和使用源程序的相关符号的类型和特征
语义分析阶段的主要作用是进行类型分析和检查(原题)
语法分析阶段可以发现程序中的所有语法错误 (原题)
语义分析不能发现程序中所有的语义错误(原题)
语义分析可以发现静态语法错误,不能发现动态语义错误,动态语义错误运行时才能发现(原题)
寄存器的分配工作处于目标代码生成阶段(必考)
词法分析:识别字符(查单词)(必考)
语法分析:检查解构(主谓宾)(必考)
语义分析:检查类型是否匹配(表达式类型)as:int a = ‘qqq' (错误)(必考)
常见的中间代码:后缀式、三地址码、三元式、四元式和树
中间代码与具体的机器无关,可以将不同的高级语言翻译成同一种中间代码,中间代码可以跨平台(原题)
因为与具体的机器无关,使用中间代码有利于进行与机器无关的优化处理和提高编译的可移植性。
上下文无关文法:被广泛地用于表示各种程序设计语言的语法规则。
当优先级相同时,从右向左进行
中缀:a ? b
后缀:a b ?
当提供语法树需要求其后缀式时,对语法树做后序遍历即可。
O(1) < O(log₂n) < O(n) < O(nlog₂n) < O(n²) < O(n³) < O(2ⁿ) < O(n!) < O(nⁿ)
无特列代码 | O(1) |
while循环 | O(log₂n) |
for循环 | O(n) |
for循环 + while循环 | O(nlog₂n) |
双for循环 | O(n²) |
三for循环 | O(n³) |
O(1) < O(n) < O(n²)
常数 < 一维数组 < 二维数组
(必考+原题)
顺序表 | 线性表 | 平均时间复杂度 | |
查寻 | O(1) | O(n) | |
插入 | O(n) | O(n) | |
删除 | O(n) | O(n) |
入栈和出栈都不需要遍历链表
入队和出队都不需要遍历链表
循环队列的优点:入队和出队操作都不需要移动队列中的其他元素
n为主串,m为模式串(匹配串)
字符串比较次数:
规则:满足前缀式=后缀式
例:abaabaca
从左往右!
当前字符 | 匹配串 | 1 | 2 | 3 | 4 | 5 | 6 | 此次next值 | next |
abaabaca | 0 | 0 | |||||||
abaabaca | a | 0+1=1 | 01 | ||||||
abaabaca | ab | 前a!=后b | 0+1=1 |
011 | |||||
abaabaca | aba | 前a=后a | 前ab !=后ba | 1+1=2 | 0112 | ||||
abaabaca | abaa | 前a=后a | 前ab !=后aa | 前aba!=后baa | 1+1=2 | 01122 | |||
abaabaca | abaab | 前a!=后b | 前ab=后ab | 前aba!=后aab | 前abaa!=后baab | 2+1=3 | 011223 | ||
abaabaca | abaaba | 前a=后a | 前ab != 后ba | 前aba=后aba | 前abaa!=后aaba | 前abaab!=后baaba | 3+1=4 | 0112234 | |
abaabaca | abaabac | 前a!=后c | 前ab!=后ac | 前aba!=后bac | 前abaa!=后abac | 前abaab!=后aabac | 前abaaba!=后baabac | 0+1=1 | 01122341 |
二维:N 行 M 列,数组首地址:loc
当二维数组(0,0)开头时:
当二维数组(1,1)开头时:
当二维数组(0,0)开头时:
当二维数组(1,1)开头时:
当 i>=j 时,
当 i<=j 时,
当 i>=j 时,
当 i<=j 时,
节点的子树个数称为度(度就是直线的个数)
树的度:树里所有度中的最大值
树中的节点总数 = 树中所有结点度数之和 + 1
度为 m 的树中第 i 层上至多有 个结点(i>=1)
对于任何一棵二叉树都有:
高度为 h 的二叉树最多有 个结点
二叉树第 i 层上最多有 个结点
具有 n 个结点的完全二叉树的高度为
满二叉树:每层都是满的
完全二叉树:从上往下,从左到右排序的。
非完全二叉树:
二叉树的形态有 种,n为结点数。
二叉树包含k个结点时,其二叉链表结点中必有k+1个空的孩子指针
构造二叉树必须要中序遍历!
平衡二叉树:二叉树中的任意一个结点的左右子树高度差的绝对值不超过1.
最优二叉树(哈夫曼树):带权路径最短的树
最优二叉树不唯一
哈夫曼编码:左0右1
所有顶点的度数为2e,e为边数,不论有向图还是无向图
有向图:i -> j
无向图:i -> j
完全图:每个顶点之间都有边,共有条边,有向完全图为 n(n-1) 条边
连通图:在无向图中,任意两点之间有路径
最少有 n-1 条边,最多有条边
强连通图:在有向图中,任意两点之间都有路径
最少有 n 条边 ,最多有:n(n-1) 条边
第 i 行中不为 0 的个数表示 i 的出度数
第 j 列中不为 0 的个数表示 j 的入度数
无向图:矩阵中非 0 元素个数为 2e ,e为边数
有向图:矩阵中非 0 元素个数为 e ,e为边数
出度数为该点后的结点数
入度数:寻找指向该结点数
优先访问邻接顶点且有下个顶点
用邻接矩阵:
用邻接表:
遍历结果:125634
一层一层访问
用邻接矩阵:
用邻接表:
深度优先遍历与广度优先遍历的时间复杂度相同
顺序查找适用于顺序存储方式和链式存储方式
查找分为静态查找和动态查找
静态查找:
动态查找
折半查找 知识和顺序存储,有序
最多比较 次
平均比较 次
哈希表:构造哈希函数时,应尽量使关键字的所有组成部分都能起作用
可以删除、可以插入、可以查找
当k1=k2,且H(k1)≠H(k2),称为同义词
满足 且
as:15,25,21,33,73,65,53
满足 且
as:73,65,25,33,53,15,21
建立大顶堆,从上往下,把大的选为父节点
平均时间复杂度 | 最坏时间复杂度 | 最好时间复杂度 | 空间复杂度 | 稳定性 | |
直接插入 | ![]() |
![]() |
![]() |
![]() |
√ |
希尔排序 | ![]() |
![]() |
![]() |
× | |
简单选择排序 | ![]() |
![]() |
![]() |
![]() |
× |
堆排序 | ![]() |
![]() |
![]() |
![]() |
× |
冒泡排序 | ![]() |
![]() |
![]() |
![]() |
√ |
快速排序 | ![]() |
![]() |
![]() |
![]() |
× |
归并排序 | ![]() |
![]() |
![]() |
![]() |
√ |
红色边框则代表经常会考,记住这三个就好了。
算法是否稳定:取决于在排序过程中是否存在乱序的情况,整个算法过程中,一直是从小到大或从大到小,则稳定,反之,不稳定!
直接插入:适合基本有序
冒泡排序:每排序一次确定一个位置
快速排序:分治的思想、有序的序列是最坏的情况、每排序一次确定一个位置
数据库系统同城采用三级模式:外模式(视图)+模式(基本表)+内模式(存储文件)
逻辑独立性:外模式(视图)
物理独立性:内模式(存储文件)
A | B |
a | d |
b | a |
c | c |
A | B |
d | a |
b | a |
d | c |
A | B |
a | d |
b | a |
c | c |
d | a |
d | c |
A | B |
a | d |
c | c |
R∩S
A | B |
b | a |
A | B | C |
1 | 2 | 3 |
4 | 5 | 6 |
A | B | E |
1 | 2 | 6 |
4 | 4 | 4 |
R.A | R.B | R.C | S.A | S.B | S.C |
1 | 2 | 3 | 1 | 2 | 6 |
1 | 2 | 3 | 4 | 4 | 4 |
4 | 5 | 6 | 1 | 2 | 6 |
4 | 5 | 6 | 4 | 4 | 4 |
R.A | R.B | R.C | S.E |
1 | 2 | 3 | 6 |
A | B | C |
B | C | D |
可以通过主键唯一标识一个元组
数据库权限给某人,且允许该人将权限授予他人,用 with grant option
视图中表示对update,insert, delete 操作时,保证操作满足视图定义用 with check option
视图是一个虚拟表,查询时可以从一个或者多个基本表或视图中导出。(原题)
索引《=》内模式
包含在候选码中的元素成为主属性,否则成为非主属性
as: R(U,F) U={A,B,C,D,E,H} F={ A->B , A->C , C->D ,AE-> H }
可以推导出 AE -> ABCDEH,所以AE是候选码,所以 A, E是主属性/主键/关键字,B,C,D,H 是非主属性。
as: R(U,F) U={A,B,C,D,E,H} F={ A->B , A->H , C->E ,B-> DH }
所以 有关键字A,C,候选码AC
部分函数依赖:非主属性可以由候选码中的一部分主属性推导出来,则称存在部分函数依赖
as:A->B,A->C,D->E,AD->F,那么AD为候选码,A为主属性、D为主属性,且存在非主属性B、C、E可以由候选码AD的一部分,A或D推出,所以存在部分函数依赖
完全函数依赖:非主属性只能通过候选码中的所有主属性一起推导出来,则称存在完全函数依赖
as:AB->C,那么AB为候选码,AB为主属性,且非主属性C只能由候选码AB推出,所以称为完全函数依赖
每个属性都不可再分,但可能存在数据冗余和更新异常等问题,因为其中可能存在部分函数依赖
1NF特点:R中属性不可再分
R是第一范式并且每个非主属性都完全函数依赖于候选码,但其中可能存在传递依赖
2NF特点:不存在非主属性对候选码的部分函数依赖
1NF——>2NF 消除部分函数依赖,使得所有非主属性都完全依赖于候选码(所有非主属性只能拿通过候选码推出)
例题:F = {学号-> 姓名,学号->学院,学号->院长,学院->院长,课程号->课程名,(学号,课程号)->成绩}
U = {学号,姓名,学院,院长,课程号,课程名,成绩}
可以看出其中存在:
所以存在:(学号+课程号)为候选码,学号、课程号为主属性。
候选码:(学号,课程号) 主属性:学号、课程号
将学号记作k1,课程号记作k2进行分解。
F1={学号-> 姓名,学号->学院,学号->院长,学院->院长}
U1={学号,姓名,学院,院长}
完全函数依赖:学号-> 姓名,学号->学院,学号->院长,学院->院长
主属性为:学号
F2={课程号->课程名}
U2={课程号,课程名}
完全函数依赖:课程号->课程名
主属性为:课程号
F3={(学号,课程号)->成绩}
U3={课程号,课程名,成绩}
完全函数依赖:(学号,课程号)->成绩
主属性为:(学号,课程号)
且每个非主属性都非传递依赖函数依赖于候选码,(不存在非主属性对候选码的传递依赖、部分函数依赖,可能存在主属性对候选码的部分函数依赖和传递依赖)
F4={学号->姓名,学号->学院}
U3={学号,姓名,学院}
完全函数依赖:学号->姓名,学号->学院
主属性:学号
x->y , y->z =》 x->z,将z属性单独提出,生成一个新的函数关系
学号->学院,学院->院长=>学号->院长
F5={学院->院长}
完全函数依赖:学院->院长
U5={学院,院长}
R(A1,A2,A3,A4), F={ A1A3->A2 , A2->A3 }
R分解为ρ={(A1,A2),(A1,A3)},判断是有损联接还是无损联接?
因为 ,所以是有损联接
对于分解后的ρ,其中 (A1,A2)不在F中,(A1,A3)在F: A1A3->A2 中,但(A1,A3)中没有A2,因此A1A3≠>A2,所以不保持函数依赖
as:R(U,F) U={A,B,C,D,E,G} F={ A->B ,A->C,C->D,AE->G }
分解为_____两个子模式,分解后的关系仍保持依赖。
加了排它锁后,其他事务不能再加锁,该事务可对它读和修改
加了共享锁后,其他事务只能再加共享锁,只能读,不能修改
在划分模块时,一个模块的作用范围应该在其控制范围之内。若发现其作用范围不在其控制范围内,则可以通过
内聚类型 | 描述 |
功能内聚 | 完成一个单一功能,各个部分协同工作,缺一不可 |
顺序内聚 | 处理元素相关,而且必须顺序执行 |
通信内聚 | 所有处理元素集中在一个数据结构的区域上 |
过程内聚 | 处理元素相关,而且必须按特定的次序执行 |
时间内聚 | 所包含的任务必须在同一时间间隔内执行 |
逻辑内聚 | 完成逻辑上相关的一组任务 |
巧合内聚 | 完成一组没有关系或松散关系的任务 |
模型名称 | 适用情况 |
瀑布模型 | 适用于需求明确(相关领域经验、替换原有系统、功能有较清晰的定义、) |
增量模型 | 拥有瀑布模型的所有优点,可快速构造可运行产品 |
原型模型 | 适用于需求不明确,不适用于大规模系统 |
螺旋模型 | 适用于风险较大,规模较大的系统 |
喷泉模型 | 适用于面向对象开发的系统,各个开发阶段没有明显的界限 |
主动攻击:重放、IP地址欺骗、拒绝服务
被动攻击:流量分析
数据库容灾属于:系统安全和应用安全
网络安全体系:物理线路安全、网络安全、系统安全、应用安全
SSL:传输层,用于实现web安全通信,https是基于SSL
SSH:应用层和传输层,用于终端设备与远程站点之间建立链接,安全远程登录
MIME:电子邮件类型扩展,与安全电子邮箱无关
著作权:作者对其创作的作品享有人身权和财产权
人身权:发表权、署名权、修改权、保护作品完整权
只有发表权有时间限制是终生和死后50年,其他的永久有效
软件著作权产生时间:自从作品完成创作之日起
软件著作权的客体不包括:软件开发思想
如果是植物软件作品,那开发者只有署名权
只要考著作权归公司还是个人的不用想都是归公司
对于专利权,20年有效期,谁先谁获得,当天的共同协商
商标权可以延长(10年续加)
同时申请商标,进行协商,协商无效抓阄/抽签决定
物理层:中继器、集线器
数据链路层:网桥、交换机
网络层:路由器
应用层:网关
POP3(110) | NFS | |||
FTP(20/21) | HTTP(80) | DHCP(67) | TFTP(69) | |
Telnet | SMTP(25) | SNMP(161) | DNS(53) | |
TCP | UDP | |||
IP | ICMP | IGMP | ARP | RARP |
应用层 | 文件传输协议 FTP |
远程登录协议 Telnet |
电子邮件 SMTP |
网络文件服务 NFS |
网络管理 SNMP |
表示层 | |||||
会话层 | |||||
传输层 | TCP | UDP | |||
网络层 | IP | ICMP | ARP | RARP | |
数据链路层 | IEEE802,FDDI | PPP/SLIP | |||
物理层 |
名字带IP,AR都是网络层
所有带T的除了TFTP都属于TCP
不带T的除了POP3都属于UDP
MIME:邮件附件
SMTP:发邮件
POP3:收邮件
DNS域名查询顺序:本地host文件 =》本地DNS缓存 =》本地DNS服务器 =》 根域名服务器
主域名查询顺序:本地缓存 =》 本地host文件 =》 本地数据库 =》 转发域名服务器
IP:222.125.80.128/26 包含了___个可用主机地址,其中地址最小是_____,最大是_____。
IPV6的地址空间是IPV4的____倍。
先ping127.0.0.1,目的是为了测试网络的的连通性。
主机路由子网掩码:255.255.255.255
实体与实体之间不能有数据流
如果子类是继承(extends)父类,那么分类是抽象类(abstract)
如果子类是实现类(implements)父类,那么父类是接口(interface)
继承抽象就需要实现抽象类中的所有方法
一个类实现一个接口,则要实现接口中的所有方法
静态方法可以直接通过类名.方法名()调用
抽象类不一定有抽象方法,
有抽象方法的类一定是抽象类!
继承(extends)
抽象(abstract)
注意:abstract可以写在public 前面 ,也可以写在public 后面,软考(public abstract)
抽象方法无需写 { }
抽象类不一定有抽象方法
但有抽象方法的类一定是抽象类
实现(implements)
接口(interface)
接口的关键词:interface
实现接口用这个关键词implements
接口里的方法也无需写 { }
实现接口要重写所有接口中的方法
- 子类实现接口的时候,子类要实现接口中的所有方法
- 子类继承抽象父类,就要实现父类中的所有抽象方法
做题的时候一点要考虑那些方法还没被调用的(题目不会给出多余的方法和类)
抽象类中的方法
接口(interface)中的方法
模式名称 | 出现次数 | 时间 | |||
桥接模式 | 3次 | 09上半年 | 13下半年 | 17下半年 | |
组合模式 | 4次 | 11上半年 | 21上半年 | 09下半年 | 10下半年 |
策略模式 | 3次 | 10上半年 | 19上半年 | 15上半年 | |
观察者模式 | 3次 | 14上半年 | 16上半年 | 19下半年 | |
装饰模式 | 2次 | 12上半年 | 16下半年 | ||
状态模式 | 2次 | 11下半年 | 18下半年 | ||
生成模式 | 2次 | 17上半年 | 18上半年 |