对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击
对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击
近年来,随着深度学习模型在各个领域取得惊人突破,对抗攻击(Adversarial Attack) 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动,使得模型的预测结果出现显著错误。本文将详细介绍三种主要的对抗攻击策略:基于梯度的攻击、基于转移的攻击 和 模型集成攻击,并探讨它们的核心思想、实现方法及背后的数学原理。
1. 基于梯度的对抗攻击(Gradient-based Adversarial Attack)
核心思想
基于梯度的对抗攻击方法依赖于模型的梯度信息。对于一个给定的输入样本 x x x和标签 y y y,攻击的目标是找到一个小的扰动 δ \delta δ,使得输入 x + δ x + \delta x+δ导致模型的预测输出产生显著偏差。具体来说,基于梯度的方法通过在输入样本 x x x上施加扰动 δ \delta δ来最大化模型的损失函数 L ( x , y ) L(x, y) L(x,y),进而生成对抗样本 x a d v = x + δ x_{adv} = x + \delta xadv=x+δ。
这种方法依赖于神经网络的局部线性化假设,即在输入空间中,网络的行为可以通过对输入进行一阶泰勒展开式近似描述。
梯度的概念
在神经网络中,梯度是模型输出相对于输入的变化率。通常,梯度用于梯度下降法来优化神经网络的损失函数。然而,在对抗攻击中,梯度用于生成扰动,目标是反向操作:即找到扰动 δ \delta δ使得损失函数上升(即损失增大),而非下降。
损失函数 L ( x , y ) L(x, y) L(x,y)是输入 x x x和标签 y y y的函数,我们需要计算损失函数关于输入 x x x的梯度,即 ∇ x L ( x , y ) \nabla_x L(x, y) ∇xL(x,y)。这个梯度告诉我们如何改变输入 x x x,使得损失函数增加(即,预测变得不准确)。为了生成对抗样本,我们使用梯度上升的策略,使得输入在梯度方向上被扰动。
具体实现方法
快速梯度符号法(FGSM)
FGSM 是一种基本的基于梯度的对抗攻击方法,其目标是通过在输入 x x x上施加最小扰动 δ \delta δ,以极大化损失函数。其扰动的计算公式为:
x a d v = x + ϵ ⋅ sign ( ∇ x L ( x , y ) ) x_{adv} = x + \epsilon \cdot \text{sign}(\nabla_x L(x, y)) xadv=x+ϵ⋅sign(∇xL(x,y))
其中:
- ϵ \epsilon ϵ是控制扰动大小的超参数,通常是一个较小的值,如 0.01 0.01 0.01。
- sign ( ∇ x L ( x , y ) ) \text{sign}(\nabla_x L(x, y)) sign(∇xL(x,y))表示梯度的符号函数,确保在梯度的正负方向上分别施加相应的扰动。
通过此公式,我们在梯度的符号方向上施加扰动。由于符号函数仅保留梯度的方向而忽略大小,这使得FGSM计算效率高,但会丢失精确的扰动信息。
Ian Goodfellow, Jonathon Shlens, and Christian Szegedy. Explaining and harnessing adversarial examples. In Proc. Int’l Conf. Learn. Repres., 2015.
迭代快速梯度符号法(I-FGSM)
I-FGSM 是 FGSM 的扩展版本,它通过多次迭代的方式来逐步施加扰动,每次的步长为 α \alpha α。具体更新规则为:
x a d v ( t + 1 ) = x a d v ( t ) + α ⋅ sign ( ∇ x L ( x a d v ( t ) , y ) ) x_{adv}^{(t+1)} = x_{adv}^{(t)} + \alpha \cdot \text{sign}(\nabla_x L(x_{adv}^{(t)}, y)) xadv(t+1)=xadv(t)+α⋅sign(∇xL(xadv(t),y))
其中:
- t t t表示当前的迭代次数。
- α \alpha α是每次迭代的步长,通常 α ≪ ϵ \alpha \ll \epsilon α≪ϵ。
I-FGSM 相比 FGSM 可以生成更强的对抗样本,因为它通过多次迭代能够捕获更多的损失函数变化趋势。
Jiakai Wang. Adversarial examples in physical world. In Proc. Int’l Joint Conf. Artif. Intell., pages 4925–4926, 8 2021.
投影梯度下降(PGD)
PGD 是 I-FGSM 的一种改进版本,它在每次迭代生成扰动之后,将对抗样本投影回允许的扰动范围内,例如 L ∞ L_\infty L∞球内,确保生成的扰动不会超过规定的幅度范围。其更新规则为:
x a d v ( t + 1 ) = Proj x + ϵ ( x a d v ( t ) + α ⋅ sign ( ∇ x L ( x a d v ( t ) , y ) ) ) x_{adv}^{(t+1)} = \text{Proj}_{x+\epsilon} \left( x_{adv}^{(t)} + \alpha \cdot \text{sign}(\nabla_x L(x_{adv}^{(t)}, y)) \right) xadv(t+1)=Projx+ϵ(xadv(t)+α⋅sign(∇xL(xadv(t),y)))
这里的 Proj x + ϵ \text{Proj}_{x+\epsilon} Projx+ϵ表示将生成的对抗样本投影回以 x x x为中心,半径为 ϵ \epsilon ϵ的 L ∞ L_\infty L∞球内。PGD 是公认的最强的白盒攻击方法之一,因为它通过多次迭代确保扰动的范围被严格控制,同时提升了攻击的强度。
Aleksander Madry, Aleksandar Makelov, Ludwig Schmidt, Dimitris Tsipras, and Adrian Vladu. Towards deep learning models resistant to adversarial attacks. In Proc. Int’l Conf. Learn. Repres., 2018.
数学原理
基于梯度的对抗攻击依赖于目标模型的梯度信息。通过扰动输入数据,使得目标模型的损失函数最大化。这种方法可以通过泰勒展开式进行解释。
假设模型的损失函数 L ( x , y ) L(x, y) L(x,y)在输入 x x x附近是可微的,则可以对 L ( x , y ) L(x, y) L(x,y)进行一阶泰勒展开:
L ( x + δ , y ) ≈ L ( x , y ) + δ T ∇ x L ( x , y ) L(x + \delta, y) \approx L(x, y) + \delta^T \nabla_x L(x, y) L(x+δ,y)≈L(x,y)+δT∇xL(x,y)
这里的 ∇ x L ( x , y ) \nabla_x L(x, y) ∇xL(x,y)表示损失函数关于输入 x x x的梯度。
通过对 δ \delta δ进行优化,可以使得 δ T ∇ x L ( x , y ) \delta^T \nabla_x L(x, y) δT∇xL(x,y)最大化,从而增加损失函数的值。这是基于梯度的对抗攻击的数学基础。
常见问题
- 黑盒攻击难度较大:基于梯度的攻击需要访问模型的梯度信息,因此在黑盒场景下(即无法直接访问梯度信息的场景)表现较差。
- 易受模型防御策略影响:对抗训练等防御方法可以通过在训练过程中引入对抗样本来缓解此类攻击的效果。
2. 基于转移的对抗攻击(Transfer-based Adversarial Attack)

