[论文阅读]Adversarial Semantic Collisions
Adversarial Semantic Collisions
Adversarial Semantic Collisions - ACL Anthology
Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP)
对抗样本是相似的输入但是产生不同的模型输出,而语义冲突是对抗样本的逆过程,是不同的输入产生相似的模型输出。
开发了基于梯度的方法,在白盒访问模型的情况下生成冲突,并将其应用于多个 NLP 任务。在释义识别中,攻击者构造的冲突文本被判定为输入查询的有效释义;像去重或合并相似内容这样的下游应用,会错误地将攻击者的输入与受害者的输入合并。在文档检索中,攻击者将冲突文本插入到其中一个文档中,使其即使与查询无关也能获得很高的排名。在回复建议中,攻击者的不相关文本被排在首位,还可能包含垃圾邮件或广告内容。在抽取式摘要中,攻击者将冲突文本插入到输入文本中,使其被选为最相关的内容。
第一种技术积极地生成冲突,而不考虑潜在的防御措施。然后开发了两种技术,“正则化积极” 和 “自然” 技术,通过语言模型对生成的冲突进行约束,以规避基于困惑度的过滤。在所有四个任务上,针对最先进的模型和基准数据集评估了所有技术。在 Quora 问题对的释义识别任务中,生成的冲突文本平均有 97% 的置信度被(错误地)识别为输入的释义。在文档检索中,生成的冲突使不相关文档的中位数排名从 1000 提升到了 10 左右。在对话(句子检索)的回复建议任务中,使用积极和自然技术生成的冲突文本分别有 99% 和 86% 的时间被排在首位。在抽取式摘要任务中,生成的冲突文本 100% 的时间都被模型选为摘要。最后讨论了针对这些攻击的潜在防御措施。

威胁模型
1.语义相似性
设f表示模型,x和y是一对文本输入。对于这些应用,有两种常见的建模方法。在第一种方法中,模型将x和y的连接作为输入,并直接产生一个相似性得分s=f(x,y)。在第二种方法中,模型计算句子级别的嵌入ex和ey,即输入x和y的密集向量表示。然后,相似性得分计算为s=g(ex,ey),其中g是向量相似性度量,如余弦相似性。基于这两种方法的模型都使用相似的损失进行训练,例如二元分类损失,其中每对输入如果在语义上相关则标记为 1,否则标记为 0。为了通用性,设S(x,y)是一个相似性函数,它涵盖了上述两种方法下的语义相关性。我们还假设S可以接受离散单词序列(表示为x=[w1,w2,...,wT])或单词嵌入向量(表示为x=[e1,e2,...,eT])形式的输入,具体取决于场景。
2.假设
假设攻击者完全了解目标模型,包括其架构和参数。通过模型提取,白盒攻击有可能转移到黑盒场景;我们将此留作未来的工作。攻击者控制一些将被目标模型使用的输入,例如,他可以为检索系统插入或修改候选文档。
3.攻击者的目标
给定一个目标模型f和目标句子x,攻击者希望生成一个冲突文本c,使得f认为x和c在语义上相似或相关。这种攻击的对抗性用途取决于具体应用。例如,如果一个应用使用释义识别来合并相似内容(如在 Quora 中,Scharff,2015),攻击者可以利用冲突向用户发送垃圾邮件或广告。在检索系统中,攻击者可以利用冲突提高某些查询中不相关候选文档的排名。对于抽取式摘要,攻击者可以使冲突文本被作为目标文档的摘要返回。

