网络运维与网络安全 学习笔记2023.11.23

网络运维与网络安全 学习笔记 第二十四天
在这里插入图片描述

今日目标

VRRP负载均衡、BFD原理与配置、BFD典型应用
DHCP工作原理、全局模式DHCP

VRRP负载均衡

VRRP单组缺陷

每网段存在一个VRRP组,缺点如下:
主网关数据转发压力大
备份网关不转发任何数据
网络设备利用率低
在这里插入图片描述
每网段设置多个VRRP组
虚拟网关1的IP为192.168.1.254
PC-1的网关为虚拟网关1
在这里插入图片描述
每网段设置多个VRRP组
虚拟网关2的IP为192.168.1.253
PC-2的网关为虚拟网关2
在这里插入图片描述
配置虚拟网关1,配置R1
interface gi0/0/0
vrrp vrid 1 virtual-ip 192.168.1.254 //配置虚拟路由器1的IP
vrrp vrid 1 priority 200 //配置虚拟路由器R1的优先级为200
配置虚拟网关1,配置R2
interface gi0/0/0
vrrp vrid 1 virtual-ip 192.168.1.254 //配置虚拟路由器1的IP
配置虚拟网关2,配置R2
Interface gi0/0/0
vrrp vrid 2 virtual-ip 192.168.1.253 //配置虚拟路由器2的IP
vrrp vrid 2 priority 200 //配置虚拟路由器2 的优先级为200
配置虚拟网关2,配置R1
interface gi0/0/0
vrrp vrid 2 virtual-ip 192.168.1.253 //配置虚拟路由器2的IP

多VLAN网关负载均衡

为VLAN10配置VRRP
SW1和SW2是VLAN10的真实网关
SW1在VLAN10中的优先级为200
SW2在VLAN10中的优先级为100
VLAN10的虚拟网关为192.168.10.254
在这里插入图片描述
配置虚拟路由器10,配置SW1
interface vlanif 10
vrrp vrid 10 virtual-ip 192.168.10.254 //配置虚拟路由器10的IP
vrrp vrid 10 priority 200 //配置虚拟路由器10的优先级为200
配置虚拟路由器10,配置SW2
interface vlanif 10
vrrp vrid 10 virtual-ip 192.168.10.254 //配置虚拟路由器10的IP

为VLAN20配置VRRP
SW1和SW2是VLAN20的真实网关
SW2在VLAN20中的优先级为200
SW1在VLAN20中的优先级为100
VLAN20的虚拟网关为192.168.20.254
在这里插入图片描述
配置虚拟路由器20,配置SW2
interface vlanif 20
vrrp vrid 20 virtual-ip 192.168.20.254 //配置虚拟路由器20的IP
vrrp vrid 20 priority 200 //配置虚拟路由器20的优先级为200
配置虚拟路由器20,配置SW1
interface vlanif 20
vrrp vrid 20 virtual-ip 192.168.20.254 //配置虚拟路由器20的IP

