大模型對齊算法(四): DAPO,VAPO,GMPO,GSPO, CISPO,GFPO

DAPO

DAPO 在 GRPO 的基礎上做了 4 處關鍵升級,既保持 GRPO 的“無價值函數 + 組內歸一化”思想,又通過 剪枝、采樣、Token 級梯度、長度懲罰 解決長 Chain-of-Thought RL 的四大痛點。


1 剪枝范圍解耦:Clip-Higher

GRPO:單一對稱剪枝

min??(rt(θ)A^t,clip(rt(θ),1?ε,1+ε)A^t)\min\!\Bigl(r_t(\theta)\hat A_t,\; \mathrm{clip}(r_t(\theta),\,1-\varepsilon,\,1+\varepsilon)\,\hat A_t\Bigr)min(rt?(θ)A^t?,clip(rt?(θ),1?ε,1+ε)A^t?)

DAPO:將上下界拆成 ε_low, ε_high

min??(rt(θ)A^t,clip(rt(θ),1?εlow,1+εhigh)A^t)\min\!\Bigl(r_t(\theta)\hat A_t,\; \mathrm{clip}(r_t(\theta),\,1-\varepsilon_{\text{low}},\,1+\varepsilon_{\text{high}})\,\hat A_t\Bigr)min(rt?(θ)A^t?,clip(rt?(θ),1?εlow?,1+εhigh?)A^t?)

其中

εhigh>εlow\varepsilon_{\text{high}}>\varepsilon_{\text{low}}εhigh?>εlow?

→ 給低概率 “探索 token” 更大的上升空間,防止 熵崩潰


2 動態采樣:Dynamic Sampling

GRPO:固定 batch,遇到全對 / 全錯 prompt → 梯度為零。
DAPO:在采樣階段 過濾掉 reward=±1 的 prompt,直到 batch 內所有 prompt 均有 有效梯度
約束加入目標:

0<∣{oi∣is_equivalent(a,oi)}∣<G0<|\{o_i \mid \text{is\_equivalent}(a,o_i)\}|<G0<{oi?is_equivalent(a,oi?)}<G


3 Token-Level Policy Gradient

GRPO:先對 樣本內 token 求平均,再跨樣本平均。
DAPO:直接對 token 級 loss 求和,避免長回答權重稀釋:

JDAPO(θ)=E(q,a)~D,{oi}i=1G~πθold[1∑i=1G∣oi∣∑i=1G∑t=1∣oi∣min??(ri,t(θ)A^i,t,clip(ri,t(θ),1?εlow,1+εhigh)A^i,t)]J_{\text{DAPO}}(\theta)= \mathbb{E}_{(q,a)\sim\mathcal D,\{o_i\}_{i=1}^{G}\sim\pi_{\theta_{\text{old}}}} \left[ \frac{1}{\sum_{i=1}^{G}|o_i|}\sum_{i=1}^{G} \sum_{t=1}^{|o_i|} \min\!\Bigl( r_{i,t}(\theta)\hat A_{i,t},\, \mathrm{clip}(r_{i,t}(\theta),\,1-\varepsilon_{\text{low}},\,1+\varepsilon_{\text{high}})\,\hat A_{i,t} \Bigr) \right]JDAPO?(θ)=E(q,a)D,{oi?}i=1G?πθold???[i=1G?oi?1?i=1G?t=1oi??min(ri,t?(θ)A^i,t?,clip(ri,t?(θ),1?εlow?,1+εhigh?)A^i,t?)]


4 長度懲罰:Overlong Reward Shaping

GRPO:截斷回答直接給懲罰 ?1。
DAPO:引入 Soft Overlong Punishment(長度感知)

