Linux內核參數調優:為K8s節點優化網絡性能

在高并發微服務環境中,網絡性能往往成為K8s集群的瓶頸。本文將深入探討如何通過精細化的Linux內核參數調優,讓你的K8s節點網絡性能提升30%以上。

引言:為什么網絡調優如此重要?

作為一名在生產環境中維護過數千節點K8s集群的運維工程師,我深知網絡性能對整個容器生態的重要性。一個未經優化的K8s節點,在高負載場景下可能出現:

  • ? Pod間通信延遲激增

  • ? 服務發現響應緩慢

  • ? 負載均衡器連接超時

  • ? CNI插件性能下降

今天,我將分享在生產環境中驗證過的內核參數調優方案,幫助你徹底解決這些問題。

核心網絡子系統調優策略

1. TCP連接優化:應對高并發場景

在微服務架構中,服務間頻繁的短連接是性能殺手。以下參數可以顯著改善TCP連接處理能力:

# /etc/sysctl.d/k8s-network.conf# TCP連接隊列優化
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 65535# 快速回收TIME_WAIT連接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30# TCP窗口縮放
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096 65536 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216

調優原理

  • ??somaxconn控制listen隊列長度,默認128遠不夠用

  • ??netdev_max_backlog優化網卡接收隊列

  • ??tcp_tw_reuse允許重用TIME_WAIT狀態的socket

2. 緩沖區調優:提升吞吐量

網絡緩沖區大小直接影響數據傳輸效率,特別是在容器密集部署場景:

# 核心網絡緩沖區
net.core.rmem_default = 262144
net.core.rmem_max = 134217728
net.core.wmem_default = 262144 ?
net.core.wmem_max = 134217728# UDP緩沖區優化
net.core.netdev_budget = 600
net.core.netdev_max_backlog = 5000

生產經驗:在一個擁有500+ Pod的節點上,將接收緩沖區從默認的87380字節調整到16MB后,網絡吞吐量提升了約40%。

3. 連接跟蹤優化:解決NAT性能瓶頸

K8s的Service機制依賴iptables/IPVS進行NAT轉換,連接跟蹤表是關鍵:

# 連接跟蹤表優化
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_buckets = 262144
net.netfilter.nf_conntrack_tcp_timeout_established = 1200# 減少連接跟蹤開銷
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 30
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 15

注意事項:conntrack表過小會導致"nf_conntrack: table full"錯誤,建議按照Pod數量×預期連接數來計算。

高級調優技巧

4. 中斷親和性設置

多隊列網卡的中斷分布對性能影響巨大:

#!/bin/bash
# 網卡中斷均衡腳本
INTERFACE="eth0"
CPU_CORES=$(nproc)# 獲取網卡隊列數
QUEUES=$(ls?/sys/class/net/$INTERFACE/queues/ | grep rx- |?wc?-l)# 將中斷綁定到不同CPU核心
for?((i=0; i<$QUEUES; i++));?doIRQ=$(grep?"$INTERFACE-rx-$i"?/proc/interrupts |?cut?-d: -f1 |?tr?-d?' ')CPU=$((i %?$CPU_CORES))echo?$((1?<<?$CPU)) > /proc/irq/$IRQ/smp_affinity
done

5. 容器網絡命名空間優化

針對容器環境的特殊優化:

# 容器網絡棧優化
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-iptables = 1
net.bridge.bridge-nf-call-ip6tables = 1# IPv4路由緩存
net.ipv4.route.gc_timeout = 100
net.ipv4.route.max_size = 2147483647# ARP表優化
net.ipv4.neigh.default.gc_thresh1 = 1024
net.ipv4.neigh.default.gc_thresh2 = 4096 ?
net.ipv4.neigh.default.gc_thresh3 = 8192

實戰案例分析

場景1:電商秒殺系統

問題:在某電商平臺的秒殺活動中,K8s集群出現大量Pod間通信超時。

診斷過程

# 檢查連接狀態分布
ss -tan | awk?'{print $1}'?|?sort?|?uniq?-c# 監控網絡隊列丟包
cat?/proc/net/softnet_stat# 查看連接跟蹤表使用情況 ?
cat?/proc/sys/net/netfilter/nf_conntrack_count
cat?/proc/sys/net/netfilter/nf_conntrack_max

