培训第二十七天(lvs_nat模式与lvs_dr模式配置)
上午
核心:内核中的ipvs,ipvsadm1、安装ipvsadm[root@nat ~]# yum -y install ipvsadm2、配置规则查看所有的规则,如果已经配置好规则,重启之后也就没有了[root@nat ~]# ipvsadm -L -n
1、配置vip网卡
(1)在编辑虚拟网络中创建桥接模式的网卡,并且桥接到有网的适配器上。
查看自己本机WLAN所属网卡
在VM创建桥接模式网卡,将外部连接设置为WLAN所属网卡
2、添加新的网卡,自定义为刚才创建的桥接模式网卡。
在本虚拟机中重新添加一块网络适配器,并设置网络连接为刚设置的桥接模式的网卡
3、此时在虚拟主机中使用ifconfig无法找到新的网卡,ip a能够查看到新的ens36网卡。
查看所有网络[root@nat ~]# ip a1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:f5:ea:0a brd ff:ff:ff:ff:ff:ffinet 10.0.0.10/24 brd 10.0.0.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::3598:4e0:b43d:ccc8/64 scope link noprefixroute valid_lft forever preferred_lft forever3: ens36: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether 00:0c:29:f5:ea:14 brd ff:ff:ff:ff:ff:ffinet 192.168.11.83/23 brd 192.168.11.255 scope global noprefixroute dynamic ens36valid_lft 7147sec preferred_lft 7147secinet6 fe80::8de7:6bd9:74a1:8f60/64 scope link noprefixroute valid_lft forever preferred_lft forever4、编辑网卡配置[root@nat ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36[root@nat ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens36TYPE=EthernetBOOTPROTO=noneIPADDR=192.168.10.101NAME=ens36UUID=d4cfa5ab-7c2a-4fab-b329-396b9b38b1bfDEVICE=ens36ONBOOT=yes5、重启网络服务[root@nat ~]# systemctl restart network6、本机cmd测试192.168.10.101ip是否可以正常使用
2、添加规则
配置ipvs规则[root@nat ~]# ipvsadm -A -t 192.168.10.101:80 -s rr # -A 选项表示添加一个新的服务。# -t 192.168.10.101:80 指明了要处理的服务是目标地址为 192.168.10.101 ,端口为 80 的 TCP 服务。# -s rr 表示使用轮询(Round Robin)的调度算法。[root@nat ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.10.101:80 rr添加rs web01 web02 添加规则[root@nat ~]# ipvsadm -a -t 192.168.10.101:80 -r 10.0.0.11:80 -m# -a 选项用于添加一个真实服务器(Real Server)到指定的服务中。# -t 192.168.10.101:80 表示要添加真实服务器的服务是目标地址为 192.168.10.101 ,端口为 80 的 TCP 服务。# -r 10.0.0.11:80 指明了要添加的真实服务器的地址为 10.0.0.11 ,端口为 80 。# -m 表示使用 NAT(Network Address Translation,网络地址转换)模式。[root@nat ~]# ipvsadm -a -t 192.168.10.101:80 -r 10.0.0.12:80 -m[root@nat ~]# ipvsadm -Ln # -L 选项表示列出(List)规则。# -n 选项表示以数字形式显示地址和端口,而不进行 DNS 解析,这样可以提高显示速度和准确性。IP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 192.168.10.101:80 rr-> 10.0.0.11:80 Masq 1 0 0 -> 10.0.0.12:80 Masq 1 0 0 # “TCP 192.168.10.101:80 rr” 表示这是一个 TCP 协议的服务,地址为 192.168.10.101,端口为 80,使用的调度算法是轮询(rr)# “-> 10.0.0.11:80 Masq 1 0 0” 表示后端的一个真实服务器地址为 10.0.0.11,端口为 80,采用网络地址转换(Masq)模式,权重为 1,当前活跃连接数为 0,非活跃连接数为 0。# “-> 10.0.0.12:80 Masq 1 0 0” 则是另一个后端真实服务器的配置信息,地址为 10.0.0.12,端口为 80,同样是网络地址转换模式,权重为 1,活跃和非活跃连接数均为 0。此时访问vip还无法访问到web01和web02
3、ip转发
[root@nat ~]# vim /etc/sysctl.conf net.ipv4.ip_forward=1# net.ipv4.ip_forward=1 这个配置的作用是启用系统的 IP 转发功能。# 当设置为 1 时,表示允许系统在不同的网络接口之间转发 IP 数据包。[root@nat ~]# sysctl -pnet.ipv4.ip_forward = 1# 使在 /etc/sysctl.conf 中所做的更改立即生效,而无需重新启动系统。此时访问vip还无法访问到web01和web02
4、修改网关
临时修改web01和web02的网关,网关必须指向dip(调度服务器的对内的ip)
要求rs的ip和dip要在同一个网段,因为dip是作为rs网关存在的[root@web01 ~]# ip route del default # 删除系统中的默认路由[root@web01 ~]# ip route add 10.0.0.0/24 via 10.0.0.10# 添加一条新的路由规则# 对于目标网络为 10.0.0.0/24 的数据包,将通过网关 10.0.0.10 进行转发[root@web02 ~]# ip route del default[root@web02 ~]# ip route add 10.0.0.0/24 via 10.0.0.10此时访问vip可以访问到web01和web02
lvs-nat模式的优点是配置简单,缺点是请求和响应都必须经过ds,容易性能瓶颈
现在,希望请求时使用input链进行负载均衡,响应时不经过ds,直接由rs响应给客户端
在nat模式时,请求vip,接收vip响应。
构想 :请求vip,接收rip响应,这是不允许 使用lvs-dr模式
5、NAT模式脚本
# ds脚本#!/bin/bash#配置网卡echo TYPE=Ethernet >> /etc/sysconfig/network-scripts/ifcfg-ens36 echo BOOTPROTO=none >> /etc/sysconfig/network-scripts/ifcfg-ens36 echo IPADDR=192.168.10.101 >> /etc/sysconfig/network-scripts/ifcfg-ens36read -p "router name:" router_nameecho NAME='"$router_name"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 uuid=$( uuidgen )echo UUID='"$uuidgen"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 echo DEVICE='"$router_name"' >> /etc/sysconfig/network-scripts/ifcfg-ens36 echo ONBOOT=yes >> /etc/sysconfig/network-scripts/ifcfg-ens36 #重启网络服务systemctl restart network#安装ipvsadmyum list installed|grep ipvsadmif [ $? —ne 0 ];thenyum -y install ipvsadmfi#配置规则read -p "vip:" vipread -p "port:" portread -p "rule:" ruleread -p "rip1:" rip1read -p "rip2:" rip2ipvsadm -A -t $vip:$port -s $ruleipvsadm -a -t $vip:$port -r $rip1:$port -mipvsadm -a -t $vip:$port -r $rip2:$port -m#ip转发echo "net.ipv4.ip_forward=1" > /etc/sysctl.confsysctl -p
#rs 脚本#!/bin/bash# 设置网关read -p "dip:" dipip route del defaultip route add default via $dip
6、DR模式
(1)性能更优,回路不再经过ds
(2)ds和rs为了保证用户响应,都要求配置统一的vip
(3)由于rs是直接响应client,网关一定不能设置为ds的dip
(4)对rs的vip进行抑制,让ds的vip接收请求,rs的vip不接受请求
7、设置dr主机
1、在ds的ens33上挂一个vip10.0.0.101[root@dr ~]# ifconfig ens33:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.255.255 up# ifconfig 是用于配置网络接口的命令。# ens33:0 是创建的虚拟接口名称。# 10.0.0.101 是为该虚拟接口分配的 IP 地址。# broadcast 10.0.0.101 指明了广播地址为 10.0.0.101 。# netmask 255.255.255.255 表示子网掩码为 255.255.255.255 ,这实际上是一个单点广播地址,通常用于特定的网络配置场景。# up 表示启用该网络接口。[root@dr ~]# route add -host 10.0.0.101 dev ens33:0# 将目标主机地址为 10.0.0.101 的数据包通过网络接口 ens33:0 进行发送# 10.0.0.101 dip# 10.0.0.13 vip 在rs上的vip和这个vip相同2、设置规范# 安装ipvsadm[root@dr ~]# yum -y install ipvsadm.x86_64 # 设置规则ipvsadm -A -t 10.0.0.101:80 -s rripvsadm -a -t 10.0.0.101:80 -r 10.0.0.11 -g# -a 选项表示添加(Add)一个真实服务器到已存在的服务中。# -t 10.0.0.101:80 指明了要添加真实服务器的服务是目标地址为 10.0.0.101 ,端口为 80 的 TCP 服务。# -r 10.0.0.11 表示要添加的真实服务器地址为 10.0.0.11 。# -g 表示使用直接路由(Direct Routing)模式。ipvsadm -a -t 10.0.0.101:80 -r 10.0.0.12 -g[root@dr ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 10.0.0.101:80 rr-> 10.0.0.11:80 Route 1 0 0 -> 10.0.0.12:80 Route 1 0 0 # rs不再需要指定端口,dr不支持端口映射,vip上是80端口,最终就是80端口# -m nat -g gateway
下午
1、设置rs主机
(1)在lo接口上绑定vip
[root@web01 ~]# ifconfig lo:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.255.255 up# ifconfig 是用于配置网络接口的命令。# lo:0 是创建的虚拟接口名称。# 10.0.0.101 是为该虚拟接口分配的 IP 地址。# broadcast 10.0.0.101 指明了广播地址为 10.0.0.101 。# netmask 255.255.255.255 表示子网掩码为 255.255.255.255 ,这实际上是一个单点广播地址,通常用于特定的网络配置场景。# up 表示启用该网络接口。
(2)设置主机路由
[root@web01 ~]# route add -host 10.0.0.101 dev lo:0[root@web01 ~]# ifconfig
(3)抑制rs的vip接受请求
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore :将本地回环接口(lo)的 arp_ignore 参数设置为 1。当收到 ARP 请求时,如果目标 IP 不是本地接口的地址,则不回应。# echo 2 > /proc/ssys/net/ipv4/conf/lo/arp_announce :将本地回环接口的 arp_announce 参数设置为 2。在发送 ARP 报文时,尽可能使用能被其他主机路由到达的本地接口的 IP 地址。# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore :将所有网络接口的 arp_ignore 参数设置为 1。# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce :将所有网络接口的 arp_announce 参数设置为 2。# 限制某些情况下的 ARP 响应# 1.不理睬非本机ip请求,2优先其他主机路由也就是如果其他主机路由可以到达本地,让他们走远路过来本地
(4)生成脚本,对web02使用
[root@web01 ~]# vim arp.sh ifconfig lo:0 10.0.0.101 broadcast 10.0.0.101 netmask 255.255.225.255 uproute add -host 10.0.0.101 dev lo:0echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce
2、测试
访问vip地址
[root@dr ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port Forward Weight ActiveConn InActConnTCP 10.0.0.101:80 rr-> 10.0.0.11:80 Route 1 1 0 -> 10.0.0.12:80 Route 1 2 0 [root@dr ~]# ipvsadm -Ln --statsIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes-> RemoteAddress:PortTCP 10.0.0.101:80 3 14 0 2661 0-> 10.0.0.11:80 1 10 0 2477 0-> 10.0.0.12:80 2 4 0 184 0
3、dr模式脚本
(1)dr脚本
#!/bin/bash# 在ens33上挂载一个ip地址read -p "vip:" vipread -p "mac:" macread -p "num:" numifconfig $mac:$num $vip broadcast $vip netmask 255.255.255.255# 主机路由route add -host $vip dev $mac:$num# 安装ipvsadmyum list installed|grep ipvsadmmif [ $? —ne 0 ];thenyum -y install ipvsadmfi# 配置规则(不需要设置ip_forword)ipvsadm -Cread -p "rule:" ruleread -p "port:" portipvsadm -A -t $vip:$port -s $ruleread -p "rip1:" rip1ipvsadm -a -t $vip:$port -r $rip1 -gread -p "rip2:" rip2ipvsadm -a -t $vip:$port -r $rip2 -g
(2)rs脚本
#!/bin/bash# 在ens33上挂载一个ip地址read -p "vip:" vipread -p "mac:" macread -p "num:" numifconfig $mac:$num $vip broadcast $vip netmask 255.255.255.255# 主机路由route add -host $vip dev $mac:$num# 抑制echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/lo/arp_announceecho 1 > /proc/sys/net/ipv4/conf/all/arp_ignoreecho 2 > /proc/sys/net/ipv4/conf/all/arp_announce
练习:对mysql的3306服务进行负载均衡
1、配置mysql主机 x.x.x.21,命名为master_mysql.xxx.xxx,激活并且添加数据库test
2、在test中添加表student id int 主键,自增,name 字符串类型 非空,grade 字符串 非空,domi varchar 非空
3、添加三行数据
编号 | 姓名 | 班级 | 宿舍 |
---|---|---|---|
1001 | 孙颖莎 | 云计算1班 | 1002 |
1002 | 大头 | 云计算2班 | 1003 |
1003 | 小胖 | 云计算2班 | 1004 |
3、配置mysql从服务,备份mysqlx.x.x.22的mysql服务,使用gtids同步事务
4、lvs对两台mysql主机进行rr负载均衡
5、使用python写一个脚本通过lvs ds主机读取mysql中的数据
6、自动化程度越高越好
相关文章:

培训第二十七天(lvs_nat模式与lvs_dr模式配置)
上午 核心:内核中的ipvs,ipvsadm1、安装ipvsadm[rootnat ~]# yum -y install ipvsadm2、配置规则查看所有的规则,如果已经配置好规则,重启之后也就没有了[rootnat ~]# ipvsadm -L -n 1、配置vip网卡 (1)在…...
JAVA中DateFormat详解
在Java中,DateFormat 是一个抽象类,它用于格式化和解析日期。DateFormat 允许进行日期-文本之间的转换,以及日期-时间之间的解析和格式化。Java 提供了多个 DateFormat 的具体子类,其中最常用的是 SimpleDateFormat,它…...

uniapp——列表选择样式
案例 代码 <view class"list"><block v-for"(item,index) in 8" :key"index"><view class"item" click"choosePackage(item)" :class"{active:item current}"><view class"i_money&q…...

解决客户访问超时1s问题
访问公网地址返回状态码499-CSDN博客 需求描述 客户访问公司公网服务,期望在1s内完成。他们在客户端设置了超时1s的配置,如果超过1s公司服务就会报错499,这是正常的请求返回。 这里是业务简易的连路图: 分析问题 目前这个服务通过公网的alb负载均衡到ecs,通过ecs再转发…...

Linux命令(基础面试可用,都是自己觉得平时使用多的)
1.cat 参数:-n:显示行号-s:压缩连续的空行,只显示一个空行2.chattr 改变文件属性 语法:chattr [-RV] [/-/<属性>][文件或目录] 属性:a:让文件或目录仅供附加用途i:不得任意更…...
opencv-python图像增强一:传统图像去噪方法整理
一、简介: 在数字图像处理领域,噪声一直是影响图像质量的重要因素。无论是拍摄过程中的环境干扰,还是传输过程中的信号失真,噪声都可能导致图像模糊、细节丢失,甚至影响后续的图像分析和应用。为了提高图像的视觉效果…...

Canal单机部署
目录 一、前期准备 1、配置binlog日志 2、配置MQ服务 二、搭建canal 1、下载安装包 2、部署canal-admin的UI管理界面 2-1、创建&解压admin 2-2、配置UI管理界面 2-3、初始化元数据库 2-4、启动Canal Admin 3、部署canal-server服务 3-1、创建&解压deployer…...
java,每日练习02
题目 选自牛客网 1.下列关于Java中类的构造方法的描述,正确的是() A.构造方法的返回类型为void B.可以定义一个类而在代码中不写构造方法。 C.在同一个类中定义的重载构造方法不可以相互调用。 D.子类不允许调用父类的构造方法。 正确答案…...
C# TreeView
添加 TreeView 控件:定义节点:添加节点:设置节点属性:处理节点事件:自定义节点绘制:数据绑定:节点选择:节点展开和折叠:搜索和过滤:示例代码总结 C# 中的 Tre…...

通过xshell使用密钥连接阿里云服务器
目录 步骤1:创建密钥对 步骤2:连接服务器 步骤3:连接服务器 连接阿里云服务器有几种方式,例如有密码进行连接,但是密码连接安全风险较大,所以我们选择密钥方式进行连接。操作简单且安全性高 步骤1&…...

<数据集>路面坑洼识别数据集<目标检测>
数据集格式:VOCYOLO格式 图片数量:681张 标注数量(xml文件个数):681 标注数量(txt文件个数):681 标注类别数:1 标注类别名称:[pothole] 使用标注工具:labelImg 标注规则:对类…...
几个常用脚本
系统初始化 #!/bin/bash # 定义颜色常量 RED\033[0;31m GREEN\033[0;32m NC\033[0m # No Color #功能菜单 menu() {clearecho "请选择要执行的操作:"echo "1. 检查网络"echo "2. 关闭防火墙和SELinux"echo "3. 替换YUM源"echo "…...
gtest中TEST和TEST_F和TEST_P的区别是什么
gtest(Google Test)是Google开发的一个开源的C测试框架,它提供了多种宏来支持不同类型的测试。其中,TEST、TEST_F和TEST_P是三个常用的宏,它们各自有不同的用途和特性。以下是它们之间的主要区别: TEST 用…...

VS2022如何调出输出窗口,并在输出窗口打印日志
在输出窗口打印 System.Diagnostics.Debug.WriteLine("这是一行自定义的输出。Debug.WriteLine");System.Diagnostics.Debug.Write("这是第二行自定义的输出,Debug.Write");System.Diagnostics.Debug.WriteLine("换行");System.Diagn…...

【全国大学生电子设计竞赛】2021年I题
🥰🥰全国大学生电子设计大赛学习资料专栏已开启,限时免费,速速收藏~...

【项目】基于Vue2+Router+Vant 前端面经项目
环境配置 Vue脚手架的创建 在终端中打开输入 vue create 项目包名 -m npm注意⚠️:项目名称不再允许包含大写字母。 选择第三项 3.选择要安装的模块 从上到下的功能模块: Babel - ES:降级处理Router-Vue:路由插件CSS预处理器E…...

【论文阅读】YOLOv10: Real-Time End-to-End Object Detection
题目:YOLOv10: Real-Time End-to-End Object Detection 作者:Ao Wang Hui Chen∗ Lihao Liu Kai Chen Zijia Lin Jungong Han Guiguang Ding∗ 清华大学的 motivation: 作者觉得YOLO系列的NMS和某些结构非常的耗时,提出NMS-free和一些列高效…...
计算资源消耗
计算资源消耗 计算资源的消耗分成: 模型参数本身的存储。模型参数的梯度以及梯度momentum的存储。token的传播过程 例如以llama3-7b为例: 模型参数存储: 模型参数量 * fp32 例如llama3-70b为例,7 * 10^9 * 4 模型参数的梯度以…...
企业微信推送消息的Java实现教程
在这篇教程中,我们将介绍如何使用Java实现企业微信的消息推送功能,特别是在完成任务后,将结果信息通过企业微信推送给指定的用户。我们将基于您提供的代码进行说明。 1. 环境准备 1.1 依赖库 在开始编写代码之前,确保您的项目中…...

强化学习之Actor-Critic算法(基于值函数和策略的结合)——以CartPole环境为例
0.简介 DQN算法作为基于值函数的方法代表,基于值函数的方法只学习一个价值函数。REINFORCE算法作为基于策略的方法代表,基于策略的方法只学习一个策略函数。Actor-Critic算法则结合了两种学习方法,其本质是基于策略的方法,因为其目…...
Java 语言特性(面试系列2)
一、SQL 基础 1. 复杂查询 (1)连接查询(JOIN) 内连接(INNER JOIN):返回两表匹配的记录。 SELECT e.name, d.dept_name FROM employees e INNER JOIN departments d ON e.dept_id d.dept_id; 左…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...
Robots.txt 文件
什么是robots.txt? robots.txt 是一个位于网站根目录下的文本文件(如:https://example.com/robots.txt),它用于指导网络爬虫(如搜索引擎的蜘蛛程序)如何抓取该网站的内容。这个文件遵循 Robots…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
鸿蒙(HarmonyOS5)实现跳一跳小游戏
下面我将介绍如何使用鸿蒙的ArkUI框架,实现一个简单的跳一跳小游戏。 1. 项目结构 src/main/ets/ ├── MainAbility │ ├── pages │ │ ├── Index.ets // 主页面 │ │ └── GamePage.ets // 游戏页面 │ └── model │ …...

五、jmeter脚本参数化
目录 1、脚本参数化 1.1 用户定义的变量 1.1.1 添加及引用方式 1.1.2 测试得出用户定义变量的特点 1.2 用户参数 1.2.1 概念 1.2.2 位置不同效果不同 1.2.3、用户参数的勾选框 - 每次迭代更新一次 总结用户定义的变量、用户参数 1.3 csv数据文件参数化 1、脚本参数化 …...
【Redis】Redis从入门到实战:全面指南
Redis从入门到实战:全面指南 一、Redis简介 Redis(Remote Dictionary Server)是一个开源的、基于内存的键值存储系统,它可以用作数据库、缓存和消息代理。由Salvatore Sanfilippo于2009年开发,因其高性能、丰富的数据结构和广泛的语言支持而广受欢迎。 Redis核心特点:…...