对抗攻击的详细解析:原理、方法与挑战

对抗攻击的详细解析:原理、方法与挑战

对抗攻击(Adversarial Attack)是现代机器学习模型,尤其是深度学习模型中的一个关键安全问题。其本质在于,通过对输入数据添加精微的扰动,人类难以察觉这些扰动,但它们会导致模型产生完全错误的预测。对抗攻击揭示了深度学习模型对数据中某些脆弱特征的过度依赖,表明模型并非如预期般鲁棒。
在这里插入图片描述

图片来源:AI安全-对抗攻击与防御_哔哩哔哩_bilibili

对抗攻击中的核心问题

在传统的机器学习任务中,训练集和测试集往往来自 相同的数据分布 P P P 。然而,对抗攻击通过在输入数据上引入极其微小的扰动,使得输入数据的分布发生了细微的改变。这种变化对于人类而言几乎无法感知,但对于模型,可能引发极大差异,甚至导致分类结果的完全错误。模型的这种脆弱性源自它们在高维特征空间中对某些输入特征的过度敏感性。

假设一个模型 f f f 是在分布 P P P 上训练的,并且输入 x x x 表示一张图片, f ( x ) f(x) f(x) 是模型对 x x x 的分类输出。对抗攻击试图找到一个微小的扰动 δ \delta δ,使得模型在输入 x + δ x + \delta x+δ 时输出错误的结果,即:

f ( x + δ ) ≠ f ( x ) f(x + \delta) \neq f(x) f(x+δ)=f(x)

尽管从视觉上, x x x x + δ x + \delta x+δ 对人类而言几乎完全相同,然而微小的扰动 δ \delta δ 可以使得模型的预测发生显著的变化。这就是对抗攻击问题的核心所在。

为什么对抗攻击能够成功?

对抗攻击之所以能够成功,是由于深度学习模型对输入特征的敏感性,这些特征往往在人类难以察觉的维度中发挥作用。神经网络通过非线性变换从输入数据中提取特征,每层网络的输出是前一层的非线性组合。当一个小的扰动 δ \delta δ 被添加到输入数据时,网络的激活值可能发生极大的变化,导致最终的分类结果出现显著的错误。这一现象可以用非线性特征空间中的放大效应来解释,即小的输入扰动在深度模型的高维空间中经过层层叠加和变换后,导致最终结果产生巨大差异。

对抗攻击的数学原理与常见方法

对抗攻击方法有多种实现,它们的核心都基于优化扰动 δ \delta δ 使模型输出错误结果。

对抗攻击发生在模型训练之后,主要在模型 推理阶段 进行。攻击者不调整模型的参数,而是针对一个已经训练好的模型,固定模型参数,通过修改输入来欺骗模型。此时,目标是 找到输入数据的敏感方向,沿着这个方向微调输入,让模型做出错误预测 。此时,使用的是梯度上升来增大输入数据的损失,而不是训练模型的参数。

以下是几种常见的对抗攻击方法及其数学原理:

1. Fast Gradient Sign Method (FGSM)

FGSM 是最早的对抗攻击方法之一,其目标是通过一次性施加扰动,沿着损失函数梯度上升的方向,使模型错误分类。其本质是找到损失函数最大变化的方向,并沿该方向施加固定大小的扰动。

在深度学习模型中,梯度 代表的是损失函数相对于输入的变化率。具体来说,梯度的方向是使损失增加最快的方向,而不是减少的方向。下面详细解释“敏感方向”这一概念,以及为什么梯度可以指示出这个方向。

梯度的作用

当我们提到梯度下降时,通常指的是在训练过程中更新模型参数(如权重和偏置)的算法,其目的是找到使损失函数下降最快的方向,以优化模型的预测性能。

然而,在对抗攻击中,我们并不是要降低损失,而是要增大损失,即让模型预测出错。因此,我们不再关心梯度下降的方向,而是关心梯度上升的方向,即使损失函数增加最快的方向。这个方向可以帮助我们找到输入空间中的一个“敏感方向”,即通过沿着这个方向添加微小的扰动,就可以导致模型的预测错误。

