Nginx反向代理與緩存實現

1. Nginx反向代理核心配置解析

1.1 反向代理基礎配置結構

Nginx反向代理的基礎配置結構主要包括server塊和location塊的配置。一個典型的反向代理配置示例如下:

server {listen 80;server_name example.com;location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}
}
upstream backend_servers {server backend1.example.com:8080;server backend2.example.com:8080;
}

在這個配置中,server塊定義了一個虛擬服務器,listen 80指定監聽80端口,server_name指定服務器名稱。location /匹配所有請求,proxy_pass將請求轉發到名為backend_servers的upstream組。proxy_set_header指令用于設置轉發到后端服務器的HTTP頭信息。

1.2 location指令的精準路由匹配

location指令支持多種匹配模式,可以實現精準的路由控制。常見匹配方式包括:

# 主站
location / {proxy_pass http://www.xxxx.com;proxy_redirect off;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;
}# a站目錄
location ~ ^/(search|app|game|qp|dpscpi|news|zt)/.*$ {proxy_pass http://soft.xxx.com;proxy_set_header Host $host;
}# b站目錄
location ~ ^/(gfapi|games|soft|zti|ssou|xp|sitemapv1).*$ {proxy_pass http://other.xxx.com;
}

正則表達式匹配使用~符號,^表示字符串開始,$表示字符串結束。這種配置可以根據URL路徑將請求分發到不同的后端服務器。

1.3 upstream模塊的負載均衡實現

upstream模塊用于定義一組后端服務器,實現負載均衡。Nginx支持多種負載均衡算法:

upstream backend {# 默認輪詢server backend1.example.com;server backend2.example.com;# 加權輪詢server backend3.example.com weight=3;# IP哈希ip_hash;# 最少連接least_conn;# 備份服務器server backup.example.com backup;
}

權重(weight)參數表示權值,權值越高被分配到的幾率越大。ip_hash保證同一客戶端IP的請求總是分配到同一后端服務器,適用于需要會話保持的場景。

1.4 代理頭信息的關鍵配置參數

反向代理中正確處理HTTP頭信息至關重要,常見配置參數包括:

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;proxy_redirect off;
proxy_http_version 1.1;
proxy_connect_timeout 60;
proxy_read_timeout 60;
proxy_send_timeout 60;

這些配置確保后端服務器能獲取客戶端真實IP(X-Real-IP),了解請求是通過HTTP還是HTTPS(X-Forwarded-Proto)發起的。超時參數(proxy_connect_timeout, proxy_read_timeout, proxy_send_timeout)防止因后端響應慢導致連接堆積。

2. Nginx緩存機制深度剖析

2.1 緩存區域(proxy_cache_path)配置詳解

Nginx的proxy_cache_path指令用于定義緩存路徑和基本參數,其完整語法為:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

其中關鍵參數說明:

  • /var/cache/nginx:緩存文件存儲路徑
  • levels=1:2:定義緩存目錄的層級結構(1:2表示兩級子目錄)
  • keys_zone=my_cache:10m:定義共享內存區域名稱和大小(10MB用于存儲緩存鍵)
  • inactive=60m:60分鐘內未被訪問的緩存將被刪除
  • use_temp_path=off:禁用臨時文件存儲路徑

緩存區域的內存分配采用keys_zone機制,每個緩存條目約消耗約800字節內存,因此10MB內存空間可支持約12,800個緩存鍵。實際緩存內容存儲在磁盤上,通過max_size參數可限制磁盤緩存總量(如max_size=10g)。

2.2 緩存有效期與更新策略

Nginx通過proxy_cache_valid指令設置不同響應狀態碼的緩存時間:

proxy_cache_valid 200 302 10m;  # 成功響應緩存10分鐘
proxy_cache_valid 404      1m;  # 404錯誤緩存1分鐘
proxy_cache_valid any       1m;  # 其他狀態緩存1分鐘

緩存更新機制包含三種模式:

  1. 被動更新:基于inactive參數(如60m)自動清理未訪問緩存
  2. 主動清理:通過第三方模塊ngx_cache_purge實現指定URL緩存清除
  3. 條件更新:使用proxy_cache_use_stale指令在源服務器不可用時返回陳舊緩存:
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504

