OSPF路由协议

OSPF基本信息

OSPF(Open Shortest Path First)开放式最短路径优先协议是用于网际协议(IP)网络的链路状态路由协议。该协议使用链路状态路由算法的内部网关协议(IGP),在单一自治系统(AS)内部工作。适用于IPv4的OSPFv2协议定义于RFC 2328,RFC 5340定义了适用于IPv6的OSPFv3。

性       质:链路状态型路由协议

分       类:无类别链路状态型路由协议(VLSM与CIDR,传递网络掩码)

方       法:多播(更新地址224.0.0.2和224.0.0.6)

更       新:触发更新+30分钟的周期更新

使用范围:IGP

协议封装:基于IP协议封装,协议号为89

协议号:IP包中指定上一层采用什么协议。比如IP封装的上一层时UDP传输,则IP包中采用的协议号一般为6

OSPF开销值:使用参考带宽/链路带宽(当值小于1时等于1,值大于1时省略小数点)来计算开销值,得到每段链路开销值,路由开销值为整条路径开销值之和

默认参考带宽100M;cost值向上取整数;故当接口带宽大于参考带宽时,cost值为1;可能导致选路不佳;可以手工修改默认的参考带宽:

[r1]ospf 1[r1-ospf-1]bandwidth-reference ?INTEGER<1-2147483648>  The reference bandwidth (Mbits/s)[r1-ospf-1]bandwidth-reference 1000切记:一旦修改,全网所有设备需一致;ospf协议默认将选择cost值之和最小的路径,为最短路径加表;

OSPF区域设计原则

  1. 必须存在且唯一的骨干区域(area 0),单区域可为area 0或不为area 0
  2. 若存在非骨干区域,非骨干区域必须与骨干区域直接相连

OSPF协议是链路状态型协议,所以本身需要传递的数据量就很大,并且它不同于RIP的传递只需相邻的两个路由器进行数据交互,OSPF的交互是将一个路由器的相关信息数据包传给所有路由器来进行交互,因此划分区域可以减少大部分路由器的负担,只需要边界路由将本区域,与相邻区域的LSDB都储存下来,从而降低了区域内部路由器的LSDB

OSPF支持区域划分的原因:

  1. 限制LSA的传播范围      
  2. 减少LSA的数量

OSPF 区域的划分:基于接口(链路),即划分区域只能以接口来作为点来画边界并且一条最小路由(相邻路由器与路由器之间的路径)不能划分为两个区域,只能作为一个区域一个整体

区域分类:1、骨干区域(0区域)   2、非骨干区域 (非0区域)

OSPF 区域的标识:

  1. 十进制数(0到2^32-1)
  2. 类似于IP地址 A.B.C.D(0.0.0.0到255.255.255.254)

无论是十进制标识还是类似IP地址的标识都是32位二进制

相关名词

LSA(Link-State Advertisement)链路状态通告:是链接状态协议使用的一个分组,它包括具体的每一条的拓扑或路由信息, LSA被路由器接收用于维护它们的路由选择表。

LSDB(Link State DataBase)链路状态数据库:由各种LSA构成。通过路由器间的路由信息交换,自治系统内部可以达到信息同步,即LSDB(链路状态数据库)描述的网络拓扑同步。

骨干路由器:路由器的所有接口都在骨干区域内

非骨干路由器:路由器之间的所有接口都在非骨干区域内

区域边界路由器(ABR):路由器处于骨干区域和非骨干区域的边界

自治系统边界路由器(ASBR):位于OSPF自主系统和非OSPF网络之间的路由器

OSPF状态机

OSPF共有8种状态机,分别是:Down、Attempt、Init、2-way、Exstart、Exchange、Loading、Full,这八种状态机又可分成邻居阶段(前四个状态机)和邻接阶段(后四个状态机)

  1. Down:邻居会话的初始阶段,表示收到来自邻居路由器的Hello数据包 ,一旦收到来自对端的数据包会进入下一个状态机
  2. Attempt:该状态仅发生在NBMA网络中,表明对端在邻居失效时间间隔超时前仍然没有回复Hello报文。此时路由器依然周期向对端发送Hello报文。
  3. Init:收到Hello报文后状态为Init,但报文中并没有自己的Router-id将会维持在该阶段,当报文中存有本端的RID则进入下一状态机
  4. 2-way:收到的Hello报文中包含有自己的Router ID,状态为2-way;如果不需要形成邻接关系则邻居状态机就停留在此状态,否则进入Exstart状态
  5. Exstart:使用不携带数据库目录信息的DBD进行主从关系的选举,并确定DBD的序列号
  6. Exchange:主从关系协商完毕后开始使用携带数据库目录信息的DBD包进行目录共享
  7. Loading:查看完对端的DBD目录后,基于本地未知的LSA,使用LSR向对端查询,对端使用LSU来进行LSA内容共享应答;本端收到LSA后使用LSAck来进行应答,DD报文交换完成即Exchange done
  8. Full:LSR重传列表为空,邻接关系建立的标志即此时状态为Full