敏感方向的定义

对于某个输入图像 x x x,深度学习模型通过计算损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 来衡量模型的预测 f ( x ) f(x) f(x) 与真实标签 y y y 之间的差异。通过计算损失函数对输入 x x x 的梯度 ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y),我们得到损失随着输入变化最快的方向。这个梯度可以理解为敏感方向,因为沿着这个方向加扰动会导致模型的输出发生最大变化。

简单来说:

  • 如果我们沿着梯度方向对输入图像施加扰动,即加上微小的噪声,这种微调将会放大模型的误差,使模型对输入的预测发生显著变化。
  • 因此,梯度方向表明了输入空间中模型最容易出错的方向,这就是我们所谓的“敏感方向”。
为什么梯度是“敏感方向”?

在 FGSM 这种攻击中,关键是通过梯度来找到对模型的预测影响最大的输入扰动:

  • 梯度 ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y) 表示,当输入 x x x 沿着该方向变化时,损失函数增加得最快。
  • 由于深度学习模型通过复杂的非线性变换来提取输入的特征,因此对模型最敏感的特征往往对应于损失函数变化最大的方向。
  • 当我们沿着这个梯度方向施加扰动时,模型会更加倾向于犯错误,从而导致分类结果发生改变。

因此,梯度在这里指示了模型对输入的“敏感性”,并且告诉我们扰动在哪个方向上会最有效地干扰模型的预测。

具体步骤

给定一个深度学习模型 f ( x ) f(x) f(x),它可以预测输入图像 x x x 的类别。模型的损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 衡量了模型预测结果 f ( x ) f(x) f(x) 和真实标签 y y y 之间的差异。FGSM 利用损失函数对输入 x x x 的梯度来确定该图像的 敏感方向 ,即哪个方向最容易使模型犯错。

  1. 计算梯度:
    首先,我们计算损失函数 L ( f ( x ) , y ) L(f(x), y) L(f(x),y) 对输入图像 x x x 的梯度:
    ∇ x L ( f ( x ) , y ) \nabla_x L(f(x), y) xL(f(x),y)
    这个梯度代表损失函数在输入空间中增加最快的方向。

  2. 扰动生成:
    FGSM 沿着梯度方向加上符号(即正负方向),并且根据常数 ϵ \epsilon ϵ 来调整扰动的大小:
    x ′ = x + ϵ ⋅ sign ( ∇ x L ( f ( x ) , y ) ) x' = x + \epsilon \cdot \text{sign}(\nabla_x L(f(x), y)) x=x+ϵsign(xL(f(x),y))
    这里, ϵ \epsilon ϵ 是一个很小的正数,控制扰动的幅度。符号函数 sign ( ∇ x L ( f ( x ) , y ) ) \text{sign}(\nabla_x L(f(x), y)) sign(xL(f(x),y)) 仅保留梯度的方向,而忽略其幅度。

  3. 结果分析:
    对于人类来说,扰动后的图像 x ′ x' x 和原始图像 x x x 几乎没有可见差别。但由于模型高度依赖输入特征中的微小变化, x ′ x' x 很可能会被模型误分类。

关键特点
  • 效率: FGSM 只需一次梯度计算,因此它非常高效。
  • 局限性: FGSM 由于只进行一次扰动,不总是能够找到最强的对抗样本。

2. Projected Gradient Descent (PGD)

PGD 是 FGSM 的扩展版,其通过多次小步的梯度更新来逐步逼近对抗样本,是一种迭代攻击方法。PGD 的攻击效果比 FGSM 更强,因为它使用多次梯度更新来找到更具攻击性的扰动。

具体步骤

