计算机专业复试的一些笔记

文章目录

计算机网络

计算机网络的主要功能

硬件资源共享、软件资源共享、用户间信息交换、分布式处理

主机间的通信方式

客户-服务器(C/S)、对等(P2P)

信息交换方式

电路交换

​ 整个报文的比特流从源点连续地直达终点,像在一个管道中传输。包括建立连接、传输数据、断开连接三个阶段。

报文交换

​ 将整个报文转发到相邻节点,全部存储之后查找转发表转发到下一个节点。是存储-转发型的网络。

分组交换

​ 将整个报文拆解为一个个分组,通过流水线的方式进行存储转发。

计算机网络的性能指标

带宽

​ 表示网络通信线路传送数据的能力,单位是比特每秒

时延

​ 总时延 = 排队时延 + 处理时延 + 传输时延 + 传播时延

时延带宽积

​ 指发送端发送的第一个比特即将到达终点时,发送端已经发送了多少个比特,时延带宽积较高的通信链路叫做“长肥管道”

计算机网络提供的三种服务

面向连接服务和无连接服务

可靠服务和不可靠服务

有应答服务和无应答服务

五层协议

应用层

​ 为特定应用程序提供数据传输服务

传输层

​ 为进程提供通用数据传输服务

网络层

​ 为主机提供数据传输服务

数据链路层

​ 网络层针对的是主机之间的数据传输服务,而主机之间可以有多条链路,链路层协议就是为同一链路的主机提供数据传输服务。

物理层

​ 考虑的是怎样在传输媒体上传输数据比特流,而不是指具体的传输媒体

计算机网络为什么要采用分层结构
  • 各层之间相互独立

​ 底层向高层屏蔽实现细节,使高层感觉不到这些差异,高层不需要知道底层的功能如何实现。

  • 灵活性好

​ 各层都可以采用自己最适当的技术来实现,不必担心某一层的实现技术的变化影响到整个系统的工作。

  • 易于实现和标准化

​ 采用了规范的层次结构去组织网络功能,可以将计算机网络复杂的通信过程转化为有序的连续动作和有序的交互过程。

七层协议

表示层

​ 数据压缩、加密以及数据描述,使得应用程序不必关心各台主机中数据内部格式不同的问题

会话层

​ 建立及管理会话

TCP/IP协议

只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。

TCP/IP不严格遵守分层概念,应用层可能跨层直接使用IP层或者网络接口层

端到端和点到点

端到端是端口到端口(传输层到传输层),点到点是主机到主机(网络层到网络层)

直接相邻的结点之间是点到点通信,端到端通信建立在点到点通信的基础上,由一段段的点到点通信信道构成的。

同步和异步

同步通信的双方必须先建立同步,双方的时钟要调整到同一个频率,收发双方不停地发送和接受连续的同步比特流

异步通信在发送字符时,所发送的字符之间的时间间隔可以是任意的,但接收端必须时刻做好接受的准备

频分复用 时分复用 波分复用 码分复用

频分复用:信号间的载波频率不同,通过单一媒体传输多个独立信号

时分复用:允许每个信号在一个很短的时间使用信道、接着再让下一个信号使用

波分复用:就是光的频分复用,用一根光纤同时传输多个频率很接近的光载波信号

码分复用:用一组包含相互正交的码字的码组携带多路信号,用户之间可以在同样的时间使用同样的频带进行通信。各用户之间的码型不同,所以不会造成干扰。

流量控制的目的

接收双方各自的工作速率和缓存空间不同,可能出现发送方的发送能力大于接收方的接受能力的现象,因此流量控制实际上就是限制发送方的数据流量,使其不超过接收方的接收能力

流量控制的方式
  • 停止-等待协议

发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号。

  • 滑动窗口协议

任意时刻,发送方都维持一组连续的允许发送的帧的序号,称作发送窗口;接收方也维持一组连续的允许接收帧的序号,称为接收窗口。发送窗口对发送方进行流量控制,发送窗口的大小代表还未收到对方确认信息的情况下发送方还可以发送多少个数据帧。接收方,只有收到的数据帧序号落入接收窗口内时才允许将该数据帧收下。

  • 后退N帧协议

发送方可以连续发送帧,当接收方检测出失序的信息帧后,要求发送方重传最后一个正确接收的信息帧之后的所有未被确定的帧。或者当发送方发送了N个帧之后,发现该N个帧的前一个帧在计时器超时之后仍未返回其确认信息,则判定为出错或丢失,立即重传该帧和以及随后的N个帧。

  • 选择重传协议

只重传出现差错的数据帧或计时器超时的数据帧,加大接收窗口,以便先收下发送序号不连续但是仍处在接收窗口中的那些数据帧,等到所缺序号的数据帧收到后再一并送交主机

可靠传输机制

确认、超时重传

确认是一种无数据的控制帧,这种控制帧使得接收方可以让发送方知道哪些内容被正确接收。超时重传是指发送方在发送某个数据帧之后就开启一个计时器,在一定时间内如果没有得到发送的数据帧的确认帧,那么就重新发送该数据帧,直到发送成功为止。

网络协议三要素

语法、语义、时序

简单来说:语义表示要做什么,语法表示要怎么做,时序表示做的顺序。

随机访问介质访问控制

随机访问协议中,不采用集中控制方式解决发送信息的次序问题,所有用户都可以根据自己的意愿随机地发送信息,占用信道全部速率。

在总线型网络中,当有两个或多个用户同时发送信息时,就会产生帧的冲突,导致所有冲突用户的发送均以失败告终。

为了解决随机接入发生的碰撞,每个用户需要按照一定的规则反复重传它的帧,直至该帧无碰撞地通过。这些规则就是随机访问介质控制协议。

  • ALOHA协议

不限制发送、根据广播信道具有反馈性,发送方可以检测到冲突,可以知道数据帧是否遭到破坏,如果遭到破坏(即检测到冲突)那么可以等待一段随机长的时间后重发该帧。

  • CSMA(载波侦听多路访问)

非持续式:

经侦听,如果介质空闲,开始发送;如果介质忙,则等待一个随机长的时间,然后重复

1-持续式:

经侦听,如果介质空闲,开始发送,如果介质忙,持续侦听,一旦空闲立即发送,如果发生冲突,等待一个随机分布的时间然后重复

p-持续式:

经侦听,如果介质空闲,那么以p的概率发送,以(1-p)的概率延迟一个时间单元发送;如果介质忙,持续侦听,一旦空闲就重复

  • CSMS/CD(带碰撞检测的载波侦听多路访问)

是CSMS的改进方案。工作流程可以概括为:先听后发、边发边听(区别于CSMS)、冲突停发、随机重发。

  • CSMS/CA(带碰撞避免的载波侦听多路访问)

碰撞避免并不是完全避免碰撞,而是指协议的设计要尽量降低碰撞发生的概率。任何一个站要发送数据帧时,不仅都需要等待一个时间间隔,而且还要进入争用窗口,并计算随机退避时间以便再次试图接入信道,因此降低了发生碰撞的概率。

PPP协议

点到点协议是为在同等单元之间的传输数据包这样的简单链路设计的链路层协议,设计目的主要是用来通过拨号或专线方式建立点对点连接发送数据,使其成为各种主机、网桥和路由器之间简单连接的一种共通的解决方案。

HDLC协议

是一种面向比特的网络节点之间同步传输数据的数据链路层协议

中继器 集线器 网桥 交换机

都是用于互联、扩展局域网的连接设备

中继器工作在物理层,用来连接两个速率相同且数据链路层协议也相同的网段,其功能是消除数字信号在传输过程中的失真和衰减

集线器也工作在物理层,相当于一个多接口的中继器,可以将多个节点连接成一个共享式的局域网,但任何时刻都只能有一个节点通过公共信道发送数据

网桥工作在数据链路层,可以连接不同的物理层,不同的MAC子层以及不同速率的以太网。网桥具有过滤帧及存储转发帧的功能,可以隔离冲突域,但不能隔离广播域

交换机工作在数据链路层,相当于一个多端口的网桥,是交换式局域网的核心设备。允许端口之间建立多个并发连接,实现多个节点之间的并发传输。

路由器的主要功能

路由器主要完成两个功能:路由选择、分组转发

路由选择根据特定的路由选择协议构造出路由表,同时经常或定期地和相邻的路由器交换路由信息而不断更新和维护路由表。

分组转发处理通过路由器的数据流,关键操作是转发表查询、转发及相关的队列管理和任务调度

动态路由算法
  • 距离-向量路由算法(例如RIP算法)

在距离-向量路由算法中,所有节点都定期将它们的整个路由选择表传送给所有与之直接相邻的节点。这种路由选择表包含:每条路径的目的地、路径的代价

所有节点都必须参与距离向量交换,以保证路由的有效性和一致性,也就是说,所有的节点都监听从其他节点传来的路由选择更新信息,并在下列情况更新它们的路由选择表:

  1. 被通告一条新的路由(在本路由表中不存在)
  2. 发来的路由信息中有一条到达某个目的地的路由,该路由与当前的路由相比,距离更短
  • 链路状态路由算法(例如OSPF算法)

链路状态路由算法要求每个参与该算法的节点都具有完全的网络拓扑信息,它们执行下述两项任务:①主动测试所有邻接节点的状态、②定期将链路状态传播给所有其他节点

  • 二者比较

距离-向量路由算法中,每个节点仅与它的直接邻居交谈,它为它的邻居提供从自己到网络中所有其他节点的最低代价估计。

链路状态路由算法中,每个节点通过广播的方式与所有其他节点交谈,但它仅告诉它们与它直接相连的链路的费用。

相比之下,路由-向量路由算法有可能遇到路由环路问题。

内部网关协议

一个自治系统内部所使用的路由选择协议称为内部网关协议(IGP),也称域内路由选择,具体的协议有RIP和OSPF等。

路由信息协议(RIP):分布式的基于距离向量的路由选择协议

RIP规定:

  1. 网络中的每个路由器都要维护从它自身到其他每个目的网络的距离记录
  2. 距离也成为跳数,规定每经过一个路由器,跳数加一
  3. RIP认为好的路由就是它通过的路由器的数目少,即跳数小的路径
  4. RIP允许一条路径最多只能包含15个路由器。因此距离等于16时表示不可达。可见RIP只适用于小型互联网,规定最高跳数的原因是避免距离-向量路由可能出现的环路的情况
  5. RIP默认在任意两个使用RIP的路由器之间每30秒广播一次RIP路由更新信息,以便自动建立并维护路由表(动态维护)

开放最短路径优先(OSPF):分布式的基于链路状态路由算法的代表

OSPF和RIP的主要区别:

  1. OSPF向本自治系统中的所有路由器发送信息,使用的是洪泛法。而RIP只向自己相邻的几个路由器发送信息
  2. 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。“链路状态”说明本路由器和哪些路由器相邻及该链路的“代价“,而在RIP中,发送的信息是本路由器所知道的全部信息,即整个路由表
  3. 只有当链路状态发生变化时,路由器才采用洪泛法向所有的路由器发送此信息,并且更新过程收敛的快。RIP中则是定期交换路由表信息。

OSPF还有以下特点:

  1. OSPF对不同的链路可根据IP分组的不同服务类型而设置成不同的代价。
  2. 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。称为多路径间的负载平衡
  3. 所有在OSPF路由器之间交换的分组都具有鉴别功能,因而保证了仅在可信赖的路由器之间交换链路状态信息
外部网关协议

自治系统之间所使用的路由选择协议称为外部网关协议(EGP),也称域间路由选择,用于在不同的自治系统的路由器之间交换路由信息,并负责为分组在不同自治系统之间选择最优的路径。具体的协议有BGP

边界网关协议(BGP)是不同自治系统的路由器之间交换路由信息的协议,是一种外部网关协议。边界网关协议只能力求寻找一条能够到达目的网络且较好的路由,并非寻找一条最佳路由。BGP采用路径向量路由选择协议,与距离向量协议和链路状态协议有很大的区别。BGP是应用层协议,基于TCP

BGP的工作原理:每个自治系统的管理员要选择至少一个路由器作为该自治系统的BGP发言人。自治系统通过各自的BGP发言人交换路由信息,首先要建立TCP连接(可见BGP报文是通过TCP报文传送的),然后在此连接上交换BGP报文以建立BGP会话,再利用BGP会话交换路由信息。当所有的BGP发言人都相互交换网络可达性的信息后,各BGP发言人就可以找出到达各个自治系统的较好路由。

RIP-好消息传得快,坏消息传得慢

某个网络突然变得不可达,则这个网络直接相连的路由器(A)最先知道这个不可达信息,但是此时其他路由器(B)并不知道这个网络不可达,此时(A)路由器如果收到(B)路由器传来的路由表信息,会误认为可以通过(B)路由器到达该网络,(A)路由器更新自己的路由表,(B)再获得(A)传来的路由表信息,路径跳数逐渐增加,直至到达16,这时候才意识到网络不可达,所以说坏消息传播得慢。

网络层转发分组的流程
  1. 从数据报首部提取目的主机的IP地址,得出目的网络地址
  2. 若网络与此路由器直接相连,则把数据报直接交付给目的主机,这称为路由器的直接交付,否则是间接交付
  3. 间接交付(顺序检查3种情况):
    1. 如果路由表中有目的地址为目的主机IP地址的特定主机路由(对特定的目的主机指明一个特定的路由,通常是为了控制或测试网络,或出于安全考虑才采用的),则把数据报传送给路由表中所指明的下一跳路由器。
    2. 如果路由表中有到达目的地址网络的路由,则把数据报传送给路由表指明的下一跳路由器
    3. 如果路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器
    4. 报告转发分组错误

得到下一跳路由器的IP地址后并不是直接将该地址填入待发送的数据报,而是将该IP地址传换成MAC地址(通过ARP地址解析协议),将其放到MAC帧首部中,然后根据这个MAC地址找到下一跳路由器。在不同的网络中传输时,MAC帧中的源地址和目的地址要发生变化,但是网桥在转发帧时不改变帧的源地址,注意区分

IP地址和MAC地址

IP地址是网络层使用的地址,它是分层次等级的。MAC地址是数据链路层使用的地址,是平面式的。

网络层及网络层以上使用IP地址,IP地址放在IP数据报的首部,而MAC地址放在MAC帧的首部。通过数据封装,将IP数据报分组封装为MAC帧后,数据链路层看不见数据报分组中的IP地址

路由器用来互联多个网络,因此不仅有多个IP地址,也有多个硬件地址

ARP地址解析协议

无论网络层使用什么协议,在实际网络的链路上传送数据帧时,最终必须使用硬件地址。所以需要一种方法来完成IP地址到MAC地址的映射,这就是地址解析协议

DHCP动态主机配置协议

用于给主机动态分配IP地址,提供了即插即用联网的机制,这种机制允许一台计算机加入新的网络和获取IP地址而不用手工参与。DHCP是应用层协议,是基于UDP的

ICMP网际控制报文协议

为了提高IP数据报交付成功的机会,在网络层使用了网际控制报文协议来让主机或路由器报告差错和异常情况。ICMP报文作为IP层数据报的数据,加上数据包的首部,组成IP数据报发送出去。

ICMP报文的种类有ICMP差错报告报文和ICMP查询报文,ICMP差错报告报文用于目标主机或到目标主机路径上的路由器向源主机报告差错和异常情况。有五种类型:终点不可达、源点抑制、超时、参数出错、路由重定向

传输层的功能

传输层为它上面的应用层提供通信服务,它位于网络层之上,为运行在不同主机上的进程之间提供了逻辑通信,网络层提供主机之间的逻辑通信。

