Nginx 502 Bad Gateway:從 upstream 日志到 FastCGI 超時復盤

Nginx 502 Bad Gateway:從 upstream 日志到 FastCGI 超時復盤

🌟 Hello,我是摘星!
🌈 在彩虹般絢爛的技術棧中,我是那個永不停歇的色彩收集者。
🦋 每一個優化都是我培育的花朵,每一個特性都是我放飛的蝴蝶。
🔬 每一次代碼審查都是我的顯微鏡觀察,每一次重構都是我的化學實驗。
🎵 在編程的交響樂中,我既是指揮家也是演奏者。讓我們一起,在技術的音樂廳里,奏響屬于程序員的華美樂章。

目錄

Nginx 502 Bad Gateway:從 upstream 日志到 FastCGI 超時復盤

摘要

1. 502 錯誤的本質理解

1.1 HTTP 狀態碼深度解析

1.2 502 錯誤的常見觸發場景

2. upstream 日志分析實戰

2.1 日志格式配置與關鍵信息提取

2.2 日志分析腳本

3. FastCGI 協議深度剖析

3.1 FastCGI 通信機制

3.2 PHP-FPM 配置優化

3.3 Nginx FastCGI 參數調優

4. 超時參數精確調優

4.1 超時參數層級關系

4.2 超時參數對比表

4.3 動態超時調整腳本

5. 監控與告警體系

5.1 Prometheus 監控配置

5.2 自動化故障恢復腳本

6. 性能優化與最佳實踐

6.1 系統級優化

6.2 故障案例深度復盤

7. 總結與展望

參考鏈接

關鍵詞標簽


摘要

作為一名在生產環境中摸爬滾打多年的運維工程師,我深知 502 Bad Gateway 錯誤對業務的致命影響。就在上周,我們的電商平臺在高峰期突然出現大量 502 錯誤,用戶投訴如雪花般飛來,業務損失不可估量。這次事故讓我深刻認識到,僅僅知道 502 是"網關錯誤"是遠遠不夠的,必須深入理解其背后的技術原理和排查方法。

在這次復盤中,我將從最基礎的 Nginx upstream 機制開始,逐步深入到 FastCGI 協議細節,再到超時參數的精確調優。我發現很多開發者對 502 錯誤的理解停留在表面,認為只是簡單的服務不可用,但實際上它涉及到網絡層、應用層、進程管理等多個維度的復雜交互。通過這次深度分析,我不僅找到了問題的根本原因,更重要的是建立了一套完整的 502 錯誤診斷和預防體系。

本文將帶你走過我的完整排查過程:從日志分析的蛛絲馬跡,到網絡抓包的技術細節,從配置參數的精確調優,到監控告警的體系建設。我會分享那些在官方文檔中找不到的實戰經驗,那些只有在生產環境中才能遇到的邊緣案例,以及那些能夠在關鍵時刻救命的調試技巧。無論你是剛接觸 Nginx 的新手,還是有一定經驗的運維工程師,這篇文章都將為你提供寶貴的實戰指導。

圖1:Nginx 502 錯誤產生流程圖

1. 502 錯誤的本質理解

1.1 HTTP 狀態碼深度解析

502 Bad Gateway 屬于 5xx 服務器錯誤類別,具體含義是網關或代理服務器從上游服務器接收到無效響應。在 Nginx 作為反向代理的場景中,這意味著 Nginx 無法從后端服務器獲得有效的 HTTP 響應。

