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

使用EVE-NG-锐捷实现OSPF

一、OSPF基础知识

Open shortest Path First(OSPF)开放式最短路径优先协议

1.OSPF的关系状态

(1)邻居关系(TWO-WAY)

  • 只发送hello包不发送LSA包(链路状态通告包)

(2)邻接关系(FULL)

  • OSPF设备与设备之间相互建立OSPF关系,初始为邻居关系(TWO-WAY)状态,最终会建立邻接关系(FULL)状态
  • 既发送hello包,又发送LSA包(链路状态通告包)

2.OSPF建立关系的流程

  • R1与R2要建立OSPF关系
  • 一 开始R1与R2处于Down state的状志(R1与R2未建立任何关系)
  • 然后R1会发送hello包到网络(通过组播地址:224.0.0.5)
  • 其他的设备如果也在这个网络中同时也运行着OSPF协议就会监听到这个hello包
  • 此时R2与R1在同一网络中,同时也运行着OSPF协议,R2监听到了R1发的hello包
  • 接着R2会回复一个hello包
  • 当R1收到R2回复的hello包后,R1与R2会进入init state(加载状态)
  • 进入到init状态之后,此时是双向通信
  • 接着会马上过渡到Two-way state 邻居状态(此时未发送具体的路由更新仅在交换hello包)
  • 进入TWO-WAY状态后,是否会往后进行取决于:(如果在two-way状态下,两端设备的端口优先级都为0,此时他们不会往下进行会一直停留在two-way状态(因为两端设备都是DROTHERS)
  • 如果他们会往下进继进行,他们会再次互相发送交换hello包进入EXstart stare状态,在交换hello包的过程中就选出了DR与BDR(若R1与R2端口优先级默认都为1,无法通过端口优先级选出DR与BDR,这时会比较Router-ID的大小来选出DR,Router-ID大的为DR)
  • 在EXstart state状态下他们还会交换DBD消息,用于选举主从(此时发送的DBD消息没有携带路由数据条目境像,主要用于评估出谁先发DBD,此时的DBD信息携带了自己的router-id,通过比较router-id选出谁先发DBD)
  • 比较出来后,R1与R2进入exchange状态,开始第二次发DBD,此时的DBD包含了自己的链路状态数据库镜信息
  • 交换完DBD消息后,会通过LSACK确认是否接收到DBD消息,未接收到会重发
  • 确认接收到后,R1与R2进入Loading state状态,开始交换LSR,LSU,LSACK
  • 交换完后进入FULL State邻接关系状态.

3.OSPF如何维系关系?

  • OSPF通过hello包维系关系
  • 每10S检测一次
  • 对端40S无回应则宣布关系失效

假设R2宕机了其他路由器是怎么判断R2挂掉的?

  • 通过设备之间运行的协议相互发hello包判断
  • 设全网运行了OSPF
  • R1会给R2发hello包
  • 若R2在40S后无回应,则R1会判断出R2挂掉了

4.OSPF为什么会有两种关系状态?

这两种关系是为了面向不同的网络类型的情况

点对点式网络结构

  •  两台设备一条线,两个设备用一条线连接,即点对点式网络
  • R1与R2        R2与R3        R3与R4        R4与R1        都是点对点式网络

广播式网络结构

  • 这些设备都在一个局域网内(一个网段内)设备与设备之间彼些会形成邻居关系
  • R1与R2,R3,R4,R5,R6形成邻居关系
  • R2与R3,R4,R5,R6,R1形成邻居关系
  • R5与R1,R2,R3,R4,R6形成邻居关系..
  • 若R4上有一个新网段,R4将此网段更新给R1,R2,R3,R5,R6
  • 当别的设备收到路由更新时他依然会给他自己的邻居发路由更新
  • R1收到路由更新会给R2,R3,R4,R5,R6发这会出现重复更新的现象。
  • 为了避免这种现象,网络中就形成了不同的关系状态

5.OSPF中的角色

(1)三种角色

  1. DR:大哥角色

  2. BDR:二哥角色

  3. DROTHERS:小弟角色

  • 不同设备扮演不同的角色,不同角色之间形成的关系不一样
  • DROTHERS的路由条目一旦有更新,只会发送给DR和BDR
  • 第一次没有调整OSPF的优先级时,DR和BDR的选举依赖于谁先启动OSPF进程,谁就是DR

  • 设选R1为DR;R5为BDR,其他的设备为DROTHERS
  • 如果R4(DROTHERS)有更新,R4会将更新信息发给R1(DR)与R5(BDR)
  • 然后R1(DR)会把收到的更新发给R2,R6,R3
  • 通过这样的更新方式来减少重复更新
  • BDR只接收信息,不发送信息
  • DROTHERS与DR之间即发送hello包,也发LSA包形成邻接关系(FULL)
  • DROTHERS与DROTHERS之间只会发送hello包不发LSA包(路由信息更新)形成TWO-WAY(邻居关系)

(2)如何选出不同的角色?

通过比较优先级信息,进程标识(router-id)

  • 优先级信息:越大越好,默认=1(OSPF接口优先级)
  • 进程标识(router-id):以一个IP地址格式为代表,X.X.X.X格式,越大越好

(3)不同角色监听的组播地址不一样.

  • 当DROTHERS一旦出现更新信息,他会发送到224.0.0.6上
  • 224.0.0.6这个组播地址只有DR和BDR监听
  • DR会把接收到的更新发送到224.0.0.5上
  • 224.0.0.5这个组播地址是DROTHERS监听
  • DR和BDR也会监听224.0.0.5(用于获取hello包)
  • 224.0.0.5一个组播地址多用途,即用于路由更新,也用于发送hello包
  • 所有设备相互发送的hello包都会发送到224.0.0.5这个组播地址上

6.OSPF的更新机制

(1)OSPF的数据包

  • hello包————检测领居是否还活着
  • DBD包————数据库描述信息包
  • LSR包————链路状态请求包
  • LSU包(包含LSA包:具体的路由信息更新条目)一链路状态更新包
  • LSACK包一链路状态确认信息包

Hello包:

  • Router ID                                                                             路由器的标识符
  • Hello and dead intervals*                                                    hello包时间/死亡时间
  • Neighbors                       
  • Area ID*                                                                               区域ID
  • Router priority                                                                      路由优先级
  • DR IP address                                                                     DR信息
  • BDR IP address                                                                   BDR信息
  • Authentication password*                                                      认证密码
  • Stub area flag *                                                                    末节区域
  • OSPF的Hello包中加星号的,两边的设备参数要一致,不一致两设备无法建立关系

LSA包( Link state Advertise 链路状态通告)

  • 发送全部可以到达目的的路由条目,让对端设备计算到达目的的最优路由路径
  • 通过组播进行更新
  • 发送自己的路由更新,发送到组播地址上,组播地址类似某频道,只有运行了OSPF协议的设备才会监听这个组播地址

(2)OSPF路由更新方式

  • OSPF触发更新:一旦网络发生了变化,他会将更新的,变化的路由条目发送给对端设备(新增的条目和减少的条目都会发)
  • OSPF周期更新:每隔30min(分钟)周期更新一次
  • 更新的路由信息支持非主类(VLSM)条目
  • 非主类掩码(VLSM:可变长子网掩码:如255.255.255.128,255.255.255.192,255.255.255.224,255.255.255.240),可以支持更小的网段

  • 设R1与R2要进行路由更新,R1上有10000条路由条目,R2上有9000条路由条目,R2的9000条路由条目与R1重复。
  • 首先R1与R2建立关系
  • 接着R1与R2相互发送hello包检测对方是否还活着
  • 然后R1会给R2发DBD包(数据库描述信息包,路由条目的镜像)
  • R2收到DBD包后,他会检测自己没有的路由条目
  • 然后R2会给R1发LSR包(链路状态请求包),请求自己没有的那1000条路由条目
  • R1收到LSR包后会给R2发LSU包(链路状态更新包),1000条的路由更新
  • R2收到LSU包后会给R1发LSACK确认包(链路状态确认信息包)
  • 完成路由条目更新

(3)OSPF中的组播地址

  • 224.0.0.5
  • 224.0.0.6

7.OSPF的优点

  • 方便管理
  • 支持VLSM
  • 网络发生变化的时候发送触发式更新
  • 对网络发生的变化能够快速响应

8.OSPF协议如何选择最优路径?

  • 主要参考带宽,谁带宽大就选谁为最优.

9.OSPF内有三张表

  1. 邻居表
  2. 链路状态数据库
  3. 路由表
  • 发送hello包——>接收hello包——>建立OSPF邻居关系——>相互将自己的链路状态数据库发送给对方——>对方收到后,放入自己的链路状态数据库内——>计算出自己的数据库——>计算出最优的路由条目——>放入到自己的路由表内
  • 数据库中保存的是去往目的的所有线路.
  • 整个OSPF网络中一每台设备都知道全网的路径

10.OSPF中的Router-ID

  • RouterID:路由器的标识符(进程标识)
  • OSPF的进程号可以不同
  • 每台设备的Router-ID不可以重复

(1)Route-ID (RID)如何选举?

RI与R2建立OSPF邻居关系

  • 启动OSPF进程时,可以不写rauter-id,也可以形成邻居关系,这时Router~id会自动选举.
  • 本路由器上的loopback环回接口最大将选为RID
  • 如果没有环回口,则会比较本地物理接口,最大的IP将会选举为RID.

(2)Route-ID (RID)的作用

  • 用来选举DR与BDR
  • 如果优先级是0的情况下依靠router-id来选举

11.OSPF区域的概念

  • OSPF设计之初面向中大型网络环境
  • 彼此间更新信息量比较大,设备与设备间相互传递信息,可能会导致整个网络出现频发的更新现象,这时OSPF将一个大型网络做了一个区域划分,让一部分信息只在自己的区域内传递来分割减少不必要的信息发送。
  • OSPF中的骨干区域:指区域0
  • 常规区域:除了区域0以外的区域
  • 常规区域必须和骨干区域是直接相连的

二、项目案例

1.常规OSPF案例

(1)项目拓扑

(2)项目实现

路由器R1配置:

进入特权模式
enable进入全局模式
configure terminal更改名称为R1
hostname R1进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/0接口
interface g0/0将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0开启接口
no shutdown退出到上一级
exit进入环回接口0
interface loopback 0配置环回地址为1.1.1.1/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 1.1.1.1 255.255.255.0退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 1.1.1.1yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.1.0 0.0.0.255 area 0宣告直连网段
宣告          直连网段     反掩码   区域
network 1.1.1.1 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database清理ospf进程
clear ip ospf process显示ospf邻居表信息
show ip ospf neighbor查看是否可与3.3.3.3通信
ping 3.3.3.3

 

 第一次没有调整OSPF的优先级时,DR和BDR的选举依赖于谁先启动OSPF进程,谁就是DR

路由器R2配置:

进入特权模式
enable进入全局模式
configure terminal更改名称为R2
hostname R2进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/1接口
int g0/1将g0/1接口IP地址配置为192.168.1.2/24
ip address 192.168.1.2 255.255.255.0开启接口
no shutdown 退出到上一级
exit进入g0/0接口
interface g0/0将g0/0接口IP地址配置为192.168.2.1/24
ip address 192.168.2.1 255.255.255.0开启接口
no shutdown 退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal 启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.2yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.1.0 0.0.0.255 area 0宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.2.0 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database

 

路由器R3配置:

进入特权模式
enable进入全局模式
configure terminal 更改名称为R3
hostname R3进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/1接口
interface g0/1将g0/1接口IP地址配置为192.168.2.2/24
ip address 192.168.2.2 255.255.255.0开启接口
no shutdown 退出到上一级
exit进入环回接口0
interface loopback 0配置环回地址为3.3.3.3/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 3.3.3.3 255.255.255.0退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal 启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 3.3.3.3yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.2.0 0.0.0.255 area 0宣告直连网段
宣告       直连网段  反掩码   区域
network 3.3.3.0 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database查看是否可与1.1.1.1通信
ping 1.1.1.1

 

2.多进程OSPF案例

  • 假设R1上的网段不能传到R3上
  • R3上的网段不能传到R1上
  • 可以在R2上面启动多个OSPF进程,把R2左边的接口宣告到进程100中,把右边的接口宣告到进程200里
  • 这时R1与R2可建立OSPF邻居关系
  • R2与R3可建立邻居关系
  • 但是R1的条目发送到R2后不会将此条目发给R3
  • 将连接不同设备的接口宣告进不同进程下形成有效分割
  • 同一设备上,不同进程下的邻居不会相互传递路由信息LSA

(1)项目拓扑

(2)项目实现

路由器R1配置:

进入特权模式
enable进入全局模式
configure terminal更改名称为R1
hostname R1进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/0接口
interface g0/0将g0/0接口IP地址配置为192.168.1.1/24
ip address 192.168.1.1 255.255.255.0开启接口
no shutdown退出到上一级
exit进入环回接口0
interface loopback 0配置环回地址为1.1.1.1/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 1.1.1.1 255.255.255.0退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 1.1.1.1yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.1.0 0.0.0.255 area 0宣告直连网段
宣告          直连网段     反掩码   区域
network 1.1.1.1 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database清理ospf进程
clear ip ospf process显示ospf邻居表信息
show ip ospf neighbor

 

路由器R2配置:

进入特权模式
enable进入全局模式
configure terminal更改名称为R2
hostname R2进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/1接口
int g0/1将g0/1接口IP地址配置为192.168.1.2/24
ip address 192.168.1.2 255.255.255.0开启接口
no shutdown 退出到上一级
exit进入g0/0接口
interface g0/0将g0/0接口IP地址配置为192.168.2.1/24
ip address 192.168.2.1 255.255.255.0开启接口
no shutdown 退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal 启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.2yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.1.0 0.0.0.255 area 0退出到上一级
exit启动ospf进程200,200为进程号(1-65535)
router ospf 200配置router-id,通常使用环回接口 IP 地址命名
router-id 2.2.2.3yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.2.0 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database

 

 

路由器R3配置:

进入特权模式
enable进入全局模式
configure terminal 更改名称为R3
hostname R3进入console口配置模式
line console 0开启信息同步。(类似华为设备关闭信息提示)	
logging synchronous	进入g0/1接口
interface g0/1将g0/1接口IP地址配置为192.168.2.2/24
ip address 192.168.2.2 255.255.255.0开启接口
no shutdown 退出到上一级
exit进入环回接口0
interface loopback 0配置环回地址为3.3.3.3/24。环回接口可以模拟一个网段,是虚拟接口,虚拟接口默认是开启状态,不用no shutdown
ip address 3.3.3.3 255.255.255.0退出到上一级
exit退出到上一级
exit显示接口信息
show ip interface brief 进入全局模式
configure terminal 启动ospf进程100,100为进程号(1-65535)
router ospf 100配置router-id,通常使用环回接口 IP 地址命名
router-id 3.3.3.3yes宣告直连网段
宣告          直连网段     反掩码   区域
network 192.168.2.0 0.0.0.255 area 0宣告直连网段
宣告       直连网段  反掩码   区域
network 3.3.3.0 0.0.0.255 area 0退出到上一级
exit退出到上一级
exit显示路由器当前正在运行的包含router关键字的配置信息
show running-config | begin router显示路由表信息
show ip route显示ospf邻居表信息
show ip ospf neighbor 显示ospf数据库信息
show ip ospf database

 

相关文章:

使用EVE-NG-锐捷实现OSPF

一、OSPF基础知识 Open shortest Path First(OSPF)开放式最短路径优先协议 1.OSPF的关系状态 (1)邻居关系(TWO-WAY) 只发送hello包不发送LSA包(链路状态通告包) (2)邻接关系(FULL) OSPF设备与设备之间相互建立OSPF关系,初始为邻居关系(TWO-WAY)状态&#xff0…...

电商系统-用户认证(三)基于公钥解析JWT令牌

一、 基于私钥生成jwt令牌 步骤: 导入认证服务 将shangcheng_user_auth工程导入到项目中去,如下图 启动eureka,再启动认证服务 3) 认证服务中创建测试类 public class CreateJwtTest { ​ /**** 创建令牌测试*/Testpublic voi…...

【论文投稿-第八届智能制造与自动化学术会议(IMA 2025)】HTML, CSS, JavaScript:三者的联系与区别

大会官网:www.icamima.org 目录 前言 一、HTML(超文本标记语言):网页的骨架 HTML 的作用: 例子: 总结: 二、CSS(层叠样式表):网页的外观设计 CSS 的…...

Baklib赋能下的内容中台智能化推荐系统解析与展望

内容概要 在数字化时代,内容中台的智能化推荐系统正逐渐成为各类企业提升用户体验与运营效率的重要工具。该系统通过集成和分析大量用户数据及内容信息,能够实现精准的个性化推荐,为用户提供最相关的内容。 以下是内容中台智能化推荐系统的…...

2024年记 | 凛冬将至

放弃幻想,准备斗争! 考研or就业? 上大学以来,考研上名校在我的心里一直是一颗种子,2024年初,当时的想法是考研和就业两手抓。买了张宇的高数现代,想要死磕! 也记了挺多笔记... 如果…...

虚幻基础08:组件接口

能帮到你的话,就给个赞吧 😘 文章目录 作用 作用 组件接口:可以直接调用对方的组件接口,而无需转换为actor。 实现对象间的通知。 A 通知 B 做什么。...

http3网站的设置(AI不会配,得人工配)

堡塔PHP项目中配置nginx1.26.0设置http3协议 # 文件所在服务器中的路径 /www/server/nginx/conf/nginx.confuser www www; worker_processes auto; error_log /www/wwwlogs/nginx_error.log crit; pid /www/server/nginx/logs/nginx.pid; worker_rlimit_nofile 512…...

数据分析系列--②RapidMiner导入数据和存储过程

一、下载数据 点击下载AssociationAnalysisData.xlsx数据集 二、导入数据 1. 在本地计算机中创建3个文件夹 2. 从本地选择.csv或.xlsx 三、界面说明 四、存储过程 将刚刚新建的过程存储到本地 Congratulations, you are done....

使用iis服务器模拟本地资源服务器unityaddressables热更新出错记录

editor中设置了using exculexing 模拟远程加载addressable可以实现资源热更新,build后的软件却没有成功。 iis服务器中mime中需要设置bundle的文件扩展名,时editor成功,build后失败 原因没有设置hash的扩展名,设置后editor和buil…...

Ubuntu x64下交叉编译ffmpeg、sdl2到目标架构为aarch64架构的系统(生成ffmpeg、ffprobe、ffplay)

一、编译SDL2-2.0.9 (1), ./configure --prefix/home/z/Desktop/sdl2 --enable-sharedyes --enable-nasmno --enable-audiono --enable-ossno --enable-alsano --enable-alsa-sharedno --enable-pulseaudiono --enable-pulseaudio-sharedno …...

进程通讯——类型和发展

进程常用交互方法如上...

深度学习:从基础到前沿

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux】进程地址空间与虚拟地址空间 🔖流水不争,争的是滔滔不 一、深度学习的基础知…...

Node.js与MySQL模块结合:打造安全高效的用户信息管理系统

摘要 本文探讨使用Node.js构建前端项目并导入MySQL模块创建数据库连接对象的方法。文中讲解了共享数据库连接对象,定义SQL语句查询和更新用户信息(排除密码字段以保护隐私),以及根据用户ID更新基本信息、重置密码和更新头像的具体…...

【项目】基于Qt开发的音乐播放软件

目录 项目介绍 项目概述 界面开发 界面分析 创建工程 主界面布局设计 窗口主框架设计 界面美化 主窗口设定 添加图片资源 head处理 播放控制区处理 自定义控件 BtForm 推荐页面 自定义CommonPage 自定义ListItemBox 自定义MusicSlider 自定义VolumeTool 音…...

C语言,无法正常释放char*的空间

问题描述 #include <stdio.h> #include <stdio.h>const int STRSIZR 10;int main() {char *str (char *)malloc(STRSIZR*sizeof(char));str "string";printf("%s\n", str);free(str); } 乍一看&#xff0c;这块代码没有什么问题。直接书写…...

Promise.race

Promise.race 是 JavaScript 中 Promise 对象的一个静态方法&#xff0c;用于将多个 Promise 实例包装成一个新的 Promise 实例。这个新的 Promise 实例会在 最先完成&#xff08;无论是 fulfilled 还是 rejected&#xff09; 的 Promise 完成时完成&#xff0c;并返回该 Promi…...

@RestControllerAdvice 的作用

系列博客目录 文章目录 系列博客目录1.ControllerAdvice 有什么用主要功能 2.与 RestControllerAdvice 的区别3.苍穹外卖中的使用4.RestControllerAdvice可以指定范围吗&#xff08;1&#xff09;指定应用到某些包中的 RestController&#xff08;2&#xff09;指定应用到具有特…...

信息学奥赛一本通 1390:食物链【NOI2001】| 洛谷 P2024 [NOI2001] 食物链

【题目链接】 ybt 1390&#xff1a;食物链【NOI2001】 洛谷 P2024 [NOI2001] 食物链 【题目考点】 1. 种类并查集 2. 带权并查集 【解题思路】 解法1&#xff1a;种类并查集 已知有三类动物A、B、C。A吃B&#xff0c;B吃C&#xff0c;C吃A。 对于B类动物来说&#xff0c…...

MATLAB中fetchOutputs函数用法

目录 语法 说明 示例 在后台运行函数 fetchOutputs函数的功能是从在后台运行的函数中检索结果。 语法 [Y1,...,Ym] fetchOutputs(F) [Y1,...,Ym] fetchOutputs(F,UniformOutputfalse) 说明 [Y1, ..., Ym] fetchOutputs(F) 从 Future 数组 F 中检索出 m 个结果。 F 中…...

数据可视化的图表

1.折线图反映了一段时间内事物连续的动态变化规律,适用于描述一个变量随另一个变量变化的趋势,通常用于绘制连续数据,适合数据点较多的情况。 2.散点图是以直角坐标系中各点的密集程度和变化趋势来表示两种现象间的相关关系&#xff0c;常用于显示和比较数值。当要在不考虑时间…...

简易CPU设计入门:控制总线的剩余信号(四)

项目代码下载 请大家首先准备好本项目所用的源代码。如果已经下载了&#xff0c;那就不用重复下载了。如果还没有下载&#xff0c;那么&#xff0c;请大家点击下方链接&#xff0c;来了解下载本项目的CPU源代码的方法。 CSDN文章&#xff1a;下载本项目代码 上述链接为本项目…...

基础IO(2)

基础IO&#xff08;2&#xff09; 理解“⼀切皆⽂件” ⾸先&#xff0c;在windows中是⽂件的东西&#xff0c;它们在linux中也是⽂件&#xff1b;其次⼀些在windows中不是⽂件的东西&#xff0c;⽐如进程、磁盘、显⽰器、键盘这样硬件设备也被抽象成了⽂件&#xff0c;你可以使…...

Java数据库操作指南:快速上手JDBC【学术会议-2025年数字化教育与信息技术(DEIT 2025】

大会官网&#xff1a;www.ic-deit.org 前言 在现代企业应用中&#xff0c;数据库是数据存储和管理的重要组成部分。Java作为一种广泛使用的编程语言&#xff0c;提供了多种方式与数据库进行交互。本文将介绍 JDBC&#xff08;Java Database Connectivity&#xff09;&#x…...

IDM-VTON本地部署教程:双重编码 + 文字提示,解锁真实野外试穿

一、介绍 IDM-VTON&#xff1a;改进扩散模型&#xff0c;实现真实的野外虚拟试穿。 技术原理&#xff1a;改进扩散模型&#xff0c;利用视觉编码器提取服装高级语义信息并与交叉注意力层融合&#xff0c;通过并行 UNet 结构的 GarmentNet 捕捉服装低级特征并与自注意力层结合&…...

编译安装PaddleClas@openKylin(失败,安装好后报错缺scikit-learn)

编译安装 前置需求&#xff1a; 手工安装swig和faiss-cpu pip install swig pip install faiss-cpu 小技巧&#xff0c;pip编译安装的时候&#xff0c;可以加上--jobs64来多核编译。 注意先升级pip版本&#xff1a;pip install pip -U pip3 install faiss-cpu --config-s…...

【2024年华为OD机试】 (C卷,200分)- 矩阵匹配(JavaScriptJava PythonC/C++)

一、问题描述 问题描述 给定一个大小为 ( N \times M )&#xff08;( N \leq M )&#xff09;的矩阵&#xff0c;从中选出 ( N ) 个数&#xff0c;要求任意两个数字不能在同一行或同一列。求选出来的 ( N ) 个数中第 ( K ) 大的数字的最小值。 输入描述 输入矩阵要求&#…...

FileReader使用

FileReader : 读取文件内容的api&#xff0c;&#xff0c;&#xff0c;在前端处理上传的文件&#xff0c;&#xff0c;比如预览图片 readAsDataURL(file) &#xff1a; 读取为base64编码的 data urlreadAsText() &#xff1a; 读取为文本readAsArrayBuffer() : 读取为二进制 …...

AI 浪潮席卷中国年,开启科技新春新纪元

在这博主提前祝大家蛇年快乐呀&#xff01;&#xff01;&#xff01; 随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;其影响力已经渗透到社会生活的方方面面。在中国传统节日 —— 春节期间&#xff0c;AI 技术也展现出了巨大的潜力&#xff0c;为中国年带…...

Python 数据分析 - Matplotlib 绘图

Python 数据分析 - Matplotlib 绘图 简介绘图折线图单线多线子图 散点图直方图条形图纵置横置多条 饼图 简介 Matplotlib 是 Python 提供的一个绘图库&#xff0c;通过该库我们可以很容易的绘制出折线图、直方图、散点图、饼图等丰富的统计图&#xff0c;安装使用 pip install…...

适配器模式——C++实现

目录 1. 适配器模式简介 2. 角色组成 3. 代码示例 4. 适配器模式、装饰器模式、外观模式的辨析 1. 适配器模式简介 适配器模式是一种结构型模式。 适配器模式的定义&#xff1a;适配器模式将一个类的接口&#xff0c;转换成客户期望的另一个接口。适配器让原本接口不可兼容…...