IP-----动态路由OSPF(2)
这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,前一章内容为动态路由OSPF
,可通过以下路径查看IP-----动态路由OSPF-CSDN博客,欢迎指正
注意!!!本部分内容较多所以分成了两部分在上一章
5.动态路由OSPF
8.OSPF的拓展配置
1.OSPF的手工认证
查看路由表,并且进行筛选信息查看
protocol-----协议 ospf-----ospf协议 protocol ospf----------筛选ospf协议的路由信息
[r2]display ip routing-table protocol ospf
目的:实现数据传输更新,进行加密防止别人窃取信息。
[r1-GigabitEthernet0/0/0]ospf authentication-mode md5 1 cipher 123456
authentication----------认证 mode----------模式
md5--------使用不可逆的哈希算法(相同输入相同输出),而加密算法是可逆的
1 -------key ID------0-255-----范围------两边的key ID需要一样----华为只能配置一套key ID,只需要key ID一样就行
simple-----------明文传输口令 --- 邻居双方使用模式(simple)必须相同
cipher---------在本地口令(密码)存储加密----------------- 本地以密文形式存储口令 --- 邻居双方可以不同(cipher ;plain )
plain ---------- 如果是plain,则本地口令存储不加密
2.OSPF的手工汇总
当路由器可以访问多个连续的子网时,若均通过相同的下一跳,则可以将这些网段进行汇总计算,之后,仅编辑到达汇总网段的静态路由即可。可以达到减少路由条目数量,提高转发效率。
ospf进行区域汇总,只能在DR或者BDR设备上进行汇总路由信息,DR和BDR设备上还是两条路由信息,但是发送出去的只有一条路由信息即汇总路由信息
[r2-ospf-1-area-0.0.0.0]abr-summary 192.168.0.0 255.255.254.0 /汇总IP,及其掩码全写
3.OSPF的沉默接口
如果将一个接口配置成为沉默接口,则这个接口将只接受不发送路由信息,应用在链接用户的网段的接口上。
[r1-ospf-1]silent-interface GigabitEthernet 0/0/2
4.OSPF的加速收敛
减少计时器的时间---------和RIP上不一样,ospf的是在接口上修改------修改hello时间 ---- hello时间修改,死亡时间将自动按照4倍关系进行匹配----------注意:邻居双方的hello时间和死亡时间必须相同,如果不同,则邻居关系将无法建立。
[r1-GigabitEthernet0/0/0]ospf timer hello 5
注意,死亡时间修改,hello时间不会变化
[r1-GigabitEthernet0/0/0]ospf timer dead 40
5.OSPF的缺省路由
将一台设备设置为缺省源,则所有内网设备都将自动生成一跳指向他的缺省路由,但是该设备的缺省路由必须手工配置,需要保证边界(即最边边的设备)设备本身具有缺省,才能自动下发缺省。
[r3-ospf-1]default-route-advertise
强制下发缺省,即使边界设备没有缺省也能下发
[r3-ospf-1]default-route-advertise always
9.OSPF报文
OSPF是一个跨层封装的协议----跨四层封装的协议,协议号:89
1.公共头部

版本:OSPF的版本,如果是OSPFV2则数值恒为2
类型:1---hello包 2----DBD包 3----LSR 4----LSU 5----LSACK
报文长度:公共头部+数据包的头部
路由器ID:发出这个数据包的设备RID--------ospf协议创建的id
区域areaID----发出这个数据包的设备接口所宣告的区域ID
校验和---检验数据包的完整性。不仅检验这个ospf报文头部即公共头部,还检验数据包的头部
验证类型----0----NULL:空认证---不认证--不加密 1----简单认证---simple--明文认证 2---md5---密文认证
抓包图片

2.Helllo包
用来周期性的建立保活邻居关系

网络掩码---接口本身的IP掩码和对端发送的heelo包中携带的IP掩码必须一致。
(以太网环境下,华为体系会在建邻过程中比对网络掩码检测接口两边是否在同一个广播域里 )
Hello间隔-------------heelo时间---
路由器失效时间---------Dead 时间---
可选项---------8位二进制,每一位置1都代表某种OSPF特性,需要关注 N和E位(特殊区域)
路由器优先级---------DR优先级
指定路由器/备份指定路由器(DR/BDR):选举完成后,hello包中会携带对应的DR/BDR接口IP地址,如果没有举完成或者不需要选举时,讲以0.0.0.0作为填充。
邻居----------本地邻居的RID-----ospf协议创建的id
认证:
抓包图片-------还没有建立邻居