1、点到点网络类型   down -->init -- >(前提为可以建立邻接)exstart -->exchange-->若查看邻接的DBD目录后发现不用进行LSA直接进入full  若查看后需要进行查询、应答先进入loading,在查询应答完后再进入full;

2、MA网络类型  down -->init -- >2way-->(前提为可以建立邻接,通过DR/BDR选举后来判断)exstart -->exchange-->若查看邻接的DBD目录后发现不用进行LSA直接进入full  若查看后需要进行查询、应答先进入loading,在查询应答完后再进入full;

3、当hello time较大时,状态机在down和init之间将出现尝试等待状态;

DBD包:DBD包中携带接口的MTU值,要求两端接口MTU一致,否则将卡在exstart状态机;华为设备默认不携带MTU值

[r1]interface g0/0/1[r1-GigabitEthernet0/0/1]ospf mtu-enable  两端直连接口均需开启

DBD包中的描述位:

I 为1表示本地发出的第一个DBD

M 为0表示本地发出的最后一个DBD

MS 为1表示本地为主,为0表示本地为从

DBD使用序列号来进行隐性确认,从基于主的序列号进行;

DR与BDR选举

DR:指定路由器

BDR:备用指定路由器

选举规则:

  1. DR、BDR的选举基于接口优先级进行,优先级最高的接口被选举为DR,优先级为0则不参与选举
  2. 优先级相同时,则比较RID,RID大的为DR(没有RID则以IP最大的环回接口为RID,无环回则以IP最大的物理接口为RID)
[r1]int g0/0/1
[r1-GigabitEthernet0/0/1]ospf dr-priority 0

DR没有抢占性,即在DR未失效前有新的路由器加入时,不管该路由器的优先级是否大于原有DR的优先级,都不会对DR进行替换,但是在重新选举BDR时会加入选举

先选举BDR再选举DR,因为在刚开始时DR和BDR列表都是空的,都放在一个DR other的列表里,然后先对比优先级,优先级大的选为BDR;优先级相同的情况下,Router ID大的选为BDR。然后DR从BDR列表里面去选一个成为DR,BDR再从DR other列表中选一个做BDR

选举DR与BDR原因

1、在广播网络和NBMA网络中,任意两台路由器之间都要传递路由信息。如果网络中有n台路由器,则需要建立n*(n-1)/2个邻接关系。这会导致每次路由变化都会导致多次传递,浪费了带宽资源。因此OSPF定义了DR。通过选举产生DR后,所有其他设备都只将信息发送给DR,由DR将网络链路状态LSA广播出去。而为了防止DR发生故障,重新选举DR时会造成业务中断,除了DR之外,还会选举一个备份指定路由器BDR。这样除DR和BDR之外的路由器(称为DR Other)之间将不再建立邻接关系,也不再交换任何路由信息,这样就减少了广播网和NBMA网络上各路由器之间邻接关系的数量。

2、在MA网络中若两两间均建立邻接关系,将可能出现大量的重复更新;DV距离矢量路由协议可以使用接口水平分割来解决,由于OSPF协议邻接需要数据库比对,故不能设计接口水平分割;只能进行DR/BDR选举来解决;所有非DR/BDR之间为邻居关系,不进行数据库同步

点对点网络中,所有邻居关系均建立为邻接关系

MA(多路访问)网络中,将进行DR/BDR选举

修改优先级后,必须重启所有参选设备的OSPF协议

<R1>reset ospf process

OSPF数据包

OSPF中的数据包跨层封装于3层报头,协议号为89

中文名称英文全称,缩写作用
问候Hello10s或30s周期发送,用于发现和维护邻居关系
数据库描述

Database Description,

DBD

用于携带数据库目录

链路状态请求Link State Request,LSR

基于本地未知的LSA信息进行查询

