ospf协议(动态路由协议)

news2024/11/29 20:26:53

ospf基本概念

定义

OSPF 是典型的链路状态路由协议,是目前业内使用非常广泛的 IGP 协议之一。
目前针对 IPv4 协议使用的是 OSPF Version 2 RFC2328 );针对 IPv6 协议使用 OSPF Version 3 RFC2740 )。
运行 OSPF 路由器之间交互的是 LS Link State ,链路状态)信息,而不是直接交互路由。 LSA 信息是 OSPF 能够正常进行拓扑及路由计算的关键信息。
OSPF 路由器将网络中的 LSA 信息收集起来,存储在 LSDB 中。路由器都清楚区域内的网络拓扑结构,这有助于路由器计算无环路径。
每台 OSPF 路由器都采用 SPF 算法计算达到目的地的最短路径。路由器依据这些路径形成路由加载到路由表中。
OSPF 支持 VLSM Variable Length Subnet Mask ,可变长子网掩码),支持手工路由汇总。
多区域的设计使得 OSPF 能够支持更大规模的网络。

ospf基础术语-区域

OSPF Area 用于标识一个 OSPF的区域,使用十进制数或类似于IP地址方式,但是没有IP地址的意义。
区域是从逻辑上将设备划分为不同的组,每个组用区域号( Area ID )来标识。
两种区域类型
  • 骨干区域:区域0 存在并且唯一
  • 非骨干区域:非0区域
注意:
  • 区域的划分是基于接口的,不是基于路由器的,一个路由器可以属于不同的区域。
  • 非骨干区域必须与骨干区域相连接。

ospf基础术语-router-id

Router-ID Router Identifier ,路由器标识符),用于在一个 OSPF 域中唯一地标识一台路由器
Router-ID 的设定可以通过手工配置的方式,或使用系统自动配置的方式

Router-ID的选举规则:

  1. 手工配置最优;
  2. 选用路由器全局Router-ID:
    1.  最先配置的IP地址;
    2.  如果最先配置的IP地址被删除或修改,则优选最大的虚拟地址(loopback地址),再优选最大的物理地址
  3. ospf router-id不具备抢占特性,除非设备重启或重置ospf进程

ospf基础术语-度量值

OSPF使用Cost(开销)作为路由的度量值。 每一个激活了 OSPF 的接口都会维护一个接口 Cost 值,缺省时 接口 Cost = 100  Mbit / s除以 接口带宽。 其中100 Mbit/sOSPF 指定的缺省参考值,该值是可配置的
笼统地说,一条OSPF路由的Cost值可以理解为是从目的网段到本路由器沿途所有入接口的Cost值累加。

ospf路由器角色

区域内路由器(Internal Router-IR)-区域内路由器是 OSPF 自治系统中的基本路由器类型之一。它的所有接口都被分配到同一个 OSPF 区域内。通常情况下,这些路由器在网络拓扑中处于较低的层次,负责局部的路由选择和转发任务。

区域边界路由器(Area Border Router - ABR)-区域边界路由器连接了骨干区域和非骨干区域,因此它在 OSPF AS 中扮演着关键的角色。ABR 可以通过物理连接或逻辑连接连接到骨干区域。

骨干路由器(Backbone Router-BR)-骨干路由器在 OSPF AS 中扮演着核心的角色,负责连接整个自治系统并提供路由信息的交换。它至少一个接口必须连接到骨干区域,可以同时连接到其他区域。

自治系统边界路由器(Autonomous System Boundary Router - ASBR)-ASBR 负责将来自其他自治系统的路由信息引入本自治系统,并将本自治系统的路由信息传递到其他自治系统。它可能位于自治系统的边界,也可能位于自治系统内部。

链路状态路由协议的运算过程

链路状态路由协议有四个步骤
  • 第一步是建立相邻路由器之间的邻居关系。
  • 第二步是邻居之间交互链路状态信息和同步LSDB
  • 第三步是进行优选路径计算。
  • 第四步是根据最短路径树生成路由表项加载到路由表。

ospf中的三大表项

邻居表

对于OSPF的邻居表,需要了解:

  • OSPF在传递链路状态信息之前,需先建立OSPF邻居关系。
  • OSPF的邻居关系通过交互Hello报文建立。
  • OSPF邻居表显示了OSPF路由器之间的邻居状态,使用display ospf peer查看。

链路状态数据库-LSDB