功能如下:

  1. 传输层提供应用进程之间的逻辑通信(端到端)
  2. 复用和分用。复用是指发送方不同的应用进程都可以使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能把这些数据正确交付到目的应用进程
  3. 传输层还要对收到的报文进行差错检测(首部和数据部分)。而网络层只检查IP数据报的首部,不检验数据部分是否出错。
  4. 提供两种不同的传输协议,即面向连接的TCP和无连接的UDP。网络层无法同时实现两种协议。
UDP协议

UDP提供尽最大努力的交付,所有维护传输可靠性的工作需要用户在应用层完成。UDP的优点:

  1. 无需建立连接
  2. 无连接状态
  3. 分区首部开销小
  4. 应用层能更好的控制要发送的数据和发送时间
TCP协议

TCP是在不可靠的IP层之上实现的可靠的数据传输协议,它主要解决传输的可靠、有序、无丢失和不重复问题。特点如下:

  1. 面向连接的传输层协议
  2. 每条TCP连接只能有两个端点,每条TCP连接只能是点对点的
  3. TCP提供可靠的交付服务,保证传送的数据无差错、不丢失、不重复且有序
  4. 提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据

TCP连接的建立

TCP连接建立的过程中,要解决以下三个问题:

  1. 要使每一方都能够确知对方的存在
  2. 要允许双方协商一些参数(最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量)
  3. 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配

三次握手建立连接

第一步:客户机的TCP首先向服务器的TCP发送一个连接请求报文段。这个特殊的报文段中不含应用层数据,其首部中的SYN标志位被置为1。另外,客户机会随机选择一个起始序号seq = x(连接请求报文不携带数据,但是要消耗一个序号)

第二步:服务器的TCP收到连接请求报文段后,如同意建立连接,就向客户机发回确认,并为该TCP连接分配TCP缓存和变量。在确认报文段中,SYN和ACK位都被置为1,确认号字段的值为x+1,并且服务器随机产生起始序号seq = y(确认报文不携带数据,但也要消耗一个序号)

第三步:当客户机收到确认报文段后,还要向服务器给出确认,并且也要给该连接分配缓存和变量。这个报文段的ACK标志位被置为1,序号字段为x+1,确认号字段ack=y+1。该报文段可以携带数据,若不携带数据则不消耗序号。

三次握手之后,就可以传送应用层数据。TCP提供的是全双工通信,因此通信双方的应用进程在任何时候都能发送数据。另外值得注意的是,服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于收到SYN洪泛攻击。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pxHyJqIq-1658310967708)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220710161222563.png)]

四次握手释放连接

第一步:客户机打算关闭连接时,发送一个连接释放报文段,并停止发送数据,主动关闭TCP连接,该报文段的FIN标志位被置1,seq=u,等于前面已经传送过的数据的最后一个字节的序号加1(FIN报文即使不携带数据,也要消耗一个序号)。TCP是全双工的,即可以想象为一条TCP连接上有两条数据通路。发送FIN报文时,发送FIN的一端不能再发送数据,即关闭了其中一条数据通路,但对方还可以发送数据。

第二步:服务器收到连接释放报文段后即发出确认,确认号是ack=u+1,而这个报文段自己的序号是v,等于它前面已经传送过的数据的最后一个字节的序号加1。此时,从客户机到服务器这个方向的连接就释放了,TCP连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。

第三步:如果服务器没有要向客户机发送的数据,就通知TCP释放连接,此时其发出FIN=1的连接释放报文段,序号为w

第四步:客户机收到连接释放报文段后,必须发出确认。在确认报文段中,ACK字段被置为1,确认号ack=w+1,序号seq=u+1。此时TCP连接还未释放,必须经过时间等待计时器设置的时间2MSL后,A才进入连接关闭状态

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5NobU26j-1658310967709)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220710162706952.png)]

拥塞控制的四种算法

所谓拥塞控制,是指防止过多的数据注入网络,保证网络中的路由器或链路不要过载。

拥塞控制和流量控制的区别:

拥塞控制是让网络能够承载现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。流量控制往往是指点对点的通信量的控制,即接收端控制发送端,它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞控制的四种算法:

  1. 慢开始算法(接收窗口rwnd,拥塞窗口cwnd)

    TCP刚连接好并开始发送TCP报文段时,先令拥塞窗口cwnd=1,即一个最大报文段长度MSS。每收到一个对新报文段的确认之后,将cwnd加1,即增大一个MSS。用这样的方式逐步增大发送方的拥塞窗口cwnd,可使分组注入网络的速率更加合理。使用慢开始算法之后,每经过一个传输轮次(即往返时延),拥塞窗口就会加倍,即拥塞窗口大小指数式增长。这样,慢开始算法一直把拥塞窗口的值增大一个规定的慢开始门限ssthresh(阈值),然后改用拥塞避免算法。

  2. 拥塞避免算法

    拥塞避免算法的做法如下:发送端的拥塞窗口每经过一个往返时延就增加一个MSS的大小,而不是加倍,使拥塞窗口大小按线性规律缓慢增长,而当出现一次超时(网络拥塞)时,令慢开始门限ssthresh等于当前拥塞窗口的一半

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IILzoHX5-1658310967709)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220710165033606.png)]

  3. 快重传

    快重传技术使用了冗余ACK来检测丢包的发生。同样,冗余ACK也用于网络拥塞的检测。快重传并非取消重传计时器,而是在某些情况下可更早地重传丢失的报文段。当发送方连续收到三个重复的ACK时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时

  4. 快恢复

    发送端收到连续三个冗余ACK时,执行乘法减小算法,把慢开始门限ssthresh设置为出现拥塞时发送方拥塞窗口大小的一半。与慢开始的不同之处是,它把拥塞窗口大小的值设置为慢开始门限ssthresh改变后的数值(csnd=ssthresh),然后开始执行拥塞避免算法(加法增大)使拥塞窗口缓慢地线性增大。由于跳过了拥塞窗口从1开始的慢开始过程,所以被称为快恢复

为何发送最后一次握手报文后要等待2MSL的时间

保证A发送的最后一个确认报文段能够到达B。如果A不等待2MSL,若A返回的最后确认报文段丢失,则B不能进入正常关闭状态,而A此时已经关闭,也不可能再重传。

DNS域名解析协议

域名解析是指把域名映射成为IP地址或者把IP地址映射成域名的过程。前者称为正向解析,后者称为反向解析

FTP文件传输协议

是因特网上使用的最广泛的文件传输协议,提供交互式的访问,允许客户指明文件的类型和格式,并允许文件具有存储权限,它屏蔽了各计算机系统的细节,因而适合在于异构网络中的任意计算机之间传送文件。

SMTP简单邮件传输协议

是一种提供可靠且有效的电子邮件传输的协议,它控制两个相互通信的SMTP进程交换信息

POP3

邮件读取协议

HTTP超文本传输协议

定义了浏览器怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器,HTTP是面向事务的应用层协议,规定了在浏览器和服务器之间的请求和响应的格式和规则,是万维网上能够可靠地交换文件的重要基础。

操作系统

操作系统定义

管理系统资源、控制程序执行、改善人机界面、提供各种服务、合理组织计算机工作流程和为用户有效使用计算机提供良好运行环境的系统软件

操作系统特性

并发、共享、虚拟、异步

操作系统的目标和功能
  1. 操作系统是计算机资源的管理者

    处理机管理、存储器管理、文件管理、设备管理

  2. 操作系统为用户提供使用计算机硬件系统的接口

    命令接口、程序接口、图形接口

  3. 扩充机器

    通过软件扩充计算机

内核程序和应用程序(内核态和用户态)

在计算机系统中,CPU通常执行两种不同性质的程序:一种是操作系统内核程序;另一种是用户自编程序或系统外层的应用程序。内核程序可以执行一些特权指令,而用户程序则不能。

操作系统在具体实现上划分了用户态(目态)和核心态(管态)

内核

内核是计算机上配置的底层软件,是计算机功能的延伸,包括以下4个方面的内容:

时钟管理、中断机制、原语、系统控制的数据结构及处理方法

原语

是由若干条指令组成的,用于完成一定功能的一个过程,具有具有不可分割性。即原语的执行必须是连续的,在执行过程中不允许被中断。

中断和异常

中断——为了支持CPU和设备之间的并行操作

中断也称外中断,指来自CPU指令以外的事件的发生,如设备发出的I/O结束中断、时钟中断等。这一中断通常是与当前执行的指令无关的事件。

异常——表示CPU执行指令本身出现的问题

异常也称内中断、例外或陷入,指源自CPU执行内部的事件,如程序的非法操作码、地址越界、算术溢出、缺页异常等。对异常的处理一般要依赖于当前程序的运行现场,不能被屏蔽

中断和异常的联系与区别

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p2lnV9CO-1658310967710)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220710202530200.png)]

中断执行的流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GjV6Xmji-1658310967710)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220710203129687.png)]

系统调用

计算机系统的各种硬件资源是有限的,为了更好地管理这些资源,进程是不允许直接操作的,用户对这些资源的访问都必须要有操作系统控制。也就是说操作系统是使用这些资源的唯一入口,而这个入口就是操作系统提供的系统调用,一般来说,系统调用都是通过中断实现的

大内核和微内核

大内核是将操作系统功能作为一个紧密结合的整体放到内核。由于各模块之间共享信息,因此有很高的性能。

微内核是由于操作系统不断复杂,因此将一部分操作系统功能移出内核,从而降低内核的复杂性。移出的部分根据分层的原则划分成若干服务,相互独立。微内核结构下,操作系统被分成小的、定义好的模块,只有微内核这一个模块运行在内核态,其余模块运行在用户态。因为需要频繁在用户态和核心态之间进行切换,所以会有一定的性能损失。

进程与线程
  • 进程的概念与定义

多道程序环境下,允许多个进程并发执行,此时它们将失去封闭性,并具有间断性及不可再现性的特征。为此引入进程的概念,以便更好地描述和控制程序的并发执行,实现操作系统的并发行和共享性

进程是程序的运行过程,是系统进行资源分配和调度的基本单位

  • 线程的概念和定义

早期在OS中能拥有资源和独立运行的基本单位是进程,然而运行计算机技术的发展,进程出现了很多弊端。一是由于进程是资源拥有者,创建、撤销与切换存在较大的时空开销,因此需要引入轻型进程;二是由于对称多处理机出现可以满足多个运行单位,而多个进程并行开销过大。

线程是操作系统能够进行运算调度的基本单位,包含在进程之中,是进程中的实际运作单位。

  • 进程和线程的区别

进程是系统进行资源分配和调度的基本单位,线程是CPU调度和分派的基本单位;

线程依赖于进程存在,一个进程至少有一个线程;

进程有自己的独立地址空间,线程共享所属进程的地址空间;

进程是拥有系统资源的一个独立单位,而线程自己基本上不拥有系统资源,只拥有一点在运行时必不可少的资源(寄存器等),和其他线程共享本进程的相关资源;

进程切换时,涉及到整个当前进程CPU环境的保存环境的设置以及新被调度运行的CPU环境的设置,而线程切换至需要保存和设置少量的寄存器的内容,并不涉及存储器管理方面的操作,而空间,进程切换的开销远大于线程切换;

线程之间的通信更方便,同一进程下的线程共享全局变量等数据,而进程之间的通信需要以进程间通信的方式进行;

多线程程序只要有一个线程崩溃,整个程序就崩溃了,但多进程程序中一个进程崩溃并不会对其他进程造成影响,因为进程有自己的独立地址空间,因此多进程更加健壮。

进程和程序的区别

程序是永存的;进程是暂时的,是程序在数据集上的一次执行,有创建有撤销,存在是暂时的;

程序是静态的观念,进程是动态的观念;

进程具有并发性,程序没有;

进程是竞争计算机资源的基本单位,程序不是;

进程和程序不是一一对应的,一个程序可能对应多个进程,一个进程可以执行一个或多个程序

进程之间的通信方式
  • 共享内存

两个进程同时共享一块内存,然后在这块内存上的数据可以共同修改和读取

  • 无名管道

半双工的通信方式;只能在具有亲缘关系的进程之间使用,具有亲缘关系的进程在创建时同时拥有一个无名管道的句柄,可以进行读写;无名管道不存在磁盘节点,只存在于内存中用完即销毁

  • 命名管道

半双工的通信方式;可以在不具有亲缘关系的进程之间通信;命名管道存在磁盘节点,有对应的FIFO文件,凡是可以访问该路径的问价的呢进程均可以进行通信

  • 消息队列

是消息的链表,存放在内核中并由消息队列等标识符标识。消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点

  • 套接字

套接字是网络编程的api,通过套接字可以不同的机器之间的进程进行通信,常用于客户端进程和服务器进程的通信

  • 信号量

操作系统通过信号来通知进程系统中发生了某种预先设定好的事件

进程的5种状态及转换过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0P8Cpe7i-1658310967710)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220711101607293.png)]

进程的调度算法
  • 先来先服务(FCFS)

按照请求的顺序进行调度。非抢占式,开销较小,无饥饿问题,响应时间不确定;对短进程不利,对IO密集型进程不利

  • 最短作业优先(SJF)

按估计运行时间最短的顺序进行调度。非抢占式,吞吐量高,但是可能导致饥饿问题

  • 优先级调度算法

为每个进程分配一个优先级,按优先级进行调度。为了防止低优先级的进程永远等不到调度,可以随时间的推移增加等待进程的优先级

  • 时间片轮转

将所有就绪进程按FCFS的原则排成一个队列,用完时间片的进程排到最后。抢占式(时间片用完时),开销小,无饥饿问题,为短进程提供好的响应时间

  • 最高相应比优先

相应比 = 1 + 等待时间/处理时间。同时考虑了等待时间的长短和估计需要的执行时间长短,很好的平衡了长短进程。非抢占,吞吐量高,开销可能较大,提供好的响应时间,无饥饿问题。

  • 多级反馈队列调度算法

设置多个就绪队列,优先级递减,时间片递增。只有等到优先级更高的队列为空时才会调度当前队列中的进程。如果进程用完了当前队列的时间片还没有执行完,则会被移到下一队列。抢占式,开销可能较大,对IO型进程有利,可能会出现饥饿问题。

同步和互斥
  • 同步

多个进程因为合作而使得进程的执行有一定的先后顺序。比如某个进程需要另一个进程提供的消息,获得消息之前进入阻塞态

  • 互斥

多个进程在同一时刻只有一个能进入临界区

  • 同步机制的4个准则

空闲让进、忙则等待、有限等待(有限时间内退出临界区)、让权等待(如果无法进入临界区,应释放处理器)

为什么要进行进程同步

进程之间有时候会共享一些资源,比如内存、数据库等。当多个进程同时读写同一份共享资源时,可能会发生冲突。因此需要进程的同步,多个进程按顺序访问资源

互斥量

互斥量是内核对象,只有拥有互斥对象的线程才能访问互斥资源。互斥对象只有一个,所以可以保证互斥资源不会被多个线程同时访问

信号量

信号量是内核对象,它允许同一时刻多个线程访问同一资源,但是需要控制同一时刻访问此资源的最大线程数量。信号量对象保存了最大资源计数和当前可用资源计数,每增加一个线程对共享资源的访问,当前可用资源计数就减1,只要当前可用资源计数大于0,就可以发出信号量信号,如果为0,则将线程放入一个队列中等待。

事件

允许一个线程在处理完一个任务之后,主动唤醒另外一个线程执行任务。事件分为手动重置事件和自动重置时间

临界区

指的是访问资源的那段代码,任意时刻只允许一个线程对临界区进行访问。

死锁

死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。这些永远在互相等待的进程称为死锁进程

死锁产生的原因

系统资源不足、进程推进顺序不当

产生死锁的必要条件
  • 互斥条件

进程对所分配的系统资源进行排他性使用,即在某一段时间内资源只由一个进程占用。

  • 请求和保持条件

指进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程阻塞,但又对自己已经获得的其他资源保持不放

  • 不剥夺条件