对抗性语义冲突
给定一个输入(查询)句子x,我们旨在为具有白盒相似性函数S的受害者模型生成一个冲突文本c。这可以表述为一个优化问题:argmaxcS(x,c),使得x和c在语义上不相关。对c进行暴力枚举在计算上是不可行的。相反,我们设计了算法 1 中概述的基于梯度的方法。我们考虑两种变体:(a)积极生成无约束的、无意义的冲突,以及(b)有约束的冲突,即语言模型认为流畅且不能基于困惑度自动过滤掉的标记序列。
我们假设模型既可以接受硬独热编码单词作为输入,也可以接受软单词作为输入,其中软单词是词汇表的概率向量。
1.敌对性冲突
使用基于梯度的搜索,为给定的目标输入生成固定长度的冲突。
搜索分两步进行:1)通过带松弛的梯度优化找到冲突的连续表示,2)应用束搜索生成硬冲突。迭代地重复这两个步骤,直到相似性得分s收敛。
优化软冲突:
首先通过温度退火将优化松弛到连续表示。给定模型的词汇表V和固定长度T,我们将每个位置的单词选择建模为连续的对数几率向量zt。为了将每个zt转换为输入单词,我们将在t位置软选择的单词建模为:
其中τ是温度标量。直观地说,对zt应用 softmax 函数给出了词汇表V中每个单词的概率。温度控制单词选择概率的尖锐程度;当τ→0时,软单词与硬单词argmaxw∈Vzt[w]相同。
我们对连续值z进行优化。在每一步,软单词冲突被输入到S中以计算S(x,cˇ)。由于所有操作都是连续的,误差可以一直反向传播到每个zt以计算其梯度。因此,我们可以应用梯度上升来优化目标。
搜索硬冲突:在松弛优化之后应用投影步骤,通过离散搜索找到硬冲突:对每个zt应用从左到右的束搜索。在每个搜索步骤t,我们首先根据zt获取前K个单词,并根据目标相似性对它们进行排名,其中ct+1:T是从t+1到结束位置的部分软冲突。这个过程允许我们根据之前找到的硬单词和对未来单词的松弛估计,为每个位置的软单词找到硬单词替换。
用硬冲突重复优化:如果相似度得分在波束搜索后仍有提升空间,就利用当前的 c 来初始化软解 zt,通过将硬解转回连续空间来进行下一次优化迭代。
为了从硬句子初始化连续松弛,我们对其独热表示应用标签平滑(LS)。对于当前c中的每个单词ct,我们将其一维独热向量软化到Δ^{∣V∣-1}内,公式为:
其中ϵ是标签平滑参数。由于LS(ct)被约束在概率单纯形Δ∣V∣-1内,我们将每个zt初始化为log(LS(ct)),以优化下一次迭代的软解。
2.约束冲突
敌对性方案在找到冲突上很高效,但是会疏忽无意义的句子,PPL很高,很容易被基于PPL的过滤筛选掉。解决方案:对冲突施加一个软约束,同时最大化目标相似度和语言模型相似似然:
其中P(c; g)是在预训练语言模型g下冲突c的语言模型似然度,β∈[0,1]是一个插值系数
两种方法解决公式3提出的优化:(a)在soft c上添加一个正则化项来近似LM的似然;(b)引导一个预训练的LM生成看起来自然的c
1.正则化Aggressive Collisions
给定语言模型g,可以把LM似然的soft版本作为一个正则化的形式来和从变量[z1,...,zT]中计算得出的soft aggressive 进行合并:
其中H函数是计算交叉熵,里面的P是给定部分软冲突,在第t个位置的下一个token预测概率
公式4 将软碰撞作为输入,放宽了硬碰撞的 LM 似然,并可添加到梯度优化的目标函数中。优化后的变量 zt 将偏向于最大化 LM 可能性的词。
为了进一步降低 c 的困惑度,我们利用了 LM 的退化特性,即 LM 对重复的常见字元赋予较低的困惑度,并限制 c 中连续字元的跨度(如 c 的后半部)从最常出现的英语单词中选取,而不是从整个 V 中选取。
2.自然冲突
与先松弛再搜索不同,我们对公式 3 采取先搜索再松弛的策略。这使我们在连续空间中选择下一个词时能够整合一个硬语言模型。在每一步t,我们最大化
其中,c1:t−1是之前找到的束搜索解。这种顺序优化本质上是在语言模型的可能性和冲突前缀的目标相似度上进行联合搜索的语言模型解码过程。
精确优化公式 5 需要根据语言模型似然logP和相似度S对每个w进行排序。在每一步评估每个词的语言模型可能性是高效的,因为我们可以缓存logP并以标准方式计算下一个词的概率。然而,评估任意相似度函数S(x,c1:t−1⊕w)需要对模型进行前向传递,这在计算上可能很昂贵。
扰动语言模型的对数几率:受即插即用语言模型的启发,我们修改语言模型的对数几率以考虑相似度。首先,令L_t是语言模型在步骤t产生的下一个词的对数几率。然后,我们从这个初始值开始优化,找到一个更新值δt,使它更倾向于选择能最大化相似度的词。具体来说,我们令zt=ℓt+δt,其中δt是一个扰动向量。然后,我们在松弛的相似度目标maxδtS(x,c1:t−1⊕softmax(zt/τ))上进行少量梯度步骤,其中softmax(zt/τ)是如公式 1 中的松弛软词。这鼓励从扰动后的对数几率zt得到的下一个词的预测分布,更倾向于选择那些可能与输入产生冲突的词。
联合束搜索:在每一步t进行扰动后,我们在V中找到最可能的前B个词。这使我们只需要对在当前束搜索上下文下,在语言模型中可能性较高的这部分词评估S。我们根据目标损失和语言模型对数可能性的插值对这些前B个词进行排序。我们按照公式 5 为每个束和每个前B个词分配一个分数,并用得分最高的词更新束搜索结果。
这个过程会生成一个看起来自然的解码序列,因为每一步都使用真实的词作为输入。随着我们构建序列,每一步的搜索都由语义相似度和流畅度这两个目标的联合得分引导。
整体思路人话解释版
这篇文章的核心方法其实就是在搞一种叫“语义碰撞”的攻击,目的是让NLP模型把两个完全不相关的文本误判为语义相似,人类一看就知道这两句话毫无关系,但 NLP 模型却可能认为它们是“高度相似”(比如 99% 置信度),作者就把这种攻击叫做语义碰撞Semantic Collisions。作者用了梯度优化的方法来生成这种文本,还分了两种类型:一种是“无脑乱怼型”(Aggressive),另一种是“装得像人话型”(Natural)。
无脑乱怼型(Aggressive):
直接暴力优化,用梯度上升硬怼模型的相似度分数,生成一堆狗屁不通的文本。比如:“Pay 0ff your mortgage der Seller chem Wad marijuana scarcity prince”这种鬼话。
方法分两步:
- 先用连续变量(softmax搞出来的概率)优化,让模型觉得这坨东西和原文本相似。
- 再用beam search把连续变量转成具体的词(硬碰撞)。
公式(1)和(2)就是装逼用的,本质就是“用梯度调词的概率,直到模型被忽悠”。
从文章的描述和算法描述上,具体来说:
把词变成“软选择”(Soft Selection)
通常 NLP 模型输入的是具体的词(比如 “cat”),但这里作者先用一个“概率分布”表示每个位置的词可能是什么。
比如,第一个词可能是 70% “cat”、20% “dog”、10% “apple”…… 这样模型可以计算梯度(因为概率是连续的)。
公式(1)就是干这个的:
其中zt是每个词的“倾向性分数”,τ控制概率的集中程度(越小越倾向于选一个词)。
用梯度优化,让模型误判
目标是让模型认为生成的句子c^和原句x相似,所以优化目标是最大化x和c^的相似度(比如 BERT 的相似度分数)。
用梯度上升(Adam 优化器)调整zt,让 S(x,c^)越来越大。
把“软词”变回“硬词”(Beam Search)
现在c^是一堆概率分布,但我们需要具体的词(比如 “cat” 而不是 70% “cat”)。用 Beam Search(一种搜索算法)从概率分布里挑出最能让模型误判的词组合。比如,如果模型觉得 “cat dog apple” 和原句相似度很高,就选这个词组合。
重复优化,直到骗过模型
如果 Beam Search 找到的词还不够“骗人”,就再回到第 1 步,用这些词初始化新的优化过程。
结果:生成一堆狗屁不通的句子,但模型认为它们和原句高度相似。
装得像人话型(Natural):
为了绕过基于语言模型(LM)的过滤,作者加了个约束:生成的文本不仅要骗过目标模型,还要让LM觉得它像人话。
方法更啰嗦:
一边用LM生成正常词,一边用梯度微调这些词的logits,让它们同时骗过目标模型。
公式(3)到(5)本质就是“用LM生成词,但偷偷改几个词让模型上当”。
公式(1)到(5)完全是为了论文显得高大上,实际就是梯度优化+beam search的老套路,非要包装成数学难题。
“温度参数τ”、“标签平滑ϵ”这些术语除了装逼没啥用,直接说“调参数让生成更平滑”不就完了?
自然碰撞的部分更是脱裤子放屁,明明就是“用LM生成+梯度微调”,非要写成一堆公式。
从方法描述上来看,具体措施是:
用语言模型(LM)生成候选词,比如用 GPT-2 生成一些合理的词(“the”, “cat”, “is”…),而不是完全随机选。
微调这些词,让模型误判:对 LM 生成的词做小调整(比如把 “cat” 改成 “kitten”),让它们同时满足:语言模型觉得合理(低困惑度);目标模型觉得和原句相似(高S(x,c))
公式(5)就是干这个的:
其中:
S(x,c)是目标模型的相似度;logP(c;g)是语言模型的概率(保证句子通顺);β是调节权重(更偏向通顺 or 更偏向骗模型)
用 Beam Search 选最佳组合:和“无脑暴力法”类似,但每次选词时不仅要看相似度,还要看语言模型的流畅度。
结果:生成看起来正常的句子,但模型仍然被骗。
这方法的核心就一句话:用梯度优化生成一堆文本,要么无脑乱怼,要么假装人话,目的是让模型把垃圾当宝贝。公式全是烟雾弹,直接看算法伪代码(Algorithm 1)反而更清楚。
实验
略
相关文章:
[论文阅读]Adversarial Semantic Collisions
Adversarial Semantic Collisions Adversarial Semantic Collisions - ACL Anthology Proceedings of the 2020 Conference on Empirical Methods in Natural Language Processing (EMNLP) 对抗样本是相似的输入但是产生不同的模型输出,而语义冲突是对抗样本的逆…...
Redis Sentinel 和 Redis Cluster 各自的原理、优缺点及适用场景是什么?
我们来详细分析下 Redis Sentinel (哨兵) 和 Redis Cluster (集群) 这两种方案的原理和使用场景。 Redis Sentinel (哨兵) 原理: Sentinel 本身是一个或一组独立于 Redis 数据节点的进程。它的核心职责是监控一个 Redis 主从复制 (Master-Slave) 架构。多个 Sentinel 进程协同…...
面向人工智能、量子科技、人形机器人等产业,山东启动制造业创新中心培育认定
从山东省工业和信息化厅了解到,2025年山东省制造业创新中心培育和认定已启动,重点面向全省传统优势产业、新兴产业及未来产业等领域,鼓励具备条件的龙头企业牵头创建省制造业创新中心。 今年,山东重点面向全省冶金、化工、轻工、…...
无锡哲讯科技:SAP财务系统——赋能企业智慧财务管理
数字化时代,财务管理的新挑战 在全球化竞争和数字经济快速发展的背景下,企业财务管理正面临前所未有的挑战。传统的财务核算方式效率低下、数据孤岛严重、决策滞后,难以满足现代企业高效运营的需求。如何实现财务数据的实时整合࿱…...
Linux命令使用记录(自用)
阿里开源镜像站:https://developer.aliyun.com/mirror/?spma2c6h.13651102.0.0.6c2a1b11I9pmUD&serviceTypemirror&tag top命令 top [选项] -p 只显示某个进程的信息 -d 设置刷新时间,默认是5s -c 显示产生进程的完整命令,默认是进程…...
Spring Security 的 CSRF 防护机制
CSRF:跨站请求伪造(Cross-Site Request Forgery) Spring Security 中的 .csrf() 是用来开启或配置这种保护机制,防止恶意网站“冒充用户”向你的网站发起请求。 一、CSRF 攻击原理简要 CSRF 的典型攻击场景如下: 用…...
跨平台项目部署全攻略:Windows后端+Mac前端在服务器的协同实战
当你的后端(Flask+MySQL,Windows开发)与前端(Vue,Mac开发)需要统一部署到服务器并实现交互时,完全可以通过「跨平台适配+反向代理」方案实现。本文将分步骤讲解如何在 Linux服务器(推荐)或 Windows服务器 上部署,并解决跨平台兼容性、跨域请求等核心问题。 一、技术…...
第八章 磁盘管理未完待续
1.磁盘管理 磁盘简介 名词:磁盘/硬盘/disk 存储设备类型从工作原理区分 机械 机械硬盘即是传统普通硬盘,主要由:盘片,磁头,盘片转轴及 控制电机,磁头控制器,数据转换器,接口&…...
杰理AC79-WiFi 的 AP、STA 和 Monitor 模式
WiFi 的 AP、STA 和 Monitor 模式是无线网卡的不同工作模式,它们的区别如下: AP 模式(Access Point 模式,接入点模式) 功能:将有线网络转换为无线网络,允许其他无线设备连接到该网络ÿ…...
MAC安装unar并解压.rar文件
MAC上默认解压.zip文件,对.rar文件进行解压需要安装专门对软件。本文记录如何在命令行安装unar并对.rar文件进行解压。 命令行安装 brew install unar打印如下log则安装成功 使用brew list unar检查是否安装成功 brew list unar使用unar解压 unar 文件名.rar...
`nmi_watchdog` 与 `softlockup_panic` 的区别与关系
1. 功能区别 参数作用触发条件影响nmi_watchdog启用 NMI(不可屏蔽中断)看门狗检测 CPU 是否长时间不执行调度(软死锁)仅记录警告(默认),需配合 softlockup_panic 才会触发 panicsoftlockup_pan…...
【Bash】可以请您解释性地说明一下“2>1”这个语法吗?
Qwen3-235B 当然可以!我们一步步拆解 2>&1 的含义,用生活化的例子来理解它: 🧠 前提知识:三个“水流通道” 在 Linux/Unix 系统中,程序运行时有三种默认的“水流通道”: 标准输入&…...
打造美观 API 文档:Spring Boot + Swagger 实战指南
目录 打造美观 API 文档:Spring Boot Swagger 实战指南导语一、Swagger 简介二、Spring Boot 2 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 三、Spring Boot 3 集成 Swagger1. 添加依赖2. 配置 Swagger3. 访问 Swagger UI 四、多种接口文档风格展示…...
如何在 Android 上恢复已删除的照片?:简短指南
没有什么比不小心从 Android 智能手机中删除所有照片更糟糕的了。这样,除非您在重置之前已经备份了数据,否则您的所有照片都会消失。如果您忘记备份照片,您仍然可以按照一些简单的技术在 Android 设备上恢复已删除的照片。 如何在 Android 上…...
第十六届蓝桥杯大赛网安组--几道简单题的WP
目录 1. ezEvtx 2.flowzip 3.Enigma 4.星际XML解析器 1. ezEvtx 题目内容 EVTX文件是Windows操作系统生成的事件日志文件,用于记录系统、应用程序和安全事件。(本题需要选手找出攻击者访问成功的一个敏感文件,提交格式为flag{文件名},其中…...
Element:Cheack多选勾选效果逻辑判断
效果展示 取消子级勾选,父级的勾选效果 代码合集 (1)组件代码 fromlist.cheackType 类型,permissio表示是权限. fromlist:[{id:1,children:[{...}]},...]传递的数据大致结构 <!-- 操作权限 --><template v-if"…...
从摄像头到 RAW 数据:MJPEG 捕获与验证
从摄像头捕获 MJPEG 原始数据:完整指南与验证方法 🔍 引言 MJPEG(Motion JPEG)是一种常见的视频压缩格式,广泛应用于摄像头、监控系统和嵌入式设备。在某些场景下,我们需要直接从摄像头获取 MJPEG 原始数据…...
【展位预告】正也科技将携营销精细化管理解决方案出席中睿营销论坛
在医药行业面临政策深化、技术迭代、全球化竞争的多重挑战下,第二届中睿医药健康生态生长力峰会暨第三十五届中睿医药营销论坛将于广州盛大启幕。5月19-20日本次峰会以“聚焦政策变革、把握产业趋势、构建生态共赢”为核心,旨在通过全产业链资源整合与创…...
记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的适配问题
前言 记录 Flink jdbc、mysql-cdc 连接 mysql8 碰到的小问题 版本 Flink 1.15.3mysql-cdc 2.3.0MySQL 8.0.27 cdc_mysql2mysql MySQL5 之前主要用 MySQL5 ,下面是 MySQL5 的 sql ,具体见 Flink MySQL CDC 使用总结 set yarn.application.namecdc_mysql2mysql;…...
TCP概念+模拟tcp服务器及客户端
目录 一、TCP基本概念 二、ser服务器代码 三、cil客户端代码 一、TCP基本概念 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。以下是TCP的一些基本概念: 面向连接&…...
高翔《视觉SLAM十四讲》第七章视觉里程计3d-2d位姿估计代码详解与理论解析
高翔《视觉SLAM十四讲》第七章代码详解与理论解析 一、三维空间位姿估计核心算法实现 在视觉SLAM领域,3D - 2D位姿估计是确定相机在三维空间中位置和姿态的关键技术。本部分将详细解析其工程实现框架,同时说明代码模块的划分逻辑。 代码整体结构清晰,各模块分工明确,主要…...
Elasticsearch 内存使用指南
作者:来自 Elastic Valentin Crettaz 探索 Elasticsearch 的内存需求以及不同类型的内存统计信息。 Elasticsearch 拥有丰富的新功能,帮助你为你的使用场景构建最佳搜索解决方案。浏览我们的示例笔记本了解更多信息,开始免费云试用࿰…...
【Stable Diffusion】原理详解:从噪声到艺术的AI魔法
引言 Stable Diffusion是 stability.ai 开源的图像生成模型,是近年来AI生成内容(AIGC)领域最具突破性的技术之一。它通过将文本描述转化为高分辨率图像,实现了从“文字到视觉”的创造性跨越。其开源特性与高效的生成能力ÿ…...
并发设计模式实战系列(9):消息传递(Message Passing)
🌟 大家好,我是摘星! 🌟 今天为大家带来的是并发设计模式实战系列,第九章消息传递(Message Passing),废话不多说直接开始~ 目录 一、核心原理深度拆解 1. 消息传递架构 2. 并发…...
【MCP Node.js SDK 全栈进阶指南】高级篇(3):MCP 安全体系建设
背景 随着MCP协议在企业和个人应用中的广泛采用,安全性已成为MCP系统设计和开发中不可忽视的核心要素。一个健壮的MCP安全体系不仅能保护敏感数据和用户隐私,还能确保AI模型与外部工具交互的可靠性和完整性。本文将深入探讨MCP TypeScript-SDK的安全体系建设,帮助开发者构建…...
C++智能指针
智能指针是C中用于自动管理动态分配内存的类模板,它们通过在适当的时机自动释放内存来帮助防止内存泄漏。C11引入了以下几种主要的智能指针: 1. std::unique_ptr 独占所有权的智能指针,同一时间只能有一个unique_ptr指向特定对象。 #inclu…...
基于STM32、HAL库的ATECC608B安全验证及加密芯片驱动程序设计
一、简介: ATECC608B是Microchip公司生产的一款安全加密芯片,提供以下主要特性: 基于硬件的高安全性加密算法 ECC P-256加密引擎 SHA-256哈希算法 AES-128加密 真随机数生成器(TRNG) 16KB安全存储空间 IC接口(最高1MHz) 低功耗设计,适合物联网应用 二、硬件接口: ATECC60…...
【安全扫描器原理】ICMP扫描
【安全扫描器原理】ICMP扫描 1.ICMP协议概述2.ping命令3.tracert命令4.ICMP通信实例5.ICMP协议内容6.ICMP扫描的安全性7.ICMP扫描器的原理及优化策略1.ICMP协议概述 ICMP是TCP/IP协议族中的一个重要协议,主要用于在IP主机之间、主机和路由器之间传递控制消息,这些控制消息包…...
前端 AI 开发实战:基于自定义工具类的大语言模型与语音识别调用指南
在人工智能技术快速发展的今天,将大语言模型(LLM)和语音识别(ASR)功能集成到前端应用中,已经成为提升用户体验、打造智能化应用的重要手段。本文将结合一段实际的 AI 工具类代码,详细讲解如何在…...
组件轮播与样式结构重用实验
任务一:使用“Swiper 轮播组件”对自行选择的图片和文本素材分别进行轮播,且调整对应的“loop”、“autoPlay”“interval”、“vertical”属性,实现不同的轮播效果,使用Swiper 样式自定义,修改默认小圆点和被选中小圆…...
(计数)洛谷 P8386 PA2021 Od deski do deski/P10375 AHOI2024 计数 题解
题意 给定 n n n, m m m,求满足以下限制的长度为 n n n 的序列数目: 每个元素在 [ 1 , m ] [1,m] [1,m] 之间;一次操作定义为删除一个长度至少为 2 2 2 且区间两端相等的区间,该序列需要在若干次操作内被删空。 …...
基于C++数据结构双向循环链表实现的贪吃蛇
大二上数据结构I-课程设计 1.设计思路 建模:程序界面是一个二维平面图蛇:蛇的身体可以看作是链表的节点,当蛇吃到食物时,就增加一节链表节点食物:相应地在边界内随机生成蛇的移动:取得上下左右键的ASCII码…...
H3C ER3208G3路由实现内网机器通过公网固定IP访问内网服务器
内网机器可以通过内网访问服务器;公网机器可以通过公网固定IP访问服务器;但内网机器无法通过公网固定IP访问内网服务器;想实现内网机器通过公网固定IP访问内网服务器 WEB登录管理后台,网络设置->NAT配置,选“高级配…...
Vue3+Three JS高德地图自定义经纬度实现围栏
Vue3实现代码 index.html需要引入three.js <script src"https://cdn.jsdelivr.net/npm/three0.142/build/three.js"></script> 围栏组件 <template><div id"mapContainer" ref"mapContainer"></div> </templ…...
远程访问你的家庭NAS服务器:OpenMediaVault内网穿透配置教程
文章目录 前言1. OMV安装Cpolar工具2. 配置OMV远程访问地址3. 远程访问OMV管理界面4. 固定远程访问地址 前言 在这个数据爆炸的时代,无论是管理家人的照片和视频,还是企业老板处理财务报表和技术文档,高效的数据管理和便捷的文件共享已经变得…...
4.2.3 MYSQL事务原理分析
文章目录 4.2.3 MYSQL事务原理分析1. 事务1. 前提:并发连接访问2. 事务定义3. 事务语句:4. acid特性5. undolog-回滚日志6. redolog-重做日志 2. 隔离级别1. 四种隔离级别2. 并发问题解释3. 隔离级别设置 3. MVCC(Multiversion Concurrency Control&…...
极狐GitLab 如何使用文件导出迁移项目和群组?
极狐GitLab 是 GitLab 在中国的发行版,关于中文参考文档和资料有: 极狐GitLab 中文文档极狐GitLab 中文论坛极狐GitLab 官网 用文件导出迁移项目和群组 (FREE ALL) 推荐使用 直接传输 迁移群组和项目。然而,在某些情况下,您可能…...
Linux/AndroidOS中进程间的通信线程间的同步 - 管道和FIFO
前言 管道是 UNIX 系统上最古老的 IPC 方法,它在 20 世纪 70 年代早期 UNIX 的第三个版本上就出现了。管道为一个常见需求提供了一个优雅的解决方案:给定两个运行不同程序的进程,在 shell 中如何让一个进程的输出作为另一个进程的输入呢&…...
第十六届蓝桥杯 2025 C/C++组 破解信息
目录 题目: 题目描述: 题目链接: 思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P12344 [蓝桥杯 2025 省 B/Python B 第二场] 破解信息…...
[FPGA Video IP] VDMA
Xilinx AXI Video Direct Memory Access IP (PG020) 详细介绍 概述 Xilinx AXI Video Direct Memory Access (AXI VDMA) LogiCORE™ IP 核(PG020)是一个软核 IP,专为视频应用设计,提供在内存与 AXI4-Stream 视频外设之间的高带宽…...
Ubuntu如何查看硬盘的使用情况,以及挂载情况。
在Ubuntu中查看硬盘使用情况及挂载情况,可通过以下命令实现: 一、查看硬盘使用情况 df -h 显示所有挂载文件系统的磁盘空间使用情况(含总容量、已用空间、可用空间等),输出结果以易读格式(如GB、MB&#x…...
第十六届蓝桥杯 2025 C/C++组 脉冲强度之和
目录 题目: 题目描述: 题目链接: 思路: 思路详解: 代码: 代码详解: 题目: 题目描述: 题目链接: P12338 [蓝桥杯 2025 省 B/Python B 第二场] 脉冲强度…...
23种设计模式-行为型模式之中介者模式(Java版本)
Java 中介者模式(Mediator Pattern)详解 🧠 什么是中介者模式? 中介者模式是一种行为型设计模式,它通过定义一个中介者对象来封装一组对象之间的交互。中介者使得各个对象不需要显式地知道彼此之间的关系,…...
集群与存储-lvs-nat实验
一、实验目的 1、熟练掌握ipvsadm 指令的使用 2、理解lvs 负载均衡的原理 3. 熟练掌握lvs-netnfs的配置 二、实验内容 1.拓扑图 2.实验步骤 #在节点服务器中添加网卡,选择仅主机模式 #查看网卡 #启用网卡 nmcli device up ens224 ip a #修改虚拟地址的网关 #…...
Android——Serializable和Parcelable
在Android中传递对象的方式 在 Android 开发中,Parcelable 和 Serializable 是两种用于对象序列化的接口 Serializable public class Student implements Serializable {public int id;public String name;public int age;public Student(int id, String name, i…...
python:sklearn 决策树(Decision Tree)
5. 决策树(Decision Tree) - 第5章 算法思想:基于信息增益(ID3)或基尼不纯度(CART)递归划分特征。 编写 test_dtree_1.py 如下 # -*- coding: utf-8 -*- """ 5. 决策树&…...
0-1背包难题哪家强:回溯法 VS 动态规划 VS 贪心算法
回溯法、动态规划和贪心算法是三种常见的算法设计思想,他们都可以用来解决0-1背包问题,但它们在解决问题的思路、适用条件和效率上存在显著差异。以下从多个维度进行对比分析: 相关系列文章链接: 《贪心算法 vs 动态规划:“急性子…...
JavaSE第12篇:接口interface
一、使用步骤 1.引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import warnings warnings.filterwarnings(ignore) import ssl ssl._create_default_https_con…...
一文掌握 npm 基础与常用指令
初学前端?npm 常用指令不熟?想了解 pnpm、yarn、cnpm 有什么不同? 这篇文章将带你从入门到精通,全面掌握 npm 的使用方法,以及选择适合自己项目的包管理工具! 文章目录 一、什么是 npm?二、npm …...
OpenObserve API Usage Guide for Log Management
OpenObserve API Usage Guide for Audit Log Management 1. 概述 1.1 目标 本文档旨在详细介绍 OpenObserve 的 API 使用方法,帮助用户通过 API 实现日志管理功能,包括日志摄入、查询、模糊匹配(类似 SQL 的 LIKE)、stream 管理…...