2.3 緩存鍵設計的最佳實踐

proxy_cache_key指令決定緩存項的唯一標識,默認配置為:

proxy_cache_key "$scheme$request_method$host$request_uri";

這表示緩存鍵包含協議類型(http/https)、請求方法、主機名和完整URI。對于動態內容,建議增加$args變量包含查詢參數:

proxy_cache_key "$scheme$request_method$host$request_uri$args"

在負載均衡場景下,如需保持會話一致性,可添加$cookie_jsessionid等會話標識到緩存鍵。但需注意緩存鍵過長會導致內存消耗增加,需在keys_zone中預留足夠空間。

2.4 緩存狀態監控與調試技巧

Nginx提供$upstream_cache_status變量記錄緩存命中狀態,其可能取值包括:

  • HIT:緩存命中
  • MISS:緩存未命中
  • EXPIRED:緩存已過期
  • STALE:使用陳舊緩存
  • UPDATING:緩存正在更新

監控配置示例:

location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
}

通過訪問該接口可獲取活躍連接數(Active)、總請求數(Requests)等關鍵指標。結合日志分析工具(如GoAccess)可統計緩存命中率,優化inactive和max_size參數。

3. 性能優化關鍵配置

3.1 gzip壓縮與傳輸優化

Nginx的gzip壓縮功能通過減少傳輸數據量顯著提升網頁加載速度。在http模塊中啟用gzip的基本配置包括:

gzip on;
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_types text/plain text/css application/x-javascript;

關鍵參數中,gzip_min_length設置僅壓縮大于1KB的文件,避免小文件壓縮帶來的性能損耗;gzip_buffers分配4個16KB內存塊用于存儲壓縮數據流。對于現代Web應用,建議將gzip_types擴展為包含application/jsonapplication/javascript等MIME類型。需注意,默認配置下Nginx會跳過已壓縮的圖片/視頻文件,這是為避免重復壓縮消耗CPU資源。

3.2 連接池與keepalive優化

keepalive機制通過復用TCP連接減少握手開銷,典型配置如下:

keepalive_timeout 65;
keepalive_requests 1000;

keepalive_timeout設定連接保持時間為65秒,超過空閑時間后關閉連接;keepalive_requests限制單個連接最多處理1000個請求后強制重建連接,防止內存泄漏。對于高并發場景,建議將worker_connections調至10240,并配合multi_accept on實現單個worker進程同時接受多個新連接。需注意,過長的keepalive時間會導致服務器資源占用上升,需根據實際業務訪問頻率調整。

3.3 靜態資源緩存策略

針對CSS/JS/圖片等靜態資源,通過expires指令設置瀏覽器緩存:

location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";
}

該配置使客戶端緩存靜態資源30天,Cache-Control: public允許代理服務器緩存資源,no-transform禁止中間節點修改內容。對于版本化靜態資源(如帶hash的文件名),可進一步延長緩存時間至1年并添加版本查詢參數。Nginx還會自動發送Last-ModifiedETag頭實現條件請求,當資源未修改時返回304狀態碼減少傳輸量。

3.4 緩沖區大小與超時參數調優

代理緩沖區配置直接影響大文件傳輸穩定性,推薦值:

proxy_buffer_size 16k;
proxy_buffers 4 64k;
proxy_busy_buffers_size 128k;

proxy_buffer_size設置頭緩沖區為16KB,proxy_buffers分配4個64KB緩沖區存儲響應內容。對于視頻等大型文件,需增加proxy_max_temp_file_size防止臨時文件過大。超時參數方面,client_header_timeout建議設為5秒防止慢速攻擊,proxy_read_timeout根據后端處理能力調整(通常60-300秒)。特別注意tcp_nodelay on禁用Nagle算法,可提升小數據包實時性。

4. 安全防護配置方案

4.1 反向代理下的XSS防護

Nginx反向代理環境下XSS防護的核心在于HTTP頭部的安全策略配置。通過添加以下安全頭部可有效緩解XSS攻擊風險:

  • X-XSS-Protection "1; mode=block":強制瀏覽器啟用XSS過濾機制
  • Content-Security-Policy "default-src 'self'":限制資源加載源防止注入
  • X-Content-Type-Options "nosniff":阻止MIME類型嗅探攻擊