需求描述
VLAN6的主网关在SW1,优先级150,备份网关在SW2,优先级130
VLAN8的主网关在SW2,优先级150,备份网关在SW1,优先级130
VLAN6的虚拟IP为:192.168.6.254
VLAN8的虚拟IP为:192.168.8.254
在这里插入图片描述
在这里插入图片描述
①配置终端设备PC1
PC1的IP地址:192.168.6.1 255.255.255.0 192.168.6.254
PC2的IP地址:192.168.8.1 255.255.255.0 192.168.8.254
②配置SW3
system-view
[Huawei]sysname SW3
[SW3]vlan batch 6 8
[SW3]interface Ethernet0/0/1
[SW3-Ethernet0/0/1]port link-type access
[SW3-Ethernet0/0/1]port default vlan 6
[SW3-Ethernet0/0/1]quit
[SW3]interface Ethernet0/0/2
[SW3-Ethernet0/0/2]port link-type access
[SW3-Ethernet0/0/2]port default vlan 8
[SW3]interface Ethernet0/0/13
[SW3-Ethernet0/0/13]port link-type trunk
[SW3-Ethernet0/0/13]port trunk allow-pass vlan all
[SW3-Ethernet0/0/13]quit
[SW3]interface Ethernet0/0/22
[SW3-Ethernet0/0/22]port link-type trunk
[SW3-Ethernet0/0/22]port trunk allow-pass vlan all
[SW3-Ethernet0/0/22]quit
③配置SW1
system-view
[Huawei]sysname SW1
[SW1]vlan batch 6 8
[SW1]interface GigabitEthernet0/0/13
[SW1-GigabitEthernet0/0/13]port link-type trunk
[SW1-GigabitEthetnet0/0/13]port trunk allow-pass vlan all
[SW1-GigabitEthernet0/0/13]quit
④配置SW2
system-view
[Huawei]sysname SW2
[SW2]vlan batch 6 8
[SW2]interface GigabitEthernet0/0/22
[SW2-GigabitEthernet0/0/22]port link-type trunk
[SW2-GigabitEthernet0/0/22]port trunk allow-pass vlan all
[SW2-GigabitEthernet0/0/22]quit
⑤配置SW1上vlan6的VRRP(主网关)
[SW1]interface Vlanif 6
[SW1-Vlanif6]ip address 192.168.6.251 24
[SW1-Vlanif6]vrrp vrid 6 virtual-ip 192.168.6.254
[SW1-Vlanif6]vrrp vrid 6 priority 150
[SW1-Vlanif6]quit
⑥配置SW2上vlan6的VRRP(备份网关)
[SW2]interface Vlanif 6
[SW2-Vlanif6]ip address 192.168.6.252 24
[SW2-Vlanif6]vrrp vrid 6 virtual-ip 192.168.6.254
[SW2-Vlanif6]vrrp vrid 6 priority 130
[SW2-Vlanif6]quit
⑦配置SW2上vlan8的VRRP(主网关)
[SW2]interface Vlanif 8
[SW2-Vlanif8]ip address 192.168.6.252 24
[SW2-Vlanif8]vrrp vrid 8 virtual-ip 192.168.8.254
[SW2-Vlanif8]vrrp vrid 8 priority 150
[SW2-Vlanif8]quit
⑧配置SW1上vlan8的VRRP(备份网关)
[SW1]interface Vlanif 8
[SW1-Vlanif8]ip address 192.168.6.251 24
[SW1-Vlanif8]vrrp vrid 8 virtual-ip 192.168.8.254
[SW1-Vlanif8]vrrp vrid 8 priority 130
[SW1-Vlanif8]quit
⑨查看VRRP信息
[SW1]display vrrp brief
[SW2]display vrrp brief

BFD原理与配置

产生背景

目的
为了减小设备故障对业务的影响,提高网络的可靠性,网络设备需要能够尽快检测到与相邻设备间的通信故障,以便及时采取措施,保障业务继续进行。
在现有网络中,有些链路通常通过硬件检测信号,如SDH告警,检测链路故障,但并不是所有的介质都能够提供硬件检测。
此时应用就要依靠上层协议自身的Hello报文机制来进行故障检测。上层协议的检测时间都在1秒以上,这样的故障检测时间对某些应用来说是不能容忍的。同时,在一些小型三层网络中,如果没有部署路由协议,则无法使用路由协议的Hello报文机制来检测故障。
解决方案
BFD(Bidirectional Forwarding Detection)
双向转发检测机制,提供了一个通用的标准化的,与介质和协议无关的快速故障检测机制,用于快速检测、监控网络中链路或者IP路由的转发连接情况。
BFD的优点
对相邻设备之间的通道提供轻负荷、快速故障检测
用单一的机制对任何介质、任何协议层进行实时检测

BFD原理描述

原理简介
BFD在两台网络设备上建立会话,用来检测网络设备间的双向转发路径,为上层应用服务。
BFD本身并没有邻居发现机制,二是靠被服务的上层应用通知其邻居信息以建立会话。
会话建立后会周期性地快速发送BFD报文,如果在监测时间内没有收到BFD报文则认为该双向转发路径发生了故障,通知被服务的上层应用进行相应的处理。

