华为数通HCIP-OSPF路由计算

news2024/12/29 8:04:32

路由协议

作用:用于路由设备学习非直连路由;

动态路由协议:使路由设备自动学习到非直连路由;

分类:

按照算法分类:

1、距离矢量路由协议;(RIP、BGP)

只交互路由信息,不交互拓扑信息,运行距离矢量路由协议的路由器,只关心目的网段如何到达,无法得知网络结构;

拓扑信息:用于描述网络结构的信息(如接口带宽、接口类型等)

路由信息:目的网段以及掩码;

2、链路状态路由协议;(ospf、isis)

既交互路由信息,也交互拓扑信息,运行链路状态路由协议的路由器,可以得出全网的网络结构,并且计算出去往目的网段的最优路由,进行访问;

按照工作范围分类:

1、IGP(内部网关协议)-ospf、isis;

工作在一个AS内的动态路由协议,实现AS内部的互通;

会周期更新路由(ospf 1800s/次,超时时间为3600s;isis 900s/次 超时时间1500s)

2、BGP(边界网关协议)

工作在AS之间,实现AS之间的互通;

不会周期更新路由,只会触发式更新;

AS(自治系统/路由域)

定义:运行相同路由协议,具有相同管理规则的区域(一般为一个企业网);

按照传递路由时是否携带掩码分类:

1、有类路由协议

路由传递时,无需携带掩码,对端收到后,根据网段的类别,自动生成掩码;

2、无类路由协议(ospf、isis、BGP)

传递路由时,会携带掩码

——————————

ospf(开放式最短路径优先协议)

分类:链路状态路由协议、IGP、无类;

工作过程:

1、建立ospf邻居关系;

2、建立ospf邻接关系(同步LSDB);

LSDB(链路状态数据库):每台运行了ospf的路由器都会有一个LSDB,里面会携带自身的LSA;

LSA(链路状态通告信息):携带自身的路由信息以及拓扑信息;

同步LSDB:邻居双方相互发送LSA,直至双方的LSDB完全一致,既包含自身的LSA,也包含对方的LSA;

3、每台ospf路由器都会根据同步完成的LSDB,进行spf计算,得出全网网络结构,算出去往每个目的网段的最优路由,放进路由表;

报文:

结构:ospf层——网络层——数据链路层

ospf工作在网络层,协议号为89;

报文发送方式:组播发送,组播地址224.0.0.5(所有ospf路由器均可以接收)、224.0.0.6(只有DR/BDR可以接收)

ospf层:ospf头部+报文详细信息;

其中ospf头部所有ospf报文都会携带,并且携带内容一致;

报文的详细信息:不同报文类型,携带不一致;

ospf头部详细信息:

1、版本:v2/v3,分别工作在ipv4/v6环境;

2、router id(发送端)

格式大小:跟ip地址完全一致;

作用:唯一标识一台ospf路由器(不能冲突)

获取方式:

(1)手工配置

[R1]ospf 1 router-id 1.1.1.1 //创建并且进入ospf进程1,并且指定router id为1.1.1.1

修改router id后,需要重启ospf进程才能使新的router id生效;

<R1>reset ospf process //重启ospf进程;

(2)如果没有手工指定,则会自动进行选举;

选举规则:先在loopback接口中,选择最大的一个作为router id;

如果没有配置loopback口,则在物理接口中选最大的一个作为router id;

在实际设备中,会选择最先启动的接口ip作为router id;

3、区域id(area id)

标识发送ospf报文的接口属于哪一个区域;

区域分类:骨干区域(area id=0):必须要有

非骨干区域(area id=/=0):可有可无

普通区域、特殊区域(stub、totally stub、nssa、totally nssa);

区域划分:

基于接口进行划分;

划分规则:

(1)骨干区域必须要有,有且仅有一个;

(2)非骨干区域必须围绕着骨干区域建立,非骨干区域之间的互通,必须经过骨干区域;

4、认证信息:默认为空,如果配置了,两端需要认证通过才能建立ospf邻居;

分类:

1、hello报文

作用:用于发现、建立、维护ospf邻居(10s/次相互发送hello报文维持邻居),并且可以感知邻居的离开(超时时间为hello时间的4倍,默认为40s);