關鍵配置示例:

add_header X-Frame-Options "SAMEORIGIN";
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options "nosniff";
add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'";
add_header Referrer-Policy "strict-origin-when-cross-origin";

該配置通過五層防護頭組合,既防止點擊劫持又限制腳本執行上下文。需注意CSP策略需根據實際業務資源加載需求調整白名單范圍。

4.2 請求限速與防DDoS配置

Nginx的限流模塊提供三種防護維度:

  1. 連接數限制:通過limit_conn_zone定義共享內存區(如10MB存儲約12,800個IP的狀態)
  2. 請求速率限制:limit_req_zone設置每秒請求閾值(如10r/s)
  3. 帶寬限制:limit_rate控制單個連接傳輸速度

典型DDoS防護配置:

limit_conn_zone $binary_remote_addr zone=conn_limit:10m;
limit_req_zone $binary_remote_addr zone=req_limit:10m rate=10r/s;server {limit_conn conn_limit 5;limit_req zone=req_limit burst=20 nodelay;
}

此配置實現IP級連接數(5個)和請求速率(峰值20個/秒)雙重限制。對于突發流量,burst參數允許短暫超限,而nodelay立即執行懲罰策略。

4.3 敏感信息過濾與防護

反向代理需特別關注三類敏感信息防護:

  1. 頭信息過濾:移除后端服務器版本信息
    proxy_hide_header X-Powered-By;
    server_tokens off;
    
  2. 方法限制:禁用高風險HTTP方法
    if ($request_method !~ ^(GET|HEAD|POST)$) {return 405;
    }
    
  3. 數據泄露防護:過濾代理響應中的敏感字段

SSL/TLS強化配置建議:

ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256';

該配置禁用老舊協議并啟用強加密套件,結合HSTS頭可有效防止降級攻擊。

4.4 訪問日志分析與異常檢測

Nginx日志監控的關鍵指標包括:

  • 安全事件指標:4xx/5xx狀態碼比率反映攻擊嘗試
  • 性能基線指標$request_time超過500ms的請求可能遭遇資源耗盡攻擊
  • 流量突變檢測:通過accepts/handled連接數對比識別異常流量

日志分析配置優化:

log_format security '$remote_addr - $status - "$request" - $http_user_agent';
access_log /var/log/nginx/security.log security buffer=32k flush=5s;

使用獨立日志格式記錄安全相關數據,緩沖區設置平衡I/O性能與實時性。建議結合實時分析工具監控$upstream_cache_status的MISS率突變,這可能預示緩存穿透攻擊。

5. 監控與故障排查

5.1 nginx_status模塊的監控實現

Nginx的stub_status模塊提供了基礎的性能監控能力,通過配置location /nginx_status可暴露關鍵指標。典型配置如下:

location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
}

該配置會返回包含以下數據的純文本響應:

  • Active connections:當前活躍客戶端連接數
  • server accepts handled requests:總連接數、成功連接數、總請求數
  • Reading:正在讀取請求頭的連接數
  • Writing:正在發送響應的連接數
  • Waiting:保持空閑的連接數

對于生產環境,建議通過Nginx Exporter將數據轉換為Prometheus可讀取的格式,配合Grafana實現可視化監控。關鍵指標包括每秒請求數(Requests)、連接成功率(conns_opened_percent)和丟棄連接數(conns_dropped_qps)。

5.2 錯誤日志分析與常見問題

Nginx錯誤日志默認位于/var/log/nginx/error.log,需重點關注以下模式:

  1. connect() failed類錯誤:反映后端服務連接問題,需檢查proxy_connect_timeout(默認60秒)是否過短
  2. upstream timed out:需調整proxy_read_timeout(默認60秒)和proxy_send_timeout(默認60秒)
  3. cache loader進程報錯:表明緩存索引重建異常,需檢查proxy_cache_path目錄權限

對于訪問日志,推薦使用log_format定義包含$upstream_cache_status的定制格式,可統計緩存命中率:

log_format cache '***$time_local ***$upstream_cache_status ***"$request"';

通過分析MISS/HIT/EXPIRED等狀態占比,可評估緩存效果。

5.3 性能瓶頸定位工具

