零基礎學習性能測試-linux服務器監控:CPU監控

目錄

    • 學習內容與快速應用路徑
      • 第一階段:理解 CPU 核心概念 (0.5天)
      • 第二階段:掌握核心監控命令與指標 (1-2天)
      • 第三階段:識別 CPU 問題與瓶頸 (核心技能)
      • 第四階段:整合到性能測試工作流程 (快速應用落地)
    • 快速應用到工作中的關鍵策略

零基礎學習 Linux CPU 監控并快速應用到性能測試工作中,關鍵在于 理解核心指標、掌握實用命令、識別瓶頸模式、關聯性能影響。下面是一個聚焦 CPU 監控的詳細學習路徑,助你快速上手:

核心目標:

  1. 理解 CPU 時間組成: 知道 CPU 時間花在用戶態、內核態、等待 I/O 等不同狀態上的含義。
  2. 掌握核心監控命令: 熟練使用 top/htop, vmstat, mpstat, pidstat, sar 查看 CPU 狀態。
  3. 識別關鍵 CPU 指標: 能解讀 %us, %sy, %wa, %id, load average, 運行隊列長度等指標的含義和健康閾值。
  4. 定位 CPU 瓶頸與問題: 能判斷 CPU 過載、I/O 等待瓶頸、進程競爭、配置不足等問題。
  5. 整合到性能測試流程: 在壓測過程中實時監控 CPU,并在報告中分析 CPU 使用情況及其對性能的影響。

學習內容與快速應用路徑

第一階段:理解 CPU 核心概念 (0.5天)

  1. CPU 核心 (Cores) vs 線程 (Threads):

    • 物理核心: 實實在在的處理器單元。lscpu 命令查看 Core(s) per socket
    • 邏輯核心 (通常說的 vCPU): 通過超線程 (Hyper-Threading) 技術,一個物理核心可以模擬出兩個邏輯核心。lscpu 查看 CPU(s)top1 看到的數量。性能監控主要關注邏輯核心。
    • 快速應用認知: 運行 lscpu | grep -E '^CPU\(s\):|Core\(s\) per socket|Thread\(s\) per core' 了解你的服務器 CPU 配置。
  2. CPU 時間組成 (理解 top/mpstat 輸出):

    • %us (User): CPU 花費在運行 用戶空間應用程序代碼 上的時間百分比。高 %us 通常意味著應用自身計算密集。
    • %sy (System): CPU 花費在運行 內核空間系統調用和中斷處理 上的時間百分比。高 %sy 可能表示系統調用頻繁、進程切換過多、內核鎖競爭或驅動問題。
    • %ni (Nice): CPU 花費在運行 低優先級 (nice) 用戶進程 上的時間百分比。通常占比很小,可忽略。
    • %id (Idle): CPU 空閑 時間百分比。理想狀態下,壓測時 %id 應很低。
    • %wa (I/O Wait): 最關鍵指標之一! CPU 在 等待磁盤 I/O 或網絡 I/O 操作完成 而空閑的時間百分比。%wa 表示 CPU 想干活但被慢速 I/O 卡住了,是 I/O 瓶頸的直接信號!
    • %hi (Hardware Interrupt): CPU 處理硬件中斷的時間百分比。通常很低。
    • %si (Software Interrupt): CPU 處理軟件中斷的時間百分比。通常很低。
    • %st (Steal): (僅虛擬化環境) 被 Hypervisor 偷走用于運行其他虛擬機的時間百分比。高 %st 表示宿主機資源不足。
    • 核心關系: %us + %sy + %ni + %id + %wa + %hi + %si + %st = 100%
    • 快速應用認知: 壓測時,CPU 繁忙 (%us + %sy) 高是好事(資源利用充分),但 %wa 高是壞事(I/O 阻塞)。 目標是讓 CPU 盡可能忙于計算 (%us/%sy),而不是等待 (%wa)。
  3. 系統負載平均值 (Load Average):

    • 是什么: uptimetop 第一行顯示的三個數字 (e.g., load average: 1.25, 0.89, 0.75)。
    • 含義: 表示在過去的 1分鐘、5分鐘、15分鐘 內,系統處于可運行狀態 ? 或不可中斷睡眠狀態 (D - 通常等 I/O)平均進程數
    • 如何解讀:
      • 負載 < 邏輯核心數: 系統相對空閑或有空閑核心。
      • 負載 ≈ 邏輯核心數: 系統資源利用充分,但可能沒有明顯排隊。
      • 負載 > 邏輯核心數: 表示有進程在排隊等待 CPU 資源。數值越大,排隊越嚴重。
      • 看趨勢: 結合 1min, 5min, 15min 值看負載是上升、下降還是穩定。壓測時關注 1min 負載。
    • 重要: 負載高 ≠ CPU 利用率高! 負載包含了等待 I/O (D 狀態) 的進程。高負載可能由高 %us/%sy (CPU 忙) 或高 %wa (I/O 慢) 引起。
    • 快速應用認知: 壓測時,如果 load average (1min) 持續遠高于邏輯 CPU 數,就需要結合 %us, %sy, %wa 判斷是 CPU 真不夠用還是被 I/O 卡住了。