指进程已经获得的资源,在使用完之前不能被剥夺,只能在使用完时由自己释放

  • 环路等待条件

发生死锁时必然存在一个进程资源的环形链

处理死锁的基本方法
  • 预防死锁

通过设置某些循环条件,去破坏产生死锁的四个必要条件中的一个或多个,来预防产生死锁。

  • 避免死锁

在资源的动态分配过程中,用某种方法去防止系统进入不安全状态

  • 检测死锁

允许系统在运行中发生死锁,但可以通过系统所设置的检测机构,及时地检测出死锁的发生,并精确地确定与死锁有关的进程和资源,然后采取适当措施,从系统中将已发生的死锁清除掉

  • 解除死锁

与检测死锁相配套的措施,当检测到系统中已经发生死锁时,须将进程从死锁状态中解脱出来。

什么是饥饿,与死锁的差别

等待时间给进程推进和响应带来明显影响时称为进程饥饿,饥饿并不代表死锁,但至少有一个程序的执行被无限期地推迟

差别:

  1. 进入饥饿的进程可以只有一个,但是死锁必须大于等于两个
  2. 处于饥饿状态的进程可以是一个就绪进程,但是死锁状态的进程必定是阻塞进程。
银行家算法

主要思想是避免系统进入不安全状态,在每次进行资源分配时,它首先检查系统是否有足够的资源满足要求,如果有,则先进行试分配,并对分配后的新状态进行安全检查。如果安全则正式分配上述资源,否则拒绝分配。

死锁判断

如果资源分配图是可以完全简化的(能消除所有的边),则没有死锁

存储管理的主要任务

为多道程序的运行提供良好的环境,方便用户使用存储器,提高存储器的利用率以及从逻辑上扩充存储器

存储器管理应具有的功能

内存的分配和回收、地址变换、扩充内存、存储保护

将用户程序变为可在内存中执行的程序的步骤

编译:由编译程序将用户源代码编译成若干目标模块

链接:由链接程序将编译后形成的一组目标模块及所需的库函数链接在一起,形成一个完整的装入模块

装入:由装入程序将装入模块装入内存中运行

程序的链接方式

静态链接、装入时动态链接、运行时动态链接

程序的装入方式

绝对装入、可重定位装入、动态运行装入

覆盖技术和交换技术

把一个大的程序划分为一系列覆盖,每个覆盖是一个相对独立的程序单位,程序执行时并不要求同时装入,装入内存的覆盖组成一组,称为覆盖段,覆盖段的大小由覆盖段中最大的覆盖来确定,这个覆盖段分配到同一个存储区域,称为覆盖区。(在任何时候只在内存中保留所需的指令和数据;当需要其它指令时,它们会装入到刚刚不再需要的指令所占用的内存空间)

把暂时不用的某个程序以及数据部分从内存中移到外存中去,以便腾出必要的内存空间;或者把指定的程序或数据从外存读取到相应的内存中,并将控制权交给他。处理器的中级调度就是采用交换技术。

交换主要是在进程与作业之间进行,而覆盖则主要在同一作业或进程内进行

处理器三级调度

高级调度:即作业调度,按照一定策略将选择磁盘上的程序装入内存,并建立进程

中级调度:即交换调度,按照一定策略在内外存之间进行数据交换

低级调度:即CPU调度,按照一定策略选择就绪进程,占用CPU执行

内存连续分配管理方式
  • 单一连续分配

内存在此方式下分为系统区和用户区,系统区仅提供给操作系统使用,通常在低地址部分,用户区是为用户提供的、除系统区之外的内存空间。

  • 固定分区分配

最简单的一种多道程序存储管理方式,它将用户内存空间划分为若干个固定大小的区域,每个分区只装入一道作业。当有空闲分区时,便可再从外存的后备作业队列中选择适当大小的作业装入该分区。有两种不同的划分方法:分区大小相等,分区大小不等

  • 动态分区分配

又称可变分区分配,是一种动态划分内存的分区方法。这种分区方法不预先将内存划分,而是在进程装入内存时,根据进程的大小动态地建立分区,并使分区的大小正好适合进程的需要。动态分区分配有以下几种算法:

  1. 首次适应算法:空闲分区以地址递增的次序链接。分配内存时顺序查找,找到大小能满足要求的第一个空闲分区
  2. 最佳适应算法:空闲分区按容量递增形成分区链,找到第一个能满足要求的空闲分区
  3. 最坏适应算法:又称最大适应,空闲分区以容量递减的次序链接。找到第一个能满足要求的空闲分区,也就是最大的那个
  4. 邻近适应算法:又称循环首次适应算法,每次分配内存时从上次查找结束的位置开始继续查找
冯·诺依曼体系结构

冯·诺依曼提出了计算机制造的三个基本原则,即采用二进制逻辑程序存储执行以及计算机由五个部分组成(运算器、控制器、存储器、输入设备、输出设备),这套理论被称为冯·诺依曼体系结构。

内存非连续存储方式
  • 页式存储管理

将程序的逻辑地址空间划分为固定大小的页,而物理内存也划分为同样大小的页框。程序加载时,可将任意一页放入内存中任意一个页框,这些页框不必连续,从而实现了离散分配。该方法需要CPU的硬件支持,来实现逻辑地址和物理地址之间的映射。在页式存储管理方式中地址结构由两部分构成,前一部分是页号,后一部分为页内地址。

  • 段式存储管理

段式存储管理中,将程序的地址空间划分为若干个段,这样每个进程有一个二维的地址空间。在段式存储管理中,为每个段分配一个连续的分区,而进程中的各个段可以不连续地存放在内存的不同分区中。程序加载时,操作系统为所有段分配其所需内存,这些段不必连续,物理内存的管理采用动态分区的管理方法。

  • 段页式存储管理

用户对作业采用分段组织,每段独立编址,在主存空间分配时,再把每段分成若干个页面,这样每段(作业)不必占据连续的主存空间,可把它按页存放在不连续的主存块中。段页式存储管理兼顾了段式在逻辑上的清晰和页式在管理上方便的优点。

  • 请求分页存储管理方式

请求分页系统是建立在基本分页基础上的,为了能支持虚拟存储器功能,增加了请求调页功能和页面置换功能。

在请求分页式系统中,每当要访问的页面不在内存时,就产生一缺页中断,请求OS将所缺之页调入内存

页面置换算法
  1. 最佳置换算法

    从主存中移除永远不再使用的页面,如果不存在这样的页面,则选择最长时间不需要访问的页面。

  2. 先进先出置换算法

    最简单的页面置换算法,基本思想是:当需要淘汰一个页面时,总是选择驻留主存时间最长的页面进行淘汰

  3. 最近最久未使用置换算法

    利用局部性原理,根据一个作业在执行过程中过去的页面访问历史来推测未来的行为。当需要淘汰一个页面时,总是选择在最近一段时间内最就不用的页面予以淘汰

  4. 时钟置换算法

    最简单的时钟置换算法是给每一页关联一个附加位,称作使用位,当某一页首次装入主存或者再次被访问到时,它的使用位置为1。当需要替换一页时,操作系统扫描缓冲区,以查找使用位被置为0的一页来替换,每当遇到一个使用位为1的页,操作系统将该位置为0,这是为了应对所有的页面使用位都为1的情况

页表和快表

页表指出逻辑地址中的页号与所占主存块号的对应关系。作用:页式存储管理再用动态重定位方式装入作业时,要利用页表做地址转换工作。快表就是存放在高速缓冲存储器的部分页表。它起页表相同的作用。由于采用页表做地址转换,读写内存数据时CPU要访问两次主存。有了快表,有时只需要访问一次高速缓冲存储器,一次主存,这样可以加速查找并提高指令执行速度

文件的基本操作

创建文件、写文件、读文件、文件重定位(将当前文件位置设定为指定值)、删除文件、截断文件(文件属性不变,删除文件内容)

磁盘调度算法

先来先服务算法、最短寻道时间优先算法、扫描算法电梯调度、循环扫描算法

I/O控制方式
  • 程序I/O方式

    早期的计算机中没有中断系统,所以CPU和I/O设备进行通信,传输数据时CPU速度远快于I/O设备,于是CPU需要不断测试I/O设备,看其是否完成了传输

  • 中断驱动方式

    当进程要启动某个I/O设备工作时,便由CPU向相应的设备控制器发送一条I/O命令,然后立即返回继续执行原来的任务。仅当传输完一个数据时,才需要CPU花费极短的时间去做些中断处理(以字节为单位)

  • DMA方式(直接存储器访问)

    通过在I/O设备和内存之间开启一个可以直接开始传输数据的通路,采用DMA控制器来控制一个数据块的传输,CPU只需要在一个数据块传输开始阶段设置好传输所需的控制信息,并在传输结束阶段做进一步处理(以数据块为单位)

  • I/O通道控制方式

    通道本质上就是一个简单的处理器,专门负责输入输出控制,具有执行I/O指令的能力,并通过执行通道I/O程序来控制I/O操作(多个数据块同时读取和传送)

Spooling技术

Spooling技术可以将一台物理I/O设备虚拟为多台逻辑I/O设备,同样允许多个用户共享一台物理设备,是对脱机输入、输出技术的模拟,主要有以下三部分:

  1. 输入井和输出井。开辟于磁盘上,输入井是模拟脱机输入时的磁盘设备,用于暂存I/O设备输入的数据;输出井是模拟脱机输出时的磁盘,用于暂存用户程序的输出数据
  2. 输入缓冲区和输出缓冲区。为了缓和CPU和磁盘之间速度不匹配的矛盾,在内存中要开辟两个缓冲区;缓冲区和对应的井存在数据传输关系
  3. 输入进程和输出进程。用两个进程来模拟脱机I/O时的外围控制机。要求数据从输入机通过输入缓冲区再送到输入井,CPU需要时直接从输入井读入内存;用户想要输出时,数据先从内存送到输出井,待输出设备空闲时,再将输出井中的数据经输出缓冲区送到输出设备上。

Spooling技术的特点:

  1. 提高了I/O速度
  2. 将独占设备改造为共享设备
  3. 实现了虚拟设备功能

计算机组成原理

冯诺依曼机的特点
  1. 计算机硬件系统由运算器、存储器、控制器、输入设备和输出设备组成
  2. 指令和数据以同等地位存储在存储器中,并可按地址寻访
  3. 指令和数据均用二进制代码表示
  4. 指令由操作码和地址码组成,操作码用来表示操作的性质,地址码用来表示操作数在存储器中的位置
  5. 指令在存储器中按顺序存放,指令通常是顺序执行的,在特定条件下可根据运算结果或根据设定的条件改变执行顺序
  6. 早期的冯诺依曼机以运算器为中心,输入/输出设备通过运算器与存储器传送数据。现代计算机以存储器为中心。
存储程序

冯诺依曼在研究EDVAC机时提出了“存储程序”的概念,“存储程序”是指将指令以代码的形式事先输入到计算机的主存储器,然后按其在存储器中的首地址执行程序的第一条指令,以后就按照该程序的规定顺序执行其他指令,直至程序结束

计算机的工作流程
  1. 把程序和数据装入主存储器
  2. 将源程序转换成可执行文件
  3. 从可执行文件的首地址开始逐条执行指令
编译型和解释型

编译型的语言写的程序在执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如.exe文件,如果源程序不变,以后要运行的话就不需要重新翻译

解释型语言的程序不需要编译,在运行程序的时候才翻译,翻译一句执行一句,不生成目标程序,这样解释型语言每执行一次就要翻译一次,效率比较低

C语言编译过程

预处理(.c到.i),编译(.i到.s),汇编(.s到.o),链接(.o到可执行文件)

指令执行过程

取指令、分析指令、执行指令

计算机的主要性能指标
  • 机器字长

    机器字长是指计算机进行一次整数运算所能处理的二进制数据的位数,通常与CPU的寄存器位数、加法器有关。

  • 数据通路带宽

    数据通路带宽是指数据总线一次所能并行传送信息的位数。

  • 主存容量

    主存容量是指主存储器所能存储信息的最大容量,通常以字节来衡量

  • 运算速度

    • 吞吐量和响应时间

      吞吐量是指系统在单位时间内处理请求的数量。

      响应时间是指从用户向计算机发送一个请求,到该系统对该请求做出响应并获得所需结果的等待时间。

    • 主频和CPU时钟周期

      主频是指机器内部时钟的频率

      CPU时钟周期即主频的倒数,通常为节拍脉冲或T周期

    • CPI(Clock cycle Per Instruction)

      执行一条指令所需的时钟周期数

IEEE754标准浮点数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2aYPftHT-1658310967712)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220713104954901.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FLC1POld-1658310967712)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220713105048825.png)]

以短浮点数为例,最高位为数符位;其后是8位阶码,以2为底,用移码表示,阶码的偏置值为
2 8 − 1 − 1 = 127 2^{8-1}-1=127 2811=127
其后23位是原码表示的尾数数值位。对于规格化的二进制浮点数,数值的最高位总是1,为了能使位数多表示一位有效位,将这个1隐含,因此尾数数值实际上是24位。隐含的1是整数位,在浮点格式中表示的23位都是小数位。例如
( 12 ) 10 = ( 1100 ) 2 规 格 化 后 为 1.1 × 2 3 (12)_{10}=(1100)_{2} 规格化后为1.1×2^{3} (12)10=(1100)21.1×23
其中整数部分的1将不存储在23位尾数内

临时浮点数又称为扩展精度浮点数,无隐含位

C语言中的浮点数类型及类型转换

C语言中的float和double类型分别对应于IEEE754单精度和双精度浮点数。long double类型对应于扩展双精度浮点数。

强制类型转换:char->int->long->double和float->double最为常见,从前到后范围和精度从小到大,转换过程没有损失

  1. 从int转换为float时,虽然不会发生溢出,但是int可以保留32位,float可以保留24位,可能会出现舍入误差
  2. 从int或float转换为double时,因为double的有效位数更多,因此能保留精确值
  3. 从double转换为float时,因为float表示范围更小,因此可能发生溢出,而且由于有效位数变少,可能出现舍入误差
  4. 从float或double转换为int时,因为int没有小数部分,所以只会保留整数部分,影响精度。另外,由于int表示范围更小,因此可能发生溢出
为什么要采用二进制来表示数据

采用二进制,只有0和1两个状态,能够表示0、1两种状态的电子器件很多。使用二进制,电子器件具有实现的可行性

二进制数的运算法则少,运算简单,使计算机运算器的硬件结构大大简化

二进制0和1正好和逻辑代数的假与真相对应,用二进制表示二值逻辑很自然

原码反码补码

对于一个正数来说:二进制原码、反码、补码完全相同。

对于一个负数来说:原码符号位为1表示负;二进制反码是符号位不变,其他位取反;二进制补码是反码加1

多级存储系统

为了解决存储系统大容量、高速度和低成本3个相互制约的矛盾,在计算机中,通常采用多级存储结构,由高到低,价位越来越低,速度越来越慢,容量越来越大,CPU访问的频度也会越来越低

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-72BzDObU-1658310967713)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220713165846894.png)]

存储系统层次结构主要体现在“Cache-主存”层次和“主存-辅存”层次。前者主要解决CPU和主存速度不匹配的问题,后者主要解决存储系统的容量问题。

存储器层次结构的主要思想是上一层的存储器作为低一层的高速缓存。

半导体随机存储器
  • SRAM的工作原理

    静态随机存储器的存储元是用双稳态触发器来记忆信息的,是非破坏性读出。存取速度很快,但集成度低,功耗较大,一般用来组成高速缓冲存储器。

  • DRAM的工作原理

    动态随机存储器是利用存储元电路中栅极电容上的电荷来存储信息的,电荷一般只能维持1~2ms,因此即使电源不断电,信息也会自动消失。为此必须周期性刷新,刷新方式有三种:集中刷新、分散刷新和异步刷新

  • 只读存储器(ROM)的特点

    ROM和RAM都是支持随机存取的存储器,只不过ROM中一旦有了信息,就不能轻易改变,即使掉电也不会丢失。它具有结构简单位密度高、非易失性可靠性高的特点