抓包图片-------已经建立了邻居

3.DBD包
1.主从关系选举(步携带LSA头部的DBD包)
2.携带LSA摘要信息
3.隐性确认DBD

接口最大传输单元:MTU---------华为默认关闭接口MTU检测
[r2-Serial4/0/0]ospf mtu-enable --开启接口MTU检测---------如果开启,
则两边都需要开启,否则不相等,邻居关系无法建立
可选项---------DBD包存在8个标志位,其中前5位没有使用用0填充
I:如果I位置1则代表这个DBD包是进行主从关系选举的DBD包(不携带摘要信息-----LSA 头部)
M:more:如果置为1则代表后续还有其他的DBD包需要发送,如果置0则代表该DBD包 为最后一个DBD包
MS:该位置1则代表是主设备发送的DBD包--------选举主从设备时,两边都会写1认为自己 是主,选举完成后会改
DD序列号---DBD包需要保证数据包发送的有序性和可靠性。序列号会随着先后顺序逐次加1------序列号------隐性确认,ACK包----显性确认
抓包图片-------进行选举DR和BDR-----------DD序列号两边都是是随机的------当A设备成功选举为DR后,B设备随后发送的DBD包的DD序列号必须是A设备随机DD序列号的后一位,B设备最开始发送随机DD序列号则没用了。------隐性确认

4.LSR包
链路状态请求报文 --- 基于DBD包,请求未知的LSA信息---------“点菜”

LSA---三元组:靠上诉三个参数去唯一的表示一条LSA。
5.LSU包
链路状态更新报文 --- 真正携带LSA的数据包------------“上菜”

6.LSACK---确认包
链路状态确认报文 --- 确认包----------“确认菜是否上对”

10.OSPF接口网络类型
OSPF的接口网络类型:OSPF的接口所处在不同的网络环境下,默认的工作方式不同。
--------有时候默认的工作方式会阻碍网络需求,所以需要改变默认的工作方式即网络类型。
网络类型:1------P2P 2------MA: BMA NBMA
1.总结
| 网络类型 | OSPF的接口网络类型 |
|---|---|
| BMA(以太网) | Broadcast,可以建立多个邻居,需要进行DR和BDR的选举,Hello 10 , Dead 40 |
| P2P(PPP,HDLC,MGRE,GRE,Virtual-link) | P2P,只能建立一个邻居,不需要进行DR和BDR的选举, Timers: Hello 10 , Dead 40 |
| 环回接口(虚拟接口) | P2P,实际没有数据的收发,所以没有DR或者BDR的选举 |
| P2MP,可以建立多个邻居,不需要进行DR和BDR的选举,Hello 30 , Dead 120 | |
| NBMA(帧中继) | NBMA,需要进行DR和BDR的选举,Hello 30 , Dead 120 |
[r2]display ospf interface GigabitEthernet 0/0/0---查看OSPF接口网络类型
r2-LoopBack0]ospf network-type broadcast ----修改OSPF接口网络类型的指令

2. BMA(以太网)
Broadcast,可以建立多个邻居,需要进行DR和BDR的选举,Hello 10 , Dead 40
| OSPF Process 1 with Router ID 2.2.2.2 |
|---|
| Interfaces |
| Interface: 23.0.0.1(GigabitEthernet0/0/0)-----接口和IP地址 |
| Cost: 1----开销值 State: DR------以太网下的身份FR还是BDR Type: Broadcast---网络类型 MTU:1500------接口最大传输单元 |
| Priority: 1---------优先级 |
| Designated Router: 23.0.0.1---------DR的IP地址 |
| Backup Designated Router: 23.0.0.2--------BDR的IP地址 |
| Timers: Hello 10 -----Hello时间, Dead 40---失效时间 ,Poll 120,Retransmit5 , Transmit Delay 1 |
3.P2P----串口

