专题十六:虚拟路由冗余协议——VRRP
一、VRRP简介
VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议通过把几台设备联合组成一台虚拟的设备,使用一定的机制保证当主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保持通讯的连续性和可靠性。
VRRP的运行结果是在局域网上提供一个虚拟路由器。
本例中:
局域网中有两个路由器R1和R2,R1端口IP地址为192.168.1.251/24,R2端口IP地址为192.168.1.252/24。
配置R1和R2关联到同一个虚拟路由器,该虚拟路由器使用192.168.1.254做为端口IP地址。
所有的PC使用192.168.1.254做为默认网关。

VRRP可以分为VRRP for IPv4和VRRP for IPv6(简称VRRP6)。VRRP for IPv4支持VRRPv2和VRRPv3,而VRRP for IPv6仅支持VRRPv3。对IPv4网络而言,VRRP协议报文封装在IP报文中,发送到分配给VRRP的组播地址,目的地址是224.0.0.18,TTL是255,协议号是112。
为什么需要VRRP?
现网中的主机使用缺省网关与外部网络联系时,如果网关的设备出现故障,与其相连的主机将与外界失去联系,导致业务中断

二、VRRP基本概念
VRRP虚拟MAC地址为00-00-5E-00-01-组id值。
VRRP优先级1-255,默认优先级100,VRRP协议默认开启了抢占。默认发送免费ARP报文时间间隔180秒。
VRRP角色分为Master和Backup。Master承载转发报文任务,Backup作为备份,一旦Master出现故障,Backup接替成为Master
| 概念 | 含义 |
| 虚拟路由器(Virtual Router) | 又称为VRRP备份组,由一个Master设备和若干个Backup设备组成,被当作一个共享局域网内主机的缺省网关。它包括了一个虚拟路由器标识符和一组虚拟IP地址。 |
| VRID | 虚拟路由器的靿栃标识。具有相同VRID的一组设备构成一个虚拟路由器。 |
| 虚拟IP地址(Virtual IP Address) | 虚拟路由器的IP地址,一个虚拟路由器可以有一个或多个IP地址,由用户配置。 |
| 虚拟MAC地址(Virtual MAC Address) | 虚拟路由器根据虚拟路由器ID生成的MAC地址。一个虚拟路由器拥有一个虚拟MAC地址,格式为:00-00-5E-00-01-{VRID}(VRRP for IPv4)或者00-00-5E-00-02-{VRID}(VRRP for IPv6)。当虚拟路由器回应ARP请求(VRRPfor IPv4)或者NS请求(VRRP for IPv6)时,使用虚拟MAC地址,而不是接口的真实MAC地址。 |
| IP地址拥有者(IP Address 0wner) | 如果一个VRRP设备将虚拟路由器IP地址作为真实的接口地址,则该设备被称为IP地址拥有者。如果IP地址拥有者是可用的,通常它将成为Master。 |
| 主IP地址(Primary IP Address) | 从接口的真实IP地址中选出来的一个可用IP地址,通常选择配置的第一个IP地址。VRRP广播报文使用主IP地址作为 IP报文的源地址。 |
| VRRP设备 | 运行VRRP协议的设备,它可能属于一个或多个虚拟路由器。 |
| Master设备 | 承载转发报文任务的VRRP设备。 |
| Backup设备 | 一组没有承担转发任务的VRRP设备,当Master设备出现故障时,它们将通过竞选成为新的Master设备。 |
| 优先级(Priority) | 虚拟路由器中VRRP设备的优先级。虚拟路由器根据优先级选举出Master设备和Backup设备。 |
| VRRP抢占模式 | 在抢占模式下,如果Backup设备的优先级比当前Master设备的优先级高,则主动将自己切换成Master。 |
| VRRP非抢占模式 | 在非抢占模式下,只要Master设备没有出现故障,Backup设备即使随后被配置了更高的优先级也不会成为Master设备。 |
| Adver_Interval定时器 | Master设备会根据该定时器定期发送VRRP通告报文。 |
| Master_Down定时器 | Backup设备在该定时器超时后,会变为Master状态。 |
三、VRRP报文格式
VRRP只有一种报文,即Advertisement报文,基于组播方式发送,因此只能在同一个广播域传递。 Advertisement报文的目的组播地址为224.0.0.18。