哪些技术可以提高CPU的访存速率
  • 双端口存储器

    双端口存储器是指同一个存储器有左、右两个独立的端口,分别具有两组相互独立的地址线、数据线和读写控制线,允许两个独立的控制器同时异步地访问存储单元

  • 多模块存储器

    1. 单体多字存储器

      特点是存储器中只有一个存储体,每个存储单元存储m个字,总线宽度也为m个字,一次并行读出m个字,这m个字地址必须连续并且处于同一存储单元。

    2. 多体并行存储器

      多体并行存储器由多体模块组成。每个模块都有相同的容量和存取速度,各模块都有独立的读写控制电路、地址寄存器和数据寄存器。它们既能并行工作又能交叉工作。多体并行存储器分为高位交叉编址(顺序方式)和低位交叉编址(交叉方式)

Cache

高速缓冲存储器,位于CPU和主存储器之间,规模较小,但速度很高的存储器。功能是提高CPU数据输入输出的速率。利用Cache改善系统性能的依据是程序的局部性原理。

当Cache一次访问未命中时,相应的数据同时读入CPU和Cache。但是当Cache已存满数据时,新数据必须替换Cache中的旧数据。最常用的替换算法有随机算法、先进先出算法、近期最少使用算法。

写操作:需要保证缓存在Cache中的数据和内存中的数据一致,Cache的写操作比较复杂,常用的有写直达法、写回法和标记法

与主存的映射方式:

直接映射:主存数据块只能装入Cache中的唯一位置

全相联映射:可以把主存数据块装入Cache中的任何位置

组相联映射:将Cache分为若干组,一个数据块可以装入一组内的任何一个位置

虚拟存储器

虚拟存储器是指具有请求调入和置换功能,能从逻辑上对内存容量加以扩充的一种存储器系统

页式虚拟存储器

是把虚拟存储空间和实际空间等分成固定大小的页,各虚拟页可装入主存中的不同实际页面位置。页式存储中,处理机逻辑地址由虚页号和页内地址两部分组成,实际地址也分为页号和页内地址两部分,由地址映射机构通过页表将虚页号映射为主存的实际页号。页式管理由操作系统进行,对应用程序员是透明的

段式虚拟存储器

将主存按段分配的存储管理方式,是一种模块化的存储管理方式,每个用户程序模块可分到一个段,该程序模块只能访问分配给该模块的段所对应的主存空间,段长可以任意设定,并可以动态调整。系统通过一个段表指明各段在主存中的位置,段表本身也是一个段。

段页式虚拟存储器

上述两种方式的结合,将存储空间按逻辑模块分成段,每段又分为若干个页,访存通过一个段表和若干个页表进行。段的长度必须是页长的整数倍,段的起点必须是某一页的起点

TLB(快表)

进行地址变换时,首先需要去主存中查找页表,然后进行地址变换,再然后才能根据主存物理地址访问主存的存取指令或数据。这样就会增加访存的次数,为了减少访存次数,往往将页表中最活跃的几个页表项复制到高速缓存中。这种在高速缓存中的页表项称为快表。

快表和页表的查询是同时的,如果在快表中查询到虚页号,很快就能找到对应的实页号,同时停止页表的查询;如果查询不到,则经过一个访主存的时间延迟后,将从页表中查到的实页送入实地址寄存器,同时将此虚页号和对应的实页号送入快表。

指令流水线基本原理

流水线技术是一种显著提高指令执行速度与效率的技术。方法是:指令取指完成之后,不等该指令执行完毕即可取下一条指令。

如果把一条指令的解释执行过程细分,用若干子部件分别处理对应的若干子过程,这样只需在上一指令的子过程A处理完毕进入下一子过程B时,就开始对下一条指令的子过程A进行处理。

流水线方式的特点
  1. 把一个任务分解为几个有联系的子任务,每个子任务都有一个专门的功能部件来执行,并依靠多个功能部件并行工作来缩短程序的执行时间
  2. 流水线每个功能部件之后要有一个缓冲控制器,或称锁存器,其作用是保存本流水段的执行结果,供给下一流水段使用
  3. 流水段中各功能的时间应尽可能相等,否则将引起堵塞、断流
  4. 只有源源不断的提供同一种任务时才能发挥流水线的效率
  5. 流水线需要有装入时间和排空时间。装入时间是指第一个任务进入流水线到输出流水线的时间。排空时间是指最后一个任务进入流水线到输出流水线的时间
影响流水线性能的因素

结构相关:多条指令同时争用同一资源

数据相关:后继指令需要用到前面指令的执行结果

控制相关:流水线遇到分支指令和其他改变PC值的指令

中央处理器(CPU)

中央处理器由运算器和控制器组成。其中控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令;运算器的功能是对数据进行加工。

流水线越多,并行度就越高。是否流水段越多,指令执行越快

流水段缓冲之间的额外开销增大。流水段间控制逻辑变多、变复杂。

读后读、写后读、读后写、写后写

读后读相关产生于两条连续的指令读取相容的寄存器时,这种相关不会影响流水线

写后读相关出现在某条指令要读取上一条指令所写入的寄存器时,它称为数据相关或真相关,影响流水线。按序流动的流水线只可能出现写后读相关

某条指令的上条指令要读/写该指令的输出寄存器时,会产生读后写和写后写相关

对流水线影响最严重的指令相关是数据相关。

总线结构的优点

简化了系统结构,便于系统设计制造

大大减少了连线数目,便于布线,减小体积,提高系统的可靠性

便于接口设计,所有与总线连接的设备均采用类似的接口

便于系统的扩充、更新与灵活配置,易于实现系统的模块化

便于设备的软件设计,所有接口的软件对不同的接口地址进行操作

便于故障诊断和维修,同时也能降低成本

系统总线的分类

数据总线:各个功能部件之间传递数据信息,双向传递

地址总线:用来指明数据总线上,源数据或目的数据所在的主存单元的地址。单向:由CPU发出

控制总线:用来发送各种控制信号。对于控制总线中的单根线,是单向的;而一组控制总线中,有输入也有输出,因此,控制总线也可以看成是双向的。

什么是总线宽度、总线带宽、总线复用、信号线数

总线宽度:数据总线的根数

总线带宽:即总线数据传输速率

总线复用:一条线上分时传送两种信号

信号线数:地址总线、数据总线和控制总线三种总线的线数之和

CPU响应中断应具备的条件
  1. CPU内部设置的中断屏蔽器必须是开放的
  2. 外设有中断请求时,中断请求触发器必须处于1状态,保持中断请求信号
  3. 外设(接口)中断允许触发器必须为1这样才能把外设中断请求送至CPU

具备上述条件时,CPU在现行指令结束的最后一个状态周期响应中断

中断响应优先级和中断处理优先级

中断响应优先级是由硬件排队线路或终端查询程序的查询顺序决定的,不可动态改变;而中断处理优先级可以由中断屏蔽字来改变,反映的是正在处理的中断是否比新发生的中断的处理优先级低。

向量中断、中断向量和向量地址

向量中断:一种识别中断源的技术或方式。识别中断源的目的是找到中断源对应的中断服务程序的入口地址的地址,即获得向量地址

向量地址:中断向量表或中断向量跳转表中每个表项所在的内存地址或表项的索引值,称为向量地址或中断类型号

中断向量:每个中断源都有对应的处理程序,这个处理程序称为中断服务程序,其入口地址称为中断向量。所有中断的中断服务程序入口地址构成一个表,称为中断向量表;有的机器把中断服务程序入口的跳转指令构成一张表,称为中断向量跳转表

程序中断和调用子程序

调用子程序是程序设计者事先安排的,而执行中断服务程序是由中断源提出申请,由系统工作环境随机解决的。

子程序完全为主程序服务,中断服务程序与主程序二者一般是无关的,不存在从属关系。

调用子程序完全属于软件处理过程,中断处理程序是软硬件结合的系统

子程序嵌套可实现若干级,嵌套的最多级数由计算机内存开辟的堆栈大小限制;而中断嵌套级数主要由中断优先级决定,一般优先级数不会很大。

数据结构

时间复杂度

一个语句的频度是指该语句在算法中被重复执行的次数。算法中所有语句频度之和记为T(n),它是该算法问题规模n的函数,时间复杂度主要分析T(n)的数量级。算法中基本运算(最深层循环内的语句)的频度与T(n)同数量级,因此通常采用算法中基本运算的频度来分析算法的时间复杂度

取基本运算频度函数中随n增长最快的项,将其系数置为1作为时间复杂度的度量。

O的含义是T(n)的数量级。

空间复杂度

算法的空间复杂度定义为该算法所耗费的存储空间

数据的逻辑结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zgckXZyS-1658310967715)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220714181200360.png)]

数据的存储结构

存储结构是指数据结构在计算机中的表示,也称物理结构,主要有以下四种

顺序结构。逻辑上相邻的元素在物理位置上也相邻,元素之间的关系由存储单元的邻接关系体现。优点是可以随机存取,元素占用空间是最少的;缺点是只能使用相邻的一整块存储单元,因此可能出现较多外部碎片

链式结构。不要求逻辑上相邻的元素在物理位置上也相邻,借助指示元素存储地址的指针来表示元素间的逻辑关系。优点是不会出现碎片现象;缺点是每个元素存储因指针而占用额外的存储空间,而且只能实现顺序存取。

索引存取。存储元素信息的同时,还建立附加的索引表。索引表中的索引项一般形式是【关键字,地址】。优点是检索速度快;缺点是占用额外存储空间。另外,增加和删除数据时也要修改索引表,会花费较多时间

散列存储。根据元素的关键字直接计算出该元素的存储地址,又称哈希存储。优点是检索、增加和删除节点的操作都很快;缺点是若散列函数不好,可能会出现元素存储单元的冲突,而解决冲突会增加时间和空间开销。

循环和递归谁的效率高

循环和递归是可以互换的,不能确定性地说循环的效率比递归高。

递归的优点是:代码简洁清晰,容易检查正确性;缺点是调用的次数较多时,要增加额外的堆栈处理,有可能缠上堆栈溢出的情况,对执行效率有一定的影响

循环的优点是:结构简单,速度快;缺点是:它并不能解决全部问题,有的问题适合于用递归来解决

贪心算法和动态规划以及分治法的区别

贪心算法就是做出在当前看来最好的决定,它不从整体上加以考虑,也就是局部最优解。贪心算法从上往下,从顶部一步一步最优,得到最后的结果,它不能保证全局最优,与贪心策略的选择有关

动态规划是把问题分解为子问题,这些子问题可能有重复,可以记录下前面子问题的结果防止重复计算。动态规划是从下到上,一步一步找到全局最优解。

分治法将原问题划分成n个规模较小而结构与原问题相似的子问题;递归地解决这些子问题,然后再合并其结果,就得到原问题的解。分治法的基本步骤:分解、解决、合并

顺序表和链表的比较
  1. 存取(读写)方式

    顺序表可以顺序存取也可以随机存取,链表只能从表头顺序存取元素。

  2. 逻辑结构与物理结构

    顺序存储时,逻辑上相邻的元素的物理存储位置也相邻。链式存储中,逻辑上相邻的元素,物理存储位置一般不相邻,邻接的关系是靠指针维系的

  3. 查找、插入和删除操作

    对于按值查找,顺序表无序时二者的时间复杂度都是O(n);顺序表有序时,可采用折半查找,时间复杂度为O(log2n)

    对于按序查找,顺序表支持随机访问,时间复杂度仅为O(1),而链表的平均时间复杂度为O(n)。顺序表的插入和删除操作,平均需要移动半个表长的元素。链表的插入和删除操作,只需要修改相关节点的指针域就可以了。

  4. 空间分配

    顺序存储在静态存储分配情况下,一旦存储空间装满就不能扩充,若再加入新元素则会出现内存溢出,因此需要事先分配足够大的内存空间。动态存储分配虽然存储空间可以扩充,但是需要移动大量的元素,操作效率很低,而且如果内存不能提供更大块的连续存储空间,则会导致分配失败。链式存储的节点空间指在需要时申请分配,只要有内从空间就可以分配,操作灵活、高效。

头指针和头节点

头指针是指向第一个节点存储位置的指针,具有标识作用,头指针是链表的必要元素,无论链表是否为空,头指针都存在。

头节点是放在第一个元素节点之前,便于在第一个元素节点之前进行插入和删除的操作,头节点不是链表的必要元素,可有可无,头结点的数据域可以随意存储需要的信息或者不存储信息

注:若链表有头节点,头指针是指向头节点的指针

栈和队列

队列是允许在一端进行插入,另一端进行删除的线性表。对于进出队列的元素按照”先进先出“的规则处理,表头进行删除表尾进行插入。队列要进行频繁的插入和删除,一般为了高效,选择使用定长数组来存储队列元素,在对队列进行操作之前要判断队列是否为空或是否已满。通过队头和队尾指针来进行操作。

栈是只能在表尾进行插入和删除的线性表,对于插入到栈的元素按“后进先出”的规则处理,插入和删除操作都在栈顶进行,与队列类似一般用定长数组存储栈元素。由于进栈和出栈都是在栈顶进行,因此要用一个size变量来记录当前栈的大小。

共享栈

因为栈底不变,可以让两个顺序栈共享一个一维数组空间,将两个栈的栈底分别设置在共享空间的两端,两个栈顶向共享空间的中间延伸。

如何区分循环队列是空还是满

普通情况下,循环队列队空和队满判定条件是一样的,都是首尾指针相等。

注意:队头指针指向第一个数,队尾指针指向最后一个数的下一个位置

方法一:牺牲一个单元来区分队空和队满(这个单元不放数据)

方法二:类型中增设表示元素个数的数据成员。

栈在括号匹配中的算法思想

括号匹配算法思想

  1. 出现左括号,进栈
  2. 出现右括号
    • 若栈为空表明右括号多余
    • 否则和栈顶元素匹配
      • 若栈顶为左括号,则出栈
      • 若不为左括号,则匹配失败
  3. 表达式检验结束时
    • 若栈空,则匹配成功
    • 若不空,则左括号有余
栈在后缀表达式求值中的算法思想

顺序扫描表达式的每一项,然后根据它的类型做出如下相应操作:若该项是操作数则压入栈中,若该项是操作符,则从栈中退出两个操作数x和y,形成运算式子,并将计算结果重新压入栈中

栈在递归中的应用

递归是一种重要的程序设计方法,简单地说,若存在一个函数、过程或数据结构的定义中又应用了它自身,则这个函数、过程或数据结构称为是递归定义的,简称递归。

将递归算法转换为非递归算法,通常需要借助栈来实现这种转换。

队列在层序遍历中的作用

在信息处理中有一大类问题需要逐层或逐行处理。这类问题的解决方法往往是在处理当前层或当前行时就对下一层或下一行进行预处理,安排好处理顺序。使用队列就是为了保存下一步的处理顺序。

队列在计算机系统中的应用

解决主机与外部设备之间速度不匹配;解决多用户引起的资源竞争问题

矩阵的压缩存储

数据结构中提供针对某些特殊矩阵的压缩存储结构。特殊矩阵主要分为以下两类:

  • 含有大量相同数据元素的矩阵,比如对称矩阵
  • 含有大量0元素的矩阵,比如稀疏矩阵,上(下)三角矩阵

矩阵压缩存储思想是:相同的数据元素只存储一个

串的模式匹配

子串的定位操作通常称为串的模式匹配,他求的是子串在主串中的位置。