携带内容:

(1)掩码:标识发送hello报文的端口的掩码;

(2)hello时间/超时时间

(3)DR优先级、DR与BDR的ip地址;

(4)活跃邻居列表:携带hello报文的发送者的邻居router id;

(5)option位:用于标识区域类型;

E=1 N=0 普通区域

E=0 N=1 NSSA、totally NSSA

E=0 N=0 STUB、totally STUB

2、DD(数据库描述报文)

作用:携带自身LSDB中所有LSA的摘要信息,用于告知邻居,自身的LSDB中包含哪些LSA;

携带内容:

(1)MTU:代表接口发送的最大的数据单元,默认位1500B;

(2)flags:

I:代表该DD报文,是否为本设备发送的第一份DD报文;

M:用于标识该设备后续是否还有DD报文需要发送;

MS:代表该DD报文的发送端,是否为主设备;

(3)序列号;

3、LSR(LSA请求报文)

作用:携带自身需要获取的LSA的摘要信息,用于在收到DD报文后,向邻居请求自身缺少的LSA;

4、LSU(LSA更新报文)

作用:携带LSA的详细信息,用于回应LSR的请求;

5、LSACK(LSA确认报文)

作用:携带LSA的摘要信息,用于在收到LSU报文后,进行回复,确认收到;

ospf邻居状态机(详细的工作过程)

1、down

ospf路由器刚运行的状态,在该状态下代表ospf路由器没有收到任何的ospf报文,但可以发送hello报文进行邻居发现;

2、init

ospf路由器收到hello报文,并且该hello报文的邻居列表不包含自身的router id,则进入该状态;

3、2-way

ospf路由器收到hello报文,并且该hello报文的邻居列表包含自身的router id,则进入该状态;

当双方都进入2-way状态,则ospf邻居关系建立完成;

会进行DR/BDR的选举,选举完成后进入下一个状态;

4、exstart

邻居双方会相互发送不携带lsa摘要信息的DD报文(空DD),用于确保后续同步LSDB过程的可靠性;

携带内容:MTU、m=1、i=1、ms=1、序列号(随机生成)

作用:1、用于选举主从路由器;

选举规则:router id大的为主;

2、协商MTU,如果不一致,则邻接关系无法建立,停留在exstart状态;

3、确定序列号,以主的序列号为准;

5、exchange

邻居双方相互发送携带自身LSA摘要信息的DD报文,用于告知对端自身的LSDB中含有哪些LSA;

过程:

(1)由从先发出DD报文,其中序列号,为主设备在exstart发送的DD报文的序列号;

(2)主设备收到从设备的DD报文后,自身需要发出的DD报文的序列号,为从设备发出的DD报文的序列号+1;

(3)从设备收到主设备发送的DD报文,自身需要发出的DD报文的序列号等于主设备发送的DD报文中的序列号

(4)双方发送的DD报文中的M位均为0时,代表双方的LSA摘要信息全部发送完成,进入下一个阶段;

6、loading

邻居双方相互发送LSR、LSU、LSACK报文进行LSDB的同步;

5s重传机制:如果ospf路由器发送LSR、LSU后,没有收到对应的回应,则会将该报文重新发送,5s/次;

当重传列表为空时,代表本设备没有需要请求的以及发送的LSA,则进入FULL状态;

7、full

进入该状态,说明邻接关系建立完成,开始计算路由;

DR/BDR

DR:指定路由器,一个网段中有且只有一个;

BDR:备份指定路由器,一个网段中有且只有一个;

DRother:一个网段中可以有0到多个;

作用:减少ospf邻接关系的数目,从而减少网络中报文交互的数目,从而节省链路资源;

原理:DR可以跟所有路由器建立邻接关系;

BDR可以跟所有路由器建立邻接关系;

DRother之间无法直接建立ospf邻接关系,它们之间会停留在邻居关系的状态,但可以通过DR/BDR完成LSDB的同步;

选举:

选举状态:2-way

选举报文:hello报文

选举规则:

(1)比较DR优先级,越大越优;(默认为1,可调范围0~255,其中0代表不参与选举)

(2)比较router id,越大越优;

特点:

1、不抢占:一旦网络中的DR/BDR确定,则除非它们故障,否则地位都不会改变;