解決方案

  1. 1. 增加TCP監聽隊列:net.core.somaxconn = 32768

  2. 2. 優化連接跟蹤:nf_conntrack_max = 2097152

  3. 3. 啟用TCP快速回收:tcp_tw_reuse = 1

效果:P99響應時間從2.5秒降低到300ms,連接超時率從15%降低到0.1%。

場景2:大數據批處理集群

挑戰:Spark on K8s作業中Driver與Executor通信頻繁丟包。

優化重點

# 專門針對大數據場景的調優
net.core.rmem_max = 268435456 ? ?# 256MB接收緩沖區
net.core.wmem_max = 268435456 ? ?# 256MB發送緩沖區
net.ipv4.tcp_congestion_control = bbr ?# 使用BBR擁塞控制

結果:數據傳輸吞吐量提升65%,作業完成時間縮短30%。

監控與驗證

關鍵指標監控

使用Prometheus監控調優效果:

# network-metrics-exporter.yaml
apiVersion:?v1
kind:?ConfigMap
metadata:name:?network-metrics
data:collect.sh:?|#!/bin/bashecho "tcp_retrans_rate $(awk '{print $12/$5}' /proc/net/snmp | tail -1)"echo "tcp_socket_count $(ss -tan | wc -l)"echo "conntrack_usage $(cat /proc/sys/net/netfilter/nf_conntrack_count)"

性能驗證腳本

#!/bin/bash
# 網絡性能測試腳本
echo?"=== 網絡性能測試報告 ==="# TCP連接建立速度測試
echo?"TCP連接測試:"
time?for?i?in?{1..1000};?dotimeout?1 bash -c?"</dev/tcp/127.0.0.1/80"?2>/dev/null
done# 吞吐量測試
echo?"網絡吞吐量測試:"
iperf3 -c target-pod-ip -t 30 -P 4# 延遲測試 ?
echo?"網絡延遲測試:"
ping -c 100 target-pod-ip |?tail?-1

🔧 TCP協議棧核心參數優化

1. TCP連接管理優化

# /etc/sysctl.conf 配置文件# TCP連接隊列長度優化
net.core.somaxconn = 65535 ? ? ? ? ? ? ? ? ? ?# 增加監聽隊列長度
net.core.netdev_max_backlog = 30000 ? ? ? ? ??# 網卡接收隊列長度
net.ipv4.tcp_max_syn_backlog = 65535 ? ? ? ? ?# SYN隊列長度# TIME_WAIT狀態優化
net.ipv4.tcp_tw_reuse = 1 ? ? ? ? ? ? ? ? ? ??# 允許重用TIME_WAIT socket
net.ipv4.tcp_fin_timeout = 30 ? ? ? ? ? ? ? ??# 減少FIN_WAIT_2狀態時間
net.ipv4.tcp_max_tw_buckets = 10000 ? ? ? ? ??# 限制TIME_WAIT數量# 連接保活機制
net.ipv4.tcp_keepalive_time = 600 ? ? ? ? ? ??# 開始發送keepalive探測包的時間
net.ipv4.tcp_keepalive_probes = 3 ? ? ? ? ? ??# keepalive探測包數量 ?
net.ipv4.tcp_keepalive_intvl = 15 ? ? ? ? ? ??# 探測包發送間隔

2. TCP緩沖區優化

# TCP接收/發送緩沖區優化
net.core.rmem_default = 262144 ? ? ? ? ? ? ? ?# 默認接收緩沖區大小
net.core.rmem_max = 16777216 ? ? ? ? ? ? ? ? ?# 最大接收緩沖區大小
net.core.wmem_default = 262144 ? ? ? ? ? ? ? ?# 默認發送緩沖區大小
net.core.wmem_max = 16777216 ? ? ? ? ? ? ? ? ?# 最大發送緩沖區大小# TCP套接字緩沖區自動調節
net.ipv4.tcp_rmem = 4096 87380 16777216 ? ? ??# TCP讀取緩沖區 min default max
net.ipv4.tcp_wmem = 4096 65536 16777216 ? ? ??# TCP寫入緩沖區 min default max
net.ipv4.tcp_mem = 94500000 915000000 927000000?# TCP內存分配 low pressure high# 啟用TCP窗口縮放
net.ipv4.tcp_window_scaling = 1 ? ? ? ? ? ? ??# 支持更大的TCP窗口