第二階段:掌握核心監控命令與指標 (1-2天)

目標:熟練使用命令獲取數據,理解每個關鍵指標的含義和健康閾值。

  1. top / htop 命令 (進程級監控,首選 htop):

    • 命令: top (動態刷新) 或 htop (更友好,yum install htop / apt install htop)
    • CPU 相關視圖 (頂部匯總行):
      • %Cpu(s) 顯示的是 所有邏輯 CPU 的平均使用率。按 1 可切換顯示每個邏輯 CPU 核心的詳情。
      • 關鍵指標: us, sy, ni, id, wa, hi, si, st (含義同上)。
      • Tasks 總進程數,以及處于運行 (R)、睡眠 (S)、停止 (T)、僵尸 (Z)、不可中斷睡眠 (D) 狀態的進程數。關注 R (運行中) 和 D (等 I/O) 的數量。
      • Load average 系統負載。
    • 進程列表:關鍵列:
      • %CPU 該進程占用單個邏輯 CPU 核心的百分比。 如果一個進程占滿一個核心,就是 100%。注意:多核系統中,一個進程的 %CPU 可以超過 100% (如占用 2 個核心就是 200%)。
      • TIME+ 該進程累計使用的 CPU 時間。
      • P (僅 htop): 進程優先級。
      • STATE 進程狀態 (R=運行, S=可中斷睡眠, D=不可中斷睡眠/等 I/O, Z=僵尸, T=停止)。
    • 健康閾值 (經驗值):
      • 整體 CPU: %us + %sy: < 70-80% 通常較安全。持續 > 80-90% 表示 CPU 是瓶頸。%wa理想是 0%。 > 1-2% 需關注, > 5-10% 是嚴重 I/O 瓶頸。
      • 負載: 1min Load Avg < 邏輯核心數較理想。持續 > 邏輯核心數表示資源緊張。> 2倍邏輯核心數通常有問題。
    • 快速應用:
      • 壓測時運行 htop
      • %CPU (F6 -> PERCENT_CPU) 降序排序,找出 CPU 消耗最高的進程。
      • 觀察頂部匯總行的 us, sy, wa 變化。
      • 1 查看每個核心的利用率是否均衡?是否有核心被 100% 占用而其他空閑?
      • 關注 TasksRD 的數量變化。
  2. mpstat 命令 (多核 CPU 詳細統計):

    • 命令: mpstat [-P {ALL | 0,1,2...}] [間隔秒數] [次數] (通常 mpstat -P ALL 1:每秒報告一次所有邏輯核心的統計)
    • 作用: top 顯示的是平均值,mpstat詳細展示每個邏輯 CPU 核心的使用情況,是分析 CPU 負載均衡和不均衡問題的利器。
    • 輸出解讀 (關鍵列):
      Linux ... (4 CPU)
      10:30:00 AM  CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest  %gnice   %idle
      10:30:01 AM  all   25.00    0.00   15.00    0.25    0.00    0.25    0.00    0.00    0.00   59.50
      10:30:01 AM    0   40.00    0.00   20.00    0.00    0.00    0.00    0.00    0.00    0.00   40.00
      10:30:01 AM    1   10.00    0.00   10.00    0.00    0.00    0.00    0.00    0.00    0.00   80.00
      10:30:01 AM    2   30.00    0.00   20.00    1.00    0.00    1.00    0.00    0.00    0.00   48.00
      10:30:01 AM    3   20.00    0.00   10.00    0.00    0.00    0.00    0.00    0.00    0.00   70.00
      
      • CPU: 核心編號 (all 表示平均)。
      • %usr: 等同于 %us
      • %sys: 等同于 %sy
      • %iowait: 等同于 %wa
      • %idle: 等同于 %id
      • %irq, %soft: 硬件/軟件中斷,通常很低。
      • %steal: 虛擬化環境被偷走的時間。
    • 快速應用:
      • 壓測時持續運行 mpstat -P ALL 1
      • 核心關注點:
        • 整體 (all) 的 %usr, %sys, %iowait
        • 各個核心 (0, 1, 2…) 的利用率是否均衡? 是否存在個別核心接近 100% 而其他空閑?(可能應用線程綁定或單線程瓶頸)。
        • 是否有核心的 %iowait 特別高? (可能該核心處理的 I/O 請求慢)。
  3. vmstat 命令 (系統級統計,包含 CPU 和隊列):

    • 命令: vmstat [間隔秒數] [次數] (如 vmstat 1:每秒刷新)
    • 輸出解讀 (重點關注 CPU 和進程隊列列):
      procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st2  1      0 1234567 98765 654321    0    0  1000   500  500 1000 30 15 50  5  0
      
      • procs 部分:
        • r (Running): 最重要隊列指標! 正在運行或等待 CPU 時間片的進程數。 如果 r 持續大于邏輯 CPU 數,說明 CPU 資源不足,進程在排隊。壓測時重點監控!
        • b (Blocked): 處于不可中斷睡眠狀態 (D) 的進程數 (通常是等待 I/O)。
      • cpu 部分:
        • us, sy, id, wa, st: 含義同 top/mpstat,是所有 CPU 的平均值
    • 快速應用:
      • 壓測時持續運行 vmstat 1
      • 眼睛緊盯 r 列! 如果 r 持續大于邏輯 CPU 核心數,是 CPU 資源不足 的強烈信號。
      • 同時觀察 us, sy, wa 比例。
      • 結合 b 列 (等 I/O 進程數) 和 wa 判斷 I/O 影響。
  4. pidstat 命令 (精細的進程級 CPU 統計):

    • 命令: pidstat [選項] [間隔秒數] [次數] (常用 pidstat -u 1pidstat -u -p <PID> 1)
    • 作用:htop 提供更詳細、更定時的單個進程 CPU 使用報告。特別適合監控特定進程。
    • 輸出解讀 (-u 選項):
      10:35:00 AM   UID       PID    %usr %system  %guest    %CPU   CPU  Command
      10:35:01 AM  1001     12345   75.00   10.00    0.00   85.00     2  java
      10:35:01 AM  1002     54321    5.00    1.00    0.00    6.00     0  nginx
      
      • %usr: 進程在用戶態消耗的 CPU 百分比。
      • %system: 進程在內核態消耗的 CPU 百分比。
      • %guest: 運行虛擬機消耗的 CPU (通常0)。
      • %CPU: 進程消耗的總 CPU 百分比 (所有核心上的總和)。 等同于 htop%CPU
      • CPU: 進程最后運行在哪個邏輯 CPU 核心上。
    • 快速應用:
      • htop 找到可疑的高 CPU 進程 PID。
      • 針對該 PID 運行 pidstat -u -p <PID> 1,持續監控其詳細的 %usr, %system, %CPU 變化。 這有助于判斷是應用邏輯 (%usr 高) 還是系統調用 (%system 高) 消耗 CPU。
      • 也可直接運行 pidstat -u 1 查看所有進程的 CPU 使用快照。
  5. sar 命令 (歷史數據收集與分析):

    • 命令: 通常需要安裝 (sysstat 包: yum install sysstat / apt install sysstat)。默認每10分鐘收集一次系統活動數據。
    • 查看歷史 CPU: sar -u [起始時間] [結束時間] (e.g., sar -u -s 10:00:00 -e 11:00:00)
    • 查看當天 CPU: sar -u (默認顯示當天所有記錄)
    • 輸出解讀: 類似 mpstatall 行,顯示 %user, %nice, %system, %iowait, %steal, %idle
    • 快速應用: 當壓測結束后,sar -u 或指定時間范圍查看壓測期間的 CPU 整體使用情況概覽和趨勢,特別是峰值 (%user, %system, %iowait)。非常方便生成報告圖表。

