当前位置: 首页 > news >正文

机器学习笔记——常用损失函数

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。

在这里插入图片描述

热门专栏

机器学习

机器学习笔记合集

深度学习

深度学习笔记合集

文章目录

  • 热门专栏
    • 机器学习
    • 深度学习
  • 损失函数
    • 一、回归问题中的损失函数
      • 1. 均方误差(Mean Squared Error, MSE)
      • 2. 平均绝对误差(Mean Absolute Error, MAE)
      • 3. 对数余弦损失(Log-Cosh Loss)
      • 4. Huber 损失(Huber Loss)
      • 5. 平均平方对数误差(Mean Squared Logarithmic Error, MSLE)
      • 总结
    • 二、分类问题中的损失函数
      • 1. 0-1 损失(0-1 Loss)
      • 2. 对数损失(Log Loss)或交叉熵损失(Cross-Entropy Loss)
        • 二分类问题
        • 多分类问题
      • 3. Focal 损失(Focal Loss)
      • 4. Hinge 损失(合页损失)
      • 5. Kullback-Leibler 散度(KL Divergence)
      • 总结

损失函数

一、回归问题中的损失函数

1. 均方误差(Mean Squared Error, MSE)

定义

MSE = 1 n ∑ i = 1 n ( y i − y ^ i ) 2 \text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 MSE=n1i=1n(yiy^i)2

  • 描述:MSE 衡量的是预测值和真实值之间的平方误差的平均值。对较大的误差会进行更大的惩罚,因此它对异常值(outliers)非常敏感。
  • 应用场景:线性回归、岭回归等模型的损失函数。
  • 优点:简单易于理解,容易求导和计算。
  • 缺点对异常值敏感,可能导致模型被少数异常样本主导。

2. 平均绝对误差(Mean Absolute Error, MAE)

定义
MAE = 1 n ∑ i = 1 n ∣ y i − y ^ i ∣ \text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i| MAE=n1i=1nyiy^i

  • 描述:MAE 衡量的是预测值和真实值之间的绝对误差的平均值。它对每个误差的惩罚是线性的,因此对异常值的惩罚不如 MSE 严重。
  • 应用场景:在对异常值不敏感的回归任务中使用。
  • 优点对异常值不敏感,能够更加稳定地反映模型性能。
  • 缺点:在优化过程中,绝对值函数不可导,求解困难。

3. 对数余弦损失(Log-Cosh Loss)

定义
Log-Cosh Loss = 1 n ∑ i = 1 n log ⁡ ( cosh ⁡ ( y i − y ^ i ) ) \text{Log-Cosh Loss} = \frac{1}{n} \sum_{i=1}^{n} \log\left(\cosh\left(y_i - \hat{y}_i\right)\right) Log-Cosh Loss=n1i=1nlog(cosh(yiy^i))

说明: cosh ⁡ ( x ) \cosh(x) cosh(x): 双曲余弦函数,公式为 cosh ⁡ ( x ) = e x + e − x 2 \cosh(x) = \frac{e^x + e^{-x}}{2} cosh(x)=2ex+ex

  • 描述:对数余弦损失是Huber 损失的变体,它的行为类似于 MAE,同时对大误差有更小的增长率。
  • 应用场景:适用于异常值影响较大的回归任务。
  • 优点:具有平滑性,易于求导对小误差敏感对大误差鲁棒
  • 缺点:相比其他损失函数计算复杂度较高。

4. Huber 损失(Huber Loss)