对于OSPF的LSDB表,需要了解:

  • LSDB会保存自己产生的及从邻居收到的LSA信息,本例中R1LSDB包含了三条LSA
  • Type标识LSA的类型,AdvRouter标识发送LSA的路由器。
  • 使用命令行display ospf lsdb查看LSDB表。

ospf路由表

对于OSPF路由表,需要了解:

  • OSPF路由表和路由器路由表是两张不同的表项。本例中OSPF路由表有三条路由。
  • OSPF路由表包含DestinationCostNextHop等指导转发的信息。
  • 使用命令display ospf routing查看OSPF路由表。

ospf的网络类型

  • 在学习DRBDR的概念之前,需要首先了解OSPF的网络类型。

  • OSPF网络类型是一个非常重要的接口变量,这个变量将影响OSPF在接口上的操作,例如采用什么方式发送OSPF协议报文,以及是否需要选举DRBDR等。

  • 接口默认的OSPF网络类型取决于接口所使用的数据链路层封装。

  • 如图所示,OSPF的有四种网络类型,BroadcastNBMAP2MPP2P

一般情况下,链路两端的OSPF接口网络类型必须一致,否则双方无法建立邻居关系

OSPF网络类型可以在接口下通过命令手动修改以适应不同网络场景,例如可以将BMA网络类型修改为P2P

BMA(Broadcast Multiple Access,广播式多路访问)

  • BMA也被称为Broadcast,指的是一个允许多台设备接入的、支持广播的环境。
  • 典型的例子是Ethernet(以太网)。当接口采用Ethernet封装时,OSPF在该接口上采用的缺省网络类型为BMA

NBMA(Non-Broadcast Multiple Access,非广播式多路访问)

  • NBMA指的是一个允许多台网络设备接入且不支持广播的环境。
  • 典型的例子是帧中继(Frame-Relay)网络。

P2P(Point-to-Point,点对点)

  • P2P指的是在一段链路上只能连接两台网络设备的环境。
  • 典型的例子是PPP链路。当接口采用PPP封装时,OSPF在该接口上采用的缺省网络类型为P2P

P2MP(Point to Multi-Point,点到多点)

  • P2MP相当于将多条P2P链路的一端进行捆绑得到的网络。
  • 没有一种链路层协议会被缺省的认为是P2MP网络类型。该类型必须由其他网络类型手动更改。
  • 常用做法是将非全连通的NBMA改为点到多点的网络。

DR和BDR

MAMulti-Access)多路访问网络有两种类型:广播型多路访问网络(BMA)非广播型多路访问网络(NBMA)。以太网(Ethernet)是一种典型的广播型多路访问网络。

MA网络中,如果每台OSPF路由器都与其他的所有路由器建立OSPF邻接关系,便会导致网络中存在过多的OSPF邻接关系,增加设备负担,也增加了网络中泛洪的OSPF报文数量

当拓扑出现变更,网络中的LSA泛洪可能会造成带宽的浪费和设备资源的损耗

为优化MA网络中OSPF邻接关系,OSPF指定了三种OSPF路由器身份,DRDesignated Router,指定路由器)、BDRBackup Designated Router,备用指定路由器)和DRother路由器。

只允许DR、BDR与其他OSPF路由器建立邻接关系。DRother之间不会建立全毗邻的OSPF邻接关系,双方停滞在2-way状态。

BDR会监控DR的状态,并在当前DR发生故障时接替其角色。

DR和BDR的选举规则:

  • OSPF DR优先级值大的接口成为该MADR,第二大的成为BDR。
  • 如果优先级值相等(默认为1),则具有更大的OSPF Router-ID的路由器(的接口)被选举成DR,第二大的成为BDR,并且DR具有非抢占性。

注意:

  1. 只有在广播和NBMA 的链路上才会选举DR和BDR,在P2P 和P2MP 的链路上不会选举DR和BDR。
  2. DR 是针对一个网段内的设备选举的,对于一台路由器来说,可能它在某个接口上是DR,在其它接口上是BDR、DROther,或者因为是P2P 的链路而不参加DR 的选举。
  3. 在广播的网络上必须存在DR 才能够正常工作,但BDR 不是必需的。
  4. 一个网段中即使只有一台路由器,也要选举DR。
  5. 由于“终身制”的原因,网段中的DR 不一定是priority 最高的,但通常是“来的早”的路由器。

ospf协议的报文类型