3. TCP擁塞控制優化

# 擁塞控制算法選擇
net.ipv4.tcp_congestion_control = bbr ? ? ? ? ?# 使用BBR算法(推薦)
# 其他選項:cubic, reno, bic# 快速重傳和恢復
net.ipv4.tcp_frto = 2 ? ? ? ? ? ? ? ? ? ? ? ? ?# F-RTO算法檢測虛假超時
net.ipv4.tcp_dsack = 1 ? ? ? ? ? ? ? ? ? ? ? ??# 啟用DSACK支持
net.ipv4.tcp_fack = 1 ? ? ? ? ? ? ? ? ? ? ? ? ?# 啟用FACK擁塞避免# TCP慢啟動閾值
net.ipv4.tcp_slow_start_after_idle = 0 ? ? ? ??# 禁用空閑后慢啟動

🌐 IP協議棧參數優化

1. IP層處理優化

# IP轉發和路由優化
net.ipv4.ip_forward = 0 ? ? ? ? ? ? ? ? ? ? ? ?# 非路由器設備關閉轉發
net.ipv4.conf.default.rp_filter = 1 ? ? ? ? ??# 啟用反向路徑過濾
net.ipv4.conf.all.rp_filter = 1# IP分片處理
net.ipv4.ipfrag_high_thresh = 262144 ? ? ? ? ??# IP分片高閾值
net.ipv4.ipfrag_low_thresh = 196608 ? ? ? ? ? ?# IP分片低閾值
net.ipv4.ipfrag_time = 30 ? ? ? ? ? ? ? ? ? ??# 分片重組超時時間# ICMP優化
net.ipv4.icmp_echo_ignore_broadcasts = 1 ? ? ?# 忽略廣播ICMP
net.ipv4.icmp_ignore_bogus_error_responses = 1?# 忽略錯誤ICMP響應

2. 端口范圍優化

# 本地端口范圍擴展
net.ipv4.ip_local_port_range = 1024 65535 ? ? ?# 可用端口范圍# UDP端口優化
net.ipv4.udp_mem = 94500000 915000000 927000000
net.ipv4.udp_rmem_min = 8192
net.ipv4.udp_wmem_min = 8192

? 網絡隊列和中斷優化

1. 網絡設備隊列優化

# 增加網絡設備處理隊列
echo?'echo 4096 > /proc/sys/net/core/netdev_budget'?>> /etc/rc.local
echo?'echo 2 > /proc/sys/net/core/netdev_budget_usecs'?>> /etc/rc.local# RPS/RFS優化(多核CPU負載均衡)
echo?'f'?> /sys/class/net/eth0/queues/rx-0/rps_cpus ?# 根據CPU核數調整

2. 中斷優化腳本

#!/bin/bash
# network_irq_balance.sh - 網絡中斷均衡腳本# 獲取網卡中斷號
IRQ_LIST=$(grep eth0 /proc/interrupts | awk -F:?'{print $1}'?| xargs)# 綁定中斷到不同CPU核心
CPU_COUNT=$(nproc)
i=0for?irq?in$IRQ_LIST;?docpu_mask=$((1?<< (i % CPU_COUNT)))printf"%x"$cpu_mask?> /proc/irq/$irq/smp_affinityecho"IRQ?$irq?-> CPU?$((i % CPU_COUNT))"((i++))
done

🎯 高并發場景專項優化

1. 大連接數優化

# 文件描述符限制
echo'* soft nofile 1048576'?>> /etc/security/limits.conf
echo'* hard nofile 1048576'?>> /etc/security/limits.conf# 進程數限制 ?
echo'* soft nproc 1048576'?>> /etc/security/limits.conf
echo'* hard nproc 1048576'?>> /etc/security/limits.conf# systemd服務限制
echo'DefaultLimitNOFILE=1048576'?>> /etc/systemd/system.conf
echo'DefaultLimitNPROC=1048576'?>> /etc/systemd/system.conf

2. 內存管理優化