链路状态更新Link State Update,LSU

用于传递具体的LSA信息,携带一条或多条LSA

链路状态确认Link State ACK,LSAck

保证可靠性,确认包 

理解:数据包中有五种报文,Hello报文用来发现和维护邻居关系,防止其中一方突然出现故障导致的问题,DD报文用来查询信息是否有重复的以及发现自己于对方所没有的LSA,LSR报文请求对方发送LSA,LSU报文用来发送LSA,ACK报文表示确认收到对方发送的信息

OSPF工作过程

1、启动配置完成后,邻居间组播收发hello包,获取对端的RID,建立邻居关系,生成邻居表;

2、邻居关系建立后进行条件的匹配,匹配失败将维持邻居关系,仅hello包保活即可;

3、匹配成功者之间建立邻接(毗邻)关系,需要DBD共享数据库目录,LSR/LSU/LSack来获取未知的LSA信息,当收集完网络中所有的LSA后,生成数据库表LSDB

4、当数据库表同步完成后,本地使用SPF算法,将数据库表转换为有向图,再将有向图计算成为最短路径树,然后以本地为起点,计算到达所有未知网段的最短路径,然后将这些路由加载于本地的路由表中;收敛完成。

5、收敛完成后–hello包周期保活–30分钟周期的BDB比对,若不一致将会使用LSR/LSU/LSack重新获取

拓扑结构突变

  1. 新增网段:直连新增网段的设备,使用LSU直接向本地所有邻接进行触发更新,对端需要确认
  2. 断开网段:直连断开网段的设备,使用LSU直接向本地所有邻接进行触发更新,对端需要确认
  3. 无法沟通:没有周期的hello包;dead time为hello time的4倍--倒计时,正常被每一个新的hello包刷新,归0时断开邻居关系,删除该邻接共享的信息

六种LSA

每一条LSA(链路状态通告)携带具体的拓扑或者路由信息,不同环境下将产生不同类别的LSA

无论哪类LSA,均存在以下基本参数

  Type     : Router   类型名,此处为1类

  Ls id     : 1.1.1.1   link-id该条目在目录中的编号(页码号)

  Adv rtr  : 1.1.1.1   通告者 -- 该条LSA的更新源设备的RID

  Ls age  : 1666  老化时间,周期1800s刷新,触发马上刷新;最大老化3609s

  Len       : 48         数据包长度

  seq#     : 80000015   序列号     更新后变化

  chksum : 0x6f95      校验码号  更新后变化

类别类型名传播范围通告者携带信息
1Router单区域该区域的每台路由器本地直连拓扑
2Network单区域单网段内的DR单个MA网络内的拓扑
3Summary整个OSPF域ABR域间路由
4Asbr除ASBR所在区域外ARB  

ASBR位置信息

5Ase整个OSPF域ASBR域外路由
7Nssa单个NSSA区域内ASBR域外路由
类别类型名link-ID通告者
1Router通告者RID该区域的每台路由器
2NetworkDR在该网段接口的ip地址单网段内的DR
3Summary域间路由的目标网络号ABR 在经过下一台ABR,修改为新的ABR
4AsbrASBR的RIDABR 在经过下一台ABR,修改为新的ABR
5Ase域外路由的目标网络号ASBR
7Nssa域外路由的目标网络号

ASBR

注意:只有MA/NBMA网络才会产生2类LSA

5和7类的LSA路由会存在一个类型1、类型2 的区别:

类型2(默认)仅显示种子(起始)度量

类型1显示整段路径的总度量

类型2的路由,虽然仅显示起始度量,但实际选路时依然基于总度量选择

重发布缺省时,修改为类型1[r9-ospf-2]default-route-advertise type 1  

类型1优于类型2

总结:无论类型1还是类型2,在选路均基于实际本地到达ASBR的距离来选路;因为重发布将清除原有协议的度量,故ospf默认的选路规则将可能选中非最佳路径;通过修改重发布过程中修改度量类型为1,实现快速人工干预

三张表

ospf内有三张十分重要的表,分别为邻居表、LSDB表和OSPF路由表

邻居表:显示了ospf路由器之间的邻居基本状态,也可以查看对端设备的Router ID和接口地址等等

<R1>display ospf peer 查看邻居表
<R1>display ospf peer brief  查看邻居简表

LSDB表:存放LSA的数据库

<R1>display ospf lsdb
查看具体的一条LSA信息
<R1>display  ospf lsdb network 12.1.1.1 类别名  link-id