| OSPF Process 1 with Router ID 2.2.2.2 |
|---|
| Interfaces |
| Interface: 12.0.0.2(Serial4/0/0) --> 12.0.0.1-------自身端口及其IP-----对端IP |
| Cost: 48---开销值 state: P-2-P------不是以太网下写网络类型 Type: P2P---网络类型 MTU:1500-----接口最大传输单元 |
| Timers: Hello 10 , Dead 40 , Poll 120,Retransmit 5 , Transmit Delay 1 |
4.虚拟接口-环回
环回接口-----虚拟接口---实际没有数据的收发----开销值定义为0,不受参考带宽的影响 -----Cost: 0

| OSPF Process 1 with Router ID 2.2.2.2 |
|---|
| Interfaces |
| Interface: 2.2.2.2 (LoopBack0)-----接口和IP地址 |
| Cost: 0----开销值 State: P-2-P------不是以太网下写网络类型 Type:P2P---网络类型 MTU: 1500------接口最大传输单元 |
| Timers: Hello 10--------Hello时间,Dead 40 ---失效时间,Poll 120,Retransmit5, Transmit Delay |
5.虚拟接口-P2P
P2P,只能建立一个邻居,不需要进行DR和BDR的选举, Timers: Hello 10 , Dead 40
ospf环境下的MGRE------接口类型MGRE

| OSPF Process 1 with Router ID 1.1.1.1 |
|---|
| Interfaces |
| Interface: 192.168.2.1 (Tunnel0/0/0) --> 192.168.2.2------自身端口及其IP-----对端IP-----ospf环境下产生的问题---只会与先发送hello信息的一方建立邻居-----本来是多点环境就变成了单点环境----就只有一个对端了-----解决问题----改变接口网络类型,改为以太网类型,而必须两边都要改-----此时需要让MGRE的中心成为所有点到点设备的DR------否则查看路由表中还是没有获取到所有设备的IP地址-----让其他接口放弃选举---------问题很多 |
| Cost: 1562 State: P-2-P Type: P2P MTU:1500 ------填充-----虚拟接口实际没有数据的收发 Cost: 1562----这么大的原因是如果有其他路径就尽量不选该隧道,隧道会多一次封装与解封装,会多使用资源 ,同时又不会直接绝路 |
| Timers: Hello 10 ,Dead 40 ,Poll 120,Retransmit 5 Transmit Delay 1-----填充-------虚拟接口没有实际意义 |
6.虚拟接口-P2MP
P2MP,可以建立多个邻居,不需要进行DR和BDR的选举,Hello 30 , Dead 120
ospf环境下的MGRE------接口类型P2MP----Type:P2MP
没有MGRE这么多问题,变成了点对多网络环境,中心可以直接获取到所有设备IP地址,而且不需要进行DR与BDR的选举---state: P-2-P

7.虚拟接口-Virtual-link
Attempt----NBMA网络中独有的状态
开销值小于1写1,带小数的数字直接整数,不四舍五入,48.6也为48。
11.OSPF的LSA数据包
1.查看LSA内容
[r1]display ospf lsdb----查看OSPF链路状态数据库表(目录)

display ospf lsdb router 2.2.2.2

Type-------LSA类型:标准不同类型的LSA
LinkState ID---------链路状态标识符,相当于LSA的名字
AdvRouter--------通告路由器:发出这条LSA的设备RID
-----LSA三元组-------Type,LinkState ID,AdvRouter只有这三个参数一起才能唯一的标示 一条LSA
Ls age ---------LSA的老化时间----默认是1800S---30MIN---周期更新机制故障
----------LSA的老化时间在传递过程中会持续的增加------不会转发时重新计时
----------最大老化时间---3600S-------达到最大老化时间会删除这条LSA
Len ---------LSA的长度Options---选项-----N ,E
seq#----------序列号----表示LSA新旧判断的重要参数----------起始0X 80000001---0X7FFFFFFF--------lsaDE 序列号到达最后一个序列号(0X7FFFFFFFF),他会将最后一个发送的LSA老化时间定义为3600S,相当于去告知网络中其他设备清空自身的LSDB(只针对该LSA),同时始发设备会立刻重新发送一条该LSA,并将序列号置为初值0X80000001序列号空间(序列号的范围)
-----------直线型序列空间---------新旧关系清晰,空间有限
-----------循环型序列空间--------新旧感谢模糊,空间无限
-----------棒棒糖型序列空间------新旧感谢模糊,空间无限
Chksum---------校验和--检验整个LSA的完整性
Link count:link的数量:类型相当于描述接口工作在何种类型的网络下,依靠link来描述设备连接情况,并且一个接口跨越使用多个LINK共同来描述。
Link类型:

point-to-point-----点到点下----p2p
TransNet--------以太网下
stubNet--------末梢网络下----环回也算-------IP网络地址-------IP所处于的网段
Virtual---------只有配置了虚链路才会产生
2.LSA类型
| LSA类型 | LS ID | Adv rtr | 工作半径(传播范围) | 携带的数据(内容) |
|---|---|---|---|---|
| Router(type-1LSA) | 设备的RID | 发出这条LSA的设备RID | 单区域的传递 | 本区域的拓扑信息(接口信息) |
| Network(type-2LSA) | DR的IP地址 | 发出这条LSA的设备RID(DR所在设备发送) | 单区域的传递 | 1类LSA的补充信息(网段信息,存在多少设备) |
| SumNet( type-3LSA) | 目标网段信息(其他区域) | ABR(只有ABR才会发送3类LSA) | 单区域的传递 | 其他区域的路由网段(拓扑信息) |
| Asbr--type4LSA | ASBR设备的RID | 每经过一个区域都会修改ABR的 RID--改成自己区域附近的ABR--更靠近ASBR的ABR | 单区域的传递 | 辅助没有和ASBR在一个区域的设备找到ASBR |
| External--type5LSA | 域外路由信息(网段信息) | ASBR设备的RID | 全OSPF网络传递 | 域外路由信息(网段信息) |
| 7类LSA | 域外路由信息(网段信息) | ASBR设备的RID | NNSA区域传递 | 域外路由信息(网段信息)携带数据和5类LSA完全一致 |
TYPE-1LSA(一类LSA):传递拓扑信息的LSA-------每一台运行了OSPF的设备均会产生1类LSA
Network (type-2LSA)---相当于是1类LSA的补充(网段信息和以太网中设备的RID)
三类LSA的通讯过程:其他区域的设备想要访问另一个区域的网段,就需要先通过1类2类LSA找到ABR的位置,如果存在多条路径,会根据拓扑选择距离ABR最近的路径。下一跳是根据拓扑自己算出来的。当需要跨越多个区域时,没经过一个ABR,需要修改通告路由器的身份(由转发的ABR修改通告路由器为自身)
r5]display ospf lsdb asbr 4.4.4.4---展开一条4类LSA
4类LSA和3类LSA类似,每经过一个区域,都会把通告路由器修改为本区域的ABR,作用:辅助找到ASBR的位置
[r5]display ospf lsdb ase 6.6.6.0---展开一条5类LSA