Rlength(y)={0,∣y∣≤Lmax??Lcache(Lmax??Lcache)?∣y∣Lcache,Lmax??Lcache<∣y∣≤Lmax??1,∣y∣>Lmax?R_{\text{length}}(y)= \begin{cases} 0, & |y|\le L_{\max}-L_{\text{cache}}\\[4pt] \frac{(L_{\max}-L_{\text{cache}})-|y|}{L_{\text{cache}}}, & L_{\max}-L_{\text{cache}}<|y|\le L_{\max}\\[4pt] -1, & |y|>L_{\max} \end{cases}Rlength?(y)=????0,Lcache?(Lmax??Lcache?)?y?,?1,?yLmax??Lcache?Lmax??Lcache?<yLmax?y>Lmax??

最終獎勵

Rtotal(y)=Rrule(y)+Rlength(y)R_{\text{total}}(y)=R_{\text{rule}}(y)+R_{\text{length}}(y)Rtotal?(y)=Rrule?(y)+Rlength?(y)


5 總結公式(DAPO 完整目標)

JDAPO(θ)=E(q,a)~D,{oi}i=1G~πθold[1∑i=1G∣oi∣∑i=1G∑t=1∣oi∣min??(ri,t(θ)A^i,t,clip(ri,t(θ),1?εlow,1+εhigh)A^i,t)]s.t.0<∣{oi∣is_equivalent(a,oi)}∣<G,ri,t(θ)=πθ(oi,t∣q,oi,<t)πθold(oi,t∣q,oi,<t)A^i,t=Ri?μσ,Ri=Rrule(oi)+Rlength(oi)\boxed{ \begin{aligned} J_{\text{DAPO}}(\theta)= \mathbb{E}_{(q,a)\sim\mathcal D,\{o_i\}_{i=1}^{G}\sim\pi_{\theta_{\text{old}}}} \Bigg[ &\frac{1}{\sum_{i=1}^G|o_i|}\sum_{i=1}^{G} \sum_{t=1}^{|o_i|} \min\!\Bigl( r_{i,t}(\theta)\hat A_{i,t},\, \mathrm{clip}\bigl(r_{i,t}(\theta),\,1-\varepsilon_{\text{low}},\,1+\varepsilon_{\text{high}}\bigr)\hat A_{i,t} \Bigr) \Bigg]\\[2pt] \text{s.t.}\quad &0<|\{o_i \mid \text{is\_equivalent}(a,o_i)\}|<G,\quad r_{i,t}(\theta)=\frac{\pi_\theta(o_{i,t}\mid q,o_{i,<t})}{\pi_{\theta_{\text{old}}}(o_{i,t}\mid q,o_{i,<t})}\\[2pt] &\hat A_{i,t}=\frac{R_i-\mu}{\sigma},\quad R_i=R_{\text{rule}}(o_i)+R_{\text{length}}(o_i) \end{aligned} }JDAPO?(θ)=E(q,a)D,{oi?}i=1G?πθold???[s.t.?i=1G?oi?1?i=1G?t=1oi??min(ri,t?(θ)A^i,t?,clip(ri,t?(θ),1?εlow?,1+εhigh?)A^i,t?)]0<{oi?is_equivalent(a,oi?)}<G,ri,t?(θ)=πθold??(oi,t?q,oi,<t?)πθ?(oi,t?q,oi,<t?)?A^i,t?=σRi??μ?,Ri?=Rrule?(oi?)+Rlength?(oi?)??


6 一句話總結

DAPO = GRPO

  • Clip-Higher(解決熵塌陷)
  • Dynamic Sampling(解決零梯度)
  • Token-Level Loss(解決長回答稀釋)
  • Soft Length Penalty(解決截斷噪聲)
    AIME 50 分,僅用 50% 訓練步數

VAPO

VC-PPO + DAPO

VC-PPO

value pretraining

1. 背景知識
  • Reward模型:在強化學習中,reward模型通常只在**最后一個token(即EOS token)**處給出評分,前面的token是沒有獎勵信號的。
  • Value模型:Value模型的作用是估計每個token位置的期望回報(即未來能獲得的獎勵總和)。
  • 熱啟(warm start):通常會用reward模型的參數來初始化value模型,因為兩者都是輸出一個標量值。
2. 問題分析
  • Reward模型的訓練目標:reward模型只在EOS token處訓練,因此它學會的是:
    • EOS token處的值是合理的(接近真實獎勵)。
    • EOS token之前的token的值是未訓練的,通常會被模型默認賦予較小的值(因為訓練時這些位置的值沒有約束,模型傾向于輸出較小的值)。
  • Value模型的初始化:如果用reward模型的參數來初始化value模型,那么:
    • EOS token處的value初始值是合理的(因為reward模型在此處訓練過)。
    • EOS token之前的token的value初始值會偏小(因為reward模型在這些位置的輸出是未訓練的,傾向于小值)。
3. 后果
  • Value偏小導致的問題
    • 在強化學習中,**advantage(優勢函數)**的計算依賴于value的估計:
      [
      A_t = r_t + V(s_{t+1}) - V(s_t)
      ]
    • 如果靠前的token的value初始值偏小,那么( V(s_t) )會偏小,導致advantage ( A_t )偏大(因為減去的( V(s_t) )偏小)。
    • 這會讓模型誤以為靠前的token“很好”,從而傾向于生成更短的序列(因為靠前的token被高估了,模型會提前結束序列以獲得更高的advantage)。
4. 直觀理解
  • 比喻:想象你在玩一個游戲,游戲結束時才給你獎勵。但你的“價值預測器”一開始被初始化得很奇怪:
    • 游戲結束時,它能準確預測獎勵(比如100分)。
    • 游戲開始時,它卻預測價值很低(比如0分)。
  • 后果:你會覺得“游戲開始時的價值很低,但下一步突然變高了”,于是你會傾向于“提前結束游戲”來獲得這個“突然變高”的優勢。這就是模型傾向于生成短序列的原因。
5. 總結
  • 核心原因:reward模型只在EOS token處訓練,導致EOS之前的token的value初始值偏小。
  • 后果:靠前的token的advantage被高估,模型傾向于提前結束序列,導致生成短序列(無法生成長CoT)。

這就是為什么論文中提出value pretraining(提前用離線數據訓練value模型),來避免這種初始化偏差。

一些思考:

論文其實沒有真正從細節說明為啥value和advantage在eos附近斷崖式drop的現象消失了

1. 價值預訓練的目標值

論文原文(§3.2 第 4–5 段):

“Continuously generate responses by sampling from a fixed policy … update the value model using GAE with λ = 1.0, also known as the Monte-Carlo return.”

“Train the value model until key training metrics, including value loss and explained variance, attain sufficiently low values.”

也就是說,作者只說了“用 λ=1.0 的 MC return 當目標”,沒有解釋網絡怎么保證前綴 token 不塌縮到同一個常數。


2. 訓練曲線

論文圖 6 給了 value-loss 的兩段式下降,但沒有給出 value 隨 token 位置變化的曲線


decouple GAE
論文中提出的 Decoupled-GAE(解耦廣義優勢估計) 指的是:

在強化學習訓練過程中,將價值模型(critic)和策略模型(actor)在計算廣義優勢估計(GAE)時使用的λ參數進行解耦,分別獨立設置,以解決長鏈式思考(long-CoT)任務中價值估計的偏差和策略更新的方差問題。

具體而言:

  • 價值模型(critic)
    使用較大的λ值(論文中設為 λ=1.0),以保證獎勵信號在長序列中無衰減地傳播,從而避免價值估計的偏差(bias),實現更準確的價值估計。

  • 策略模型(actor)
    使用較小的λ值(論文中設為 λ=0.95),以降低策略梯度估計的方差(variance),加速策略收斂,提升訓練穩定性。

通過這種方式,Decoupled-GAE 實現了:

  • 價值模型的無偏更新
    通過λ=1.0的蒙特卡洛回報(Monte-Carlo return),確保價值估計準確,避免獎勵信號衰減。

  • 策略模型的穩定高效更新
    通過λ=0.95降低方差,避免策略更新過程中的震蕩或不穩定,提升訓練效率和穩定性。

簡而言之,Decoupled-GAE 就是一種在強化學習訓練過程中,分別為價值模型和策略模型設置不同λ參數的策略,以兼顧價值估計的準確性和策略更新的穩定性,特別適用于長鏈式思考(long-CoT)任務

GMPO

https://zhuanlan.zhihu.com/p/1934575387687490603

GSPO

https://blog.csdn.net/weixin_36378508/article/details/150395944

CISPO

https://blog.csdn.net/weixin_36378508/article/details/150395944

GFPO

https://zhuanlan.zhihu.com/p/1939843423994610732

把大象放進冰箱需要三步,把 LLM 訓練成奧數冠軍卻需要五步:GRPO → GMPO → GSPO → CISPO → GFPO。
本文一次講清每個字母背后的動機、公式差異與實戰效果,并給出一張“對照速查表”,讓你 5 分鐘就能選對自己任務的算法。


0. 開場白:為什么大家集體“卷”GRPO?

2024 年開始,大模型后訓練出現一條清晰技術路線:

  1. 冷啟動 SFT →
  2. 在線 RL(可驗證獎勵) →
  3. 推理時 scaling(長 CoT)。

在線 RL 的核心矛盾是:不要價值模型,還要穩定訓練
于是 DeepSeek 提出 GRPO(Group Relative Policy Optimization):

  • 把價值網絡扔掉,省 50 % 顯存;
  • 用“同 prompt 多條回答”做組內相對獎勵,簡單有效。

但很快,社區發現 GRPO 有三宗罪

罪名現象根因
長度偏差正確答案越來越短,錯誤答案越來越長算術平均 + token 歸一化
離群值爆炸幾個 token 的權重把策略拉飛算術平均對極端值敏感
MoE 不穩定專家路由一變,token 級權重全亂token 級重要性采樣

接下來的一年,就是“打補丁”的一年——GMPO、GSPO、CISPO、GFPO 接連登場。


1. GRPO:把“價值網絡”扔進歷史的垃圾桶

  • 核心公式
    LGRPO=1G∑i=1G1∣oi∣∑t=1∣oi∣min??(ρi,tA^i,clip(ρi,t,1????,1?+??)A^i)\mathcal L_{\text{GRPO}}=\frac{1}{G}\sum_{i=1}^{G}\frac{1}{|o_i|}\sum_{t=1}^{|o_i|} \min\!\Bigl(\rho_{i,t}\hat A_i,\ \text{clip}(\rho_{i,t},1\!-\!\epsilon,1\!+\!\epsilon)\hat A_i\Bigr)LGRPO?=G1?i=1G?oi?1?t=1oi??min(ρi,t?A^i?,?clip(ρi,t?,1??,1+?)A^i?)
    其中

    • (G):組內樣本數
    • (ρi,t\rho_{i,t}ρi,t?=πθ/πold\pi_\theta/\pi_{\text{old}}πθ?/πold?):token 級概率比
    • (A^i\hat A_iA^i?):序列級相對優勢(組內標準化)
  • 一句話總結
    “token 級裁剪 + 算術平均” → 省價值模型,但易震蕩。


2. GMPO:把“算術平均”換成“幾何平均”

  • 痛點
    GRPO 的算術平均對離群 token 太敏感,訓練曲線像過山車。

  • 補丁
    幾何平均天然把極端值壓到地板。
    核心改動只是把公式里的“平均”換成“幾何平均”:

    LGMPO=1G∑i=1G(∏t=1∣oi∣ρi,t1∣oi∣)A^i\mathcal L_{\text{GMPO}}=\frac{1}{G}\sum_{i=1}^{G} \left(\prod_{t=1}^{|o_i|}\rho_{i,t}^{\frac{1}{|o_i|}}\right)\hat A_i LGMPO?=G1?i=1G??t=1oi??ρi,toi?1???A^i?

  • 效果
    同資源下 +4.1 % AIME24(DeepSeek-R1-Distill-7B),
    還能把裁剪范圍從 (0.8,1.2) 擴到 (e{-0.4},e{0.4}),探索更野。


3. GSPO:干脆把“token”扔掉,改成“序列”

  • 痛點
    token 級權重在長序列里累積方差 → 訓練崩潰;
    MoE 里路由一變,權重直接“量子隧穿”。

  • 補丁
    整句采樣權重代替逐 token 權重:
    si(θ)=exp??(1∣oi∣∑t=1∣oi∣log?ρi,t)s_i(\theta)=\exp\!\Bigl(\frac{1}{|o_i|}\sum_{t=1}^{|o_i|}\log\rho_{i,t}\Bigr) si?(θ)=exp(oi?1?t=1oi??logρi,t?)
    整條序列共享同一個 (s_i) 進行裁剪,梯度一次性廣播到所有 token

  • 效果

    • 訓練全程無崩潰,不再需要“routing replay”(MoE 穩定器)。
    • 在 Qwen3-30B-A3B 上,同等計算量 AIME24↑2.3 %

4. CISPO:別剪 token,剪“權重”

  • 痛點
    token 級裁剪把關鍵反思詞(“Wait”、“Recheck”)直接剪沒,長 CoT 斷流。

  • 補丁
    保留所有 token,只裁剪重要性權重 IW:
    IWclip=clip?(IW,1??,1+?)\text{IW}_{\text{clip}}=\text{clip}\!\bigl(\text{IW},\ 1-\epsilon,\ 1+\epsilon\bigr) IWclip?=clip(IW,?1??,?1+?)

  • 效果

    • 關鍵 token 不再被誤傷;
    • 50 % 訓練步數即可追平 DAPO 性能。

5. GFPO:給“組”再做個過濾

  • 痛點(推測)
    組內樣本質量參差不齊,壞樣本拖累梯度。

  • 補丁(推測)
    在 GSPO 基礎上加一層 Group Filter
    用輕量 reward model 先給每條回答打分,
    只保留 top-k 樣本進入最終優化,
    相當于“先篩后煉”。

  • 效果(待官方報告)


6. 一張對照速查表

算法優化粒度平均方式重要性權重裁剪級別是否用 value解決痛點
GRPOtoken算術token ρtoken?省 value,但易崩
GMPOtoken幾何token ρtoken?抗離群
GSPOsequence算術序列 ssequence?抗長序列+MoE
CISPOtoken算術token ρ權重級?保關鍵 token
GFPOsequence算術序列 ssequence?組內再過濾

7. 怎么選?

  • 短回答 / 代碼補全GMPO/CISPO(token 級仍有用)
  • 長 CoT / MoE 大模型GSPO/GFPO(序列級更穩)
  • 資源緊張 / 想先跑通GRPO(baseline 夠用)

8. 尾巴

從 GRPO 到 GFPO,短短一年,我們看到了 “簡化→穩定→再簡化” 的螺旋上升:

扔掉價值網絡 → 扔掉算術平均 → 扔掉 token 級權重 → 扔掉壞樣本
每一步都在回答同一個問題:
如何在無價值模型的前提下,既省資源又訓得穩?

答案或許還沒寫完,下一篇論文,也許就叫 “XFPO” 😉

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

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

相關文章

OpenHarmony之「星鏈Data」—— 分布式數據管理子系統核心架構與實戰解密

目錄 系統概述 架構設計 核心模塊詳解 數據庫實現與設計原理 關鍵函數調用流程鏈 實際案例分析 常見需求與Bug分析 性能監控與調優

基于SpringBoot+Vue的寫真館預約管理系統(郵箱通知、WebSocket及時通訊、協同過濾算法)

&#x1f388;系統亮點&#xff1a;郵箱通知、WebSocket及時通訊、協同過濾算法&#xff1b;一.系統開發工具與環境搭建1.系統設計開發工具前后端分離項目架構&#xff1a;B/S架構 運行環境&#xff1a;win10/win11、jdk17前端&#xff1a; 技術&#xff1a;框架Vue.js&#xf…

linux下timerfd和posix timer為什么存在較大的抖動?

在linux中開發引用&#xff0c;timerfd和posix timer是最常用的定時器。timerfd是linux特有的定時器&#xff0c;通過fd來實現定時器&#xff0c;體現了linux"一切皆文件"的思想&#xff1b;posix timer&#xff0c;只要符合posix標準的操作系統&#xff0c;均應支持…

網絡聚合鏈路與軟件網橋配置指南

網絡聚合鏈路與軟件網橋配置指南一、聚合鏈路&#xff08;Team&#xff09; 網絡組隊&#xff08;聚合鏈路&#xff09;是一種將多個網絡接口控制器&#xff08;NIC&#xff0c;Network Interface Controller&#xff09;以邏輯方式組合在一起的技術&#xff0c;通過這種方式可…

IDE/去讀懂STM32CubeMX 時鐘配置圖(有源/無源晶振、旁路/晶振模式、倍頻/分頻)

文章目錄概述配置圖元素說明RCCHSI/LSI/HSE/LSEAHB 和 APBSYSCLK 和 HCLKMux 多路復用器Prescaler 預分頻器PLL 鎖相環PLL 配置寄存器時鐘物理源內部時鐘和驅動無源晶振和驅動有源晶振和驅動MCO 時鐘信號音頻時鐘配置晶體振蕩器&#xff1f;外部時鐘源類型RCC 如何選擇旁路模式…

8 文本分析

全文檢索與常規關系型數據庫SQL查詢的顯著區別&#xff0c;就是全文檢索具備對大段文本進行分析的能力&#xff0c;它可以通過文本分析把大段的文本切分為細粒度的分詞。 elasticsearch在兩種情況下會用到文本分析&#xff1a; 原始數據寫入索引時&#xff0c;如果索引的某個字…

告別 Count Distinct 慢查詢:StarRocks 高效去重全攻略

在大數據分析中&#xff0c;去重計算&#xff08;如 Count Distinct&#xff09;是一個常見但計算開銷極高的操作&#xff0c;尤其在高基數和高并發場景下&#xff0c;常常成為查詢性能的瓶頸。以用戶訪問行為為例&#xff0c;同一用戶一天內多次訪問頁面時&#xff0c;PV 會累…

MVC、MVP、MVCC 和 MVI 架構的介紹及區別對比

?作者簡介&#xff1a;大家好&#xff0c;我是 Meteors., 向往著更加簡潔高效的代碼寫法與編程方式&#xff0c;持續分享Java技術內容。 &#x1f34e;個人主頁&#xff1a;Meteors.的博客 &#x1f49e;當前專欄&#xff1a; ?特色專欄&#xff1a; 知識分享 &#x1f96d;本…

【運維進階】Ansible 角色管理

Ansible 角色管理 實驗環境 [lthcontroller ~ 21:47:45]$ mkdir web && cd web[lthcontroller web 21:47:50]$ cat > ansible.cfg <<EOF [defaults] remote_user lth inventory ./inventory[privilege_escalation] become True become_user root become_m…

個人筆記SpringMVC

SpringMVC 1. 1.新建一個Maven-webapp項目 2.導入依賴pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 http://maven.…

arcgis-提取范圍中最大占比面積的信息或唯一值

此方法本來應用于計算圖斑占最大面積的房屋質量等別/高程/坡度級別&#xff08;房屋質量等別/高程/耕地坡度計算在無特定條件下&#xff0c;遵循按面積占比最大值信息賦值&#xff09;。1、測試數據中&#xff0c;增加唯一值字段&#xff1a;WYZ&#xff0c;并刷上圖斑唯一值信…

Webapi發布后IIS超時(.net8.0)

文章目錄前言一、報錯信息二、日志分析三、分析四、最終解決辦法&#xff1a;前言 最近實現服務器數據導出&#xff1a; .net8.0的webapi 獲取到post請求&#xff0c;查詢數據后dbReader導出到workbook. 并保存Excel到遠程的文件服務器。 問題&#xff1a;本地調試無問題&…

linux中的hostpath卷、nfs卷以及靜態持久卷的區別

在 Linux 容器環境中&#xff0c;HostPath 卷、NFS 卷和靜態持久卷&#xff08;Static PersistentVolume&#xff09;是數據持久化的重要方案。三者的核心差異體現在管理方式、適用場景、跨節點能力等方面。核心定義與工作原理1. HostPath 卷定義&#xff1a;直接將容器所在宿主…

Unity 中控開發 多路串口服務器(一)

一 Unity 中控開發 多路串口服務器 多路串口服務器基礎型號配置被控投影設備LG-UART8 算法配置軟件結果測試多路串口服務器 你好&#xff01; 這是關于一篇使用TCP調用多路串口服務器的系列文章。在后續文章中,會結合使用Unity做一個中控系統 基礎 型號 ULEGS 多路串口服務…

服務器數據恢復—硬盤壞道離線導致raid崩潰的StorNext文件系統數據恢復案例

服務器存儲數據恢復環境&故障&#xff1a; 一臺昆騰存儲設備中有一組raid5磁盤陣列。陣列上有兩塊硬盤先后離線&#xff0c;raid5磁盤陣列不可用。服務器存儲數據恢復過程&#xff1a; 1、將故障服務器存儲內的所有磁盤編號后取出&#xff0c;將所有沒有離線的硬盤以只讀方…

C++小游戲NO.1游戲機

#include<conio.h> #include<windows.h> #include<bits/stdc.h> #include<cstdlib> #include<ctime> #include<vector> #include<string> using namespace std; int Your6,Other6; string daojuname[]{"放大鏡","sho…

OpenHarmony WebView引擎:從Chromium魔改到分布式渲染的終極解析

??? 架構解析 arkweb是OpenHarmony webview組件的Native引擎,基于Chromium和CEF構建。 OpenHarmony WebView是基于Chromium CEF構建的高性能Web渲染引擎,為OpenHarmony系統提供完整的Web內容展示能力。該引擎采用分層架構設計,實現了與ArkUI的深度集成。 ??? 架構設…

Mybatis-3自己實現MyBatis底層機制

MyBatis整體架構分析一圖勝千言1、Mybatis核心框架示意圖2、對上圖的解讀1)mybatis的核配置文件mybatis-config.xml:進行全局配置&#xff0c;全局只能有一個這樣的配置文件XxxMapper.xml配置多個SQL,可以有多個XxxMappe.xml配置文件 2)通過mybatis-config.xml配置文件得到SqlS…

Uniapp 之renderjs解決swiper+多個video卡頓問題

一、效果圖二、示例代碼 test.vue<template><view style"" :style"{height: windowHeightpx}"><swiper class"video-swiper" vertical change"swiperChange" :current"current" animationfinish"swiper…

設計模式之【快速通道模式】,享受VIP的待遇

文章目錄一、快速通道模式簡介1、簡介2、適用場景二、示例1、JDK源碼&#xff1a;ArrayList構造方法2、String.intern()方法3、緩存系統設計&#xff08;典型&#xff09;三、注意事項1、核心設計原則2、避坑指南參考資料一、快速通道模式簡介 1、簡介 快速通道模式是一種基于…