OSPF的多区域特性 (电子科技大学TCP/IP实验三)
一.实验目的
1、掌握OSPF 协议中区域的类型、特征和作用
2、掌握OSPF 路由器的类型、特征和作用
3、掌握OSPF LSA 分组的类型、特征和作用
4、理解OSPF 区域类型、路由器类型和OSPF LSA 分组类型间的相互关系
二.预备知识
1、静态路由选择和动态路由选择
2、内部网关协议和外部网关协议
3、链路状态路由选择
三.实验原理
OSPF 协议(RFC 2328)是一个基于链路状态路由选择的内部网关协议:路由器仅在网络拓扑变化时使用洪泛法(flooding)将自己的链路状态更新信息扩散到整个自治系统中。
为了增强OSPF 协议的可伸缩能力(Scalability),OSPF 协议引入了区域的概念来有效并及时的处理路由选择。OSPF 区域是包含在AS 中的一些网络、主机和路由器的集合, 自治系统中所有OSPF 区域必须连接到一个主干区域(Area 0)上。
区域内的OSPF 路由器(内部路由器,IR)使用洪泛法(flooding)传送本区域内的链路状态信息,区域边界的 OSPF 路由器(区域边界路由器,ABR)将本区域的信息汇总发给其他区域,自治系统边界的 OSPF 路由器(自治系统边界路由器,ASBR)将自治系统外的路由(外部路由)发布在自治系统中。主干区域中的 OSPF 路由器也称为“主干路由器”(BR)。ABR 不能向OSPF 残桩区域(Stub Area)通告外部路由。在多址网络中,为了避免不必要的链路状态洪泛,需要选举 1 个指定路由器(DR)和 1 个备份指定路由器(BDR)。
OSPF 协议有 5 种类型的报文,它们被直接封装在 IP 分组中多播发送。
- 问候(Hello)报文:用来建立并维护 OSPF 邻接关系。在建立了邻接关系后,
OSPF 路由器会定期发送Hello 报文,来测试邻站的可达性。
- 数据库描述(DBD)报文:描述OSPF 路由器的链路状态数据库的概要信息, 即数据库中每一行的标题,它在两台相邻路由器彼此建立邻接关系时发送的。
- 链路状态请求(LSR)报文:由需要若干条特定路由信息的路由器发送出的, 它的回答是 LSU 报文。新接入的路由器在收到 DBD 报文后,可以使用 LSR 报文请求关于某些路由的更多信息。
- 链路状态更新(LSU)报文:OSPF 的核心。OSPF 路由器使用 LSU 报文通告链路状态更新信息(即链路状态通告,LSA),每一个 LSU 报文可包含几个LSA。 OSPF 协议的 LSA 有 5 种常用类型:路由器链路 LSA、网络链路 LSA、汇总链路到网络 LSA、汇总链路到 ASBR LSA 和外部链路LSA。这 5 种类型的 LSA 由不同类型的OSPF 路由器产生,在特定类型的区域范围内扩散。
- 链路状态确认(LSAck)报文:用来确认每一个收到的 LSU 报文,使得OSPF
协议的路由选择更加可靠。
四.实验内容
实验拓扑中 Dynamips 软件模拟实现的路由器R1~R6 互联了 2 个自治系统(AS 10 和 AS 20),路由器之间使用 OSPF 协议进行路由选择。AS 10 中有 5 个子网,划分了 3个区域:Area 0、Area 1 和 Area 2,其中 Area 2 是一个 Stub 区域。AS 20 中有 1 个子网, 其路由信息将以OSPF 的外部路由方式发布到AS 10 的OSPF 网络中。 实验者使用 Dynamips 软件捕获子网 1、2、3 上传送的 OSPF 报文,使用 Wireshark 软件查看捕获的 OSPF 报文,分析 OSPF 协议的路由更新过程,考察 OSPF 协议中不同类型的区域、路由器和 LSA 的特征和作用。 ![]() |
实验拓扑中 Dynamips 软件模拟实现的路由器R1~R6 互联了 2 个自治系统(AS 10 和 AS 20),路由器之间使用 OSPF 协议进行路由选择。AS 10 中有 5 个子网,划分了 3个区域:Area 0、Area 1 和 Area 2,其中 Area 2 是一个 Stub 区域。AS 20 中有 1 个子网, 其路由信息将以OSPF 的外部路由方式发布到AS 10 的OSPF 网络中。
实验者使用 Dynamips 软件捕获子网 1、2、3 上传送的 OSPF 报文,使用 Wireshark 软件查看捕获的 OSPF 报文,分析 OSPF 协议的路由更新过程,考察 OSPF 协议中不同类型的区域、路由器和 LSA 的特征和作用。
五.实验步骤
实验步骤详见TCP//IP实验指导书。由于步骤过长,就在此不在赘述。
六、实验数据及结果分析
1、步骤 2 中根据 R1 路由表和 R4 路由表中的哪些信息可以确保实验网中的 OSPF
协议已经收敛?为什么?
1.路由表项的数目,稳定之后。路由表项的数目应该和整个网络网络的数目一致。
2.多次输入show ip route 命之后,显示的路由表项没有变化。
2、分析执行步骤 4 之前在 4 个子网上捕获的OSPF 报文。记录子网 2、3、4 和 5 上每一台路由器发送的 1 个OSPF Hello 报文的如下信息:
步骤3:子网2 | ||||
路由器 | R1 | R2 | ||
IP分组首部 | 源IP | 172.16.2.1 | 172.16.2.2 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 1.1.1.1 | 2.2.2.2 | |
区域ID | 0.0.0.1 | 0.0.0.1 | ||
Hello报文 | 网络掩码 | 255.255.255.252 | 255.255.255.252 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 0.0.0.0 | 0.0.0.0 | ||
BDR | 0.0.0.0 | 0.0.0.0 | ||
邻居1 | 2.2.2.2 | 1.1.1.1 | ||
邻居2 | - | - |
步骤3:子网3 | ||||
路由器 | R2 | R3 | ||
IP分组首部 | 源IP | 172.16.3.2 | 172.16.3.3 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 2.2.2.2 | 3.3.3.3 | |
区域ID | 0.0.0.1 | 0.0.0.1 | ||
Hello报文 | 网络掩码 | 255.255.255.248 | 255.255.255.248 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 0.0.0.0 | 0.0.0.0 | ||
BDR | 0.0.0.0 | 0.0.0.0 | ||
邻居1 | 3.3.3.3 | 2.2.2.2 | ||
邻居2 | - | - |
步骤3:子网4 | ||||
路由器 | R3 | R4 | R5 | |
IP分组首部 | 源IP | 172.16.4.3 | 172.16.4.4 | 172.16.4.5 |
目的IP | 224.0.0.5 | 224.0.0.5 | 224.0.0.5 | |
OSPF报文首部 | 路由器ID | 3.3.3.3 | 4.4.4.4 | 5.5.5.5 |
区域ID | 0.0.0.0 | 0.0.0.0 | 0.0.0.0 | |
Hello报文 | 网络掩码 | 255.255.255.0 | 255.255.255.0 | 255.255.255.0 |
Hello间隔 | 10s | 10s | 10s | |
优先级 | 1 | 1 | 1 | |
失效间隔 | 40s | 40s | 40s | |
DR | 172.16.4.5 | 172.16.4.5 | 172.16.4.5 | |
BDR | 172.16.4.4 | 172.16.4.4 | 172.16.4.4 | |
邻居1 | 5.5.5.5 | 5.5.5.5 | 4.4.4.4 | |
邻居2 | 4.4.4.4 | 3.3.3.3 | 3.3.3.3 |
步骤3:子网5 | ||||
路由器 | R5 | R6 | ||
IP分组首部 | 源IP | 172.16.5.5 | 172.16.5.6 | |
目的IP | 224.0.0.5 | 224.0.0.5 | ||
OSPF报文首部 | 路由器ID | 5.5.5.5 | 6.6.6.6 | |
区域ID | 0.0.0.2 | 0.0.0.2 | ||
Hello报文 | 网络掩码 | 255.255.255.0 | 255.255.255.0 | |
Hello间隔 | 10s | 10s | ||
优先级 | 1 | 1 | ||
失效间隔 | 40s | 40s | ||
DR | 172.16.5.6 | 172.16.5.6 | ||
BDR | 172.16.5.5 | 172.16.5.5 | ||
邻居1 | 6.6.6.6 | 5.5.5.5 | ||
邻居2 | - | - |
【分析】
- 实验中的OSPF hello 间隔是多少秒?
10s
2)是否 4 个子网上都选举有 DR 和 BDR?为什么?根据记录中的 DR 和 BDR 信息,用路由器编号写出图 A 中子网 4 上的 DR 和 BDR。在本实验的后续步骤中,各子网上的 DR 和 BDR 是否会改变?
1.不是每一个子网中都是有DR和BDR,只有在转接网络才需要指定路由器和备份指定路由器,而点到点链路和残桩链路不需要。
2.子网4中的DR是5.5.5.5,BDR是4.4.4.4
3.在本实验后续的步骤之中不会改变,因为子网4和子网5在后续的操作步骤中网络拓扑没有发生变化,因此DR和BDR不会改变。
3、分析从执行步骤 4 开始到执行步骤 5 之前在 4 个子网上捕获的OSPF 报文。按报文的捕获顺序记录每个子网上捕获到的OSPF 报文概要,要求:从第 1 个非类型1(即 hello 报文)的 OSPF 报文开始记录,包括后续的类型 1(hello)报文,一直记录到最后 1 个非类型 1 的OSPF 报文。记录的信息如下:
步骤4:子网:2 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.2.1 | 224.0.0.5 | LS Update | 1.1.1.1 | 0.0.0.1 | 19:01:44 |
172.16.2.2 | 224.0.0.5 | LS Acknowledge | 2.2.2.2 | 0.0.0.1 | 19:01:46 |
步骤4:子网:3 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.3.2 | 224.0.0.5 | LS Update | 2.2.2.2 | 0.0.0.1 | 19:01:44 |
172.16.3.3 | 224.0.0.5 | LS Acknowledge | 3.3.3.3 | 0.0.0.1 | 19:01:46 |
步骤4:子网:4 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.4.3 | 224.0.0.6 | LS Update | 3.3.3.3 | 0.0.0.0 | 19:01:49 |
172.16.4.5 | 224.0.0.5 | LS Update | 5.5.5.5 | 0.0.0.0 | 19:01:49 |
172.16.4.3 | 224.0.0.5 | Hello Packet | 3.3.3.3 | 0.0.0.0 | 19:01:51 |
172.16.4.4 | 224.0.0.5 | LS Acknowledge | 4.4.4.4 | 0.0.0.0 | 19:01:51 |
步骤4:子网:5 | |||||
IP分组首部 | OSPF报文首部 | 捕获时间 | |||
源IP | 目的IP | 类型 | 路由器ID | 区域ID | Time |
172.16.5.5 | 224.0.0.5 | LS Update | 5.5.5.5 | 0.0.0.2 | 19:01:49 |
172.16.5.6 | 224.0.0.5 | LS Acknowledge | 6.6.6.6 | 0.0.0.2 | 19:01:51 |
【分析】
- 为什么会在实验中捕获到两种不同目的 IP 地址(224.0.0.6 和 224.0.0.5)的LSU 报文?
一般情况下都是组播地址244.0.0.5,但是在转接链路中,非BD和BDR的路由器只与DR/BDR是邻接关系,LSA只需要发送给DR/BDR即可,所以需要244.0.0.6这个组播地址。DR/BDR以目的IP为244.0.0.5发送LSU报文。在子网4当中,即存在DR/BDR,也存在非DR/BDR的路由器,所以会捕获到两种不同目的IP地址的LSU报文。
- OSPF 要求路由器确认收到的 LSA,即对收到的每个 LSU 报文进行确认。为什么在子网 4 上捕获到了 2 个 LSU 报文,但 LSAck 报文却只有 1 个?
OSPF对报文的确认方式有两种:显式和隐式。
在子网4中,R3先对收到的LSA进行洪泛,但是R3不是指定路由器,目的IP是指定路由器的组播地址,所以收到该LSU的R5用过LSU洪泛进行隐式确认。此时R4收到目的224.0.0.5的LSU,知道是指定路由器发的,进行显式的回复。所以在子网4中有两个LSU,却只有一个LSAck。
4、按报文捕获顺序,记录从执行步骤 4 开始到执行步骤 5 之前在 4 个子网上捕获到的所有 LSU 报文的如下信息。
步骤4:子网:2 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 1s | Router-LSA | 1.1.1.1 | 1.1.1.1 | 0x80000003 | 0x7c9a |
步骤4:子网:3 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 2s | Router-LSA | 1.1.1.1 | 1.1.1.1 | 0x80000003 | 0x7c9a |
步骤4:子网:4 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 0x80000002 | 0x9cd5 | |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 0x80000002 | 0x9cd5 |
步骤4:子网:5 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 序号 | 校验和 | …. |
1 | 3600s | Summary-LSA(IP network) | 172.16.1.0 | 5.5.5.5 | 0x80000002 | 0x7eed |
【分析】
1)同一 Area 内不同发送者发送的LSU 报文(例如:Area 1 中子网 2 上 R1 发送的 LSU 报文和子网 3 上R2 发送的 LSU 报文)中携带的 LSA 内容是否完全一致?在 LSU 报文中,1 个 LSA 首部中的通告路由器、该 LSU 报文的OSPF 首部中的路由器 ID,以及封装该 OSPF 报文的 IP 分组首部中的源 IP 地址,它们指的是什么路由器?是否是同一台路由器?
(1)同一个区域上捕获到了不同发送者发送的LSU报文完全一致。
(2)LSA首部中的通告路由器是始发这条LSA通告的路由器,该LSU报文的OSPF首部中的路由器ID是发送这个LSU的路由器,封装该 OSPF 报文的 IP 分组首部中的源 IP 地址也是发送这个LSU的路由器。
(3)后面两者同一台路由器,但是三者不一定是同一台路由器。
2)每个子网上捕获到的 LSU 报文中的 LSA 是哪种类型的 LSA?每种类型的LSA 是由图 B 中的哪台路由器始发的?该路由器属于哪种类型的 OSPF 路由器?这些LSA 分别在图B 的哪些区域中洪泛?通告的是其洪泛区域内部的链路信息还是该区域外部的链路信息?
(1)子网2:
捕获的LSA类型是路由器链路LSA(Router-LSA)
始发路由器:R1
路由器类型:IR(内部路由器)
洪泛区域:Area1
通告的是其洪泛区域内部的链路信息
(2)子网3:
捕获的LSA类型是路由器链路LSA(Router-LSA)
始发路由器:R1
路由器类型:IR(内部路由器)
洪泛区域:Area1
通告的是其洪泛区域内部的链路信息
(3)子网4:
捕获的LSA类型是汇总链路到网络LSA(Summary-LSA(IP network))
始发路由器:R3
路由器类型:BR(主干路由器),ABR(区域边界路由器)
洪泛区域:Area0
通告的是该区域外部的链路信息
(4)子网5:
捕获的LSA类型是汇总链路到网络LSA(Summary-LSA(IP network))
始发路由器:R5
路由器类型:BR(主干路由器),ABR(区域边界路由器)
洪泛区域:Area2
通告的是该区域外部的链路信息
3)除路由器 R1 外,其它路由器可以根据收到的 LSA 中的什么信息判定子网 1
不可达?(提示:对比记录 6 的信息)
R2和R3根据收到的LSA消息没有子网1 的信息可以判断不可达;其他路由器根据子网1 的Metric值为16777215判断子网1不可达。
4)如果在图B 中,将子网 1 接到 R3 上,并且让子网 1 处于区域 0 中,那么此时在各个区域中会出现哪些路由器始发的哪些类型的 LSA?
Area0: R3始发的路由器链路LSA(Router-LSA)
Area1: R3始发的汇总链路到网络LSA(Summary-LSA(IP network))
Area2: R5始发的汇总链路到网络LSA(Summary-LSA(IP network))
5、按报文捕获顺序,记录从执行步骤 5 开始到执行步骤 6 之前在 4 个子网上捕获到的所有 LSU 报文,记录信息如下
步骤5:子网:2 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Router-LSA | 1.1.1.1 | 1.1.1.1 | - | - | |
1 | 3s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 | |
1 | 2s | Summary-LSA(ASBR) | 4.4.4.4 | 3.3.3.3 | 0.0.0.0 | 1 |
步骤5:子网:3 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 2s | Router-LSA | 1.1.1.1 | 1.1.1.1 | - | - | |
1 | 2s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 | |
1 | 1s | Summary-LSA(ASBR) | 4.4.4.4 | 3.3.3.3 | 0.0.0.0 | 1 |
步骤5:子网:4 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 255.255.255.0 | 129 | |
1 | 2s | Summary-LSA(IP network) | 172.16.1.0 | 3.3.3.3 | 255.255.255.0 | 129 | |
1 | 1s | Router-LSA | 4.4.4.4 | 4.4.4.4 | - | - | |
1 | 1s | AS-External-LSA(ASBR) | 20.0.0.0 | 4.4.4.4 | 255.255.0.0 | 20 |
步骤5:子网:5 | |||||||
LSU首部 | LSA#1首部 | LSA#2首部 | |||||
LSA数量 | 寿命 | 类型值 | 链路状态ID | 通告路由器 | 网络掩码 | 度量 | …. |
1 | 1s | Summary-LSA(IP network) | 172.16.1.0 | 5.5.5.5 | 255.255.255.0 | 130 |
【分析】
- 为什么子网 5 上只有类型 3 的 LSA?
因为子网5的拓扑结构没有发生变化,并且不在主干区域,且其为残桩区域。
- Area 1(子网 2、子网 3)中的类型 1 LSA 所通告的拓扑变化,在 Area 0( 子网 4)和 Area 2(子网 5)中分别使用哪种类型的 LSA 进行通告?
类型3
- Area 0(子网 4)中的类型 1 LSA 所通告的拓扑变化,在Area 1(子网 2、子网 3)中使用哪种类型的 LSA 进行通告?
类型4
- Area 0(子网 4)中的类型 5 LSA 所通告的拓扑变化,在Area 1(子网 2、子网 3)中使用哪种类型的 LSA 进行通告?
类型5
- 子网 2、3 和 4 上的类型 5 LSA 信息(包括 LSA 首部及其数据部分)是否完全一致?如有不同,请指出不同之处,并解释不同的原因?
首部和数据部分都会有所不同。
首部部分:LSA首部信息不同的主要是源路由器和OSPF的区域,
数据部分:数据部分OSPF的寿命和相关掩码也不同。
【思考题】
1、OSPF 协议有 5 种类型的报文,并能通告 5 种类型的 LSA。本实验中捕获到了哪些类型的 OSPF 报文和哪些类型的 LSA?请解释本实验中不能捕获到某些类型的 OSPF 报文和某些类型的 LSA 的原因。
1)本实验中捕获到了OSPF协议的Hello报文、LSU报文和LSAck报文,没有捕获到LSR和DBD报文。DBD报文是在两台相邻路由器建立邻接关系的时发送的。但是在本次实验的过程中,捕获报文之前,相邻路由器都已经建立好关系。所以在实验过程中DBD报文不会产生。因为LSR报文是链路状态数据库同步过程中根据收到的DBD报文产生的,DBD报文没有产生,所以LSR报文不会产生。
2)本次实验过程中捕获到了1,3,4,5的LSA,没有捕获到类型2(Network-LSA)的LSA。因为类型2(Network-LSA)是由DR在转接链路内发布其所在Transit network上其它路由器信息。而在实验中两次网络拓扑变化都没有发生在子网4内,所以不会产生类型2。
七、实验结论
1、本实验中,路由器 R1~R6 分别属于哪种类型的 OSPF 路由器?
R1:内部路由器
R2:内部路由器
R3:区域边界路由器,主干路由器
R4:在步骤五之前属于主干路由器,内部路由器;在步骤五之后属于主干路由器和AS边界路由器。
R5:主干路由器,区域边界路由器
R6:内部路由器
2、结合实验拓扑图和小组捕获的所有 OSPF 报文,总结 5 种 LSA 分别由哪种类型的 OSPF 路由器产生?通告了哪些信息?能在哪些区域范围内洪泛?
1)路由器链路LSA(Router-LSA):由网络中的每一台路由器产生,在本区域内发布所有邻居及其对应链路的信息,只能在始发区域洪泛(本区域)
2)网络链路LSA(Network-LSA):由DR(指定路由器)产生,由DR在本区域内发布其所在Transit network上其它路由器信息,只能在始发区域洪泛(本区域)
3)Summary–LSA(汇总链路到网络):由ABR(区域边界路由器)产生,在其所属的每个区域里中发布到达其它区域的路由信息,在这个区域内洪泛,但不能在残桩区域洪泛。
4)Summary–LSA (汇总链路到ASBR) :由ABR(区域边界路由器)产生,在本AS内的所有区域中发布到达ASBR的路径信息,可以洪泛到本AS内部所有非残桩区域中。
5)AS–external–LSA:由ASBR产生,在本AS内的某些区域中发布到达AS以外网络的路径信息
八、总结及心得体会
1.通过本次实验体会到了OSPF路由的过程,包括OSPF各种LSA的类型和OSPF的四种报文类型,并对每一种报文进行了分析,对OSPF的工作流程有了更加深刻的认识。
2.同时
九、对本实验过程及方法、手段的改进建议
1.建议可以对子网4里面的网络拓扑进行改变,让学生体会一下类型2的LSA的变化。
相关文章:

OSPF的多区域特性 (电子科技大学TCP/IP实验三)
一.实验目的 1、掌握OSPF 协议中区域的类型、特征和作用 2、掌握OSPF 路由器的类型、特征和作用 3、掌握OSPF LSA 分组的类型、特征和作用 4、理解OSPF 区域类型、路由器类型和OSPF LSA 分组类型间的相互关系 二.预备知识 1、静态路由选择和动态路…...

(四十四)多个事务更新同一行数据时,是如何加锁避免脏写的?
之前我们已经用很多篇幅给大家讲解了多个事务并发运行的时候,如果同时要读写一批数据,此时读和写时间的关系是如何协调的,毕竟要是你不协调好的话,可能就会有脏读、不可重复读、幻读等一系列的问题。 简单来说,脏读、…...

【数据库】第十二章 数据库管理
第12章 数据库管理 数据库的物理存储 关于内存、外存、磁盘、硬盘、软盘、光盘的区别_Allenzyg的博客-CSDN博客_磁盘和硬盘的区别 数据库记录在磁盘上的存储 定长,变长跨块,非跨快 文件的组织方方法: 无序记录文件(堆文件heap或pile file…...

Redis源码---整体架构
目录 前言 Redis目录结构 前言 deps目录 src 目录 tests 目录 utils 目录 重要的配置文件 Redis 功能模块与源码对应 前言 服务器实例 数据库数据类型与操作 高可靠性和高可扩展性 辅助功能 前言 以先面后点的方法推进无特殊说明,都是基于 Redis 5.0.…...

基于springboot+vue的校园招聘系统
博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…...

SAP MM学习笔记1-SAP中扩张的概念,如何将一个物料从工厂A扩张到工厂B
MM中在创建物料的时候,最低也得创建如下5个view。 基本数据1 基本数据2 购买管理 会计1 会计2 1,扩张是什么 有时候,你想增加其他的View,比如保管场所 等,你不能用MM02来做编辑,要用MM01来做扩张。这就是扩…...

【Python】Numpy数组的切片、索引详解:取数组的特定行列
【Python】Numpy数组的切片、索引详解:取数组的特定行列 文章目录【Python】Numpy数组的切片、索引详解:取数组的特定行列1. 介绍2. 切片索引2.1 切片索引先验知识2.1 一维数组的切片索引2.3 多维数组的切片索引3. 数组索引(副本)…...
2023年全国最新交安安全员精选真题及答案6
百分百题库提供交安安全员考试试题、交安安全员考试预测题、交安安全员考试真题、交安安全员证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻松过关。 51.安全生产资金保障制度建立后关键在于落实,各施工企业在落实安全生…...

JavaScript 闭包【自留】
闭包的概念理解 闭包的定义 ✅ 这里先来看一下闭包的定义,分成两个:在计算机科学中和在JavaScript中。 ✅ 在计算机科学中对闭包的定义(维基百科): 闭包(英语:Closure),又称词法闭包(Lexical Closure)或函数闭包(function closures);是在支持头等函数…...

【MySQL】什么是意向锁 IS IX 及值得学习的思想
文章目录前言行锁和表锁使用意向锁意向锁的算法意向锁的思想JDK 中相似的思想前言 之前看 MySQL 都刻意忽略掉了 IS 和 IX 锁,今天看 《MySQL 是怎样运行的》,把意向锁讲的很通透,本篇博文提炼一下思想。 I: Intention Lock(意向…...
python多线程实现
用于线程实现的Python模块 Python线程有时称为轻量级进程,因为线程比进程占用的内存少得多。 线程允许一次执行多个任务。 在Python中,以下两个模块在一个程序中实现线程 - _thread模块threading模块 这两个模块之间的主要区别在于_thread模块将线程视…...

macOS使用CodeRunner快速配置fortran环境
个人网站:xzajyjs.cn 由于一些项目的缘故,需要有fortran的需求,但由于是M1 mac的缘故,不能像windows那样直接使用vsivf这种经典配置。搜了一下网上主流的跨平台方案,主要是gfortran,最近用Coderunner(主要…...

【云原生】k8s 离线部署讲解和实战操作
文章目录一、概述二、前期准备1)节点信息2)修改主机名和配置hosts3)配置ssh互信4)时间同步5)关闭防火墙6)关闭 swap7)禁用SELinux8)允许 iptables 检查桥接流量三、开始部署1&#x…...
【Kubernetes】第十一篇 - 滚动发布的介绍与实现
一,前言 上一篇,介绍了灰度发布和流量切分的集中方式,以及如何实现 k8s 的灰度发布; 本篇,介绍滚动发布的实现; 二,滚动发布简介 滚动发布 滚动发布,则是我们一般所说的无宕机发…...
【尊享版】如何系统构建你的思维认知模型?
超友们,早上好,国庆节快乐~ 今天为你带来的分享是《如何系统构建你的思维认知模型?》,主要分为三个部分: 第一部分:【实现爆发式成长的 10 个思维模型】 第二部分:【6 个不可不知的…...
urho3D编码约定
缩进样式类似于Allman(BSD),即在控制语句的下一行使用大括号,在同一级别缩进。在switch-case语句中,case与switch语句处于相同的缩进级别。 缩进使用4个空格而不是制表符。不应保留空行上的缩进。 类和结构名称以大写…...