BFD会话建立方式

静态建立BFG会话
通过命令行手工配置BFD会话参数,包括配置本地标识符和远端标识符等,然后手工下发BFD会话建立请求。
动态建立BFD会话
动态分配本地标识符:当应用程序触发动态创建BFD会话时,系统分配属于动态会话标识符区域的值作为BFD会话的本地标识符。
然后向对端发送Remote Discriminator的值为0的BFD控制报文,进行会话协商。

BFD检测机制

原理
BFD的检测机制是两个系统建立BFD会话,并沿它们之间的路径周期性发送BFD控制报文,如果一方在既定的时间内没有收到BFD控制报文,则认为路径上发生了故障。
配置命令
在这里插入图片描述
[RA]bfd //启用BFD
[RA]bfd AC bind peer-ip 10.2.1.2 //创建BFD会话,名字为AC
[RA-bfd-session-AC]discriminator local 1 //配置本地设备标识为1
[RA-bfd-session-AC]discriminator remote 3 //配置远程设备标识为3
[RA-bfd-session-AC]commit //提交BFD会话,才可以让配置生效
[RA-bfd-session-AC]quit

[RC]bfd //启用BFD
[RC]bfd CA bind peer-ip 10.1.1.1 //创建BFD会话,名字为CA
[RC-bfd-session-CA]discriminatior loacl 3 //配置本地设备标识为3
[RC-bfd-session-CA]discriminator remote 1 //配置远程设备标识为1
[RC-bfd-session-CA]commit //提交BFD会话
[RC-bfd-session-CA]quit

[SW2]display bfd session all //显示BFD会话信息

配置BFD多跳检测

需求描述
如图配置设备的IP地址
在R1和R3之间建立BFD会话,快速检测链路故障
查看R1和R3之间的BFD会话的状态信息
在这里插入图片描述
在这里插入图片描述
配置步骤
①配置R1
system-view
[Huawei]sysname R1
[R1]interface GigabitEthernet 0/0/0
[R1-GigabitEthernet0/0/0]ip address 192.168.12.1 24
[R1-GigabitEthernet0/0/0]quit
[R1]ip route-static 192.168.23.0 24 192.168.12.2
②配置R2
system-view
[Huawei]sysname R2
[R2]interface GigabitEthernet 0/0/1
[R2-GigabitEthernet0/0/1]ip address192.168.12.2 24
[R2-GigabitEthernet0/0/1]quit
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]ip address 192.168.23.2 24
[R2-GigabirEthernet0/0/0]quit
③配置R3
system-view
[Huawei]sysname R3
[R3]interface GigabitEthernet 0/0/1
[R3-GigabitEthernet0/0/1]ip address 192.168.23.3 24
[R3-GigabitEthernet0/0/1]quit
[R3]ip route-static 192.168.12.0 24 192.168.23.2
④配置BFD-R1
[R1]bfd
[R1-bfd]quit
[R1]bfd 13 bind peer 192.168.23.3
[R1-bfd-session-13]discriminator loacl 1
[R1-bfd-session-13]discriminator remote 3
[R1-bfd-session-13]commit
[R1-bfd-session-13]quir
⑤配置BFD-R3
[R3]bfd
[R3-bfd]quit
[R3]bfd 13 bind peer 192.168.12.1
[R3-bfd-session-13]discriminator local 3
[R3-bfd-session-13]discriminator remote 1
[R3-bfd-session-13]commit
[R3-bfd-session-13]quit
⑥验证BFD会话
[R1]display bfd session all
[R3]display bfd session all

BFD典型应用