暴力模式匹配算法:从主串的第一个字符开始,与子串的第一个字符相比较,相等则继续比较;不相等则从主串的下一个位置起,继续和子串开始比较,直到最后看是否匹配成功。

改进的模式匹配算法------KMP算法:暴力匹配算法中,每次匹配失败都是模式后移一位再从头开始比较;KMP算法从分析模式本身的结构入手,如果已经匹配相等的前缀序列中有某个后缀正好是模式的前缀,那么就可以直接将模式向后滑动到与这些字符对齐的位置,主串指针也无需回溯从头开始,直接继续从该位置开始比较即可。

树是非线性结构,其元素之间有明显的层次关系。在树的结构中,每个节点都只有一个前件称为父节点,没有前件的节点称为树的根节点;每个节点是其父节点的子节点,没有子节点的节点称为叶子节点

一个节点所拥有的子结点个数称为该节点的度,树中最大的节点的度称为树的度,树的最大的层次称为树的深度

二叉树

二叉树是一种有序的树形结构,特点是每个节点至多有两棵子树,并且二叉树的子树有左右之分,不可随意颠倒。二叉树也以递归的形式定义

满二叉树:所有分支结点都有左、右孩子结点,并且叶子结点都集中在二叉树的最下层

完全二叉树:二叉树中最多只有最下面两层的结点的度可以小于2,并且最下面一层的叶子结点都**依次(无空缺)**排列在该层最左边的位置上

二叉树的存储:二叉树可以采用链式来存储,满二叉树和完全二叉树可以采用顺序存储结构

二叉树的遍历:二叉树有先序遍历(中左右),中序遍历(左中右),后序遍历(左右中);还有层序遍历,需要借助一个队列

遍历不管采用哪种算法,每个节点都只访问一次且仅访问一次,故时间复杂度都是O(n)。递归遍历中,递归工作栈的深度恰好为树的深度,所以在最坏情况下,二叉树是有n个节点而且深度为n的单支树,空间复杂度为O(n)。

由遍历序列构造二叉树

只知道二叉树的先序遍历和后序遍历序列是无法确定一棵二叉树的

中序遍历+先序遍历(后序遍历、层序遍历)可以唯一确定

线索二叉树

对于一个二叉树来说,其二叉链表表示形式中正好有两个指针域,一个左子树指针域,一个右子树指针域。并且对于一个有 n 个节点的二叉链表, 每个节点有指向左右孩子的两个指针域,所以共是 2n 个指针域。而 n 个节点的二叉树一共有 n-1 条分支数,也就是说,其实是存在 2n-(n-1) = n+l 个空指针域。将这些空指针利用起来(不同于前面提到的做指针域线索化),将其中一个指针用作前驱指针,另一个指针指向后继指针,那么这样的话就不需要额外的空间了。

实现方法:如果这个节点的左指针域是空的,那么就让其指向前驱,如果这个节点的右指针域为空,那么就让其指向后继

双亲表示法

树的一种存储结构,图示如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-G011LvBT-1658310967715)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715184007404.png)]

采用一组连续空间来存储每个节点,同时在每个节点中增设一个伪指针,来指示其父亲节点在数组中的位置。

利用了每个节点(根节点除外)只有唯一父亲的性质,可以很快得到每个节点的双亲结点,但求节点的孩子时就需要遍历整个结构。

孩子表示法

树的一种存储结构,图示如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sMNuousM-1658310967716)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715184251578.png)]

孩子表示法是将每个节点的孩子节点都用单链表链接起来形成一个线性结构,此时n个节点就有n个孩子链表(叶子结点的孩子链表为空),这种存储方式寻找子女的操作非常直接,而寻找父亲节点的操作就需要遍历所有的这n个节点的孩子链表。

孩子兄弟表示法

树的一种存储结构,图示如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ObzWKMLS-1658310967717)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715184540739.png)]

孩子兄弟表示法又称二叉树表示法,以二叉链表作为树的存储结构。孩子兄弟表示法使每个节点包括三部分内容:节点值、指向节点第一个孩子节点的指针、指向节点下一个兄弟节点的指针

这种存储表示方法比较灵活,最大的优点就是可以方便地实现树转换为二叉树的操作,易于查找结点的孩子,缺点是寻找父亲节点比较麻烦,可以通过额外指针的方法解决。

二叉排序树

二叉排序树的左子树上所有节点的值都小于根节点的值,右子树上所有节点的值都大于根节点的值,左右子树也分别是一棵二叉排序树。

根据二叉排序树的定义,左子树节点值 < 根节点值 < 右子树节点值,所以对二叉排序树进行中序遍历可以得到一个递增的有序序列。

二叉排序树的查找

二叉排序树的查找是从根节点开始的,延某个分支逐层向下比较的过程。若二叉树非空,先将给定值与根节点的关键字比较,若相等,则查找成功;若不等,分析给定值和根节点值的大小关系,在对应的子树上继续查找,这显然是一个递归的过程。

平衡二叉树

为了避免树的高度增长过快,降低二叉排序树的性能,规定在插入和删除二叉树节点时,要保证任意节点的左右子树高度差的绝对值不超过1,这样的二叉树称为平衡二叉树。节点左右子树的高度差为该节点的平衡因子。平衡二叉树可定义为或者是一棵空树,或者是具有以下性质的二叉树:它的左子树和右子树都是平衡二叉树,且左子树和右子树高度差的绝对值不超过1.

哈夫曼树

许多应用中,树中节点常常被赋予一个表示某种意义的数值,称为该节点的权。从树的根到任意节点的路径长度(经过的边数)与该节点上全职的乘积,称为该节点的带权路径长度。树中所有叶节点的带权路径长度之和称该树的带权路径长度(WPL)

在含有n个带权叶节点的二叉树中,其带权路径长度最小的二叉树称为哈夫曼树,也称最优二叉树。

哈夫曼树的构造

给定n个权值分别为w1,w2…,wn的节点,构造哈夫曼树的算法描述如下:

  1. 将这n个节点分别作为n棵仅含一个节点的二叉树,构成一个森林
  2. 构造一个新节点,从森林中选取两棵根节点权值最小的树作为新节点的左右子树,并且将新节点的权值置为左右子树根节点权值之和
  3. 从森林中删除刚刚选取的两棵树,同时将新的树加入到森林中
  4. 重复步骤2和3直至森林中只剩下一棵树为止

可以看出哈夫曼树具有以下特点:

  1. 每个初始节点最终都成为叶节点,且权值越小的节点到根节点的路径长度越大
  2. 构造过程中共新建了n-1个节点,因此哈夫曼树的总节点数为2n-1
  3. 每次构造都选择两棵树作为新节点的孩子,因此哈夫曼树中不存在度为1的节点
哈夫曼编码

数据通信中,若对每个字符用相等长度的二进制位表示,称这种编码方式为固定长度编码。若允许对不同字符用不等长的二进制位表示,则称这种编码方式为可变长度编码。

可变长度编码比固定长度编码优秀得多,其特点是可以对频率使用较高的字符赋予短编码,从而可以使字符的平均编码长度减短,起到压缩数据的作用。

哈夫曼编码就是一种被广泛应用而且非常有效的数据压缩编码。若没有一个编码是另一个编码的前缀,则称这样的编码为前缀编码。

用哈夫曼树得到哈夫曼编码是很自然的过程。首先,将每个出现的字符当作一个独立的节点,其权值为它出现的频度,构造出对应的哈夫曼树。显然,所有字符节点都出现在叶节点中。我们可将字符的编码解释为从根至该字符的路径上边标记的序列,其中边标记为0表示转向左孩子,标记为1表示转向右孩子。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-vnB8wpLo-1658310967717)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715204820829.png)]

图由顶点集V(G)和边集E(G)组成,记为G=(V,E)。其中E(G)是边的有限集合,边是顶点的无序对(无向图)或有序对(有向图)。

图相关的术语

顶点(Vertex):图中的数据元素。线性表中我们把数据元素叫元素,树中将数据元素叫结点。

边:顶点之间的逻辑关系用边来表示,边集可以是空的。

无向边(Edge):若顶点V1到V2之间的边没有方向,则称这条边为无向边。

无向图(Undirected graphs):图中任意两个顶点之间的边都是无向边。(A,D)=(D,A)

有向边:若从顶点V1到V2的边有方向,则称这条边为有向边,也称弧(Arc)。用<V1,V2>表示,V1为弧尾(Tail),V2为弧头(Head)。(V1,V2)≠(V2,V1)。

有向图(Directed graphs):图中任意两个顶点之间的边都是有向边。

注意:无向边用“()”,而有向边用“< >”表示。

简单图:图中不存在顶点到其自身的边,且同一条边不重复出现。

无向完全图:无向图中,任意两个顶点之间都存在边。

有向完全图:有向图中,任意两个顶点之间都存在方向互为相反的两条弧

稀疏图:有很少条边。

稠密图:有很多条边。

权(Weight):与图的边或弧相关的数。

网(Network):带权的图。

子图(Subgraph):假设G=(V,{E})和G‘=(V’,{E’}),如果V’包含于V且E’包含于E,则称G’为G的子图。

度(Degree):无向图中,与顶点V相关联的边的数目。有向图中,入度表示指向自己的边的数目,出度表示指向其他边的数目,该顶点的度等于入度与出度的和。

简单路径:序列中顶点不重复出现的路径

简单回路:序列中第一个顶点和最后一个顶点相同的简单路径

路径的长度:一条路径上边或弧的数量。

连通图:图中任意两个顶点都是连通的。

极大连通子图:该子图是G的连通子图,将G的任何不在该子图的顶点加入,子图将不再连通。(加点)

极小连通子图:该子图是G的连通子图,在该子图中删除任何一条边,子图都将不再连通。(删边)

无向图G的极大连通子图称为G的连通分量

有向图D的极大强连通子图称为D的强连通分量

包含无向图G的所有顶点的极小连通子图称为G的生成树。

若T是G的生成树当且仅当T满足:T是G的连通子图、T包含G的所有顶点、T中无回路。

图的存储结构
  • 邻接矩阵法(适合稠密图)

    用一个一维数组存储途中顶点的信息,用一个二维数组存储图中边的信息(即各顶点之间的邻接关系),存储顶点之间邻接关系的二维数组称为邻接矩阵。有向图、无向图和网对应的邻接矩阵示例图如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-78gpeMaU-1658310967718)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715211604053.png)]

  • 邻接表法(适合稀疏图)

    对图中每个顶点建立一个单链表,每个单链表中的每个节点表示这个单链表的表头节点邻接的节点。各单链表的头节点采用顺序存储的方式。图示如下:

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zcumA0YM-1658310967718)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715212020004.png)]

  • 十字链表法(只用于有向图)

    是有向图的一种链式存储结构,十字链表法改善了邻接表计算图中顶点入度的问题,十字链表中,有向图的每条弧和顶点都有一个节点,图示如下:

    img

    横:弧尾相同的弧

    纵:弧头相同的弧

  • 邻接多重表(用于无向图)

    邻接多重表仿照十字链表的方式对边表结构进行了一些改造,方便了对边执行删除操作。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-a25zkO6I-1658310967719)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715215303930.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dI5N0d2b-1658310967719)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220715215309748.png)]

图的遍历

图的遍历是指从图中某一顶点出发,按照某种搜索方法沿着图中的边对图中的所有顶点访问一次且仅访问一次。树是一种特殊的图,所以树的遍历实际上也可视为一种特殊的图的遍历。在图的遍历中,为了避免同一顶点被访问多次,在遍历图的过程中,必须记下每个已访问过的顶点。图的遍历算法:

  1. 广度优先搜素

    类似于二叉树的层序遍历算法。基本思想是:首先访问起始顶点,接着从起始顶点出发,依次访问起始顶点的各个未访问过的邻接顶点,然后再依次访问这些顶点的所有未被访问过的邻接顶点…直至图中所有顶点都被访问过为止。若此时图中尚有顶点未被访问,则选图中一个未被访问的顶点作为初始点,重复上述过程。代表算法:迪杰斯特拉(源最短路径算法)、Prim(最小生成树算法)

  2. 深度优先搜索

    基本思想是:首先访问图中某一起始顶点,然后由该顶点出发,访问与该顶点邻接并且未被访问的任一顶点,再访问与此顶点邻接且未被访问的任一顶点…重复上述过程。当不能再继续向下访问时,依次退回到最近被访问的顶点,若它还有邻接顶点未被访问过,则从该点开始继续上述搜索过程,直至图中所有顶点均被访问过为止。

最小生成树和最短路径

普里姆(Prim)算法:用来求最小生成树,基本思想为:从联通网络中某一顶点出发,选择与他关联的最小权值的边,将其顶点加入到顶点集中,此后就从一个顶点在顶点集中,另一个顶点不在顶点集中的所有顶点中选择出权值最小的边,把对应顶点加入到顶点集中,直到所有的顶点都加入到顶点集中为止。(加点法)

克鲁斯卡尔(kruskal)算法:用来求最小生成树,基本思想为:对于一个联通网络,初始时建立一个只有顶点没有边的非连通图,途中每个顶点看作一个联通分量,从边集中选择出权值最小的边且该边的两个端点不在一个联通分量中,则把该边加入到原图中,否则就再重新选择一条权值最小的边,直到所有的顶点都在一个联通分量中为止。(加边法)

迪杰斯特拉(dijkstra)算法:经典的单源最短路径算法,用于求某一顶点到其他顶点的最短路径,它的特点是以起始点为中心层层向外扩展,直到扩展到终点为止,迪杰斯特拉算法还要求边的权值不能为负值。

基本思想为:初始时,S中只有起点s;U中是除s之外的顶点,并且U中顶点的路径是"起点s到该顶点的路径"。然后,从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 然后,再从U中找出路径最短的顶点,并将其加入到S中;接着,更新U中的顶点和顶点对应的路径。 … 重复该操作,直到遍历完所有顶点。

弗洛伊德(Floyd)算法:经典的求任意顶点之间的最短路径,边的权值可以为负值。

基本思想为:设置顶点vi 到顶点vk 的最短路径已知为Lik,顶点vk 到vj 的最短路径已知为Lkj,顶点vi 到vj 的路径为Lij,则vi 到vj 的最短路径为:min((Lik+Lkj),Lij),vk 的取值为图中所有顶点,则可获得vi 到vj 的最短路径
至于vi 到vk 的最短路径Lik 或者vk 到vj 的最短路径Lkj,是以同样的方式获得

关键路径

AOV网和AOE网

  • 在一个表示工程的有向图中,用顶点表示活动,用弧表示活动之间的优先关系,这样的有向图为顶点表示活动的网,我们成为AOV网(Activity On Vertex Network),AOV网中的弧表示活动之间的某种约束关系。AOV网中不存在回路(即无环的有向图)。

  • 在一个表示工程的带权有向图中,用顶点表示事件,用弧表示活动,用弧上的权值表示活动持续的时间,这种有向图的弧表示活动的网,我们称为AOE网(Activity On Edge Network),AOE网中没有入度的顶点称为始点或源点,没有出度的顶点叫做终点或汇点。

AOE网的性质

  1. 只有在进入某顶点的活动都已经结束时,该顶点表示的事件才会发生
  2. 只有在某顶点所代表的事件发生之后,从该顶点出发的各活动才开始

事件的最早发生时间ve[k]:

要确保进入该事件的所有活动都结束,所以事件的最早发生时间应该是:所有“前置事件的最早发生时间+对应的活动长度”中的最大值

事件的最迟发生时间vl[k]:

最迟发生时间是指不推迟整个工期的前提下,事件允许的最迟发生时间。所以事件的最迟发生时间应该是:所有“后置事件的最迟发生时间-对应的活动长度”中的最小值

活动的最早发生时间ee[i]:

活动的最早开始时间等于事件的最早开始时间

活动的最迟发生时间el[i]:

活动的最迟发生时间等于弧头事件的最迟发生时间减去活动持续时间

各种查找方法

查找分为静态查找和动态查找;静态查找包括:顺序查找、折半查找、分块查找;动态查找包括:二叉排序树和平衡二叉树。

  1. 顺序查找:把待查关键字放入哨兵位置,然后再从前往后依次把表中元素和待查关键字比较,设置哨兵位置是为了加快执行速度。顺序查找的特点是结构简单,通用性好,但是效率太低

  2. 折半查找:要求查找表为顺序存储结构并且有序,将待查关键字和位于查找上下界中间位置的那个元素进行比较,如果相等即为查询成功,如果不等则分析大小关系,更新上下界(折半查找区间)。查询失败的条件是:范围上界<=范围下界

  3. 分块查找:把查找表分为若干子表,要求每个子表的元素都比它后面的子表的元素小,也就是保证块间有序,特点是:块间有序,块内无序,查找时块间进行索引查找,块内进行顺序查找

  4. 二叉排序树:二叉排序树的定义为:或者是一棵空树,或者是一棵具有如下特点的树:如果该树有左子树,则其左子树的所有节点值小于根的值;若该树有右子树,则其右子树的所有节点值均大于根的值;其左右子树也分别为二叉排序树。在查找时可以动态插入,这也是动态查找和静态查找的区别。

  5. 平衡二叉树:平衡二叉树又称为AVL树,它或者是一棵空树或者具有如下特点:他的左子树和右子树的高度差的绝对值不能大于1,且他的左右子树也都是平衡二叉树。

    如果在一个平衡二叉树中插入一个节点可能导致失衡,这时候要进行树结构的调整,有四种情况:左子树的左子树上插入节点时向右进行单向旋转;右子树的右子树上插入节点时向左进行单向旋转;左子树的右子树上插入节点时先将左子树向左旋转,再将整棵树向右旋转;右子树的左子树上插入节点时先将右子树向右旋转,再将整棵树向左旋转。

B树和B+树

B树又称多路平衡查找树,B树种所有节点的孩子个数的最大值称为B树的阶,通常用m表示。一棵m阶B树或者为空树,或者为满足以下特性的m叉树:

  1. 树中每个节点至多有m棵子树,即至多含有m-1个关键字
  2. 若根节点不是终端节点,则至少有两棵子树
  3. 除根节点外的所有非叶节点至少有m/2棵子树,即至少含有m/2-1个关键字
  4. 所有的叶节点都出现在同一层次上,并且不带信息(可以视为外部节点或类似于折半查找判定树的查找失败节点,实际上这些节点不存在,指向这些结点的指针为空)
  5. B树的所有节点平衡因子都为0

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZGMC2pdz-1658310967720)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220716191307556.png)]

B+树是应数据库所需而出现的一种变形的B树

B+树需要满足的条件:

  1. 每个分支节点最多有m棵子树
  2. 若根节点不是终端节点,则至少有两棵子树
  3. 除根结点之外的所有非叶节点至少有m/2棵子树
  4. 结点的子树个数和关键字个数相等
  5. 所有叶节点包含全部关键字及指向相应记录的指针,叶节点中将关键字按大小顺序排列,并且相邻叶节点按大小顺序相互链接起来
  6. 所有分支节点中仅包含它的各个子结点中关键字的最大值及指向其子节点的指针

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dmhDfh1j-1658310967720)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220716192302527.png)]

m阶B树和B+树的主要差异

  1. B+树中,节点的关键字个数和节点的子树个数一致;B树种,节点的子树个数比关键字个数多一
  2. B+树中,叶节点包含信息,所有非叶节点仅起到索引作用,非叶节点中的每个索引项只含有对应子树的关键字的最大值和指向该子树的指针,不含有该关键字对应记录的存储地址
  3. B+树中叶节点包含了全部关键字,即在非叶节点中出现的关键字也会出现在叶节点中;而在B树中,叶节点包含的关键字和其他节点包含的关键字是不重复的。
哈希表的概念、哈希函数的构造方法、哈希冲突的解决办法

哈希表又称散列表,是根据关键字码的值直接进行访问的数据结构,即它通过把关键码的值映射到表中的一个位置以加快查找速度,其中映射函数叫做散列函数,存放记录的数组叫做散列表。

哈希函数的构造方法包括:直接定址法、除留余数法、数字分析法、平方取中法、折叠法、随机数法

  1. 直接定址法:取关键字的某个线性函数值作为散列地址,H(key)=a*key+b
  2. 除留余数法:取关键字对p取余的值作为散列地址,即H(key)=key%p
  3. 数字分析法:当关键字的位数大于地址的位数,对关键字的各位分布进行分析,选出分布均匀的任意几位作为散列的地址。
  4. 平方取中法:对关键字求平方,再取结果中的中间几位作为散列地址
  5. 折叠法:将关键字分为位数相同的几部分,然后将这几部分的叠加和作为散列地址。
  6. 随机数法:选择一个随机函数,把关键字的随机函数值作为散列地址。

哈希冲突的解决办法:

开放定址法和拉链法,当冲突发生时,使用某种探测技术形成一个探测序列,然后沿此序列逐个单元查找,直到找到该关键字或者碰到一个开放的地址为止,探测到开放的地址表明该表中没有此关键字,若要插入,则探测到开放地址时可将新节点插入该地址单元。其中开放定址法包括:线性探查法,二次探查法,双重散列法

  1. 线性探查法:基本思想,探查时从地址d开始,首先探查T[d],再探查T[d+1]…直到查到队列尾部,然后跳转到队列头开始探测
  2. 二次查探法:基本思想,探查时从地址d开始,首先探查T[d],再探查T[d+1²],T[d+2²]…直至探查到有空余地址或者探查到T[d-1]为止,二次探测是防止聚集产生的一种尝试,思想是探测相隔较远的单元,而不是和原始位置相邻的单元。
  3. 双重散列法:基本思想,使用两个散列函数来确定地址,探查时从地址d开始,首先探查T[d],再探查T[d+h1(d)]、T[d+2*h1(d)]…双重散列使用在发生冲突时将第二个散列函数应用于键的想法。

链接法:将所有关键字为同义词的节点链接在同一个单链表中,若选定的散列表长度为m,则可将散列表定义为一个由m个头指针组成的指针数组,凡是散列地址为i的节点均插入到头指针为i的单链表中。

排序算法

直接插入排序算法

img

希尔排序

img

选择排序

img

冒泡排序

冒泡排序

快速排序

在这里插入图片描述

归并排序

在这里插入图片描述

复杂度

BkoGZt.md.png

直接插入排序、冒泡排序和简单选择排序是基本的排序方法,它们主要用于元素个数n不是很大(n < 10000) 的情形。

对于中等规模的元素序列(n <=1000), 希尔排序是一种很好的选择。

对于元素个数n 很大的情况,可以采用快排、堆排序、归并排序或基数排序,其中快排和堆排序都是不稳定的,而归并排序和基数排序是稳定的排序算法。

高等数学

五种基本初等函数

指数函数、对数函数、幂函数、三角函数、反三角函数

函数零点的求法
  1. 解方程:通过解方程 f(x)=0 得到零点。

  2. 数形结合:转化成两个函数图像的交点问题。

  3. 利用零点存在定理和函数单调性。

    零点存在定理:如果函数 y= f(x) 在区间 [a,b] 上的图象是连续不断的一条曲线,并且有 f(a)·f(b)<0,那么,函数 y= f(x) 在区间 (a,b) 内有零点,即至少存在一个 c∈(a,b) ,使得 f©=0 ,这个 c 也就是方程 f(x)= 0 的根。

  4. 二分法

    preview

  5. 牛顿迭代法

函数极限

img

数列极限

img

连续、可导、可微

连续:左极限等于右极限等于函数值,即 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mxKqtXBv-1658310967722)(https://www.zhihu.com/equation?tex=%5Clim%5Climits_%7Bx+%5Cto+x_0%7Df%28x%29%3Df%28x_0%29)] 。

可导: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3gSMtw6a-1658310967723)(https://www.zhihu.com/equation?tex=%5Clim%5Climits_%7B%5CDelta+x+%5Crightarrow+0%7D)] [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oCofthK7-1658310967723)(https://www.zhihu.com/equation?tex=%5Cfrac%7B+f%28x_0%2B%5CDelta+x%29±+f%28x_0%29+%7D%7B%E2%96%B3x%7D)] 存在,则 y = f(x) 在点 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YOXgYx8k-1658310967724)(https://www.zhihu.com/equation?tex=x_0)] 处可导。

img

可微:

  • 一元函数中可导与可微等价。
  • 对于多元函数,img
  • 导数的几何意义——切线的斜率- 微分的几何意义——切线纵坐标的增量

多元函数连续、可导、可微的关系

img

解析和奇点
  1. 解析

    函数在某点处解析指函数在该点及其邻域内处处可导。

  2. 奇点

    未定义的点。 如函数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5Twet3Hh-1658310967725)(https://www.zhihu.com/equation?tex=%7B%5Cdisplaystyle+f%28x%29%3D1%2Fx%7D)] 在 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Bw3tz7RJ-1658310967726)(https://www.zhihu.com/equation?tex=%7B%5Cdisplaystyle+x%3D0%7D)] 的点,是一个奇点。

微分中值定理
  1. 费马引理

    img

  2. 罗尔中值定理

    img

  3. 拉格朗日中值定理

    img

  4. 柯西中值定理

    img

拉格朗日中值定理是罗尔中值定理的推广、柯西中值定理是拉格尔朗日中值定理的推广。

泰勒公式

泰勒公式的初衷是用多项式来近似表示函数在某点周围的情况。

泰勒公式,是一个用函数在某点的信息描述其附近取值的公式。 如果函数满足一定的条件,泰勒公式可以用函数在某一点的各阶导数值做系数构建一个多项式来近似表达这个函数。

img

常见余项:

  1. 皮亚诺余项: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1VERuR9v-1658310967729)(https://www.zhihu.com/equation?tex=R_n+%28x%29%3Do%28%5B%28x-x_0%29%5D%5En%29)] ,这里只需要 n 阶导数存在。
  2. 拉格朗日余项: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Wedtm2tg-1658310967729)(https://www.zhihu.com/equation?tex=R_n+%28x%29%3D%5Cfrac+%7Bf%5E%7B%28n%2B1%29%7D%7D%7B%28n%2B1%29%21%7D%28x-x_0%29%5E%7B%28n%2B1%29%7D)] ,其中 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Rx66PqR0-1658310967731)(https://www.zhihu.com/equation?tex=%CE%B8%E2%88%88%28x_0%2Cx%29)] .
麦克劳林公式

img

泰勒公式的几何意义

泰勒公式的几何意义是利用多项式函数来逼近原函数,由于多项式函数可以任意次求导,易于计算,且便于求解极值或者判断函数的性质,因此可以通过泰勒公式获取函数的信息,同时,对于这种近似,必须提供误差分析,来提供近似的可靠性。

函数的凹凸性

驻点:一阶导数为0的点

拐点:二阶导数为0的点

凸函数和凹函数:

  • 凸函数: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6KQTsAF5-1658310967732)(https://www.zhihu.com/equation?tex=f%28%5Cfrac%7Bx_1%2Bx_2%7D%7B2%7D%29+%5Cgeqslant+%5Cfrac%7Bf%28x_1%29%2Bf%28x_2%29%7D%7B2%7D)] ,[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9Kcxa0VG-1658310967732)(https://www.zhihu.com/equation?tex=x_1)] 、 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LzthLf1y-1658310967733)(https://www.zhihu.com/equation?tex=x_2)] 为区间上任意两点,开区间上满足二阶导数恒小于 0。证明:通过拉格朗日中值定理。
  • 凹函数:与凸函数相反。
积分

img

积分中值定理

img

img

微积分基本公式(牛顿——莱布尼兹公式)

img

微积分基本公式表明:

img

定积分的基本求法

换元积分法:

img

分部积分法:

img

不定积分和定积分

不定积分的定义是求原函数(族),得到一个函数族

img

定积分的定义是求面积的,得到一个数

img

二重积分的几何意义

img

黎曼积分的通俗解释

黎曼积分是相当于把山分为每块都是一平方米大的方块,测量每个方块正中的山的高度。 每个方块的体积约为1x1x高度,因此山的总体积为所有方块的和。

向量的内积、外积、混合积

内积(数量积/点乘/点积):点乘的几何意义是可以用来表征或计算两个向量之间的夹角,以及在b向量在a向量方向上的投影,得到的是一个数

img

外积(向量积/叉乘/叉积):在3D图像学中,叉乘的概念非常有用,可以通过两个向量的叉乘,生成第三个垂直于a,b的法向量,从而构建X、Y、Z坐标系。得到的是一个向量

img

img

img

混合积:得到的是一个数

img

img

方向导数

在函数定义域内的点,对某一方向求导得到的导数。

或:在某一个点处沿方向l,函数对距离的变化率。

梯度

首先,梯度是一个向量

在微积分里面,对多元函数的参数求∂偏导数,把求得的各个参数的偏导数以向量的形式写出来,就是梯度。

比如函数 f(x,y), 分别对 x,y 求偏导数,求得的梯度向量就是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-y7rU0Tel-1658310967739)(https://www.zhihu.com/equation?tex=%28%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82x%7D%2C+%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82y%7D%29%5ET)] ,简称 grad f(x,y) 或者 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-X4TCKQ3a-1658310967739)(https://www.zhihu.com/equation?tex=%5Cnabla+f%28x%2Cy%29)] 。对于在点 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IzQSHKoO-1658310967740)(https://www.zhihu.com/equation?tex=%28x_0%2Cy_0%29)] 的具体梯度向量就是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-25ASt01L-1658310967740)(https://www.zhihu.com/equation?tex=%28%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82x_0%7D%2C+%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82y_0%7D%29%5ET)] .或者 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ScGPGBqI-1658310967741)(https://www.zhihu.com/equation?tex=%5Cnabla+f%28x_0%2Cy_0%29)] ,如果是3个参数的向量梯度,就是 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0dDIOAdm-1658310967741)(https://www.zhihu.com/equation?tex=%28%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82x%7D%2C+%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82y%7D%2C+%5Cfrac%7B%E2%88%82f%7D%7B%E2%88%82z%7D%29%5ET)] ,以此类推。

梯度向量的几何意义:函数变化增加最快的地方。沿着梯度向量的方向,更容易找到函数的最大值。反过来说,沿着梯度向量相反的方向,更容易找到函数的最小值。

方向导数和梯度的关系,I为方向导数的方向

img

散度

散度是一个数字,对应向量的内积

散度(divergence)可用于表征空间各点矢量场发散的强弱程度,物理上,散度的意义是场的有源性。当 div F>0,表示该点有散发通量的正源(发散源);当 div F<0 表示该点有吸收通量的负源(洞或汇);当 div F=0,表示该点无源。

img

img

旋度

旋度是一个向量,对应向量的外积

img

旋度是向量分析中的一个向量算子,可以表示三维向量场对某一点附近的微元造成的旋转程度。旋度向量的方向表示向量场在这一点附近旋转度最大的环量的旋转轴,它和向量旋转的方向满足右手定则。旋度向量的大小则是绕着这个旋转轴旋转的环量与旋转路径围成的面元的面积之比。

散度与旋度

img

img

各类级数

等比级数

img

调和级数

img

p-级数

img

泰勒级数

img

交错级数

img

傅里叶级数

img

欧拉公式

img

img

傅里叶级数

img

任意周期信号可以通过傅里叶展开分解为直流分量和一组不同幅值、频率、相位的正弦波,即用三角函数之和近似表示复杂的周期函数。

线性代数

余子式

在n阶行列式中,把元素aij所在的第i行与第j列划去后留下的n − 1阶行列式叫做元素aij的余子式,记作Mij

代数余子式

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uBMzRA65-1658310967749)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220717215957521.png)]

