LVS四種工作模式深度解析

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;我…