当前位置: 首页 > news >正文

OSPF 协议详解:从概念原理到配置实践的全网互通实现

什么是OSPF

OSPF(开放最短路径优先)是由IETF开发的基于链路状态的自治系统内部路由协议,用来代替存在一些问题的RIP协议。与距离矢量协议不同,链路状态路由协议关心网络中链路活接口的状态(包括UP、DOWN、IP地址、掩码、带宽、利用率和延迟等),每个路由将其已知的链路状态向该区域的其他路由器通告,通过这种方式,网络上的每台路由对网络结构都会有相同的认识。随后,路由器以其为依据,使用SPF算法计算和选择路由。

OSPF协议在有组播发送能力的链路层上以组播地址发送协议包,即达到了节约资源的目的,又最大程度地减少了对其他网络设备的干扰。

OSPF将协议包直接封装在IP包中,协议号为89。由于IP协议本身是无连接的,所以OSFP传输的可靠性需要协议本身来保证。因此,OSPF协议定义了一些机制保证协议包安全可靠地传输。

OSPF工作过程

OSPF协议大致工作过程主要分为:寻找邻居、建立邻接关系、链路状态信息传递、计算路由

OSPF工作原理
  • 链路状态收集

  • 路由器通过发送 Hello 报文发现邻居,交换链路状态信息,涵盖链路、接口状态、网络类型等。

  • 链路状态数据库构建

    路由器将收集的链路状态信息存入本地链路状态数据库,数据库完整呈现网络拓扑结构。

  • 最短路径计算

    路由器以自身为根节点,运用 Dijkstra 算法,依据链路状态数据库计算至其他网络节点的最短路径。

OSPF配置与实践
实验拓扑

在这里插入图片描述

实验需求
  1. 按照拓扑图示给设备命名以及配置 IP 地址
  2. 按照图示分区域配置 OSPF ,实现全网互通
  3. 为了路由结构稳定,要求路由器使用环回口作为 Router-id,ABR 的环回口宣告进骨干区域