PGD 攻击基于多次迭代,每次计算损失函数的梯度并沿着该方向施加小幅度扰动,直到找到对模型最具攻击性的输入。

  1. 初始扰动:
    初始输入为原始图像 x 0 = x x^0 = x x0=x,并在后续步骤中不断更新。

  2. 迭代扰动更新:
    每次迭代计算当前输入 x t x^t xt 的梯度,并加上符号方向的扰动,更新规则为:
    x t + 1 = x t + α ⋅ sign ( ∇ x L ( f ( x t ) , y ) ) x^{t+1} = x^t + \alpha \cdot \text{sign}(\nabla_x L(f(x^t), y)) xt+1=xt+αsign(xL(f(xt),y))
    其中, α \alpha α 是步长大小,控制每次迭代中加入的扰动大小。

  3. 投影操作:
    为了确保最终生成的对抗样本 x ′ x' x 的扰动不超过预设范围(即 ϵ \epsilon ϵ),每次更新后的输入会被投影回原始输入 x x x ϵ \epsilon ϵ 范围内,即:
    x t + 1 = Proj B ( x , ϵ ) ( x t + 1 ) x^{t+1} = \text{Proj}_{B(x, \epsilon)}\left(x^{t+1}\right) xt+1=ProjB(x,ϵ)(xt+1)
    这个投影操作将当前的对抗样本约束在以 x x x 为中心、半径为 ϵ \epsilon ϵ 的球体内,保证最终的对抗样本不会偏离原始图像太远。

  4. 迭代停止:
    在经过多次迭代后(通常几十步),最终的对抗样本 x T x^{T} xT 通常会比一次性生成的 FGSM 对抗样本更具攻击性。

关键特点
  • 更强的攻击性: PGD 通过多次小步扰动逐渐逼近局部最优解,能够生成比 FGSM 更有效的对抗样本。
  • 灵活性: 通过调整步长 α \alpha α 和最大扰动 ϵ \epsilon ϵ,可以灵活控制攻击的强度和扰动的范围。

3. Carlini & Wagner (CW) 攻击

CW 攻击是基于优化的对抗攻击方法。与 FGSM 和 PGD 基于梯度符号生成扰动不同,CW 攻击通过解决一个优化问题来生成对抗样本,力求在最小的扰动下让模型分类出错。

具体步骤

CW 攻击将对抗样本生成视为一个优化问题,目标是在最小化扰动的同时最大化模型的分类错误。它常用 L 2 L_2 L2 范数作为约束条件,即希望生成的扰动 δ \delta δ 尽可能小。

  1. 优化目标:
    CW 攻击的优化目标是:
    min ⁡ δ ∥ δ ∥ p + c ⋅ L ( f ( x + δ ) , y ) \min_{\delta} \|\delta\|_p + c \cdot L(f(x + \delta), y) δminδp+cL(f(x+δ),y)
    其中, ∥ δ ∥ p \|\delta\|_p δp 是扰动的 p p p-范数,通常采用 L 2 L_2 L2 范数 ∥ δ ∥ 2 \|\delta\|_2 δ2,即最小化扰动的整体幅度。 c c c 是权衡因子,用于平衡扰动的大小和损失函数 L ( f ( x + δ ) , y ) L(f(x + \delta), y) L(f(x+δ),y) 的重要性。 L ( f ( x + δ ) , y ) L(f(x + \delta), y) L(f(x+δ),y) 是对抗样本的损失函数。

  2. 目标函数分解:
    CW 攻击将优化问题转化为两个部分:

    • 最小化扰动 δ \delta δ 的大小。
    • 最大化模型的损失函数,使得对抗样本 x + δ x + \delta x+δ 导致错误分类。
  3. 迭代优化:
    通过优化算法(如 Adam 优化器),CW 攻击会反复调整扰动 δ \delta δ,在每一步中平衡损失函数和扰动的大小,直到找到一个既能让模型出错、又保持扰动极小的对抗样本。

  4. 约束扰动:
    优化过程中,CW 攻击通过对 p p p-范数的约束来确保扰动不会过大,避免对抗样本与原始输入的视觉差异过于明显。