OSPF路由表:OSPF路由表和路由器路由表是不一样的表项,OSPF路由表中路径有可能不只是一条,ospf路由表内会运行一种算法,算出一条通往目的设备的最优路径放在路由器路由表内

<R1>display ospf routing   

OSPF的接口网络类型

ospf协议在不同网络类型的接口上,有着不同的工作方式

查看OSPF协议在接口具体的工作方式名称
[r1]display  ospf interface g0/0/1  
接口类型OSPF工作方式
LoopBack华为显示p2p,实为环回专用工作方式  无hello包 以32位主机路由传递
点到点类型(HDLC/PPP/GRE)p2phello time10s  不选DR,邻居直接建立为邻接
BMA(以太网) Broadcasthello time10s  选DR/BDR 非DR/BDR间仅建立邻居关系
NBMA(MGRE)默认和普通GRE一样接口工作方式为p2p,该工作方式在华为设备上仅和最先收到的hello包建立邻居关系;

故在MGRE环境需要手工修改接口工作方式

[r1-Tunnel0/0/0]ospf network-type ?broadcast  Specify OSPF broadcast networknbma       Specify OSPF NBMA networkp2mp       Specify OSPF point-to-multipoint networkp2p        Specify OSPF point-to-point network

注:p2p 和broadcast 两种工作方式的hello time均为10s,故可以建立邻居关系,但在DR选举上不同,故无法正常交流LSA;

切记:邻居间ospf接口工作方式必须一致,才能正常建邻和正常收敛;

若将MGRE下所有接口的工作方式修改为broadcast,需要关注拓扑结构:

  1. 全连网状结构,可以正常工作,正常选举DR/BDR
  2. 非全连 ---管理员手工合理安排DR位置
  3. 星型结构-- 仅中心站点为DR,无BDR

基础配置

宣告配置全部完成后,邻居间周期组播收发hello包,建立邻居关系并生成邻居表

基础配置
[r1]ospf 1 router-id 1.1.1.1 启动时可以定义进程号和RID,进程号仅具有本地意义,默认为1宣告:1)区域划分  2)激活接口OSPF协议   3、共享接口信息
[r1-ospf-1]area  0
[r1-ospf-1-area-0.0.0.0]network 12.1.1.1 0.0.0.0
[r1-ospf-1-area-0.0.0.0]network 1.1.1.1 0.0.0.0

邻居间hello包中必须完全一致的参数,否则无法建立邻居关系

必须完全一致的参数:Hello timedead time区域编号认证字段末梢区域标记、(在华为设备中邻居间hello包还将携带建邻的接口ip地址子网掩码,也必须和邻居一致)

扩展配置

1、手工认证

【1】接口认证:直连的邻居间,设定认证口令,进行身份核实,同时对双方交互的数据进行加密保护

[r9-GigabitEthernet0/0/1]ospf authentication-mode md5 1 cipher 123456 邻居间认证模式、编号、密码必须完全一致

【2】区域认证:实际在该设备上所有属于同一区域的接口进行了接口认证配置(批量操作命令)

[r1]ospf 1[r1-ospf-1]area  1[r1-ospf-1-area-0.0.0.1]authentication-mode md5 1 cipher 123456

【3】虚链路认证

[r1-ospf-1-area-0.0.0.1]vlink-peer 3.3.3.3 md5 1 cipher 123456

2、加快收敛

OSPF的hello time 默认为10或30s,dead time为hello time 的4倍,邻居间hello、dead time必须完全一致,否则无法建立邻居关系(修改本端的hello time,本端的dead time自动4倍关系匹配;不易修改的过小)

[r2-GigabitEthernet0/0/0]ospf timer hello 10

3、沉默接口

仅接收不发送路由协议信息

配置于被宣告的连接用户终端接口,不能配置于连接邻居的骨干接口,否则无法建立邻居关系

[r5]ospf 1[r5-ospf-1]silent-interface GigabitEthernet 0/0/2

4、缺省路由

【1】自动产生缺省(3类、5类、7类)

3类缺省-- 特殊区域产生  末梢  完全末梢  完全NSSA  这三种特殊区域在配置完成后,连接骨干区域的ABR将向该区域发布3类缺省

5类缺省为手工配置产生;  

7类缺省--特殊区域产生  NSSA、完全NSSA均产生;但完全NSSA也产生3类缺省,3类优于7类;