实验步骤
  1. 配置环回口IP(设备命名和配置 IP 地址部分省略)

    [R1]int lo0
    [R1-LoopBack0]ip add 1.1.1.1 32
    
    [R2]int lo0
    [R2-LoopBack0]ip add 2.2.2.2 32
    
    [R3]int lo0
    [R3-LoopBack0]ip add 3.3.3.3 32
    
    [R4]int lo0
    [R4-LoopBack0]ip add 4.4.4.4 32
    
    [R5]int lo0
    [R5-LoopBack0]ip add 5.5.5.5 32
    

    IP地址配置完成后,应如下图所示
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  2. 按照图示分区域配置 OSPF ,实现全网互通

    分析:实现全网互通,意味着每台路由器都要宣告本地的所有直连网段,包括环回口所在的网段。要求 ABR 的环回口宣告进骨干区域,即区域 0,同时,每台路由器手动配置各自环回口的 IP 地址作为 Router-id

    步骤 1:在路由器上分别配置 OSPF,按区域宣告所有直连网段和环回口

    [R1]ospf 1 router-id 1.1.1.1
    [R1-ospf-1]area 0
    [R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
    [R1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0 
    [R1-ospf-1-area-0.0.0.0]dis th
    #area 0.0.0.0network 1.1.1.1 0.0.0.0network 10.1.12.0 0.0.0.255
    #
    return
    [R1-ospf-1-area-0.0.0.0]area 1
    [R1-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
    [R1-ospf-1-area-0.0.0.1]dis th
    #area 0.0.0.1network 10.1.14.0 0.0.0.255
    #
    return
    
    [R2]ospf 1 router-id 2.2.2.2
    [R2-ospf-1]area 0
    [R2-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255
    [R2-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
    [R2-ospf-1-area-0.0.0.0]network 2.2.2.2 0.0.0.0
    [R2-ospf-1-area-0.0.0.0]dis th
    #area 0.0.0.0network 2.2.2.2 0.0.0.0network 10.1.12.0 0.0.0.255network 10.1.23.0 0.0.0.255
    #
    return
    
    [R3]ospf 1 router-id 3.3.3.3
    [R3-ospf-1]a 0
    [R3-ospf-1-area-0.0.0.0]network 10.1.23.0 0.0.0.255
    [R3-ospf-1-area-0.0.0.0]network 3.3.3.3 0.0.0.0
    [R3-ospf-1-area-0.0.0.0]dis th
    #area 0.0.0.0network 3.3.3.3 0.0.0.0network 10.1.23.0 0.0.0.255
    #
    return
    [R3-ospf-1-area-0.0.0.0]a 2
    [R3-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255
    [R3-ospf-1-area-0.0.0.2]dis th
    #area 0.0.0.2network 10.1.35.0 0.0.0.255
    #
    return
    
    [R4]ospf 1 router-id 4.4.4.4
    [R4-ospf-1]a 1
    [R4-ospf-1-area-0.0.0.1]network 10.1.14.0 0.0.0.255
    [R4-ospf-1-area-0.0.0.1]network 4.4.4.4 0.0.0.0
    [R4-ospf-1-area-0.0.0.1]dis th
    #area 0.0.0.1network 4.4.4.4 0.0.0.0network 10.1.14.0 0.0.0.255
    #
    return
    
    [R5]ospf 1 router-id 5.5.5.5
    [R5-ospf-1]a 2
    [R5-ospf-1-area-0.0.0.2]network 10.1.35.0 0.0.0.255
    [R5-ospf-1-area-0.0.0.2]network 5.5.5.5 0.0.0.0
    [R5-ospf-1-area-0.0.0.2]dis th
    #area 0.0.0.2network 5.5.5.5 0.0.0.0network 10.1.35.0 0.0.0.255
    #
    return
    
  3. 检查是否全网互通

    分析:检查 OSPF 是否全网互通,一个是检查邻居关系表,看邻居关系是否正常;另一个是检查路由表,看是否学习到全网路由  这里只展示 R1 的检查结果
      
    步骤 1:#display ospf peer 查看邻居关系表

    [R1]dis ospf peer OSPF Process 1 with Router ID 1.1.1.1Neighbor Brief InformationArea: 0.0.0.0        Router ID       Address         Pri Dead-Time  State             Interface2.2.2.2         10.1.12.2       1   34         Full/BDR          GE0/0Area: 0.0.0.1        Router ID       Address         Pri Dead-Time  State             Interface4.4.4.4         10.1.14.4       1   38         Full/BDR          GE0/1
    

在这里插入图片描述

[R2]dis ospf peer OSPF Process 1 with Router ID 2.2.2.2Neighbor Brief InformationArea: 0.0.0.0        Router ID       Address         Pri Dead-Time  State             Interface1.1.1.1         10.1.12.1       1   37         Full/DR           GE0/03.3.3.3         10.1.23.3       1   39         Full/BDR          GE0/1

在这里插入图片描述

[R3]dis ospf peer OSPF Process 1 with Router ID 3.3.3.3Neighbor Brief InformationArea: 0.0.0.0        Router ID       Address         Pri Dead-Time  State             Interface2.2.2.2         10.1.23.2       1   34         Full/DR           GE0/0Area: 0.0.0.2        Router ID       Address         Pri Dead-Time  State             Interface5.5.5.5         10.1.35.5       1   39         Full/BDR          GE0/1

在这里插入图片描述

[R4]dis ospf peer OSPF Process 1 with Router ID 4.4.4.4Neighbor Brief InformationArea: 0.0.0.1        Router ID       Address         Pri Dead-Time  State             Interface1.1.1.1         10.1.14.1       1   36         Full/DR           GE0/0

在这里插入图片描述

[R5]dis ospf peer OSPF Process 1 with Router ID 5.5.5.5Neighbor Brief InformationArea: 0.0.0.2        Router ID       Address         Pri Dead-Time  State             Interface3.3.3.3         10.1.35.3       1   35         Full/DR           GE0/0

在这里插入图片描述

说明:状态为FULL,说明邻接关系已建立

步骤 2:查看路由表

[R1]dis ip routing-table Destinations : 20       Routes : 20Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         Direct  0   0           127.0.0.1       InLoop0
2.2.2.2/32         O_INTRA 10  1           10.1.12.2       GE0/0
3.3.3.3/32         O_INTRA 10  2           10.1.12.2       GE0/0
4.4.4.4/32         O_INTRA 10  1           10.1.14.4       GE0/1
5.5.5.5/32         O_INTER 10  3           10.1.12.2       GE0/0
10.1.12.0/24       Direct  0   0           10.1.12.1       GE0/0
10.1.12.1/32       Direct  0   0           127.0.0.1       InLoop0
10.1.12.255/32     Direct  0   0           10.1.12.1       GE0/0
10.1.14.0/24       Direct  0   0           10.1.14.1       GE0/1
10.1.14.1/32       Direct  0   0           127.0.0.1       InLoop0
10.1.14.255/32     Direct  0   0           10.1.14.1       GE0/1
10.1.23.0/24       O_INTRA 10  2           10.1.12.2       GE0/0
10.1.35.0/24       O_INTER 10  3           10.1.12.2       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R2]dis ip routing-table Destinations : 20       Routes : 20Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTRA 10  1           10.1.12.1       GE0/0
2.2.2.2/32         Direct  0   0           127.0.0.1       InLoop0
3.3.3.3/32         O_INTRA 10  1           10.1.23.3       GE0/1
4.4.4.4/32         O_INTER 10  2           10.1.12.1       GE0/0
5.5.5.5/32         O_INTER 10  2           10.1.23.3       GE0/1
10.1.12.0/24       Direct  0   0           10.1.12.2       GE0/0
10.1.12.2/32       Direct  0   0           127.0.0.1       InLoop0
10.1.12.255/32     Direct  0   0           10.1.12.2       GE0/0
10.1.14.0/24       O_INTER 10  2           10.1.12.1       GE0/0
10.1.23.0/24       Direct  0   0           10.1.23.2       GE0/1
10.1.23.2/32       Direct  0   0           127.0.0.1       InLoop0
10.1.23.255/32     Direct  0   0           10.1.23.2       GE0/1
10.1.35.0/24       O_INTER 10  2           10.1.23.3       GE0/1
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R3]dis ip routing-table Destinations : 20       Routes : 20Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTRA 10  2           10.1.23.2       GE0/0
2.2.2.2/32         O_INTRA 10  1           10.1.23.2       GE0/0
3.3.3.3/32         Direct  0   0           127.0.0.1       InLoop0
4.4.4.4/32         O_INTER 10  3           10.1.23.2       GE0/0
5.5.5.5/32         O_INTRA 10  1           10.1.35.5       GE0/1
10.1.12.0/24       O_INTRA 10  2           10.1.23.2       GE0/0
10.1.14.0/24       O_INTER 10  3           10.1.23.2       GE0/0
10.1.23.0/24       Direct  0   0           10.1.23.3       GE0/0
10.1.23.3/32       Direct  0   0           127.0.0.1       InLoop0
10.1.23.255/32     Direct  0   0           10.1.23.3       GE0/0
10.1.35.0/24       Direct  0   0           10.1.35.3       GE0/1
10.1.35.3/32       Direct  0   0           127.0.0.1       InLoop0
10.1.35.255/32     Direct  0   0           10.1.35.3       GE0/1
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R4]dis ip routing-table Destinations : 18       Routes : 18Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTER 10  1           10.1.14.1       GE0/0
2.2.2.2/32         O_INTER 10  2           10.1.14.1       GE0/0
3.3.3.3/32         O_INTER 10  3           10.1.14.1       GE0/0
4.4.4.4/32         Direct  0   0           127.0.0.1       InLoop0
5.5.5.5/32         O_INTER 10  4           10.1.14.1       GE0/0
10.1.12.0/24       O_INTER 10  2           10.1.14.1       GE0/0
10.1.14.0/24       Direct  0   0           10.1.14.4       GE0/0
10.1.14.4/32       Direct  0   0           127.0.0.1       InLoop0
10.1.14.255/32     Direct  0   0           10.1.14.4       GE0/0
10.1.23.0/24       O_INTER 10  3           10.1.14.1       GE0/0
10.1.35.0/24       O_INTER 10  4           10.1.14.1       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述

[R5]dis ip routing-table Destinations : 18       Routes : 18Destination/Mask   Proto   Pre Cost        NextHop         Interface
0.0.0.0/32         Direct  0   0           127.0.0.1       InLoop0
1.1.1.1/32         O_INTER 10  3           10.1.35.3       GE0/0
2.2.2.2/32         O_INTER 10  2           10.1.35.3       GE0/0
3.3.3.3/32         O_INTER 10  1           10.1.35.3       GE0/0
4.4.4.4/32         O_INTER 10  4           10.1.35.3       GE0/0
5.5.5.5/32         Direct  0   0           127.0.0.1       InLoop0
10.1.12.0/24       O_INTER 10  3           10.1.35.3       GE0/0
10.1.14.0/24       O_INTER 10  4           10.1.35.3       GE0/0
10.1.23.0/24       O_INTER 10  2           10.1.35.3       GE0/0
10.1.35.0/24       Direct  0   0           10.1.35.5       GE0/0
10.1.35.5/32       Direct  0   0           127.0.0.1       InLoop0
10.1.35.255/32     Direct  0   0           10.1.35.5       GE0/0
127.0.0.0/8        Direct  0   0           127.0.0.1       InLoop0
127.0.0.1/32       Direct  0   0           127.0.0.1       InLoop0
127.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0
224.0.0.0/4        Direct  0   0           0.0.0.0         NULL0
224.0.0.0/24       Direct  0   0           0.0.0.0         NULL0
255.255.255.255/32 Direct  0   0           127.0.0.1       InLoop0

在这里插入图片描述
说明:可以看到,分别已经学习到了全网所有网段的路由信息

  1. 测试在R4上ping R5

    [R4]ping 10.1.35.5
    Ping 10.1.35.5 (10.1.35.5): 56 data bytes, press CTRL+C to break
    56 bytes from 10.1.35.5: icmp_seq=0 ttl=252 time=1.758 ms
    56 bytes from 10.1.35.5: icmp_seq=1 ttl=252 time=1.174 ms
    56 bytes from 10.1.35.5: icmp_seq=2 ttl=252 time=1.067 ms
    56 bytes from 10.1.35.5: icmp_seq=3 ttl=252 time=1.087 ms
    56 bytes from 10.1.35.5: icmp_seq=4 ttl=252 time=1.761 ms--- Ping statistics for 10.1.35.5 ---
    5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
    round-trip min/avg/max/std-dev = 1.067/1.369/1.761/0.321 ms
    [R4]%Mar 19 16:27:11:744 2025 R4 PING/6/PING_STATISTICS: Ping statistics for 10.1.35.5: 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss, round-trip min/avg/max/std-dev = 1.067/1.369/1.761/0.321 ms.
    

在这里插入图片描述

[R4]ping 5.5.5.5
Ping 5.5.5.5 (5.5.5.5): 56 data bytes, press CTRL+C to break
56 bytes from 5.5.5.5: icmp_seq=0 ttl=252 time=1.471 ms
56 bytes from 5.5.5.5: icmp_seq=1 ttl=252 time=0.854 ms
56 bytes from 5.5.5.5: icmp_seq=2 ttl=252 time=1.449 ms
56 bytes from 5.5.5.5: icmp_seq=3 ttl=252 time=1.697 ms
56 bytes from 5.5.5.5: icmp_seq=4 ttl=252 time=1.818 ms--- Ping statistics for 5.5.5.5 ---
5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.854/1.458/1.818/0.332 ms
[R4]%Mar 19 16:26:22:237 2025 R4 PING/6/PING_STATISTICS: Ping statistics for 5.5.5.5: 5 packet(s) transmitted, 5 packet(s) received, 0.0% packet loss, round-trip min/avg/max/std-dev = 0.854/1.458/1.818/0.332 ms.

在这里插入图片描述

OSPF知识点
OSPF 区域

(1)区域概念

区域从逻辑上划分网络,各区域拥有独立链路状态数据库与路由计算,能减少链路状态信息传播范围,减轻路由器负担,提升网络可管理性与稳定性。

(2)骨干区域与非骨干区域

骨干区域(Area 0)至关重要,连接非骨干区域,非骨干区域间路由信息需经骨干区域中转。

(3)区域间路由汇总

区域边界路由器进行路由汇总,将多个具体路由条目合并为一条,减少区域间传递的路由信息数量,提升路由效率。

OSPF 路由器角色

(1)DR 和 BDR

在广播型或 NBMA 网络中,DR(指定路由器)负责与其他路由器交换链路状态信息,BDR(备份指定路由器)在 DR 故障时接替工作,减少链路状态信息泛洪及邻接关系数量。

(2)内部路由器、区域边界路由器和自治系统边界路由器

内部路由器负责所在区域内路由;区域边界路由器连接不同区域,传递区域间路由信息;自治系统边界路由器连接 OSPF 自治系统与其他自治系统,引入外部路由。

OSPF 报文

(1)Hello 报文

作用为发现邻居、建立与维护邻居关系、选举 DR 和 BDR。报文中包含路由器 ID、区域 ID、Hello 间隔、死亡间隔等字段。

(2)其他报文类型

数据库描述(DBD)报文、链路状态请求(LSR)报文、链路状态更新(LSU)报文和链路状态确认(LSAck)报文等,各自承担特定功能,相互协作实现 OSPF 各项功能。

区域(Area):区域是从逻辑上将路由器划分为不同的组,每个组用区域号(Area ID)来标识。区域的边界是路由器,而不是链路。其中,Area 0 通常被称为骨干区域,负责区域之间的路由,非骨干区域之间的路由信息必须通过骨干区域来转发。

路由器 ID(Router ID):唯一标识一个 OSPF 路由器,通常使用环回接口的 IP 地址。如果没有配置环回接口,则选取物理接口中 IP 地址最大的接口地址作为 Router ID。

链路状态通告(LSA):用于在 OSPF 路由器之间传递链路状态信息,描述了网络中的链路、路由器以及它们之间的连接关系等。

邻居(Neighbor):两台 OSPF 路由器之间建立邻接关系,就互为邻居。它们通过交换 Hello 报文来发现和维护邻居关系。

邻接(Adjacency):两台 OSPF 路由器之间建立完全邻接关系后,会同步链路状态数据库,以便拥有相同的网络拓扑信息。

指定路由器(DR)和备份指定路由器(BDR):在广播型网络和非广播多路访问网络(NBMA)中,为了减少网络中链路状态信息的泛洪和路由器之间的邻接关系数量,会选举出 DR 和 BDR。DR 负责与其他路由器交换链路状态信息,BDR 在 DR 出现故障时接替其工作。

开销(Cost):OSPF 协议采用链路开销作为度量值,用于衡量到达目标网络的路径代价。链路开销与链路带宽成反比,即带宽越高,开销越小,选路主要基于带宽因素。

OSPF 报文类型:包括 Hello 报文、数据库描述(DBD)报文、链路状态请求(LSR)报文、链路状态更新(LSU)报文和链路状态确认(LSAck)报文等。Hello 报文用于发现和维护邻居关系;DBD 报文用于描述链路状态数据库的内容;LSR 报文用于请求特定的链路状态信息;LSU 报文用于发送链路状态更新信息;LSAck 报文用于对收到的 LSU 报文进行确认。
Dijkstra 算法
在这里插入图片描述

相关文章:

OSPF 协议详解:从概念原理到配置实践的全网互通实现

什么是OSPF OSPF(开放最短路径优先)是由IETF开发的基于链路状态的自治系统内部路由协议,用来代替存在一些问题的RIP协议。与距离矢量协议不同,链路状态路由协议关心网络中链路活接口的状态(包括UP、DOWN、IP地址、掩码…...

【C++】多态

目录 文章目录 前言 一、多态的概念 二、多态的定义及实现 三、重载/重写/隐藏的对比 四、纯虚函数和抽象类 五、多态的原理 总结 前言 本文主要讲述C中的多态,涉及的概念有虚函数、协变、纯虚函数、抽象类、虚表指针和虚函数表等。 一、多态的概念 多态分…...

CentOS 8 停止维护后通过 rpm 包手动安装 docker

根据 Docker官方文档 的指引,进入 Docker rpm 包下载的地址,根据自己系统的架构和具体版本选择对应的路径 这里使用 Index of linux/centos/7/x86_64/stable/ 版本,根据 docker 官方的给出的安装命令选择性的下载对应的 rpm 包 最终使用 yum …...

STT-MRAM CIM 赋能边缘 AI:高性能噪声鲁棒贝叶斯神经网络宏架构详解

引言 近年来,基于卷积神经网络(CNN)和视觉转换器(ViT)的存算一体(CIM)边缘AI设备因其低延迟、高能效、低成本等性能受到越来越广泛的关注。然而,当环境中存在噪声时(例如…...

Performance Hub Active Report

Performance Hub 是 Oracle Enterprise Manager Database Express (EM Express) 中的一项功能,可提供给定时间范围内所有性能数据的新整合视图。用户可以使用 Database Express 页面顶部的时间选择器选择时间范围,详细信息选项卡将…...

小白闯AI:Llama模型Lora中文微调实战

文章目录 0、缘起一、如何对大模型进行微调二、模型微调实战0、准备环境1、准备数据2、模型微调第一步、获取基础的预训练模型第二步:预处理数据集第三步:进行模型微调第四步:将微调后的模型保存到本地4、模型验证5、Ollama集成部署6、结果测试三、使用总结AI是什么?他应该…...

【数学建模】TOPSIS法简介及应用

文章目录 TOPSIS法的基本原理TOPSIS法的基本步骤TOPSIS法的应用总结 在 多目标决策分析中,我们常常需要在多个选择中找到一个最优解。 TOPSIS(Technique for Order Preference by Similarity to Ideal Solution)法是一个广泛应用的决策方法…...

优选算法训练篇08--力扣15.三数之和(难度中等)

目录 1.题目链接:15.三数之和 2.题目描述: 3.解法(排序双指针) 1.题目链接:15.三数之和 2.题目描述: 给你一个整数数组 nums ,判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &…...

【docker】--- 详解 WSL2 中的 Ubuntu 和 Docker Desktop 的区别和关系!

在编程的艺术世界里,代码和灵感需要寻找到最佳的交融点,才能打造出令人为之惊叹的作品。而在这座秋知叶i博客的殿堂里,我们将共同追寻这种完美结合,为未来的世界留下属于我们的独特印记。【WSL 】--- Windows11 迁移 WSL 超详细指南 —— 给室友换一个宿舍! 开发环境一、引…...

RAG 架构地基工程-Retrieval 模块的系统设计分享

目录 一、知识注入的关键前奏——RAG 系统中的检索综述 (一)模块定位:连接语言模型与知识世界的桥梁 (二)核心任务:四大关键问题的协调解法 (三)系统特征:性能、精度…...

解决stm32引脚如果选择输入模式

1. 输入模式分类 STM32的GPIO输入模式主要分为以下四种: 浮空输入(Floating Input / Input Floating) 上拉输入(Input Pull-Up) 下拉输入(Input Pull-Down) 模拟输入(Analog Inp…...

Java 填充 PDF 模版

制作 PDF 模版 安装 OnlyOffice 从 OnlyOffice 官网下载 OnlyOffice Desktop,安装过程很简单,一路下一步即可。用 OnlyOffice 制作 PDF 模版(表单) 使用 OnlyOffice 表单设计器,制作表单,如下图 注意命名…...

Maven安装与环境配置

首先我们先介绍一些关于Maven的知识,如果着急直接看下面的安装教程。 目录 Maven介绍 Maven模型 Maven仓库 Maven安装 下载 安装步骤 Maven介绍 Apache Maven是一个项目管理和构建工具,它基于项目对象模型(Project Object Model , 简称: POM)的概念…...

鸿蒙HarmonyOS NEXT应用崩溃分析及修复

鸿蒙HarmonyOS NEXT应用崩溃分析及修复 如何保证应用的健壮性,其中一个指标就是看崩溃率,如何降低崩溃率,就需要知道存在哪些崩溃,然后对症下药,解决崩溃。那么鸿蒙应用中存在哪些崩溃类型呢?又改如何解决…...

基于PySide6的CATIA自动化工具开发实战——空几何体批量清理系统

一、功能概述 本工具通过PySide6构建用户界面,结合PyCATIA库实现CATIA V5的自动化操作,提供两大核心功能: ​空几何体清理:智能识别并删除零件文档中的无内容几何体(Bodies)​空几何图形集清理&#xff1…...

【CSS文字渐变动画】

CSS文字渐变动画 HTML代码CSS代码效果图 HTML代码 <div class"title"><h1>今天是春分</h1><p>正是春天到来的日子&#xff0c;花都开了&#xff0c;小鸟也飞回来了&#xff0c;大山也绿了起来&#xff0c;空气也有点嫩嫩的气息了</p>…...

Mysql深分页的解决方案

在数据量非常大的情况下&#xff0c;深分页查询则变得很常见&#xff0c;深分页会导致MySQL需要扫描大量前面的数据&#xff0c;从而效率低下。例如&#xff0c;使用LIMIT 100000, 10时&#xff0c;MySQL需要扫描前100000条数据才能找到第10000页的数据。 在MySQL中解决深分页…...

使用pycel将Excel移植到Python

1.适用需求 有些工作可能长期适用excel来进行公式计算&#xff0c;当需要把工作流程转换为可视化界面时&#xff0c;开发人员不懂专业逻辑&#xff0c;手动摸索公式很大可能出错&#xff0c;而且费时费力 2.可用工具及缺点 pandas 方便进行数据处理&#xff0c;支持各种格…...

Apache Tomcat CVE-2025-24813 安全漏洞

Apache Tomcat CVE-2025-24813被广泛利用&#xff0c;但是他必须要满足两个点&#xff1a; 1.被广泛的使用&#xff0c;并且部署在服务器中。 2.漏洞必须依赖在服务器中的配置。 并且漏洞补丁已经发布。 漏洞攻击方式&#xff1a; CVE-2025-24813 是 Apache Tomcat 部分 PUT…...

Spring常用注解汇总

1. IOC容器与Bean管理 注解说明示例Component通用注解&#xff0c;标记类为Spring Bean Component public class MyService { ... } Controller标记Web控制器&#xff08;应用在MVC的控制层&#xff09; Controller public class UserController { ... } Service标记业务逻辑层…...

【CXX-Qt】2.1.1 为 WebAssembly 构建

CXX-Qt 及其编写的应用程序可以编译为 WebAssembly&#xff0c;但存在一些限制。以下是关于如何为 WASM 目标构建的详细说明。 你需要安装 Qt for WebAssembly。下一篇将展示已测试的版本。 此外&#xff0c;如果尚未完成&#xff0c;请从此处克隆 emsdk git 仓库。 使用正确…...

MySql创建分区表并且按月分区

前言 在mysql中&#xff0c;按月份分区&#xff0c;再使用分区字段时间来查询数据将会很快&#xff0c;因为这样只需要扫描指定的分区。因此&#xff0c;在处理大量数据时&#xff0c;使用分区表是一个非常好的选择。 1、创建表&#xff0c;并使用RANGE COLUMNS分区 按创建时间…...

YOLO-UniOW: 高效通用开放世界目标检测模型【附论文与源码】

《------往期经典推荐------》 一、AI应用软件开发实战专栏【链接】 项目名称项目名称1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】3.【手势识别系统开发】4.【人脸面部活体检测系统开发】5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】7.【…...

Flink实战教程从入门到精通(基础篇)(一)Flink简介

目录 一、Flink 二、谁在用Flink? 三、Flink特点 1、批流统一 2、性能卓越 3、规模计算 4、生态兼容性 5、高容错性 四、Flink介绍 1、无界数据 2、有界数据流 3、有状态流处理 五、Flink的发展历史 六、Flink的核心特点 1、高吞吐和低延迟 2、结果的准确性 …...

C/C++编程:Openssl使用 Windows安装包32和64位 RSA加密/解密、AES-GCM加密/解密以及ECDSA签名/验证示例

Openssl的头文件和库 C/C使用openssl&#xff0c;需要openssl的头文件和库&#xff0c;这些都在安装包里。从http://slproweb.com/products/Win32OpenSSL.html下载已经编译好的包含 lib 和 include 文件的安装包。 也可以从官网下载源码&#xff0c;再编译成安装包&#xff0…...

Es6新特性

1. let 和 const 概念 let&#xff1a;用于声明 块级作用域 的变量。const&#xff1a;用于声明 块级作用域 的常量&#xff0c;声明后不可重新赋值&#xff08;但可以修改对象的属性或数组的内容&#xff09;。 原理 JavaScript 在 ES5 中只有全局作用域和函数作用域&…...

大数据学习(80)-数仓分层

&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4dd;支持一…...

StarRocks 升级注意事项

前段时间升级了生产环境的 StarRocks&#xff0c;从 3.3.3 升级到了 3.3.9&#xff0c;期间还是踩了不少坑所以在这里记录下。 因为我们的集群使用的是存算分离的版本&#xff0c;也是使用官方提供的 operator 部署在 kubernetes 里的&#xff0c;所以没法按照官方的流程进入虚…...

Java 大视界 -- Java 大数据分布式计算中的通信优化与网络拓扑设计(145)

&#x1f496;亲爱的朋友们&#xff0c;热烈欢迎来到 青云交的博客&#xff01;能与诸位在此相逢&#xff0c;我倍感荣幸。在这飞速更迭的时代&#xff0c;我们都渴望一方心灵净土&#xff0c;而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识&#xff0c;也…...

LabVIEW软件长时间运行导致蓝屏问题排查与优化

计算机在长时间运行LabVIEW或其他软件后出现蓝屏&#xff08;BSOD&#xff09;&#xff0c;通常由硬件资源耗尽、驱动冲突或软件内存泄漏引发。本文提供从日志分析到根本性优化的全流程解决方案&#xff0c;确保系统稳定运行。 一、蓝屏记录查询方法 1. 查看Windows事件日志 操…...

【机密计算顶会解读】11:ACAI——使用 Arm 机密计算架构保护加速器执行

导读&#xff1a;本文介绍ACAI&#xff0c;其构建一个基于CCA的解决方案&#xff0c;使得机密虚拟机能够安全地使用加速器&#xff0c;同时保持与现有应用程序的兼容性和安全性&#xff0c;能够实现对加速器的安全访问。 原文链接&#xff1a;ACAI: Protecting Accelerator Ex…...

【WRF模拟】WPS预处理设置生成文件地址

目录 WPS 运行 geogrid.exe在 namelist.wps 中指定 geogrid.exe 输出路径WPS 运行 ungrid.exe方法 1:在 namelist.wps 中指定输出路径方法 2:手动移动 FILE:* 文件方法 3:使用环境变量 WPS_UNGRIB_OUTPUT(不推荐)另:设置文件链接地址WPS 运行 metgrid.exe方法 1:在 name…...

Midjourney使用教程—2.作品修改

当您已生成第一张Midjourney图像的时候&#xff0c;接下来该做什么&#xff1f;了解我们用于修改图像的工具&#xff01;使用 Midjourney 制作图像后&#xff0c;您的创意之旅就不会止步于此。您可以使用各种工具来修改和增强图像。 一、放大操作 Midjourney每次会根据提示词…...

基于 ABAP RESTful 应用程序编程模型开发 OData V4 服务

一、概念 以个人图书管理为例&#xff0c;创建一个ABAP RESTful 应用程序编程模型项目。最终要实现的效果&#xff1a; 用于管理书籍的程序。读取、修改和删除书籍。 二、Data Model-数据模型 2.1 创建项目基础数据库表 首先&#xff0c;创建一个图书相关的表&#xff0c;点…...

微信小程序登陆之反向代理

一.背景 在互联网架构中&#xff0c;反向代理是连接客户端与后端服务的核心组件。它的核心价值在于&#xff1a; 安全性&#xff1a;隐藏内部服务细节&#xff0c;防止直接暴露到公网。 负载均衡&#xff1a;分散请求到多个后端实例&#xff0c;提升吞吐量。 SSL终止&#x…...

[解决] PDF转图片,中文乱码或显示方框的解决方案

在Java开发中,将PDF文件转换为图片是一项常见的需求,但过程中可能会遇到中文乱码或显示方框的问题。本文将深入探讨这一问题,并提供详细的解决方案,帮助开发者顺利地完成PDF到图片的转换。 一、问题现象 在使用Java库(如Apache PDFBox)将PDF转换为图片时,如果PDF文件中…...

面试康复训练-SQL语句

一&#xff0c;数据库操作 1查看所有库 show databases; --查看所有库2使用数据库 use 数据库名; --使用数据库&#xff1b; 3查看当前使用数据库 select database(); --查看当前使用的数据库 4 创建数据库 create databse 数据库名 charsetutf8; --创建数据库 5删…...

经典面试题:C/C++中static关键字的三大核心作用与实战应用

一、修饰局部变量&#xff1a;改变生命周期&#xff0c;保留跨调用状态 核心作用&#xff1a; ​延长生命周期&#xff1a;将局部变量从栈区移至静态存储区&#xff08;数据段或BSS段&#xff09;&#xff0c;生命周期与程序一致​保留状态&#xff1a;变量在函数多次调用间保…...

Linux固定IP方法(RedHat+Net模式)

1、查看当前网关 ip route | grep default 2、配置静态IP 双击重启 3、验证...

JVM 学习前置知识

JVM 学习前置知识 Java 开发环境层次结构解析 下图展示了 Java 开发环境的层级关系及其核心组件&#xff0c;从底层操作系统到上层开发工具&#xff0c;逐步构建完整的开发与运行环境&#xff1a; 1. 操作系统&#xff08;Windows, MacOS, Linux, Solaris&#xff09; 作用&…...

数据结构---图的深度优先遍历(DFS)

一、与树的深度优先遍历之间的联系 1.类似于树的先根遍历。 递归访问各个结点&#xff1a; 2.图的深度优先遍历 先设置一个数组&#xff0c;初始值全部设置为false&#xff0c;先访问一个结点&#xff0c;在用一个循环&#xff0c;依次检查和这个结点相邻的其他结点&#xff0c…...

QPrintDialog弹出慢的问题

开发环境 操作系统: openkylin2qt版本 : 5.15.10排查过程 首先看下问题的现象, 问题现象 复现问题的demo很简单,只能是从跟踪qt代码方面入手 void MainWindow::on_pushButton_clicked(){QPrinter printer;QPrintDialog dialog(&printer,this);dialog.exec();} 现在需要找一…...

QT-LINUX-Bluetooth蓝牙开发

BlueToothAPI QT-BlueToothApi Qt Bluetooth 6.8.2 官方提供的蓝牙API不支持linux。 D-Bus的API实现蓝牙 确保系统中安装了 BlueZ(版本需≥5.56),并且 Qt 已正确安装并配置了 D-Bus 支持。 默默看了下自己的版本.....D-BUS的API也不支持。 在 D-Bus 中,org 目录是 D-Bus…...

kvm虚拟机的基本使用

[rootkvm ~]# virsh destroy 虚拟机名 #关闭虚拟机 [rootkvm ~]# virsh undefine 虚拟机名 #删除虚拟机 [rootkvm ~]# virsh start 虚拟机名 #开启虚拟机 [rootkvm ~]# virsh console 虚拟机名 #登录虚拟机 [rootkvm ~]# virsh list --all …...

K8S中若要挂载其他命名空间中的 Secret

在Kubernetes&#xff08;k8s&#xff09;里&#xff0c;若要挂载其他命名空间中的Secret&#xff0c;你可以通过创建一个 Secret 的 ServiceAccount 和 RoleBinding 来实现对其他命名空间 Secret 的访问&#xff0c;接着在 Pod 中挂载这个 Secret。下面是详细的步骤和示例代码…...

【Java SE】抽象类/方法、模板设计模式

目录 1.抽象类/方法 1.1 基本介绍 1.2 语法格式 1.3 使用细节 2. 模板设计模式&#xff08;抽象类使用场景&#xff09; 2.1 基本介绍 2.2 具体例子 1.抽象类/方法 1.1 基本介绍 ① 当父类的某些方法&#xff0c;需要声明&#xff0c;但是又不确定如何实现时&#xff…...

如何理解java中Stream流?

在Java中&#xff0c;Stream 是 Java 8 引入的一个强大API&#xff0c;用于处理集合&#xff08;如 List、Set、Map 等&#xff09;数据的流式操作。它提供了一种声明式、函数式的编程风格&#xff0c;可以高效地进行过滤、映射、排序、聚合等操作。 Stream 的核心概念 流&…...

QT编程之数据库开发

一、架构层次 ‌用户接口层‌ ‌QSqlQueryModel‌&#xff1a;管理SQL查询结果&#xff0c;提供表格数据模型用于展示‌‌QSqlTableModel‌&#xff1a;支持直接操作数据库表&#xff08;增删改查&#xff09;‌‌QSqlRelationalTableModel‌&#xff1a;支持带外键关联的复杂表…...

【10】高效存储MongoDB的用法

目录 一、什么是MongoDB 二、准备工作 &#xff08;1&#xff09;安装MongoDB ​&#xff08;2&#xff09;安装pymongo库 三、连接MongoDB 四、指定数据库 五、指定集合 六、插入数据 &#xff08;1&#xff09; insert 方法 &#xff08;2&#xff09;insert_one(…...

使用Qdrant等其他向量数据库时需要将将numpy 数组转换为列表 确保数据能被正确处理和序列化,避免类型不兼容的问题。

在使用Qdrant等其他向量数据库时需要 转换 numpy 数组为列表主要是为了确保数据能被正确处理和序列化&#xff0c;避免类型不兼容的问题。具体原因如下&#xff1a; 序列化兼容性&#xff1a; 很多数据库接口、API 或者 JSON 序列化工具只能处理 Python 的内置类型&#xff08;…...