R进制转十进制 : 按权展开法
例如二进制 10100 = $1\times2^4+1\times2^2$ = 20
例如七进制 604 = $6\times7^2 + 4\times7^0$ = 298
十进制转R进制 : 短除法
例如20转二进制
2|20 余 0
2|10 余 0
2|5 余1
2|2 余0
2|1 余1
? 0
余数从下往上就是10100
二进制转八进制与十六进制
转八进制,从右到左三位一段
例如 10001110 = 216
转十六进制,从右到左四位一段
例如10001110 = 8E
正数 1 | 负数 1 | 正1加负1 (1-1) | |
---|---|---|---|
原码 | 0000 0001 | 1000 0001 | 1000 0010 |
反码 | 0000 0001 | 1111 1110 | 1111 1111 |
补码 | 0000 0001 | 1111 1111 | 0000 0000 |
移码 | 1000 0001 | 0111 1111 | 1000 0000 |
原码:
1B(字节byte) = 8bit
如果用一个字节表示1,会先转成二进制,再在右边补7个0,其中最右边的0是符号位,0代表正数,1代表负数
即1=0000 0001
-1=1000 0001
当1+(-1)时,原码1000 0010,值是-2,值是不对的,所以有其他编码方式
反码:
正数和原码一样.
负数符号位不变,其他按位取反,即0变1,1变0,即1111 1110
1+(-1) = 1111 1111 ,变成原码 = 1000 0000 值为 -0
补码:
正数和原码一样.
负数在反码的基础上+1
1+(-1) =1 0000 0000 为0 (其实补码应该用模的概念)
移码:
特定场合运用,浮点运算
在补码基础上,符号位取反
整数 | |
---|---|
原码 | $-(2^{n-1}-1)$ ~ $2^{n-1}-1$ |
反码 | $-(2^{n-1}-1)$ ~ $2^{n-1}-1$ |
补码 | $-2^{n-1}$ ~ $2^{n-1}-1$ |
浮点数表示(科学计数法)
$N= M\times R^e$
M成为尾数(必须是非0的个位数),e是指数,R是基数
进行浮点运算
对阶(低阶兑成高阶) -> 尾数计算 -> 结果格式化 (确保尾数是个位数)
例如1000+119
$1 \times 10^3 +1.19 \times 10^2 = 1 \times 10^3 +0.119 \times 10^3 = 1.119 \times 10^3?$
主机只包括两个部分,一个CPU,一个主存储器(内存)
CPU运算器
CPU控制器
体系结构类型 | 结构 | 关键特性 | 代表 |
---|---|---|---|
单指令流单数据流SISD | 控制部分 : 一个 处 理 器 : 一个 主存模块 : 一个 |
单处理器系统 | |
单指令流多数据流SIMD | 控制部分 : 一个 处 理 器 : 多个 主存模块 : 多个 |
各处理器以异步的形式 执行同一条指令 |
并行处理机 阵列处理机 超级向量处理机 |
多指令流多数据流MISD | 控制部分 : 多个 处 理 器 : 一个 主存模块 : 多个 |
不存在 | 理论上的,不存在 |
多指令流多数据流MIMD | 控制部分 : 多个 处 理 器 : 多个 主存模块 : 多个 |
能够实现作业、任务、 指令等各级全面并行 |
多处理机系统 多计算机 |
指令系统类型 | 指令 | 寻址方式 | 实现方式 | 其他 |
---|---|---|---|---|
CISC (复杂) | 数量多,使用频率差别大,可变长格式 | 支持多种 | 微程序控制技术(微码) | 研制周期长 |
RISC (精简) | 数量少,使用频率接近,定长格式, 大部分为单周期指令,操作寄存器, 只有Load/Store操作内存 |
支持方式少 | 增加了通用寄存器; 硬布线逻辑控制为主; 适合采用流水线 |
优化编译, 有效支持高级语言 |
CISC的背景是计算机还没普及时,机构买计算机需要从硬件到指令都定制
RISC的背景是计算机普及,所以删掉复杂指令,把基础指令提取出来,例如乘法可以由加法指令实现,多在寄存器操作
流水线是指在程序执行时,多条指令重叠进行操作的一种准并行处理实现技术
执行指令顺序 --> 取指 --> 分析 --> 执行
未使用流水线执行指令情况:
时间1 | 时间2 | 时间3 | 时间4 | 时间5 | 时间6 | |
---|---|---|---|---|---|---|
取指 | 1 | 2 | ||||
分析 | 1 | 2 | ||||
执行 | 1 | 2 |
使用流水线执行指令情况:
时间1 | 时间2 | 时间3 | 时间4 | |
---|---|---|---|---|
取指 | 1 | 2 | ||
分析 | 1 | 2 | ||
执行 | 1 | 2 |
流水线周期为执行时间最长的一段
例如,取指耗时2ns,分析2ns,执行1ns,那么流水线的周期就是2ns
流水线计算公式为
1条指令执行时间 + (指令条数-1)*流水线周期
理论公式 $(t1+t2+...+tk)+(n-1)*\Delta t$
实践公式 $(k+n-1)*\Delta t$
其中k为指令执行部分(如取指,分析,执行则k=3)
$\Delta t$ 是流水线周期
考试时,有理论的选项值先选理论,没理论选实践选项值
流水线的吞吐率是只在单位时间内流水线所完成的任务数量或输出的结果数量
吞吐率 $TP = \frac{指令条数}{流水线执行时间} $
最大吞吐率 $TP_{max} = \frac{1}{流水线周期}$
完成同一批任务,不使用流水线所用的时间与使用流水线所用时间之比称为流水线的加速比
$S= \frac{不使用流水线执行时间}{使用流水线执行时间}$
流水线的效率是指流水线的设备利用率
在时空图上,流水线的效率定义为n个任务占用的时空区域k个流水段总得时空区之比
$E = \frac{n个任务占用的时空区}{k个流水段的总的时空区} = \frac{T_0}{KT_k} $
快 | CPU | 寄存器 | 小 |
---|---|---|---|
$\uparrow$ | Cache | 按需内容存取 | $\downarrow$ |
$\uparrow$ | 内存(主存) | $\downarrow$ | |
慢 | 外存(辅存) | 硬盘,光盘,U盘等 | 大 |
Cache的功能 : 提高CPU数据输入输出的速率
在计算机的储存系统中,Cache是访问速度最快的层次(如果算寄存器的话则寄存器最快)
使用Cache改善系统性能的依据是程序的局部性原理
使用"Cache+主存储器"的平均周期
$t3 = ht_1+(1-h)t_2$
$t_1$ 表示Cache的周期时间 比如 1ns
$t_2$表示主存储器周期时间 比如1000ns
h 表示对Cache的命中率(CPU能在Cache中访问到数据时读Cache,否则读主存), 比如95%
那么 $t_3= 0.951+0.051000 = 50.95ns$
分类:
编址:(要会算)
例如:内存地址从AC000H到C7FFFH,总共有___K个地址单元?
大-小+1,如0到9是10个数字
C7FFFH - AC000H +1 = C7FFFH + 1 - AC000H = C8000H -AC000H = 1C000H
转换成K 就是 $\frac{1C000H}{1024} = \frac{116^4+1216^3}{2^{10}} = 112$
如果该内存地址按字(16bit)编址,有23片芯片构成,已知每片芯片有16K个存储单元,则该芯片每个存储单元存储__位
设每个存储单元存储x位 则 $112K 16 = 2816K*x$ 求得x=4
磁盘读取数据时,磁头会先找到对应的磁道,磁盘再转动,直到对应的扇区转到磁头的 地方
(在要传输数据后添加的冗余位)
模2除法:在做除法运算的过程中不计其进位的触发
例:原始报文为"10111",其生成多项式为"$x^3+x+1$",对其进行CRC编码后的结果为?
多项式二进制为 111 ,冗余位为多项式长度-1个0,即:
111丿$\overline{1011100}$
? 111
? $\overline{0101100}$
? 111
? $\overline{0010100}$
? 111
? $\overline{0001000}$
? 111
? $\overline{0000110}$
? 111
? $\overline{0000001}$
把最后的结果替换冗余位,即CRC编码后的结果是1011101
可以把结果与111进行模2除法运算,如果为0就是对的
算信息位和校验位
$2^k-1\geq n+k$
校验位都是在2的次方的位置
海明码从1开始,没有0,所以$2^k-1$
k是校验位
n是信息位
比如3个校验位最多能传7个状态数,其中信息位最多7-3=4
算校验位和海明码
例如:求1011的海明码
信息位为4,带入公式得出校验位为3,总位数为4
7 | 6 | 5 | 4($2^2$) | 3 | 2($2^1$) | 1($2^0$) | 位数 |
---|---|---|---|---|---|---|---|
X4 值为1 | X3 值为0 | X2值为1 | X1值为1 | 信息位 | |||
J3 | J2 | J1 | 校验位 |
$7=2^2+2^1+2^0$
$6=2^2+2^1$
$5=2^2+2^0$
$3=2^1+2^0$
那么J1的值是所有含有$2^0$的信息位值的异或(同值为0,异值为1),即 $J_1 = X_1 \bigoplus X_2 \bigoplus X_4 =1\bigoplus 1\bigoplus 1=1$
同理,J2 = 0 , J3 =0 ,即 海明码为1010101
海明码纠错
将受到的校验码和原始校验码进行异或,得出的位置就是出错的位置
例如,假如收到的海明码为1011101,校验码J3=1,J2=0,J1=1
与原始校验码001异或,得出100
说明是第$1*2^2+0+0=4$的位置出错了,取反得正确海明码1010101
操作系统概述:
基本的三态 : -->等待-->就绪-->运行
五态 : 加入了静止就绪和静止阻塞状态
描述程序的某个部分的先后依赖关系
考试一般配合PV操作一起考
进程的同步与互斥
互斥 : 千军万马过独木桥,只能走一个
同步 : 两人一起去游泳馆,一个走路,一个骑自行车,但为了同时到,骑车的人需要时不时停下来等走路的人
PV操作
临界资源 : 诸进程间需要互斥方式对其进行共享的资源,如打印机
临界区 : 每个进程中访问临界资源的那段代码
信号量 : 是一种特殊的变量,一般用S表示
P操作相当于阻塞 , 每次执行时信号量S=S-1,当信号量S<0时挂起
V操作相当于释放 , 每次执行时信号量S=S+1,当信号量$S\leq 0$时 激活P执行
在解PV题时,需要先判断是同步还是互斥 , 同步时需要判断他们的先后依赖条件 ,进行阻塞
例如 : 消费者和收银员两个进程.
没买东西是不能触发收银员收钱的,所以消费者购买东西 V(S1) 激活收银员收钱 P(S1)
收银员没收完钱消费者是不能拿着东西走的,所以收银员收完钱 V(S2) 激活消费者拿东西离开 P(S2)
? 在解趋势图和PV操作混合题时,条件是V,导向的结果是P
死锁问题
如果没有资源让进程执行完就会发生死锁
一般考试最少多少个资源不会发生死锁
$ M=n*(k-1)+1 $
n为进程数,k为每个进程需要的资源
例如,3个进程都需要5个系统资源,则如果有13个资源就不会发生死锁,因为如果都先分配4个,剩下的一个随便分配都能完成,并释放资源
段页式存储
页式存储(页号+页内地址)
页表存的是页号和物理块号
页面大小都一样
逻辑地址和物理地址转换,组成都是 页号/块号 + 页内地址
两者的页内地址都是相同的,先区分逻辑地址中的页号和页内地址,通过逻辑地址的页号找到物理地址的块号就行了
例如:
页面大小为4K,访问逻辑地址为5A29H,那么4K是$2^{12}$,对应16进制的三位,即A29是页内地址,5是页号,可通过页号5去页表里查物理块号
如果需要淘汰页号,则淘汰状态在内存中,并且没有访问的页号
段式存储(段号+段内地址)
段页式存储
页面置换(淘汰 )算法
三个模式:
两级映射:
注意转关系模式和联系
给出一定关系,和函数依赖,求候选键
画图,候选键能推导出所有的关系
主属性:候选关键字里的属性
非主属性:候选关键字外的属性
单主键不可能存在部分依赖,只有复合主键才可能有部分依赖
丢失修改: 事务A修改数据R,但结束前其他事务也修改了数据R,导致数据丢失
读脏数据: 事务A读取了其他事务还没提交的数据
不可重复读: 数据A两次读取数据R之间,其他事务修改了数据R,导致同一数据前后读取不一致
X锁,是事务T对数据A加上X锁时,只允许事务T读取和修改数据A
S锁,是事务T对数据A加上S锁时,其他事务只能再对数据A加S锁,而不能加X锁,直到T释放A上的S锁。
实体完整性约束 (主键,不能为空,不能重复)
参照完整性约束 (外键,其它表的主键,允许为空)
用户自定义完整性约束 (字段的约束,比如只让填0,1,只让填日期等等)
触发器 (提供给程序员和数据分析员来保证数据完整性的一种方法)
层次 | 名称 | 主要功能 | 主要设备及协议 |
---|---|---|---|
7 | 应用层 | 实现具体的应用功能 | |
6 | 表示层 | 数据的格式与表达、加密、压缩 | |
5 | 会话层 | 建立、管理和终止会话 | |
4 | 传输层 | 端到端的链接 | TCP、UDP |
3 | 网络层 | 分组传输和路由选择 | 三层交换机、路由器 |
2 | 数据链路层 | 传送以帧为单位的信息 | 网桥、交换机、网卡 |
1 | 物理层 | 二进制传输 | 中继器、集线器 |
TCP三次握手
DHCP自动分配IP
DNS的迭代查询和递归查询
按分布范围分: 局域网/城域网/广域网/因特网
按拓扑结构分: 总线型/星型/环形
分层设计
IPv4转成2进制总共有32位
IP地址 = 网络位 + 主机位
A类地址 前8位是网络位,以0开头,最多主机位$2^{(32-8)}-2$
B类地址 前16位是网络位,以10开头,最多主机位$2^{(32-16)}-2$
C类地址 前24位是网络位,以110开头,最多主机位$2^{(32-24)}-2$
实际使用时,一个A类或B类的主机位太多了,容易浪费,所以引入了子网划分,节约资源
无分类编址,172.18.129.0/24
24代表前24位为网络位,所以能容纳的主机位为 $2^{8}-2$
子网掩码 : 转二进制后,为1的部分是网络位,为0是主机位
单向Hash函数,固定长度的散列值.常用的右MD5和SHA
比如A发信息给B,用A的私钥加密(数字签名),B收到后用A的公钥解密(验证签名),如果能解开,说明该信息是A发出的,因为只有A才有A的私钥
数字信封
发送方将原文对称加密(适合大量文本)传输过去,再把加密秘钥用接收方公钥加密发送给对方
接收方用自己的私钥解开加密的秘钥,再用秘钥解开对称加密的原文
数字证书
如果B给A的公钥被C截获并篡改为C的公钥,那么A发给B的信息会被C解开.
这时需要正规的组织CA来公布权威的主体公钥信息,类似官方发布
威胁名称 | 描述 |
---|---|
重放攻击 ( ARP ) | 截获某次通讯数据并拷贝,出于非法的目的重发 |
拒绝服务 ( DOS ) | 合法访问被阻止 |
窃听 | 窃取信息 |
业务流分析 | 长期监(窃)听,并分析 |
信息泄露 | 信息泄露给别人 |
破坏信息完整性 | 非授权的增删改破坏数据 |
非授权访问 | 绕开授权非法访问 |
假冒 | 欺骗系统冒充合法用户或大权限用户 |
旁路控制 | 利用系统缺陷获取非授权信息 |
授权侵犯 | 被授权的人用于非授权的目的,"内部攻击" |
特洛伊木马 | 软件中包含某段程序,执行时破坏用户安全 |
陷阱门 | 在系统中某个地方设置"机关" |
抵赖 | 否认自己发的消息,伪造他人信息 |
网络级 效率比较高,类似海关只检查发货地
应用级 效率比较低,类似海关开箱检查
屏蔽子网
外网->防火墙->被屏蔽子网(WEB服务器,邮件服务器等能被外网访问的)->防火墙->内部网络
数组类型 | 存储地址计算 |
---|---|
一维数组a[n] | a[i]的存储地址为 : a+i*len |
二位数组$a[m][n]$ | $a[i][j]$的存储地址按行为 : a+(i * n+j) len $a[i][j]$的存储地址按行为 : a+(j m+i) *len |
考试时直接带入答案计算会更方便
顺序表 连续空间存储
链表 非连续空间存储
注意链表的结构和增删结点
优缺点 :
空间上,顺序表存储密度更优(不用存指针),链表容量分配更优(动态分配)
时间上,顺序表读效率高,链表新增删除效率高
例如 LS = ( a , ( b , c ) , ( d , e ) )
长度 : 表的元素个数,上面长度为3
深度 : 表的递归层数,上面深度为2
(可用多维数组理解)
基本运算 :
了解清楚树的基本概念
满二叉树和完全二叉树的特点
所有的孩子结点转成左子树结点
所有的兄弟结点转成右子树结点
左子树结点都小于根,右子树结点都大于根
树的路径长度 : 层数-1
树的带权路径长度(树的代价) : 所有叶子结点带权路径长度相加
给定权值构造哈夫曼树 :
先把给定的权值按从小到大的顺序排列
取出最小的两个组成新的结点,如2,3组成5,再把新的结点参与到给定的权值中再次从小到大排序
依次递归,能从下到上构造出哈夫曼树
由于二叉树里叶子结点的指针没有利用起来,为了遍历方便
产生了前序, 中序, 后序线索二叉树
即:根据前序, 中序, 后序的排列规则,把叶子结点的指针指向对应排序的前后结点
任意结点的左右子树深度相差不超过1
每个结点的平衡度只能为-1,0或1 (左右子树深度差)
图的存储用邻接矩阵(无向图由于是对称的矩阵所以可以用上三角矩阵或下三角矩阵)和邻接表
图的遍历可以有深度优先和广度优先
拓扑排序,用有向图可以表达出任务完成的先后顺序
最小生成树
从头到尾依次比较,平均查找长度为$\frac{n+1}{2}$, 时间复杂度为O(n)
有序排列才能用二分查找法,最多查找次数为$\lfloor log_2n \rfloor +1$ , 时间复杂度为$O( log_2n )$
例如有数组下标1~12的值从小到大排列
(1+12)/2=6.5向下取整得6
把值与下标6的比较,如果小则取$\lfloor (1+5)/2 \rfloor$ ,如果比6大则$\lfloor (7+12)/2 \rfloor$
因为已经排除下标6了,所以下次比较从 1 ~ 5或 7 ~ 12
与其结果下标的值继续比较,以此类推找到正确的值
设计一个Hash函数 , 以关键字为自变量 ,将关键字映射到一个有限的,地址连续的区间中,这个区间就是散列表
散列查找中使用的转换函数就叫散列函数
类似排队做早操时,不知道站那里,找到比你高的和比你矮的中间插进去就行
先选第一小的,再选第二小的,一直到最后
什么是堆
初建堆
先把序列依次变成完全二叉树,然后从最后一个非叶子结点起,把该结点与它的子结点比较大小,然后做交换
交换后如果有子结点的还要继续对比一下
堆排序
把堆的根节点取走,再把剩下的形成新的堆,再取走根结点,最后形成有序的排列
取走根结点后,把最后一个叶子结点放到根节点,然后和处建堆时候比较一样,与子结点进行比较,往下移,再与子结点比较,再下移
分而治之,和劫匪抢银行一样,以劫匪为基准,男的站左边,女的站右边,站好后对两组再排序
先比较个位排序,再比较十位排序,再比较百位排序...
认识终结符和非终结符
文法的类型
在产生式α→β中
类型 | 别称 | 说明 | 对应自动机 |
---|---|---|---|
0型 | 短语文法 | α至少包含一个非终结符 | 图灵机 |
1型 | 上下文有关文法 | 在0基础上,β的长度大于等于α | 线性界限自动机 |
2型 | 上下文无关文法 | 在1的基础上,α为非终结符 | 非确定的下推自动机 |
3型 | 正规文法 | 在2的基础上,A→a|aB ,一定要有或"|" | 有限自动机 |
如何判断一个串是否为某个文法的句型
正规式与正规文法之间的转换
文法产生式 | 正规式 | |
---|---|---|
规则1 | A→xB; B→y | A=xy |
规则2 | A→xA|y | A=x*y |
规则3 | A→x,A→y | A=x|y |
中缀表达式是人常用的方式,可由中序遍历生成
求其他X缀式时,可换成对应的X序遍历
传值相当于复制内存中的某个值到另一个空间,值改变时原值不变
传址相当于公用内存中的某个地址,值改变时,原来的值也会跟着变
使用"&"符号传址
语言 | 特点 |
---|---|
Fortran | 科学计算 |
Pascal | 为教学开发,表达能力强 |
C | 指针操作强,高效 |
Lisp | 函数式程序语言,人工智能 |
C++ | 面向对象,高效 |
Java | 面向对象,中间代码,跨平台 |
C# | 面向对象,中间代码,.Net |
Prolog | 逻辑推理,简洁性,表达能力,数据库和专家系统 |
所涉及的法律法规角度
主体和权利 | 保护期限 |
---|---|
公民的作品和软件产品 (发表权,使用权,获得报酬权等) | 终生+死后50年年底 (署名权是永久的) |
单位的作品和软件产品 (发表权,使用权,获得报酬权等) | 首发后的50年年底 |
注册商标 | 有效期10年(到期满6月必须续注) |
发明专利权 | 申请之日开始20年 |
实用新型和外观设计专利权 (已经存在的事物优化) | 申请之日开始10年 |
商业秘密 | 不确定,公开后公众可用 |
情况说明 | 归属 |
---|---|
在单位的任何情况,包括下班,离职一年内的本职工作 | 单位 |
委托开发 | 有合同约定归约定方; 没约定归创作方 |
合作开发 | 打杂的(物质场地提供等)不享有著作权; 共同创作,共同享有 |
商标 | 谁先申请归谁; 同时申请,提供谁先使用的证据归谁; 无法提供证据,协商解决,不行就抓阄 |
专利 | 谁先申请归谁; 同时申请协商解决 |
中国公民,法人或者其他组织的作品,无论是否发表,都享有著作权
开发软件所用的思想,处理过程,方法等不受保护
著作权法不适用的情形 :
国家机关的决议相关文件和正式译文
时事新闻
历法、通用数表等
国际、国外标准代号 : 标准代号+专业类号+顺序号+年代号
我国国家标准代号
GB : 强制性标准代号
GB/T : 推荐性标准代号
GB/Z : 指导性标准代号
GSB : 实物标准代号
行业标准代号
由汉语拼音大写字母组成,重复的会换,如电子行业为SJ (GJB国家军用标准现在也属于行业标准)
地方标准代号
DB + 省级行政区代码前两位
企业标准代码
Q + 企业代号
声音的带宽
人耳朵听到 : 20Hz~20KHz
人说话 : 300~3400Hz
乐器 : 20Hz~20KHz (和人耳听到的一样)
采样
彩色空间
注意单位
b转B需要除以8
K1204,只有存储是用K
k1000,传输时用
被淘汰的根本原因在需求不明确,经常改
所以只适用于需求明确或二次开发
包含了原型的特性,引入了风险分析
提高了软件开发的复用性(构件模块可以重复使用)
适合小项目
内聚从低到高
偶然内聚->逻辑内聚->瞬时内聚->过程内聚->通信内聚->顺序内聚->功能内聚
耦合从低到高
非直接耦合->数据耦合->标记耦合->控制耦合->外部耦合->公共耦合->内容耦合
有向边数 - 结点数 + 2
未通过CMMI称为混乱级
已管理级是个人对项目积累的经验
已定义级是组织和企业积累的经验和解决方案(文档化标准化)
定量管理是企业有量化标准(量化)
优化级(持续优化)
先分析出题目的实体,加工,数据流,数据存储等信息,再用数据平衡原则分析
实体间的联系类型
各种关系的强弱顺序:
泛化= 实现> 组合> 聚合> 关联> 依赖
一般考填消息和对象名
和顺序图一样,统称交互图,只是顺序图更强调时间概念
动态规划法和分治法最大的区别是,动态规划法需要填表,通过表来求解
记清楚各个关键字,练习上下文填写代码
原文:https://www.cnblogs.com/FromZeroToGod/p/11640807.html