CVPR2023 | 通过降低对图像块损坏的敏感性来提高视觉Transformer的鲁棒性
Improving Robustness of Vision Transformers by Reducing Sensitivity to Patch Corruptions
- 摘要-Abstract
- 引言-Introduction
- 相关工作-Related Work
- 降低对Patch损坏的敏感性-Reducing Sensitivity to Patch Corruptions
- 实验-Experiments
- 分析与讨论-Analysis and Discussions
- 结论-Conclusion
论文链接
GitHub链接
本文 “Improving Robustness of Vision Transformers by Reducing Sensitivity to Patch Corruptions” 提出一种新训练方法降低对 patch 损坏的敏感性(RSPC) 以提升视觉 Transformer 的鲁棒性,通过构建 patch 损坏模型找出易受攻击的 patch,用随机噪声遮挡,再通过特征对齐稳定注意力层。实验表明,RSPC 在多个基准测试中显著提升模型鲁棒性,且在准确性和鲁棒性间取得更好平衡,训练成本更低。
摘要-Abstract
Despite their success, vision transformers still remain vulnerable to image corruptions, such as noise or blur. Indeed, we find that the vulnerability mainly stems from the unstable self-attention mechanism, which is inherently built upon patch-based inputs and often becomes overly sensitive to the corruptions across patches. For example, when we only occlude a small number of patches with random noise (e.g., 10%), these patch corruptions would lead to severe accuracy drops and greatly distract intermediate attention layers. To address this, we propose a new training method that improves the robustness of transformers from a new perspective – reducing sensitivity to patch corruptions (RSPC). Specifically, we first identify and occlude/corrupt the most vulnerable patches and then explicitly reduce sensitivity to them by aligning the intermediate features between clean and corrupted examples. We highlight that the construction of patch corruptions is learned adversarially to the following feature alignment process, which is particularly effective and essentially different from existing methods. In experiments, our RSPC greatly improves the stability of attention layers and consistently yields better robustness on various benchmarks, including CIFAR-10/100C, ImageNet-A, ImageNet-C, and ImageNet-P.
尽管视觉 Transformer 取得了成功,但它们仍然容易受到图像损坏的影响,例如噪声或模糊。事实上,我们发现这种脆弱性主要源于不稳定的自注意力机制,该机制本质上源于基于 patch 的输入构建,并且常常对跨 patch 的损坏过度敏感。例如,当我们仅用随机噪声遮挡少量 patch(如10%)时,这些 patch 损坏会导致准确率严重下降,并极大地干扰中间注意力层。为了解决这个问题,我们提出了一种新的训练方法,从一个新的角度提高Transformer的鲁棒性——降低对patch损坏的敏感性(RSPC)。具体来说,我们首先识别并遮挡/损坏最脆弱的patch,然后通过对齐干净样本和损坏样本之间的中间特征,明确地降低对它们的敏感性。我们强调,patch 损坏的构建是与后续的特征对齐过程对抗学习得到的,这特别有效,并且与现有方法有本质区别。在实验中,我们的RSPC极大地提高了注意力层的稳定性,并且在各种基准测试中始终表现出更好的鲁棒性,包括CIFAR-10/100C、ImageNet-A、ImageNet-C和ImageNet-P。
引言-Introduction
这部分内容主要介绍了研究背景、提出问题并给出解决方法和研究贡献,具体如下:
- 研究背景:视觉Transformer在近年取得成功,但对常见图像损坏(如噪声、模糊)和对抗扰动缺乏鲁棒性。像RVT和FAN这类先进的鲁棒架构,在遇到高斯噪声等损坏的样本时,准确率会下降超15%。
- 提出问题:通过实验发现,Transformer的自注意力机制依赖基于patch的输入,对patch上的损坏或扰动易过度敏感。如对RVT-Ti模型,用PGD-5生成对抗扰动仅扰动10%的patch,就能使真实类别的置信度从63.8%骤降至3.1%,导致误分类 ;直接添加随机噪声效果不佳,但用噪声遮挡patch可大幅降低置信度,且会显著影响各层注意力图,使注意力发生明显偏移,进而严重影响准确率。
- 解决方法:提出新训练方法RSPC(Reducing Sensitivity to Patch Corruptions),即找出特别脆弱的patch构建基于patch的损坏,通过对齐干净和损坏示例之间的中间特征,稳定中间注意力层,降低对patch损坏的敏感性。实验显示,RSPC可将RVT-Ti模型注意力的余弦相似度从0.43提升到0.91,面对不同遮挡掩码时准确率更高。
- 研究贡献:提出RSPC训练方法,通过构建有效patch损坏并对齐中间特征提升模型鲁棒性;开发patch损坏模型,以对抗方式训练找出易干扰中间注意力层的脆弱patch,与传统对抗训练不同,只学习应损坏的patch而非像素级扰动;实验证明RSPC对patch损坏的鲁棒性提升可推广到多种架构和基准测试,源于更稳定的注意力机制,且相比对抗训练,在准确率和鲁棒性间平衡更好,训练成本更低。
图1. 基于真实类别的置信度得分衡量的对patch扰动/损坏的敏感性。我们对RVT-Ti随机选择10%的patch进行扰动/损坏处理。在实际情况中,对抗性patch扰动(通常不可见)会显著降低置信度,这表明Transformer对patch具有高敏感性。然而,即使在ImageNetC中使用最高强度的随机噪声直接添加到patch上,也只会导致置信度有轻微下降。相比之下,用噪声遮挡patch会大幅降低置信度,并且可以作为对抗性patch扰动的良好替代方式,用于揭示patch敏感性问题。
图2. 基于注意力稳定性(左图)和准确率(右图)衡量的对基于patch损坏的敏感性。
左图:我们用噪声随机遮挡10%的patch,展示RVT-Ti和我们的RSPC-RVT-Ti不同层的注意力图。按照[13]中的方法,我们选择中心patch(红色方块)作为查询patch,并对所有注意力头的注意力分数求平均,以进行可视化展示。针对这个例子,我们还计算了不同层中干净图像和损坏图像注意力之间的平均余弦相似度(Cos-Sim)。显然,我们的RSPC模型生成的注意力图更加稳定。
右图:在ImageNet数据集上,我们绘制了不同遮挡掩码下被遮挡样本的准确率分布。这里,我们为每张图像随机采样100个不同的掩码。结果表明,RVT对基于patch的损坏非常敏感,其准确率的方差比我们的RSPC模型大得多。
相关工作-Related Work
这部分内容主要回顾了视觉Transformer(ViTs)鲁棒性相关的研究工作,并指出当前研究的不足,具体内容如下:
- 视觉Transformer的鲁棒性研究现状:ViTs在多种学习任务中性能卓越,不少研究聚焦其鲁棒性提升。虽然ViTs相比卷积网络在应对图像损坏和对抗攻击时表现更优,但即使是精心设计的RVT和FAN等鲁棒架构,在干净数据和受损坏数据上的准确率仍存在较大差距。目前,对于损坏/扰动对ViTs关键组件自注意力机制的影响,研究还不够深入。
- 特征对齐方法在提升鲁棒性中的应用与局限:通过减少干净和损坏样本之间中间特征的差距,如采用特征对齐方法,是提升模型鲁棒性的直观思路。然而,在实际应用中,由于测试数据的损坏类型难以预知,且无法获取对应的损坏训练样本,使得该方法的应用受到限制。针对此,本文聚焦ViTs,构建patch损坏模型生成有效损坏样本,进而研究ViTs对patch损坏的敏感性,并提出相应训练方法提升鲁棒性。
降低对Patch损坏的敏感性-Reducing Sensitivity to Patch Corruptions
该部分主要介绍了降低视觉Transformer对Patch损坏敏感性(RSPC)的具体方法,包括对Transformer对patch敏感性的探究、寻找易受攻击的patch以及通过特征对齐降低敏感性,具体内容如下:
图3. 所提出的降低对patch损坏敏感性(RSPC)训练过程概述。我们提出一种patch损坏模型来生成基于patch的损坏,并对齐干净样本和损坏样本之间每个自注意力模块的特征(对齐损失用绿色框突出显示)。与现有方法不同,我们以对抗的方式选择要遮挡/损坏的patch,即损坏那些最易受攻击的、会极大干扰中间注意力层的patch。
- Transformer对patch的敏感性:对比不同的patch扰动/损坏方式以研究Transformer对输入patch的敏感性。发现对抗patch扰动会使RVT模型置信度极低,表明模型对单个patch敏感,但生成对抗扰动计算成本高。直接在patch中添加随机噪声,对模型置信度影响小,因为损坏的patch仍包含可与相邻patch建立关联的信息。而基于遮挡的patch损坏方案(用随机噪声遮挡patch)能大幅降低模型置信度,有效揭示了patch敏感性问题,且比直接丢弃patch更具挑战性和实用性。
- 寻找易受攻击的patch进行损坏:由于随机遮挡/损坏patch对模型准确率影响差异大,为实现有效特征对齐,提出patch损坏模型。该模型根据给定示例和遮挡比例,预测二进制掩码以确定应损坏的patch。训练时通过最大化干净和损坏示例中间特征的距离,寻找那些一旦被遮挡就会严重干扰中间注意力层的易受攻击patch。patch损坏模型是一个包含卷积层、全连接层和二值化层的轻量级网络,利用直通估计器(STE)使二值化操作可微。
- 通过特征对齐降低敏感性:基于构建的patch损坏,通过对齐干净和损坏示例的中间特征来稳定自注意力层。同时训练patch损坏模型和分类模型,采用对抗目标,分类模型最小化交叉熵损失和对齐损失,patch损坏模型最大化对齐损失,即 m i n F m a x C E x ∼ D [ L c e ( x ) + λ L a l i g n ( x , x ^ ) ] min _{\mathcal{F}} max _{\mathcal{C}} \mathbb{E}_{x \sim \mathcal{D}}\left[\mathcal{L}_{ce }(x)+\lambda \mathcal{L}_{align }(x, \hat{x})\right] minFmaxCEx∼D[Lce(x)+λLalign(x,x^)],其中 λ \lambda λ 决定对齐损失的重要性。通过分别下降和上升梯度更新两个模型的参数,使patch损坏模型生成最具挑战性的损坏示例,分类模型对这些损坏更具鲁棒性。
实验-Experiments
这部分主要通过在不同数据集上进行实验,评估RSPC方法的有效性,具体内容如下:
-
CIFAR-10和CIFAR-100数据集实验
- 实验设置:在CIFAR-10/100数据集上从头开始训练模型,采用DeepAugment数据增强方法训练200个epoch,批大小为128,使用余弦退火调整学习率。以RVT-S和FAN-S-Hybrid为基线,将RSPC模型与之对比,默认设置 λ = 5 × 1 0 − 3 \lambda=5 ×10^{-3} λ=5×10−3 、 ρ = 10 % \rho=10 \% ρ=10%。
- 实验结果:与传统CNN和流行的Transformer模型相比,Transformer不一定具有更好的鲁棒性。RVT和FAN等精心设计的鲁棒架构在大多数情况下提升了鲁棒性,但RSPC模型在CIFAR-10-C和CIFAR-100-C基准测试中,相比RVT和FAN基线,进一步大幅提升了鲁棒性,提升幅度均大于1.4%,且RSPC-FAN-S-Hybrid模型在这两个基准测试中取得了新的最优结果。
表1. 在CIFAR-10和CIFAR-100数据集上与最先进方法的比较。我们在原始测试集上评估清洁准确率,在相应的损坏数据集(即CIFAR-10-C和CIFAR-100-C)上评估鲁棒准确率。结果表明,我们的RSPC方法在这两个数据集上都显著提高了模型的鲁棒性。†表示采用与我们的RSPC相同训练方法的模型。
-
ImageNet数据集实验
- 实验设置:在ImageNet数据集上,基于RVT和FAN模型应用RSPC方法,遵循其训练设置。使用ImageNet-A(IN-A)、ImageNet-C(IN-C)、ImageNet-P(IN-P)等鲁棒性基准测试评估模型鲁棒性,在IN-C评估中排除与噪声相关的损坏类型。报告IN-C(及无噪声的IN-C)上的平均损坏误差(mCE)和IN-P上的平均翻转率(mFR),数值越低表示模型鲁棒性越好。
- 实验结果:相比基线模型,RSPC模型在不同尺寸模型上均显著提升了在IN-A上的鲁棒性,提升幅度大于1.5%,同时保持了相当的干净数据准确率。在IN-C上,RSPC模型降低了损坏误差,幅度大于1.0%;在无噪声的IN-C上,误差降低幅度大于1.2%,表明该方法对多种损坏类型都有效。在IN-P上评估模型对扰动的稳定性时,RSPC模型也优于RVT和FAN基线。此外,RSPC在对抗patch扰动、patch损坏和对抗攻击方面也表现出色。
表2. ImageNet上的鲁棒性比较。我们报告了在ImageNet-C上的平均损坏误差(mCE)和在ImageNet-P上的平均翻转率(mFR)。mCE或mFR越低,模型的鲁棒性越强。在不同的模型规模下,与所考虑的基线模型相比,我们的RSPC模型持续提升了鲁棒性。
分析与讨论-Analysis and Discussions
该部分主要对RSPC方法进行了深入分析和讨论,通过多种方式验证其有效性,具体内容如下:
- 可视化结果和更多分析
- 中间注意力图的稳定性:以RVT-Ti为基线,可视化中间注意力图并计算余弦相似度来评估注意力稳定性。结果显示,RVT-Ti面对patch损坏时注意力图变化显著,而RSPC-RVT-Ti能有效保留高注意力区域。从整个ImageNet验证集来看,RSPC在平均和最坏情况下都提高了注意力相似度,表明RSPC能显著稳定中间注意力图。
**图4. RVT-Ti与我们的RSPC-RVT-Ti之间注意力稳定性的比较。我们采用与图2相同的方法获取注意力图以进行可视化。在最后一列中,我们还研究了不同遮挡掩码(1000个随机掩码)对每个示例的影响,并使用余弦相似度(Cos-Sim)对稳定性进行了定量评估。显然,无论是在定性还是定量方面,我们的RSPC模型生成的注意力图都要稳定得多。 **
图5. ImageNet数据集上中间注意力图的余弦相似度直方图。对于每一张图像,我们使用随机遮挡掩码构建损坏后的图像示例,并计算各层之间的平均余弦相似度。显然,我们的RSPC模型比RVT模型产生的注意力要稳定得多。 - Patch损坏模型生成的patch:可视化Patch损坏模型生成的patch,发现其倾向于遮挡物体关键部位的patch,如动物的眼睛等。这些patch会大幅降低模型置信度,但RSPC模型通过特征对齐,仍能保持较高置信度,从而具有更好的鲁棒性。
图6. 由所提出的patch损坏模型生成的基于patch的损坏样本的可视化结果。该损坏模型通常会识别出那些位于物体关键部位的patch,例如动物的面部或身体部位。
- 中间注意力图的稳定性:以RVT-Ti为基线,可视化中间注意力图并计算余弦相似度来评估注意力稳定性。结果显示,RVT-Ti面对patch损坏时注意力图变化显著,而RSPC-RVT-Ti能有效保留高注意力区域。从整个ImageNet验证集来看,RSPC在平均和最坏情况下都提高了注意力相似度,表明RSPC能显著稳定中间注意力图。
- 更多结果和消融实验
-
与对抗训练方法的比较:RSPC和对抗训练(AT)虽都采用对抗目标,但存在本质差异。目标上,AT学习像素扰动以提高对抗鲁棒性,却不太重视准确率(常大幅下降)和普通损坏鲁棒性(提升有限);RSPC则学习应损坏的patch,在准确率和鲁棒性间取得更好平衡。生成示例方式上,AT迭代优化像素,需对完整模型多次前向 - 反向传播;RSPC通过轻量级损坏模型单次前向传播生成示例,效率高约80倍。训练方式上,AT交替计算对抗示例和更新模型;RSPC则端到端训练,效率更高。实验表明,RSPC在准确率、鲁棒性和训练成本上表现更优。
图7. 在FAN-B-Hybrid模型上与对抗训练( ϵ = 1 / 255 \epsilon = 1/255 ϵ=1/255 的TRADES算法)的比较。对于平均损坏误差(mCE,最后一幅图),数值越低越好。显然,与TRADES相比,我们的RSPC模型在准确率和鲁棒性之间取得了更好的平衡,并且训练成本显著更低。 -
Patch选择策略:对比随机选择patch和对抗选择patch的策略,在ImageNet和ImageNet-C上的实验显示,采用对抗选择patch策略训练的模型在ImageNet-C上的表现显著优于随机策略,且保持与基线相当的准确率,证明对抗选择patch引入损坏的策略更有效。
-
RSPC对不同架构的影响:将RSPC应用于DeiT和Swin等更多架构。基于DeiT-Ti,在提高ImageNet-C鲁棒性的同时,降低了1.4%的mCE,干净数据上也有0.4%的提升;对于Swin-T,同样有效提高了鲁棒性,mCE从62.0%降至61.0%。这表明RSPC能在多种架构上有效提升模型的鲁棒性。
-
结论-Conclusion
这部分内容主要回顾研究工作、强调方法效果并展望未来,具体如下:
- 回顾研究工作:本文聚焦于Transformer模型的鲁棒性,深入研究其对输入patch的敏感性。研究发现,多数自注意力模块的特征及相应注意力在面对输入patch时较为脆弱,这是导致模型整体鲁棒性不足的关键因素。
- 强调方法效果:提出RSPC训练方法,通过构建patch损坏模型来确定易受攻击的patch,并利用特征对齐稳定中间注意力层,以此明确降低模型对patch损坏的敏感性。实际应用中,RSPC显著提升了自注意力的稳定性以及模型的整体鲁棒性,在多个基准测试中表现出色。
- 未来展望:尽管RSPC取得了较好效果,但鉴于Transformer在鲁棒性方面仍有提升空间,未来研究可在此基础上,进一步探索更有效的方法,以应对复杂多变的图像损坏情况,提升Transformer在各种场景下的性能表现 。
相关文章:
CVPR2023 | 通过降低对图像块损坏的敏感性来提高视觉Transformer的鲁棒性
Improving Robustness of Vision Transformers by Reducing Sensitivity to Patch Corruptions 摘要-Abstract引言-Introduction相关工作-Related Work降低对Patch损坏的敏感性-Reducing Sensitivity to Patch Corruptions实验-Experiments分析与讨论-Analysis and Discussions…...
NV228NV254固态美光颗粒NV255NV263
NV228NV254固态美光颗粒NV255NV263 美光颗粒固态硬盘技术解析与选购指南 一、美光颗粒技术体系解析 1. 颗粒分类与性能差异 美光颗粒采用独特编号体系,NV254(如MT29F8T08GLLBHL4-36QMES)代表8Tb TLC颗粒,采用BOS(浮…...
LeetCode 1007. 行相等的最少多米诺旋转 题解
示例 输入:tops [2,1,2,4,2,2], bottoms [5,2,6,2,3,2] 输出:2 解释: 图一表示:在我们旋转之前, tops 和 bottoms 给出的多米诺牌。 如果我们旋转第二个和第四个多米诺骨牌,我们可以使上面一行中的每个…...
c盘怎么安全清理---微软电脑管家
1、c盘红了怎么办 问了ai,也是要安装第三方的软件,win自带的不行吗?找找看 2、主角登场 仔细一看确实是官方自带的 3、使用自带工具扫描 4、转移文件到其他的盘 系统应用管理中的工具里面有个可以转移安装的软件到d盘,有一些软…...
C语言----指针入门篇
1. 指针是什么? 指针理解的两个要点: 1. 指针是内存中一个最小单元的编号 也就是地址 2. 平时口语中说的指针 通常指的是指针变量 是用来存放内存地址的变量 下面我将会具体解释上面两个要点 这时我们就不得不提一提内存了 1.1 什么是内存呢? C语言中的内存布局 程序…...
GitHub 趋势日报 (2025年05月03日)
本日报由 TrendForge 系统生成 https://trendforge.devlive.org/ 📈 今日整体趋势 Top 10 排名项目名称项目描述今日获星总星数语言1hacksider/Deep-Live-Camreal time face swap and one-click video deepfake with only a single image⭐ 1582⭐ 59337Python2aip…...
Go-Spring 全新版本 v1.1.0
Go-Spring 全新版本 v1.1.0 已于 2025 年发布。该版本具有诸多新特性,具体如下: 命名与结构优化:命名更加符合 Go 规范,模块划分更加合理,核心设计更加简洁。功能增强:突破性地支持统一日志框架,…...
JVM——JVM是怎么实现invokedynamic的?
JVM是怎么实现invokedynamic的? 在Java 7引入invokedynamic之前,Java虚拟机(JVM)在方法调用方面相对较为“僵化”。传统的Java方法调用主要依赖于invokestatic、invokespecial、invokevirtual和invokeinterface这四条指令&#x…...
使用 IDEA + Maven 搭建传统 Spring MVC 项目的详细步骤(非Spring Boot)
搭建Spring MVC项目 第一步:创建Maven项目第二步:配置pom.xml第三步:配置web.xml第四步:创建Spring配置文件第五步:创建控制器第六步:创建JSP视图第七步:配置Tomcat并运行目录结构常见问题解决与…...
洛谷 P1495:【模板】中国剩余定理(CRT)/ 曹冲养猪
【题目来源】 https://www.luogu.com.cn/problem/P1495 https://www.acwing.com/problem/content/225/ 【题目描述】 自从曹冲搞定了大象以后,曹操就开始捉摸让儿子干些事业,于是派他到中原养猪场养猪。可是曹冲满不高兴,于是在工作中马马虎…...
【iOS】 分类 拓展 关联对象
【iOS】 分类 拓展 关联对象 文章目录 【iOS】 分类 拓展 关联对象前言拓展分类分类与拓展的区别分类拓展关联对象哈希表(AssociationsHashMap) 大致工作流程setgetremove 关联对象的释放时机总结 前言 之前讲过有关于类对象的内容,这里学习一下有关于类的分类拓展和关联对象的…...
iview 老版本合并单元格
新版的iview中已经支持了合并单元格了,我的版本比较老,为:"iview": "^3.5.2"。暂不支持。记录一下别的大佬的方法。感觉思路比较活,正在这种思路需要在解决问题的过程中学习。 核心思路:通过rende…...
go语言实现用户管理系统
goweb实现用户管理系统 用户后台管理系统功能描述 登录功能 支持用户通过邮箱密码和密码进行登录。对输入的邮箱和密码进行验证,确保用户信息的正确性。登录成功后,更新用户的今日登录统计信息,并将用户信息存入会话(cookie&am…...
普通IT的股票交易成长史--20250504实盘记录
声明:本文章的内容只是自己学习的总结,不构成投资建议。价格行为理论学习可参考简介中的几位,感谢他们的无私奉献。 送给自己的话: 仓位就是生命,绝对不能满仓!!!!&…...
SQL手工注入(DVWA)
手工SQL注入攻击的标准思路 Low等级 (1)判断是否存在注入 (2)猜解字段个数 (3)确定字段顺序 (4)获取当前数据库 (5)获取当前数据库中的表 (…...
【LLM】deepseek R1之GRPO训练笔记(持续更新)
note 相关框架对比: 需微调模型且资源有限 → Unsloth;本地隐私优先的小规模推理 → Ollama;复杂逻辑或多模态任务 → SGLang;高并发生产环境 → vLLM 微调SFT和GRPO是确实能学到新知识的四种格式(messages、sharegpt…...
序列到序列学习
seq2seq 就是把一个句子翻译到另外一个句子。 机器翻译 给定一个源语言的句子,自动翻译成目标语言这两个句子可以有不同的长度 seq2seq 是一个 Encoder - Decoder 的架构 编码器是一个 RNN , 读取输入句子(可以是双向) 解码…...
去打印店怎么打印手机文件,网上打印平台怎么打印
在数字化时代,手机已成为我们存储和传输文件的重要工具。然而,当需要将手机中的文件转化为纸质文档时,许多人会面临选择:是前往线下打印店,还是利用线上打印平台?本文将为您解析这两种方式的优劣࿰…...
LeetCode每日一题5.4
1128. 等价多米诺骨牌对的数量 问题 问题分析 等价的定义为:两个骨牌 [a, b] 和 [c, d] 等价,当且仅当 (a c 且 b d) 或者 (a d 且 b c)。 思路 标准化骨牌表示: 为了方便比较,我们可以将每个骨牌 [a, b] 标准化为 [min(a…...
前端小练习————表白墙+猜数字小游戏
1,猜数字游戏 实现一个这个样式的 要猜的目标数字 点击重新开始游戏之后: 代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widt…...
五年级数学知识边界总结思考-上册
目录 一、背景二、过程1.小数乘法和除法小学五年级小数乘除法的知识点、由来、作用与意义解析**一、核心知识点梳理****二、知识点的由来****三、作用与意义****四、教学意义** **总结** 2.位置小学五年级“位置”知识点、由来、作用与意义解析**一、核心知识点梳理****二、知识…...
C与指针——内存操作与动态内存
1、内存常用操作 void* memcpy(void* dst,const void* src,size_t length); \\内存不允许重叠 void* memmove(void* dst,const void* src,size_t length); \\内存允许重叠 int memcmp(const void* dst,const void* src,size_t length); \\相等返回0 void* memset(void* dst,in…...
P3469 [POI 2008] BLO-Blockade
P3469 [POI 2008] BLO-Blockade 题目描述 B 城有 n n n 个城镇(从 1 1 1 到 n n n 标号)和 m m m 条双向道路。 每条道路连结两个不同的城镇,没有重复的道路,所有城镇连通。 把城镇看作节点,把道路看作边&…...
Linux网络编程 day3 五一结假
基本概念 三次握手 主动发起连接请求端,发送SYN标志位,请求建立连接。携带数据包包号、数据字节数(0)、滑动窗口大小。 被动接收连接请求端,发送ACK标志位,同时携带SYN请求标志位。携带序号、确认序号、数据包包号、数据字节数…...
解释一下NGINX的反向代理和正向代理的区别?
大家好,我是锋哥。今天分享关于【解释一下NGINX的反向代理和正向代理的区别?】面试题。希望对大家有帮助; 解释一下NGINX的反向代理和正向代理的区别? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 NGINX 作为一个高效的反向代理服务器&a…...
Coco AI 入驻 GitCode:打破数据孤岛,解锁智能协作新可能
在信息爆炸时代,企业正面临前所未有的挑战: 企业数据和信息分散,数据孤岛现象严重,员工往往浪费大量时间跨平台检索;跨部门协作困难,团队因信息隔阂导致项目延期;数据安全问题严峻,…...
【QT】QT中的网络编程(TCP 和 UDP通信)
QT中的网络编程(TCP 和 UDP通信) 1.tcp1.1 tcp通信1.1.1 相比linux中tcp通信:1.1.2 QT中的tcp通信: 1.2 tcp通信流程1.2.1 服务器流程:1.2.1.1 示例代码1.2.1.2 现象 1.2.2 客户端流程:1.2.2.1 示例代码1.2.2.2 现象: …...
个性化推荐:大数据引领电子商务精准营销新时代
个性化推荐:大数据引领电子商务精准营销新时代 引言 在电子商务的时代,个性化推荐系统已经成为提升用户体验、增强平台竞争力的重要技术。随着大数据技术的迅猛发展,传统的推荐方法已经无法满足用户日益增长的需求。为了精准地把握用户兴趣和消费倾向,商家们依赖大数据分析…...
【前端】【总复习】HTML
一、HTML(结构) HTML 是网页的骨架,主要负责网页的结构与语义表达,为 CSS 和 JavaScript 提供承载基础。 1.1 HTML 基本结构与语义化标签 1.1.1 HTML 基本结构 <!DOCTYPE html> <html lang"en"> <hea…...
Android 输入控件事件使用示例
一 前端 <EditTextandroid:id="@+id/editTextText2"android:layout_width="match_parent"android:layout_height="wrap_content"android:ems="10"android:inputType="text"android:text="Name" />二 后台代…...
JVM happens-before 原则有哪些?
理解Java Memory Model (JMM) 中的 happens-before 原则对于编写并发程序有很大帮助。 Happens-before 关系是 JMM 用来描述两个操作之间的内存可见性以及执行顺序的抽象概念。如果一个操作 A happens-before 另一个操作 B (记作 A hb B),那么 JMM 向你保证&#x…...
Python实例题:Python获取NBA数据
目录 Python实例题 题目 方式一:使用网页爬虫获取数据 代码解释 get_nba_schedule 函数: 主程序: 方式二:使用专业 API 获取数据 代码解释 运行思路 方式一 方式二 注意事项 以下是完整的 doubaocanvas 代码块&#…...
【中间件】brpc_基础_remote_task_queue
文章目录 remote task queue1 简介2 核心功能2.1 任务提交与分发2.2 无锁或低锁设计2.3 与 bthread 深度集成2.4 流量控制与背压 3 关键实现机制3.1 数据结构3.2 任务提交接口3.3 任务窃取(Work Stealing)3.4 同步与唤醒 4 性能优化5 典型应用场景6 代码…...
React-router v7 第七章(导航)
导航 在React-router V7中,大致有四种导航方式: 使用Link组件 link使用NavLink组件 navlink使用编程式导航useNavigate usenavigate使用redirect重定向 redirect Link Link组件是一个用于导航到其他页面的组件,他会被渲染成一个<a>…...
Terraform 中的 external 数据块是什么?如何使用?
在 Terraform 中,external 数据块(Data Block) 是一种特殊的数据源,允许你通过调用外部程序或脚本获取动态数据,并将结果集成到 Terraform 配置中。它适用于需要从 Terraform 外部的系统或工具获取信息的场景。 一、e…...
打印Excel表格时单元格文字内容被下一行遮盖的解决方法
本文介绍在打印Excel表格文件时,单元格最后一行的文字内容被下一行单元格遮挡的解决方法。 最近,需要打印一个Excel表格文件。其中,已知对于表格中的单元格,都设置了自动换行,如下图所示。 并且,也都设置了…...
【Linux】命令行参数与环境变量
🌟🌟作者主页:ephemerals__ 🌟🌟所属专栏:Linux 目录 前言 一、命令行参数 1. 什么是命令行参数 2. 命令行参数的作用 二、环境变量 1. 基本概念 2. 常见的环境变量 3. 环境变量相关操作 定义…...
Dify 完全指南(一):从零搭建开源大模型应用平台(Ollama/VLLM本地模型接入实战)》
文章目录 1. 相关资源2. 核心特性3. 安装与使用(Docker Compose 部署)3.1 部署Dify3.2 更新Dify3.3 重启Dify3.4 访问Dify 4. 接入本地模型4.1 接入 Ollama 本地模型4.1.1 步骤4.1.2 常见问题 4.2 接入 Vllm 本地模型 5. 进阶应用场景6. 总结 1. 相关资源…...
民法学学习笔记(个人向) Part.3
民法学学习笔记(个人向) Part.3 8. 诉讼时效🌸 概念: 是指权利主体在法定期间内不行使权利,则债务人享有抗辩权,可以导致权利人无法胜诉的法律制度(有权你不用,别人就有话说了&#…...
C# 方法(返回值、返回语句和void方法)
本章内容: 方法的结构 方法体内部的代码执行 局部变量 局部常量 控制流 方法调用 返回值 返回语句和void方法 局部函数 参数 值参数 引用参数 引用类型作为值参数和引用参数 输出参数 参数数组 参数类型总结 方法重载 命名参数 可选参数 栈帧 递归 返回值 方法可以向调用代码返…...
打电话玩手机检测数据集VOC+YOLO格式8061张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):8061 标注数量(xml文件个数):8061 标注数量(txt文件个数):8061 …...
详解如何压测RocketMQ
目录 1.如何设计压测 2.压测工具 3.硬件配置 4.写代码压测 5.自带压测脚本 1.如何设计压测 二八定律法则:按业务峰值的 120% 设计压测目标(若线上峰值1000TPS,压测目标至少1200TPS) 关注三个指标 吞吐量(TPS&…...
实验三 触发器及基本时序电路
1.触发器的分类?各自的特点是什么? 1 、 D 触发器 特点:只有一个数据输入端 D ,在时钟脉冲的触发沿,输出 Q 的状态跟随输入端 D 的 状态变化,即 ,功能直观,利于理解和感受…...
双列集合——map集合和三种遍历方式
双列集合的特点 键和值一一对应,每个键只能对应自己的值 一个键和值整体称为键值对或键值对对象,java中叫做entry对象。 map常见的api map接口中定义了双列集合所有的共性方法,下面三个实现类就没有什么额外新的方法要学习了。 map接口…...
WebRTC 服务器之Janus视频会议插件信令交互
1.基础知识回顾 WebRTC 服务器之Janus概述和环境搭建-CSDN博客 WebRTC 服务器之Janus架构分析-CSDN博客 2.插件使用流程 我们要使⽤janus的功能时,通常要执⾏以下操作: 1. 在你的⽹⻚引入 Janus.js 库,即是包含janus.js; <…...
LabVIEW温控系统热敏电阻滞后问题
在 LabVIEW 构建的温控系统中,热敏电阻因热时间常数大(2 秒左右)产生的滞后效应,致使控温出现超调与波动。在不更换传感器的前提下,可从算法优化、硬件调整和系统设计等维度着手解决。 一、算法优化 1. 改进 PI…...
【Unity】使用XLua进行热修复
准备工作: (1)将XLua的Tool拖入Asset (2)配置热修复 (3)运行Genrate Code (4)运行Hotfix Inject In Editor 编写脚本(注意类上带有[Hotfix]) [Hot…...
GateWay使用
首先创建一个网关服务,添加对应的依赖 <dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency><dependency><groupId&…...
如何使用责任链模式优雅实现功能(滴滴司机、家政服务、请假审批等)
在企业级开发中,我们经常会遇到一系列有先后顺序、逐步处理的逻辑链路,例如请假审批、报销审批、日志处理、事件处理、滴滴司机接单流程等。这些场景非常适合使用 责任链模式(Chain of Responsibility Pattern) 来优雅地实现。 本…...
opencv的contours
1.哪里来的contours: 我们常常用到这一句: contours, hierarchy cv2.findContours(img, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) 输出的contours的是一个tuple类型的: 1.它的len()就是contour的个数 2.每一…...