# 虛擬內存管理
vm.swappiness = 10 ? ? ? ? ? ? ? ? ? ? ? ? ? ??# 降低swap使用
vm.dirty_ratio = 15 ? ? ? ? ? ? ? ? ? ? ? ? ? ?# 臟頁寫回比例
vm.dirty_background_ratio = 5 ? ? ? ? ? ? ? ? ?# 后臺寫回比例
vm.overcommit_memory = 1 ? ? ? ? ? ? ? ? ? ? ??# 允許內存過量分配

📈 性能監控和驗證

1. 關鍵指標監控腳本

#!/bin/bash
# network_monitor.sh - 網絡性能監控echo"=== 網絡連接狀態統計 ==="
ss -secho?-e?"\n=== TCP連接狀態分布 ==="
ss -tan | awk?'NR>1{state[$1]++} END{for(i in state) print i, state[i]}'echo?-e?"\n=== 網絡吞吐量 ==="
sar -n DEV 1 1 | grep -E?"eth0|Average"echo?-e?"\n=== 內存使用情況 ==="
free -hecho?-e?"\n=== 系統負載 ==="
uptime

2. 壓測驗證命令

# 使用wrk進行HTTP壓測
wrk -t12 -c400 -d30s --latency http://your-server-ip/# 使用iperf3進行網絡帶寬測試
iperf3 -s ?# 服務端
iperf3 -c server-ip -t 60 -P 10 ?# 客戶端# TCP連接數壓測
ab -n 100000 -c 1000 http://your-server-ip/

🔥 實戰案例:電商系統優化

優化前后對比數據

指標

優化前

優化后

提升幅度

QPS

15,000

45,000

200%

平均延遲

120ms

35ms

71%

99%延遲

800ms

150ms

81%

并發連接數

10,000

50,000

400%

CPU使用率

85%

45%

-47%

關鍵優化點

  1. 1.?BBR擁塞控制:啟用后網絡吞吐量提升40%

  2. 2.?TCP緩沖區調優:大幅減少網絡延遲抖動

  3. 3.?連接復用優化:TIME_WAIT狀態減少90%

  4. 4.?中斷均衡:多核CPU利用率提升明顯

💡 最佳實踐建議

1. 分場景調優策略

高并發Web服務器

# 重點優化連接數和快速釋放
net.ipv4.tcp_tw_reuse = 1
net.core.somaxconn = 65535
net.ipv4.tcp_max_syn_backlog = 65535

大文件傳輸服務器

# 重點優化緩沖區和窗口大小
net.core.rmem_max = 134217728
net.core.wmem_max = 134217728
net.ipv4.tcp_window_scaling = 1

數據庫服務器

# 重點優化連接保活和穩定性
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_retries2 = 5

2. 生產環境部署流程

  1. 1.?測試環境驗證:先在測試環境應用配置

  2. 2.?灰度發布:選擇部分服務器先行部署

  3. 3.?監控觀察:密切關注關鍵性能指標

  4. 4.?全量部署:確認無問題后全面推廣

3. 配置持久化

# 應用所有sysctl配置
sysctl -p# 驗證配置是否生效
sysctl net.ipv4.tcp_congestion_control
sysctl net.core.somaxconn# 設置開機自動生效
echo?'sysctl -p'?>> /etc/rc.local
chmod?+x /etc/rc.local

?? 注意事項和常見陷阱

1. 參數調優誤區

  • ??盲目增大緩沖區:可能導致內存不足

  • ??過度優化TIME_WAIT:可能引起端口耗盡

  • ??忽略業務特性:不同業務需要不同的參數策略

2. 回滾預案

# 備份當前配置
cp?/etc/sysctl.conf /etc/sysctl.conf.backup.$(date?+%Y%m%d)# 快速回滾腳本
cat?> /root/network_rollback.sh <<?'EOF'
#!/bin/bash
cp?/etc/sysctl.conf.backup.* /etc/sysctl.conf
sysctl -p
echo?"Network config rollback completed!"
EOF
chmod?+x /root/network_rollback.sh

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/92534.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/92534.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/92534.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

全家桶” 戰略如何重塑智能服務標準?無憂秘書 AI + 智腦 + 數字人協同模式的底層架構解析