OSPF使用5种不同的报文类型。每种类型用于支持不同的,专门的网络功能:

  • Hello报文:发现和维护邻居关系。
  • DD报文(数据库描述):交互链路状态数据库摘要。
  • LSR(链路状态请求):请求特定的链路状态信息。
  • LSU(链路状态更新):发送详细的链路状态信息。
  • LSACK(链路状态确认):对链路状态信息进行确认。

ospf的状态机

(1)邻居建立状态变化过程

1、Down状态:这是邻居的初始状态,表示没有从邻居收到任何信息。

启用了OSPF功能的链路默认成为down状态,并开始向外发送Hello报文(基于网络类型的不同发送方式也会不同,广播类型Hello为组播发送)。

注意:OSPF的每条链路都会经历状态机,每条OSPF链路的状态机互不影响。

启用OSPF的链路从Down状态开始,向外发送Hello报文。

2、Init状态:在此状态下,路由器已经从邻居收到了Hello报文。

在Init状态下的链路,如果接收到传来的Hello包中含有自己的router-id,则表示对端已经发现了自己,此时链路就能成为2-way状态了。

3、Attempt状态(NBMA)

该状态仅发生在NBMA网络中,表明该链路在发送Hello报文之后,到达了失效时间(dead interval)仍然没有收到对端回复Hello报文。如果Router Dead Interval间隔内未收到邻居的Hello报文,则转为Down状态。

处于该状态下的链路仍然会向对端发送Hello报文。

4、2-way状态:在此状态下,双向通信已经建立,但是没有与邻居建立邻接关系。这是建立邻接关系以前的最高级状态。

(2)邻接建立状态变化过程

5、ExStart:这是形成邻接关系的第一个步骤,邻居状态变成此状态以后,路由器开始向邻居发送DD报文,主从关系是在此状态下形成的。初始DD序列号是在此状态下决定的,在此状态下发送的DD报文不包含链路状态描述。

6、Exchange:此状态下路由器相互发送包含链路状态信息摘要的DD报文,描述本地LSDB的内容。

7、Loading:相互发送LSRequest报文请求LSA,发送LSUpdate通告LSA。

8、Full:两台路由器的LSDB已经同步。

OSPF的3种稳定状态:

什么是稳定的状态?即链路状态会长时间所处的状态机。

在OSPF状态机中,有三个稳定的状态机状态:Down、2-way、Full

  • Down:启用OSPF功能的链路默认所处状态机或者邻居失效后的状态。
  • 2-way:在交互了Hello报文建立邻居之后所处的状态,DR-Other与DR-Other之间所处的状态。
  • Full:在邻接建立成功之后的状态,也是OSPF的最终状态。

ospf邻接关系建立过程

OSPF完成邻接关系的建立有四个步骤,即建立邻居关系、协商主/从、交互LSDB信息,同步LSDB

建立邻居关系

当一台 OSPF 路由器收到其他路由器发来的首个 Hello 报文时会从初始 Down 状态切换为 Init 状态。
OSPF 路由器收到的 Hello 报文中的邻居字段包含自己的 Router ID 时,从 Init 切换 2-way 状态。

协商主/从、交互LSDB信息

邻居状态机从 2-way 转为 Exstart 状态后开始主从关系选举:
R1 R2 发送的第一个 DD 报文内容为空,其 Seq 序列号假设为 X
R2 也向 R1 发出第一个 DD 报文,其 Seq 序列号假设为 Y
选举主从关系的规则是比较Router ID,越大越优 R2 Router ID R1 大, 因此 R2 成为真正的主设备。主从关系比较结束后, R1 状态从 Exstart 转变为 Exchange
R1 邻居状态变为 Exchange 后, R1 发送一个新的 DD 报文,包含自己 LSDB 的描述信息,其序列号采用主设备 R2 的序列号。 R2 收到后邻居状态从 Exstart 转变为 Exchange
R2 R1 发送一个新的 DD 报文,包含自己 LSDB 的描述信息,序列号为 Y+1
R1 作为从路由器需要对主路由 R2 发送的每个 DD 报文进行确认,回复报文的序列号与主路由 R2 一致。
发送完最后一个 DD 报文后, R1 将邻居状态切换为 Loading

同步LSDB