【2】手工配置产生 ---- 5类缺省  

[r9]ospf 2 [r9-ospf-2]default-route-advertise  将本地路由表中无论何种来源产生的缺省路由,重发布到本地的OSPF进程2中让其他与本地进程2在一个ospf域中的路由器,产生5类缺省,指向R9

注:以上命令若本地路由表中没有缺省,将无效

[r9]ospf 1[r9-ospf-1]default-route-advertise always   该指令为本地强制向邻接发送5类缺省路由,无论本地路由表是否存在缺省

OSPF的缺省注意事项:由于OSPF的特殊区域可以自动产生缺省路由指向骨干0区域;故ISP在网络中的位置将决定,网络是否会因为缺省路由产生环路;若ISP连接骨干区域,那么所有的非骨干可以正常定义为各种特殊区域;若ISP处于某个非骨干,或非骨干连接的其他协议,那么对应的该非骨干区域不能配置为任何特殊区域,必须手工进行优化管理;

5、汇总

区域内不可进行汇总,但是区域间的ARP进行路由共享时可进行汇总配置

[R2]ospf 1[R2-ospf-1]area 0[R2-ospf-1-area-0.0.0.0]abr-summary 1.1.0.0 255.255.252.0

OSPF的不规则区域与解决方案

  1. 远离骨干非骨干区域
  2. 不连续骨干区域

解决方案:

1、tunnel ---点到点GRE

在合法与非ABR间建立隧道,然后将其宣告于OSPF协议中;

缺点:

  1. 周期和触发信息对中间穿越区域造成资源占用
  2. 选路不佳

2、OSPF虚链路

由合法ABR,给同一区域的非法ARB进行授权,之后非法ABR能够进行区域间路由共享

[r2]ospf 1[r2-ospf-1]area  1  两台ABR均存在的区域[r2-ospf-1-area-0.0.0.1]vlink-peer 4.4.4.4  对端ABR的RID;两台ABR均需配置

优点:没有新的数据链路出现,故选路正常; 

缺点:两台ABR之间的周期信息,依然对中间区域造成影响,增加延时

cisco思科--- 取消两台ABR间所有的周期信息,仅存在触发更新-- 不可靠

华为 --- 保留所有的周期信息,对中间区域资源占用严重

3、多进程双向重发布(推荐)

多进程:一台路由器上允许的多个ospf进程,每个进程运行独立的接口(一个接口只能宣告于一个进程中)

多进程双向重发布可以将非法ABR上的不同接口宣告于不同的OSPF进程中造成独立的协议,再使用重发布进行,将该非法ABR转换为ASBR,进行协议间路由条目共享

优点:不存在选路不佳问题,不存在周期资源占用,和不可靠问题;存在独立的邻居、数据库且数据库间不做共享,仅将所有数据库计算所得的路由加载于同一路由表中

双向重发布[r4]ospf 1[r4-ospf-1]import-route ospf 2[r4-ospf-1]q[r4]ospf 2[r4-ospf-2]import-route ospf  1

优化配置

优化OSPF的LSA   减少LSA的更新量

1、手工汇总:减少骨干区域的LSA

【1】域间路由汇总

只能在区域间传递3类LSA时,进行手工的路由汇总

在ABR上配置
[r1]ospf 1[r1-ospf-1]area  2   本地通过该区域的1/2LSA拓扑计算所得路由才能汇总[r1-ospf-1-area-0.0.0.2]abr-summary 5.5.4.0 255.255.254.0

【2】 域外路由汇总

当ASBR将其他协议产生的路由条目重发布进入OSPF域时,可以进行汇总配置[r4]ospf 1[r4-ospf-1]asbr-summary 99.1.0.0 255.255.252.0

2、特殊区域:减少非骨干区域的LSA

【1】不是骨干区域、不存在虚链路、不存在ASBR的情况下

1」末梢区域:该区域拒绝,外部进入的4/5的LSA;由该区域连接骨干的ABR,向内部产生一条3类的缺省路由

[r5]ospf 1[r5-ospf-1]area  2  该区域内所有路由器均需配置[r5-ospf-1-area-0.0.0.2]stub

2」完全末梢区域:在末梢区域的基础上,仅一步拒绝3类LSA的进入;仅保留一条3类缺省的进入先将该区域配置为末梢区域

然后仅在ABR上配置完全末梢即可[r1]ospf 1[r1-ospf-1]area  2[r1-ospf-1-area-0.0.0.2]stub no-summary