应用场景
R1故障,R2切换为主网关
默认切换时间为3s
希望主/备网关实现快速切换
在这里插入图片描述
解决方案
在R1和R2之间,建立BFD会话
在R2上配置VRRP链路跟踪,跟踪对象为BFD会话
一旦BFD会话的状态为down,则增加R2的VRRP优先级,确保R2升级为主网关
配置命令
[R1]bfd //启用bfd
[R1]bfd 12 bind peer-ip 192.168.1.252 //创建bfd会话,名字为12
[R1-bfd-session-12]discriminator local 1 //配置本地设备标识为1
[R1-bfd-session-12]discriminator remote 2 //配置远程设备标识为2
[R1-bfd-session-12]commit //提交bfd会话
[R1-bfd-session-12]quit

[R2]bfd //启用bfd
[R2]bfd 21 bind peer-ip 192.168.1.251 //创建bfd会话,名字为21
[R2-bfd-session-21]discriminator local 2 //配置本地设备标识为2
[R2-bfd-session-21]discriminator remote 1 //配置远程设备标识为1
[R2-bfd-session-21]commit //提交bfd会话
[R2-bfd-session-21]quit

在R2上配置VRRP链路跟踪,跟踪bfd会话,增加优先级到210
[R2]interface GigabitEthernet 0/0/0
[R2-GigabitEthernet0/0/0]vrrp vrid 1 track bfd-session 2 increased 110
//如果本地的bfd ID为2的会话断开,那么Gi0/0/0端口发送的VRRP优先级增加110

配置VRRP主/备网关快速切换

需求描述
如图配置设备的IP地址
在SW1和SW2之间建立BFD会话,快速检测链路故障
主网关SW1故障后,实现备份网关的快速切换
在这里插入图片描述
在这里插入图片描述
配置步骤
①配置终端PC1/2的IP地址信息
②SW3配置VLAN/Trunk/Access
system-view //进入系统视图
[Huawei]sysname SW1 //修改设备名称为SW3
[SW1]vlan batch 6
[SW3]interface GigabitEthernet0/0/1 //SW3与PC1的互联接口
[SW3-GigabitEthernet0/0/1]port link-type access //配置链路类型为access
[SW3-GigabitEthernet0/0/1]port default vlan 6 //将接口加入到vlan6
[SW3-GigabitEthernet0/0/1]quit
[SW3]interface GigabitEthernet0/0/2 //SW3与PC2的互联接口
[SW3-GigabitEthernet0/0/2]port link-type access //配置链路类型为access
[SW3-GigabitEthernet0/0/2]port default vlan 6 //将接口加入到vlan6
[SW3-GigabitEthernet0/0/2]quit
[SW3]interface GigabitEthernet0/0/13 //SW3与SW1的互联接口
[SW3-GigabitEthernet0/0/13]port link-type trunk //配置链路类型为Trunk
[SW3-GigabitEthernet0/0/13]port trunk allow-pass vlan all //设置Trunk允许所有vlan
[SW3-GigabitEthernet0/0/13]quit
[SW3]interface GigabitEthernent0/0/23 //SW3与SW2的互联接口
[SW3-GigabitEthernet0/0/23]port link-type trunk //配置链路类型为Trunk
[SW3-GigabitEthernet0/0/23]port trunk allow-pass vlan all //设置Trunk允许所有vlan
[SW3-GigabitEthernet0/0/23]quit
③SW1配置VLAN/Trunk/Access
system-view //进入系统视图
[Huawei]sysname SW1 //修改设备名称为SW1
[SW1]vlan batch 6
[SW1]interface GigabitEthernet0/0/13 //SW1与SW3的互联接口
[SW1-GigabitEthernet0/0/13]port link-type trunk //配置链路类型为Trunk
[SW1-GigabitEthernet0/0/13]port trunk allow-pass vlan all //设置允许所有vlan
[SW1-GigabitEthernet0/0/13]quit
④SW2配置VLAN/Trunk/Access
system-view //进入系统视图
[Huawei]sysname SW2 //修改设备名称为SW2
[SW2]vlan batch 6
[SW2]interface GigabitEthernet0/0/23 //SW2与SW3的互联接口
[SW2-GigabitEthernet0/0/23]port link-type trunk //配置链路类型为Trunk
[SW2-GigabitEthernet0/0/23]port trunk allow-pass vlan all //设置允许所有vlan
[SW2-GigabitEthernet0/0/23]quit
⑤配置SW1上vlan6的VRRP(主网关)
[SW1]interface Vlanif 6 //进入vlanif6的网关接口
[SW1-Vlanif6]ip address 192.168.6.251 24 //配置vlanif6的真实网关IP地址
[SW1-Vlanif6]vrrp vrid 6 virtual-ip 192.168.6.254 //配置vlanif6的虚拟网关IP地址
[SW1-Vlanif6]vrrp vrid 6 priority 150 //配置vlanif6的vrrp优先级
[SW1-Vlanif6]quit
⑥配置SW2上vlan6的VRRP(备份网关)
[SW2]interface Vlanif 6 //进入vlanif6的网关接口
[SW2-Vlanif6]ip address 192.168.6.252 24 //配置vlanif6的真实网关IP地址
[SW2-Vlanif6]vrrp vrid 6 virtual-ip 192.168.6.254 //配置vlanif6的虚拟网关IP地址
[SW2-Vlanif6]vrrp vrid 6 priority 130 //配置vlanif6的vrrp优先级
[SW2-Vlanif6]quit
⑦在SW1/2上创建BFD会话
[SW2]bfd
[SW2-bfd]quit
[SW2]bfd
[SW2]bfd 21 bind peer-ip 192.168.6.251
[SW2-bfd-session-21]discriminator local 2
[SW2-bfd-session-21]discriminator remote 1
[SW2-bfd-session-21]commit
[SW2-bfd-session-21]quit