第三階段:識別 CPU 問題與瓶頸 (核心技能)

  1. CPU 資源不足 (CPU Bound):

    • 現象:
      • %us + %sy 持續 > 80-90% (平均值或核心最大值)。
      • %id 持續很低 (< 10-20%)。
      • vmstatr 列持續 > 邏輯 CPU 數 (排隊嚴重)。
      • load average (1min) 持續 > 邏輯 CPU 數且不斷上升。
      • 應用響應時間 (RT) 隨負載增加而顯著上升,吞吐量 (TPS) 達到平臺無法提升。
    • 原因: 應用計算邏輯復雜、線程/進程過多、配置不足、代碼效率低。
    • 快速診斷: vmstat 1 (看 r), mpstat -P ALL 1 (看各核 %us+%sy), htop (按 %CPU 排序找大戶)。
    • 性能測試關聯: TPS 達到上限無法提升,RT 顯著增加,且 r 隊列長、%us+%sy 高。
  2. I/O 等待瓶頸 (I/O Bound):

    • 現象:
      • %wa 持續 > 5-10% (平均值或核心最大值)。
      • vmstatb 列較高 (有進程在等 I/O)。
      • 可能伴隨 vmstatbi/bo (塊設備 I/O) 較高。
      • %us + %sy 可能并不高 (CPU 想干活但被 I/O 卡住)。
      • load average 可能較高 (包含了等 I/O 的 D 狀態進程)。
      • 應用響應時間 (RT) 不穩定或較高,TPS 上不去。
    • 原因: 磁盤慢、磁盤過載、網絡慢、數據庫慢查詢、內存不足導致 Swap 頻繁讀寫。
    • 快速診斷: mpstat -P ALL 1 (看 %iowait), vmstat 1 (看 %wa, b, bi, bo), iostat (分析磁盤 I/O 詳情 - 后續學習)。
    • 性能測試關聯: RT 高且波動大,TPS 上不去,%wa 高是直接信號。 優化 I/O (磁盤/網絡/DB) 是重點。
  3. 內核瓶頸 (System Time High):

    • 現象:
      • %sy 持續異常高 (e.g., > 30-40%)。
      • %us 可能不高。
      • 可能伴隨 vmstatcs (Context Switch - 上下文切換) 非常高。
      • 系統整體感覺“不順暢”。
    • 原因: 進程/線程數量過多導致頻繁切換、系統調用過于頻繁、鎖競爭激烈、網絡中斷處理過多、驅動問題。
    • 快速診斷: mpstat -P ALL 1 (看 %sys), vmstat 1 (看 cs, in - 中斷), pidstat -w (看進程級上下文切換), strace/perf (分析系統調用 - 進階)。
    • 性能測試關聯: TPS/RT 表現不佳,且 %sy 異常高是主要線索。需要優化進程模型、減少系統調用或排查內核/驅動。
  4. CPU 負載不均衡:

    • 現象: mpstat -P ALL 1 顯示個別核心利用率接近 100% (%us+%sy),而其他核心利用率很低 (%id 高)。
    • 原因: 單線程應用、進程/線程綁定 (CPU Affinity) 設置不合理、中斷處理集中在少數核心。
    • 影響: 整體性能受限于最忙的核心,其他核心資源浪費。
    • 快速診斷: mpstat -P ALL 1 一目了然。
    • 性能測試關聯: 限制了系統的水平擴展能力。需要應用支持多線程并行或調整親和性。