2、有备份:BDR作为DR的备份,一旦DR故障,BDR马上成为DR;

选举时间:等待时间(wait time),默认为120s

等待时间选举过程:

1、当ospf路由器刚启动,就会开始计时,在等待时间计时结束前,该路由器不会参与DR/BDR选举,并且如果在此过程中收到hello中DR/BDR有携带ip地址,则直接承认它们的地位;

2、当等待时间计时结束后,才会开始进行选举,并且将自己的ip地址填充进hello报文的DR字段中进行发送;

优先级最大的ospf路由器,一定为DR——x

最先启动的ospf路由器,一定为DR——√

网络中必须有DR,但不一定有BDR;

interface GigabitEthernet0/0/0

ospf dr-priority 2 //修改接口的dr优先级为2

基础配置

1、创建并且进入ospf进程,指定router id

[R1]ospf 1 router-id 1.1.1.1 /只有第一次创建进程时,需要指定router id,后续再进入无需指定

2、进入区域视图(以区域0为例)

[R1-ospf-1]area 0

3、宣告网段

[R1-ospf-1-area-0.0.0.0]network 10.1.12.0 0.0.0.255 //以网段的方式进行宣告,网段后需要接反掩码(255.255.255.255-掩码得出);

network 10.1.12.2 0.0.0.0 //以接口ip的方式宣告(精确宣告)

**只能宣告自身的直连网段;

display ospf brief //查看ospf摘要信息,其中包含router id、hello时间、DR信息;

display ospf peer brief //查看ospf邻居

开销

ospf开销=接口参考带宽/实际带宽;

越小越优;

GE/E——1

点到点链路——48

interface GigabitEthernet0/0/0

ospf cost 2 //修改接口开销为2

网络类型

作用:用于使ospf适应不同的底层链路;

底层链路 是否选举DR/BDR hello时间/超时时间 报文发送方式

广播型网络(MA) 以太网链路 选 10s/40s 组播发送:hello报文、LSACK、LSU;单播发送:DD、LUR

P2P 点到点链路 不选举 10s/40s 所有报文均为组播

NBMA 帧中继网络 选 30s/120s 所有报文均为单播

P2MP 无(需要手动调整) 不选举 30s/120s 组播:hello,其余报文均为单播

P2P网络不选举DR/BDR的原因:

P2P网络一般只有两端的两台设备,如果选举的话,一台为DR、一台为BDR,都会建立邻接关系,因此在P2P网络中选举DR/BDR,无法减少邻接关系的数目,并且还需要消耗选举的时间以及开销,因此没有必要选举;

因此一般P2P网络ospf邻居的建立时间会快于广播型网络;

针对只有两台设备相连的以太网链路,可以将其ospf的网络类型修改为P2P,无需选举DR/BDR,加快邻居关系建立的速度;

interface GigabitEthernet0/0/1

ip address 10.1.24.2 255.255.255.0

ospf network-type p2p //修改接口的网络类型为P2P;

邻居关系:

1、广播型网络:能跟P2P建立、修改hello时间一致后可以跟P2MP建立邻居关系;

2、P2P:可以跟广播型网络建立,修改hello时间一致后可以跟P2MP建立邻居关系;

ospf认证

作用:提高ospf网络的安全性;

原理:只有认证通过才能建立ospf邻居关系;

认证通过:认证类型以及用户名、密码要一致;

认证方式:

接口认证:配置在接口下;

区域认证:配置在区域下;

认证类型:

明文认证(simple)

特点:配置时只需要指定密码;

抓包时可以看得见密码;

直接根据密码进行认证,密码一致则通过;

认证过程简单、节省报文空间,安全性差;

密文认证:(MD5、keychain)

特点:配置时需要指定key id以及密码;

抓包时可以看不见密码;

根据hash值(通过key id、密码以及加密序列号进行hash计算得出)进行认证,密码一致则通过;

认证过程复杂,安全性高;

配置参数:

plain:查看配置时可以看见密码;

cypher:查看配置时无法看见密码;

配置:

interface GigabitEthernet0/0/0

ospf authentication-mode simple plain huawei //接口下配置明文认证,密码为huawei

ospf 1 router-id 2.2.2.2