# Nginx 配置示例:基礎 upstream 配置
upstream backend {# 服務器權重配置server 127.0.0.1:9000 weight=3 max_fails=2 fail_timeout=30s;server 127.0.0.1:9001 weight=2 max_fails=2 fail_timeout=30s;server 127.0.0.1:9002 weight=1 max_fails=2 fail_timeout=30s backup;# 負載均衡算法least_conn;# 健康檢查配置keepalive 32;keepalive_requests 100;keepalive_timeout 60s;
}server {listen 80;server_name example.com;location / {proxy_pass http://backend;# 關鍵超時參數proxy_connect_timeout 5s;proxy_send_timeout 60s;proxy_read_timeout 60s;# 錯誤處理proxy_next_upstream error timeout invalid_header http_500 http_502 http_503;proxy_next_upstream_tries 3;proxy_next_upstream_timeout 10s;}
}

這個配置展示了 Nginx upstream 的核心參數。max_failsfail_timeout 控制服務器健康檢查,proxy_next_upstream 系列參數決定了遇到錯誤時的重試策略。

1.2 502 錯誤的常見觸發場景

圖2:502 錯誤原因分布餅圖

根據我的生產環境統計,FastCGI 超時是導致 502 錯誤的主要原因,占比達到 35%。這也是本文重點關注的問題。

2. upstream 日志分析實戰

2.1 日志格式配置與關鍵信息提取

# 自定義日志格式,包含 upstream 詳細信息
log_format upstream_log '$remote_addr - $remote_user [$time_local] ''"$request" $status $body_bytes_sent ''"$http_referer" "$http_user_agent" ''rt=$request_time uct="$upstream_connect_time" ''uht="$upstream_header_time" urt="$upstream_response_time" ''uaddr="$upstream_addr" ustatus="$upstream_status"';server {access_log /var/log/nginx/upstream.log upstream_log;error_log /var/log/nginx/error.log debug;
}

關鍵參數解釋:

  • $upstream_connect_time: 與后端建立連接的時間
  • $upstream_header_time: 接收后端響應頭的時間
  • $upstream_response_time: 接收完整響應的時間
  • $upstream_addr: 實際處理請求的后端服務器地址
  • $upstream_status: 后端服務器返回的狀態碼

2.2 日志分析腳本

#!/bin/bash
# upstream_analyzer.sh - Nginx upstream 日志分析腳本LOG_FILE="/var/log/nginx/upstream.log"
ANALYSIS_PERIOD="1h"  # 分析最近1小時的日志echo "=== Nginx Upstream 502 錯誤分析報告 ==="
echo "分析時間段: 最近 $ANALYSIS_PERIOD"
echo "日志文件: $LOG_FILE"
echo# 統計 502 錯誤總數
error_502_count=$(grep " 502 " "$LOG_FILE" | wc -l)
echo "502 錯誤總數: $error_502_count"# 分析 502 錯誤的 upstream 響應時間分布
echo -e "\n=== 502 錯誤響應時間分析 ==="
grep " 502 " "$LOG_FILE" | \
awk '{# 提取 upstream_response_timematch($0, /urt="([^"]*)"/, arr)if (arr[1] != "-") {time = arr[1]if (time < 1) bucket="<1s"else if (time < 5) bucket="1-5s" else if (time < 10) bucket="5-10s"else if (time < 30) bucket="10-30s"else bucket=">30s"count[bucket]++}
}
END {for (b in count) {printf "%-8s: %d 次\n", b, count[b]}
}'# 分析最頻繁出現 502 的后端服務器
echo -e "\n=== 502 錯誤后端服務器分布 ==="
grep " 502 " "$LOG_FILE" | \
awk '{match($0, /uaddr="([^"]*)"/, arr)if (arr[1] != "-") {servers[arr[1]]++}
}
END {for (server in servers) {printf "%-20s: %d 次\n", server, servers[server]}
}' | sort -k2 -nr# 分析 502 錯誤的時間分布
echo -e "\n=== 502 錯誤時間分布(按小時) ==="
grep " 502 " "$LOG_FILE" | \
awk '{# 提取時間戳中的小時match($0, /\[([^\]]+)\]/, arr)split(arr[1], datetime, ":")hour = datetime[2]hours[hour]++
}
END {for (h in hours) {printf "%s:00 - %d 次\n", h, hours[h]}
}' | sort

這個腳本能夠快速分析 upstream 日志,識別 502 錯誤的模式和趨勢,為問題定位提供數據支撐。

3. FastCGI 協議深度剖析

3.1 FastCGI 通信機制

圖3:FastCGI 協議通信時序圖

3.2 PHP-FPM 配置優化