(a) Transfer-based attack(基于迁移的攻击):
- 图中展示了通过从一个模型(代理模型)生成对抗样本,然后将这些样本转移到另一个目标模型中进行攻击的传统方法。这种方法的思想是希望对抗样本能够跨模型具有通用性(即能够迁移到其他模型上产生相同的效果)。
- 图中的绿色圆圈代表干净的图像,蓝色三角形代表对抗样本,蓝线表示代理模型的决策边界,红线表示目标模型的决策边界。攻击方向(蓝色箭头)旨在移动输入以跨越代理模型的决策边界,但 由于目标模型的决策边界与代理模型不同,导致对抗样本在目标模型上的迁移成功率较低。
- 下方柱状图表明这种攻击方式在CNNs上有17.66%的攻击成功率,但在ViTs上仅有2.02%的成功率,表明迁移性较弱。
核心思想
基于转移的对抗攻击的目标是生成可以在 多个模型 上有效的对抗样本,尤其是黑盒场景下。这类攻击基于一个重要的观察:某些对抗样本不仅能够欺骗生成它的模型,还可以在不同结构、不同权重的模型上同样有效。这被称为对抗样本的迁移性(Transferability)。
实现方式
神经元重要性
一种增强对抗样本迁移性的方法是 利用神经网络中的神经元重要性 。Wang等人提出通过最大化关键神经元的失真,生成能够在多个模型上具有高攻击成功率的对抗样本。关键神经元是指对模型 决策影响较大 的神经元,扰动这些神经元的激活值能够更显著地影响模型输出,从而提升对抗样本的迁移性。
Z. Wang, H. Guo, Z. Zhang, W. Liu, Z. Qin, and K. Ren. Feature importance-aware transferable adversarial attacks. In Proc. IEEE Int’l Conf. Comput. Vis., pages 7619–7628, 2021.
输入多样性和平移不变策略
为了增加对抗样本的普适性,Xie等人和Dong等人提出了通过对输入数据进行多样化变换(如缩放、翻转等)来提高对抗扰动的迁移能力。通过在每次迭代中对输入进行随机变换,攻击可以避免仅针对某个特定模型过拟合,从而提高对不同模型的适应性。
- Cihang Xie, Zhishuai Zhang, Yuyin Zhou, Song Bai, Jianyu Wang, Zhou Ren, and Alan L. Yuille. Improving transferability of adversarial examples with input diversity. In Proc. Conf. Comput. Vis. Pattern Recognit., June 2019.
- Yinpeng Dong, Tianyu Pang, Hang Su, and Jun Zhu. Evading defenses to transferable adversarial examples by translation-invariant attacks. In Proc. Conf. Comput. Vis. Pattern Recognit., June 2019.
PI-FGSM
Gao等人提出的 基于块的扰动方法(PI-FGSM)通过生成基于图像块的扰动而非逐像素的扰动,提高了黑盒攻击的成功率。这种方法通过减少扰动的局部性,提高了对抗样本的迁移性。
Lianli Gao, Qilong Zhang, Jingkuan Song, Xianglong Liu, and Heng Tao Shen. Patch-wise attack for fooling deep neural network. In Proc. Euro. Conf. Comput. Vis., pages 307322, 2020.
数学原理
基于转移的对抗攻击的原理依赖于对输入空间中共享的决策边界的探索。不同模型在相似的数据上训练时,通常会学到相似的特征,因此对一个模型有效的扰动有时能够在其他模型上同样有效。
假设我们有两个模型 f 1 f_1 f1和 f 2 f_2 f2,它们的损失函数分别为 L 1 ( x , y ) L_1(x, y) L1(x,y)和 L 2 ( x , y ) L_2(x, y) L2(x,y)。对抗样本的目标是找到一个扰动 δ \delta δ,使得:
δ = arg max δ ( L 1 ( x + δ , y ) + L 2 ( x + δ , y ) ) \delta = \arg\max_{\delta} \left( L_1(x + \delta, y) + L_2(x + \delta, y) \right) δ=argδmax(L1(x+δ,y)+L2(x+δ,y))
通过优化 δ \delta δ,我们希望生成一个对两个模型都有效的扰动。
常见问题
- 难以转移到新的网络结构:尽管这些方法在传统的卷积神经网络(CNN)上表现良好,但对新兴的深度学习架构(如视觉Transformer,ViT)效果较差。
- 依赖特定特征:许多基于转移的攻击依赖于神经网络的特定特征(如局部性),这使得它们难以在一些依赖全局特征的模型上迁移。
3. 模型集成攻击(Ensemble-based Adversarial Attack)