area 0.0.0.0

authentication-mode simple cipher huawei //区域下配置明文认证,密码为huawei

interface GigabitEthernet0/0/0

ospf authentication-mode md5 1 plain huawei //接口下配置密文认证,key id为1,密码为huawei

当一个区域下配置了认证,同时接口下也配置了认证,则该接口以接口配置的认证为准;

keychain认证:

定义:一个keychain由多个key id以及对应的密码组成,可以在不同的时间,使用不同的key id以及密码,提高网络的安全性;

配置

[R3]keychain 1 mode periodic daily //创建钥匙串,设置认证的模式为周期,周期为按天;

key-id 1 //创建key id 1

key-string plain huawei //设置密码为huawei

send-time daily 00:00 to 12:00 //在每天的0点到12点,使用key id 1,密码huawei进行认证;

receive-time daily 00:00 to 12:00

key-id 2

key-string plain huawei

send-time daily 12:01 to 23:59

receive-time daily 12:01 to 23:59

interface GigabitEthernet0/0/0

ospf authentication-mode keychain 1 //接口或者区域下调用;

LSA

LSA摘要信息:唯一标识一份lsa;

ls type:代表lsa的类型;

ls id;链路状态id,不同类型的lsa,代表含义不一样;

adv router:产生该lsa的设备的router id;

单区域:使用1、2类lsa;

在一个区域内,最终所有该区域的ospf路由器都会同步LSDB;

lsa-1

route lsa

所有的ospf路由器都会产生(仅产生一份);

传递范围:一个区域内;

防环:SPF算法;

摘要:

ls id:产生该LSA的设备的router id;

adv router:产生该LSA的设备的router id;

ls type:route

详细信息:

1、当设备存在p2p网络类型的接口时,会产生,描述p2p网络的拓扑信息;

link-type:p2p

link id:本设备通过P2P链路连接的对端的设备的router id;

data:接口ip;

开销:接口开销;

2、当设备存在广播型网络的接口时,会产生,用于描述广播型网络的拓扑信息;

link-type:transnet

link id:DR的ip地址

data:本接口ip

开销:接口开销;

**DR产生的transnet的信息,其中link id与data会一致;

3、当设备存在p2p网络类型的接口,或者存在宣告进ospf的loopback时,会产生,用于描述P2P网络以及loopback接口的路由信息

link-type:stubnet

link id:目的网段

data:掩码

开销:本设备去往该网段的ospf开销

4、当设备配置了v-link会产生;

link-type:virtual

link id:虚链路对端的ip

data:自身接口ip

开销:本设备去往对端开销

lsa-2

network-lsa

只有DR会产生,用于描述广播型网络的路由信息以及部分拓扑信息;

传递范围:区域内传递;

防环:SPF算法;

摘要信息:

ls type:network lsa;

ls id:DR的ip地址

产生者:DR的router id;

详细信息:

掩码;

加入进该网段的设备的router id;

display ospf lsdb //查看设备的ospf lsdb中的lsa的摘要信息;

display ospf lsdb router x.x.x.x //查看一类lsa的详细信息,其中x.x.x.x为需要查看的ls id

display ospf lsdb network x.x.x.x //查看二类lsa的详细信息,其中x.x.x.x为需要查看的ls id

FULL-SPF算法:

在网络刚启动ospf时,会进行计算;

定义:每台路由器,会根据自身收集到的区域内的一二类lsa,进行计算,画出SPF树,得出最优路由;

计算方式:

1、每台路由器都会把自己当成树根,进行计算,先查看自身产生的一类lsa,查看其中的拓扑信息;

根据开销,选择最小的拓扑信息,新增节点,如果link-type为transnet,新增的为伪节点,通过p2p类型新增的为实节点;

2、再根据新增的节点,去查找相关联的lsa,其中实节点,查找1类lsa,伪节点查找2类lsa,再继续新增新节点,直至网络中没有新节点增加为止;

3、在每个节点上,挂上路由信息,计算出最优路由;

区域间通信:

ABR(区域边界路由器)

定义:在骨干区域以及非骨干区域同时存在FULL邻接关系的ospf路由器;

lsa-3

由ABR产生,只携带路由信息;