; /etc/php/8.1/fpm/pool.d/www.conf
; PHP-FPM 進程池配置優化[www]
; 進程管理器類型
pm = dynamic; 進程數量配置
pm.max_children = 50          ; 最大子進程數
pm.start_servers = 10         ; 啟動時的進程數
pm.min_spare_servers = 5      ; 最小空閑進程數
pm.max_spare_servers = 15     ; 最大空閑進程數; 進程生命周期管理
pm.max_requests = 1000        ; 每個進程處理的最大請求數
pm.process_idle_timeout = 60s ; 空閑進程超時時間; 超時配置 - 關鍵參數
request_timeout = 300s        ; 單個請求超時時間
request_terminate_timeout = 300s ; 強制終止超時時間; 慢日志配置
slowlog = /var/log/php8.1-fpm-slow.log
request_slowlog_timeout = 10s ; 慢查詢閾值; 狀態監控
pm.status_path = /fpm-status
ping.path = /fpm-ping
ping.response = pong; 安全配置
security.limit_extensions = .php .php3 .php4 .php5 .php7 .php8; 環境變量
env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

關鍵配置說明:

  • request_timeout: 控制單個請求的最大執行時間
  • pm.max_children: 影響并發處理能力
  • request_slowlog_timeout: 幫助識別慢查詢

3.3 Nginx FastCGI 參數調優

location ~ \.php$ {fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;fastcgi_index index.php;# FastCGI 超時參數 - 核心配置fastcgi_connect_timeout 60s;     # 連接超時fastcgi_send_timeout 300s;       # 發送超時fastcgi_read_timeout 300s;       # 讀取超時# 緩沖區配置fastcgi_buffer_size 64k;         # 響應頭緩沖區fastcgi_buffers 4 64k;           # 響應體緩沖區fastcgi_busy_buffers_size 128k;  # 忙碌緩沖區大小# 臨時文件配置fastcgi_temp_file_write_size 128k;fastcgi_max_temp_file_size 256m;# 錯誤處理fastcgi_intercept_errors on;fastcgi_ignore_client_abort off;# 參數傳遞fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;fastcgi_param QUERY_STRING $query_string;fastcgi_param REQUEST_METHOD $request_method;fastcgi_param CONTENT_TYPE $content_type;fastcgi_param CONTENT_LENGTH $content_length;# 自定義參數fastcgi_param HTTP_X_REAL_IP $remote_addr;fastcgi_param HTTP_X_FORWARDED_FOR $proxy_add_x_forwarded_for;fastcgi_param HTTP_X_FORWARDED_PROTO $scheme;
}

4. 超時參數精確調優

4.1 超時參數層級關系

圖4:超時參數層級關系架構圖

4.2 超時參數對比表

參數類型

配置位置

默認值

推薦值

影響范圍

備注

proxy_connect_timeout

Nginx

60s

5s

連接建立

過長會影響故障切換

fastcgi_connect_timeout

Nginx

60s

10s

FastCGI連接

本地連接通常很快

fastcgi_send_timeout

Nginx

60s

300s

數據發送

大文件上傳需要更長時間

fastcgi_read_timeout

Nginx

60s

300s

響應讀取

復雜業務邏輯需要更長時間

request_timeout

PHP-FPM

0

300s

請求處理

0表示無限制,生產環境必須設置

max_execution_time

PHP

30s

300s

腳本執行

影響所有PHP腳本

4.3 動態超時調整腳本

