使用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)三种角色
-
DR:大哥角色
-
BDR:二哥角色
-
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内有三张表
- 邻居表
- 链路状态数据库
- 路由表
- 发送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)状态࿰…...
解决使用Selenium时ChromeDriver版本不匹配问题
在学习Python爬虫过程中如果使用Selenium的时候遇到报错如下session not created: This version of ChromeDriver only supports Chrome version 99… 这说明当前你的chrome驱动版本和浏览器版本不匹配。 例如 SessionNotCreatedException: Message: session not created: This…...
景联文科技加入AIIA联盟数据标注分委会
2025年1月16日,中国人工智能产业发展联盟(简称AIIA)数据委员会数据标注分委会(以下简称“分委会”)正式成立。景联文科技成为第一批AIIA联盟数据标注分委会委员单位。 数据标注分委会的成立旨在搭建数据标注领域产学研…...
IoTDB结合Mybatis使用示例(增删查改自定义sql等)
IoTDB时序库是当前越来越流行以及基于其优势各大厂商越来越易接受的国产开源时序数据库,针对IoTDB的内容不做过多介绍,在使用该时序库时,往往有一定入门门槛,不同于关系型数据库或文档型数据库那般方便维护和接入开发,…...
穷举vs暴搜vs深搜vs回溯vs剪枝系列一>解数独
题目: 解析: 部分决策树: 代码设计&剪枝&回溯: 代码: class Solution {private boolean[][] row, col;private boolean[][][] gird; public void solveSudoku(char[][] board) {//下标->数字ÿ…...
C#@符号在string.Format方法中作用
本文详解@符号在string.Format方法中作用。...
mysql 学习2 MYSQL数据模型,mysql内部可以创建多个数据库,一个数据库中有多个表;表是真正放数据的地方,关系型数据库 。
在第一章中安装 ,启动mysql80 服务后,连接上了mysql,那么就要 使用 SQL语句来 操作mysql数据库了。那么在学习 SQL语言操作 mysql 数据库 之前,要对于 mysql数据模型有一个了解。 MYSQL数据模型 在下图中 客户端 将 SQL语言&…...
JVM栈溢出线上环境排查
#查看当前Linux系统进程ID、线程ID、CPU占用率(-eo后面跟想要展示的列) ps H -eo pid,tid,%cpups H -eo pid,tid,%cpu |grep tid #使用java jstack 查看进程id下所有线程id的情况 jstack pid 案例2 通过jstack 排查死锁问题 #启动java代码 jstack 进…...
【vue3组件】【大文件上传】【断点续传】支持文件分块上传,能够在上传过程中暂停、继续上传的组件
一、概述 本示例实现了一个基于 Vue3 和 TypeScript 的断点上传功能。该功能支持文件分块上传,能够在上传过程中暂停、继续上传,并且支持检测已经上传的分块,避免重复上传,提升上传效率。以下是关键的技术点与实现流程࿱…...
Kafka运维宝典 (三)- Kafka 最大连接数超出限制问题、连接超时问题、消费者消费时间超过限制问题详细介绍
Kafka运维宝典 (三) 文章目录 Kafka运维宝典 (三)一、Kafka Broker 配置中的最大连接数超出限制问题1. 错误原因2. 相关 Kafka 配置参数2.1 connections.max2.2 max.connections.per.ip2.3 num.network.threads2.4 connections.ma…...
【135. 分发糖果 困难】
题目: n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子分发糖果,计…...
AAAI2024论文解读|HGPROMPT Bridging Homogeneous and Heterogeneous Graphs
论文标题 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning 跨同构异构图的小样本提示学习 论文链接 HGPROMPT: Bridging Homogeneous and Heterogeneous Graphs for Few-shot Prompt Learning论文下载 论文作者 Xingtong Yu, Yuan…...
算法题(49):反转链表II
审题: 需要我们对指定范围的链表进行反转,并返回反转后链表的头结点 思路: 方法一:vector法 我们先遍历一次链表,并把数据对应的存在数组中,然后利用数组的reverse方法进行反转数据,最后再遍历一…...
代码随想录day20
235. 利用二叉搜索树的特性即可 /** lc appleetcode.cn id235 langcpp** [235] 二叉搜索树的最近公共祖先*/// lc codestart /*** Definition for a binary tree node.* struct TreeNode {* int val;* TreeNode *left;* TreeNode *right;* TreeNode(int x) :…...
文档智能扫描,提升无纸化办公效率
随着无纸化办公的推广和移动设备的普及,用户迫切需要将纸质文档快速、准确地转换成电子格式,以提高工作效率和信息管理的便捷性。同时,用户将文档扫描成电子版后,可以自行通过加密和访问控制提高电子文档的安全性,以满…...
差分等长的原理
差分等长是指在设计差分信号传输线路时,保证两条差分线的长度尽量一致,长度之差在一个合理的范围内。这是为了确保两个差分信号时刻保持相反极性,减少共模分量,从而提高信号传输的质量。 在差分信号传输中,两条差分线…...
“““【运用 R 语言里的“predict”函数针对 Cox 模型展开新数据的预测以及推理。】“““
主题与背景 本文主要介绍了如何在R语言中使用predict函数对已拟合的Cox比例风险模型进行新数据的预测和推理。Cox模型是一种常用的生存分析方法,用于评估多个因素对事件发生时间的影响。文章通过具体的代码示例展示了如何使用predict函数的不同参数来获取生存概率和…...
真正理解std::move
std::move的作用只有一个,那就是把一个左值强制转换为右值,有了这个右值,右值允许的任何操作就可以实施了。比如:1. 这个右值可以赋给一个左值变量,2. 这个右值可以被一个右值引用来引用。 class A {public:A(int n):…...
Vue3.5 企业级管理系统实战(三):页面布局及样式处理 (Scss UnoCSS )
本章主要是关于整体页面布局及样式处理,在进行这一章代码前,先将前两章中的示例代码部分删除(如Home.vue、About.vue、counter.ts、App.vue中引用等) 1 整体页面布局 页面整体布局构成了产品的框架基础,通常涵盖主导…...
Python3 【函数】项目实战:5 个新颖的学习案例
Python3 【函数】项目实战:5 个新颖的学习案例 本文包含5编程学习案例,具体项目如下: 简易聊天机器人待办事项提醒器密码生成器简易文本分析工具简易文件加密解密工具 项目 1:简易聊天机器人 功能描述: 实现一个简易…...
17.Word:李楠-学术期刊❗【29】
目录 题目 NO1.2.3.4.5 NO6.7.8 NO9.10.11 NO12.13.14.15 NO16 题目 NO1.2.3.4.5 另存为手动/F12Fn光标来到开头位置处→插入→封面→选择花丝→根据样例图片,对应位置填入对应文字 (手动调整即可)复制样式:开始→样式对话框→管理…...
基于GS(Gaussian Splatting)的机器人Sim2Real2Sim仿真平台
项目地址:RoboGSim 背景简介 已有的数据采集方法中,遥操作(下左)是数据质量高,但采集成本高、效率低下;传统仿真流程成本低(下右),但真实度(如纹理、物理&…...
基于Django的豆瓣影视剧推荐系统的设计与实现
【Django】基于Django的豆瓣影视剧推荐系统的设计与实现(完整系统源码开发笔记详细部署教程)✅ 目录 一、项目简介二、项目界面展示三、项目视频展示 一、项目简介 该系统采用了Python作为后端开发语言,采用Django作为后端架构,结…...
提升企业内部协作的在线知识库架构与实施策略
内容概要 在当前快速变化的商业环境中,企业对于提升内部协作效率的需求愈显迫切。在线知识库作为信息存储与共享的平台,成为了推动企业数字化转型的重要工具。本文将深入探讨如何有效打造与实施在线知识库,强调架构设计、知识资产分类管理及…...
Vuex中的getter和mutation有什么区别
在现代前端开发中,状态管理是一个不可忽视的话题,而Vuex作为Vue.js的官方状态管理库,在大型应用中扮演着至关重要的角色。当我们使用Vuex进行状态管理时,getter和mutation是两个重要的概念。虽然它们都是用来处理状态的࿰…...
springboot 动态线程池
在Spring Boot中,可以使用ThreadPoolTaskExecutor类来创建动态线程池。以下是一个示例: 首先,需要在配置文件中配置线程池的属性,例如最小线程数、最大线程数、线程存活时间等。可以在application.properties或application.yml中…...
Android - 通过Logcat Manager简单获取Android手机的Log
由于工作需要,经常需要获取Android手机的Log。 平常都是通过adb命令来获取,每次都要写命令。 偶然的一个机会,我从外网发现了一个工具 Logcat Manager,只需要通过简单的双击即可获取Android的Log,这里也分享一下。 目…...
qt-QtQuick笔记之常见项目类简要介绍
qt-QtQuick笔记之常见项目类简要介绍 code review! 文章目录 qt-QtQuick笔记之常见项目类简要介绍1.QQuickItem2.QQuickRectangle3.QQuickImage4.QQuickText5.QQuickBorderImage6.QQuickTextInput7.QQuickButton8.QQuickSwitch9.QQuickListView10.QQuickGridView11.QQuickPopu…...
C语言【基础篇】之流程控制——掌握三大结构的奥秘
流程控制 🚀前言🦜顺序结构💯 定义💯执行规则 🌟选择结构💯if语句💯switch语句💯case穿透规则 🤔循环结构💯for循环💯while循环💯do -…...
LeetCode100之全排列(46)--Java
1.问题描述 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案 示例1 输入:nums [1,2,3] 输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]] 示例2 输入:nums [0,1] 输出…...
html、js、css实现爱心效果
好的!我们可以进一步美化这个爱心效果,增加更多动态和视觉吸引力。以下是改进后的代码,包括以下功能: 1. 背景渐变:添加动态背景渐变效果。 2. 爱心阴影:为爱心添加阴影,使其更具立体感。 3. 随…...
记录 | 基于Docker Desktop的MaxKB安装
目录 前言一、MaxKBStep 1Step2 二、运行MaxKB更新时间 前言 参考文章:如何利用智谱全模态免费模型,生成大家都喜欢的图、文、视并茂的文章! MaxKB的Github下载地址 参考视频:【2025最新MaxKB教程】10分钟学会一键部署本地私人专属…...
信息学奥赛一本通 2110:【例5.1】素数环
【题目链接】 ybt 2110:【例5.1】素数环 【题目考点】 1. 深搜回溯 2. 质数 【解题思路】 1~n的数字构成一个环,要求相邻数字加和必须是质数。 该题最终输出的是一个序列,只不过逻辑上序列最后一个数字的下一个数字就是序列的第一个数字…...
5.1.4 软件工具+开发环境
文章目录 软件工具软件开发环境 软件工具 软件工具是辅助软件工程实施的软件,也叫CASE工具。软件工具可分为支持软件开发过程的工具、软件维护工具、软件管理工具3类。 支持软件开发过程的工具 需求分析工具:从需求定义制定出功能规范,描述软…...
嵌入式知识点总结 Linux驱动 (四)-中断-软硬中断-上下半部-中断响应
针对于嵌入式软件杂乱的知识点总结起来,提供给读者学习复习对下述内容的强化。 目录 1.硬中断,软中断是什么?有什么区别? 2.中断为什么要区分上半部和下半部? 3.中断下半部一般如何实现? 4.linux中断的…...
【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
一、使用pytorch框架实现逻辑回归 1. 数据部分: 首先自定义了一个简单的数据集,特征 X 是 100 个随机样本,每个样本一个特征,目标值 y 基于线性关系并添加了噪声。将 numpy 数组转换为 PyTorch 张量,方便后续在模型中…...
21款炫酷烟花合集
系列专栏 《Python趣味编程》《C/C趣味编程》《HTML趣味编程》《Java趣味编程》 写在前面 Python、C/C、HTML、Java等4种语言实现18款炫酷烟花的代码。 Python Python烟花① 完整代码:Python动漫烟花(完整代码) Python烟花② 完整…...
【8】思科IOS AP升级操作
1.概述 本文主要针对思科AP的升级操作进行记录,思科的AP目前主要分为IOS和COS AP,IOS AP是我们常见的AP3502/AP1602/AP2702等等型号的AP,而COS AP是AP2802/3802等型号的AP。当然这里所指的都是一些室内AP,如AP1572等室外AP也同样适用。本文先对IOS AP的升级操作进行总结,…...
Continuous Batching 连续批处理
原始论文题目: Continuous Batching — ORCA: a distributed serving system for Transformer-based generative models 关键词: Continuous Batching, iteration-level scheduling, selective batching 1.迭代级调度(iteration-level scheduling) Orca系统又由几个关键…...
如何解决小尺寸图像分割中的样本不均衡问题
1. 生成对抗数据增强(Copy-Paste Augmentation) 原理:将稀有目标的像素块复制粘贴到其他图像中,低成本生成平衡数据。 适用场景:小目标(如车辆、船只)或极端稀疏类别(如灾害损毁区域…...
obsidian插件——Metadata Hider
原本是要找导出图片时显示属性的插件,奈何还没找到,反而找到了可以隐藏属性的插件。唉,人生不如意,十之八九。 说一下功能: 这个插件可以把obsidian的文档属性放在右侧显示,或者决定只显示具体几项属性&a…...
Ubuntu 20.04 Realtek 8852无线网卡驱动
个人博客地址:Ubuntu 20.04 Realtek 8852无线网卡驱动 | 一张假钞的真实世界 sudo apt-get update sudo apt-get install make gcc linux-headers-$(uname -r) build-essential gitgit clone https://github.com/lwfinger/rtw89.git -b v5 cd rtw89 && mak…...
神经网络|(六)概率论基础知识-全概率公式
【1】引言 在前序学习进程中,我们已经对条件概率做了分析,知晓了古典概型下,求某个条件下某事件发生的概率,应该是计算促成条件发生的事件和要求的某事件都发生的综合概率。 再次回忆一下条件概率的定义: 条件概率就…...
LLM推理优化:数据、模型与系统级策略
标题:“LLM推理优化:数据、模型与系统级策略” 文章信息摘要: 文章探讨了大语言模型(LLM)推理优化的多层次策略,包括数据级、模型级和系统级优化。数据级优化通过输入压缩和提示工程提升效率;模…...
人工智能在医疗领域的应用有哪些?
人工智能在医疗领域的应用十分广泛,涵盖了诊断、治疗、药物研发等多个环节,以下是一些主要的应用: 医疗影像诊断 疾病识别:通过分析 X 光、CT、MRI 等影像,人工智能算法能够识别出肿瘤、结节、骨折等病变,…...
K8S极简教程(4小时快速学会)
1. K8S 概览 1.1 K8S 是什么 K8S官网文档:https://kubernetes.io/zh/docs/home/ 1.2 K8S核心特性 服务发现与负载均衡:无需修改你的应用程序即可使用陌生的服务发现机制。存储编排:自动挂载所选存储系统,包括本地存储。Secret和…...
大数据学习之SCALA分布式语言三
7.集合类 111.可变set一 112.可变set二 113.不可变MAP集合一 114.不可变MAP集合二 115.不可变MAP集合三 116.可变map一 package com . itbaizhan . chapter07 //TODO 2. 使用 mutable.Map 前导入如下包 import scala . collection . mutable // 可变 Map 集合 object Ma…...
[免费]基于Python的Django博客系统【论文+源码+SQL脚本】
大家好,我是java1234_小锋老师,看到一个不错的基于Python的Django博客系统,分享下哈。 项目视频演示 【免费】基于Python的Django博客系统 Python毕业设计_哔哩哔哩_bilibili 项目介绍 随着互联网技术的飞速发展,信息的传播与…...
ES设置证书和创建用户,kibana连接es
1、启动好es 2、进入es容器 docker exec -it es /bin/bash 3、生成ca证书 ./bin/elasticsearch-certutil ca 注:两个红方框位置直接回车 4、生成cert证书 ./bin/elasticsearch-certutil cert --ca elastic-stack-ca.p12 注:前两个红框直接回车&am…...
“大模型横扫千军”背后的大数据挖掘--浅谈MapReduce
文章目录 O 背景知识1 数据挖掘2 邦费罗尼原则3 TF.IDF4 哈希函数5 分布式文件系统 一、MapReduce基本介绍1. Map 任务2. 按键分组3. Reduce 任务4. 节点失效处理5.小测验:在一个大型语料库上有100个map任务和若干reduce任务: 二、基于MapReduce的基本运…...