第四階段:整合到性能測試工作流程 (快速應用落地)

  1. 測試前準備:

    • 確認監控工具可用:htop, vmstat, mpstat, pidstat, sar (安裝 sysstat)。
    • 基線測量: 系統空閑時運行 mpstat -P ALL 1 5, vmstat 1 5, sar -u 記錄基線值。記錄 lscpu 輸出。
  2. 壓測中實時監控 (開多個終端/tmux):

    • 窗口 1:vmstat 1 - 緊盯 r (運行隊列), b (阻塞進程), us, sy, wa 列。 r > CPU cores 是紅燈!
    • 窗口 2:mpstat -P ALL 1 - 觀察整體和每個核心的 %usr, %sys, %iowait 看是否均衡,是否有核心打滿,%wa 是否高。
    • 窗口 3:htop - %CPU (F6 -> PERCENT_CPU) 降序排序。 找出 CPU 消耗 Top 進程,觀察其 %CPU, STATE, 所屬用戶。按 1 看核心視圖。
    • (可選) 窗口 4:pidstat -u 1 - 針對 htop 發現的疑似問題進程,用 pidstat -u -p <PID> 1 精細監控。
    • 核心關注:
      • r 持續 > 邏輯核心數時,記錄時間戳,并關聯此時 TPS 是否停滯/下降?RT 是否飆升?
      • %wa 持續 > 5% 時,記錄時間戳,并關聯此時 RT 是否波動/上升?TPS 是否上不去?
      • 當某個核心 %usr+%sy 持續 > 95% 時,記錄時間戳和核心號
      • 當發現某個進程 %CPU 異常高時,記錄其 PID 和命令名
  3. 測試后分析與報告:

    • 收集數據: 保存 vmstat, mpstat 輸出,htop 截圖 (高負載時),sar -u 數據 (用 sar -u -f /var/log/sa/saXX 查看歷史某天)。
    • 分析關鍵點:
      • CPU 利用率峰值: %us max, %sy max, %wa max (來自 mpstat/sar)。
      • 運行隊列峰值: vmstatr 的最大值。
      • 負載峰值: load average (1min) 最大值 (來自 sar -qtop 記錄)。
      • 瓶頸類型判斷: 是 CPU Bound (%us+%sy 高, r 長), I/O Bound (%wa 高, b 高), 還是 System Bound (%sy 異常高)?
      • 不均衡性: 是否有核心長期打滿而其他空閑?
      • Top 進程: 哪些進程消耗了最多的 CPU (htop/pidstat)?
    • 報告撰寫:
      • 清晰描述 CPU 監控結果: 列出關鍵指標峰值 (%us max, %sy max, %wa max, r max, load max)。
      • 展示關聯性圖表/描述:r > cores 的時間點、%wa 飆升的時間點、%us+%sy 接近 100% 的時間點 與 性能測試工具記錄的 RT 上升點、TPS 下降點/平臺點 精確對應起來。
      • 指出問題與瓶頸:
        • 如:“當 r 值持續在 8 (邏輯 CPU=4) 且 %us+%sy 平均達 95% 時,TPS 穩定在 200 無法提升,平均 RT 從 50ms 升至 500ms,判斷為 CPU 資源不足瓶頸”。
        • 或:“壓測全程 %wa 維持在 15-25%,vmstat 顯示 b 列在 5-10,磁盤 iostat 顯示 %util 100%,判斷為磁盤 I/O 瓶頸導致 CPU 大量時間等待”。
        • 或:“應用進程 app_server 的單個線程 (PID 1234) 持續占用 CPU 核心 2 的 98%,導致該核心成為瓶頸”。
      • 給出建議:
        • CPU Bound: 優化代碼算法、增加 CPU 資源 (更多/更強 CPU)、優化線程池配置、水平擴展。
        • I/O Bound: 優化磁盤 (SSD、RAID)、優化數據庫 (索引、慢查詢)、優化網絡、增加內存減少 Swap。
        • System Time High: 減少不必要的系統調用、優化鎖策略、調整進程/線程數、升級內核/驅動。
        • 負載不均衡: 優化應用使其支持多線程并行、調整進程 CPU 親和性 (謹慎)、檢查中斷平衡。