传递范围:区域间;(除产生区域外的其他相邻区域,特殊区域除外)

产生过程:ABR会将区域内1、2类lsa中的路由信息,转成3类lsa在其他相邻的区域内传递,其他区域的设备收到后,会累加自身到ABR的开销,得出去往目的网段的路由;

摘要:

ls type:summary-lsa

ls id:目的网段;

产生者:ABR的router id;

详细信息:

掩码;

开销:产生该三类lsa的abr到目的网段的开销;

透传:

当ABR收到三类LSA时,会进行透传操作:

将产生者变为自己,开销修改为自身到目的网段的开销,在其他相邻的区域内传递(特殊区域除外);

防环:

1、水平分割规则:

当ABR从非骨干区域收到三类LSA时,执行只接收,不计算的、不透传的操作;

接收的原因:(1)用于备份路径;

(2)需要在区域内同步LSDB;

2、LSA-1、2优于LSA-3

当ABR同时收到描述相同路由的1、2类lsa以及3类lsa时,会优选1、2类lsa,同时不会将收到的3类lsa进行计算以及透传,作为备份路径使用;

vlink(虚链路)

定义:配置在边界设备上,配置后相当于在配置的两端另外单独建立了一个骨干区域(area 0)的邻接关系;

原理:vlink两端设备会以单播的形式同步area 0的数据库,另外也是通过单播发送hello报文维持邻接关系;

作用:解决因区域划分不规则导致的无法互访的问题;

配置:

ospf 1 router-id 2.2.2.2

area 0.0.0.2 //进入双方共处的区域

vlink-peer 4.4.4.4 //指定对端的router id

display ospf vlink //查看vlink邻接关系的建立情况

配置的注意事项:

1、vlink无法跨区域建立,因为需要通过1类lsa(virtual类型的link type)定位对端的位置,单播发送lsa;

2、骨干区域不可以配置;

3、特殊区域不能配置

危害:

1、增加网络的复杂度;

2、存在环路隐患;

路由引入:

将一个协议的路由以另一个协议路由的形式,在另一个协议中传递;

ospf外部路由:

通过其他协议引入进ospf的路由,优先级默认为150;

ASBR(自治系统边界路由器)

指进行了外部引入的ospf'设备;

LSA-5

用于描述外部路由,携带路由信息;

由ASBR产生;

传递范围:整个ospf域,特殊区域除外;

防环:根据1、2、3、4类lsa的防环规则防环;

摘要信息:

ls type:external

ls id:目的网段;

产生者:ASBR的router id;

详细信息:

掩码;

开销:外部开销;

外部开销:ASBR在进行路由引入时,指定的开销,默认为1;

内部开销:需要访问外部路由的设备到ASBR的开销;

type:代表开销计算方式,分为type 1以及type 2,默认为2;

type 2:直接比较外部开销,比不出来再比较内部开销,路由表上,只呈现外部开销;

type 1:直接比较内外开销之和,路由表上,呈现内部开销+外部开销之和;

为什么需要区分type 1以及type 2:可以在进行选路时,更加灵活控制流量走向;

tag:路由标记,用于匹配路由,默认为1

FA地址(转发地址)

默认为0.0.0.0

作用:解决次优以及环路的问题;

置位条件:

1、ASBR发送lsa-5的接口,跟它自身访问外部路由的出接口为同一接口;

2、上述接口宣告进ospf,并且没有静默;

满足置位条件后,FA会被置位为外部路由的下一跳;

原理:

1、当FA地址为0时,ospf设备通过4类lsa找到ASBR的位置去访问外部路由;

2、当FA地址不为0时,ospf设备直接通过1、2、3类lsa找到FA地址,从而访问外部路由

ospf 1 router-id 5.5.5.5

import-route static cost 2 //引入外部路由时,修改外部开销为2

import-route static cost 2 type 1 //修改开销计算类型

import-route static tag 10 //为引入的路由打上tag 10

display ospf lsdb ase 6.6.6.6 //查看5类lsa的详细信息;

LSA-4

作用:携带ASBR的router id(位置信息),其他ospf设备会根据该lsa找到ASBR,从而访问外部路由;

摘要:

ls type:asbr

ls id:ASBR的router id;

产生者:ABR的router id;

