【機器學習】“回歸“算法模型的三個評估指標:MAE(衡量預測準確性)、MSE(放大大誤差)、R2(說明模型解釋能力)

文章目錄

  • 一、MAE、MSE、r2概念說明
  • 二、MAE(平均絕對誤差):用"房價預測"理解誤差測量
  • 三、MSE(均方誤差):誤差的"放大鏡"
    • 1、概念說明
    • 2、 sklearn代碼實踐
    • 3、流程總結
  • 四、R2:理解模型的"解釋能力"
    • 1. 概念描述
    • 2、sklearn代碼示例
  • 五、應用場景:從理論到實踐
    • 房價預測場景
    • 股票價格預測場景
    • 銷售預測場景
    • 注意事項
  • 六、總結

想象一下,你是一個天氣預報員,每天都要預測明天的溫度。有時候你預測25度,實際是23度;有時候預測30度,實際是28度。這些預測到底準不準?誤差有多大?如果只是說"差不多",顯然不夠專業。

在機器學習中,回歸模型預測連續數值(如房價、溫度、銷售額),我們需要精確的"尺子"來衡量預測的準確性。MAE、MSE、r2就是這樣的"尺子",它們告訴我們模型預測得有多好,誤差有多大,以及模型解釋數據的能力有多強。

一、MAE、MSE、r2概念說明

回歸評估指標就像三種不同的測量工具:MAE是"直尺"(簡單直接),MSE是"放大鏡"(對誤差更敏感),r2是"溫度計"(衡量解釋能力)。

核心定義

  • MAE(平均絕對誤差):預測值與真實值差值的絕對值的平均
  • MSE(均方誤差):預測值與真實值差值的平方的平均
  • r2(決定系數):模型解釋數據變異性的比例

?

對比分析

指標特點適用場景優勢劣勢
MAE簡單直接對異常值不敏感易于理解對誤差不夠敏感
MSE對誤差敏感需要懲罰大誤差數學性質好單位不直觀
r2相對指標模型解釋能力標準化比較可能誤導

?

二、MAE(平均絕對誤差):用"房價預測"理解誤差測量

MAE是預測值與真實值差值的絕對值的平均,反映模型預測的平均偏差程度。

想象一下,你是一個房地產經紀人,需要預測房屋售價。你預測一套房子賣25萬,實際賣了23萬;預測另一套房子賣30萬,實際賣了32萬。這些預測到底準不準?誤差有多大?如果只是說"差不多",顯然不夠專業。

在機器學習中,我們需要精確的"尺子"來衡量預測的準確性。MAE(平均絕對誤差)就是這樣的"尺子",它告訴我們模型預測的平均偏差有多大,單位與目標變量相同,非常直觀。

?