行列式

行列式,记作 det(A),是一个将方阵 A 映射到实数的函数。行列式等于矩阵特征值的乘积。行列式的绝对值可以被认为是衡量矩阵相乘后空间扩大或者缩小了多少。如果行列式是 0, 那么空间至少沿着某一维完全收缩了,使其失去了所有的体积。如果行列式是 1, 那么矩阵相乘没有改变空间体积。

行列式按行(列)展开法则

n阶行列式D等于它的任一行(列)的各元素与其对应的代数余子式的乘积之和

矩阵的秩
  • 基本概念

    k 阶子式:在一个矩阵或行列式中取 k 行 k 列,交叉处的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-c3nJv5Hs-1658310967750)(https://www.zhihu.com/equation?tex=k%5E2)] 个元素按原顺序构成的行列式。

    1. 从子式的角度定义:矩阵的秩就是矩阵中非零子式的最高阶数。
    2. 从极大线性无关组的角度定义:矩阵的所有行向量中极大线性无关组的元素个数。
    3. 从标准型的角度定义:求一个矩阵的秩,可以先将其化为行阶梯型,非零行的个数即为矩阵的秩。
  • 与向量组的关系

    矩阵的秩等于它列向量组的秩,也等于它行向量组的秩。

    向量组的秩定义为向量组的极大线性无关组所含向量的个数。

  • 与向量空间的关系

    任何矩阵的行空间的维数等于矩阵的列空间的维数等于矩阵的秩。

  • 与线性方程组的关系

    设 A 是 m×n 矩阵,若 R(A)=r<n,则齐次线性方程组 Ax=0 有基础解系,且每个基础解系都含 n-r 个解向量。

矩阵的迹

方阵 A(n*n) 的迹定义为对角线元素的和。

判断一个线性方程组解的情况
  • 齐次线性方程组 Ax=0

    r(A)=n,有唯一零解;r(A)<n,有无穷多解。

  • 非齐次线性方程组 Ax=b

    r(A)≠r(A,b),无解;r(A)=r(A,b)=n,有唯一解;r(A)=r(A,b)<n,有无穷多解。

线性相关和线性无关

img

向量组A线性无关的充分必要条件是 R ( A ) = m。

线性相关和线性无关的几何意义

一组矢量的线性相关性本质上,是描述他们所张成的广义平行四边形体积是否为零。N 个向量线性无关⇔他们所张成的N维体体积不为零。于是有:线性无关矢量组成的矩阵的行列式不为零;线性相关矢量组成的矩阵的行列式必为零。

线性空间(向量空间)

n 维向量构成的非空集合,对于向量加法和数乘两种运算封闭。

给元素装配了加法数乘非空集合。

向量空间的基与维数

设 V 是一向量空间, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-03veyigg-1658310967751)(https://www.zhihu.com/equation?tex=%CE%B1_1%2C%CE%B1_2%2C%E2%80%A6%2C%CE%B1_r%E2%88%88V)] 且满足:

a) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zWW3tiBq-1658310967751)(https://www.zhihu.com/equation?tex=%CE%B1_1%2C%CE%B1_2%2C%E2%80%A6%2C%CE%B1_r)] 线性无关;

b) V 中向量均可由 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hygKeiSC-1658310967751)(https://www.zhihu.com/equation?tex=%CE%B1_1%2C%CE%B1_2%2C%E2%80%A6%2C%CE%B1_r)] 线性表示。

则称 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kBJahSo9-1658310967751)(https://www.zhihu.com/equation?tex=%CE%B1_1%2C%CE%B1_2%2C%E2%80%A6%2C%CE%B1_r)] 为 V 的一个基。

基中所含向量个数 r 称为向量空间的维数。

特征值和特征矩阵

对方阵 A 满足:Ax=λx,其中 x 为非零向量,则称 x 为特征向量,λ 为特征值

  • 特征值与特征向量的关系

    • 一个特征值可能对应多个特征向量,一个特征向量只能属于一个特征值。
    • 属于不同特征值的特征向量一定线性无关。
  • 特征值和特征向量的意义

    如果一个向量投影到一个方阵定义的空间中只发生伸缩变化,而不发生旋转变化,那么该向量就是这个方阵的一个特征向量,伸缩的比例就是特征值。

相似矩阵

img

正交矩阵

矩阵的转置和矩阵的乘积=单位阵,那么这个矩阵就是正交矩阵,它的列向量组一定是标准正交向量组。

正交矩阵是指矩阵的转置等于矩阵的的矩阵。

img

矩阵合同

img

奇异矩阵

对应的行列式等于0的矩阵叫做奇异矩阵,奇异意味单个的,也就是没有配对的,是不可逆的

克莱姆法则

img

其中,A是线性方程组的系数矩阵,X是由未知数组成的列向量,β是由常数项组成的列向量。有两个前提,一是方程的个数要等于未知量的个数,二是系数矩阵的行列式要不等于零(即:可逆、非奇异)。

解法:

img

正定矩阵

img

  • 前提:矩阵是对称的
  • 所有特征值大于零
  • 各阶主子式大于零
半正定矩阵

img

对角化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ym27ixMG-1658310967754)(C:\Users\86175\AppData\Roaming\Typora\typora-user-images\image-20220718203519916.png)]

对角化后,对角线的值就是矩阵 A 的 n 个特征值。

向量范数
  • 1-范数

    向量元素绝对值之和,x 到零点的曼哈顿距离。

  • 2-范数

    向量元素绝对值的平方和再开方,表示 x 到零点的欧式距离。

  • ∞-范数

    所有向量元素绝对值中的最大值。

  • -∞-范数

    所有向量元素绝对值中的最小值。

  • p-范数

    向量元素绝对值的 p 次方和的 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qUZyxP4v-1658310967754)(https://www.zhihu.com/equation?tex=%5Cfrac%7B1%7D%7Bp%7D)] 次幂,表示 x 到零点的 p 阶闵氏距离。

    img

矩阵范数
  • 1-范数

    所有矩阵列向量绝对值之和的最大值

  • ∞-范数

    所有矩阵行向量绝对值之和的最大值

  • 2-范数

    表示ATA的最大特征值,称为谱范数

概率论

古典概型、几何概型
  • 古典概型——有限等可能(有限个可能事件,且每个事件都是等可能概率事件)
  • 几何概型——无限等可能
条件概率

若 P(B)>0,称在 B 发生的条件下,A 发生的概率为条件概率,且 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2qpcWnNF-1658310967755)(https://www.zhihu.com/equation?tex=P%28A%7CB%29%3D%5Cfrac%7BP%28AB%29%7D%7BP%28B%29%7D)] .

全概率公式

img

img

贝叶斯公式

贝叶斯本质就一个条件概率公式 P(A|B),也就是在 B 事件发生的情况下,A 事件发生的概率。

img

什么是先验概率

事情未发生,只根据以往数据统计,分析事情发生的可能性,由因求果,即先验概率。

指根据以往经验和分析。在实验或采样前就可以得到的概率。

什么是后验概率

事情已发生,已有结果,求引起这事发生的因素的可能性,由果求因,即后验概率。

后验概率的计算,是以先验概率为前提条件的。如果只知道事情结果,而不知道先验概率(没有以往数据统计),是无法计算后验概率的。

后验概率的计算需要应用到贝叶斯公式。

离散型随机变量
  • 伯努利分布\两点分布\0-1分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1088EyL7-1658310967757)(https://www.zhihu.com/equation?tex=X%E2%88%BCB%281%2Cp%29++)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-buLtw0gI-1658310967757)(https://www.zhihu.com/equation?tex=P%28X%3D0%29%3D1-p%2C+P%28X%3D1%29%3Dp%2C+p%E2%88%88%280%2C1%29)]
    期 望 : p ; 方 差 : p ( 1 − p ) 期望:p;方差:p(1-p) pp(1p)

  • 二项分布(伯努利概型)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sz53oruf-1658310967758)(https://www.zhihu.com/equation?tex=X%E2%88%BCB%28n%2Cp%29)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4d3DEhao-1658310967758)(https://www.zhihu.com/equation?tex=P%28X%3Dk%29%3DC_n%5Ek+p%5Ek+%281-p%29%5E%7Bn-k%7D%2C+p%E2%88%88%280%2C1%29%2C+k%3D0%2C1%2C%E2%80%A6%2Cn)]

    N次独立重复的伯努利试验中成功的次数 X 服从二项分布。
    期 望 : n p ; 方 差 : n p ( 1 − p ) 期望:np;方差:np(1-p) npnp(1p)

  • 泊松分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Sz2XpRc4-1658310967759)(https://www.zhihu.com/equation?tex=X%E2%88%BCP%28%CE%BB%29+)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HojGApS5-1658310967759)(https://www.zhihu.com/equation?tex=P%28X%3Dk%29%3D%5Cfrac%7B%CE%BB%5Ek+e%5E%7B-%CE%BB%7D%7D%7Bk%21%7D%2C+%CE%BB%3E0%2C+k%3D0%2C1%2C2%2C%E2%80%A6)]

    泊松分布适合于描述单位时间内随机事件发生的次数的概率分布。
    期 望 : λ ; 方 差 : λ 期望:λ;方差:λ λλ

  • 几何分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hEdKOLZk-1658310967760)(https://www.zhihu.com/equation?tex=X%E2%88%BCG%28p%29)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mN1qldiX-1658310967760)(https://www.zhihu.com/equation?tex=P%28X%3Dk%29%3D%281-p%29%5E%7B%28k-1%29%7D+p%2C+p%E2%88%88%280%2C1%29%2C+k%3D1%2C2%2C%E2%80%A6)]

    首次试验成功所需做的试验次数 X 服从几何分布。
    期 望 : 1 / p ; 方 差 : p / ( 1 − p ) 2 期望:1/p;方差:p/(1-p)^2 1/pp/(1p)2

  • 超几何分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iYLMlRsh-1658310967761)(https://www.zhihu.com/equation?tex=P%28X%3Dk%29%3D%5Cfrac%7BC_K%5Ek+C_%7BN-K%7D%5E%7Bn-k%7D%7D%7BC_N%5En+%7D%2C0%3Ck%3Cmin%7BK%2Cn%7D)]

    超几何分布(Hypergeometric distribution)描述了由有限个对象中抽出 n 个对象,成功抽出 k 次指定种类的对象的概率(抽出不放回(without replacement))。

连续型随机变量
  • 均匀分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1VETPwpv-1658310967761)(https://www.zhihu.com/equation?tex=X%E2%88%BCU%28a%2Cb%29+)]

    img
    期 望 : ( a + b ) / 2 ; 方 差 : ( a − b ) 2 / 12 期望:(a+b)/2;方差:(a-b)^2/12 (a+b)/2(ab)2/12

  • 指数分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o7Gjd0Bm-1658310967762)(https://www.zhihu.com/equation?tex=X%E2%88%BCE%28%CE%BB%29)]

    img
    期 望 : 1 / λ ; 方 差 : 1 / λ 2 期望:1/λ;方差:1/λ^2 1/λ1/λ2

  • 正态分布

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-hE3e5uFu-1658310967763)(https://www.zhihu.com/equation?tex=X%E2%88%BCN%28%CE%BC%2C%CF%83%5E2%29)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zkzyfgwe-1658310967763)(https://www.zhihu.com/equation?tex=f%28x%29%3D%5Cfrac%7B1%7D%7B%E2%88%9A2%CF%80+%CF%83%7D+e%5E%7B-%5Cfrac%7B%28x-%CE%BC%29%5E2%7D%7B2%CF%83%5E2%7D%7D%2C±%E2%88%9E%3Cx%3C%E2%88%9E)]

    特别地,当 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-chITksri-1658310967764)(https://www.zhihu.com/equation?tex=%CE%BC%3D0%2C+%CF%83%3D1)] 时为标准正态分布, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DLnXk1Zd-1658310967764)(https://www.zhihu.com/equation?tex=X%E2%88%BCN%280%2C1%29)] .
    期 望 : μ ; 方 差 : σ 2 期望:μ;方差:σ^2 μσ2
    若干正态分布相加、相乘后得到的分布都服从正态分布(前提是相互独立)

数学期望

随机变量的均值(不同于样本均值),大数定律指出如果样本足够的话,样本均值会无限接近数学期望。

方差

方差是衡量随机变量或一组数据时离散程度的度量。概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iR7EqfIt-1658310967765)(https://www.zhihu.com/equation?tex=D%28X%29%3DE%28%28X-E%28X%29%29%5E2%29%3DE%28X%5E2%29-E%5E2%28X%29)](平方的期望-期望的平方)

协方差

期望值分别为 E[X] 与 E[Y] 的两个实随机变量 X 与 Y 之间的协方差Cov(X,Y) 定义为:

img

从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。

从直观上来看,协方差表示的是两个变量总体误差的期望。

相关系数

img

即:用 X、Y 的协方差除以 X 的标准差和 Y 的标准差。

研究变量之间线性相关程度,值在[-1,1]之间

协方差为0的时候是否能说明两个分布无关

协方差为0的时候表示不相关,不相关就是两者没有线性关系,但是不排除其它关系存在。因为在数学期望存在的情况下,独立必不相关,不相关未必独立。

大数定理和中心极限定理的区别

大数定律通俗一点来讲,就是样本数量很大的时候,样本均值和数学期望充分接近,也就是说当我们大量重复某一相同的实验的时候,其最后的实验结果可能会稳定在某一数值附近。

中心极限定理指出,无论风向分布规律是什么,每个样本距离期望的位置的距离分布是符合正态分布的

前者更关注的是样本均值,后者关注的是样本均值的分布

独立和互斥

事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GVbbdm4j-1658310967766)(https://www.zhihu.com/equation?tex=A)] 与事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ugIZjswd-1658310967766)(https://www.zhihu.com/equation?tex=B)] 独立的定义是: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jz3pzdrc-1658310967767)(https://www.zhihu.com/equation?tex=P%28AB%29%3DP%28A%29P%28B%29)] 。

事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8S051zAv-1658310967767)(https://www.zhihu.com/equation?tex=A)] 与事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-o77qZeaZ-1658310967767)(https://www.zhihu.com/equation?tex=B)] 互斥的定义是:集合 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BuooDY4L-1658310967768)(https://www.zhihu.com/equation?tex=A)] 与集合 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-synhZA2G-1658310967768)(https://www.zhihu.com/equation?tex=B)] 没有相同的样本点,即 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-T1SKBWkd-1658310967769)(https://www.zhihu.com/equation?tex=A%5Ccap+B%3D%5Cphi)] 。( [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wlm9FVmC-1658310967769)(https://www.zhihu.com/equation?tex=%5Cphi)] 代表空集, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1pDqTulc-1658310967769)(https://www.zhihu.com/equation?tex=A%5Ccap+B)] 也可以简记为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-x0WcQ3Xo-1658310967770)(https://www.zhihu.com/equation?tex=AB)] )

如果事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9cIU0A92-1658310967770)(https://www.zhihu.com/equation?tex=A)] 或事件 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4PlwGq0s-1658310967770)(https://www.zhihu.com/equation?tex=B)] 发生的概率都不为0,那么独立和互斥有这样一层关系:互斥不独立,独立不互斥

独立和不相关

不相关是指的两个变量之间没有线性关系,并不一定没有其他关系。而独立指的是两个随机变量之间什么关系都没有。所以,独立一定不相关,不相关不一定独立。

极大似然估计

最大似然估计的目的是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。

离散数学

离散数学都学了什么

集合论、代数系统、图论、数理逻辑等

什么是集合

由离散个体构成的整体的称为集合,称这些个体为集合的元素

集合元素的性质:无序性、相异性、确定性、任意性

什么是幂集

集合的全体子集构成的集合叫做幂集。 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SDIljUoZ-1658310967771)(https://www.zhihu.com/equation?tex=%7CP%28A%29%3D2%5En%7C)]

什么是笛卡尔乘积

设有两个集合 A 与 B,用 A 与 B 中的元素组成有序偶,以 A 的元素作为有序偶的第一个分量,以 B 的元素作为有序偶的第二个分量,用这种方式所组成的有序偶的全体构成一个集合,称为 A 与 B 的笛卡尔乘积,记为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BS4y1V2q-1658310967771)(https://www.zhihu.com/equation?tex=A%5Ctimes+B)] .

二元关系

如果一个集合满足下列条件之一:

  1. 集合非空,且它的元素都是有序偶;
  2. 集合是空集;

则称该集合为一个二元关系,简称为关系,记作 R.

等价关系
  • 等价关系:设 R 为非空集合 A 上的一个关系,如果 R 是自反的对称的传递的,则称 R 为 A 上的等价关系
  • 等价类:设 R 是集合 A 上的等价关系,与 A 中的一个元素 a 有R关系的所有元素的集合叫做 a 的等价类
偏序关系

设 R 为非空集合 A 上的一个关系,如果 R 是自反的反对称的可传递的,则称 R 是集合 A 上的偏序关系,简称偏序,记作 " [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FXwHKnfi-1658310967773)(https://www.zhihu.com/equation?tex=%5Cleqslant)] ".、

  • 偏序关系 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UqOb2cI0-1658310967773)(https://www.zhihu.com/equation?tex=%5Cleqslant)] ——自反性、反对称性、传递性
  • 逆序关系 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NPCgN2BF-1658310967774)(https://www.zhihu.com/equation?tex=%3C)] ——反自反、反对称性、传递性 逆序关系的自反闭包是偏序关系。
判断两个无穷集合的大小

对无限集,通过建立一一对应的方法可以比较它们元素个数的大小(在集合论中称为势),以整数集 Z 和偶数集 A 为例,如果将 Z 中的每一个元素都乘以 2,则都可以在 A 中找到对应的偶数元素,即 Z 和 A 中的元素是一一对应的,也就是说这两个集合是等势的。值得注意的是,偶数集合是整数集合的一部分,但它包含的元素个数却跟整数集合一样多。

函数

函数是从非空数集到非空数集的映射,而且只能是一对一映射或多对一映射。

集合、关系、函数
  1. 集合是基础。 2) 在集合之上建立关系,关系建立集合与集合间的联系。 3) 函数是一种特殊的关系。