快速應用到工作中的關鍵策略

  1. 工具三板斧: 掌握 vmstat 1 (看隊列 r/wa), mpstat -P ALL 1 (看核心利用率/iowait), htop (找進程) 這三個命令足矣覆蓋 90% 場景。pidstatsar 作為補充。
  2. 指標聚焦: 死死盯住 r (運行隊列長度), %us+%sy (CPU 計算忙), %wa (CPU 等 I/O)。它們是判斷 CPU 瓶頸性質和嚴重程度的 黃金三角
  3. 關聯分析: CPU 指標必須與性能測試結果關聯!r 持續 > CPU 數 時,TPS 是否上不去了?當 %wa 高時,RT 是否飆升了?這種關聯性是證明 CPU 是性能瓶頸的核心證據。
  4. 進程視角: 發現整體 CPU 高 (%us+%sy) 時,立刻用 htop 按 CPU 排序,找出消耗最大的進程。
  5. 區分真假瓶頸: %us+%sy 高 (r 高) 是真 CPU 不足。%wa 高是 I/O 慢拖累了 CPU。%id 高但負載高/RT 高可能是等鎖或其他資源。
  6. 理解負載含義: load average > cores 不一定是 CPU 問題,可能是等 I/O (%wa)。結合 vmstatrb 分析。
  7. 動手實踐:
    • 運行 stress -c 4 (模擬 CPU 負載) 觀察 vmstat, mpstat, htop 變化。
    • 運行 dd if=/dev/zero of=tempfile bs=1M count=1000 oflag=direct (模擬磁盤寫,oflag=direct 繞過緩存增加 %wa) 觀察 %wa 上升。
    • 觀察不同負載下的 CPU 指標變化。