VRRP报文字段含义如下:
Ver:VRRP目前有两个版本,其中VRRPv2仅适用于IPv4网络,VRRPv3适用于IPv4和IPv6两种网络。
Virtual Rtr ID:该报文所关联的虚拟路由器的标识。
Priority:发送该报文的VRRP路由器的优先级。
Count IP Addrs:该VRRP报文中所包含的虚拟IP地址的数量。
Auth Type:VRRP支持三种认证类型:不认证、纯文本密码认证、MD5方式认证,对应值分别为0、1、2。
Adver Int:发送VRRP通告消息的间隔。默认为1秒
IP Address:所关联的虚拟路由器的虚拟IP地址,可以为多个。
Authentication Data:验证所需要的密码信息。
四、VRRP状态机
VRRP协议中定义了三种状态机:初始状态(Initialize)、活动状态(Master)、备份状态(Backup)。其中,只有处于Master状态的设备才可以转发那些发送到虚拟IP地址的报文。

五、VRRP协议状态
| Master状态 | Backup状态 |
| 1.定期(ADVER_INTERVAL)发送VRRP报文。 2.以虚拟MAC地址响应对虚拟IP地址的ARP请求。 3.转发目的MAC地址为虚拟MAC地址的IP报文。 4.默认允许ping通虚拟IP地址。 5.当多台设备同时为Master时,若设备收到与自己优先级相同的报文时,会进一步比较IP地址的大小。如果收到报文的源IP地址比自己大,则切换到Backup状态,否则保持Master状态。 | 1.接收Master设备发送的VRRP报文,判断Master设备的状态是否正常。 2.对虚拟IP地址的ARP请求,不做响应。 3.丢弃目的MAC地址为虚拟MAC地址的IP报文。 4.丢弃目的IP地址为虚拟IP地址的IP报文。 5.如果收到优先级和自己相同或者比自己优先级大的报文时,重置MASTER_DOWN定时器,不进一步比较IP地址的大小。 |
六、VRRP主备选举
-
优先级不同
-
开启VRRP进入初始化状态
-
设备根据VRRP优先级,计算超时定时器,时间短的进入Master状态
-
开始发送VRRP报文,优先级高的被选举为Master设备
-
发送免费ARP检测地址冲突,以及通告设备和主机(交换机和主机无需进行ARP解析和泛洪,缩短故障时间)

-
优先级相同
-
开启VRRP进入初始化状态
-
设备根据VRRP优先级,计算超时定时器,同时进入Master状态
-
开始发送VRRP报文,优先级相同,继续对比IP地址,越大越优,IP地址小的切换为Backup状态
-
发送免费ARP检测地址冲突,以及通告设备和主机

七、VRRP负载分担
负载分担是指多个VRRP备份组同时承担业务,VRRP负载分担与VRRP主备备份的基本原理和报文协商过程都是相同的。同样对于每一个VRRP备份组,都包含一个Master设备和若干Backup设备。
VRRP备份组1:DeviceA作为Master设备,DeviceB作为Backup设备。
VRRP备份组2:DeviceB作为Master设备,DeviceA作为Backup设备。
一部分用户将VRRP备份组1作为网关,另一部分用户将VRRP备份组2作为网关。这样便可实现分担业务流量又相互备份的目的。

八、VRRP路由监控与接口联动
配置VRRP备份组后,VRRP备份组之间的主备切换通过VRRP通告报文进行协商。当网络中出现故障(比如接口Down或链路故障)或网络进行调整时,VRRP备份组并不能及时感知并进行状态切换,或者当VRRP备份组在主备切换完成后未能及时联动路由,会造成流量转发故障。
路由监视配置思路:
DeviceA上的VRRP备份组的优先级为120,状态为Master;
DeviceB上的VRRP备份组的优先级为100,状态为Backup,为立即抢占;
DeviceA上VRRP监视地址为10.1.2.0/24网段的路由,在检测到10.1.2.0/24网段信息为不可达时,DeviceA的优先级降低40(优先级降低后必须小于100)。