关键特点
  • 最小化扰动: CW 攻击通过优化算法生成最小扰动,同时保持高攻击成功率,往往能够生成极难察觉的对抗样本。
  • 灵活性: 可以选择不同的 p p p-范数(如 L 2 L_2 L2 L ∞ L_\infty L)来控制扰动的形式,并且权衡参数 c c c 可以调节攻击的强度。
  • 计算代价高: CW 攻击的优化过程复杂,计算开销较大,相较于 FGSM 和 PGD,它的攻击速度较慢。

总结

  • FGSM 是一种简单、高效的攻击方法,适合于快速生成对抗样本,但攻击强度有限。
  • PGD 通过迭代的方式逐步逼近最优的对抗样本,能够生成比 FGSM 更强的攻击,且灵活性更强。
  • CW 攻击 是基于优化问题的高级攻击方法,通过最小化扰动和最大化损失来精确生成对抗样本,虽然计算开销较大,但攻击效果显著。

通过这些方法,我们能够更加深入地理解深度学习模型对输入的敏感性,以及微小扰动如何在高维特征空间中被放大,最终导致分类错误。

深度神经网络如何做出决策?

要理解对抗攻击,首先需要了解深度神经网络是如何从输入中提取特征并做出决策的。一个典型的深度神经网络由多层非线性变换组成,输入数据经过每层处理后提取到不同层次的特征。最后,网络通过一个分类器(如 softmax)将提取到的特征映射为类别标签的概率分布。

h ( x ) h(x) h(x) 表示网络前几层的特征提取部分,分类器部分 g ( h ( x ) ) g(h(x)) g(h(x)) 则将特征映射到最终的类别概率:

f ( x ) = g ( h ( x ) ) f(x) = g(h(x)) f(x)=g(h(x))

当输入数据 x x x 中加入微小的扰动 δ \delta δ 时,网络中某些关键特征可能发生巨大变化。这种特征的变化往往集中在高维空间中的敏感方向上,这就是为什么微小的扰动能导致分类结果的重大偏差。

示例

通过一些具体的实例来更直观地理解对抗攻击。以下是几个与对抗攻击相关的实际应用案例,以及这些攻击如何影响模型的输出。

1. 对抗攻击在图像分类中的实例

在图像分类任务中,对抗攻击能够让看似无害的微小扰动对图像产生重大影响,从而导致深度学习模型错误分类。

实例 1:误导 MNIST 手写数字分类

MNIST 数据集是一个经典的手写数字分类任务,训练模型用于识别 0 到 9 之间的数字。假设模型能够准确分类原始的手写数字图像 x x x,将其正确分类为某个标签 y y y(例如“7”)。

然而,通过对图像添加微小的对抗性扰动 δ \delta δ,我们可以使原始的手写数字“7”被模型错误分类为“1”。例如,利用 FGSM 攻击方法,我们可以计算输入图像的梯度方向,并施加小量扰动来生成对抗样本。对于人类来说,生成的对抗样本看起来与原始图像几乎没有差别,图像仍然是清晰的“7”,但模型却会误将其分类为“1”或其他错误的类别。

如下所示:

  • 原始图像 x x x:是数字“7”。
  • 对抗性扰动后的图像 x + δ x + \delta x+δ:人眼看起来仍是“7”,但模型可能预测为“1”或“2”。

这种情况下,虽然图像看起来没有太大变化,但微小的像素差异已足以误导深度学习模型。

实例 2:误导 ImageNet 高级图像分类

ImageNet 是另一个广泛使用的图像分类数据集,它包含数百万张高分辨率图像,涉及 1000 个类别。在实际应用中,深度学习模型可以在这个数据集上实现高准确度。然而,通过对抗攻击,这些先进的模型也可以被轻易误导。

例如,假设我们有一张猫的图片,模型可以准确分类为“猫”。但通过施加微小的对抗性扰动 δ \delta δ,我们可以让模型将同一张猫的图片误分类为“汽车”或“金鱼”等完全不相关的类别。

  • 原始图像 x x x:猫。
  • 扰动后的对抗样本 x + δ x + \delta x+δ:人类眼中依然是猫,但模型预测为“金鱼”。