Overleaf推广奖励:增加合作者的数量、解锁Dropbox同步和项目修改历史
Overleaf推广奖励 Overleaf是一个LaTeX\LaTeXLATEX在线编译器,它可以让你与合作者共同在线编辑文档。但是默认的免费账号仅能邀请一个合作者。那么如何增加合作者的数量呢? Overleaf推出了一个奖励计划,你邀请其他人注册Overleaf…...

ChatGPT的互补工具Perplexity的详细使用方法(持续更新)
大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,科大讯飞比赛第三名,CCF比赛第四名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…...

【Linux驱动开发100问】如何编译Linux内核?
🥇今日学习目标:如何编译Linux内核? 🤵♂️ 创作者:JamesBin ⏰预计时间:10分钟 🎉个人主页:嵌入式悦翔园个人主页 🍁专栏介绍:Linux驱动开发100问 如何编译…...

15、条件概率、全概率公式、贝叶斯公式、马尔科夫链
条件概率定义:设A、B是两个事件,且,P(A) > 0 则称 为事件A发生的条件下事件B的条件概率对这个式子进行变形,即可得到概率的乘法公式:P(A) > 0 时,则P(B) > 0 时,则乍一看,…...
生成xcframework
打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

【JavaEE】-- HTTP
1. HTTP是什么? HTTP(全称为"超文本传输协议")是一种应用非常广泛的应用层协议,HTTP是基于TCP协议的一种应用层协议。 应用层协议:是计算机网络协议栈中最高层的协议,它定义了运行在不同主机上…...