单射、满射、双射

设函数 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-v3FraBkQ-1658310967774)(https://www.zhihu.com/equation?tex=f%3A+X+%5Cto+Y%2C+y+%3D+f%28x%29)]

  1. 单射:任给 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RwA1kz5z-1658310967775)(https://www.zhihu.com/equation?tex=x_1)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AZBnUlYf-1658310967782)(https://www.zhihu.com/equation?tex=x_2)] 属于 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9k0YzptW-1658310967782)(https://www.zhihu.com/equation?tex=X)] ,若 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ki8mSYM4-1658310967783)(https://www.zhihu.com/equation?tex=x_1%E2%89%A0x_2)] ,则 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FVURK05n-1658310967783)(https://www.zhihu.com/equation?tex=f%28x_1%29%E2%89%A0f%28x_2%29)],称 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-g3vhrYFt-1658310967784)(https://www.zhihu.com/equation?tex=f)] 为单射。
  2. 满射:任给 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KFhLY2cI-1658310967785)(https://www.zhihu.com/equation?tex=y)] 属于 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IYuNq6qc-1658310967785)(https://www.zhihu.com/equation?tex=Y)] ,都存在 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-eFoyYMyG-1658310967785)(https://www.zhihu.com/equation?tex=x)] 属于 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZvqarXJ-1658310967786)(https://www.zhihu.com/equation?tex=X)] 使得 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kaCm0rii-1658310967786)(https://www.zhihu.com/equation?tex=f%28x%29+%3D+y)] ,称 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sjIOLUc0-1658310967786)(https://www.zhihu.com/equation?tex=f)] 为满射。
  3. 双射:若 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KdYtGCLa-1658310967787)(https://www.zhihu.com/equation?tex=f)] 既是单射又是满射,称 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qw3ptYZJ-1658310967787)(https://www.zhihu.com/equation?tex=f)] 为双射,也叫一一对应。
代数系统

非空集合 S 和 S 上 k 个一元或二元运算 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1av6ziMW-1658310967788)(https://www.zhihu.com/equation?tex=f_1%2C+f_2%2C+…%2C+f_k)] 组成的系统称为代数系统,简称代数

代数系统同构

两个代数系统同构必须满足以下条件:

  1. 它们是同类型的代数系统;
  2. 它们的集合基数相等(等势);
  3. 运算定义法则相同。
半群、群、交换群(阿贝尔群)
  • 半群——满足结合律的代数系统
  • ——具有单位元逆元的半群
  • 交换群/阿贝尔群:群 G 中的二元运算可交换
格、有补格、布尔代数

设 L 是非空集合, [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5XwTZdfL-1658310967788)(https://www.zhihu.com/equation?tex=%2B)] 和 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yk4Ho4wR-1658310967788)(https://www.zhihu.com/equation?tex=%5Ccirc)] 是 L 上的两个二元运算,如果它们满足交换律、结合律和吸收律,则称代数系统 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Iq8o1b86-1658310967789)(https://www.zhihu.com/equation?tex=%3CL%2C%2B%2C%5Ccirc%3E)] 是,也称代数格

设 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8PQrIA7O-1658310967789)(https://www.zhihu.com/equation?tex=%3CL%2C%5Cland%2C%5Clor%2C0%2C1%3E)] 是有界格,若 L 中所有元素都有补元存在,则称 L 为有补格

如果一个格是有补分配格。则称它为布尔格布尔代数

n阶完全图、n阶竞赛图、n阶k正则图
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uqGT9dbi-1658310967790)(https://www.zhihu.com/equation?tex=n%28n%5Cgeqslant1%29)] 阶无向完全图——每个顶点与其余顶点均相邻的无向简单图,记作 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IyyKWm44-1658310967790)(https://www.zhihu.com/equation?tex=K_n)] .
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KKUm6lCI-1658310967790)(https://www.zhihu.com/equation?tex=n%28n%5Cgeqslant1%29)] 阶有向完全图——每对顶点之间均有两条方向相反的有向边的有向简单图。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qGzO3m5X-1658310967791)(https://www.zhihu.com/equation?tex=n%28n%5Cgeqslant1%29)] 阶竞赛图——基图为 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hs73ISw9-1658310967791)(https://www.zhihu.com/equation?tex=K_n)] 的有向简单图。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JKbd0wPS-1658310967792)(https://www.zhihu.com/equation?tex=n%28n%5Cgeqslant1%29)] 阶 k 正则图——每个顶点都有相同数目的邻居的图。
欧拉回路、哈密顿回路

欧拉回路:经过图中每条边一次且仅一次并且遍历图中的每个顶点回路(通路),称为欧拉回路(欧拉通路)。存在欧拉回路的图称为欧拉图

  • 无向图 G 有欧拉回路,当且仅当 G 是连通图且无奇度顶点;
  • 有向图 G 有欧拉通路,当且仅当 G 是连通图且恰好有两个奇度顶点。这两个奇度顶点是欧拉通路的端点。

哈密顿回路:经过图中每个顶点一次且仅一次的回路(通路)称为哈密顿回路(通路)。存在哈密顿回路的图称为哈密顿图

BkoDLn.png

命题
  • 命题:能够判断真假的陈述句。
  • 命题分类 原子(简单)命题 —— 不能再分解为更简单命题的命题。 复合命题 —— 由原子命题通过命题联结词构成的命题。
联结词
  • 非 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fFSuW1CQ-1658310967792)(https://www.zhihu.com/equation?tex=%5Clnot)]
  • 合取 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lXf2k7fE-1658310967792)(https://www.zhihu.com/equation?tex=%5Cland)]
  • 析取 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-uLoiINdx-1658310967793)(https://www.zhihu.com/equation?tex=%5Clor)]
  • 蕴涵 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EvKC6wpz-1658310967793)(https://www.zhihu.com/equation?tex=%5Cto)]
  • 等价 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2uYPk3sU-1658310967794)(https://www.zhihu.com/equation?tex=%5Cleftrightarrow)]

编译原理

编译程序/编译器

把计算机高级语言 (源语言)编写的程序(源程序)翻译成该计算机的汇编语言或机器语言(目标语言)书写的程序(目标程序)的计算机程序称为编译器(或编译程序)。

图灵机

所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

编译器逻辑结构

源程序–>词法分析–>语法分析–>语义分析–>中间代码–>代码优化–>目标代码

词法分析器的输出

token序列,每个token包括两个方面的内容:token = 字符串(词义)+ 类型(词法)。

正则表达式

正则表达式是用特定的运算符及运算对象按规则构造的表达式。每个正规表达式匹配一个字符串的集合(称为正规集)。正规表达式是一种技术手段:用有限的表达式去解决无限个字符串匹配的问题。它是描述语言词法规则的形式化工具。

有限自动机

有限自动机可以描述输入串被识别的过程,可以根据有限自动机构造词法分析程序。正规式和有限自动机之间可以相互转换,它们之间存在着等价性。

乔姆斯基文法
  • 0型文法:若文法G中任一产生式α→β,都有α∈(VN∪VT)+,β∈(VN∪VT)* ,则称G为0型文法。
  • 1型文法(上下文有关文法):若文法G中任一产生式α→β,都有α∈(VN∪VT)+,β∈(VN∪VT)* |β|≥|α|, 仅仅 S→ε除外,则称G为1型文法。
  • 2型文法:若文法G中任一产生式α→β,都有α∈VN, β∈(VN∪VT)* ,则称G为2型文法,也称为上下文无关文法。(对程序设计语言最有用)
  • 3型文法:通常,把右线性文法及左线性文法统称为3型文法或正规文法
语法分析
  1. 自上而下的语法分析(LL 、递归下降)

    LL (1)分析方法是一种自上而下的语法分析方法:

    • 第1个“L”指的是由左向右地处理输入;
    • 第2个“L”指的是它为输入串找出一个最左推导;
    • 括号中的数字1意味着它使用输入单词序列中的一个单词预测分析的动作。
  2. 自下而上的语法分析(LR)

    LR分析法是一种有效的自下而上的语法分析技术

    1. L是指自左(Left)向右分析输入单词序列;
    2. R是指分析过程都是构造最右(Right)推导的逆过程(规范归约);
    3. 括号中的k是指在决定当前分析动作时向右看的单词个数。

数据库

范式

第一范式:符合1NF的关系中的每个属性都不可再分

第二范式:2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

第三范式:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

BC范式:BC范式在2NF的基础之上,消除了所有属性对于码的传递函数依赖。

事务的特性
  • 原子性(Atomicity)
    事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。
  • 一致性(Consistency)
    事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。
  • 隔离性(Isolation)
    一个事务所做的修改在最终提交以前,对其它事务是不可见的。
  • 持久性(Durability)
    一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。

拉通路)。存在欧拉回路的图称为欧拉图**。

  • 无向图 G 有欧拉回路,当且仅当 G 是连通图且无奇度顶点;
  • 有向图 G 有欧拉通路,当且仅当 G 是连通图且恰好有两个奇度顶点。这两个奇度顶点是欧拉通路的端点。

哈密顿回路:经过图中每个顶点一次且仅一次的回路(通路)称为哈密顿回路(通路)。存在哈密顿回路的图称为哈密顿图

BkoDLn.png

命题
  • 命题:能够判断真假的陈述句。
  • 命题分类 原子(简单)命题 —— 不能再分解为更简单命题的命题。 复合命题 —— 由原子命题通过命题联结词构成的命题。
联结词
  • 非 [外链图片转存中…(img-fFSuW1CQ-1658310967792)]
  • 合取 [外链图片转存中…(img-lXf2k7fE-1658310967792)]
  • 析取 [外链图片转存中…(img-uLoiINdx-1658310967793)]
  • 蕴涵 [外链图片转存中…(img-EvKC6wpz-1658310967793)]
  • 等价 [外链图片转存中…(img-2uYPk3sU-1658310967794)]

编译原理

编译程序/编译器

把计算机高级语言 (源语言)编写的程序(源程序)翻译成该计算机的汇编语言或机器语言(目标语言)书写的程序(目标程序)的计算机程序称为编译器(或编译程序)。

图灵机

所谓的图灵机就是指一个抽象的机器,它有一条无限长的纸带,纸带分成了一个一个的小方格,每个方格有不同的颜色。有一个机器头在纸带上移来移去。机器头有一组内部状态,还有一些固定的程序。在每个时刻,机器头都要从当前纸带上读入一个方格信息,然后结合自己的内部状态查找程序表,根据程序输出信息到纸带方格上,并转换自己的内部状态,然后进行移动。

编译器逻辑结构

源程序–>词法分析–>语法分析–>语义分析–>中间代码–>代码优化–>目标代码

词法分析器的输出

token序列,每个token包括两个方面的内容:token = 字符串(词义)+ 类型(词法)。

正则表达式

正则表达式是用特定的运算符及运算对象按规则构造的表达式。每个正规表达式匹配一个字符串的集合(称为正规集)。正规表达式是一种技术手段:用有限的表达式去解决无限个字符串匹配的问题。它是描述语言词法规则的形式化工具。

有限自动机

有限自动机可以描述输入串被识别的过程,可以根据有限自动机构造词法分析程序。正规式和有限自动机之间可以相互转换,它们之间存在着等价性。

乔姆斯基文法
  • 0型文法:若文法G中任一产生式α→β,都有α∈(VN∪VT)+,β∈(VN∪VT)* ,则称G为0型文法。
  • 1型文法(上下文有关文法):若文法G中任一产生式α→β,都有α∈(VN∪VT)+,β∈(VN∪VT)* |β|≥|α|, 仅仅 S→ε除外,则称G为1型文法。
  • 2型文法:若文法G中任一产生式α→β,都有α∈VN, β∈(VN∪VT)* ,则称G为2型文法,也称为上下文无关文法。(对程序设计语言最有用)
  • 3型文法:通常,把右线性文法及左线性文法统称为3型文法或正规文法
语法分析
  1. 自上而下的语法分析(LL 、递归下降)

    LL (1)分析方法是一种自上而下的语法分析方法:

    • 第1个“L”指的是由左向右地处理输入;
    • 第2个“L”指的是它为输入串找出一个最左推导;
    • 括号中的数字1意味着它使用输入单词序列中的一个单词预测分析的动作。
  2. 自下而上的语法分析(LR)

    LR分析法是一种有效的自下而上的语法分析技术

    1. L是指自左(Left)向右分析输入单词序列;
    2. R是指分析过程都是构造最右(Right)推导的逆过程(规范归约);
    3. 括号中的k是指在决定当前分析动作时向右看的单词个数。

数据库

范式

第一范式:符合1NF的关系中的每个属性都不可再分

第二范式:2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

第三范式:3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

BC范式:BC范式在2NF的基础之上,消除了所有属性对于码的传递函数依赖。

事务的特性
  • 原子性(Atomicity)
    事务被视为不可分割的最小单元,要么全部提交成功,要么全部失败回滚。
  • 一致性(Consistency)
    事务执行前后都保持一致性状态。在一致性状态下,所有事务对一个数据的读取结果都是相同的。
  • 隔离性(Isolation)
    一个事务所做的修改在最终提交以前,对其它事务是不可见的。
  • 持久性(Durability)
    一旦事务提交,则其所做的修改将会永远保存到数据库中。即使系统发生崩溃,事务执行的结果也不能丢失。可以通过数据库备份和恢复来保证持久性。
  • 24
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值