邻居状态转变为 Loading 后, R1 R2 发送 LSR 报文,请求那些在 Exchange 状态下通过 DD 报文发现的,但是在本地 LSDB 中没有的 LSA
R2 收到后向 R1 回复 LSU 。在 LSU 报文中包含被请求的 LSA 的详细信息。
R1 收到 LSU 报文后,向 R2 回复 LS ACK 报文,确认已接收到,确保信息传输的可靠性。
此过程中 R2 也会向 R1 发送 LSA 请求。当两端 LSDB 完全一致时,邻居状态变为 Full ,表示成功建立邻接关系。

虚链路

为了避免区域间的环路,OSPF规定不允许直接在两个非骨干区域之间发布路由信息只允许在一个区域内部或者在骨干区域和非骨干区域之间发布路由信息。因此,每个非骨干区域都必须连接到骨干区域,同时骨干区域也必须连续
        但由于网络设计、升级、合并、改造等因素,从而造成不规范区域架构,最终导致路由学习不完整,解决方法就是使用虚链路

ospf支持一种名叫虚链路(virtual link)的特性,当非骨干区域与骨干区域之间没法建立物理连接的情况下,可利用该特性来建立逻辑连接,虚链路的用途如下:

  • 当非骨干区域与骨干区域之间无法通过物理链路直连时,可让两者之间通过这种逻辑链路互连。
  • 可用来防止骨干区域的“分裂”,或可用来把发生“分裂”的骨干区域合并。

虚链路使用场景:

场景一:

在上图中,区域2只能与区域1直连,而无法与骨干区域直连,在这种情况下,由于area 2没有与骨干区域直连,最终导致area 2无法学习到其他区域的路由信息,在这种情况下,需要通过OSPF虚链路将骨干区域的范围扩展到相邻的区域1,如下图:

在进行OSPF虚链路扩展后,区域1被虚拟成了骨干区域,而这时的R3等同于连接骨干区域和区域2的ABR(因为有一个virtual接口在区域0,因此变成了ABR),所以可以将自己所有的LSA发进区域2。在扩展OSPF虚链路时,是通过连接R2(ABR)与R3(ABR)的Router-ID 来建立的。

场景二:

因为OSPF虚链路(Virtual Link)能将骨干区域扩展到相邻的常规区域,从而将常规区域虚拟为骨干区域,所以在某些情况下,如公司合并,或者为了备份骨干区域,可能出现骨干区域被常规区域所隔离,如下图:

图中骨干区域被区域1分割为两部分,将使得骨干区域自己的路由无法相互传递,在使用OSPF虚链路后,可以将区域1也扩展为骨干区域,如下图:

在经过OSPF虚链路将区域1也扩展为骨干区域后,可见所有的区域都变成了骨干区域,从而使网络中骨干区域能够收到另外一边被分割的骨干区域的路由,并且最后骨干区域自己的路由都为Intra-Area Route。

参考:OSPF虚链路技术原理与注意点-CSDN博客

ospf各类LSA介绍

OSPF LSA 链路状态通告( Link status announcement),作用于向其它邻接OSPF路由器传递拓扑信息路由信息

OSPF路由器通过不同类型的LSA组建成LSDB数据库(链路状态数据库)再通过SPF算法计算出最优的OSPF路由加入到路由表中。

常见的LSA有:

  • 1类 Router-LSA:描述设备的直连拓扑信息、路由信息,该LSA只能在接口所属的区域内泛洪。
  • 2类 Network-LSA:网络LSA,该2类LSA只会在广播类型网络中出现,由DR产生,描述DR所在的MA网络中所有与之形成邻接关系的路由器,以及DR自己。
  • 3类 Summary-Network-LSA:网络汇总LSA,由ABR设备产生,描述区域内的路由信息。因为1类、2类LSA只能在区域内传递。故其它区域需要学习到另一个区域的1类2类就需要有新的LSA来统一描述1类2类的拓扑、路由信息。这个LSA就是3类LSA。
  • 4类 ASBR-summary-LSA:ASBR汇总LSA,由ABR产生,描述到ASBR的路由,服务于5类LSA。通告给除ASBR所在区域的其它区域。
  • 5类 AS-external-LSA:AS外部LSA,由ASBR产生,描述到OSPF域外的路由。OSPF引入的路由,如引入RIP、ISIS、BGP等路由,引入的路由就属于外部路。外部路由用5类LSA进行通告。
  • 7类 NSSA-LSA:用于特殊区域 NSSA 中的LSA。由ASBR产生,用于描述到达OSPF域外的路由。NSSA7类与5类功能一样,但泛洪范围不同。