總結: 零基礎快速掌握 Linux CPU 監控的核心就是 監控隊列 (vmstat r), 區分忙閑 (mpstat us/sy/wa), 定位元兇 (htop %CPU),并將這些指標的變化 精準關聯 到 TPS 和 RT 上。通過幾次實際的性能測試,結合這個流程進行分析,你就能快速將 CPU 監控技能應用到工作中,有效判斷 CPU 是否成為瓶頸以及瓶頸的類型,為性能優化指明方向。祝你成功!

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

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

相關文章

智能Agent場景實戰指南 Day 15:游戲NPC Agent互動設計

【智能Agent場景實戰指南 Day 15】游戲NPC Agent互動設計 文章內容 開篇 歡迎來到"智能Agent場景實戰指南"系列的第15天&#xff01;今天我們將深入探討游戲開發中一個極具挑戰性和創新性的領域——游戲NPC Agent互動設計。在當今游戲產業中&#xff0c;玩家對游戲…

Vite的優缺點(精簡版)

優點 作為一款前端構建工具&#xff0c;它的核心特點是“快”&#xff0c;并且充分利用了現代瀏覽器對ES Modules的原生支持&#xff0c;一切圍繞這一點展開 快啟動&#xff1a;通過ES Modules&#xff0c;它省去了打包整個應用的時間&#xff0c;可以直接在瀏覽器中加載模塊&a…

