LVS(linux virual server)LVS四种工作模式深度解析

LVS-NAT模式

四台虚拟机
火墙关闭
关闭火墙 systemctl stop firewalldsystemctl disable firewalld关闭开机自启火墙
1.clientimage-20250714200302872eth0= IP:172.25.254.100
2.lvsimage-20250714200324604 image-20250714200340203eth0=ip :172.25.254.200; eth1=ip:192.168.0.200
rs1image-20250714200355748 eth0=ip:192.168.0.10
re2image-20250714200414373 eth0=ip:192.168.0.20
网络配好在rs1和rs2安装httpd功能所用命令dnf/yum install httpd -y

事例

image-20250714200916442屏幕截图 2025-07-14 200914

然后在rs1操作:
[root@RS1 ~]# systemctl disable --now firewalld   #禁用并停止 firewalld 服务[root@RS1 ~]# echo RS1 - 192.168.0.10 > /var/www/html/index.html #创建并写入内容到 index.html 文件:[root@RS1 ~]# systemctl enable --now http d     #启用并启动 Apache HTTP 服务
#rs2相同操作

事例image-20250714202038383

查看RS1和RS2网关
[root@RS1 ~]# cd /etc/NetworkManager/system-connections/ #切换目录
[root@RS1 system-connections]# ls
eth0.nmconnection
#查看网卡
[root@RS1 system-connections]# vim eth0.nmconnection  #修改网卡

屏幕截图 2025-07-15 102103

[root@RS1 system-connections]# nmcli connection reload #重启端口 
[root@RS1 system-connections]# nmcli connection up eth0 #激活网口

=

lvs虚拟机操作
[root@lvs ~]# sysctl  -a | grep ip_forward
net.ipv4.ip_forward = 0 #net.ipv4.ip_forward = 0:这意味着当前 IPv4 数据包转发功能被禁用了(值为0表示禁用,1表示启用)
net.ipv4.ip_forward_update_priority = 1
net.ipv4.ip_forward_use_pmtu = 0
[root@lvs ~]# echo net.ipv4.ip_forward=1 > /etc/sysctl.conf #这条命令将 net.ipv4.ip_forward=1 写入到了 /etc/sysctl.conf 配置文件中,使得系统在启动时启用 IPv4 转发。
[root@lvs ~]# sysctl -p #使用 sysctl -p 使配置立即生效。
net.ipv4.ip_forward = 1
用这个命令查一下需要安装的lvs安装包:dnf search lvsimage-20250714203208570

用命令安装[root@lvs ~]# dnf/yum install ipvsadm -yimage-20250714203256637

用命令watch -n1 ipvsadm -Ln 查看策略调度机制image-20250714203832469
输入命令[root@lvs ~]# ipvsadm -A -t

172.25.254.200:80 -s rr #这条命令使用 ipvsadm 工具配置一个虚拟服务 172.25.254.200:80,并使用 轮询(Round Robin) 调度算法(-S rr)来分发流量到后端服务器image-20250714204317689