React第五十七节 Router中RouterProvider使用详解及注意事项
前言 在 React Router v6.4 中,RouterProvider 是一个核心组件,用于提供基于数据路由(data routers)的新型路由方案。 它替代了传统的 <BrowserRouter>,支持更强大的数据加载和操作功能(如 loader 和…...

2.Vue编写一个app
1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…...

如何在看板中有效管理突发紧急任务
在看板中有效管理突发紧急任务需要:设立专门的紧急任务通道、重新调整任务优先级、保持适度的WIP(Work-in-Progress)弹性、优化任务处理流程、提高团队应对突发情况的敏捷性。其中,设立专门的紧急任务通道尤为重要,这能…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

回溯算法学习
一、电话号码的字母组合 import java.util.ArrayList; import java.util.List;import javax.management.loading.PrivateClassLoader;public class letterCombinations {private static final String[] KEYPAD {"", //0"", //1"abc", //2"…...

打手机检测算法AI智能分析网关V4守护公共/工业/医疗等多场景安全应用
一、方案背景 在现代生产与生活场景中,如工厂高危作业区、医院手术室、公共场景等,人员违规打手机的行为潜藏着巨大风险。传统依靠人工巡查的监管方式,存在效率低、覆盖面不足、判断主观性强等问题,难以满足对人员打手机行为精…...
uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)
UniApp 集成腾讯云 IM 富媒体消息全攻略(地理位置/文件) 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型,核心实现方式: 标准消息类型:直接使用 SDK 内置类型(文件、图片等)自…...
Python爬虫实战:研究Restkit库相关技术
1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的有价值数据。如何高效地采集这些数据并将其应用于实际业务中,成为了许多企业和开发者关注的焦点。网络爬虫技术作为一种自动化的数据采集工具,可以帮助我们从网页中提取所需的信息。而 RESTful API …...