传递范围、防环规则、透传均跟lsa-3一致;

产生过程:

1、当一台ospf路由器引入了外部路由后,它产生的1类lsa中的option位asbr位置位为1;

2、同区域的ABR收到ABSR产生的1类lsa后,则会为该ASBR产生lsa-4,在其他相邻的ospf区域内传递(特殊区域出外)

特殊区域:

作用:保护性能较差的设备;

对性能要求:ASBR>ABR>骨干区域中间设备>普通区域中间设备>特殊区域中间设备;

1、stub区域

特点:不允许存在4、5、7类lsa;

当一个区域配置为stub区域时,该区域的ABR会下发一条描述默认路由的3类lsa,在stub区域内传递,该区域的设备就可以学习到默认路由,用于访问外部路由;

配置:

ospf 1 router-id 3.3.3.3

area 0.0.0.2

stub //把区域2,配置成stub区域,注意整个区域的所有设备均需要配置;

2、totally stub区域

特点:不允许存在4、5、7类以及明细的3类lsa;

当一个区域配置为totally stub区域时,该区域的ABR会下发一条描述默认路由的3类lsa,在totally stub区域内传递,该区域的设备就可以学习到默认路由,用于访问其他区域的路由以及外部路由;

配置:

ospf 1 router-id 3.3.3.3

area 0.0.0.2

stub no-summary //把区域2,配置成totally stub区域

缺陷:stub区域无法引入外部路由;

3、nssa区域

特点:不允许4、5lsa存在;

当一个区域配置为nssa区域时,该区域的ABR会下发一条描述默认路由的7类lsa,在nssa区域内传递,该区域的设备就可以学习到默认路由,用于访问其他区域引入外部路由;

nssa区域可以引入外部路由,引入的路由会以7类lsa的形式在nssa区域内传递;

当nssa区域的ABR在本区域收到7类lsa时,会进行7转5的操作:将类型修改为5类,产生者变为自己,在其余的ospf区域中传递(特殊区域除外),在其余区域的设备严重,该ABR为对应外部路由的ASBR;

当nssa区域中存在多台ABR时,只有router id大的可以进行7转5

lsa-7

用于描述在nssa区域内引入的外部路由,携带路由信息;

传递范围:nssa区域

摘要:

ls id:目的网段;

产生者:ASBR的router id;

type:nssa

详细信息:

掩码;

外部开销

开销计算类型

tag

FA地址(一般不为0)

选举规则:

(1)先看是否满足lsa-5的fa地址置位条件;

(2)在宣告进ospf中的loopback接口中选择最大的ip地址

(3)在宣告进ospf中的物理接口中选择最大的ip地址

作用:防止在nssa区域中存在多台ABR的情况下,只有一台进行7转5时,出现的次优路径问题;

配置:

ospf 1 router-id 3.3.3.3

area 0.0.0.2

nssa //把区域2,配置成nssa区域

4、totally nssa

特点:在nssa区域的基础上,进一步过滤了明细的三类lsa,ABR在下发一条描述默认路由的3类lsa,用于访问区域外的路由;

配置:

ospf 1 router-id 3.3.3.3

area 0.0.0.2

nssa no-summary //把区域2,配置成totally nssa区域

ospf路由汇总

作用:减少路由表/LSDB规模

分类:

1、在ABR上实现,针对lsa-3生效;

ospf 1 router-id 2.2.2.2

area 0.0.0.1 //进入产生3类lsa的区域;

abr-summary 1.1.1.0 255.255.255.0 //进行路由汇总,汇总的结果为1.1.1.0/24

可选参数:not-advertise(汇总不通告),将汇总后的路由进行抑制,起到过滤路由的效果;

2、针对引入路由,在ASBR上实现

ospf 1 router-id 3.3.3.3

asbr-summary 4.4.4.0 255.255.255.0 //进程下进行汇总,如果存在nssa区域,则可以选择在ASBR或者是NSSA区域中进行7转5的ABR上做

静默接口

作用:使接口不发送hello报文,但不影响该接口的网段通告出去;

应用:用于连接终端设备的接口;

配置

ospf 1 router-id 1.1.1.1

silent-interface GigabitEthernet0/0/1

影响ospf邻接关系建立因素