# ============================================================================
# 導入必要的庫和模塊
# ============================================================================# pandas用于數據處理和分析
from pandas import read_csv# sklearn用于機器學習
from sklearn.model_selection import KFold              # K折交叉驗證
from sklearn.model_selection import cross_val_score    # 交叉驗證評分
from sklearn.linear_model import LinearRegression      # 線性回歸模型# ============================================================================
# 第一步:數據加載和預處理
# ============================================================================# 指定數據文件路徑(波士頓房價數據集)
filename = 'housing.csv'# 定義數據列名(特征和目標變量)
names = ['CRIM',     # 城鎮人均犯罪率'ZN',       # 住宅用地超過25000平方英尺的比例'INDUS',    # 非零售商業用地比例'CHAS',     # 查爾斯河虛擬變量(1表示靠近河流,0表示不靠近)'NOX',      # 一氧化氮濃度'RM',       # 每棟住宅的平均房間數'AGE',      # 1940年以前建成的業主自住單位比例'DIS',      # 與五個波士頓就業中心的加權距離'RAD',      # 放射狀公路的可達性指數'TAX',      # 每10000美元的全值財產稅率'PRTATIO',  # 城鎮師生比例'B',        # 1000(Bk - 0.63)^2,其中Bk是城鎮黑人比例'LSTAT',    # 人口中地位低下者的比例'MEDV'      # 目標變量:自住房的中位數價值(千美元)
]# 讀取CSV文件,使用自定義列名,以空格為分隔符
data = read_csv(filename, names=names, delim_whitespace=True)# ============================================================================
# 第二步:數據準備 - 分離特征和目標變量
# ============================================================================# 將pandas數據框轉換為numpy數組,便于數值計算
array = data.values# 提取特征變量X(前13列):用于預測的輸入特征
X = array[:, 0:13]  # 選擇第0到第12列(索引0-12)# 提取目標變量Y(第14列):要預測的結果(房價)
Y = array[:, 13]    # 選擇第13列(索引13)# ============================================================================
# 第三步:設置交叉驗證參數
# ============================================================================# 設置K折交叉驗證的折數
n_splits = 10  # 將數據分為10份,每次用9份訓練,1份測試# 設置隨機種子,確保結果可重現
seed = 7# 創建KFold交叉驗證對象
kfold = KFold(n_splits=n_splits,      # 10折交叉驗證random_state=seed,       # 隨機種子shuffle=True             # 打亂數據順序,確保隨機性
)# ============================================================================
# 第四步:創建模型和設置評估指標
# ============================================================================# 創建線性回歸模型實例
model = LinearRegression()# 設置評估指標為負平均絕對誤差
# 注意:sklearn返回負值,因為sklearn總是最大化指標(越小越好)
scoring = 'neg_mean_absolute_error'# ============================================================================
# 第五步:執行交叉驗證
# ============================================================================# 使用交叉驗證評估模型性能
result = cross_val_score(model,           # 要評估的模型X, Y,           # 特征和目標變量cv=kfold,       # 交叉驗證策略scoring=scoring  # 評估指標
)# ============================================================================
# 第六步:輸出結果
# ============================================================================# 打印交叉驗證結果
# result.mean():10次驗證的平均MAE
# result.std():10次驗證的MAE標準差
print('MAE: %.3f (%.3f)' % (result.mean(), result.std()))# ============================================================================
# 結果解讀說明
# ============================================================================"""
交叉驗證結果解讀:1. 結果格式:MAE: -3.387 (±0.234)- 負號:sklearn返回負值,實際MAE為3.387- 3.387:平均絕對誤差為3.387千美元- ±0.234:標準差,表示結果的可信度2. 交叉驗證過程:- 數據被分為10份- 每次用9份訓練,1份測試- 重復10次,每次使用不同的測試集- 最終得到10個MAE值,計算平均值和標準差3. 業務含義:- 模型預測房價的平均誤差為3.387千美元- 標準差0.234表示模型性能相對穩定- 在房價預測中,3.387千美元的誤差是可以接受的4. 優勢:- 避免了過擬合評估- 充分利用了有限的數據- 提供了模型性能的置信區間
"""

?

三、MSE(均方誤差):誤差的"放大鏡"

1、概念說明

想象一下,你是一個房地產評估師,需要預測房屋售價。你預測一套房子賣25萬,實際賣了23萬;預測另一套房子賣30萬,實際賣了35萬。這些預測的誤差有多大?如果只是簡單相加,小誤差和大誤差的權重是一樣的,但顯然大誤差的后果更嚴重。

在機器學習中,我們需要一種能夠"懲罰"大誤差的評估方法。MSE(均方誤差)就是這樣一種方法,它對誤差進行平方處理,讓大誤差的"懲罰"更重,小誤差的"懲罰"更輕
?

核心概念:誤差的"放大鏡"
MSE就像一把放大鏡,對誤差進行平方處理,讓大誤差變得更大,小誤差相對變小,從而突出大誤差的重要性。它能夠敏感地反映預測誤差,特別是對大誤差進行更重的懲罰,適合需要精確預測的場景。

?

2、 sklearn代碼實踐

# ============================================================================
# 導入必要的庫和模塊
# ============================================================================# pandas用于數據處理和分析
from pandas import read_csv# sklearn用于機器學習
from sklearn.model_selection import KFold              # K折交叉驗證
from sklearn.model_selection import cross_val_score    # 交叉驗證評分
from sklearn.linear_model import LinearRegression      # 線性回歸模型# ============================================================================
# 第一步:數據加載和預處理
# ============================================================================# 指定數據文件路徑(波士頓房價數據集)
filename = 'housing.csv'# 定義數據列名(特征和目標變量)
names = ['CRIM',     # 城鎮人均犯罪率'ZN',       # 住宅用地超過25000平方英尺的比例'INDUS',    # 非零售商業用地比例'CHAS',     # 查爾斯河虛擬變量(1表示靠近河流,0表示不靠近)'NOX',      # 一氧化氮濃度'RM',       # 每棟住宅的平均房間數'AGE',      # 1940年以前建成的業主自住單位比例'DIS',      # 與五個波士頓就業中心的加權距離'RAD',      # 放射狀公路的可達性指數'TAX',      # 每10000美元的全值財產稅率'PRTATIO',  # 城鎮師生比例'B',        # 1000(Bk - 0.63)^2,其中Bk是城鎮黑人比例'LSTAT',    # 人口中地位低下者的比例'MEDV'      # 目標變量:自住房的中位數價值(千美元)
]# 讀取CSV文件,使用自定義列名,以空格為分隔符
data = read_csv(filename, names=names, delim_whitespace=True)# ============================================================================
# 第二步:數據準備 - 分離特征和目標變量
# ============================================================================# 將pandas數據框轉換為numpy數組,便于數值計算
array = data.values# 提取特征變量X(前13列):用于預測的輸入特征
X = array[:, 0:13]  # 選擇第0到第12列(索引0-12)# 提取目標變量Y(第14列):要預測的結果(房價)
Y = array[:, 13]    # 選擇第13列(索引13)# ============================================================================
# 第三步:設置交叉驗證參數
# ============================================================================# 設置K折交叉驗證的折數
n_splits = 10  # 將數據分為10份,每次用9份訓練,1份測試# 設置隨機種子,確保結果可重現
seed = 7# 創建KFold交叉驗證對象
kfold = KFold(n_splits=n_splits,      # 10折交叉驗證random_state=seed,       # 隨機種子shuffle=True             # 打亂數據順序,確保隨機性
)# ============================================================================
# 第四步:創建模型和設置評估指標
# ============================================================================# 創建線性回歸模型實例
model = LinearRegression()# 設置評估指標為負均方誤差
# 注意:sklearn返回負值,因為sklearn總是最大化指標(越小越好)
scoring = 'neg_mean_squared_error'# ============================================================================
# 第五步:執行交叉驗證
# ============================================================================# 使用交叉驗證評估模型性能
result = cross_val_score(model,           # 要評估的模型X, Y,           # 特征和目標變量cv=kfold,       # 交叉驗證策略scoring=scoring  # 評估指標
)# ============================================================================
# 第六步:輸出結果
# ============================================================================# 打印交叉驗證結果
# result.mean():10次驗證的平均MSE
# result.std():10次驗證的MSE標準差
print('MSE: %.3f (%.3f)' % (result.mean(), result.std()))

?

3、流程總結

  1. 數據準備:
    我們從波士頓房價數據集開始,包含506個房屋樣本和13個特征(如犯罪率、房間數等),目標變量是房價。通過pandas讀取數據后,將前13列作為輸入特征X,最后一列作為目標變量Y,為模型訓練做好準備。

  2. 模型評估設置
    設置10折交叉驗證,將數據分為10份,每次用9份訓練、1份測試,確保每個樣本都被用作測試集。選擇線性回歸作為基準模型,使用MSE(均方誤差)作為評估指標,它能敏感地反映預測誤差并對大誤差進行懲罰。

  3. 性能評估與結果輸出
    執行交叉驗證評估,sklearn進行10次訓練測試循環,每次計算MSE值。由于sklearn返回負值,我們轉換為正值來理解實際誤差。最終輸出MSE的平均值和標準差,平均值反映整體性能,標準差反映穩定性,為模型選擇提供可靠依據。

?

四、R2:理解模型的"解釋能力"

1. 概念描述

概念描述
R2就像測量一杯混合果汁中"橙汁"的比例,它告訴我們數據的總變化中有多少能被模型解釋,多少是模型無法解釋的"其他成分"。在房價預測中,如果R2=0.85,說明85%的房價變化能被模型解釋,剩下的15%可能是裝修風格、市場情緒等無法量化的因素。

?

R2的計算基于方差分解
首先計算數據的總變異量(所有房價與平均房價的差異),然后計算模型無法解釋的變異量(預測房價與真實房價的差異),最后用公式R2 = 1 - (殘差方差/總方差)得到模型能解釋的變異比例。這個比例范圍在0到1之間,越接近1說明模型解釋能力越強。
?

實際應用

在波士頓房價預測中,R2=0.734意味著模型解釋了73.4%的房價變異性,這是一個良好的表現。相比之下,股票收益預測的R2通常只有0.3左右,因為股票價格受太多不可預測因素影響。R2幫助我們判斷模型是否真正捕捉到了數據中的規律,而不僅僅是預測得準不準,為模型選擇和優化提供了重要依據。

?

2、sklearn代碼示例

# ============================================================================
# 導入必要的庫和模塊
# ============================================================================# pandas用于數據處理和分析
from pandas import read_csv# sklearn用于機器學習
from sklearn.model_selection import KFold              # K折交叉驗證
from sklearn.model_selection import cross_val_score    # 交叉驗證評分
from sklearn.linear_model import LinearRegression      # 線性回歸模型# ============================================================================
# 第一步:數據加載和預處理
# ============================================================================# 指定數據文件路徑(波士頓房價數據集)
filename = 'housing.csv'# 定義數據列名(特征和目標變量)
names = ['CRIM',     # 城鎮人均犯罪率'ZN',       # 住宅用地超過25000平方英尺的比例'INDUS',    # 非零售商業用地比例'CHAS',     # 查爾斯河虛擬變量(1表示靠近河流,0表示不靠近)'NOX',      # 一氧化氮濃度'RM',       # 每棟住宅的平均房間數'AGE',      # 1940年以前建成的業主自住單位比例'DIS',      # 與五個波士頓就業中心的加權距離'RAD',      # 放射狀公路的可達性指數'TAX',      # 每10000美元的全值財產稅率'PRTATIO',  # 城鎮師生比例'B',        # 1000(Bk - 0.63)^2,其中Bk是城鎮黑人比例'LSTAT',    # 人口中地位低下者的比例'MEDV'      # 目標變量:自住房的中位數價值(千美元)
]# 讀取CSV文件,使用自定義列名,以空格為分隔符
data = read_csv(filename, names=names, delim_whitespace=True)# ============================================================================
# 第二步:數據準備 - 分離特征和目標變量
# ============================================================================# 將pandas數據框轉換為numpy數組,便于數值計算
array = data.values# 提取特征變量X(前13列):用于預測的輸入特征
X = array[:, 0:13]  # 選擇第0到第12列(索引0-12)# 提取目標變量Y(第14列):要預測的結果(房價)
Y = array[:, 13]    # 選擇第13列(索引13)# ============================================================================
# 第三步:設置交叉驗證參數
# ============================================================================# 設置K折交叉驗證的折數
n_splits = 10  # 將數據分為10份,每次用9份訓練,1份測試# 設置隨機種子,確保結果可重現
seed = 7# 創建KFold交叉驗證對象
kfold = KFold(n_splits=n_splits,      # 10折交叉驗證random_state=seed,      # 隨機種子shuffle=True
)# ============================================================================
# 第四步:創建模型和設置評估指標
# ============================================================================# 創建線性回歸模型實例
model = LinearRegression()# 設置評估指標為R2(決定系數)
# R2衡量模型解釋數據變異性的能力,范圍[0,1],越接近1越好
scoring = 'r2'# ============================================================================
# 第五步:執行交叉驗證
# ============================================================================# 使用交叉驗證評估模型性能
result = cross_val_score(model,           # 要評估的模型X, Y,           # 特征和目標變量cv=kfold,       # 交叉驗證策略scoring=scoring  # 評估指標
)# ============================================================================
# 第六步:輸出結果
# ============================================================================# 打印交叉驗證結果
# result.mean():10次驗證的平均R2
# result.std():10次驗證的R2標準差
print('R2: %.3f (%.3f)' % (result.mean(), result.std()))# ============================================================================
# R2概念詳解
# ============================================================================"""
R2(決定系數)詳解:1. 定義:R2 = 1 - (SS_res / SS_tot)- SS_res:殘差平方和(模型無法解釋的變異)- SS_tot:總平方和(數據的總變異)- 范圍:[0, 1],越接近1越好2. 特點:- 相對指標:無量綱,便于比較不同模型- 解釋能力:衡量模型解釋數據變異性的比例- 標準化:不受數據規模影響3. 與MSE/MAE的區別:- MSE/MAE:絕對誤差指標,單位與目標變量相同- R2:相對指標,無量綱,便于模型比較4. 波士頓房價數據集中的R2:- 含義:模型能解釋多少房價的變異性- 業務解釋:R2越高,模型預測越可靠- 應用價值:為模型選擇和優化提供依據
"""R2: 0.718 (0.099)

該模型的R2為0.718,能解釋71.8%的房價變異性,在房價預測中表現良好,剩余28.2%的房價變化無法解釋;標準差為0.099,表明10次交叉驗證的R2波動范圍較小,95%情況下R2在0.520到0.916之間。

?

五、應用場景:從理論到實踐

房價預測場景

在房價預測中,MAE直接反映平均預測誤差(如±5萬元),幫助房地產中介快速評估預測準確性;MSE對大誤差更敏感,適合銀行進行風險評估,因為極端預測錯誤可能導致更大的投資損失;R2衡量模型解釋房價變異的能力,幫助投資者理解模型的可信度。

股票價格預測場景

股票價格預測中,MAE評估平均預測偏差,為投資者提供整體預測精度;MSE對大幅波動更敏感,適合短期交易者關注極端價格變動;R2衡量模型捕捉市場趨勢的能力,長期投資者更關注這個指標來判斷模型是否真正理解了市場規律。

銷售預測場景

銷售預測中,MAE直接反映預測準確性,庫存管理人員據此制定采購計劃;MSE對銷售峰值更敏感,幫助風險管理部門評估庫存積壓或缺貨風險;R2衡量模型解釋銷售變化的能力,為管理層提供模型可信度的量化依據。

注意事項

  1. 數據質量:異常值會影響MSE,但對MAE影響較小
  2. 業務需求:不同場景對誤差的容忍度不同
  3. 模型比較:必須在相同數據集上比較不同模型
  4. 過擬合風險:r2過高可能表示過擬合

?

六、總結

回歸評估指標就像預測模型的"體檢報告",MAE、MSE、r2從不同角度評估模型的預測能力。

核心要點回顧

  • MAE關注平均誤差,MSE關注誤差分布,r2關注解釋能力
  • 不同指標適用于不同業務場景
  • 綜合使用多個指標能全面評估模型性能

關鍵概念回顧

  • MAE = 平均絕對誤差(越小越好)
  • MSE = 均方誤差(越小越好)
  • r2 = 決定系數(越接近1越好)

掌握這些評估指標,能夠幫助我們構建更準確、更可靠的回歸模型。

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

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

相關文章

智慧城市SaaS平臺|市容環衛管理系統

【生活垃圾中轉設施監管】1) 設施信息管理a) 設施基本信息支持記錄中轉設施的名稱、位置、類型、容量、負責人等基本信息。b) 設施分布地圖支持通過GIS地圖展示中轉設施的分布情況,支持地圖查詢和導航。2) 垃圾收運監控a) 垃圾收運記錄支持記錄垃圾收運的時間、車輛…

JAVA-13常用類(2025.08.02學習記錄)

String類String類equals方法String類compareTo方法String類valueOf方法boolean參數內存分析_字符串拼接只會在內存中開辟一個對象內存分析_字符串new創建對象內存分析_變量和字符串拼接字節碼執行過程String類內存分析package com.cn;public class test01 {public static void …

QT----簡單的htttp服務器與客戶端

HTTP協議學習 協議的相關學習可以參考這篇 csdn學習連接 總體流程如下 HTTP服務器 監聽ip和端口,有連接時接收請求,發送回復 server.h #pragma once #include <QtWidgets/QMainWindow> #include "ui_httpServer.h" #include <QTcpServer> #include &l…

飛 算 JavaAI 解 析:有 了 它,麻 麻 再 也 不 用 擔 心 我 不 會 寫 代 碼 了!

聲 明&#xff1a;本 篇 博 客 為 測 評 體 驗 非 廣 告。 文 章 目 錄一、產 品 簡 介二、注 冊 與 上 手方 法 一 - - - 從 IDEA 插 件 市 場 安 裝方 法 二產 品 使 用三、產 品 體 驗智 能 引 導 功 能理 解 需 求設 計 接 口表 結 構 設 計處 理 邏 輯生 成 源 碼Java ch…

iOS混淆工具有哪些?在集成第三方 SDK 時的混淆策略與工具建議

許多 iOS 項目中&#xff0c;不可避免地會集成各種第三方 SDK&#xff0c;比如支付、統計、廣告、社交登錄等。這些 SDK 常常存在逆向被 Hook 或提取業務邏輯的風險&#xff0c;尤其是在流程敏感或要求合規的行業中。 當你無法對第三方源碼進行控制或重新編譯時&#xff0c;混淆…

【學習筆記之redis】刪除緩存

有一串這個代碼&#xff0c;staffEmailList這個key值里面的數據是錯誤的我需要刪除它&#xff0c;把數據新的數據加載到redis緩存中。 public EmailAddressRespDTO getAllEmailAddress() { List<EmailAddressRespDTO> staffEmailList redisCache.getCacheList("s…

Redis 持久化機制淺析

1. 持久化機制的作用 Redis 是基于內存的數據結構數據庫&#xff0c;雖然讀寫性能非常高&#xff0c;但所有數據默認保存在內存中。一旦服務器宕機、進程意外崩潰或容器重啟&#xff0c;內存中的數據將全部丟失。這對于生產環境的可用性與可靠性是極其危險的。因此&#xff0c;…

使用MatterJs物理2D引擎實現重力和鼠標交互等功能,有點擊事件(盒子堆疊效果)

使用MatterJs物理2D引擎實現重力和鼠標交互等功能&#xff0c;有點擊事件&#xff08;盒子堆疊效果&#xff09; 效果圖&#xff1a;直接上代碼&#xff0c;我是用的是html&#xff0c;使用了MatterJs的cdn&#xff0c;直接復制到html文件中然后在瀏覽器打開即可 <!DOCTYPE …

如何玩轉 Kubernetes K8S

在容器化時代&#xff0c;雖然Docker已經很強大了&#xff0c;但是在實際使用上還是有諸多不便&#xff0c;比如集群管理、資源調度、文件管理等等。 不過目前也涌現了很多解決方案&#xff0c;比如 Mesos、Swarm、Kubernetes 等等&#xff0c;其中谷歌開源的 Kubernetes就是其…

論文閱讀筆記:Dataset Condensation with Gradient Matching

論文閱讀筆記&#xff1a;Dataset Condensation with Gradient Matching1. 解決了什么問題&#xff1f;(Motivation)2. 關鍵方法與創新點 (Key Method & Innovation)2.1 核心思路的演進&#xff1a;從參數匹配到梯度匹配2.2 算法實現細節 (Implementation Details)3. 實驗結…

網安學習no.22

一、基礎系統信息命令&#xff08;簡單入門&#xff09;uname作用&#xff1a;查看系統內核信息示例&#xff1a;uname -a&#xff08;顯示完整內核版本、主機名、硬件架構等&#xff09;hostname作用&#xff1a;查看或設置主機名示例&#xff1a;hostname&#xff08;顯示當前…

AJAX的引入

是的&#xff0c;AJAX 的一個主要特點就是通過 局部刷新 來實現與服務器的交互&#xff0c;而不需要重新加載整個頁面。通過 AJAX&#xff0c;JavaScript 可以發送異步的 HTTP 請求&#xff0c;接收到響應數據后&#xff0c;更新頁面的某個部分&#xff08;DOM&#xff09;。這…

SpringBoot 整合 Langchain4j AIService 深度使用詳解

目錄 一、前言 二、AIService 介紹 2.1 AiService 是什么 2.2 AiService 主要功能 2.3 AiService 使用步驟 三、AIService 操作實踐 3.1 前置準備 3.1.1 獲取apikey 3.1.2 導入核心依賴 3.1.3 添加配置文件 3.1.4 前置導入案例 3.2 AIService 案例操作詳解 3.2.1 入…

基于FFmpeg和HLS的大文件分片傳輸方案

1&#xff1a;功能介紹 在視頻這類大文件的傳輸過程中&#xff0c;經常會因為文件太大而受到網絡帶寬的限制。比如在實現視頻預覽功能時&#xff0c;常常會出現長時間加載、緩存卡頓的問題。我在項目中也遇到了類似的情況&#xff0c;于是采用了這個解決方案。 我們可以利用 FF…

體育場預定-下單-扣減庫存一致性

流程1:通過庫存服務緩存(緩存里面不僅有位圖存儲該時間點id的位置信息還有庫存信息)的Redis獲取令牌2:拿著令牌向訂單服務同步下單如果有令牌就執行下面的Redis&#xff0c;如果沒有就直接返回扣減Redis庫存緩存扣減成功:繼續扣減失敗:返回前端重試整套流程3:1鎖2查3更新生成訂…

【計算機網絡】王道考研筆記整理(3)數據鏈路層

目錄 第三章 數據鏈路層 3.1 數據鏈路層的功能 3.2 組幀 3.2.1 字符計數法 3.2.2 字節填充法 3.2.3 零比特填充法 3.2.4 違規編碼法 3.3 差錯控制 3.3.1 奇偶校驗碼 3.3.2 CRC 校驗碼 3.3.3 海明校驗碼 3.4 可靠傳輸與流量控制 3.4.1 滑動窗口機制 3.4.2 停止 - 等待…

【后端】java 抽象類和接口的介紹和區別

文章目錄一、抽象類&#xff08;Abstract Class&#xff09;二、接口&#xff08;Interface&#xff09;三、核心區別總結四、使用場景對比五、從設計思想理解最佳實踐在Java中&#xff0c;抽象類&#xff08;Abstract Class&#xff09;和接口&#xff08;Interface&#xff0…

Apache OFBiz Scrum 組件命令注入漏洞

【嚴重】Apache OFBiz Scrum 組件命令注入漏洞 漏洞描述 Apache OFBiz 是一款知名的開源企業資源規劃(ERP)解決方案&#xff0c;它提供了一整套開箱即用的企業級應用。Scrum 是 OFBiz 的一個插件&#xff0c;旨在為敏捷開發團隊提供項目管理功能&#xff0c;其中包括與 SVN 版…

FastAPI入門:多個文件、后臺任務、元數據和文檔 URL

更大的應用 - 多個文件 假設文件結構如下&#xff1a;. ├── app # 「app」是一個 Python 包 │ ├── __init__.py # 這個文件使「app」成為一個 Python 包 │ ├── main.py # 「main」模塊&#xff0c;例如 import app.main │ ├…

一個示例mcp agent功能的交互式框架

https://github.com/whym3/Deepseek_MCPDeepseek_MCP https://github.com/whym3/Deepseek_MCP Deepseek_MCP是一個演示mcp agent的框架&#xff0c;基于Flask開發&#xff0c;支持在瀏覽器采用交互方式與deepseek及agent對話。需要注冊外部Deepseek api&#xff0c;不支持本地…