各类LSA详解请参考:路由 OSPF LSA介绍、1~7类LSA详细介绍_ospf lsa类型详解-CSDN博客

ospf特殊区域

特殊区域类型:

  • Stub Area 末梢区域
  • Totally  Stub Area  完全末梢区域
  • NSSA(Not So Stub  Area)
  • Totally  NSSA 完全NSSA

各区域详情请参考:OSPF 特殊区域介绍、Stub、Totally Stub、NSSA、Totally NSSA-CSDN博客

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

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

相关文章

数据结构之循环链表和栈

一、循环链表 1、概念 循环链表:就是首尾相连的链表,通过任意一个节点,都能将整个链表遍历一遍 分类:单向循环链表、双向循环链表 2、单向循环链表的类格式 单向循环链表也就是单向链表的最后一个节点的next域不再为None,而是…

linux安装部署mysql资料

安装虚拟机 等待检查完成 选择中文 软件选择 网络和主机名 开始安装 设置root密码 ADH-password 创建用户 等待安装完成 重启 接受许可证 Centos 7 64安装完成 安装mysql开始 Putty连接指定服务器 在 opt目录下新建download目录 将mysql文件传到该目录下 查看linux服务器的…

HTML 霓虹灯开关效果

HTML 霓虹灯开关效果 1.简介&#xff1a;该代码为纯html&#xff0c;CSS写在了内部&#xff0c;不需要额外引入&#xff0c;霓虹灯开关效果很漂亮&#xff0c;应用在个人物联网项目中是一个比较不错的选择。 2.运行效果&#xff1a; 3.源码&#xff1a; <!DOCTYPE html&g…

uniapp开发支付宝小程序自定义tabbar样式异常

解决方案&#xff1a; 这个问题应该是支付宝基础库的问题&#xff0c;除了依赖于官方更新之外&#xff0c;开发者可以利用《自定义 tabBar》曲线救国 也就是创建一个空内容的自定义tabBar&#xff0c;这样即使 tabBar 被渲染出来&#xff0c;但从视觉上也不会有问题 1.官方文…

24/11/26 视觉笔记 通过特征提取和透视变换查找对象

在本节中我们将检测和跟踪任意大小的对象&#xff0c;这些对象可能是在不同角度或者在部分遮挡的情况下观察到的。 为此我们将运用特征描述子&#xff08;Feature Descriptor&#xff09;&#xff0c;这是捕获感兴趣对象的重要属性的一种方式。我们这样是为了即使将对象嵌入繁…

【单片机毕业设计12-基于stm32c8t6的智能称重系统设计】

【单片机毕业设计12-基于stm32c8t6的智能称重系统设计】 前言一、功能介绍二、硬件部分三、软件部分总结 前言 &#x1f525;这里是小殷学长&#xff0c;单片机毕业设计篇12-基于stm32c8t6的智能称重系统设计 &#x1f9ff;创作不易&#xff0c;拒绝白嫖可私 一、功能介绍 ----…

ubuntu中使用ffmpeg和nginx推http hls视频流

视频流除了rtmp、rtsp&#xff0c;还有一种是http的hls流&#xff0c;使用http协议传输hls格式的视频数据。 nginx支持推送hls视频流&#xff0c;使用的是rtmp模块&#xff0c;即rtmp流推送成功了&#xff0c;hls流也没问题。怎么推送rtmp流&#xff0c;请参考我的文章&#x…

5.2.机器学习--岭回归+局部线性回归

目录 1.岭回归 1.1代码示例 2.局部线性回归 2.1代码示例 1.最小二乘法&#xff1a; 平面几何表达直线(两个系数): 重新命名变量: 强行加一个x01&#xff1a; 向量表达&#xff1a; 2.损失函数&#xff1a; 矩阵表达&#xff1a; 矩阵展开&#xff1a; 推导&#xff1a; …

nvidia-container-toolkit安装问题(OpenPGP)

1.正常情况下 apt-get install -y nvidia-container-toolkit2.使用nvidia源 nvidia-container-toolkit官网有安装教程 2.1 配置生产存储库 curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-containe…

电脑上的ip地址可以改吗?如何改变ip地址

在现代网络环境中&#xff0c;IP地址作为设备在网络中的唯一标识&#xff0c;扮演着至关重要的角色。无论是日常上网冲浪&#xff0c;还是进行专业的网络操作&#xff0c;IP地址都与我们息息相关。那么&#xff0c;电脑上的IP地址可以改吗&#xff1f;答案是肯定的。接下来&…