1、版本需要一致;

2、router id不能一致;

3、区域id要一致;

4、如果配置了认证,认证需要通过;

5、掩码要求一致(p2p网络不检查该项)

6、hello/超市时间一致;

7、option中的E以及N位要一致(区域类型要一致)

8、接口不能被静默

9、MTU要一致;

10、网络类型:广播型与p2p网络可以建立full的邻接关系,但是路由计算会出问题(用的lsa不一样,无法正常计算SPF树);

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

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

相关文章

C语言每日一题——倒转字符

今天分享一道题目 编写一个函数 reverse_string(char * string)&#xff08;递归实现&#xff09; 实现&#xff1a;将参数字符串中的字符反向排列&#xff0c;不是逆序打印。 要求&#xff1a;不能使用C函数库中的字符串操作函数。 char arr[]"abcdef";将上面的代…

解决Unable to load authentication plugin ‘caching_sha2_password‘

连接Mysql8时报错&#xff1a; java.sql.SQLException: Unable to load authentication plugin caching_sha2_password.原因 不同版本的认证插件不同造成的 8版本前是&#xff1a;default_authentication_pluginmysql_native_password 8版本后是&#xff1a;default_authenti…

回调函数的使用:案例一:c语言简单信号与槽机制。

系列文章目录 文章目录 系列文章目录前言一、回调函数1.1 回调函数基本概念1.2 简单实现 二、代码案例1.代码示例 总结 前言 了解回调函数的基本概念&#xff0c;函数指针的使用、简单信号与槽的实现机制&#xff1b; 一、回调函数 1.1 回调函数基本概念 回调函数就是一个通…

禾匠榜店商城小程序“商家付款至零钱”最新提现接口文件(替换原企业付款到零钱接口)替换说明

禾匠榜店商城使用过的会员都知道提现接口一直使用企业付款到零钱&#xff0c;老商户还能使用&#xff0c;但新开通微信支付的商户只能申请商家付款至零钱。老接口已不适应原来的提现方式&#xff0c;该接口文件适用禾匠榜店商城小程序4.5.14版本“商家付款至零钱”最新接口&…

Rust vs Go:常用语法对比(九)

题图来自 Golang vs Rust - The Race to Better and Ultimate Programming Language 161. Multiply all the elements of a list Multiply all the elements of the list elements by a constant c 将list中的每个元素都乘以一个数 package mainimport ( "fmt")func …

js版计算比亚迪行驶里程连续12个月计算不超3万公里改进版带echar