在數字化浪潮的推動下&#xff0c;企業對智能化服務的需求日益增長。然而&#xff0c;單一的技術或產品往往難以滿足復雜場景下的多樣化需求。近年來&#xff0c;“全家桶”戰略成為科技行業的一大趨勢&#xff0c;通過整合多維度技術與服務&#xff0c;為企業提供全方位的支持…

前端后端之爭?JavaScript和Java的特性與應用場景解析

一、名字相似&#xff0c;本質迥異 1.1 歷史淵源與命名背景 在編程世界中&#xff0c;很少有兩種語言像JavaScript和Java這樣&#xff0c;僅僅因為名字的相似性就引發了無數初學者的困惑。然而&#xff0c;這種相似性純屬巧合——或者說是一種營銷策略的產物。 JavaScript誕…

【文獻分享】Machine learning models提供數據和代碼

數據輸入及前期信息&#xff1a;ChronoGauge 需要一個基因表達矩陣&#xff0c;其中包括來自多個時間進程 RNA-測序實驗的觀測數據&#xff0c;用于訓練&#xff0c;并且需要有關每個基因在連續光照&#xff08;LL&#xff09;條件下經過光暗&#xff08;LD&#xff09;周期調整…

PHP MySQL Delete 操作詳解

PHP MySQL Delete 操作詳解 引言 在Web開發中&#xff0c;數據庫是存儲和管理數據的重要工具。PHP作為一種流行的服務器端腳本語言&#xff0c;與MySQL數據庫結合使用可以高效地處理數據。本文將詳細介紹PHP中如何使用DELETE語句刪除MySQL數據庫中的數據。 什么是DELETE語句&am…

計組-大/小端存放區別

在計算機系統中&#xff0c;大端存放&#xff08;Big-Endian&#xff09;和小端存放&#xff08;Little-Endian&#xff09;是兩種不同的多字節數據存儲方式&#xff0c;主要區別在于字節在內存中的排列順序。理解它們對底層編程&#xff08;如網絡通信、二進制文件處理、硬件交…

線程同步相關知識

文章目錄一、線程同步的核心目標二、線程安全的判定條件三、同步方式一&#xff1a;synchronized 關鍵字1. 同步代碼塊2. 同步方法四、鎖的釋放與不釋放場景1. 自動釋放鎖的場景2. 不會釋放鎖的場景五、同步方式二&#xff1a;ReentrantLock&#xff08;顯式鎖&#xff09;1. 核…

Armoury Crate無法通過BIOS卸載

設備&#xff1a;天選4 Armoury Crate窗口反復彈出影響使用體驗&#xff0c;但無法通過BIOS關閉該怎么辦&#xff1f;本文以天選4為例提供解決方案。 Step1&#xff1a;進入服務支持官網 Armoury Crate-服務支持 下滑點擊”查看更多” 下載安裝卸載工具 得到Armoury_Crate_Un…

如何將視頻轉為GIF格式,3大視頻轉為GIF工具

在社交媒體和即時通訊盛行的當下&#xff0c;GIF 動圖以其獨特的魅力備受青睞。它能夠生動地捕捉視頻中的精彩瞬間&#xff0c;憑借體積小巧、無需復雜加載且可循環播放的特性&#xff0c;成為了人們在網絡交流中表達情感、分享趣事的得力工具。無論是制作詼諧幽默的表情包&…

開發避坑指南(22):Vue3響應式編程中this綁定機制與解決方案

錯誤信息 TypeError: Cannot read properties of undefined (reading find) TypeError: r.vnode.el.querySelector is not a function報錯背景 vue2項目升級到vue3后&#xff0c;原來的代碼報錯。 報錯代碼computed: {/** 計算列的顯示與隱藏*/columnVisible() {return functio…

AI學習筆記三十五:實時傳輸視頻

若該文為原創文章&#xff0c;轉載請注明原文出處。 目的是實現視頻的傳輸&#xff0c;只是個demo. 程序分為兩部分&#xff0c;視頻接收端和視頻發送端。 一、視頻接收端流程分析 主要流程&#xff1a; 初始化配置&#xff1a; 設置UDP端口&#xff08;5001&#xff09;和緩…

【ArcGIS】分區統計中出現Null值且Nodata無法忽略的問題以及shp擦除(erase)的使用——以NDVI去水體為例