【2】不是骨干区域、不存在虚链路、存在ASBR的情况下

1」NSSA:非完全末梢区域;该区域拒绝4/5的LSA;本地ASBR产生的域外路由,使用7类在本NSSA区域传递,通过ABR进入骨干区域,被转换成5类;由该区域连接骨干的ABR向内部发送一条7类缺省;

其存在的价值,是为了让该区域拒绝其他区域的,ASBR产生的4/5类LSA进入

[r4]ospf 1[r4-ospf-1]area  1[r4-ospf-1-area-0.0.0.1]nssa

2」完全NSSA:在普通NSSA的基础上,进一步拒绝3的类LSA进入该区域;由该区域连接骨干的ABR向内部发布一条3类缺省

先将区域配置为NSSA,然后仅在连接骨干的ABR上,定义完全即可

[r3]ospf 1[r3-ospf-1]area  1[r3-ospf-1-area-0.0.0.1]nssa  no-summary

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

elasticsearch的DSL查询文档

DSL查询分类 查询所有&#xff1a;查询出所有数据&#xff0c;一般测试用。例如&#xff1a;match_all 全文检索&#xff08;full text&#xff09;查询&#xff1a;利用分词器对用户输入内容分词&#xff0c;然后去倒排索引库中匹配。例如&#xff1a; match_query multi_ma…

在学习DNS的过程中给我的启发

在国内&#xff0c;关于DNS相关的话题一直络绎不绝&#xff0c;比如DNS根服务器为什么中国没有&#xff0c;还有Anycast BGP实现负载&#xff0c;为什么DNS只有13个&#xff0c;还有DNS over HTTPS 和 DNS over TLS的优劣等等问题&#xff0c;接下来我会找出几个一一说一下其中…

Net跨平台UI框架Avalonia入门-安装和使用(v11版本)

介绍Avalonia v11版本 avalonia v11版本发布了&#xff0c;增加了很多新的功能&#xff0c;Avalonia的扩展也同步升级了。 主要更新内容&#xff1a; 辅助功能&#xff1a;增加了对各种辅助工具的支持&#xff0c;提高了Avalonia应用程序的可用性。输入法编辑器&#xff08;I…

python实现某音自动登录+获取视频数据

前言 Dy这个东西想必大家都用过&#xff0c;而且还经常刷&#xff0c;今天就来用代码&#xff0c;获取它的视频数据 环境使用 Python 3.8 Pycharm 模块使用 requests selenium json re 一. 数据来源分析 1. 明确需求 明确采集网站以及数据内容 网址: https://www.dy.com/…

【电源专题】典型设备的接地设计

在文章:【电源专题】接地的类型 中我们讲到不同的历史时期接地概念是不同的,有为了安全的电气接地和物理接地,也有为了提供参考电位的接地。 那么在设备接地的设计中,我们会怎么进行操作呢? 在文章【电源专题】接地的类型讲到一个混合接地的例子,我们可以把大功率的地接…

13分钟聊聊并发包中常用同步组件并手写一个自定义同步组件

本篇文章通过AQS自己来实现一个同步组件&#xff0c;并从源码级别聊聊JUC并发包中的常用同步组件 本篇文章需要的前置知识就是AQS&#xff0c;阅读本篇文章大概需要13分钟 自定义同步组件 为了更容易理解其他同步组件&#xff0c;我们先来使用AQS自己来实现一个常用的可重入…

Origin绘制彩色光谱图

成果图 1、双击线条打开如下窗口 2、选择“图案”-》颜色-》按点-》映射-》Wavelength 3、选择颜色映射 4、单击填充-》选择加载调色板-》Rainbow-》确定 5、单击级别&#xff0c;设置成从370到780&#xff0c;右侧增量选择2&#xff08;越小&#xff0c;颜色渐变越细腻&am…

时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测

时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测 目录 时序预测 | MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测预测效果基本介绍模型描述程序设计参考资料 预测效果 基本介绍 1.MATLAB实现TCN-LSTM时间卷积长短期记忆神经网络时间序列预测…

Kotlin委托Delegate托管by