<!DOCTYPE html> <html lang"zh-CN" style"height: 100%"> <head> <meta charset"utf-8" /> <title>连续12个月不超3万公里计算LIGUANGHUA</title> <style> .clocks { …

IDEA以服务列表的形式展示

IDEA以服务列表的形式展示 要是没有要显示的服务列表的话就右键将启动的全部添加进去。正常是懒加载的形式&#xff0c;正常启动了就会添加进去。

超强阵容!HarmonyOS极客马拉松2023专家评审团来袭!

数十位重量级专家现身决赛现场&#xff0c;为参赛者提供多角度专业点评。12支队伍&#xff0c;46位选手&#xff0c;齐聚东莞松山湖&#xff0c;围绕HarmonyOS技术特性&#xff0c;共同挑战36小时极限编程&#xff0c;谁将问鼎决赛之巅&#xff0c;8.3日-5日&#xff0c;我们拭…

SLM实验室:新的RL研究基准和软件框架

计算和人才的增加使强化学习&#xff08;RL&#xff09;研究成为机器学习的热门领域 - 它已被用于解决自动驾驶汽车&#xff0c;机器人技术&#xff0c;药物发现等方面的问题。但是&#xff0c;找到一种方法来重现现有工作并准确评估迭代改进仍然是RL面临的一项艰巨挑战。 为了…

青少年中心:温湿度这个隐藏技巧,快速搞定环境安全

青少年是一个国家未来的重要资源&#xff0c;他们的成长环境对于塑造其积极向上的人生轨迹至关重要。在青少年中心&#xff0c;我们致力于提供一个安全、温馨的学习和交流空间&#xff0c;让青少年们得以充分发展自己的潜力。 为了确保青少年中心的环境始终符合健康标准&#x…

【技术宅提前活20年】如何用工业主机搭建一个个人网站

目录 引言 准备 部署 引言 随着网络技术的发展&#xff0c;摩尔定律的规律使得硬件的造价不再高昂。今天&#xff0c;安安就教大家如何用工业主机搭建一个个人网站。 效果展示 安城安的云世界 准备 1.小型工业主机一台 在网上可以买到~1000元左右可以买一台不错的。 2.内…

【C语言】函数----详解

&#x1f341; 博客主页:江池俊的博客 &#x1f4ab;收录专栏&#xff1a;C语言——探索高效编程的基石 &#x1f4bb; 其他专栏&#xff1a;数据结构探索 &#x1f3e9;代码仓库&#xff1a;江池俊的代码仓库 &#x1f3aa; 社区&#xff1a;C/C之家社区(欢迎大家加入与我一起…

iwatch怎么更改表盘样式 iwatch更改表盘样式方法

今年苹果终于带来了一个Apple Watch用户期待了已久的功能&#xff1a;第三方表盘&#xff0c;那么Apple Watch表盘如何更改、切换表盘还有如何调整表盘颜色设置等等&#xff0c;跟随小编一起来看看吧&#xff01; 详细的图文教程 如何在 Apple Watch 上切换表盘 在表盘上&…

如何在vue3中使用swiper插件(教程)

我的项目环境Vue3vitetsscss, 首先当然是下载依赖: pnpm install swiper10.0.4一定要下载正确的版本, 每个版本的使用差异还是有一些的 2.使用以下代码进行测试 <template> <div> <swiper :modules"modules" :navigation"true" :loop&qu…

牛客周赛 Round 4---游游的因子计算

输入 6 2 输出 6 1 2 3 4 6 12 解析&#xff1a; 如果一个数 x 是 a 的因子&#xff0c;y是b的因子&#xff0c;那么x*y一定是a*b的因子。 试除法分别获取a和b的因子&#xff0c;然后两层遍历的所有 a[ i ] * b[ j ] 的所有情况即为答案。 #include<bits/stdc.h> u…

python中出现形如‘break‘ outside loop错误

背景&#xff1a; 具体场景是我在使用PyQt5开发中&#xff0c;QMessage弹框收到特定信息后期望终止整个槽函数&#xff0c;当时想着就用了break这个关键字&#xff0c;期望终止整个函数执行&#xff0c;没想到报错break outside loop 大家如果没用过PyQt5也不用担心&#xff…

翻译新时代:借助文档翻译器开启全球交流之旅

在小雅家的客厅里&#xff0c;小雅正在和她的朋友小明聊天。小雅最近参加了一个国际学术会议&#xff0c;她发现了一些有趣的研究论文&#xff0c;但是其中一些是用外语写的&#xff0c;让她有些头疼。 小雅&#xff1a;小明&#xff0c;你知道文档翻译工具有哪些吗&#xff1…

从vtk/pcl源码中,分离pclVisilization 和 vtkQtWidget

背景: vtk和pcl是优秀的三维开源引擎, 但是我们在工程中,需要集成到我们软件中,因而有了QVtkOpenglWidget等直接嵌入Qt程序的要求; 但是从vtk8.2之后,这部分源码又剔除出去了,随之影响的还有pcl 8.0系列之后的版本; 那么升级就遇到问题了, 如果在版本之前的编译我们还好说,但…

基于SpringBoot的开源项目/demo汇总

一些基于SpringBoot的开源项目&#xff0c;方便大家学习&#xff0c;参考。持续更新&#xff0c;排名不分先后。也欢迎贡献&#xff08;回复此贴&#xff09;。 1、GitHub - Tencent/APIJSON: &#x1f3c6; 零代码、全功能、强安全 ORM 库 &#x1f680; 后端接口和文档零代码…

Power apps:做个弹窗

首先需要添加一个组件 接着在组件里插入一个矩形&#xff0c;背景我设为了白色&#xff0c;添加弹窗的内容&#xff0c;比如label&#xff0c;按钮之类的&#xff0c;覆盖在矩形上方 回到应用中&#xff0c;在需要出现弹窗的窗口插入这个自定义组件&#xff0c;设置它的Visible…