org.apache.log4j的日志记录级别和基础使用Demo

org.apache.log4j的日志记录级别和基础使用Demo&#xff0c;本次案例展示&#xff0c;使用是的maven项目&#xff0c;搭建的一个简单的爬虫案例。里面采用了大家熟悉的日志记录插件&#xff0c;log4j。来自apache公司的开源插件。 package com.qian.test;import org.apache.log…

PHP 生成分享海报

因为用户端有多个平台&#xff0c;如果做分享海报生成&#xff0c;需要三端都来做&#xff0c;工作量比较大。 所以这个艰巨的任务就光荣的交给后端了。经过一定时间的研究和调试&#xff0c;最终圆满完成了任务&#xff0c;生成分享海报图片实现笔记如下。 目录 准备字体文件…

ASP.NET Core 入门

使用 .NET CLI 创建并运行 ASP.NET Core Web 应用。 文章目录 一、先决条件二、创建Web应用项目三、运行应用四、编辑Razor页面 一、先决条件 .NET 8.0 SDK 二、创建Web应用项目 打开命令行界面&#xff0c;然后输入以下命令&#xff1a; dotnet new webapp --output aspne…

基于 Flask 和 Socket.IO 的 WebSocket 实时数据更新实现

简介 随着现代化应用的快速发展&#xff0c;实时数据交互已经成为许多 Web 应用的核心需求&#xff0c;比如实时消息推送、数据监控大屏等。本文将基于一个完整的 WebSocket 实现示例&#xff0c;带你一步步理解如何使用 Flask 和 Socket.IO 构建实时数据更新的 Web 应用。 将…

十、Spring Boot集成Spring Security之HTTP请求授权

文章目录 往期回顾&#xff1a;Spring Boot集成Spring Security专栏及各章节快捷入口前言一、HTTP请求授权工作原理二、HTTP请求授权配置1、添加用户权限2、配置ExceptionTranslationFilter自定义异常处理器3、HTTP请求授权配置 三、测试接口1、测试类2、测试 四、总结 往期回顾…

详细介绍HTTP与RPC:为什么有了HTTP,还需要RPC?

目录 一、HTTP 二、RPC 介绍 工作原理 核心功能 如何服务寻址 如何进行序列化和反序列化 如何网络传输 基于 TCP 协议的 RPC 调用 基于 HTTP 协议的 RPC 调用 实现方式 优点和缺点 使用场景 常见框架 示例 三、问题 问题一&#xff1a;是先有HTTP还是先有RPC&…

【Linux】 进程是什么

0. 什么是进程&#xff0c;为什么要有进程&#xff1f; 1.操作系统为了更好的管理我们的软硬件&#xff0c;抽象出了许多概念&#xff0c;其中比较有代表的就是进程了。通俗的来说操作系统为了更好的管理加载到内存的程序&#xff0c;故引入进程的概念。 2.在操作系统学科中用P…

[OpenHarmony5.0][Docker][环境]OpenHarmony5.0 Docker编译环境镜像下载以及使用方式

T. 已测试目录 主机类型主机版本Docker镜像版本结果WSL2Ubuntu22.04Ubuntu20.04PASSWSL2Ubuntu22.04Ubuntu18.04PASS R. 软硬件要求&#xff1a; 编译硬件需求&#xff1a;做多系统测试&#xff0c;磁盘500GB起步(固态)&#xff08;机械会卡死&#xff09;&#xff0c;内存3…

vue3-使用vite创建项目

vue-cli处于维护模式&#xff0c;也可以使用脚手架正常创建vue3项目&#xff0c;与vue2创建方式一致 官方推荐使用vite创建项目 vite 是新一代前端构建工具,官网地址轻量快速的热重载&#xff08;HMR&#xff09;&#xff0c;能实现极速的服务启动。对 TypeScript、JSX、CSS 等…

Java设计模式笔记(一)

Java设计模式笔记&#xff08;一&#xff09; &#xff08;23种设计模式由于篇幅较大分为两篇展示&#xff09; 一、设计模式介绍 1、设计模式的目的 让程序具有更好的&#xff1a; 代码重用性可读性可扩展性可靠性高内聚&#xff0c;低耦合 2、设计模式的七大原则 单一职…