需求 已有某地NDVI柵格、行政區shp以及水體shp&#xff0c;計算每個行政區的平均NDVI 問題 1.如果不剔除水體 負值NDVI會把平均值拉低 且水體NDVI并不全為負 需要通過shp剔除&#xff0c;Mask掩膜是提取水體本身而不是剩余部分 2.使用分區統計工具&#xff08;Zonal statis…

Linux中的內核同步源碼相關總結

什么是內核同步Linux 內核同步是指內核中用于解決并發執行單元&#xff08;如進程、中斷、內核線程等&#xff09;對共享資源&#xff08;如全局數據結構、硬件寄存器、鏈表等&#xff09;的競爭訪問的一系列機制和技術。其核心目標是保證多個并發單元在操作共享資源時的數據一…

WORD接受修訂,并修改修訂后文字的顏色

在 Word 中&#xff0c;接受修訂之后默認會采用正文的默認字體格式&#xff0c;不會保留修訂時設置的顏色&#xff0c;比如“插入內容是藍色字體”的設置會被清除。 如果你想要做到&#xff1a;? 接受所有修訂后仍然讓“原插入的文字”變為藍色字體保留下來你只能通過一些手動…

行業速覽:中國新能源汽車市場格局與關鍵趨勢

在全球汽車產業邁向綠色、低碳、智能化的變革浪潮中&#xff0c;新能源汽車已成為各國爭奪的戰略高地。中國&#xff0c;作為全球最大的汽車市場和新能源汽車制造國&#xff0c;正以強大的市場規模、完整的產業鏈體系以及快速提升的技術創新能力&#xff0c;在這場變革中不斷加…

【51單片機2個按鍵控制流水燈轉向】2022-10-25

緣由51單片機按鍵流水燈-嵌入式-CSDN問答 #include "REG52.h" sbit k1P3^0; sbit k2P3^1; void main() {unsigned char l0,xd0,ys10,ys20,z0;P1l;while(1){if(k10&&xd0){z0;while(k10);}if(k20&&xd0){z1;while(k20);}if(ys10)if(ys20){if(z0)if(l0)…

flutter開發(一)flutter命令行工具

安裝 Linux下面的flutter安裝比較簡單&#xff0c;在flutter 中文戰 上下載一個最新穩定的版本&#xff0c;解壓到系統上就行了。 我下載的是Linux下的3.32.7版。 解壓之后&#xff0c;flutter目錄里會有bin、dev等目錄&#xff0c;把bin目錄加到系統的PATH環境變量里&#…

OpenCV 入門實戰:從環境配置到圖像 / 視頻處理

OpenCV 是計算機視覺領域最常用的開源庫之一&#xff0c;它提供了豐富的圖像和視頻處理功能。本文將從環境配置開始&#xff0c;帶大家一步步解析基礎操作代碼&#xff0c;快速入門 OpenCV 的使用。 一、環境配置 在開始之前&#xff0c;我們需要先搭建好 OpenCV 的運行環境。…

2.2.1 飾面板材和陶瓷的特性和應用

1、飾面石材1&#xff09;天然花崗巖2&#xff09;天然大理石3&#xff09;人造石&#xff08;1&#xff09;人造石按主要原材料分包括人造石實體面材、人造石英石和人造石崗石等產品。2、建筑衛生陶瓷建筑衛生陶瓷包括建筑陶瓷和衛生陶瓷兩大類。建筑陶瓷包括陶瓷磚、建筑琉璃…

C++的結構體數組

結構體數組的基礎知識 結構體數組通過??組合數據批量管理??的特性&#xff0c;廣泛應用于學生管理、游戲角色屬性存儲等場景。常見問題 ??數組越界??&#xff1a;靜態數組長度固定&#xff0c;超過數組長度的訪問&#xff0c;會導致未定義行為。??未初始化成員??&a…

小程序中使用echarts(2025/8/8)

這篇博文講的很詳細&#xff0c;也很簡潔&#xff0c;這里補充一點東西 小程序中使用echarts(硬貨&#xff0c;全網最詳細教程&#xff01;)_小程序使用echarts-CSDN博客 簡單來說就是去官網下載ec-canvas組件&#xff0c;將其中的echarts.js換成echarts.min.js&#xff08;原…