接口联动配置思路:
DeviceA上的VRRP备份组的优先级为120,状态为Master;
DeviceB上的VRRP备份组的优先级为100,状态为Backup,为立即抢占;
在DeviceA上配置监视上行接口interface1,当interface1状态变为Down时,DeviceA降低自身优先级,通过VRRP通告报文协商,DeviceB抢占成为Master设备,承担流量转发
九、VRRP的配置实现
1.VRRP常用基本配置
1.创建VRRP备份组并给备份组配置虚拟IP地址
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id virtual-ip virtual-address
注意:各备份组之间的虚拟IP地址不能重复;同属一个备份组的设备接口需使用相同的VRID。
2. 配置路由器在备份组中的优先级
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id priority priority-value
注意:通常情况下,Master设备的优先级应高于Backup设备。
3. 配置备份组中设备的抢占延迟时间
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id preempt-mode timer delay delay-value
4. 配置VRRP备份组中设备采用非抢占模式
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id preempt-mode disable
缺省情况下,抢占模式已被激活。
5. 配置VRRP备份组监视接口
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id track interface interface-type interface-number [ increased value-increased | reduced value-decreased ]
可配置设备当检测到上行接口或链路出现故障时,增加或者减少自身优先级,IP地址拥有者和Eth-trunk成员口不允许配置VRRP监视功能。
6. 配置VRRP备份组联动普通BFD会话
[interface-GigabitEthernet0/0/0] vrrp vrid virtual-router-id track bfd-session { bfd-session-id | session-name bfd-configure-name } [ increased value-increased | reduced value-reduced ]
如果选择参数session-name bfd-configure-name,可以绑定静态BFD会话或者标识符自协商的静态BFD会话。如果选择参数bfd-session-id,只能绑定静态BFD会话。
2.VRRP基础配置实例

配置要求:
R1与R2组成一个VRRP备份组,其中R1为Master,R2为Backup;
Master设备故障恢复时采用抢占模式,抢占延时10秒;
Master设备监视上行接口状态实现VRRP主备自动切换。
R1:
[R1] interface GigabitEthernet0/0/0
[R1-GigabitEthernet0/0/0] ip address 192.168.1.253 24
[R1-GigabitEthernet0/0/0] vrrp vrid 1 virtual-ip 192.168.1.254
[R1-GigabitEthernet0/0/0] vrrp vrid 1 priority 120
[R1-GigabitEthernet0/0/0] vrrp vrid 1 preempt-mode timer delay 10
[R1-GigabitEthernet0/0/0] vrrp vrid 1 track interface GigabitEthernet0/0/1 reduced 30
R2:
[R2] interface GigabitEthernet0/0/0
[R2-GigabitEthernet0/0/0] ip address 192.168.1.252 24
[R2-GigabitEthernet0/0/0] vrrp vrid 1 virtual-ip 192.168.1.254
[R2-GigabitEthernet0/0/0] vrrp vrid 1 priority 110
3.VRRP主备备份配置