系統級工具組合應用:

  1. top:監控Nginx worker進程的CPU/內存占用,異常值可能表明配置不當
  2. vmstat 1:觀察系統上下文切換(cs)和阻塞進程(b),若超過5000/s需優化
  3. tcpdump:抓包分析網絡延遲,命令如:
tcpdump -i eth0 -nn -s 0 -w nginx.pcap port 80

Nginx特有指標調優:

  • Worker進程數:應等于CPU核心數,通過worker_processes auto設置
  • 文件描述符限制:需確保worker_rlimit_nofile大于worker_connections(建議2:1比例)
  • 啟用sendfiletcp_nopush可加速靜態文件傳輸

5.4 緩存命中率監控方案

完整的緩存監控體系包含三個維度:

  1. 實時狀態:通過stub_status接口獲取瞬時指標
  2. 日志分析:解析$upstream_cache_status變量,統計命中率趨勢
  3. 存儲檢查:監控proxy_cache_path目錄大小,避免超過max_size導致頻繁淘汰

典型問題處理流程:

  • 低命中率:檢查proxy_cache_key是否包含過多變量(如$args),或proxy_cache_valid時間過短
  • 高磁盤I/O:增加keys_zone內存大小(如從10MB調整為100MB),減少索引磁盤讀寫
  • 緩存穿透:配置proxy_cache_lock on,避免并發請求擊穿后端

6. 高級應用場景實現

6.1 多級緩存架構設計

Nginx的多級緩存架構通過分層緩存策略實現性能優化,其核心在于合理配置proxy_cache_path指令。該指令支持定義緩存路徑、內存區域大小及失效時間等關鍵參數,例如:

proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=my_cache:10m inactive=60m use_temp_path=off;

此配置中,levels=1:2指定兩級目錄結構以提升文件檢索效率,keys_zone=my_cache:10m定義10MB共享內存區域存儲緩存索引,inactive=60m設置60分鐘未被訪問的緩存自動清理。實際應用中可結合max_size參數限制磁盤緩存總量(如10GB),防止存儲溢出。

多級緩存的典型實現包含以下層級:

  1. 邊緣緩存:利用Nginx的proxy_cache存儲靜態資源,通過expires 30d等指令設置長期緩存策略;
  2. 內存緩存:通過keys_zone配置共享內存區域,加速熱點數據的索引查詢;
  3. 后端緩存:與Redis等內存數據庫聯動,處理動態內容緩存。這種分層結構可減少約70%的后端請求量,顯著降低源服務器負載。

6.2 動態內容緩存策略

動態內容緩存需解決數據實時性與性能的矛盾。Nginx通過proxy_cache_valid指令實現差異化緩存周期,例如:

proxy_cache_valid 200 302 10m;
proxy_cache_valid 404      1m;

該配置對HTTP 200/302響應緩存10分鐘,404響應僅緩存1分鐘。針對API等動態接口,可通過proxy_cache_key "$scheme$request_method$host$request_uri$args"構建包含請求參數的緩存鍵,確保不同參數組合的響應獨立緩存。

對于實時性要求高的場景,可采用以下方案:

  1. 被動更新:設置較短的緩存時間(如1分鐘),配合proxy_cache_use_stale指令在更新失敗時返回陳舊數據;
  2. 主動清除:通過第三方模塊ngx_cache_purge實現按URL清除緩存,例如location ~ /purge(/.*)配置清理路徑;
  3. 條件緩存:利用proxy_cache_bypass指令跳過特定請求的緩存,如帶認證頭的API請求。

6.3 灰度發布與AB測試實現

Nginx的灰度發布主要通過upstream模塊和變量匹配實現。基礎配置如下:

upstream production {server backend1:8080 weight=9;server backend2:8080 weight=1;
}

此配置將90%流量導向backend1,10%導向backend2實現流量分流。更精細的控制可通過map模塊實現,例如根據Cookie值分配流量:

map $cookie_gray $group {default "production";"true"  "experiment";
}upstream experiment {server backend3:8080;
}

實際部署時,結合proxy_pass http://$group實現動態路由。對于AB測試,可通過split_clients模塊隨機分配用戶:

split_clients "${remote_addr}${ua}" $variant {50%   "A";50%   "B";
}

該配置基于客戶端IP和User-Agent哈希值均分流量,確保測試組穩定性。

