文章目录

  • 一、MAE、MSE、r²概念说明
  • 二、MAE(平均绝对误差):用"房价预测"理解误差测量
  • 三、MSE(均方误差):误差的"放大镜"
    • 1、概念说明
    • 2、 sklearn代码实践
    • 3、流程总结
  • 四、R²:理解模型的"解释能力"
    • 1. 概念描述
    • 2、sklearn代码示例
  • 五、应用场景:从理论到实践
    • 房价预测场景
    • 股票价格预测场景
    • 销售预测场景
    • 注意事项
  • 六、总结

想象一下,你是一个天气预报员,每天都要预测明天的温度。有时候你预测25度,实际是23度;有时候预测30度,实际是28度。这些预测到底准不准?误差有多大?如果只是说"差不多",显然不够专业。

在机器学习中,回归模型预测连续数值(如房价、温度、销售额),我们需要精确的"尺子"来衡量预测的准确性。MAE、MSE、r²就是这样的"尺子",它们告诉我们模型预测得有多好,误差有多大,以及模型解释数据的能力有多强。

一、MAE、MSE、r²概念说明

回归评估指标就像三种不同的测量工具:MAE是"直尺"(简单直接),MSE是"放大镜"(对误差更敏感),r²是"温度计"(衡量解释能力)。

核心定义

  • MAE(平均绝对误差):预测值与真实值差值的绝对值的平均
  • MSE(均方误差):预测值与真实值差值的平方的平均
  • r²(决定系数):模型解释数据变异性的比例

 

对比分析

指标特点适用场景优势劣势
MAE简单直接对异常值不敏感易于理解对误差不够敏感
MSE对误差敏感需要惩罚大误差数学性质好单位不直观
相对指标模型解释能力标准化比较可能误导

 

二、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的平均值和标准差,平均值反映整体性能,标准差反映稳定性,为模型选择提供可靠依据。

 

四、R²:理解模型的"解释能力"

1. 概念描述

概念描述
R²就像测量一杯混合果汁中"橙汁"的比例,它告诉我们数据的总变化中有多少能被模型解释,多少是模型无法解释的"其他成分"。在房价预测中,如果R²=0.85,说明85%的房价变化能被模型解释,剩下的15%可能是装修风格、市场情绪等无法量化的因素。

 

R²的计算基于方差分解
首先计算数据的总变异量(所有房价与平均房价的差异),然后计算模型无法解释的变异量(预测房价与真实房价的差异),最后用公式R² = 1 - (残差方差/总方差)得到模型能解释的变异比例。这个比例范围在0到1之间,越接近1说明模型解释能力越强。
 

实际应用

在波士顿房价预测中,R²=0.734意味着模型解释了73.4%的房价变异性,这是一个良好的表现。相比之下,股票收益预测的R²通常只有0.3左右,因为股票价格受太多不可预测因素影响。R²帮助我们判断模型是否真正捕捉到了数据中的规律,而不仅仅是预测得准不准,为模型选择和优化提供了重要依据。

 

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()# 设置评估指标为R²(决定系数)
# R²衡量模型解释数据变异性的能力,范围[0,1],越接近1越好
scoring = 'r2'# ============================================================================
# 第五步:执行交叉验证
# ============================================================================# 使用交叉验证评估模型性能
result = cross_val_score(model,           # 要评估的模型X, Y,           # 特征和目标变量cv=kfold,       # 交叉验证策略scoring=scoring  # 评估指标
)# ============================================================================
# 第六步:输出结果
# ============================================================================# 打印交叉验证结果
# result.mean():10次验证的平均R²
# result.std():10次验证的R²标准差
print('R2: %.3f (%.3f)' % (result.mean(), result.std()))# ============================================================================
# R²概念详解
# ============================================================================"""
R²(决定系数)详解:1. 定义:R² = 1 - (SS_res / SS_tot)- SS_res:残差平方和(模型无法解释的变异)- SS_tot:总平方和(数据的总变异)- 范围:[0, 1],越接近1越好2. 特点:- 相对指标:无量纲,便于比较不同模型- 解释能力:衡量模型解释数据变异性的比例- 标准化:不受数据规模影响3. 与MSE/MAE的区别:- MSE/MAE:绝对误差指标,单位与目标变量相同- R²:相对指标,无量纲,便于模型比较4. 波士顿房价数据集中的R²:- 含义:模型能解释多少房价的变异性- 业务解释:R²越高,模型预测越可靠- 应用价值:为模型选择和优化提供依据
"""R2: 0.718 (0.099)

该模型的R²为0.718,能解释71.8%的房价变异性,在房价预测中表现良好,剩余28.2%的房价变化无法解释;标准差为0.099,表明10次交叉验证的R²波动范围较小,95%情况下R²在0.520到0.916之间。

 

五、应用场景:从理论到实践

房价预测场景

在房价预测中,MAE直接反映平均预测误差(如±5万元),帮助房地产中介快速评估预测准确性;MSE对大误差更敏感,适合银行进行风险评估,因为极端预测错误可能导致更大的投资损失;R²衡量模型解释房价变异的能力,帮助投资者理解模型的可信度。

股票价格预测场景

股票价格预测中,MAE评估平均预测偏差,为投资者提供整体预测精度;MSE对大幅波动更敏感,适合短期交易者关注极端价格变动;R²衡量模型捕捉市场趋势的能力,长期投资者更关注这个指标来判断模型是否真正理解了市场规律。

销售预测场景

销售预测中,MAE直接反映预测准确性,库存管理人员据此制定采购计划;MSE对销售峰值更敏感,帮助风险管理部门评估库存积压或缺货风险;R²衡量模型解释销售变化的能力,为管理层提供模型可信度的量化依据。

注意事项

  1. 数据质量:异常值会影响MSE,但对MAE影响较小
  2. 业务需求:不同场景对误差的容忍度不同
  3. 模型比较:必须在相同数据集上比较不同模型
  4. 过拟合风险:r²过高可能表示过拟合

 

六、总结

回归评估指标就像预测模型的"体检报告",MAE、MSE、r²从不同角度评估模型的预测能力。

核心要点回顾

  • MAE关注平均误差,MSE关注误差分布,r²关注解释能力
  • 不同指标适用于不同业务场景
  • 综合使用多个指标能全面评估模型性能

关键概念回顾

  • MAE = 平均绝对误差(越小越好)
  • MSE = 均方误差(越小越好)
  • r² = 决定系数(越接近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;不支持本地…