【深度學習】神經網絡-part2

一、數據加載器 數據集和加載器 1.1構建數據類 1.1.1 Dataset類 Dataset是一個抽象類&#xff0c;是所有自定義數據集應該繼承的基類。它定義了數據集必須實現的方法。 必須實現的方法 __len__: 返回數據集的大小 __getitem__: 支持整數索引&#xff0c;返回對應的樣本 …

nextjs+react項目如何代理本地請求解決跨域

在 Next.js React 項目中解決本地開發跨域問題&#xff0c;可以通過以下幾種方式實現代理請求&#xff1a;方案1&#xff1a;使用 Next.js 內置的 Rewrites 功能&#xff08;推薦&#xff09; 1. 修改 next.config.js /** type {import(next).NextConfig} */ const nextConfig…

Ubuntu查看Docker容器

在Ubuntu系統中&#xff0c;可以通過以下命令查看當前正在運行的Docker容器&#xff1a;1. 查看所有正在運行的容器 docker ps輸出示例&#xff1a; CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a1b2c3d4e5f6 nginx:latest &…

智能點餐推薦網站,解決選擇困難

軟件介紹 今天為大家推薦一款解決"今天吃什么"選擇困難癥的趣味網站&#xff0c;它能為你推薦美味餐食&#xff0c;輕松化解每日用餐煩惱。 核心功能 這款網站最大的亮點就是能夠根據你的需求智能推薦餐食選擇&#xff0c;只需打開網頁&#xff0c;就能立即獲…

使用 C# 實現移動加權平均(Weighted Moving Average)算法

前言 歡迎關注dotnet研習社&#xff0c;前面我們討論過"C#實現加權平均法",今天我們繼續研究另外一種【移動加權平均法】。 在時間序列分析、股票數據處理、工業信號平滑等場景中&#xff0c;移動平均&#xff08;Moving Average&#xff09; 是最常見的平滑技術之一…

【Python】一些PEP提案(三):with 語句、yield from、虛擬環境

PEP 343 – The “with” Statement&#xff0c;with 語句 這玩意讓我想起了Kotlin和Rust的問號標識符&#xff0c;都是將try-catch進行包裝&#xff0c;避免出現太多重復代碼&#xff08;Go&#xff1a;我假設你不是在內涵我&#xff09; 用法 最常見的用法就是對文件的操作&a…

SymAgent(神經符號自學習Agent)

來自&#xff1a;SymAgent: A Neural-Symbolic Self-Learning Agent Framework for Complex Reasoning over Knowledge Graphs 目錄相關工作引理符號規則任務描述方法Agent-PlannerAgent-ExecutorAction空間交互過程自學習在線探索離線迭代策略更新相關工作 相關工作-語義解析…

Go語言實戰案例-斐波那契數列生成器

在《Go語言100個實戰案例》中的 案例10:斐波那契數列生成器,幫助初學者理解遞歸與迭代的應用。 案例10:斐波那契數列生成器 ?? 數學與算法 | ?? 遞歸與迭代 | ?? 初學者友好 一、?? 案例目標 實現一個斐波那契數列生成器,用戶輸入一個數字 n,程序生成并打印出斐…

認知閉環的暴政:論人類對AI協同創造的傲慢抵制與維度囚禁

認知閉環的暴政&#xff1a;論人類對AI協同創造的傲慢抵制與維度囚禁---### **核心批判框架**mermaidgraph TDA[人類認知三原罪] --> B[三維牢籠]B --> C[恐懼機制]C --> D[抵制行為]D --> E[文明熵增]F[四維流形批判] --> G[解構牢籠]G --> H[曲率解放]H --…