[root@lvs ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr #-E表示更改为wrr机制
TCP 172.25.254.200:80 wrr

[root@lvs ~]# ipvsadm -E -t 172.25.254.200:80 -s wrr -p 360 #-p设置持久连接超时规定时间内同一来源请求调度到同一realserver-----这里时间设为360

TCP 172.25.254.200:80 wrr persistent 360

[root@lvs ~]# ipvsadm -A -f 66 -s rr #设置火墙TCP  172.25.254.200:80 wrr persistent 360
FWM  66 rr
删除机制 #模式不能混用
[root@lvs ~]# ipvsadm -D -f 66 #删除火墙-D[root@lvs ~]# ipvsadm -C          #全部删除[root@lvs ~]# ipvsadm -A -t 172.25.254.200:80 -s rr
[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -g
[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -g
#-g为直连路由

image-20250714210732327

[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.20:80 -m
[root@lvs ~]# ipvsadm -a -t 172.25.254.200:80 -r 192.168.0.10:80 -m
#-m为nat模式

image-20250714210900139

[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.20:80 -i
[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i
#-e为切换模式 -i为ipip隧道模式

image-20250714211134855

设置权重
[root@lvs ~]# ipvsadm -e -t 172.25.254.200:80 -r 192.168.0.10:80 -i -w 2
#-w 后面跟数字代表权重这里设置2--权重不是所有模式一定生效

image-20250714211820038

计数器[root@lvs ~]# watch -n1 ipvsadm -Ln --rate #后面加–tate -Z清楚计数器

image-20250714211905008

保存策略
[root@lvs ~]# ipvsadm-save -n > /mnt/ipvsadm.rule如果用ipvsadm -C删除后用命令
ipvsadm-restore < /mnt/ipvsadm.rule
恢复策略
永久保存  #开机时加载策略
ipvsadm-save -n > /etc/sysconfig/ipvsadm

LVS技术-DR模式

实验环境拓扑
clienteth0=ip 172.25.254.111
路由器eth0=ip 172.25.254.100 eth1=ip192.168.0.100
DR-LVSeth0=ip 192.168.0.200
RS1eth0=ip192.168.0.10
RS2eth0=ip 192.168.0.20
客户端 clent网络设置
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=172.25.254.111/24,172.25.254.100
dns=8.8.8.8
路由器网络设置
2. 路由器网络设置
(1) eth0 配置
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=172.25.254.100/24
(2) eth1 配置
[connection]
id=eth1
type=ethernet
interface-name=eth1[ipv4]
method=manual
address1=192.168.0.100/24
(3) 激活网口
nmcli connection reload
nmcli connection up eth0
nmcli connection up eth1
(4) 开启路由转发功能

打开路由内核功能

[root@luyou ~] vim /etc/sysctl.conf  #编辑文件开启内核路由功能net.ipv4.ip_forward=1开启内核路由功能[root@luyou ~] sysctl -p  #激活

image-20250716181122844

开启防火墙并开启伪装(MASQUERADE)
[root@luyou system-connections] systemctl enable --now firewalld.service

image-20250716181253815

打开路由地址伪装
[root@luyou system-connections] firewall-cmd --permanent  --add-masquerade
Warning: ALREADY_ENABLED: masquerade
success
LVS主机设置
网口设置
网口eth0.nmconnection
[root@dr-lvs system-connections] cat eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.0.200/24,192.168.0.100
address2=192.168.0.220/24
dns=8.8.8.8[root@dr-lvs system-connections]# nmcli connection reload   #重启
[root@dr-lvs system-connections]# nmcli connection up eth0 #激活
网口设置回环接口lo.nmconnection
[root@dr-lvs system-connections] cat lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo[ipv4]
pmethod=manual#静态
address1=127.0.0.1/8
address2=192.168.0.220/32不对外相应32
[root@dr-lvs system-connections]# nmcli connection reload   #重启
[root@dr-lvs system-connections]# nmcli connection up lo #激活
RS1/RS2 设置(后端真实服务器)
RS1设置
[root@RS1 system-connections]# cat eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.0.10/24,192.168.0.100
dns=8.8.8.8
[root@RS1 system-connections]# cat lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.0.220/32
设置VIP相应管控
[root@RS1 ~] sysctl -a | grep arp  #搜索arp相关设置[root@RS1 ~] echo net.ipv4.conf.lo.arp_ignore =1 >> /etc/sysctl.conf[root@RS1 ~] echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf[root@RS1 ~] echo net.ipv4.conf.all.arp_ignore = 1 >> /etc/sysctl.conf[root@RS1 ~] echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf[root@RS1 ~] sysctl  -p  #生效
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
vnet.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
RS2设置
[root@RS2 system-connections]# cat eth0.nmconnection
[connection]
id=eth0
type=ethernet
interface-name=eth0[ipv4]
method=manual
address1=192.168.0.20/24,192.168.0.100
dns=8.8.8.8
[root@RS2 system-connections]# cat lo.nmconnection
[connection]
id=lo
type=loopback
interface-name=lo[ipv4]
method=manual
address1=127.0.0.1/8
address2=192.168.0.220/32
设置VIP相应管控
[root@RS2 ~] sysctl -a | grep arp  #搜索arp相关设置[root@RS2 ~] echo net.ipv4.conf.lo.arp_ignore =1 >> /etc/sysctl.conf[root@RS2 ~] echo net.ipv4.conf.lo.arp_announce = 2 >> /etc/sysctl.conf[root@RS2 ~] echo net.ipv4.conf.all.arp_ignore = 1 >> /etc/sysctl.conf[root@RS2 ~] echo net.ipv4.conf.all.arp_announce = 2 >> /etc/sysctl.conf[root@RS2 ~] sysctl  -p  #生效
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
vnet.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2

最后通过客户端client用户访问image-20250716191143080

屏幕截图 2025-07-16 191139

防火墙标记解决轮询调度问题

先在RS1和RS2上安装httpd

[root@RS1 ~]# yum install  mod_ssl -y[root@RS2 ~]# dnf install mod_ssl -y[root@RS1 ~]# systemctl  restart  httpd[root@RS2 ~]# systemctl  restart  httpdv在LVS主机上操作[root@dr-lvs ~]# ipvsadm -C  #清除机制
[root@dr-lvs ~]# iptables -t mangle -A PREROUTING -d 192.168.0.220 -p tcp -m multiport --dports 80,443 -j MARK --set-mark 666 

LVS技术-TUN模式


一、实验案例环境

本案例采用LVS负载均衡技术中的TUN(IP隧道)模式,适用于后端Real Server与调度器不在同一二层网络的场景。

网络拓扑简述
Client||          +-------------------+|          |  lvs-tun主机      ||          |  eth0: 192.168.0.100|          +-------------------+|                /      \|               /        \|      +-------------------+   +-------------------+|      |   rs1主机         |   |   rs2主机         ||      |   eth0:192.168.0.10|   |   eth0:192.168.0.20||      +-------------------+   +-------------------+
  • lvs-tun:调度器,虚拟服务IP:192.168.0.100
  • rs1/rs2:真实服务器,分别为 192.168.0.10 和 192.168.0.20

二、系统安装与准备
1. LVS相关软件安装

在 lvs-tun 主机上:

dnf search lvs
dnf install -y ipvsadm
2. RealServer需安装并启动web服务(如httpd/nginx)

(以httpd为例)

yum install -y httpd
systemctl enable --now httpd
echo "RS1-192.168.0.10" > /var/www/html/index.html  # rs1配置
echo "RS2-192.168.0.20" > /var/www/html/index.html  # rs2配置

三、LVS-TUN模式配置

1. 配置IPVS调度

在 lvs-tun 主机上:

ipvsadm -A -t 192.168.0.100:80 -s rr
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.10:80 -i
ipvsadm -a -t 192.168.0.100:80 -r 192.168.0.20:80 -i

image-20250719152451649

参数说明:

  • -A 添加虚拟服务
  • -t 指定虚拟IP和端口
  • -s rr 采用轮询调度
  • -a 添加真实服务器
  • -r 真实服务器IP:端口
  • -i TUN模式(IP隧道)

2. 加载IP隧道内核模块(所有主机)

modprobe ipip

可写入 /etc/modules-load.d/ipip.conf,确保开机自动加载。


四、RealServer配置(rs1与rs2)

1. ARP优化参数(防止虚拟IPARP冲突)

echo "net.ipv4.conf.lo.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.lo.arp_announce = 2" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_ignore = 1" >> /etc/sysctl.conf
echo "net.ipv4.conf.all.arp_announce = 2" >> /etc/sysctl.conf
sysctl -p
2. 配置虚拟IP地址到lo接口
ip addr add 192.168.0.100/32 dev lo
3. 安装并配置arptables,防止ARP欺骗
yum install -y arptables.x86_64
arptables -A INPUT -d 192.168.0.100 -j DROP 
arptables -A OUTPUT -s 192.168.0.100 -j mangle --mangle-ip-s 192.168.0.2
arptables-save > /etc/sysconfig/arptables
4. 检查并允许IPIP协议(防火墙)

如用 firewalld:

firewall-cmd --permanent --add-protocol=ipip
firewall-cmd --reload

4五、客户端测试案例

在 Client 主机上:

curl 192.168.0.100
# RS1-192.168.0.10curl 192.168.0.100
# RS2-192.168.0.20curl 192.168.0.100
# RS1-192.168.0.10
总结
  1. ARP参数与arptables必须配置,防止RealServer响应VIP的ARP请求,避免网络异常。
  2. IPVS调度器和RealServer都需加载ipip隧道模块。
  3. 虚拟IP须绑定至RealServer的lo接口,且为/32掩码。
  4. 防火墙需允许IPIP协议(协议号4)。
  5. 建议将相关配置写入系统启动脚本,防止重启失效。
  6. 每台RealServer需配置独立的index.html,便于验证调度效果。
  7. LVS-TUN模式适合DDoS防护、异地容灾等跨网段负载均衡场景。

lvs-fullnat模式(不常用)

通过同时修改请求报文的源IP地址和目标IP地址进行转发;此类型默认不支持;

(1) VIP是公网地址,RIP和DIP是私网地址,且通常不在同一IP网络;因此,RIP的网关一般不会指向DIP;
(2) RS收到的请求报文源地址是DIP,因此,只能响应给DIP;但Director还要将其发往Client;
(3) 请求和响应报文都经由Director;
(4) 支持端口映射

LVS(Linux Virtual Server)四种工作模式和13种调度算法详解

一、LVS 四种工作模式

1. NAT(Network Address Translation)模式

工作原理

  • 客户端请求到达 LVS 调度器(Director)。
  • LVS 修改请求报文的目标 IP(VIP → Real Server IP),并转发给后端真实服务器(Real Server)。
  • 真实服务器处理请求后,将响应返回给 LVS。
  • LVS 修改响应报文的源 IP(Real Server IP → VIP),再返回给客户端。

特点
✅ 支持端口映射(VIP 和 Real Server 端口可以不同)。
✅ 真实服务器可以位于不同网络(跨 VLAN)。
性能瓶颈:进出流量都要经过 LVS,LVS 容易成为性能瓶颈。
网关依赖:真实服务器必须将默认网关指向 LVS,否则无法回包。

适用场景

  • 适用于小型集群,对性能要求不高。
  • 需要端口映射(如 VIP:80 → Real Server:8080)的场景。

2. DR(Direct Routing)模式

工作原理

  • 客户端请求到达 LVS 调度器(Director)。
  • LVS 仅修改请求报文的 MAC 地址(目标 MAC → Real Server MAC),不修改 IP。
  • 真实服务器直接响应客户端(不经过 LVS),但源 IP 仍然是 VIP(需要配置 lo:VIP)。
  • 客户端收到响应后,认为数据来自 VIP,不会感知 LVS 的存在。

特点
高性能:响应数据不经过 LVS,仅请求经过。
低延迟:适用于高并发场景。
ARP 问题:需要抑制真实服务器的 VIP ARP 响应(arp_ignore=1arp_announce=2)。
网络限制:LVS 和 Real Server 必须在同一 LAN(不能跨 VLAN)。

适用场景

  • 高性能 Web 服务器集群(如电商、金融交易系统)。
  • 需要低延迟、高吞吐量的应用。

3. TUN(IP Tunneling)模式

工作原理

  • LVS 将客户端请求封装在 IP 隧道(如 IPIP/GRE)中,转发给真实服务器。
  • 真实服务器解封装后处理请求,并直接响应客户端(源 IP 仍是 VIP)。
  • 响应数据不经过 LVS。

特点
跨网络支持:LVS 和 Real Server 可以不在同一网络(跨机房)。
高性能:响应数据不经过 LVS。
配置复杂:需要 Real Server 支持 IP 隧道协议(如 ipip 模块)。
额外开销:IP 封装/解封装增加 CPU 负担。

适用场景

  • 跨数据中心负载均衡(如异地容灾)。
  • 需要高可用但 Real Server 不在同一 LAN 的场景。

4. FULLNAT 模式

工作原理

  • LVS 同时修改请求报文的源 IP 和目标 IP(CIP → LVS IP,VIP → RIP)。
  • 真实服务器看到的源 IP 是 LVS 的 IP,而不是客户端的 IP。
  • LVS 在返回响应时,再修改源 IP(RIP → VIP)和目标 IP(LVS IP → CIP)。

特点
跨 VLAN 支持:Real Server 可以位于不同网络。
隐藏客户端 IP:Real Server 看不到客户端的真实 IP(需通过 TOA 模块获取)。
性能影响:所有流量都要经过 LVS,类似 NAT 模式。

适用场景

  • 需要隐藏客户端 IP 的场景(如安全防护)。
  • 大规模跨 VLAN 负载均衡(如云环境)。

二、LVS 13 种调度算法

静态调度算法(不感知服务器负载)

算法名称说明
rr轮询(Round Robin)按顺序依次分配请求,不考虑服务器负载。
wrr加权轮询(Weighted RR)按权重比例分配请求(如权重 3:2:1)。
sh源地址哈希(Source Hashing)相同源 IP 的请求固定分配到同一服务器(会话保持)。
dh目标地址哈希(Destination Hashing)相同目标 IP 的请求固定分配到同一服务器(CDN 场景)。

动态调度算法(感知服务器负载)

算法名称说明
lc最少连接(Least Connections)选择当前连接数最少的服务器。
wlc加权最少连接(Weighted LC)默认算法,考虑权重 + 连接数。
lblc基于局部性的最少连接类似 dh + lc,适用于缓存服务器。
lblcr带复制的基于局部性最少连接优化 lblc,允许请求在相似服务器间分配。
sed最短期望延迟(Shortest Expected Delay)选择 (活动连接 + 1) / 权重 最小的服务器。
nq永不排队(Never Queue)优先选择空闲服务器,否则使用 sed
lt最小流量(Least Traffic)选择当前流量最少的服务器。
wlt加权最小流量(Weighted LT)考虑权重的 lt 算法。
wrt加权响应时间(Weighted Response Time)选择平均响应时间最短的服务器。

三、总结对比

模式性能跨网络配置复杂度适用场景
NAT简单小型集群、端口映射
DR中等高性能 Web 服务
TUN复杂跨机房负载均衡
FULLNAT中等云环境、安全防护

调度算法选择

  • 默认推荐 wlc(加权最少连接)。
  • 需要会话保持sh(源地址哈希)。
  • 缓存服务器优化lblc / lblcr
  • 低延迟优先sed / nq

LVS 的灵活模式 + 多种调度算法使其适用于各种高可用、高性能负载均衡场景。 看看嘛

           |

| wlt | 加权最小流量(Weighted LT) | 考虑权重的 lt 算法。 |
| wrt | 加权响应时间(Weighted Response Time) | 选择平均响应时间最短的服务器。 |


三、总结对比

模式性能跨网络配置复杂度适用场景
NAT简单小型集群、端口映射
DR中等高性能 Web 服务
TUN复杂跨机房负载均衡
FULLNAT中等云环境、安全防护

调度算法选择

  • 默认推荐 wlc(加权最少连接)。
  • 需要会话保持sh(源地址哈希)。
  • 缓存服务器优化lblc / lblcr
  • 低延迟优先sed / nq

LVS 的灵活模式 + 多种调度算法使其适用于各种高可用、高性能负载均衡场景。 看看嘛

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

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

相关文章

[设计模式]C++单例模式的几种写法以及通用模板

之前在这篇文章中简单的介绍了一下单例模式的作用和应用C中单例模式详解_c单例模式的作用-CSDN博客&#xff0c;今天我将在在本文梳理单例模式从C98到C11及以后的演变过程&#xff0c;探讨其不同实现方式的优劣&#xff0c;并介绍在现代C中的最佳实践。 什么是单例模式&#x…

小架构step系列19:请求和响应

1 概述作为Web程序&#xff0c;通用形式是发起HTTP请求并获取返回的结果&#xff0c;在这个过程中&#xff0c;需要把请求映射到代码的接口上&#xff0c;提供这种接口的类一般称为Controller&#xff0c;也就是需要把请求映射到Controller的接口方法上&#xff0c;把请求的参数…

论文分享 | LABRADOR:响应引导的针对物联网设备的黑盒模糊测试

由于固件仿真以及重托管的技术挑战&#xff0c;部分企业级 IoT 设备只能在黑盒环境下进行模糊测试。分享一篇发表于 2024 年 S&P 会议的论文 Labrador&#xff0c;它利用响应来引导请求变异&#xff0c;实现了针对 IoT 设备的高效黑盒模糊测试。 猴先生说&#xff1a;这篇论…

WPF为启动界面(Splash Screen)添加背景音乐

1. 添加音频文件到项目 将音频文件&#xff08;如.mp3/.wav&#xff09;放入项目文件夹&#xff08;如Resources&#xff09;在解决方案资源管理器中右键文件 → 属性&#xff1a; 生成操作&#xff1a;选择Resource&#xff08;嵌入资源&#xff09;或Content&#xff08;内容…

【Jmeter】报错:An error occured:Unknown arg

问题 调试Jmeter时&#xff0c;报错&#xff1a;‘An error occurred: Unknown arg: l’&#xff0c;脚本如下&#xff1a; $JMETER_PATH -n -t "$target_jmx" -l "$SCENARIO_REPORT_DIR/result_${threads}.jtl" -e -o "$SCENARIO_REPORT_DIR/htm…

vue3使用KeepAlive组件及一些注意事项

目录 一、KeepAlive的作用 二、缓存组件配置 2.1、过滤缓存组件 2.2、最大缓存实例数 三、KeepAlive组件的生命周期 四、错误用法 4.1、缓存v-if包裹的动态组件 4.2、拼写错误 一、KeepAlive组件的作用 首先&#xff0c;keep-alive是一个vue的内置组件&#xff0c;官网…

辛普森悖论

辛普森悖论第一步&#xff1a;概念拆解想象你在比较两个班级的考试成绩&#xff1a;​第一天​&#xff1a;实验组&#xff08;1个学生考了90分&#xff09;&#xff0c;对照组&#xff08;99个学生平均考了80分&#xff09;​第二天​&#xff1a;实验组&#xff08;50个学生平…

有效的括号数据结构oj题(力口20)

目录 目录 题目描述 题目分析解析 解决代码 写题感悟&#xff1a; 题目描述 还有实例 题目分析解析 对于这个题目&#xff0c;我们首先有效字符串需要满足什么&#xff0c;第一个左右括号使用相同类型的括号&#xff0c;这好理解&#xff0c;无非就是小括号和小括号大括号…

Mock 单元测试

作者&#xff1a;小凯 沉淀、分享、成长&#xff0c;让自己和他人都能有所收获&#xff01; 本文的宗旨在于通过简单干净实践的方式教会读者&#xff0c;如何使用 Mock (opens new window)进行工程的单元测试&#xff0c;以便于验证系统中的独立模块功能的健壮性。 从整个工程所…

MySQL 深度性能优化配置实战指南

🔧 一、硬件与系统层优化:夯实性能基石 ​​硬件选型策略​​ ​​CPU​​:读密集型场景选择多核CPU(如32核);写密集型场景选择高主频CPU(如3.5GHz+)。 ​​内存​​:建议≥64GB,​​缓冲池命中率≥99%​​ 是性能关键指标。 ​​存储​​:​​必用NVMe SSD​​,I…

Visual Studio Code(VSCode)中设置中文界面

在VS Code中设置中文界面主要有两种方法&#xff1a;通过扩展市场安装中文语言包或通过命令面板直接切换语言。‌方法一&#xff1a;通过扩展市场安装中文语言包‌打开VS Code&#xff0c;点击左侧活动栏的"扩展"图标&#xff08;或按CtrlShiftX&#xff09;。在搜索…

叉车机器人如何实现托盘精准定位?这项核心技术的原理和应用是什么?

随着智慧物流和智能制造的加速发展&#xff0c;智能化转型成为提升效率、降低成本的关键路径&#xff0c;叉车机器人&#xff08;AGV/AMR叉车&#xff09;在仓储、制造、零售等行业中的应用日益广泛。 其中&#xff0c;托盘定位技术是实现其高效、稳定作业的核心环节之一&…

NO.6数据结构树|二叉树|满二叉树|完全二叉树|顺序存储|链式存储|先序|中序|后序|层序遍历

树与二叉树的基本知识 树的术语结点&#xff1a; 树中的每个元素都称为结点&#xff0c; 例如上图中的 A,B,C…根结点&#xff1a; 位于树顶部的结点&#xff0c; 它没有父结点,比如 A 结点。父结点&#xff1a; 若一个结点有子结点&#xff0c; 那么这个结点就称为其子结点的父…

数据集下载网站

名称简介链接Kaggle世界上最大的数据科学竞赛平台之一&#xff0c;有大量结构化、图像、文本等数据集可直接下载✅支持一键下载、APIPapers with Code可按任务&#xff08;如图像分类、文本生成等&#xff09;查找模型与数据集&#xff0c;标注 SOTA✅与论文强关联Hugging Face…

Tomcat 生产 40 条军规:容量规划、调优、故障演练与安全加固

&#xff08;一&#xff09;容量规划 6 条 军规 1&#xff1a;线程池公式 maxThreads ((并发峰值 平均 RT) / 1000) 冗余 20 %&#xff1b; 踩坑&#xff1a;压测 2000 QPS、RT 200 ms&#xff0c;理论 maxThreads500&#xff0c;线上却设 150 导致排队。军规 2&#xff1a;…

深入解析 Amazon Q:AWS 推出的企业级生成式 AI 助手

在人工智能助手竞争激烈的当下&#xff0c;AWS 重磅推出的 Amazon Q 凭借其强大的企业级整合能力&#xff0c;正成为开发者提升生产力的新利器。随着生成式 AI 技术席卷全球&#xff0c;各大云厂商纷纷布局智能助手领域。在 2023 年 re:Invent 大会上&#xff0c;AWS 正式推出了…

物流自动化WMS和WCS技术文档

导语大家好&#xff0c;我是社长&#xff0c;老K。专注分享智能制造和智能仓储物流等内容。欢迎大家使用我们的仓储物流技术AI智能体。新书《智能物流系统构成与技术实践》新书《智能仓储项目出海-英语手册&#xff0c;必备&#xff01;》完整版文件和更多学习资料&#xff0c;…

Web3.0 实战项目、简历打造、精准投递+面试准备

目录 一、获取真实企业级 Web3.0 项目的 5 种方式 1. 参与开源项目&#xff08;推荐指数&#xff1a;⭐⭐⭐⭐⭐&#xff09; 2. 参与黑客松&#xff08;Hackathon&#xff09; 3. 远程实习 & DAO 协作项目&#xff08;兼职也可&#xff09; 4. Web3 Startup 实战项目合…

pymongo库:简易方式存取数据

文档 基础使用 前提&#xff1a;开发机器已安装mongo配置环境&#xff0c;已启动服务。 macOS启动服务&#xff1a;brew services start mongodb-community8.0 macOS停止服务&#xff1a;brew services stop mongodb-community8.0安装&#xff1a;python3 -m pip install pym…

Java 线程池与多线程并发编程实战全解析:从异步任务调度到设计模式落地,200 + 核心技巧、避坑指南与业务场景结合

多线程编程在现代软件开发中扮演着至关重要的角色&#xff0c;它能够显著提升应用程序的性能和响应能力。通过合理利用异步线程、多线程以及线程池等技术&#xff0c;我们可以更高效地处理复杂任务&#xff0c;优化系统资源的使用。同时&#xff0c;在实际应用中&#xff0c;我…