这个例子展示了深度学习模型对小扰动的极度敏感性,尽管扰动可能对人类几乎不可察觉。

2. 对抗攻击在自动驾驶中的实例

在自动驾驶领域,深度学习模型广泛用于物体检测和场景理解,例如识别道路标志和行人。对抗攻击在这一领域的应用可能会对安全性造成严重威胁。

实例 1:道路标志识别的对抗攻击

假设自动驾驶系统中使用的深度学习模型可以准确识别“停止”标志。然而,通过在道路标志上添加一些微小的对抗性扰动(例如,添加一些噪声或者在标志上贴上几块贴纸),系统可能无法识别该标志,甚至将其错误地分类为“限速 50”标志。

具体场景:

  • 原始图像 x x x:自动驾驶系统准确识别为“停止”标志。
  • 扰动后的标志 x + δ x + \delta x+δ:由于对抗性扰动的存在,系统将其错误地识别为“限速 50”标志。

对于人类驾驶员来说,这个“停止”标志看起来完全正常,但对抗性扰动使得自动驾驶系统的感知模型错误地将其识别为“限速 50”。这可能导致严重的安全事故,尤其是在城市交通场景中。

3. 对抗攻击在人脸识别中的实例

人脸识别技术已经广泛应用于安全认证、监控和身份识别系统。然而,对抗攻击也可以在这些应用中产生重大影响。

实例 1:误导人脸识别系统

假设一个深度学习人脸识别系统能够准确地识别人脸并进行身份认证。通过对抗性攻击者可以生成一个对抗性样本,使得人脸识别系统无法正确识别某个人,甚至将攻击者的人脸识别为另一名用户。

场景描述:

  • 原始图像 x x x:模型可以准确地将某人的脸识别为用户 A。
  • 扰动后的图像 x + δ x + \delta x+δ:经过对抗性扰动后,攻击者的人脸被系统错误识别为用户 B。

这种对抗攻击不仅会影响身份验证,还可能被用于逃避监控系统的检测,攻击者通过对抗样本可能轻松地躲过自动化监控系统的识别。

4. 对抗攻击在语音识别中的实例

除了图像分类和人脸识别,语音识别系统也可以被对抗攻击破坏。语音识别被广泛应用于语音助手、语音控制系统以及实时翻译中。对抗攻击同样可以通过微小的语音扰动来误导这些系统。

实例 1:误导语音助手(如 Siri、Alexa)

假设一个语音识别模型能够准确识别用户的命令,如“播放音乐”。通过添加对抗性扰动,攻击者可以生成一种微小的噪声,这种噪声对人类几乎听不到,但可以让语音助手错误地执行命令。

场景描述:

  • 原始音频 x x x:用户说“播放音乐”,语音助手正确执行命令。
  • 扰动后的音频 x + δ x + \delta x+δ:经过对抗性攻击后,语音助手错误地识别命令为“拨打紧急电话”。

在这一攻击场景中,攻击者通过对抗性扰动,可以让语音助手误解原始命令并执行潜在危险的操作,这对智能设备的安全性提出了极大的挑战。

对抗攻击对深度学习的挑战

对抗攻击揭示了深度学习模型在高维空间中提取脆弱特征的局限性。虽然这些特征在训练集和测试集分布相同的情况下表现良好,但在面对扰动或异常输入时,模型的表现会急剧恶化。这对实际应用中机器学习系统的安全性和鲁棒性提出了严峻的挑战,尤其是在自动驾驶、医疗诊断等高风险领域。

对抗攻击的防御成为了当前研究的热点领域,包括对抗训练、输入预处理以及模型架构的改进等手段,均试图增强模型对这些精微扰动的鲁棒性。然而,这些防御手段尚未能彻底解决对抗攻击的威胁,攻防对抗仍在持续演变。

总结

对抗攻击通过对输入数据施加人类不可察觉的微小扰动,使深度学习模型的预测结果发生显著变化。常见的对抗攻击方法如 FGSM、PGD 和 CW,均通过不同的数学手段生成对抗样本,揭示了深度学习模型对输入数据中的脆弱特征的依赖性。要提升模型的鲁棒性,需要从模型设计、训练过程以及输入数据预处理中采取综合措施。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147127.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Cyber Weekly #25