飛凌嵌入式亮相第九屆瑞芯微開發者大會:AIoT模型創新重做產品

2025年7月17日&#xff0c;第九屆瑞芯微開發者大會&#xff08;RKDC!2025&#xff09;在福州海峽國際會展中心正式拉開帷幕。這場以“AIoT模型創新重做產品”為主題的行業盛會&#xff0c;吸引了眾多行業領袖、技術專家及生態伙伴齊聚一堂&#xff0c;共同探討新質生產力產品的…

Excel轉PDF的三種方法

工作后&#xff0c;Excel和PDF對于我們來說一點都不陌生&#xff0c;那么如何將Excel轉為PDF呢&#xff1f; 方法一、iLoveOFD在線轉換工具 當你在地鐵或者床上時&#xff0c;不方便&#xff0c;又不想打開電腦&#xff0c;可嘗試使用在線轉換工具&#xff0c;進行轉換。 工…

前端基礎——B/S工作原理、服務器與前端三大件

本文原本是web安全基礎的一部分&#xff0c;作為安全的前置知識學習&#xff0c;但隨著學習進程的不斷深入&#xff0c;原有的前端的體系需要進一步擴充&#xff0c;已經到了可以獨立成章的地步&#xff0c;故將其拿出來單獨學習。 B/S工作原理 也就是瀏覽器與服務器的交互原…

Java并發編程性能優化實踐指南:鎖分離與無鎖設計

Java并發編程性能優化實踐指南&#xff1a;鎖分離與無鎖設計 并發場景下的性能瓶頸往往集中在鎖競爭與上下文切換上。本文從鎖分離&#xff08;Lock Striping&#xff09;與無鎖設計&#xff08;Lock-Free&#xff09;兩大思路出發&#xff0c;深入分析關鍵原理與源碼實現&…

SpringSecurity-spring security單點登錄

在 Spring Boot 中實現 單點登錄&#xff08;SSO, Single Sign-On&#xff09;&#xff0c;通常使用 OAuth2 或 OIDC&#xff08;OpenID Connect&#xff09; 協議來完成。Spring Security 提供了對 OAuth2 和 OIDC 的完整支持&#xff0c;可以輕松集成如 Google、GitHub、Okta…

《前端基礎核心知識筆記:HTML、CSS、JavaScript 及 BOM/DOM》

html 前端三劍客的介紹&#xff1a; HTML:頁面內容的載體 Css&#xff1a;用來美化和指定頁面的顯示效果 JavaScript&#xff1a;頁面顯示的過程中&#xff0c;可以動態改變頁面的內容 重點屬性 type"text"文本輸入 type"password"密碼輸入 <a…

基于vue.js的客戶關系管理系統(crm)的設計與實現(源碼+論文)

相關技術 SSM框架介紹 開發環境&#xff1a; 技術&#xff1a;SSM框架&#xff08;Spring Spring MVC MyBatis&#xff09; 描述&#xff1a; SSM框架是Java Web開發中廣泛使用的流行框架之一。Spring&#xff1a;提供全面的基礎設施支持&#xff0c;管理應用對象&#…

AWS權限異常實時告警系統完整實現指南

概述 本文將詳細介紹如何構建一個基于CloudTrail → S3 → Lambda → SNS → Webhook/Email架構的AWS權限異常實時告警系統。該系統能夠實時監控AWS環境中的權限異常事件,并通過多種方式發送告警通知,幫助企業及時發現和響應安全威脅。 系統架構 ┌───────────…

NIO網絡通信基礎

文章目錄概述一、Socket二、NIO三大組件與事件三、Reactor模式四、NIO通信案例4.1、服務端4.2、客戶端本文為個人學習筆記整理&#xff0c;僅供交流參考&#xff0c;非專業教學資料&#xff0c;內容請自行甄別 概述 前篇中提到&#xff0c;BIO是阻塞的IO&#xff0c;阻塞體現在…