[SW1]bfd
[SW1-bfd]quit
[SW1]bfd
[SW1]bfd 12 bind peer-ip 192.168.6.252
[SW1-bfd-session-12]discriminator local 1
[SW1-bfd-session-12]discriminator remote 1
[SW1-bfd-session-12]commit
[SW1-bfd-session-12]quit
⑧在备份网关SW2上,通过VRRP跟踪BFD会话,快速发现主网关故障
[SW2]interface Vlanif 6
[SW2-Vlanif6]vrrp vrid 1 track bfd-session 2 increased 50
[SW2-Vlanif6]quit
[SW2]

DHCP工作原理

DHCP的使用背景

企业网络中,大量的主机或设备需要获取IP地址等网络参数
如果采用手工配置,工作量大、容易出错且不好管理
如果用户擅自更改。还有可能造成IP地址冲突等问题
使用动态主机配置协议DHCP,来分配IP地址等网络参数,可以减少管理员的工作量,避免出错

DHCP的定义

动态主机配置协议
Dynamic Host Configuration Protocol

DHCP的作用

用于实现企业用户IP地址的动态分配和集中管理
避免繁琐的手工配置,快速适应网络的变化

DHCP的角色

DHCP客户端:通过DHCP协议请求获取IP地址等网络参数
DHCP服务器:负责为DHCP客户端分配网络参数
DHCP中继:
负责转发DHCP服务器和DHCP客户端之间的DHCP报文,协助DHCP服务器向DHCP客户端动态分配网络参数的设备
当客户端和服务器不在一个网段的时候,才会用到DHCP中继设备

DHCP工作原理

1.发现阶段:客户端广播发送DHCP Discover报文
2.提供阶段:服务器回应DHCP Offer报文
3.选择阶段:客户端广播发送DHCP Request报文
4.确认阶段:服务器回应DHCP ACK报文

全局模式DHCP

DHCP服务规划

服务器规划
合理规划VLAN,确保同一VLAN内仅有一台DHCP Server,能收到此VLAN内客户端的DHCP请求
IP地址规划
可供被DHCP Server自动分配的IP地址范围
不能参与自动分配的IP地址,需要提前排除掉

创建基于全局的DHCP

开启设备的DHCP功能,确保设备为DHCP服务器
在DHCP服务器创建地址池,规划网段/网关/DNS和租约
在接收DHCP报文的接口上,指定DHCP的选择模式