#!/bin/bash
# timeout_optimizer.sh - 根據業務負載動態調整超時參數# 配置文件路徑
NGINX_CONF="/etc/nginx/sites-available/default"
PHP_FPM_CONF="/etc/php/8.1/fpm/pool.d/www.conf"# 獲取當前系統負載
get_system_load() {local load_1min=$(uptime | awk -F'load average:' '{print $2}' | awk -F',' '{print $1}' | tr -d ' ')echo "$load_1min"
}# 獲取 PHP-FPM 進程狀態
get_fpm_status() {local active_processes=$(curl -s http://localhost/fpm-status | grep "active processes" | awk '{print $3}')local total_processes=$(curl -s http://localhost/fpm-status | grep "total processes" | awk '{print $3}')echo "$active_processes/$total_processes"
}# 分析最近的 502 錯誤率
analyze_502_rate() {local error_count=$(tail -1000 /var/log/nginx/access.log | grep " 502 " | wc -l)local total_requests=$(tail -1000 /var/log/nginx/access.log | wc -l)local error_rate=$(echo "scale=4; $error_count / $total_requests * 100" | bc)echo "$error_rate"
}# 動態調整超時參數
adjust_timeouts() {local load=$(get_system_load)local error_rate=$(analyze_502_rate)echo "當前系統負載: $load"echo "當前 502 錯誤率: $error_rate%"# 根據負載和錯誤率調整參數if (( $(echo "$load > 2.0" | bc -l) )) || (( $(echo "$error_rate > 5.0" | bc -l) )); thenecho "檢測到高負載或高錯誤率,增加超時時間..."# 備份原配置cp "$NGINX_CONF" "${NGINX_CONF}.backup.$(date +%Y%m%d_%H%M%S)"# 調整 Nginx 超時參數sed -i 's/fastcgi_read_timeout [^;]*/fastcgi_read_timeout 600s/' "$NGINX_CONF"sed -i 's/fastcgi_send_timeout [^;]*/fastcgi_send_timeout 600s/' "$NGINX_CONF"# 調整 PHP-FPM 超時參數sed -i 's/request_timeout = [^;]*/request_timeout = 600s/' "$PHP_FPM_CONF"# 重載配置nginx -s reloadsystemctl reload php8.1-fpmecho "超時參數已調整為 600s"elif (( $(echo "$load < 0.5" | bc -l) )) && (( $(echo "$error_rate < 1.0" | bc -l) )); thenecho "系統負載較低,恢復默認超時時間..."# 恢復默認配置sed -i 's/fastcgi_read_timeout [^;]*/fastcgi_read_timeout 300s/' "$NGINX_CONF"sed -i 's/fastcgi_send_timeout [^;]*/fastcgi_send_timeout 300s/' "$NGINX_CONF"sed -i 's/request_timeout = [^;]*/request_timeout = 300s/' "$PHP_FPM_CONF"# 重載配置nginx -s reloadsystemctl reload php8.1-fpmecho "超時參數已恢復為 300s"elseecho "系統狀態正常,保持當前配置"fi
}# 主函數
main() {echo "=== Nginx FastCGI 超時參數動態優化 ==="echo "執行時間: $(date)"echoadjust_timeoutsechoecho "優化完成,建議繼續監控系統狀態"
}# 執行主函數
main

5. 監控與告警體系

5.1 Prometheus 監控配置

# nginx-exporter.yml - Nginx 監控配置
global:scrape_interval: 15sevaluation_interval: 15srule_files:- "nginx_rules.yml"scrape_configs:- job_name: 'nginx'static_configs:- targets: ['localhost:9113']scrape_interval: 5smetrics_path: /metrics- job_name: 'php-fpm'static_configs:- targets: ['localhost:9253']scrape_interval: 5salerting:alertmanagers:- static_configs:- targets:- alertmanager:9093
# nginx_rules.yml - 告警規則配置
groups:- name: nginx_alertsrules:- alert: Nginx502ErrorHighexpr: rate(nginx_http_requests_total{status="502"}[5m]) > 0.1for: 2mlabels:severity: criticalannotations:summary: "Nginx 502 錯誤率過高"description: "502 錯誤率在過去 5 分鐘內超過 10%"- alert: FastCGITimeoutHighexpr: nginx_http_request_duration_seconds{quantile="0.95"} > 30for: 5mlabels:severity: warningannotations:summary: "FastCGI 響應時間過長"description: "95% 的請求響應時間超過 30 秒"- alert: PHPFPMProcessesHighexpr: phpfpm_active_processes / phpfpm_total_processes > 0.8for: 3mlabels:severity: warningannotations:summary: "PHP-FPM 進程使用率過高"description: "活躍進程數占總進程數的 80% 以上"

5.2 自動化故障恢復腳本

#!/bin/bash
# auto_recovery.sh - 502 錯誤自動恢復腳本LOG_FILE="/var/log/nginx/access.log"
ERROR_THRESHOLD=10  # 5分鐘內502錯誤超過10次觸發恢復
TIME_WINDOW=300     # 時間窗口:5分鐘# 檢查 502 錯誤頻率
check_502_frequency() {local current_time=$(date +%s)local start_time=$((current_time - TIME_WINDOW))# 統計時間窗口內的 502 錯誤local error_count=$(awk -v start="$start_time" '{# 解析時間戳gsub(/\[|\]/, "", $4)cmd = "date -d \"" $4 "\" +%s"cmd | getline timestampclose(cmd)if (timestamp >= start && $9 == "502") {count++}}END {print count + 0}' "$LOG_FILE")echo "$error_count"
}# 重啟 PHP-FPM 服務
restart_php_fpm() {echo "[$(date)] 檢測到大量 502 錯誤,重啟 PHP-FPM 服務..."# 記錄當前進程狀態echo "重啟前 PHP-FPM 狀態:" >> /var/log/auto_recovery.logsystemctl status php8.1-fpm >> /var/log/auto_recovery.log# 優雅重啟systemctl reload php8.1-fpm# 等待服務穩定sleep 10# 驗證服務狀態if systemctl is-active --quiet php8.1-fpm; thenecho "[$(date)] PHP-FPM 重啟成功" >> /var/log/auto_recovery.log# 發送通知curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \-d chat_id="$TELEGRAM_CHAT_ID" \-d text="🔧 自動恢復:PHP-FPM 服務已重啟,502 錯誤應該得到緩解"elseecho "[$(date)] PHP-FPM 重啟失敗" >> /var/log/auto_recovery.log# 發送緊急通知curl -X POST "https://api.telegram.org/bot$TELEGRAM_BOT_TOKEN/sendMessage" \-d chat_id="$TELEGRAM_CHAT_ID" \-d text="🚨 緊急:PHP-FPM 自動重啟失敗,需要人工介入"fi
}# 清理臨時文件和緩存
cleanup_temp_files() {echo "[$(date)] 清理臨時文件和緩存..."# 清理 PHP session 文件find /var/lib/php/sessions -name "sess_*" -mtime +1 -delete# 清理 Nginx 臨時文件find /var/cache/nginx -type f -mtime +1 -delete# 清理應用緩存(根據實際情況調整)if [ -d "/var/www/html/cache" ]; thenfind /var/www/html/cache -name "*.cache" -mtime +1 -deletefiecho "[$(date)] 臨時文件清理完成" >> /var/log/auto_recovery.log
}# 主監控循環
main_monitor() {while true; dolocal error_count=$(check_502_frequency)if [ "$error_count" -gt "$ERROR_THRESHOLD" ]; thenecho "[$(date)] 檢測到 $error_count 個 502 錯誤,啟動自動恢復..."# 執行恢復操作cleanup_temp_filesrestart_php_fpm# 等待恢復生效sleep 60fi# 每30秒檢查一次sleep 30done
}# 啟動監控
echo "[$(date)] 啟動 502 錯誤自動恢復監控..."
main_monitor

6. 性能優化與最佳實踐

6.1 系統級優化

#!/bin/bash
# system_optimization.sh - 系統級性能優化腳本# 內核參數優化
optimize_kernel_params() {echo "優化內核參數..."cat >> /etc/sysctl.conf << EOF
# 網絡連接優化
net.core.somaxconn = 65535
net.core.netdev_max_backlog = 5000
net.ipv4.tcp_max_syn_backlog = 65535
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 1200
net.ipv4.tcp_max_tw_buckets = 6000# 文件描述符限制
fs.file-max = 2097152
fs.nr_open = 2097152# 內存管理
vm.swappiness = 10
vm.dirty_ratio = 15
vm.dirty_background_ratio = 5
EOFsysctl -p
}# 文件描述符限制
optimize_file_limits() {echo "優化文件描述符限制..."cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
* soft nproc 65535
* hard nproc 65535
nginx soft nofile 65535
nginx hard nofile 65535
www-data soft nofile 65535
www-data hard nofile 65535
EOF
}# 執行優化
optimize_kernel_params
optimize_file_limitsecho "系統優化完成,建議重啟系統使所有配置生效"

6.2 故障案例深度復盤

"在技術的世界里,每一次故障都是成長的機會,每一次復盤都是智慧的積累。真正的工程師不是從不犯錯的人,而是能從錯誤中學習并建立防護機制的人。"

故障背景
2023年雙11期間,我們的電商平臺在流量高峰時段(20:00-22:00)出現大規模 502 錯誤,影響用戶下單和支付功能。

故障時間線

  • 19:55 - 流量開始激增,QPS從平時的500上升到2000
  • 20:03 - 開始出現零星的 502 錯誤
  • 20:08 - 502 錯誤率達到15%,用戶投訴激增
  • 20:12 - 緊急啟動故障處理流程
  • 20:25 - 問題定位完成,開始執行修復方案
  • 20:35 - 服務完全恢復正常

根本原因分析

  1. PHP-FPM 進程池配置不當pm.max_children = 20 無法應對高并發
  1. 數據庫連接池泄漏:應用代碼中存在未正確關閉的數據庫連接
  1. 緩存失效:Redis 緩存在高峰期失效,導致大量數據庫查詢
  1. 超時參數不匹配:FastCGI 超時時間短于數據庫查詢時間

7. 總結與展望

經過這次深度的 502 錯誤復盤,我深刻認識到運維工作的復雜性和系統性。從最初的日志分析,到深入的協議理解,再到系統級的優化配置,每一個環節都需要扎實的技術功底和豐富的實戰經驗。

在這個過程中,我最大的收獲是建立了一套完整的故障處理方法論:觀察 → 分析 → 定位 → 修復 → 預防。這不僅僅是技術層面的提升,更是思維方式的轉變。我們不能滿足于"頭痛醫頭,腳痛醫腳"的臨時修復,而要從系統架構的角度思考問題的根本原因。

FastCGI 超時問題看似簡單,實際上涉及到網絡層、應用層、數據庫層的復雜交互。通過這次復盤,我建立了從監控告警到自動恢復的完整體系,大大提升了系統的穩定性和可用性。更重要的是,我學會了如何將技術問題轉化為可量化的業務指標,讓技術優化真正服務于業務目標。

未來,隨著微服務架構和云原生技術的普及,502 錯誤的排查會變得更加復雜。我們需要掌握更多的工具和方法,比如分布式鏈路追蹤、服務網格監控、容器化部署等。但無論技術如何發展,扎實的基礎知識和系統性的思維方式永遠是我們最寶貴的財富。

技術的路上沒有捷徑,只有不斷的學習和實踐。每一次故障都是成長的機會,每一次優化都是能力的提升。讓我們在技術的海洋中繼續探索,在代碼的世界里追求卓越,用我們的專業能力為用戶創造更好的體驗,為業務創造更大的價值。


我是摘星!如果這篇文章在你的技術成長路上留下了印記
👁? 【關注】與我一起探索技術的無限可能,見證每一次突破
👍 【點贊】為優質技術內容點亮明燈,傳遞知識的力量
🔖 【收藏】將精華內容珍藏,隨時回顧技術要點
💬 【評論】分享你的獨特見解,讓思維碰撞出智慧火花
🗳? 【投票】用你的選擇為技術社區貢獻一份力量
技術路漫漫,讓我們攜手前行,在代碼的世界里摘取屬于程序員的那片星辰大海!

參考鏈接

  1. Nginx官方文檔 - upstream模塊
  1. PHP-FPM配置詳解
  1. FastCGI協議規范
  1. Prometheus監控最佳實踐
  1. Linux系統性能調優指南

關鍵詞標簽

#Nginx #502錯誤 #FastCGI #PHP-FPM #性能優化

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

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

相關文章

Dreamore AI-解讀并描繪你的夢境

本文轉載自&#xff1a;Dreamore AI-解讀并描繪你的夢境 - Hello123工具導航 ** 一、&#x1f319; 初識 Dreamore AI&#xff1a;你的智能夢境伴侶 Dreamore AI 是一款超有趣的AI 夢境解析與可視化工具&#xff0c;它巧妙地把夢境解讀和圖像生成這兩大功能融為一體。你只需要…

集合-單列集合(Collection)

List系列集合&#xff1a;添加的元素是有序、可重復、有索引的。Set系列集合&#xff1a;添加的元素是無序、不重復、無索引的。代碼&#xff1a;public class A01_CollectionDemo1 {public static void main(String[] args) {/** 注意點&#xff1a;Collection是一個接口&…

寫一個 RTX 5080 上的 cuda gemm fp16

1. cpu 計算 fp16 四則運算由于會用到cpu 的gemm 與 gpu gemm 的對比驗證&#xff0c;所以&#xff0c;這里稍微解釋一下 cpu 計算fp16 gemm 的過程。這里為了簡化理解&#xff0c;cpu 中不使用 avx 相關的 fp16 運算器&#xff0c;而是直接使用 cpu 原先的 ALU 功能。這里使用…

web滲透PHP反序列化漏洞

web滲透PHP反序列化漏洞1&#xff09;PHP反序列化漏洞反序列我們可以控制對象中的值進行攻擊O:1:"C":1:{s:3:"cmd";s:8:"ipconfig";}http://127.0.0.1/1.php?xO:1:%22C%22:1:{s:3:%22cmd%22;s:3:%22ver%22;}常見的反序列化魔術方法&#xff1a;…

FPGA學習筆記——SPI讀寫FLASH

目錄 一、任務 二、需求分析 三、Visio圖 四、具體分析 五、IP核配置 六、代碼 七、實驗現象 一、任務 實驗任務&#xff1a; 1.按下按鍵key1&#xff0c;開啟讀ID操作&#xff0c;將讀出來的ID&#xff0c;通過串口發送至PC端顯示&#xff0c;顯示格式為“讀ID:XX-XX-XX…

一句話PHP木馬——Web滲透測試中的隱形殺手

文章目錄前言什么是"一句話木馬"&#xff1f;常見變種與隱藏技巧1. 函數變種2. 加密混淆3. 變量拆分4. 特殊字符編碼上傳技巧與繞過防御常見上傳繞過技巧檢測與防御措施1. 服務器配置2. 上傳驗證3. 代碼審計4. Web應用防火墻(WAF)實戰案例分析深度思考&#xff1a;安…

房屋租賃系統|基于SpringBoot和Vue的房屋租賃系統(源碼+數據庫+文檔)

項目介紹 : SpringbootMavenMybatis PlusVue Element UIMysql 開發的前后端分離的房屋租賃系統&#xff0c;項目分為管理端和用戶端以及房主端 項目演示: 基于SpringBoot和Vue的房屋租賃系統 運行環境: 最好是java jdk 1.8&#xff0c;我們在這個平臺上運行的。其他版本理論上…

C++動態規劃——經典題目(下)

上一篇文章沒有寫全&#xff0c;這篇再補兩道題酒鬼#include<bits/stdc.h> using namespace std; int dp[110][10]{0}; int a[1010]{0}; int n,m; int main() {cin>>n;dp[0][0]0;dp[1][0]0;dp[1][1]a[1];for(int i1;i<n;i){cin>>a[i];}for(int i2;i<n;…

介紹Ansible和實施Ansible PlayBook

第一章 介紹Ansible1. ansible的特點是什么&#xff1f;a. ansible使用yaml語法&#xff0c;語言格式簡潔明了。b. ansible不需要代理&#xff0c;僅僅通過SSH遠程連接就可以控制受管主機&#xff0c;是一種非常便捷、安全的方法。c. Ansible的功能強大&#xff0c;可以利用ans…

ComfyUI驅動的流程化大體量程序開發:構建上下文隔離的穩定系統

ComfyUI驅動的流程化大體量程序開發&#xff1a;構建上下文隔離的穩定系統 在現代軟件工程中&#xff0c;隨著程序體量的不斷增長&#xff0c;上下文污染&#xff08;Context Pollution&#xff09;和狀態依賴混亂已成為導致系統不穩定、調試困難、維護成本高昂的核心問題。尤…

基于SpringBoot的協同過濾余弦函數的美食推薦系統(爬蟲Python)的設計與實現

基于SpringBootvue的協同過濾余弦函數的個性化美食(商城)推薦系統(爬蟲Python)的設計與實現 1、項目的設計初衷&#xff1a; 隨著互聯網技術的快速發展和人們生活水平的不斷提高&#xff0c;傳統的美食消費模式已經無法滿足現代消費者日益個性化和多樣化的需求。在信息爆炸的時…

機器視覺學習-day19-圖像亮度變換

1 亮度和對比度亮度&#xff1a;圖像像素的整體強度&#xff0c;亮度提高就是所有的像素加一個固定值。對比度&#xff1a;當對比度提高時&#xff0c;圖像的暗部與亮部的差值會變大。OpenCV調整圖像亮度和對比度的公式使用一個&#xff1a;代碼實踐步驟&#xff1a;圖片輸入→…

redis詳解 (最開始寫博客是寫redis 紀念日在寫一篇redis)

Redis技術 1. Redis簡介 定義與核心特性&#xff08;內存數據庫、鍵值存儲&#xff09; Redis&#xff08;Remote Dictionary Server&#xff0c;遠程字典服務&#xff09;是一個開源的、基于內存的高性能鍵值存儲數據庫&#xff0c;由 Salvatore Sanfilippo 編寫&#xff0c;用…

【MD文本編輯器Typora】實用工具推薦之——輕量級 Markdown 編輯器Typora下載安裝使用教程 辦公學習神器

本文將向大家介紹一款輕量級 Markdown 編輯器——Typora&#xff0c;并詳細說明其下載、安裝與基本使用方法。 引言&#xff1a; MD 格式文檔指的是使用 Markdown 語言編寫的文本文件&#xff0c;其文件擴展名為 .md。 Markdown 是一種由約翰格魯伯&#xff08;John Gruber&am…

Vue2+Element 初學

大致實現以上效果 一、左側自動加載菜單NavMenu.vue 菜單組件&#xff0c;簡單調整了一下菜單直接的距離&#xff0c;代碼如下&#xff1a;<template><div><template v-for"item in menus"><!-- 3、有子菜單&#xff0c;設置不同的 key 和 inde…

Shell編程知識整理

文章目錄一、Shell介紹1.1 簡介1.2 Shell解釋器二、快速入門2.1 編寫Shell腳本2.2 執行Shell腳本2.3 小結三、Shell程序&#xff1a;變量3.1 語法格式3.2 變量使用3.3 變量類型四、字符串4.1 單引號4.2 雙引號4.3 獲取字符串長度4.4 提取子字符串4.5 查找子字符串五、Shell程序…

AI與低代碼的激情碰撞:微軟Power Platform融合GPT-4實戰之旅

引言 在當今數字化飛速發展的時代,AI 與低代碼技術正成為推動企業變革的核心力量。AI 憑借其強大的數據分析、預測和決策能力,為企業提供了智能化的解決方案;而低代碼開發平臺則以其可視化、快速迭代的特性,大大降低了應用開發的門檻和成本。這兩者的結合,開啟了一場全新的…

豆包1.6+PromptPilot實戰:構建智能品牌評價情感分類系統的技術探索

豆包1.6PromptPilot實戰&#xff1a;構建智能品牌評價情感分類系統的技術探索 &#x1f31f; Hello&#xff0c;我是摘星&#xff01; &#x1f308; 在彩虹般絢爛的技術棧中&#xff0c;我是那個永不停歇的色彩收集者。 &#x1f98b; 每一個優化都是我培育的花朵&#xff0c;…

如何在VsCode中使用git(免敲命令版本!保姆級!建議收藏!)

目錄 文章目錄 前言 一、電腦安裝git 二、在vscode安裝git插件 三、克隆倉庫 四、提交代碼 五、創建分支、切換分支、合并分支 1、創建分支 2、切換分支 3、合并分支 六、創建標簽和推送標簽 七、解決沖突 八、拉取、抓取倉庫 九、Reivew代碼 總結 前言 隨著Vscode的推出和普及…

3.kafka常用命令

在 0.9.0.0 之后的 Kafka&#xff0c;出現了幾個新變動&#xff0c;一個是在 Server 端增加了 GroupCoordinator 這個角色&#xff0c;另一個較大的變動是將 topic 的 offset 信息由之前存儲在 zookeeper 上改為存儲到一個特殊的 topic&#xff08;__consumer_offsets&#xff…