6.4 微服務網關集成方案

Nginx作為微服務網關的核心能力包括路由轉發、負載均衡和協議轉換。典型配置通過location匹配服務路徑:

location /user-service/ {proxy_pass http://user-service/api/;proxy_set_header X-Real-IP $remote_addr;
}

微服務集成需重點關注:

  1. 服務發現:結合Consul等工具動態更新upstream,例如通過consul-template自動生成服務節點列表;
  2. 熔斷機制:利用proxy_next_upstream指令配置故障轉移策略,如超時或5xx錯誤時切換后端節點;
  3. 監控集成:通過stub_status模塊暴露連接數、請求數等指標,與Prometheus等監控系統對接。

在Kubernetes環境中,Nginx Ingress Controller可實現更細粒度的流量管理,支持基于Header、Cookie的Canary發布和流量鏡像等高級特性。性能優化方面,建議啟用HTTP/2協議并調整keepalive參數至keepalive_requests 1000,提升長連接復用率。

7. 最佳實踐與未來演進

7.1 生產環境配置檢查清單

Nginx生產環境配置需涵蓋核心功能模塊與安全策略,以下為關鍵檢查項:

  1. 反向代理基礎配置
    確保proxy_pass指向正確的后端服務器組,并配置必要的頭信息轉發:

    location / {proxy_pass http://backend_servers;proxy_set_header Host $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
    

    proxy_set_header指令確保后端服務器獲取客戶端真實IP和協議信息。

  2. 負載均衡健康檢查
    Upstream模塊需配置max_failsfail_timeout參數,例如:

    upstream backend_servers {server backend1.example.com:8080 max_fails=2 fail_timeout=30s;server backend2.example.com:8080 weight=3;
    }
    

    權重(weight)和故障檢測參數可提升服務可用性。

  3. 緩存策略驗證
    靜態資源應啟用強緩存,動態內容需設置合理的過期時間:

    location ~* \.(jpg|css|js)$ {expires 30d;add_header Cache-Control "public, no-transform";
    }
    

    動態內容緩存需結合proxy_cache_valid按狀態碼差異化配置。

7.2 版本升級與兼容性考量

  1. 協議支持
    升級至Nginx 1.21+版本可默認啟用TLSv1.3,需在SSL配置中明確聲明:

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256';
    

    此配置提升加密強度同時保持向后兼容。

  2. 模塊兼容性
    第三方模塊如ngx_cache_purge需驗證與主版本兼容性。例如,清除緩存需匹配proxy_cache_path定義的zone名稱:

    location ~ /purge(/.*) {proxy_cache_purge cache_one $host$1$is_args$args;
    }
    

    若版本不兼容可能導致緩存清理失效。

  3. 配置遷移
    舊版worker_connections參數若超過Linux系統ulimit -n限制,需同步調整系統級文件描述符限制。

7.3 云原生環境下的適配方案

  1. 動態服務發現
    在Kubernetes環境中,通過DNS解析實現后端服務自動發現:

    resolver kube-dns.kube-system.svc.cluster.local valid=10s;
    upstream k8s_services {server service-1.namespace.svc.cluster.local resolve;server service-2.namespace.svc.cluster.local resolve;
    }
    

    resolver指令確保Pod IP變化時及時更新。

  2. Sidecar代理集成
    與Istio等Service Mesh集成時,需關閉Nginx的負載均衡功能以避免雙重代理:

    proxy_pass http://localhost:15001;
    proxy_redirect off;
    proxy_buffering off;
    

    此配置將流量控制權移交至Sidecar。

  3. 彈性伸縮支持
    配置共享內存區域(keys_zone)時需預留擴容空間:

    proxy_cache_path /data/nginx/cache levels=1:2 keys_zone=shared_cache:100m max_size=10G;
    

    內存區域大小應隨Pod副本數線性增長。

7.4 性能基準測試方法論

  1. 壓力測試工具配置
    使用wrk模擬高并發請求,重點監控連接成功率與錯誤率:

    wrk -t12 -c400 -d30s http://example.com --latency
    

    線程數(-t)應匹配Nginx的worker_processes設置。

  2. 關鍵指標采集
    通過stub_status模塊獲取實時性能數據:

    location /nginx_status {stub_status on;access_log off;allow 127.0.0.1;deny all;
    }
    

    輸出包含Active connectionsRequests per second等核心指標。

  3. 瓶頸分析維度

    • CPU密集型:檢查worker_cpu_affinity綁定是否均衡
    • I/O密集型:驗證sendfileaio指令啟用狀態
    • 內存瓶頸:監控keys_zone內存使用率

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

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

相關文章

第2節 如何計算神經網絡的參數:AI入門核心邏輯詳解

?? 核心目標:找到最佳w和b! 上期咱們聊了神經網絡就是復雜的"線性變換+激活函數套娃",今天的重頭戲就是:怎么算出讓模型完美擬合數據的w(權重)和b(偏置)!先從最簡單的線性函數說起,一步步揭開神秘面紗 那么如何計算w和b呢?首先明確我們需要的w和b能夠讓…

AutoSar AP平臺功能組并行運行原理

在 AUTOSAR Adaptive Platform(AP)中,同一個機器上可以同時運行多個功能組(Function Groups),即使是在單核CPU環境下。其調度機制與進程調度既相似又存在關鍵差異,具體實現如下:功能…

linux服務器查看某個服務啟動,運行的時間

一 查看服務啟動運行時間1.1 查看啟動時間查看啟動時間&#xff08;精確到秒&#xff09;&#xff1a;ps -p <PID> -o lstart例子如下&#xff1a;ps -p 1234 -o lstart1.2 查詢運行時長ps -p <PID> -o etimeps -p 1234 -o etime1.3 總結

【JS 性能】前端性能優化基石:深入理解防抖(Debounce)與節流(Throttle)

【JS 性能】前端性能優化基石&#xff1a;深入理解防抖&#xff08;Debounce&#xff09;與節流&#xff08;Throttle&#xff09; 所屬專欄&#xff1a; 《前端小技巧集合&#xff1a;讓你的代碼更優雅高效》 上一篇&#xff1a; 【JS 語法】代碼整潔之道&#xff1a;解構賦值…

線性代數 · 直觀理解矩陣 | 空間變換 / 特征值 / 特征向量

注&#xff1a;本文為 “線性代數 直觀理解矩陣” 相關合輯。 英文引文&#xff0c;機翻未校。 如有內容異常&#xff0c;請看原文。 Understanding matrices intuitively, part 1 直觀理解矩陣&#xff08;第一部分&#xff09; 333 March 201120112011 William Gould Intr…

設計模式基礎概念(行為模式):策略模式

概述 策略模式是一種行為設計模式&#xff0c; 它能讓你定義一系列算法&#xff0c; 并將每種算法分別放入獨立的類中&#xff0c; 以使算法的對象能夠相互替換。 主要目的是通過定義相似的算法&#xff0c;替換if else 語句寫法&#xff0c;并且可以隨時相互替換 結構示例 策略…

功能組和功能組狀態的概念關系和區別

在 AUTOSAR Adaptive Platform 中&#xff0c;功能組&#xff08;Function Group&#xff0c;FG&#xff09; 和 功能組狀態&#xff08;Function Group State&#xff09; 是狀態管理&#xff08;SM&#xff09;的核心概念&#xff0c;二者構成靜態邏輯單元與動態行為模式的協…

力扣326:3的冪

力扣326:3的冪題目思路代碼題目 給定一個整數&#xff0c;寫一個函數來判斷它是否是 3 的冪次方。如果是&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 整數 n 是 3 的冪次方需滿足&#xff1a;存在整數 x 使得 n 3^x 思路 想要是三的冪次方的話將這個…

前瞻性技術驅動,楓清科技助力制造企業借助大模型完成生產力轉化

麥肯錫于近期發布的《技術趨勢展望2025》更清晰地定義了AI的角色與發展方向。報告在不止一個章節總結了基礎模型加速小型化的趨勢&#xff0c;多模態融合成為主流&#xff1a;企業的模型利用從追求“大而全”轉向“小而精”&#xff0c;高效專用小模型成本降低90%的同時保持性能…

如何遠程連接云服務器上mysql

一&#xff1a;使用系統命令查看端口占用# 查看MySQL進程及其端口sudo netstat -tlnp | grep mysql# 或者使用ss命令sudo ss -tlnp | grep mysql# 查看3306端口&#xff08;MySQL默認端口&#xff09;sudo netstat -tlnp | grep 3306出現如下信息&#xff0c;說明端口3306[root…

今日分享:C++模板(全詳解)

&#x1f60e;【博客主頁&#xff1a;你最愛的小傻瓜】&#x1f60e; &#x1f914;【本文內容&#xff1a;C模板 &#x1f60d; 】&#x1f914; -------------------------------------------------------------------------------------------------------------------…

ramdisk內存虛擬盤(一)——前世今生

1990 年代&#xff1a;前因——“硬盤太慢、驅動太多” 背景&#xff1a;早期 Linux 根文件系統要么在軟盤、要么在 IDE 硬盤&#xff0c;內核把對應的軟盤/IDE 驅動編進去即可順利掛載。矛盾出現&#xff1a;隨著 SCSI、PCMCIA、USB、RAID 控制器等百花齊放&#xff0c;如果把…

ETH持續上漲推動DEX熱潮,交易活躍度飆升的XBIT表現強勢出圈

BOSS Wallet 8月15日訊&#xff0c;隨著ETH價格在過去24小時內強勢拉升至4300美元&#xff0c;整個加密市場再度掀起漲勢狂潮&#xff0c;鏈上交易活躍度空前高漲。其中&#xff0c;去中心化交易所平臺迅速成為市場焦點&#xff0c;其平臺活躍度與交易量雙雙上漲&#xff0c;吸…

Stand-In - 輕量級人物一致性視頻生成 高保真視頻人臉交換 ComfyUI工作流 支持50系顯卡 一鍵整合包下載

Stand-In 是一個輕量級、即插即用的身份保護視頻生成框架&#xff0c;只需要上傳一張人物照片&#xff0c;加上一段提示詞&#xff0c;即可生成高度一致性的高保真人物視頻&#xff0c;人臉相似度和自然都幾乎達到100%還原水平。 Stand-In 能把任何一張人臉&#xff08;甚至動漫…

vue3相關基礎

1、ref和reactive的區別兩者都是響應式數據的聲明。Reactive只適用于非基本數據類型&#xff0c;如對象&#xff0c;數組等。而ref是兼容適用于reactive的的數據類型的以及其他數據&#xff0c;靈活性較高。ref聲明的變量取值時需要.value。在<template></template>…

云手機存儲和本地存儲的區別

云手機存儲通常指云存儲&#xff0c;即數據存儲在云端服務器&#xff0c;本地存儲則是將數據存儲在用戶設備硬件中&#xff0c;主要區別體現在存儲位置、訪問方式、依賴條件等多個方面&#xff0c;具體如下&#xff1a;本地存儲主要是將數據存儲在用戶自有設備的物理硬件中&…

【科研繪圖系列】R語言繪制三維曲線圖

文章目錄 介紹 加載R包 數據下載 導入數據 數據預處理 畫圖 系統信息 參考 介紹 【科研繪圖系列】R語言繪制三維曲線圖 加載R包 library(tidyverse) library(ggsignif) library(RColorBrewer) library(dplyr) library(reshape2) library(grid

python常用包

以下按類別列舉10個常用Python包&#xff0c;并以一句話概括其核心作用&#xff1a; 一、數據分析與科學計算 NumPy&#xff1a;提供高性能多維數組及數學運算&#xff0c;是數值計算的基礎庫。Pandas&#xff1a;通過DataFrame結構實現高效表格數據清洗、分析與處理。SciPy&am…

“ 船新版本 ”

在 GeeLark 最新版本中&#xff0c;增強了 AIGC 生成能力以及 AI 協助自定義任務開發功能&#xff0c;給用戶優化構建從內容生產到運營自動化的完整技術鏈&#xff0c;為跨境電商及企業用戶提供更完善的智能化解決方案&#xff0c;效率翻倍輕松出海。 AIGC 接入 MiniMax-Hailuo…

力扣 —— 二分查找

搜索插入位置 35. 搜索插入位置 - 力扣&#xff08;LeetCode&#xff09; 算法思想&#xff1a; class Solution(object):def searchInsert(self, nums, target):left0 rightlen(nums)-1while left < right :mid (left right) // 2if nums[mid] < target:left mid 1…