(b) Ensemble attack(模型集成攻击):
- 此方法通过结合多个代理模型的输出(如logits或loss)生成对抗样本,希望提高对抗样本的迁移性。直观上,这种方法应该能够捕捉到多个模型之间共同的特征,理论上可以更好地欺骗目标模型。
- 图中显示的是两个不同的代理模型决策边界(蓝色和红色),攻击方向基于多个模型的组合决策。虚线表示多个代理模型的攻击方向,表明尝试同时欺骗多个模型,但结果显示由于没有充分利用每个模型的个体优势,攻击效果有限。
- 从柱状图可以看出,集成攻击相较于单一的迁移攻击略有改进,在CNNs上达到了18.54%的成功率,在ViTs上也略微提升至8.74%。
核心思想
模型集成攻击的核心思想是通过同时攻击多个白盒模型,生成能够在所有模型上都有效的对抗样本。通过多个模型的联合优化,可以捕捉到更通用的对抗扰动,从而提升对抗样本在黑盒场景下的迁移性。
实现方式
简单加权平均
Liu等人提出了一种简单的集成方法,通过对多个白盒模型的梯度信息进行加权平均,生成对抗样本。具体而言,假设我们有 n n n个模型,它们的损失函数分别为 L 1 ( x , y ) , L 2 ( x , y ) , … , L n ( x , y ) L_1(x, y), L_2(x, y), \dots, L_n(x, y) L1(x,y),L2(x,y),…,Ln(x,y),那么集成攻击的损失函数为:
L ensemble ( x , y ) = 1 n ∑ i = 1 n L i ( x , y ) L_{\text{ensemble}}(x, y) = \frac{1}{n} \sum_{i=1}^{n} L_i(x, y) Lensemble(x,y)=n1i=1∑nLi(x,y)
通过对 L ensemble ( x , y ) L_{\text{ensemble}}(x, y) Lensemble(x,y)进行优化,可以生成对所有模型都有效的对抗样本。
Yanpei Liu, Xinyun Chen, Chang Liu, and Dawn Song. Delving into transferable adversarial examples and blackbox attacks. In Proc. Int’l Conf. Learn. Repres., 2017.
Logit和损失融合
为了进一步提升集成对抗样本的强度,Dong等人提出融合多个模型的logit(即模型输出的 未归一化预测值 )和损失函数,以提高对抗扰动的迁移性。
Yinpeng Dong, Tianyu Pang, Hang Su, and Jun Zhu. Evading defenses to transferable adversarial examples by translation-invariant attacks. In Proc. Conf. Comput. Vis. Pattern Recognit., June 2019.
随机方差减少集成(SVRE)
Xiong等人提出的SVRE方法通过减少集成模型之间的梯度方差,提升了对抗样本的泛化能力。这种方法通过在不同模型之间引入随机化,减小了模型间的差异性,从而生成更通用的对抗扰动。
Yifeng Xiong, Jiadong Lin, Min Zhang, John E. Hopcroft, and Kun He. Stochastic variance reduced ensemble adversarial attack for boosting the adversarial transferability. In Proc. Conf. Comput. Vis. Pattern Recognit., pages 1498314992, June 2022.
数学原理
模型集成攻击的基本思想是利用集成学习的思想,通过对多个模型的损失函数进行加权组合来生成对抗样本。假设我们有 n n n个模型,每个模型的损失函数为 L i ( x , y ) L_i(x, y) Li(x,y),集成攻击的损失函数可以表示为:
L ensemble ( x , y ) = 1 n ∑ i = 1 n L i ( x , y ) L_{\text{ensemble}}(x, y) = \frac{1}{n} \sum_{i=1}^{n} L_i(x, y) Lensemble(x,y)=n1i=1∑nLi(x,y)
通过对这个集成损失进行优化,我们可以找到一种扰动 δ \delta δ,使得这个扰动对所有模型都有效。
常见问题
- 未充分利用个体模型的优势:尽管集成攻击方法能够在多个模型上生成有效的对抗样本,但它们通常忽略了个体模型的独特性,无法充分利用每个模型的特定优势。
- 计算开销较大:集成多个模型的攻击需要更多的计算资源,尤其是在对抗大型深度学习模型时,可能带来较高的时间和空间成本。
总结:
- 基于梯度的攻击是白盒场景下的强大攻击方法,但其对黑盒场景的适应性较差,且容易被对抗训练等防御策略抵消。
- 基于转移的攻击通过生成具有迁移性的对抗样本提升了黑盒攻击的成功率,但在新型深度学习架构上效果有限。
- 模型集成攻击通过结合多个模型的信息提升了对抗扰动的泛化能力,但需要更多的计算资源,且在利用个体模型的独特性上仍有改进空间。
相关文章:
对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击
对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击 近年来,随着深度学习模型在各个领域取得惊人突破,对抗攻击(Adversarial Attack) 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动&#x…...
GPU并行效率问题——通过MPS提升GPU计算收益
GPU并行效率问题——通过MPS提升GPU计算收益_gpu mps-CSDN博客...
patch 命令:补丁的应用
一、命令简介 diff 和 patch 是传统的文件比较和应用差异的工具,而 git 是一个更现代、功能更全面的版本控制系统,它内置了 diff 和 patch 的功能,并且提供了更多用于代码管理和协作的高级特性。 diff, patch 和 git 之间的关系…...
仓颉编程语言4,遇到BUG求助
本来准备整仓颉链接Mysql数据库。参考:GitCode - 全球开发者的开源社区,开源代码托管平台 这种方式是拿mysql官方的dll,编译一下,然后再封装成仓颉数据库驱动。这种方式不够逼格,所以准备解析mysql网络协议,从0开始写…...
SpringIOCDI
1.IOC 1.1.IOC概述 IOC: Inversion Of Control,简称IOC,也被称为控制反转。对象的创建权由程序员主动创建转移到容器,由容器创建、管理对象,这种思想称为控制反转。这个容器称为IOC容器或Spring容器被IOC容器创建、管…...
单细胞Seruat和h5ad数据格式互换(R与python)方法学习和整理
SeruatV4数据转化为h5ad格式数据 1、导入(R) rm(list ls()) library(Seurat) library(qs) library(reticulate) library(hdf5r) library(sceasy) library(BiocParallel) register(MulticoreParam(workers 4, progressbar TRUE)) scRNA <- qread("sc_dataset.qs&q…...
分布式难题-三座大山NPC
文章目录 1. 三座大山 NPC 的概念2. NPC 细分理解2.1. Network Delay 网络延迟2.2. Process Pause 进程暂停2.3. Clock Drift 时钟漂移Is the Algorithm Asynchronous? 本文参考: RedLock红锁安全性争论(上) https://martin.kleppmann.com/…...
两个方法教你设置Excel密码,防止修改和复制Excel表格内容
EXCEL是一款功能强大的电子表格软件,广泛用于各个地方。然而,对于一些重要的表格文件需要通过设置密码来限制大就的修改和复制权限。因而,对于一个EXCEL表格,通过密码设置大家有访问表格的权限,但无法修改数据的权限。…...
Java解析Excel文件
目录 背景 技术选型 开源Java框架选型 1. Apache POI 2. EasyExcel 收费Java框架选型 1. Spire.XLS for java 2. Aspose 总结 背景 在低代码产品的研发过程中,为用户提供数据导入导出的能力时,无法避免的就是对EXCEL解析的能力,所以本篇通过介…...
Require:基于雪花算法完成一个局部随机,全局离散没有热点切唯一的数值Id生成器。
【雪花算法】雪花算法(Snowflake Algorithm)是Twitter开源的用于生成唯一ID的算法,它可以在分布式系统中生成唯一的64位长整数ID。这种ID生成方式既保证了趋势递增,又保证了在不同数据中心、不同机器上生成的ID的唯一性。 符号位&…...
libevent - Macro function
TAILQ_INIT /** Tail queue functions.* 尾队列的头结点初始化为空队列。*/ #define TAILQ_INIT(head) do { \(head)->tqh_first NULL; \(head)->tqh_last &(head)->tqh_first; \ } while (/*CONSTCOND*/0)TAILQ_INIT 宏是一个用于初始化尾队列头部…...
408算法题leetcode--第17天
101. 对称二叉树 101. 对称二叉树思路:递归,对称即两个子树的左边和右边分别一样;一个子树是左中右遍历,另一个是右中左遍历;写的时候可以分三步,确定函数参数以及返回类型,确定终止条件&#…...
机器人顶刊IEEE T-RO发布无人机动态环境高效表征成果:基于粒子的动态环境连续占有地图
摘要:本研究有效提高了动态环境中障碍物建模的精度和效率。NOKOV度量动作捕捉系统助力评估动态占用地图在速度估计方面的性能。 近日,上海交通大学、荷兰代尔夫特理工研究团队在机器人顶刊IEEE T-RO上发表题为Continuous Occupancy Mapping in Dynamic …...
spring-boot web + vue
依赖的软件 maven 1. 官网下载zip 文件,比如apache-maven-3.9.9-bin.zip 2. 解压到某个盘符,必须保证父亲目录的名字包含英文,数字,破折号(-) 3. 设置环境变量M2_HOME, 并将%M2_HOME%\bin添加到windown…...
HDFS分布式文件系统01-HDFS架构与SHELL操作
HDFS分布式文件系统 学习目标第一课时知识点1-文件系统的分类单机文件系统网络文件系统分布式文件系统 知识点2-HDFS架构知识点3-HDFS的特点知识点4-HDFS的文件读写流程知识点5-HDFS的健壮性 第二课时知识点1-HDFS的Shell介绍HDFS Shell的语法格式如下。HDFS Shell客户端命令中…...
Go语言流程控制
Go语言流程控制 1.IF-ELSE2.Switch-Caseswitch 语句Type Switch 3.select 语句4.循环语句 1.IF-ELSE Go 编程语言中 if 语句的语法如下: if 布尔表达式 {/* 在布尔表达式为 true 时执行 */ }例如: package mainimport "fmt"func main() {va…...
无人机在救灾方面的应用!
一、灾害监测与评估 实时监测与评估:无人机可以快速到达灾害现场,通过搭载的高清摄像头、红外热成像仪等设备,对灾区进行实时监测和灾情评估。根据捕捉到的受灾范围、火势大小、建筑物损坏情况等关键信息,为救援行动提供决策依据…...
面试知识点总结篇一
一、C语言和C有什么区别 C语言是面向过程,强调用函数将问题分解为多个子任务,按顺序逐步进行。数据和操作分开C则是面向对象,面向对象是一种基于对象和类的编程范式,关注如何利用对象来抽象和模拟现实世界的实体。因此引入了类&a…...
【计算机网络 - 基础问题】每日 3 题(二十五)
✍个人博客:Pandaconda-CSDN博客 📣专栏地址:http://t.csdnimg.cn/fYaBd 📚专栏简介:在这个专栏中,我将会分享 C 面试中常见的面试题给大家~ ❤️如果有收获的话,欢迎点赞👍收藏&…...
【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】
【第十八章:Sentosa_DSML社区版-机器学习之协同过滤】 1.算子介绍 协同过滤是推荐系统中常用的一种方法。该算法旨在填补用户-产品关联矩阵中缺少的项。在算法中,用户和产品都是通过一组少量的潜在因素描述,这些潜在因素可以用于预测用户-产…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
服务器硬防的应用场景都有哪些?
服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式,避免服务器受到各种恶意攻击和网络威胁,那么,服务器硬防通常都会应用在哪些场景当中呢? 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...
使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装
以下是基于 vant-ui(适配 Vue2 版本 )实现截图中照片上传预览、删除功能,并封装成可复用组件的完整代码,包含样式和逻辑实现,可直接在 Vue2 项目中使用: 1. 封装的图片上传组件 ImageUploader.vue <te…...
用docker来安装部署freeswitch记录
今天刚才测试一个callcenter的项目,所以尝试安装freeswitch 1、使用轩辕镜像 - 中国开发者首选的专业 Docker 镜像加速服务平台 编辑下面/etc/docker/daemon.json文件为 {"registry-mirrors": ["https://docker.xuanyuan.me"] }同时可以进入轩…...
智能仓储的未来:自动化、AI与数据分析如何重塑物流中心
当仓库学会“思考”,物流的终极形态正在诞生 想象这样的场景: 凌晨3点,某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径;AI视觉系统在0.1秒内扫描包裹信息;数字孪生平台正模拟次日峰值流量压力…...
如何理解 IP 数据报中的 TTL?
目录 前言理解 前言 面试灵魂一问:说说对 IP 数据报中 TTL 的理解?我们都知道,IP 数据报由首部和数据两部分组成,首部又分为两部分:固定部分和可变部分,共占 20 字节,而即将讨论的 TTL 就位于首…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
