使用EVE-NG-锐捷实现OSPF

news2025/1/30 12:17:18

一、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.1

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.2

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.3

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.1

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.2

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.3

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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.3

yes

宣告直连网段
宣告          直连网段     反掩码   区域
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

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2284928.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

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

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

2024年记 | 凛冬将至

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

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

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

进程通讯——类型和发展

进程常用交互方法如上

深度学习:从基础到前沿

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

【项目】基于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;这块代码没有什么问题。直接书写…

数据可视化的图表

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;你可以使…

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

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

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

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

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

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

Python 数据分析 - Matplotlib 绘图

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

搭建Spark分布式集群

1&#xff0c;下载 下载 spark-3.5.4-bin-without-hadoop.tgz 地址&#xff1a; https://downloads.apache.org/spark/spark-3.5.4/ 2&#xff0c;安装 通过虚拟机设置共享文件夹将需要的安装包复制到linux虚拟机中 localhost1。虚拟机的共享盘在 /mnt/hgfs/。 将共享盘安装…

新年祝词(原创)

新年将至&#xff0c;福进万户。 家家团圆&#xff0c;事事顺心。 喜迎财神&#xff0c;多寿添金。 瑞兽迎春&#xff0c;炮竹声起。 趋吉避凶&#xff0c;蛇年大吉。 中华崛起&#xff0c;人人自强。 天下大同&#xff0c;百姓富足。 有情有义&#xff0c;平易近人。 …

线上突发:MySQL 自增 ID 用完,怎么办?

线上突发&#xff1a;MySQL 自增 ID 用完&#xff0c;怎么办&#xff1f; 1. 问题背景2. 场景复现3. 自增id用完怎么办&#xff1f;4. 总结 1. 问题背景 最近&#xff0c;我们在数据库巡检的时候发现了一个问题&#xff1a;线上的地址表自增主键用的是int类型。随着业务越做越…

ESP32 I2S音频总线学习笔记(二):I2S读取INMP441音频数据

简介 在这个系列的上一篇文章中&#xff0c;我们介绍了ESP32 I2S音频总线的相关知识&#xff0c;简要了解了什么是I2S总线、它的通信格式&#xff0c;以及相关的底层API函数。没有看过上篇文章的可以点击文章进行回顾&#xff1a; ESP32 I2S音频总线学习笔记&#xff08;一&a…

一文简单回顾Java中的String、StringBuilder、StringBuffer

简单说下String、StringBuilder、StringBuffer的区别 String、StringBuffer、StringBuilder在Java中都是用于处理字符串的&#xff0c;它们之间的区别是String是不可变的&#xff0c;平常开发用的最多&#xff0c;当遇到大量字符串连接的时候&#xff0c;就用StringBuilder&am…

matlab中,fill命令用法

在 MATLAB 中&#xff0c;fill 命令用于创建填充多边形的图形对象。使用 fill 可以在二维坐标系中绘制填充的区域&#xff0c;通常用于绘制图形的背景或显示数据分布。 基本语法 fill(X, Y, C)X 和 Y 是同样长度的向量&#xff0c;定义了多边形的顶点坐标。C 是颜色&#xff0…