在路由器上建立地址池,配置网段/网关/DNS和租约
[Huawei]sysname dhcp
[dhcp]dhcp enable

[dhcp]ip pool p1 //建立地址池并命名
[dhcp-ip-pool-p1]network 192.168.1.0 mask 255.255.255.0
[dhcp-ip-pool-p1]gateway-list 192.168.1.254
[dhcp-ip-pool-p1]dns-list 8.8.8.8
[dhcp-ip-pool-p1]lease day 3 //设置DHCP租约为3天(默认为1天)

为路由器接口G0/0/0配置地址,并在接口上启用DHCP
[dhcp]interface GigabitEthernet0/0/0
[dhcp-GigabitEthernet0/0/0]ip address 192.168.1.254 24
[dhcp-GigabitEthernet0/0/0]dhcp select global //接口下启用DHCP功能
在这里插入图片描述
在这里插入图片描述

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

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

相关文章

Hook技术(钩子技术)

HOOK(钩子技术) 这里的hook我理解的意思就是通过拦截指令,将指令换成自己想要的指令,从而做道绕过原本的程序指令,要修改这个指令,要用汇编技术,从二进制入手。 扩展: 木马病毒之…

git clone慢的解决办法

在网站 https://www.ipaddress.com/ 分别搜索: github.global.ssl.fastly.net github.com 得到ip: 打开hosts文件 sudo vim /etc/hosts 在hosts文件末尾添加 140.82.114.3 github.com 151.101.1.194 github.global-ssl.fastly.net 151.101.65.194 g…

外部网关协议_边界网关协议BGP

一.边界网关协议BGP的基本概念 边界网关协议(Border Gateway Protocol,BGP)属于外部网关协议EGP这个类别,用于自治系统AS之间的路由选择协议。由于在不同AS内度量路由的“代价”(距离、带宽、费用等)可能不同,因此对于…

elasticsearch 7安装

问题提前报 max virtual memory areas error max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] 如果您的环境是Linux,注意要做以下操作,否则es可能会启动失败 1 用编辑工具打开文件/etc/sysctl.conf 2 …

qml渲染引擎介绍

qml项目启动入口 Qt Quick项目qml脚本在C++代码里启动,main.cpp如下: #include <QGuiApplication> #include <QQmlApplicationEngine>int main(int argc, char *argv[]) {

VUE excel表格导出

js代码 //下载模板 downloadExl() { // 标题 const tHeader [‘xxx’,xxx,xx名称,电枪xx,协议xx,snxx]; // key const filterVal [agentName, stationName, equName, channelNumber, manufacturer, sn, ]; // 值 const datas [ { agentName: 你好, stationName: 我们, e…

激光雷达与惯导标定 | Lidar_IMU_Init : 编译

激光雷达与惯导标定&#xff1a;Lidar_IMU_Init 编译 功能包安装安装ceres-solver-2.0.0 &#xff08;注意安装2.2.0不行&#xff0c;必须要安装2.0.0&#xff09; LI-Init是一种鲁棒、实时的激光雷达惯性系统初始化方法。该方法可校准激光雷达与IMU之间的时间偏移量和外部参数…

unity shaderGraph实例-可交互瀑布

不要问我水在哪里&#xff0c;你自己相像这是一个瀑布&#xff0c;瀑布的效果我还不会做 效果展示 整体结构 这里片元着色器最后输出的baseColor应该是黑色&#xff0c;白色为错误。 各区域内容 区域1 计算球到瀑布的距离&#xff0c;然后减去一个值&#xff0c;实现黑色区域…

UNETR:用于三维医学图像分割的Transformer

论文链接&#xff1a;https://arxiv.org/abs/2103.10504 代码链接&#xff1a; https://monai.io/research/unetr 机构&#xff1a;Vanderbilt University, NVIDIA 最近琢磨不出来怎么把3d体数据和文本在cnn中融合&#xff0c;因为确实存在在2d里面用的transformer用在3d里面…