定义
L ( y i , y ^ i ) = { 1 2 ( y i − y ^ i ) 2 if  ∣ y i − y ^ i ∣ ≤ δ , δ ⋅ ∣ y i − y ^ i ∣ − 1 2 δ 2 if  ∣ y i − y ^ i ∣ > δ . L(y_i, \hat{y}_i) = \begin{cases} \frac{1}{2} (y_i - \hat{y}_i)^2 & \text{if } |y_i - \hat{y}_i| \leq \delta, \\ \delta \cdot |y_i - \hat{y}_i| - \frac{1}{2} \delta^2 & \text{if } |y_i - \hat{y}_i| > \delta. \end{cases} L(yi,y^i)={21(yiy^i)2δyiy^i21δ2if yiy^iδ,if yiy^i>δ.

  • δ \delta δ: 超参数,定义切换 MSE 和 MAE 的阈值。
  • ∣ y i − y ^ i ∣ |y_i - \hat{y}_i| yiy^i: 误差的绝对值。
  • 描述:Huber 损失是MSE 和 MAE 的折中。对于小误差,使用 MSE;对于大误差,使用 MAE,从而对异常值有一定的鲁棒性。
  • 应用场景:回归问题中存在异常值,但又不希望过于忽略异常值的场景。
  • 优点对小误差敏感,同时对大误差具有一定的抗干扰性
  • 缺点:参数 ( δ \delta δ) 需要手动调节,不同数据集效果不同。

5. 平均平方对数误差(Mean Squared Logarithmic Error, MSLE)

定义
MSLE = 1 n ∑ i = 1 n ( log ⁡ ( 1 + y i ) − log ⁡ ( 1 + y ^ i ) ) 2 \text{MSLE} = \frac{1}{n} \sum_{i=1}^{n} \left( \log(1 + y_i) - \log(1 + \hat{y}_i) \right)^2 MSLE=n1i=1n(log(1+yi)log(1+y^i))2

  • n n n: 数据点的总数。
  • y i y_i yi: 第 i i i 个真实值(必须为非负数)。
  • y ^ i \hat{y}_i y^i: 第 i i i 个预测值(必须为非负数)。
  • log ⁡ ( 1 + x ) \log(1 + x) log(1+x): 对 x x x 加 1 后取自然对数,用于平滑较小的值和避免对 0 的对数操作。
  • 描述:MSLE 用于处理目标值差异较大有显著指数增长趋势的情况。它更关注相对误差,而非绝对误差。
  • 应用场景:如人口增长预测、市场销量预测等场景。
  • 优点:对大数值的预测更稳定,对目标值的比例关系有更好的衡量。
  • 缺点:当目标值非常小时,惩罚效果不明显。

总结

损失函数描述应用场景优点缺点
均方误差 (MSE)衡量预测值和真实值之间平方误差的平均值,对较大误差进行更大惩罚。线性回归、岭回归等简单易于理解,容易求导。对异常值敏感
平均绝对误差 (MAE)衡量预测值和真实值之间绝对误差的平均值对异常值不敏感的回归任务对异常值不敏感,反映模型性能更稳定。优化困难,绝对值函数不可导
对数余弦损失 (Log-Cosh)Huber 损失的变体,既能捕捉小误差,也对大误差有更小的增长率异常值影响较大的回归任务平滑性好,易于求导,适应大误差和小误差。计算复杂度高。
Huber 损失 (Huber Loss)结合MSE和MAE,小误差时使用 MSE,大误差时使用 MAE,平衡异常值的影响。存在异常值但不希望完全忽略的场景对小误差敏感,对大误差有抗干扰性。需调节参数 (delta)。
平均平方对数误差 (MSLE)衡量目标值差异大且有指数增长趋势的情况,关注相对误差而非绝对误差。人口增长预测、市场销量预测等对大数值预测更稳定,适应有比例关系的数据对极小值目标效果不佳。

二、分类问题中的损失函数

1. 0-1 损失(0-1 Loss)

定义

L ( y , y ^ ) = { 0 , if  y = y ^ , 1 , if  y ≠ y ^ . L_(y, \hat{y}) = \begin{cases} 0, & \text{if } y = \hat{y}, \\ 1, & \text{if } y \neq \hat{y}. \end{cases} L(y,y^)={0,1,if y=y^,if y=y^.

  • 描述:0-1 损失表示分类是否正确0 为正确分类,1 为错误分类。它无法直接用于模型优化,只能用于评价模型性能。
  • 应用场景:模型性能的评估,如准确率(Accuracy)的计算。
  • 优点:简单直观,能够清晰判断分类是否正确。
  • 缺点不可导,无法用于梯度优化

2. 对数损失(Log Loss)或交叉熵损失(Cross-Entropy Loss)

  • 描述:交叉熵损失衡量的是预测分布和真实分布之间的距离。在二分类与 Sigmoid 函数结合;在多分类与 Softmax 函数结合
  • 应用场景:广泛用于逻辑回归、神经网络等分类任务。
  • 优点:能够很好地度量概率分布之间的差异,梯度计算简单。
  • 缺点对数据不平衡较为敏感
二分类问题

在二分类问题中,交叉熵损失衡量真实标签 ( y y y ) 和预测概率 ( y ^ \hat{y} y^ ) 之间的差异。公式为:

L ( y , y ^ ) = − [ y log ⁡ ( y ^ ) + ( 1 − y ) log ⁡ ( 1 − y ^ ) ] L(y, \hat{y}) = - \left[ y \log(\hat{y}) + (1 - y) \log(1 - \hat{y}) \right] L(y,y^)=[ylog(y^)+(1y)log(1y^)]
符号说明

  • y ∈ { 0 , 1 } y \in \{0, 1\} y{0,1}:真实标签(0 表示负类,1 表示正类)。
  • y ^ ∈ [ 0 , 1 ] \hat{y} \in [0, 1] y^[0,1]:预测为正类的概率。
多分类问题

对于 k k k 个类别的多分类问题,交叉熵损失扩展为多个输出类的加权损失,公式为:

L ( y , y ^ ) = − ∑ i = 1 k y i log ⁡ ( y ^ i ) L(y, \hat{y}) = - \sum_{i=1}^{k} y_i \log(\hat{y}_i) L(y,y^)=i=1kyilog(y^i)

符号说明

  • k k k:类别数量。
  • y i ∈ { 0 , 1 } y_i \in \{0, 1\} yi{0,1}:第 i i i 类的真实标签,使用独热编码表示(只有一个值为 1,其余为 0)。
  • y ^ i ∈ [ 0 , 1 ] \hat{y}_i \in [0, 1] y^i[0,1]:模型预测的第 i i i 类的概率,通常通过 softmax 函数获得。

Sigmoid 函数:

  • 公式:
    σ ( z ) = 1 1 + e − z \sigma(z)=\frac1{1+e^{-z}} σ(z)=1+ez1
  • 其中, z z z 是模型的线性输出,即预测值。
  • Sigmoid 函数将模型的线性输出 z z z转化为一个介于 0 和 1 之间的值,表示属于类别 1 的概率。

交叉熵损失:

  • 在二分类任务中,真实标签 y y y通常取 0(负类)或1(正类)。
  • 交叉熵损失的公式为 L o s s = − [ y ⋅ log ⁡ ( p ) + ( 1 − y ) ⋅ log ⁡ ( 1 − p ) ] \mathrm{Loss}=-\left[y\cdot\log(p)+(1-y)\cdot\log(1-p)\right] Loss=[ylog(p)+(1y)log(1p)]
    • 其中, p = σ ( z ) p=\sigma(z) p=σ(z)是经过 Sigmoid 函数后模型预测属于类别 1 的概率。

Softmax 函数:

  • 公式: S o f t m a x ( z i ) = e z i ∑ j e z j \mathrm{Softmax}(z_i) = \frac{e^{z_i}}{\sum_j e^{z_j}} Softmax(zi)=jezjezi
  • 其中, z i z_i zi 是第 i i i 个类别的得分, ∑ j e z j \sum_j e^{z_j} jezj 是所有类别的得分的指数和。
  • Softmax 函数将每个类别的得分 z i z_i zi 转化为一个概率 p i p_i pi,即样本属于第 i i i 个类别的概率。

交叉熵损失:

  • 在多分类任务中,真实标签 y y y 是一个 one-hot 编码向量,即样本的真实类别的概率是 1,其他类别的概率是 0。
  • 交叉熵损失的公式: Loss = − ∑ i y i ⋅ log ⁡ ( p i ) \text{Loss} = -\sum_i y_i \cdot \log(p_i) Loss=iyilog(pi)
    • 其中, p i p_i pi 是 Softmax 函数输出的属于类别 i i i 的概率, y i y_i yi 是真实的类别标签,通常为 0 或 1。

3. Focal 损失(Focal Loss)

定义
Focal Loss = − α t ( 1 − p ^ t ) γ log ⁡ ( p ^ t ) \text{Focal Loss} = -\alpha_t (1 - \hat{p}_t)^\gamma \log(\hat{p}_t) Focal Loss=αt(1p^t)γlog(p^t)

  • 其中:
    • p ^ t \hat{p}_t p^t 是模型对正确类别的预测概率。
    • α t \alpha_t αt 是类别平衡权重,用来调整类别不平衡问题, α t ∈ [ 0 , 1 ] \alpha_t \in [0, 1] αt[0,1],通常用于为不同类别分配不同的权重。
    • γ \gamma γ 是调节因子,控制模型对难分类样本的关注程度,常取值为 0 到 5 之间,通常选取 γ = 2 \gamma = 2 γ=2 效果较好。

注:t 是该样本的真实类别标签

  1. p ^ t \hat{p}_{t} p^t: 这是模型对样本真实类别 t t t 的预测概率。假设样本属于类别 t t t,则 p ^ t \hat{p}_{t} p^t 就是模型对类别 t t t 的预测概率。如果是二分类任务, t t t 为 1 代表正类,为 0 代表负类;如果是多分类任务, t t t 是类别的索引。
  2. α t \alpha_{t} αt: 这是类别 t t t 的权重系数。通过 t t t,可以为当前样本所属类别 t t t 分配一个权重 α t \alpha_{t} αt。对于不平衡数据集来说, α t \alpha_{t} αt 通常设置为少数类的权重大,主要用来调整损失函数对不同类别样本的关注程度。
  • 描述:Focal 损失是对交叉熵损失的改进,用于解决类别不平衡问题。通过调节参数 ( γ \gamma γ ) 和 ( α \alpha α ),它增加了对困难样本的关注,降低了对易分类样本的影响。
  • 应用场景:目标检测中的单阶段检测器(如 RetinaNet),以及其他类别不平衡的分类问题。
  • 优点:有效解决类别不平衡问题,增强模型对困难样本的关注。
  • 缺点:参数选择复杂,训练时间较长。

4. Hinge 损失(合页损失)

定义:对于二分类问题:
L ( y , y ^ ) = max ⁡ ( 0 , 1 − y ⋅ y ^ ) L(y, \hat{y}) = \max(0, 1 - y \cdot \hat{y}) L(y,y^)=max(0,1yy^)

其中, y ∈ { − 1 , 1 } y \in \{ -1, 1 \} y{1,1} y ^ \hat{y} y^是模型的预测输出。

  • 描述:Hinge 损失用于支持向量机(SVM)中。它在样本被正确分类且间隔大于 1 时,损失为 0;否则损失为 1。旨在最大化样本的分类间隔。
  • 应用场景:线性支持向量机、核支持向量机等。
  • 优点:有助于最大化分类间隔,提高模型的泛化能力。
  • 缺点:对于误差大的样本损失增长过快。

5. Kullback-Leibler 散度(KL Divergence)

定义
K L ( p ∥ q ) = ∑ i p ( x i ) log ⁡ p ( x i ) q ( x i ) KL(p \parallel q) = \sum_i p(x_i) \log \frac{p(x_i)}{q(x_i)} KL(pq)=ip(xi)logq(xi)p(xi)

  • 描述:KL 散度衡量两个概率分布之间的差异,常用于无监督学习中的聚类分析
  • 应用场景:概率模型的优化,如变分自编码器(VAE)、生成对抗网络(GAN)中的判别模型。
  • 优点:对概率分布之间的微小差异非常敏感
  • 缺点:对稀疏分布的概率模型不稳定

总结

损失函数描述应用场景优点缺点
0-1 损失 (0-1 Loss)分类正确为 0,错误为 1,用于衡量分类是否正确。准确率等分类性能评估简单直观。不可导,无法用于优化
交叉熵损失 (Cross-Entropy)衡量预测分布和真实分布之间的距离,二分类结合 Sigmoid,多分类结合 Softmax。逻辑回归、神经网络等分类任务很好地衡量概率分布差异,梯度计算简单。对数据不平衡敏感
Focal 损失 (Focal Loss)交叉熵的改进,通过调节 ( gamma ) 和 ( alpha ),增加对困难样本的关注,减少易分类样本影响,解决类别不平衡问题。类别不平衡问题,如目标检测 (RetinaNet)增强对困难样本的关注,解决类别不平衡参数选择复杂,训练时间较长。
Hinge 损失 (合页损失)用于 SVM,正确分类且间隔大于 1 时损失为 0,旨在最大化分类间隔。线性 SVM、核 SVM提高泛化能力,有助于最大化分类间隔对误差大的样本损失增长快。
KL 散度 (KL Divergence)衡量两个概率分布的差异,常用于无监督学习中的聚类分析。概率模型优化,如 VAE、GAN概率分布的差异敏感稀疏分布不稳定

相关文章:

机器学习笔记——常用损失函数

大家好,这里是好评笔记,公主号:Goodnote,专栏文章私信限时Free。本笔记介绍机器学习中常见的损失函数和代价函数,各函数的使用场景。 热门专栏 机器学习 机器学习笔记合集 深度学习 深度学习笔记合集 文章目录 热门…...

Nginx--日志(介绍、配置、日志轮转)

前言:本博客仅作记录学习使用,部分图片出自网络,如有侵犯您的权益,请联系删除 一、Nginx日志介绍 nginx 有一个非常灵活的日志记录模式,每个级别的配置可以有各自独立的访问日志, 所需日志模块 ngx_http_log_module 的…...

2025 vue3面试题汇总,通俗易懂

一、基础概念与核心特性 1. Vue3 相比 Vue2 的改进(通俗版) 问题:Vue3 比 Vue2 好在哪? 答案: 更快: Proxy 代理:Vue2 的响应式像“逐个监听保险箱”(每个属性单独监听&#xff0…...

一周学会Flask3 Python Web开发-Debug模式开启

锋哥原创的Flask3 Python Web开发 Flask3视频教程: 2025版 Flask3 Python web开发 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili 默认情况,项目开发是普通模式,也就是你修改了代码,必须重启项目,新代码才生效&…...

聚焦于机器人研究,提出 FuSe 方法,通过语言锚定对通用机器人策略进行微调 视觉、触觉、听觉

聚焦于机器人研究,提出 FuSe 方法,通过语言锚定对通用机器人策略进行微调,利用多模态传感器提升性能,在多种任务中表现优异,具备跨模态推理能力。 研究背景:与世界交互需多感官协作,当前先进通用机器人策略多依赖视觉和本体感受数据训练,忽略其他模态信息。方法:FuSe …...

C++ 无锁队列:原理与实现

引言 在多线程编程中,队列是一种常用的数据结构。传统的队列在多线程环境下访问时,通常需要使用锁机制来保证数据的一致性和线程安全。然而,锁的使用会带来性能开销,尤其是在高并发场景下,频繁的加锁和解锁操作可能成…...

web的分离不分离:前后端分离与不分离全面分析

让我们一起走向未来 🎓作者简介:全栈领域优质创作者 🌐个人主页:百锦再新空间代码工作室 📞工作室:新空间代码工作室(提供各种软件服务) 💌个人邮箱:[1504566…...

MobileSal:极其高效的RGB-D显著性物体检测模型

摘要 问题一:什么叫做MobileSal? MobileSal 是指一种用于移动设备上的显著性检测(Saliency Detection)方法,通常是针对在资源受限的环境(如智能手机)上运行的视觉模型。 问题二:什…...

【个人总结】1. 开发基础 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充)

【个人总结】1. 开发基础 工作三年的嵌入式常见知识点梳理及开发技术要点(欢迎指正、补充) 工作快三年以来 分别进行了嵌入式MCU及外设开发、RTOS、传感器、文件系统及USB、Linux、GUI、通讯协议、毫米波雷达、少量的DSP和物联网开发。 特此总结&#x…...

硬核技术组合!用 DeepSeek R1、Ollama、Docker、RAGFlow 打造专属本地知识库

文章目录 一、引言二、安装Ollama部署DeepSeekR1三、安装Docker四、安装使用RAGFlow4.1 系统架构4.2 部署流程4.3 使用RAGFlow4.4 在RAGFlow中新增模型4.5 创建知识库4.6 创建私人助理使用RGA 一、引言 本地部署DeepSeek R1 Ollama RAGFlow构建个人知识库,通过将…...

MySQL官网驱动下载(jar包驱动和ODBC驱动)【详细教程】

1.打开MySQL的官网,选择下载(Download) MySQL[这里是图片001]https://www.mysql.com/cn/ 2.往下划点击MySQL Community(GPL)Downloads 3.要下载MySQL的jar包的选择Connector/J 4.进入后,根据自己的需求选择相应的版本 5.下载完成后,进行解压…...

idea 2019.3常用插件

idea 2019.3常用插件 文档 idea 2019.3常用插件idea 2023.3.7常用插件 idea 2019.3常用插件 插件名称插件版本说明1AceJump3.5.9AceJump允许您快速将插入符号导航到编辑器中可见的任何位置。只需按“ctrl;”,键入一个字符,然后在Ace Jump…...

对CSS了解哪些?

CSS(Cascading Style Sheets,层叠样式表)是用来描述HTML文档外观和布局的语言。以下是对CSS的常见了解范围: 1. CSS 基础 选择器:如通用选择器 (*)、类型选择器、类选择器 (.class)、ID选择器 (#id)、后代选择器、伪类…...

TikTok账户安全指南:如何取消两步验证?

TikTok账户安全指南:如何取消两步验证? 在这个数字化的时代,保护我们的在线账户安全变得尤为重要。TikTok,作为全球流行的社交媒体平台,其账户安全更是不容忽视。两步验证作为一种增强账户安全性的措施,虽…...

从零到一:构建现代 React 应用的完整指南

1. create-react-app (CRA) 简介: create-react-app 是官方推荐的 React 项目脚手架工具,提供了一个开箱即用的开发环境,帮助开发者快速启动 React 应用。它会自动配置 Webpack、Babel、ESLint 等工具,让你专注于开发而不需要手动配置工具链。 特点: 零配置:CRA 自动配…...

【Python爬虫(26)】Python爬虫进阶:数据清洗与预处理的魔法秘籍

【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取&#xff…...

机器学习数学基础:28.卡方检验

卡方检验教程 一、引言 在统计学的广阔领域中,卡方检验(Chi - Square Test)宛如一把锐利的手术刀,能够精准剖析数据背后隐藏的关系与模式。它主要用于两大核心任务:一是深入分析两个及两个以上分类变量之间错综复杂的…...

【工具插件类教学】实现运行时2D物体交互的利器Runtime2DTransformInteractor

目录 ​编辑 1. 插件核心功能 1.1 基础变换操作 1.2 高级特性 2. 安装与配置 2.1 导入插件 2.2 配置控制器参数 2.3 为物体添加交互功能 3. 使用示例 3.1 基础操作演示 3.2 多选与批量操作 3.3 自定义光标与外观 4. 高级配置技巧 4.1 动态调整包围框控件尺寸 4.…...

回调处理器

文章目录 什么是回调处理器回调处理器的工作流程回调处理器的使用自定义链组件中的回调 内置回调处理器自定义回调处理器 在编程领域中,回调是一个非常重要的概念。简而言之,回调是一种特殊的函数或方法,它可以被传递给另一个函数作为参数&am…...

Redis-03高级篇中-多级缓存:

说明: 分布式缓存和多级缓存的视频,与springcloud高级篇redis的一模一样。这里就不在重复学习了,如果后面用到关于redis的配置,直接到springcloud模块安装的redis中学习即可。 多级缓存 0.学习目标 1.什么是多级缓存 传统的缓…...

IDEA运行Tomcat出现乱码问题解决汇总

最近正值期末周,有很多同学在写期末Java web作业时,运行tomcat出现乱码问题,经过多次解决与研究,我做了如下整理: 原因: IDEA本身编码与tomcat的编码与Windows编码不同导致,Windows 系统控制台…...

云原生核心技术 (7/12): K8s 核心概念白话解读(上):Pod 和 Deployment 究竟是什么?

大家好,欢迎来到《云原生核心技术》系列的第七篇! 在上一篇,我们成功地使用 Minikube 或 kind 在自己的电脑上搭建起了一个迷你但功能完备的 Kubernetes 集群。现在,我们就像一个拥有了一块崭新数字土地的农场主,是时…...

AspectJ 在 Android 中的完整使用指南

一、环境配置(Gradle 7.0 适配) 1. 项目级 build.gradle // 注意:沪江插件已停更,推荐官方兼容方案 buildscript {dependencies {classpath org.aspectj:aspectjtools:1.9.9.1 // AspectJ 工具} } 2. 模块级 build.gradle plu…...

【网络安全】开源系统getshell漏洞挖掘

审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

【学习笔记】erase 删除顺序迭代器后迭代器失效的解决方案

目录 使用 erase 返回值继续迭代使用索引进行遍历 我们知道类似 vector 的顺序迭代器被删除后,迭代器会失效,因为顺序迭代器在内存中是连续存储的,元素删除后,后续元素会前移。 但一些场景中,我们又需要在执行删除操作…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代,海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构,在处理大规模数据抓取任务时展现出强大的能力。然而,随着业务规模的不断扩大和数据抓取需求的日益复杂,传统…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中,网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时,开发者迫切需要一套高效、可靠且跨平台的调试方案。过去,我们或多或少使用过 Chrome DevTools、Remote Debug…...

LCTF液晶可调谐滤波器在多光谱相机捕捉无人机目标检测中的作用

中达瑞和自2005年成立以来,一直在光谱成像领域深度钻研和发展,始终致力于研发高性能、高可靠性的光谱成像相机,为科研院校提供更优的产品和服务。在《低空背景下无人机目标的光谱特征研究及目标检测应用》这篇论文中提到中达瑞和 LCTF 作为多…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...

Qt的学习(一)

1.什么是Qt Qt特指用来进行桌面应用开发(电脑上写的程序)涉及到的一套技术Qt无法开发网页前端,也不能开发移动应用。 客户端开发的重要任务:编写和用户交互的界面。一般来说和用户交互的界面,有两种典型风格&…...