HostA通过Switch双归属到RouterA和RouterB。用户希望实现:
正常情况下,主机以RouterA为默认网关接入Internet,当RouterA故障时,RouterB接替作为网关继续进行工作,实现网关的冗余备份。RouterA故障恢复后,可以重新成为网关。
配置思路:
采用VRRP主备备份实现网关冗余备份,配置思路如下:
(1)配置各设备接口IP地址及路由协议,使各设备间网络层连通。
(2)在RouterA和RouterB上配置VRRP备份组。其中,RouterA上配置较高优先级和20秒抢占延时,作为Master设备承担流量转发;RouterB上配置较低优先级,作为备用工业路由交换一体机,实现网关冗余备份。
配置步骤:
(1)配置设备间的网络互连
# 配置设备各接口的IP地址,以RouterA为例。RouterB和RouterC的配置与RouterA类似,详见配置文件。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] undo portswitch
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.1 24
[RouterA-GigabitEthernet2/0/0] quit
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] undo portswitch
[RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 24
[RouterA-GigabitEthernet1/0/0] quit
# 配置RouterA、RouterB和RouterC间采用OSPF协议进行互连。以RouterA为例,RouterB和RouterC的配置与RouterA类似,详见配置文件。
[RouterA] ospf 1
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
(2)配置VRRP备份组
# 在RouterA上创建VRRP备份组1,配置RouterA在该备份组中的优先级为120,并配置抢占时间为20秒。
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.111 //配置vrrp虚拟ip和vrid
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 priority 120 //默认优先级为100,RouterA设置优先级为120,该设备为Master
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 preempt-mode timer delay 20 //VRRP默认是抢占模式,设置抢占延时,避免频繁出现主备切换
[RouterA-GigabitEthernet2/0/0] quit
# 在RouterB上创建VRRP备份组1,其在该备份组中的优先级为缺省值100。
[RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.111
[RouterB-GigabitEthernet2/0/0] quit
(3)验证配置结果
# 完成上述配置以后,在RouterA和RouterB上分别执行display vrrp命令,可以看到RouterA在备份组中的状态为Master,RouterB在备份组中的状态为Backup。
4.VRRP负载分担

HostA和HostC通过Switch双归属到RouterA和RouterB。用户希望HostA以RouterA为默认网关接入Internet,RouterB作为备份网关;HostC以RouterB为默认网关接入Internet,RouterA作为备份网关,以实现流量的负载均衡。
配置思路:
采用VRRP多网关负载分担实现流量的负载均衡,配置思路如下:
(1)配置各设备接口IP地址及路由协议,使各设备间网络层连通。
(2)在RouterA和RouterB上创建VRRP备份组1和VRRP备份组2,在备份组1中,配置RouterA为Master设备,RouterB为Backup设备;在备份组2中,配置RouterB为Master设备,RouterA为Backup设备,实现流量的负载均衡。
配置步骤:
(1)配置设备间的网络互连
# 配置设备各接口的IP地址,以RouterA为例。RouterB和RouterC的配置与RouterA类似,详见配置文件。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] undo portswitch
[RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 24
[RouterA-GigabitEthernet1/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] undo portswitch
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.1 24
[RouterA-GigabitEthernet2/0/0] quit
# 配置RouterA、RouterB和RouterC间采用OSPF协议进行互连。以RouterA为例,RouterB和RouterC的配置与RouterA类似,详见配置文件。
[RouterA] ospf 1
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
(2)配置VRRP备份组
# 在RouterA和RouterB上创建VRRP备份组1,配置RouterA的优先级为120,抢占延时为20秒;RouterB的优先级为缺省值。
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.111
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 priority 120
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 preempt-mode timer delay 20
[RouterA-GigabitEthernet2/0/0] quit
[RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.111
[RouterB-GigabitEthernet2/0/0] quit
# 在RouterA和RouterB上创建VRRP备份组2,配置RouterB的优先级为120,抢占延时为20秒;RouterA的优先级为缺省值。
[
RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] vrrp vrid 2 virtual-ip 10.1.1.112
[RouterB-GigabitEthernet2/0/0] vrrp vrid 2 priority 120
[RouterB-GigabitEthernet2/0/0] vrrp vrid 2 preempt-mode timer delay 20
[RouterB-GigabitEthernet2/0/0] quit
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] vrrp vrid 2 virtual-ip 10.1.1.112
[RouterA-GigabitEthernet2/0/0] quit
(3)验证配置结果
#在RouterA上执行display vrrp命令,可以看到RouterA在备份组1中作为Master设备,在备份组2中作为Backup设备。
# 在RouterB上执行display vrrp命令,可以看到RouterB在备份组1中作为Backup设备,在备份组2中作为Master设备。
5.VRRP监视上行接口

局域网主机通过Switch双归属到部署了VRRP备份组的RouterA和RouterB,其中RouterA为Master。
用户希望当RouterA的上行接口GE1/0/0状态Down时,VRRP备份组能够及时感知并进行主备切换,由RouterB接替作为网关继续承担业务转发,以减小接口状态Down对业务传输的影响。
配置思路:
采用VRRP与接口状态联动实现对上行接口故障的感知及主备网关的切换,配置思路如下:
(1)配置各设备接口IP地址及路由协议,使网络层路由可达。
(2)在RouterA和RouterB上配置VRRP备份组。其中,RouterA上配置较高优先级,作为Master设备承担业务转发;RouterB上配置较低优先级,实现冗余备份。
(3)在RouterA上配置VRRP与接口状态联动,监视上行接口GE1/0/0,实现RouterA到RouterC间链路故障时,VRRP备份组及时感知并进行主备切换。
操作步骤:
(1)配置设备间的网络互连
# 配置设备各接口的IP地址,以RouterA为例。RouterB和RouterC的配置与RouterA类似,详见配置文件。
<Huawei> system-view
[Huawei] sysname RouterA
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] undo portswitch
[RouterA-GigabitEthernet2/0/0] ip address 10.1.1.1 24
[RouterA-GigabitEthernet2/0/0] quit
[RouterA] interface gigabitethernet 1/0/0
[RouterA-GigabitEthernet1/0/0] undo portswitch
[RouterA-GigabitEthernet1/0/0] ip address 192.168.1.1 24
[RouterA-GigabitEthernet1/0/0] quit
# 配置RouterA、RouterB和RouterC间采用OSPF协议进行互连。以RouterA为例,RouterB和RouterC的配置与RouterA类似,详见配置文件。
[RouterA] ospf 1
[RouterA-ospf-1] area 0
[RouterA-ospf-1-area-0.0.0.0] network 10.1.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] network 192.168.1.0 0.0.0.255
[RouterA-ospf-1-area-0.0.0.0] quit
[RouterA-ospf-1] quit
(2)配置VRRP备份组
# 在RouterA上创建VRRP备份组1,配置RouterA在该备份组中的优先级为120,并配置抢占延时为20秒。
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.3
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 priority 120
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 preempt-mode timer delay 20
[RouterA-GigabitEthernet2/0/0] quit
# 在RouterB上创建VRRP备份组1,其在该备份组中的优先级为缺省值100。
[RouterB] interface gigabitethernet 2/0/0
[RouterB-GigabitEthernet2/0/0] vrrp vrid 1 virtual-ip 10.1.1.3
[RouterB-GigabitEthernet2/0/0] quit
(3)配置VRRP与接口状态联动
# 在RouterA上配置VRRP与接口状态联动,当监视的接口GE1/0/0状态Down时,RouterA的优先级降低40。
[RouterA] interface gigabitethernet 2/0/0
[RouterA-GigabitEthernet2/0/0] vrrp vrid 1 track interface gigabitethernet 1/0/0 reduced 40 //优先级从120-40=80,小于RouterB默认的100优先级,所以RouterB变为Master设备
[RouterA-GigabitEthernet2/0/0] quit
(4)验证配置结果
# 完成上述配置后,在RouterA和RouterB上分别执行display vrrp命令,可以看到RouterA为Master设备,联动的接口状态为Up,RouterB为Backup设备。
相关文章:
专题十六:虚拟路由冗余协议——VRRP
一、VRRP简介 VRRP(Virtual Router Redundancy Protocol)虚拟路由冗余协议通过把几台设备联合组成一台虚拟的设备,使用一定的机制保证当主机的下一跳设备出现故障时,及时将业务切换到备份设备,从而保持通讯的连续性和…...
Java中常见的锁synchronized、ReentrantLock、ReentrantReadWriteLock、StampedLock
在Java中,锁是实现多线程同步的核心机制。不同的锁适用于不同的场景,理解其实现原理和使用方法对优化性能和避免并发问题至关重要。 一、隐式锁:synchronized 关键字 实现原理 基于对象监视器(Monitor):每…...
DDPM(diffusion)原理
DDPM(diffusion)原理 1、DDPM(原理)2、DDPM和 Conditional DDPM(原理解释)2.1. Diffusion Models 原理详解核心思想前向扩散过程(Forward Diffusion)反向去噪过程(Revers…...
《软件设计师》复习笔记(2.2)——效验码、体系结构、指令、流水线
目录 一、校验码 码距 奇偶校验码 循环冗余校验码(CRC) 海明码 真题示例: 二、体系结构 Flynn分类法 三、指令系统 指令组成 指令执行过程 指令的寻址方式 操作数的寻址方式 CISC vs RISC 真题示例: 四、流水线技…...
BT1120 BT656驱动相关代码示例
前些年做视频输出项目的时候用过bt1120 tx与rx模块,现将部分代码进行记录整理。代码功能正常,可正常应用。 1. rx部分: /****************************************************************************** Copyright (C) 2021,All rights …...
2025.04.19-阿里淘天春招算法岗笔试-第一题
📌 点击直达笔试专栏 👉《大厂笔试突围》 💻 春秋招笔试突围在线OJ 👉 笔试突围OJ 01. 字符交换智慧 问题描述 卢小姐有一个长度为 n n n 的字符串...
IsaacSim Asserts 配置
IsaacSim Asserts 配置 背景解决方案资源准备具体操作步骤验证 背景 我是习惯使用 isaacsim 的 standalone 模式,使用 python 脚本直接运行 script,然后弹窗,按照规则正确运行即可,但是,这就导致了一些问题出现&#…...
关于viewpager常见的泄漏
在一个页面中 如果有用到tab,有需要进行fragment的切换,经常就看到了private var fragments arrayListOf<Fragment>()private fun initFragment() {arguments?.let {hopeToPosition it.getInt(IntentConstant.MAIN_PAGE_GO, 0)workoutType it.…...
深入剖析 C/S 与 B/S 架构及网络通信基础
目录 C/S 架构详解 概念与示例 优点 B/S 架构详解 概念与示例 优势 缺点 C/S 与 B/S 的区别 架构组成 使用场景 开发和维护 安全性 网络通信基础 IP 地址 MAC(物理地址) 端口 路由器 网关 子网掩…...
接口自动化 ——fixture allure
一.参数化实现数据驱动 上一篇介绍了参数化,这篇 说说用参数化实现数据驱动。在有很多测试用例的时候,可以将测试用例都存储在文件里,进行读写调用。本篇主要介绍 csv 文件和 json 文件。 1.读取 csv 文件数据 首先创建 csv 文件ÿ…...
systemctl管理指令
今天我们来继续学习服务管理指令,接下来才是重头戏-systemctl,那么话不多说,直接开始吧. systemctl管理指令 1.基本语法: systemctl [start | stop | restart | status]服务 注:systemctl指令管理的服务在/usr/lib/ systemd/system查看 2.systemctl设置服务的自…...
【文件操作与IO】详细解析文件操作与IO (二)
本篇博客是上一篇文章的续写,重点介绍数据流,还包括三道练习题. 🐎文章专栏: JavaEE初阶 🚀若有问题 评论区见 ❤ 欢迎大家点赞 评论 收藏 分享 如果你不知道分享给谁,那就分享给薯条. 你们的支持是我不断创作的动力 . 王子,公主请阅🚀 要开心…...
go-map+sync.map的底层原理
map 哈希冲突解决方式 1.拉链法 2.开放地址法 底层结构 Go 的 map 在源码中由 runtime.hmap 结构体表示,buckets-指向桶数组的指针(常规桶),oldbuckets-扩容时指向旧桶数组的指针。 type hmap struct {count int // 当前元素个数(len…...
java怎么找bug?Arthas原理与实战指南
Arthas原理与实战指南 1. Arthas简介 Arthas是阿里巴巴开源的Java诊断工具,其名字取自《魔兽世界》的人物阿尔萨斯。它面向线上问题定位,被广泛应用于性能分析、定位问题、安全审计等场景。Arthas的核心价值在于它能够在不修改应用代码、不重启Java进程…...
Windows使用SonarQube时启动脚本自动关闭
一、解决的问题 Windows使用SonarQube时启动脚本自动关闭,并发生报错: ERROR: Elasticsearch did not exit normally - check the logs at E:\Inori_Code\Year3\SE\sonarqube-25.2.0.102705\sonarqube-25.2.0.102705\logs\sonarqube.log ERROR: Elastic…...
Day53 二叉树的层序遍历
给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 /*** Definition for a binary tree node.* public class TreeNode {* int val;* TreeNode left;* TreeNode right;* T…...
物联网智慧教室项目(完整版)
物联网智慧教室项目(一):智慧教室项目解决方案 一、智慧教室项目设计 (一)环境信息采集控制功能 1、硬件设计 使用STM32开发板模拟灯光控制,报警控制,光照信息采集: 灯光控制通过GPIO控制板载LED报警控…...
替代升级VMware | 云轴科技ZStack构建山西证券一云多芯云平台
通过云轴科技ZStack Cloud云平台,山西证券打造了敏捷部署、简单运维的云平台,不仅兼容x86、海光、鲲鹏三种异构服务器实现一云多芯,还通过云平台虚拟化纳管模块纳管原有VMware虚拟化资源,并对接第三方集中式存储,在保护…...
计算机网络期中复习笔记(自用)
复习大纲 –第一章 概述 计算机网络的组成 网络边缘:主机和网络应用程序(又称为“端系统”) 端系统中运行的程序之间的通信方式可划分为两大类: 客户/服务器方式(C/S方式) 对等方式(P2P方式…...
14.Chromium指纹浏览器开发教程之WebGL指纹定制
WebGL指纹概述 当在浏览器打开的网页上浏览内容时,看到的大多是平面的、静态的图像和文字。但是有时想要在网页上看到更加生动、立体的图像,如3D游戏、虚拟现实应用等。这时,就需要用到WebGL。 简单来说,WebGL(Web G…...
GitHub SSH连接终极解决方案
GitHub SSH连接终极解决方案:443端口修改多场景故障排查指南 一、问题现象速查 当开发者执行以下命令时出现连接异常: ssh -T gitgithub.com常见报错类型: 经典端口阻塞ssh: connect to host github.com port 22: Connection refused密钥验…...
Git 中修改某个特定的commit提交内容
在 Git 中修改某个特定的提交(commit)通常需要使用 交互式变基(Interactive Rebase) 或 修改提交(Commit Amend)。以下是不同场景下的具体操作步骤: 一、修改最近的提交(最新提交&am…...
每日算法【双指针算法】(Day 1-移动零)
双指针算法 1.算法题目(移动零)2.讲解算法原理3.编写代码 1.算法题目(移动零) 2.讲解算法原理 数组划分,数组分块(快排里面最核心的一步)只需把0改为tmp 双指针算法:利用数组下标来…...
B端管理系统:企业运营的智慧大脑,精准指挥
B端管理系统的定义与核心功能 B端管理系统(Business Management System)是专门设计用于支持企业内部运作和外部业务交互的一套软件工具。它集成了多种功能模块,包括但不限于客户关系管理(CRM)、供应链管理(SCM)、人力资源管理(HRM)以及财务管…...
使用Java基于Geotools的SLD文件编程式创建与磁盘生成实战
前言 在地理信息系统(GIS)领域,地图的可视化呈现至关重要,而样式定义语言(SLD)文件为地图元素的样式配置提供了强大的支持。SLD 能够精确地定义地图图层中各类要素(如点、线、面、文本等&#x…...
Git 命令速查手册
听说用美图可以钓读者? 一、基础操作核心命令 1. 仓库初始化与克隆 命令作用示例git init创建新仓库git init my-projectgit clone克隆远程仓库git clone [https://github.com/user/repo.git](https://github.com/user/repo.git)git remote add关联远程仓库git re…...
PKI 公钥基础设施
PKI 的全称是公钥基础设施(Public Key Infrastructure),是一个基于公钥加密技术,为网络环境中的各种应用提供安全服务的基础设施,由多个部分组成,各部分协同工作以实现数字证书的管理、密钥的生成与管理以及…...
android测试硬件工具 安卓硬件测试命令
Android开发常用ADB命令大全 在Android开发过程中,ADB(Android Debug Bridge)是一个非常重要的调试工具。掌握这些命令可以大大提高开发效率。如果你正在使用克魔开发助手(Keymob)这样的开发工具,你会发现它已经集成了很多ADB功能,让调试变得…...
网络编程 - 4 ( TCP )
目录 TCP 流套接字编程 API 介绍 SeverSocket Socket 用 TCP 实现一个回显服务器 服务端 客户端 运行调试 第一个问题:PrintWriter 内置的缓冲区 - flush 刷新解决 第二个问题:上述代码中,需要进行 close 操作吗? 第三…...
OSPF综合实验(HCIP)
1,R5为ISP,其上只能配置Ip地址;R4作为企业边界路由器, 出口公网地址需要通过ppp协议获取,并进行chap认证 2,整个OSPF环境IP基于172.16.0.0/16划分; 3,所有设备均可访问R5的环回&…...