赛博新闻 1、阿里云Qwen2.5发布!再登开源大模型王座,Qwen-Max性能逼近GPT-4o 阿里云在云栖大会上宣布通义千问发布新一代开源模型Qwen2.5,开源旗舰模型Qwen2.5-72B性能超越Llama3.1-405B,再次登上全球开源大模型的王座&#xff…

【优选算法之二分查找】No.5--- 经典二分查找算法

文章目录 前言一、二分查找模板:1.1 朴素二分查找模板1.2 查找区间左端点模板1.3 查找区间右端点模板 二、二分查找示例:2.1 ⼆分查找2.2 在排序数组中查找元素的第⼀个和最后⼀个位置2.3 搜索插⼊位置2.4 x 的平⽅根2.5 ⼭脉数组的峰顶索引2.6 寻找峰值…

鸿蒙开发(NEXT/API 12)【跨设备互通NDK开发】协同服务

跨设备互通提供跨设备的相机、扫描、图库访问能力,平板或2in1设备可以调用手机的相机、扫描、图库等功能。 说明 本章节以拍照为例展开介绍,扫描、图库功能的使用与拍照类似。 用户在平板或2in1设备上使用富文本类编辑应用(如:…

深入理解 flex-grow、flex-shrink、flex-basis

目录 1. Flex布局 2. flex-grow 计算方式 3. flex-shrink 计算公式 4. flex-basis 5. 应用场景 6. 总结 1. Flex布局 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性 flex属性是flex-grow, flex-shrink 和…

vscode安装ESLint与Vetur插件后自动修复代码不生效

vscode安装ESLint与Vetur插件后自动修复代码不生效 1、安装ESLint 和 Vuter 2、运行结果 2.1、代码保存时代码中的分号;能被检测出来,但是不会自动修复 2.2、手动运行ESLint 修复命令(在终端中执行 npx eslint . --fix)可以修复问题 3、解决办法 在.vscode目录下setti…

Spring Boot 3.x 配置 Spring Doc以及导入postman带图详解

一、pom.xml配置 <!-- API⽂档⽣成&#xff0c;基于swagger3 --><dependency><groupId>org.springdoc</groupId><artifactId>springdoc-openapi-starter-webmvc-ui</artifactId><version>2.0.2</version></dependency>…

STL-set/multiset关联式容器

目录 一、常见接口 1.0 迭代器 1.1 构造函数 1.2 增删查 1.3 查找和统计 二、multiset 2.1 构造 2.2 查找 2.3 删除 2.4 统计 关联式容器是⽤来存储数据的&#xff0c;与序列式容器不同的是&#xff0c;关联式容器逻辑结构通常是⾮线性结构&#xff0c;两个位置有紧密…

JSP分页功能实现案例:从基础到应用的全面解析

想要实现基于jsp的分页功能&#xff1a; 需要从数据库中获取数据&#xff0c;并在前端页面中分页展示 基于JDBC访问MySQL数据库&#xff0c;获取数据基于JSP处理数据并展示 本质上是JSP的一种开发模式&#xff08;即JSPJavaBean&#xff09; 第一步&#xff1a;创建JavaWeb项目…

gitlab 的CI/CD (二)

前言 上文完成了gitlab-runner的基础配置及将gitlab的制品上传至软件包库&#xff08;产品库&#xff09;的脚本编写&#xff1b; 本文实现gitlab的ci/cd对远程服务器的操作&#xff1b; 介绍 要让Gitlab Runner部署到远程机器&#xff0c;远程机器必须信任gitlab runner账…

C++标准库容器类——string类

引言 在c中&#xff0c;string类的引用极大地简化了字符串的操作和管理&#xff0c;相比 C 风格字符串&#xff08;char*或cahr[]&#xff09;&#xff0c;std::string 提供了更高效和更安全的字符串操作。接下来让我们一起来深入学习string类吧&#xff01; 1.string 的构造…

一种WLAN用户综合认证系统及其方法(本人专利号 201110408124.X)

一种WLAN用户综合认证系统及其方法(本人专利号 201110408124.X&#xff09; 本发明公开了一种WLAN用户综合认证系统及其方法&#xff0c;涉及移动通信技术领域。本系统包括WLAN终端与AP子系统和外部认证中心&#xff1b;设置有认证协议分析引擎单元和用户综合控制单元&#xff…

c/c++内存管理(详解) + new与delete的用法及底层

1:c/c内存分布情况 1.1:c/c内存的分布图 1.2:每个区域的用途及不同类型变量存储在那个区 1.3:例题讲解 2:c动态内存管理方式(new delete) 2.1:new的语法 2.2:delete的语法 3:operator new函数与operator delete函数 4:new与delete的实现原理 5:定位new表达式初识 6:mallo…

python+selenium实现自动联网认证,并实现断网重连

pythonselenium实现自动联网认证&#xff0c;并实现断网重连 echo off python “E:\autoD\auto_login.py” 要使自动登录脚本在系统重启后自动运行&#xff0c;你可以使用Windows的任务计划程序来设置。以下是详细的步骤&#xff1a; 1. 保存脚本 首先&#xff0c;将你的Py…

【高分系列卫星简介——高分二号卫星(GF-2)】

高分二号卫星&#xff08;GF-2&#xff09; 高分二号&#xff08;GF-2&#xff09;卫星是中国自主研制的首颗空间分辨率优于1米的民用光学遥感卫星&#xff0c;具有亚米级空间分辨率、高定位精度和快速姿态机动能力等特点&#xff0c;达到了国际先进水平。以下是对高分二号卫星…

对Spring-AI系列源码的讲解

前言 今天&#xff0c;我们将开启对Spring-AI系列源码的讲解。请大家不急不躁&#xff0c;我会逐步深入&#xff0c;每次专注于一个知识点&#xff0c;以防让人感到困惑。 首先&#xff0c;源码的讨论自然离不开自动装配。有人可能会问&#xff0c;之前已经讲解过这个内容了&…

【JavaSE】八种基本数据类型及包装类

数据类型字节数位数值范围包装类默认值整型byte18-128&#xff0c;127Byte0short216&#xff0c;Short0int432&#xff0c;Integer0long864&#xff0c;Long0L浮点型float432Float0.0fdouble864Double0.0d布尔型boolean18true falseBooleanfalse字符型char2160&#xff0c;Char…

C++编程语言:基础设施:异常处理(Bjarne Stroustrup)

第 13 章 异常处理(Exception Handling) 目录 13.1 错误处理(Error Handling) 13.1.1 异常(Exceptions) 13.1.2 传统错误处理(Traditional Error Handling) 13.1.3 探索(Muddling Through) 13.1.4 异常的替代观点(Alternative Views of Exceptions) 13.1.4.1 异步…

DAY78服务攻防-数据库安全RedisCouchDBH2database未授权访问CVE 漏洞

知识点&#xff1a; 1、数据库-Redis-未授权RCE&CVE 2、数据库-Couchdb-未授权RCE&CVE 3、数据库-H2database-未授权RCE&CVE 前置知识 1、复现环境&#xff1a;Vulfocus(官方在线的无法使用&#xff0c;需要自己本地搭建) 官方手册&#xff1a;https://fofapr…

老牛码看JAVA行业现状

一、坏消息深化与反思&#xff1a; 1、技术瓶颈与框架局限&#xff1a;尽管低代码平台崭露头角&#xff0c;为开发效率带来新气象&#xff0c;但其全面普及尚需时日&#xff0c;Java技术栈的进化似乎陷入了暂时的停滞。开发者们渴望突破&#xff0c;却发现传统框架与模式已难以…

博图V16升级V19前后内存对比

升级V19后固件版本更新到4.6 存储存储空间拓展50% 下图是官方解释 打开博图查看前后对比