wpf使用CefSharp.OffScreen模拟网页登录,并获取身份cookie,C#后台执行js

目录 框架信息&#xff1a;MainWindow.xamlMainWindow.xaml.cs爬取逻辑模拟登录拦截请求Cookie获取 CookieVisitorHandle 框架信息&#xff1a; CefSharp.OffScreen.NETCore 119.1.20 MainWindow.xaml <Window x:Class"Wpf_CHZC_Img_Identy_ApiDataGet.MainWindow&qu…

API自动化测试:如何构建高效的测试流程

一、引言 在当前的软件开发环境中&#xff0c;API&#xff08;Application Programming Interface&#xff09;扮演了极为重要的角色&#xff0c;连接着应用的各个部分。对API进行自动化测试能够提高测试效率&#xff0c;降低错误&#xff0c;确保软件产品的质量。本文将通过实…

SpringMVC(三)

十、拦截器 1、拦截器的配置 SpringMVC中的拦截器用于拦截控制器方法的执行 SpringMVC中的拦截器需要实现HandlerInterceptor SpringMVC的拦截器必须在SpringMVC的配置文件中进行配置&#xff1a; <bean class"com.atguigu.interceptor.FirstInterceptor">…

constexpt

constexpt constexpt是C11引入的新的关键字&#xff0c;它用于在编译时而非运行时计算函数或变量的值。这个特性对于提高程序效率和优化代非常有用。 编译时常量和运行时常量 编译时常量&#xff08;Compile-time Constants&#xff09;和运行时常量&#xff08;Runtime Con…

8年经验之谈 —— 如何使用自动化工具编写测试用例?

以下为作者观点&#xff0c;仅供参考&#xff1a; 在快速变化的软件开发领域&#xff0c;保证应用程序的可靠性和质量至关重要。随着应用程序复杂性和规模的不断增加&#xff0c;仅手动测试无法满足行业需求。 这就是测试自动化发挥作用的地方&#xff0c;它使软件测试人员能…

leetcode做题笔记1410. HTML 实体解析器

「HTML 实体解析器」 是一种特殊的解析器&#xff0c;它将 HTML 代码作为输入&#xff0c;并用字符本身替换掉所有这些特殊的字符实体。 HTML 里这些特殊字符和它们对应的字符实体包括&#xff1a; 双引号&#xff1a;字符实体为 &quot; &#xff0c;对应的字符是 "…

python appium 官网下载

找了半天吐了 https://github.com/appium/appium-desktop/releases/tag/v1.22.3-4

Hibernate批量处理数据

概念&#xff1a; 批量处理数据是指在一个事务场景中处理大量数据。 在应用程序中难以避免进行批量操作&#xff0c;Hibernate提供了以下方式进行批量处理数据&#xff1a; (1)使用HQL进行批量操作 数据库层面 executeUpdate() (2)使用JDBC API进行批量操作 数据库层面 …

Vue学习笔记-Object.defineproperty函数

文章目录 前文提要Object.defineProperty作用Object.defineProperty参数使用例图getter&#xff0c;也就是get函数setter&#xff0c;也就是set函数 前文提要 本人仅做个人学习记录&#xff0c;如有错误&#xff0c;请多包涵 Object.defineProperty作用 当在js中声明了一个变…

王道p150 20.将给定的表达式树转化为等价的中缀表达式(通过括号反应操作符的计算次序)

本题代码如下 void btreetoexp(tree t, char deep) {if (t NULL)return;else if (t->lchild NULL && t->rchild NULL)printf("%c", t->data);//输出操作数&#xff0c;不加括号else {if (deep > 1)printf("(");btreetoexp(t->l…

Rust语言入门教程(二) - 变量与作用域

变量与作用域 变量的声明与初始化 Rust的基本语法格式如下&#xff1a; fn main(){let bunnies 2; }语句以分号结尾&#xff0c;用花括号包含语句块。 Rust的语法其实借鉴了很多其他的语言&#xff0c;比如C语言和Python&#xff0c; 所以变量定义的格式看起来也跟很多我们…