Kotlin委托Delegate托管by import kotlin.reflect.KPropertyfun main() {var user: String by MyDelegate()user "fly"println(user) }class MyDelegate {private var v: String? nulloperator fun getValue(thisRef: Any?, property: KProperty<*>): Stri…

【Spring面试】一、SpringBoot启动优化与Spring IoC

文章目录 Q1、SpringBoot可以同时处理多少请求Q2、SpringBoot如何优化启动速度Q3、谈谈对Spring的理解Q4、Spring的优缺点Q5、Spring IoC容器是什么&#xff1f;作用与优点&#xff1f;Q6、Spring IoC的实现机制是什么Q7、IoC和DI的区别是什么Q8、紧耦合与松耦合的区别&#xf…

如何让自己的精力集中 Maven自学笔记 马云演讲观看

目录 如何让自己的精力集中 Avoid having multiple tasks and objects in your line of sight 人的脑袋是给自己思考用的 晚上床上想千条路&#xff0c;早上起床还是走原路 参与才会变得更好 共度灾难&#xff0c;是需要互相鼓励的 CFO Capital 上海各区都有哪些大学?…

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制

LabVIEW对EAST长脉冲等离子体运行的陀螺稳态运行控制 托卡马克是实现磁约束核聚变最有希望的解决方案之一。电子回旋共振加热&#xff08;ECRH是一种对托卡马克有吸引力的等离子体加热方法&#xff0c;具有耦合效率高&#xff0c;功率沉积定位好等优点。陀螺加速器是ECRH系统中…

Kafka3.0.0版本——消费者(消费者组案例)

目录 一、消费者组案例1.1、案例需求1.2、案例代码1.2.1、消费者1代码1.2.2、消费者2代码1.2.3、消费者3代码1.2.4、生产者代码 1.3、测试 一、消费者组案例 1.1、案例需求 测试同一个主题的分区数据&#xff0c;只能由一个消费者组中的一个消费。如下图所示&#xff1a; 1…

设计模式(1) - UML类图

1、前言 最近在阅读 Android 源码&#xff0c;时常碰到代码中有一些巧妙的写法&#xff0c;简单的如 MediaPlayerService 中的 IFactory&#xff0c;我知道它是工厂模式&#xff0c;但是却不十分清楚它为什么这么用&#xff1b;复杂点的像 NuPlayer 中的 DeferredActions 机制…

vulhub-tomcat弱口令

1.启动靶场 进入文件 进入目录 进入到靶场 启动靶场 docker-compose up -d 2.查看 ip地址 3.使用nmap对ip进行 扫描 发现存在8080的端口&#xff0c;并且端口是开放的状态&#xff0c;apache&#xff0c;tomcat搭建的 4.访问ip地址的端口 点击Manager app 6.开启BP进行抓包 随…

vue-cli3项目本地启用https,并用mkcert生成证书

在项目根目录下的vue.config.js文件中&#xff1a; // vue.config.js module.exports {devServer: {host:dev.nm.cngc// 此处开启 https,并加载本地证书&#xff08;否则浏览器左上角会提示不安全&#xff09;https: {cert: fs.readFileSync(path.join(_dirname,./cert.crt)…

UI自动化之混合框架

什么是混合框架&#xff0c;混合框架就是将数据驱动与关键字驱动结合在一起&#xff0c;主要用来回归业务主流程&#xff0c;将核心流程串联起来。 上一篇我们写到了关键字驱动框架&#xff0c;关键字驱动框架是针对一个业务场景的单条测试用例的。 我们以163邮箱的登录到创建…

云计算中的负载均衡技术,确保资源的平衡分配

文章目录 1. 硬件负载均衡器2. 软件负载均衡器3. DNS负载均衡4. 内容分发网络&#xff08;CDN&#xff09; &#x1f388;个人主页&#xff1a;程序员 小侯 &#x1f390;CSDN新晋作者 &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 ✨收录专栏&#xff1a;云计算 ✨文章内…

【负载均衡】常见的负载均衡策略有哪些?

文章目录 前言负载均衡分类常见负载均衡策略小结 前言 负载均衡策略是实现负载均衡器的关键&#xff0c;而负载均衡器又是分布式系统中不可或缺的重要组件。使用它有助于提高系统的整体性能、可用性、可靠性和安全性&#xff0c;同时支持系统的扩展和故障容忍性。对于处理大量…

el-form表单动态校验(场景: 输入框根据单选项来动态校验表单 没有选中的选项就不用校验)

el-form表单动态校验 el-form常规校验方式: // 结构部分 <el-form ref"form" :model"form" :rules"rules"><el-form-item label"活动名称: " prop"name" required><el-input v-model"form.name" /…