OSPF对于域外路由开销计算方法
Metric: 1---seed开销(种子开销-------重新定义度量值----默认为1-------负载均衡)
Type-1--开销计算方法一致的情况,种子度量值+设备到达ASBR扽开销
Type-2---路由表中加表恒为种子度量
Forwarding Address---转发地址,面对特殊选路不佳的场景,就会触发重定向。
[r4-ospf-1]import-route rip cost 10---修改种子度量值的方法,10为更改值[r4-ospf-1]import-route rip type ?-----修改重发布开销计算
INTEGER<1-2> Type value [r4-ospf-1]import-route rip tag 2 -----写标签,方便做路由策略-----可以知道是那个协议发送过来的等等
12.OSPF的优化
1.模拟环境
域外信息在重分布后就会向ospf的所有区域进行发送4,5类的LSA,此时骨干区域是有所有域外路由信息,而所有的非骨干区域的信息流量都必须流向骨干区域,骨干区域会帮助非骨干区域进行访问域外路由。3类的LSA都是ABR发布的。(7类LSA携带的也是不同协议的域外信息,但是7类信息是5类信息的备胎)
2.LSA
一类LSA是携带设备接口信息在同一个协议同一个区域内进行传递的LSA;2类LSA是1类LSA的补充,携带该设备处于的网段信息和以太网中设备的RID;三类的LSA携带的是同一个协议其他区域的路由信息;4类携带的是辅助没有和ASBR在一个区域的设备找到ASBR的信息;5类LSA携带的是不同协议的域外信息;7类LSA携带的也是不同协议的域外信息,但是7类信息是5类信息的备胎。
3.选路
OSPF---选路问题---------域内优于域间优于域外
OSPF中的特殊标记位:
E位 --- 一般置1,代表支持5类LSA。如果是特殊区域,则将置 0。
N位 --- 一般置0,只有在NSSA区域中置1,代表支持7类LSA。P位 --- 如果置1,则代表该LSA信息支持7转5。
P位 --- 如果置1,则代表该LSA信息支持7转5
4.做法和目的
汇总---针对骨干区域
特殊区域----针对非骨干区域进行优化
目的-----LSA的更新量减少
5.域间路由汇总
域间路由汇总---针对三类LSA进行汇总-----将大量的3类LSA汇总为了少量的LSA
配置位置ABR
area 0.0.0.1 ------ospf的区域
abr-summary 192.168.0.0 255.255.254.0------进行IP汇总
network 12.0.0.0 0.0.0.255 ----进行宣告直连路由
6.域外路由汇总
域外路由汇总---实质是对5类和7类LSA进行汇总-----将大量的5类和7类LSA汇总为了少量的LSA
配置位置---ASBR
ospf 1 --------选择协议,不用进入区域中,直接在全局配置,
区域内配置只在区域内有效,全局配置在全局有效
asbr-summary 172.16.0.0 255.255.254.0----进行域外IP汇总
import-route rip 1-------进行重分布,引入rip协议
area 0.0.0.2 ----然后进入区域内进行宣告
network 45.0.0.0 0.0.0.255
7.特殊区域
特殊区域----优化非骨干区域的LSA数量-------------一旦配置了特殊区域,那么这个区域内部所以设备都必须配置
8.末梢区域
要求:
1.不能是骨干区域 2.不能存在虚链路(虚链路属于区域0) 3.不能存在ASBR
【一般是连接区域0并且没有其他区域连接本区域,如果有区域4相连本区域,只要没有建立隧道就都不是末梢区域,因为建立隧道后就相当于区域4直接连接了区域0,此时这两个区域都是末梢区域。】
配置位置:
区域内部所以设备都必须配置----否则邻居都建立不了---------特殊位M,E位对不上-----减少4类和5类LSA
[r1-ospf-1-area-0.0.0.1]stub ------stub是末梢的意思,
告诉该设备是属于末梢区域,将拒绝4类和5类LSA(拒绝不同协议的域外信息)。
并由本区域的ABR设备生成一条三类缺省,指向区域0
(所有的非骨干区域都会将信息给骨干区域,然后再由骨干区域进行访问域外),
这条3类缺省LSA会在协议访问域外信息时进行匹配以达到访问域外的目的。
优化:原本进行重分布后,域外会向本区域发送4,5类LSA以达到本区域可以访问域外区域的目的,会存在4,5类LSA的信息,域外信息只要进行重分布,就会向ospf的所有区域进行发送4,5类的LSA,优化后将不会接收4,5类LSA的信息,此时减少了LSA的数量,但是无法访问域外路由,所以产生了一条三类缺省,指向区域0,此时骨干区域是有所有域外路由信息,而所有的非骨干区域的信息流量都必须流向骨干区域,骨干区域会帮助非骨干区域转发达到访问域外路由目的,现在就减少了大量4,5类LSA,变成了一条3类LSA缺省。
9.完全末梢区域
完全末梢区域--totally stub------减少4类和5类LSA以及三类LSA
配置位置:
这条指令只需要在ABR设备上敲即可
[r2-ospf-1-area-0.0.0.1]stub no-summary --这条指令只需要在ABR设备上敲即可.
将拒绝4类和5类LSA以及三类LSA(注意:会保留产生的3类缺省)
并由本区域的ABR设备生成一条三类缺省,指向区域0,
这条3类缺省LSA会在协议访问域外信息时进行匹配以达到访问域外的目的。
将拒绝4类和5类LSA以及三类LSA(注意:会保留产生的3类缺省)并由本区域的ABR设备生成一条三类缺省,本区域只需要1,2类的LSA去传递拓扑信息,其他的都不需要,都通过一条三类缺省去访问就好了。
10.非完全末梢区域
非完全末梢区域---NSSA---1.不能是骨干区域 2.不能存在虚链路(虚链路属于区域0) 3.必须存在ASBR
【这个区域一般是连接两个外部网络协议-------并且运行了重分布才可以-----一般只有在NSSA即非完全末梢区域才存在7类LSA】
配置位置:
区域内部所以设备都必须配置,包括ABSR也要配置,不然无法进行建立邻居
area 0.0.0.2 ---进入区域内
network 45.0.0.0 0.0.0.255 -----宣告直连路由
nssa-------nssa是NSSA的意思,告诉该设备是属于非完全末梢区域,
并由本区域的ABR设备生成一条七类缺省,指向区域0,
之后访问域外路由仅需要匹配缺省即可。
该区与相邻的域外网络作用:域外信息只要进行重分布,就会向ospf的所有区域进行发送4,5类的LSA,但是如果拒绝了4,5类的LSA,其他区域就无法访问域外路由,本区域拒绝了5类LSA,所以在ASBR上会就5类LSA转换为7类LSA,然后在ABR上会将7类LSA转换为5类LSA,ABR会去发送5类LSA,这个时候ABR就类似于ASBR,好处是ABR设备靠近区域0,就不需要4类LSA去寻找ASBR设备,这样就减少了4类LSA。本区域的ABR设备生成一条七类缺省,指向区域0,此时骨干区域是有所有域外路由信息,而所有的非骨干区域的所有的信息流量都必须流向骨干区域,而这里7类LSA缺省让信息流向骨干区域,骨干区域会帮助非骨干区域转发达到访问域外路由目的。
该区与不相邻的域外网络作用(主要作用):因为在大型网络中不止一个域外网络,进行重分布后,不相邻的域外网络,会向ospf的所有区域进行发送4,5类的LSA,而该区域拒绝了4,5类LSA的信息,现在就减少了不相邻的域外网络的大量4,5类LSA,此时骨干区域是有所有域外路由信息,而所有的非骨干区域的所有的信息流量都必须流向骨干区域,而这里本区域你所有设备都存在7类LSA缺省让信息流向骨干区域,骨干区域会帮助非骨干区域转发达到访问域外路由目的。
Forwarding Address : 45.0.0.2 ---7类LSA转发地址作用:辅助找到ASBR位置,生成规则:先看ASBR设备的环回,如果没有环回会选择物理接口(都会选择数值最大的)
11.完全的非完全末梢区域
完全的非完全末梢区域----totally NSSA------ABR
配置位置:
在ABR上---减少3类的LSA
area 0.0.0.2 ------进入区域内
network 45.0.0.0 0.0.0.255 ----宣告直连路由
nssa no-summary-------nssa是NSSA的意思,告诉该设备是属于非完全末梢区域,并且拒绝3类的LSA,并由本区域的ABR设备生成一条三类缺省,指向区域0
相关文章:
IP-----动态路由OSPF(2)
这只是IP的其中一块内容,IP还有更多内容可以查看IP专栏,前一章内容为动态路由OSPF ,可通过以下路径查看IP-----动态路由OSPF-CSDN博客,欢迎指正 注意!!!本部分内容较多所以分成了两部分在上一章 5.动态路…...
《HelloGitHub》第 107 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 Python、…...
leetcode_字典树 139. 单词拆分
139. 单词拆分 给你一个字符串 s 和一个字符串列表 wordDict 作为字典。如果可以利用字典中出现的一个或多个单词拼接出 s 则返回 true。 注意:不要求字典中出现的单词全部都使用,并且字典中的单词可以重复使用。 思路: 定义状态: 设dp[i]表…...
计算机毕业设计Python+DeepSeek-R1大模型游戏推荐系统 Steam游戏推荐系统 游戏可视化 游戏数据分析(源码+文档+PPT+讲解)
温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 温馨提示:文末有 CSDN 平台官方提供的学长联系方式的名片! 作者简介:Java领…...
网络流算法: Dinic算法
图论相关帖子 基本概念图的表示: 邻接矩阵和邻接表图的遍历: 深度优先与广度优先拓扑排序图的最短路径:Dijkstra算法和Bellman-Ford算法最小生成树二分图多源最短路径强连通分量欧拉回路和汉密尔顿回路网络流算法: Edmonds-Karp算法网络流算法: Dinic算法 环境要求 本文所用…...
【Springboot】解决问题 o.s.web.servlet.PageNotFound : No mapping for *
使用 cursor 进行老项目更新为 springboot 的 web 项目,发生了奇怪的问题,就是 html 文件访问正常,但是静态文件就是 404 检查了各种配置,各种比较,各种调试,最后放弃时候,清理没用的配置文件&…...
Spring Boot 3.x 基于 Redis 实现邮箱验证码认证
文章目录 依赖配置开启 QQ 邮箱 SMTP 服务配置文件代码实现验证码服务邮件服务接口实现执行流程 依赖配置 <dependencies> <!-- Spring Boot Starter Web --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spr…...
PostgreSQL10 物理流复制实战:构建高可用数据库架构!
背景 PostgreSQL 10 在高可用架构中提供了物理复制,也称为流复制(Streaming Replication),用于实现实例级别的数据同步。PostgreSQL 复制机制主要包括物理复制和逻辑复制:物理复制依赖 WAL 日志进行物理块级别的同步&…...
从零开始开发纯血鸿蒙应用之语音朗读
从零开始开发纯血鸿蒙应用 〇、前言一、API 选型1、基本情况2、认识TextToSpeechEngine 二、功能集成实践1、改造右上角菜单2、实现语音播报功能2.1、语音引擎的获取和关闭2.2、设置待播报文本2.3、speak 目标文本2.4、设置语音回调 三、总结 〇、前言 中华汉字洋洋洒洒何其多…...
RabbitMQ系列(五)基本概念之Queue
在 RabbitMQ 中,Queue(队列) 是存储消息的容器,也是消息传递的核心载体。以下是其核心特性与作用的全方位解析: 一、Queue 的定义与核心作用 消息存储容器 Queue 是 RabbitMQ 中实际存储消息的实体,生产者…...
奔图Pantum M7165DN黑白激光打印一体机报数据清除中…维修
故障描述: 一台奔图Pantum M7165DN黑白激光打印一体机开机自检正常,自检过后就不能工作了,按键面板无任何反应一直提示数据清除中…,如果快速操作的话也能按出菜单、功能啥的,不过一会又死机了,故障请看下图: 故障检修: 经分析可能是主板数据出现了问题,看看能不能快速…...
TP-LINK路由器如何设置网段、网关和DHCP服务
目标 ①将路由器的网段由192.168.1.XXX改为192.168.5.XXX ②确认DHCP是启用的,并将DHCP的IP池的范围设置为排除自己要手动指定的IP地址,避免IP冲突。 01-复位路由器 路由器按住复位键10秒以上进行重置操作 02-进入路由器管理界面 电脑连接到路由器&…...
神经网络代码入门解析
神经网络代码入门解析 import torch import matplotlib.pyplot as pltimport randomdef create_data(w, b, data_num): # 数据生成x torch.normal(0, 1, (data_num, len(w)))y torch.matmul(x, w) b # 矩阵相乘再加bnoise torch.normal(0, 0.01, y.shape) # 为y添加噪声…...
设计一个“车速计算”SWC,通过Sender-Receiver端口输出车速信号。
1. 需求分析 功能目标:根据车轮脉冲信号(轮速传感器输入)计算当前车速,并将结果通过Sender端口发送给其他SWC。 输入:轮速脉冲数(如WheelPulse,类型uint32)。 输出:车速(如VehicleSpeed,类型float32,单位km/h)。 触发方式:周期性计算(例如每10ms执行一次)。 2.…...
TCP/IP 5层协议簇:网络层(IP数据包的格式、路由器原理)
目录 1. TCP/IP 5层协议簇 2. IP 三层包头协议 3. 路由器原理 4. 交换机和路由的对比 1. TCP/IP 5层协议簇 如下: 2. IP 三层包头协议 数据包如下:IP包头不是固定的,每一个数字是一个bit 其中数据部分是上层的内容,IP包头最…...
1JVM概念
JVM(Java虚拟机)详解 1. 基本概念与作用 JVM(Java Virtual Machine)是Java程序的运行环境,负责将编译后的字节码(.class文件)解释或编译为机器指令执行,并管理内存、线程、安全…...
echarts柱状图不是完全铺满容器,左右两边有空白
目录 处理前:echarts柱状图不是完全铺满容器,左右两边有空白处理前:通过调整 grid 组件配置处理后效果修改代码:1. 调整 grid 组件配置原理解决办法 2. 处理 xAxis 的 boundaryGap 属性原理解决办法 3. 调整 barMaxWidth 和 barMi…...
ArcGIS Pro技巧实战:高效矢量化天地图地表覆盖图
在地理信息系统(GIS)领域,地表覆盖图的矢量化是一项至关重要的任务。天地图作为中国国家级的地理信息服务平台,提供了丰富且详尽的地表覆盖数据。然而,这些数据通常以栅格格式存在,不利于进行空间分析和数据…...
西门子S7-1200比较指令
西门子S7-1200 PLC比较指令学习笔记 一、比较指令的作用 核心功能:用于比较两个数值的大小或相等性,结果为布尔值(True/False)。典型应用: 触发条件控制(如温度超过阈值启动报警)数据筛选&…...
【AD】3-6 层次原理图
自上而下 1.放置-页面符号,并设置属性 2.放置-端口 可通过如下设置将自动生成关掉 3.放置-添加图纸入口,并创建图纸 自下而上 1.子图的原理图页设计 设计资原理图,复制网络标签,智能粘贴未PORT 2.新建主图原理图 创建框…...
精品整理-2025 DeepSeek核心技术解析与实践资料合集(24份)
2025 DeepSeek核心技术解析与实践资料合集,共24份。 2025 DeepSeek 火爆背后的核心技术:知识蒸馏技术.pdf 2025 DeepSeek-R1详细解读:DeepSeek-R1-Zero和DeepSeek-R1分析.pdf 2025 DeepSeek-V3三个关键模块详细解读:MLAMoEMTP.pd…...
【三维分割】LangSplat: 3D Language Gaussian Splatting(CVPR 2024 highlight)
论文:https://arxiv.org/pdf/2312.16084 代码:https://github.com/minghanqin/LangSplat 文章目录 一、3D language field二、回顾 Language Fields的挑战三、使用SAM学习层次结构语义四、Language Fields 的 3DGS五、开放词汇查询(Open-voca…...
如何使用 Jenkins 实现 CI/CD 流水线:从零开始搭建自动化部署流程
如何使用 Jenkins 实现 CI/CD 流水线:从零开始搭建自动化部署流程 在软件开发过程中,持续集成(CI)和持续交付(CD)已经成为现代开发和运维的标准实践。随着代码的迭代越来越频繁,传统的手动部署方式不仅低效,而且容易出错。为了提高开发效率和代码质量,Jenkins作为一款…...
【HarmonyOS Next】鸿蒙应用折叠屏设备适配方案
【HarmonyOS Next】鸿蒙应用折叠屏设备适配方案 一、前言 目前应用上架华为AGC平台,都会被要求适配折叠屏设备。目前华为系列的折叠屏手机,有华为 Mate系列(左右折叠,华为 Mate XT三折叠),华为Pocket 系列…...
Spark内存迭代计算
一、宽窄依赖 窄依赖:父RDD的一个分区数据全部发往子RDD的一个分区 宽依赖:父RDD的一个分区数据发往子RDD的多个分区,也称为shuffle 二、Spark是如何进行内存计算的?DAG的作用?Stage阶段划分的作用? &a…...
数据库基础二(数据库安装配置)
打开MySQL官网进行安装包的下载 https://www.mysql.com/ 接着找到适用于windows的版本 下载版本 直接点击下载即可 接下来对应的内容分别是: 1:安装所有 MySQL 数据库需要的产品; 2:仅使用 MySQL 数据库的服务器; 3&a…...
HumanPro逼真角色皮肤面部动画Blender插件V1.1版
https://www.youtube.com/watch?vnmV_jzgpIPM 本插件是关于HumanPro逼真角色皮肤面部动画Blender插件V1.1版,大小:2.9 MB,支持Blender 4.0 - 4.3版软件,支持Win系统,语言:英语。RRCG分享 HumanPro 是一款…...
基于javaweb的SSM+Maven幼儿园管理系统设计和实现(源码+文档+部署讲解)
技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…...
PyTorch内存优化的10种策略总结:在有限资源环境下高效训练模型
在大规模深度学习模型训练过程中,GPU内存容量往往成为制约因素,尤其是在训练大型语言模型(LLM)和视觉Transformer等现代架构时。由于大多数研究者和开发者无法使用配备海量GPU内存的高端计算集群,因此掌握有效的内存优化技术变得尤为关键。本…...
SQL打折日期交叉问题
1. 数据结构:数据为平台商品促销数据 表名:good_promotion 字段名:brand(品牌)、stt(打折开始日期)、edt(打折结束日期)。 2. 需求: ① 创建表 ② 计算每个…...
