计算机基础
PV操作
P操作:将信号量S的值减1,即S=S-1 如果S大于等于0,则该进程继续执行,否则该进程进入等待队列。
S操作:将信号量S的值加1,即S=S+1 如果S大于0,则该进程继续执行,否则释放等待队列中第一个等待信号量的进程。
应用场景:主要应用在操作系统资源抢占的场景,比如锁资源,队列资源等。
流水线概念
计算机流水线执行周期=最慢那个指令执行时间;
流水线执行时间=首条指令执行时间+(指令总数-1)*流水线执行周期;
流水线吞吐率=任务数/完成时间;
流水线加速比=不采用流水线的执行时间/采用流水线的执行时间;
校验码
奇偶校验码
奇校验: 序列为1的个数如果为偶数则在前面加个1,否则加0,使最终结果中1的个数变成奇数。
偶校验: 序列为1的个数如果为奇数则在前面加个1,否则加0,使最终结果中1的个数变成偶数。
举例:
1111 的奇校验结果是 11111, 偶校验结果是 01111
1110 的奇校验结果是 01110 ,偶校验结果是 11110
海明码
由Richard Hamming于1950年提出、还被广泛采用的一种很有效的校验方法,是只要增加少数几个校验位,就能检测出二位同时出错、亦能检测出一位出错并能自动恢复该出错位的正确值的有效手段,后者被称为自动纠错。它的实现原理,是在k个数据位之外加上r个校验位,从而形成一个k+r位的新的码字,使新的码字的码距比较均匀地拉大。把数据的每一个二进制位分配在几个不同的偶校验位的组合中,当某一位出错后,就会引起相关的几个校验位的值发生变化,这不但可以发现出错,还能指出是哪一位出错,为进一步自动纠错提供了依据。
将有效信息按某种规律分成若干组,每组安排一个校验位,做奇偶测试,就能提供多位检错信息,以指出最大可能是哪位出错,从而将其纠正。实质上,海明校验是一种多重校验。
它不仅具有检测错误的能力,同时还具有给出错误所在准确位置的能力 但是因为这种海明校验的方法只能检测和纠正一位出错的情况。所以如果有多个错误,就不能查出了。 假设为k个数据位设置r个校验位,则校验位能表示2^r个状态,可用其中的一个状态指出 "没有发生错误",用其余的2 ^r -1个状态指出有错误发生在某一位,包括k个数据位和r个校验位,因此校验位的位数应满足如下关系: 2^r ≥ k + r + 1
CRC校验码
循环冗余校验码(CRC)的基本原理:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)*x的R次方,这样C(x)的右边就会空出R位,这就是校验码的位置。通过C(x)*X的R次方除以生成多项式G(x)得到的余数就是校验码。
举例:
存储
RAID5特征
RAID5把数据和相对应的奇偶校验信息存储到组成RAID5的各个磁盘上,并且奇偶校验信息和相对应的数据分别存储于不同的磁盘上,其中任意N-1块磁盘上都存储完整的数据,也就是说有相当于一块磁盘容量的空间用于存储奇偶校验信息。因此当RAID5的一个磁盘发生损坏后,不会影响数据的完整性,从而保证了数据安全。当损坏的磁盘被替换后,RAID还会自动利用剩下奇偶校验信息去重建此磁盘上的数据,来保持RAID5的高可靠性。
做raid 5阵列所有磁盘容量必须一样大,当容量不同时,会以最小的容量为准。 最好硬盘转速一样,否则会影响性能,而且可用空间=磁盘数n-1,Raid 5 没有独立的奇偶校验盘,所有校验信息分散放在所有磁盘上, 只占用一个磁盘的容量。
操作系统
进程前驱图
https://cloud.tencent.com/developer/article/1995739
计算机网络
DiffServ模型
DiffServ体系樟型的核心思想是;在网络边界将数据流按Q0S要求进行简单分类,不同的类别在内部节点的每次转发中实现不同的转发特性。DiffServ体系使得ISP能够提供给每个用户不同等级和质量的服务。用户(或网络边界节点)诵过设置每个数据包的DS字段(PV4首标中的服务类型ToS)字段或PV6首标中的谓信类(Trafic Class)字段)的值要求特定的服务等级。其中,被设置的DS字段被称为区分服务码点(DSCP)。这样就维持了现有的IP分组格式不变。
结构化布线系统
按照一般划分,结构化布线系统包括六个子系统:工作区子系统、水平支干线子系统、管理子系统、垂直主干子系统、设备子系统和建筑群主干子系统。
1.工作区子系统
工作区由信息插座延伸至站设备。工作区布线要求相对简单,这样就容易移动、添加和变更设备。
2.水平支干线子系统
连接管理子系统至工作区,包括水平布线、信息插座、电缆终端及交换。指定的拓扑结构为星形拓扑。
水平布线可选择的介质有三种(UTP电缆、STP电缆及光缆),最远的延伸距离为90米,除了90米水平电缆外,工作区与管理子系统的接插线和跨接线电缆的总长可达10米。
3.管理子系统
此部分放置电信布线系统设备,包括水平和主干布线系统的机械终端和1或交换。
4.垂直主干子系统
它连接通讯室、设备间和入口设备,包括主干电缆、中间交换和主交接、机械终端和用于主干到主干交换的接插线或插头。主干布线要采用星形拓扑结构,接地应符合EIA/TIA607规定的要求。
5.设备子系统
EIA/TIA569标准规定了设备间的设备布线。它是布线系统最主要的管理区域,所有楼层的资料都由电缆或光纤电缆传送至此。通常,此系统安装在计算机系统、网络系统和程控机系统的主机房内。
6.建筑群主干子系统
提供外部建筑物与大楼内布线的连接点。EIA/TIA569标准规定了网络接口的物理规格,实现建筑群之间的连接。
局域网分层模型
三层模型将大型局域网划分为核心层、汇聚层和接入层,每一层都有特定的作用。
①核心层是因特网络的高速骨干网,由于其重要性,因此在设计中应该采用冗余组件设计。在设计核心层没备的功能时,应尽量避免使用数据包过滤和策略路由等降低数据包转发速率的功能。如果需要连接因特网和外部网络,核心层还应包括一条或多条连接到外部网络的连接。
②汇聚层是核心层和接入层之间的分界点,应尽量将资源访问控制、流量的控制,广播域定义,VAN路由等在汇聚层实现。为保证层次化的特性,汇聚层应该向核心层隐藏接入层的细节,例如不管接入层划分了多少个子网,汇聚层向核心层路由器进行路由宣告时,仅宣告由多个子网地址汇聚而成的网络。为保证核心层能够连接运行不同协议的区域网络,各种协议的转换都应在汇聚层完成。
③接入层为用户提供在本地网段访问应用系统的能力,也要为相邻用户之间的互访需求提供足够的带宽。接入层还应该负责一些用户管理功能,以及用户信息的收集工作。
IPv6地址
IPv6地址增加到128位,并且能够支持多级地址层次;地址自动配置功能简化了网络地址的管理;在组播地址中增加了范围字段,改进了组播路由的可伸缩性;增加的任意播地址比IPv4中的广播地址更加实用。
IPv6地址是一个或一组接口的标识符。IPv6地址被分配到接口,而不是分配给结点。IPv6地址有三种类型:
(1)单播(Unicast)地址
(2)任意播(AnyCast)地址
(3)组播(Multicast)地址
在IPv6地址中,任何全"0”和全"1”字段都是合法的,除非特别排除的之外。特别是前缀可以包含"0”值字段,也可以用"0”作为终结字段。一个接口可以被赋予任何类型的多个地址(单播、任意播、组播)或地址范围。与IPv4相比,IPv6首部有下列改进:
分组头格式得到简化:IPv4头中的很多字段被丢弃,IPv6头中字段的数量从12个降到了8个,中间路由器必须处理的字段从6个降到了4个,这样就简化了路由器的处理过程,提高了路由选择的效率;
改进了对分组头部选项的支持:与IPV4不同,路由选项不再集成在分组头中,而是把扩展头作为任选项处理,仅在需要时才插入到IPv6头与负载之间,这种方式使得分组头的处理更灵活,也更流畅。以后如果需要,还可以很方便地定义新的扩展功能。"提供了流标记能力:IPv6增加了流标记,可以按照发送端的要求对某些分组进行特别的处理,从而提供了特别的服务质量支持,简化了对多媒体信息的处理,可以更好地传送具有实时需求的应用数据。
数据库
范式
Ⅰ第一范式(1NF):
数据库表中的字段都是单一属性的,不可再分。这个单一属性由基本类型构成,包括整型、实数、字符型、逻辑型、日期型等。
定义:如果一个关系模式R的所有属性都是不可分的基本数据项,则R属于1NF。
例如,下面的数据库表是符合第一范式的:
字段1 字段2 字段3 字段4
而这样的数据库表是不符合第一范式的:
字段1 字段2 字段3 字段4
字段3.1 字段3.2
Ⅱ 第二范式(2NF):
数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部分函数依赖指的是存在组合关键字中的某些字段决定非关键字段的情况),也即所有非关键字段都完全依赖于任意一组候选关键字。
假定选课关系表为SelectCourse(学号,姓名,年龄,课程名称,成绩,学分),关键字为组合关键字(学号,课程名称),因为存在如下决定关系:
(学号,课程名称) → (姓名,年龄,成绩,学分)
这个数据库表不满足第二范式,因为存在如下决定关系:
(课程名称) → (学分)
(学号) → (姓名,年龄)
即存在组合关键字中的字段决定非关键字的情况。
由于不符合2NF,这个选课关系表会存在如下问题:
(1) 数据冗余:
同一门课程由n个学生选修,"学分"就重复n-1次;同一个学生选修了m门课程,姓名和年龄就重复了m-1次。
(2) 更新异常:
若调整了某门课程的学分,数据表中所有行的"学分"值都要更新,否则会出现同一门课程学分不同的情况。
(3) 插入异常:
假设要开设一门新的课程,暂时还没有人选修。这样,由于还没有"学号"关键字,课程名称和学分也无法记录入数据库。
(4) 删除异常:
假设一批学生已经完成课程的选修,这些选修记录就应该从数据库表中删除。但是,与此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。
把选课关系表SelectCourse改为如下三个表:
学生:Student(学号,姓名,年龄);
课程:Course(课程名称,学分);
选课关系:SelectCourse(学号,课程名称,成绩)。
这样的数据库表是符合第二范式的, 消除了数据冗余、更新异常、插入异常和删除异常。
另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。
Ⅲ 第三范式(3NF):
在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系:
关键字段 → 非关键字段x → 非关键字段y
假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话),关键字为单一关键字"学号",因为存在如下决定关系:
(学号) → (姓名,年龄,所在学院,学院地点,学院电话)
这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:
(学号) → (所在学院) → (学院地点,学院电话)
即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。
它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。
把学生关系表分为如下两个表:
学生:(学号,姓名,年龄,所在学院);
学院:(学院,地点,电话)。
这样的数据库表是符合第三范式的,消除了数据冗余、更新异常、插入异常和删除异常。
Ⅳ鲍依斯-科得范式(BCNF):
在第三范式的基础上,数据库表中如果不存在任何字段对任一候选关键字段的传递函数依赖则符合BC范式。
假设仓库管理关系表为StorehouseManage(仓库ID,存储物品ID,管理员ID,数量),且有一个管理员只在一个仓库工作,一个仓库可以存储多种物品。这个数据库表中存在如下决定关系:
(仓库ID,存储物品ID) →(管理员ID,数量)
(管理员ID,存储物品ID) → (仓库ID,数量)
所以(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的候选关键字,表中的唯一非关键字段为数量,它是符合第三范式的。但是,由于存在如下决定关系:
(仓库ID) → (管理员ID)
(管理员ID) → (仓库ID)
即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。它会出现如下异常情况:
(1) 删除异常:
当仓库被清空后,所有"存储物品ID"和"数量"信息被删除的同时,"仓库ID"和"管理员ID"信息也被删除了。
(2) 插入异常:
当仓库没有存储任何物品时,无法给仓库分配管理员。
(3) 更新异常:
如果仓库换了管理员,则表中所有行的管理员ID都要修改。
把仓库管理关系表分解为二个关系表:
仓库管理:StorehouseManage(仓库ID,管理员ID);
仓库:Storehouse(仓库ID,存储物品ID,数量)。
这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。
Ⅴ 第四范式(4NF):
关系模式R∈1NF,如果对于R对于R的每个非平凡多值依赖X→→Y(Y不属于X),X都含有候选码,则R∈4NF。4NF就是限制关系模式的属性之间不允许有非平凡且非函数依赖的多值依赖。显然一个关系模式是4NF,则必为BCNF。
Ⅵ 第五范式(5NF):
是最终范式,消除了4NF中的连接依赖。
VII DK范式(DKNF):在值域上定义上的范式。
VIII 第六范式(6NF):目前关系型数据库最高范式。所有第六范式的关系同时满足第5范式与DK范式。
设计阶段
数据库设计的四个阶段:需求分析阶段、概念设计阶段、逻辑设计阶段、物理设计阶段。
1、系统需求分析阶段:数据库设计的第一步,就是了解与分析用户需求,确定系统边界信息需求、处理需求、安全性和完整性需求,然后编写系统分析报告。
2、概念结构设计阶段:概念结构设计,就是将上一阶段通过需求分析得到的用户需求抽象为概念结构,或称为概念模型(整个过程,其实就是我们前面提到的自底向上的分析)。描述概念模型的有力工具是E-R模型。
3、逻辑结构设计阶段:数据库逻辑设计,则是将上一阶段的概念结构转换成特定DBMS所支持的数据模型的过程。
4、物理结构设计阶段:物理设计是为逻辑数据模型选取一个最适合应用环境的物理结构。
数据仓库
数据仓库4大特点
- 面向主题:数据按主题组织。
- 集成的:消除了源数据中的不一致性,提供整个企业的一致性全局信息。
- 相对稳定的:主要进行查询操作,只有少量的修改和删除操作(或不删除)。
- 反映历史变化:记录了从过去某一时刻到当前各个阶段的信息,可对发展历程和未来趋势做定量分析和预测。
连接
笛卡尔积
笛卡尔乘积是指在数学中,两个集合X和Y的笛卡尔积(Cartesian product),又称直积,表示为X×Y,第一个对象是X的成员而第二个对象是Y的所有可能有序对的其中一个成员 [3]。
假设集合A={a, b},集合B={0, 1, 2},则两个集合的笛卡尔积为{(a, 0), (a, 1), (a, 2), (b, 0), (b, 1), (b, 2)}。
等值连接
笛卡尔积的子集,过滤出笛卡尔积中满足对比对象值相同的元组;
自然连接
自然连接(Natural join)是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉。而普通的等值连接并不去掉重复的属性列。