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

【Paper Note】利用Boundary-aware Attention边界感知注意力机制增强部分伪造音频定位

利用Boundary-aware Attention边界感知注意力机制增强部分伪造音频定位

  • 摘要
    • 核心模块
    • 什么是边界?什么是边界特征?
  • 写作背景
    • 解决的问题
  • 方法
    • 1. 特征提取
      • 使用预训练好的自监督学习模型进行前端特征提取
      • Attentive pooling
        • Q:为什么使用Attentive pooling而不是其他方式
    • 2. 边界增强(Boundary Enhancement, BE)模块
      • 帧间特征提取
      • 帧内特征提取
        • Q:为什么是1D-ResNet加上全连接层
      • 边界特征拼接
    • 3.边界帧级注意力(Boundary Frame-wise Attention, BFA)模块
    • 4.损失函数
    • 5.工作流程总结
  • 实验
      • 数据集和实现细节
      • 消融研究
      • 更细粒度分辨率实验
      • 结论

论文标题:Enhancing Partially Spoofed Audio Localization with Boundary-aware Attention Mechanism
论文官方代码:https://github.com/media-sec-lab/BAM
Paperwithcode:Enhancing Partially Spoofed Audio Localization with Boundary-aware Attention Mechanism

摘要

部分伪造音频定位的任务旨在准确确定帧级别的音频真实性。尽管一些工作取得了令人鼓舞的成果,但在单个模型中利用有界信息仍然是一个未经探索的研究课题。在这项工作中,我们提出了一种称为边界感知注意力机制Boundary-aware Attention Mechanism的新方法。

核心模块

它由两个核心模块组成:边界增强Boundary Enhancement和边界逐帧注意
Boundary Frame-wise Attention

  • 边界增强Boundary Enhancement:将帧内和帧间信息组合在一起提取可辨别的边界特征,随后用于边界位置检测和真实性决策,
  • 边界逐帧注意Boundary Frame-wise Attention:利用边界预测结果明确控制帧之间的特征交互,实现了真实帧和假帧之间的有效区分

什么是边界?什么是边界特征?

  • “边界”(Boundary)指的是在音频信号中,真实语音和合成语音(或伪造语音)相接合的地方。这些边界区域通常包含混合了真实和伪造音频的帧,对于检测和定位伪造音频来说,识别这些边界位置是非常重要的。

  • “边界特征”(Boundary Features)是指能够表征音频中边界区域特性的一组特征。在BAM方法中,边界特征是通过特定的网络结构提取出来的,用于帮助模型区分和定位真实语音和合成语音之间的边界。

写作背景

在面对日益逼真的伪造语音威胁时,如何准确地检测和定位伪造语音片段,以保护语音验证系统不受欺骗攻击的影响。作者提出的边界感知注意力机制(BAM)旨在解决这一挑战,提高定位伪造语音的准确性和效率。

解决的问题

  • 边界信息利用不足:
    在现有的部分伪造音频检测(PSAD)研究中,边界信息通常被用于辅助在语句级别检测伪造音频,但如何将边界信息有效地整合到单个对抗性模型(Countermeasure, CM)中以提高帧级别的定位精度,是一个尚未被充分探索的研究课题。

  • 区分性和定位精度不足:
    边界帧(同时包含真实和伪造音频的帧)与完全真实帧在特征空间中非常接近,这可能导致训练不稳定和性能下降。

  • 现有注意力机制的局限性:
    传统的注意力机制可能没有针对部分伪造音频的特殊需求进行优化,特别是在需要区分帧的真实性时。

模型性能限制:

现有的方法可能没有达到最佳的定位性能,尤其是在精确度、召回率和F1分数等评估指标上。

时间颗粒度的挑战:

在更细粒度的时间颗粒度下,准确检测边界位置更具挑战性,这可能影响模型的整体性能。

方法

边界感知注意力机制(Boundary-aware Attention Mechanism, BAM)的具体工作流程如下:
在这里插入图片描述

1. 特征提取

使用预训练好的自监督学习模型进行前端特征提取

使用预训练的自监督学习(SSL)模型,如Wav2vec2(W2V2)或WavLM,来提取语音的有效前端特征(Front-end Features是指在语音处理和识别系统中,用于表示输入语音信号的原始或经过初步处理的特征。这些特征是后续声学模型或识别算法的输入,用于捕捉和表征语音信号的关键信息)
这些特征比传统的手工制作特征(例如LFCC、MFCC)更能利用大量未标记数据进行预训练,显著提高数据表示能力,并有助于识别音频数据中的复杂模式。

Attentive pooling

Attentive pooling层将输入的不同长度的输入序列(从Wav2vec2或WavLM模型提取的特征),映射到一个固定的时间颗粒度(160毫秒)上

Attentive pooling通过学习每个帧或时间段的重要性,给予更重要的帧更高的权重,这有助于模型集中注意力于那些对于区分真实和伪造音频最有用的部分。

Q:为什么使用Attentive pooling而不是其他方式

参考说话人识别中的Temporal pooling

2. 边界增强(Boundary Enhancement, BE)模块

  • 在PSAL的上下文中,边界处包含伪造和真实样本的帧被标记为伪造。在使用二进制真实性标签进行训练时,边界帧(尤其是那些具有较小比例欺骗数据的边界帧)在特征空间中接近完全真实的帧,即使它们具有相反的标签。这种情况可能会导致训练不稳定和性能下降。为了缓解这个问题,开发了一种边界增强模型,专门用于建模和区分边界帧和非边界帧。
  • 设计了一个边界增强模块,包含两个分支,一个用于提取帧内特征,另一个用于提取帧间特征,以有效检测边界帧位置。
    • 帧内特征(Intra-frame Features):
      每个帧单独输入到一个1D-ResNet结构中,用于学习帧内特征。这些特征捕捉了单个帧内的语音信号模式。
    • 帧间特征(Inter-frame Features):
      使用帧间注意力块(Frame-wise Attention Block, FAB)来捕获帧与帧之间的相关性。FAB通过注意力机制计算每个帧特征与其他帧特征的加权和,从而得到更新的帧特征。
    • 边界特征融合:
      将帧内特征和帧间特征进行拼接,形成边界特征。这些边界特征既包含了单个帧的信息,也包含了帧与帧之间的上下文信息。

在论文中,边界增强(Boundary Enhancement, BE)模块的目标是将前端特征 F g ∈ R T × D F_g \in \mathbb{R}^{T \times D} FgRT×D转换为边界特征 F b ∈ R T × 2 D F_b \in \mathbb{R}^{T \times 2D} FbRT×2D,其中 T T T是帧数, D D D是特征维度。

帧间特征提取

A t = tanh ⁡ ( ϕ ( s ) ) W a A_t = \tanh(\phi(s))W_a At=tanh(ϕ(s))Wa
F a = softmax ( A t ) F g F_a = \text{softmax}(A_t)F_g Fa=softmax(At)Fg
F inter = SELU ( BN ( ( ϕ ( F a ) ⊕ ϕ ( F g ) ) ) ) F_{\text{inter}} = \text{SELU}(\text{BN}((\phi(F_a) \oplus \phi(F_g)))) Finter=SELU(BN((ϕ(Fa)ϕ(Fg))))
其中, ⊕ \oplus 表示逐元素相加, BN \text{BN} BN表示一维批量归一化, SELU \text{SELU} SELU是激活函数, ϕ \phi ϕ是线性映射函数, W a W_a Wa是可学习的注意力权重。

帧内特征提取

每个帧单独输入到一个1D-ResNet结构中,然后通过一个全连接层来学习帧内特征 F intra F_{\text{intra}} Fintra

  • 1D-ResNet结构:
    每个帧被送入一个一维残差网络(1D-ResNet)。残差网络是一种深度学习架构,它通过引入跳跃连接(skip connections)来解决深度网络中的梯度消失问题,使得网络可以更深且更有效。
    在1D-ResNet中,每个帧的特征通过多个卷积层和激活函数进行处理,以学习帧内的复杂模式和表示。
  • 全连接层(Fully Connected layers, FC):
    经过1D-ResNet处理后,每个帧的特征再通过一个全连接层,全连接层可以对1D-ResNet的输出进行加权和汇总,以生成更抽象的特征表示。
Q:为什么是1D-ResNet加上全连接层

边界特征拼接

F b = Concat ( F intra , F inter ) F_b = \text{Concat}(F_{\text{intra}}, F_{\text{inter}}) Fb=Concat(Fintra,Finter)

这里, F intra F_{\text{intra}} Fintra F inter F_{\text{inter}} Finter分别代表帧内特征和帧间特征,它们被拼接起来形成边界特征 F b F_b Fb

通过这种方式,BE模块有效地结合了帧内和帧间信息,以提取有助于边界检测和真实性判断的区分性边界特征。这些特征随后被用于边界帧位置的检测和帧级真实性决策。

  • 将前端特征 F g F_g Fg转换为边界特征 F b F_b Fb,其中 F g F_g Fg是池化层的输出特征, T T T是帧数, D D D是特征维度。
  • 边界特征有两个用途:首先,它被送入一个带有sigmoid函数的全连接层以获得边界预测概率$\hat{b} );其次,边界特征通过一个带有激活函数的全连接层处理,并与最终的帧级真实性决策进行拼接。
    在这里插入图片描述

3.边界帧级注意力(Boundary Frame-wise Attention, BFA)模块

利用边界预测结果来控制帧间特征的交互,以实现对真实和伪造帧的有效区分

该模块包含两个堆叠的边界帧级注意力块(BFAB)。BFAB的结构与FAB相似,但配备了一个边界掩码组件,该组件使用二进制边界预测 B ^ \hat{B} B^ F g F_g Fg来削弱属于不同类别的帧之间的信息传递。具体来说:

  1. 构建边界邻接矩阵 A b A_b Ab
    其元素定义决定了第 i 帧和第 j 帧之间是否存在边界;如果存在,则 A b A_b Ab 中第 i 行和第 j 列的值设置为0,否则为1。
    A b A_b Ab的元素定义如下:
    A b ( i , j ) = { 1 if  i = j ∑ n = i j − 1 ( 1 − B ^ [ n ] ) if  i < j ∑ n = j i − 1 ( 1 − B ^ [ n ] ) if  i > j A_{b(i,j)} = \begin{cases} 1 & \text{if } i = j \\ \sum_{n=i}^{j-1} (1 - \hat{B}[n]) & \text{if } i < j \\ \sum_{n=j}^{i-1} (1 - \hat{B}[n]) & \text{if } i > j \end{cases} Ab(i,j)= 1n=ij1(1B^[n])n=ji1(1B^[n])if i=jif i<jif i>j

  2. 更新注意力图 ( A_t ) 为边界注意力图 ( \hat{A}_t )
    使用边界掩码更新注意力图 ( A_t ) 为边界注意力图 ( \hat{A}_t ),通过元素-wise乘法实现。
    A ^ t = A t ⊙ A b \hat{A}_t=A_t\odot A_b A^t=AtAb
    在这里插入图片描述

4.损失函数

使用两个损失函数进行监督训练:边界损失 L b L_b Lb 和帧级真实性损失 L s L_s Ls。边界损失使用二元交叉熵损失,而真实性损失使用标准的交叉熵损失。总损失是这两个损失的加权和。

在本文中,损失函数用于监督模型的训练,包含两个部分:边界损失 L b L_b Lb 和帧级真实性损失 L s L_s Ls。这两个损失函数共同作用于模型,以优化边界检测和帧级真实性判断的性能。以下是损失函数的详细计算公式:

  1. 边界损失 L b L_b Lb

    • 边界损失使用二元交叉熵损失函数来计算。
    • 它的目的是最小化模型对边界帧预测的概率与真实边界标签之间的差异。
    • 边界损失的计算公式为:
      L b = − ∑ i = 1 T B [ i ] log ⁡ ( b ^ [ i ] ) + ( 1 − B [ i ] ) log ⁡ ( 1 − b ^ [ i ] ) L_b = -\sum_{i=1}^{T} B[i] \log(\hat{b}[i]) + (1 - B[i]) \log(1 - \hat{b}[i]) Lb=i=1TB[i]log(b^[i])+(1B[i])log(1b^[i])
      其中, B B B是真实的边界标签序列, b ^ \hat{b} b^是模型预测的边界概率序列, T T T是帧的数量。
  2. 帧级真实性损失 L s L_s Ls

    • 帧级真实性损失使用标准的交叉熵损失函数来计算。
    • 它的目的是最小化模型对帧真实性预测的概率与真实真实性标签之间的差异。
    • 帧级真实性损失的计算公式为:
      L s = − ∑ i = 1 T Y [ i ] log ⁡ ( y ^ [ i ] ) L_s = -\sum_{i=1}^{T} Y[i] \log(\hat{y}[i]) Ls=i=1TY[i]log(y^[i])
      其中, Y Y Y是真实的帧级真实性标签序列, y ^ \hat{y} y^ 是模型预测的帧级真实性概率序列。
  3. 总损失 ( L )

    • 总损失是边界损失和帧级真实性损失的加权和。
    • 通过引入一个权重参数 λ \lambda λ来平衡两个损失函数的重要性。
    • 总损失的计算公式为:
      L = L s ( y ^ , Y ) + λ L b ( b ^ , B ) L = L_s(\hat{y}, Y) + \lambda L_b(\hat{b}, B) L=Ls(y^,Y)+λLb(b^,B)
      其中, λ \lambda λ是一个超参数,用于调整边界损失和帧级真实性损失在总损失中的比重,通常设置为0.5。

通过最小化这个总损失函数,模型能够同时学习如何准确地检测边界帧判断每个帧的真实性
这种设计使得模型在处理部分伪造音频时,能够有效地区分真实和伪造的音频帧,提高定位伪造音频区域的准确性。

5.工作流程总结

  • 使用预训练的SSL模型提取语音特征,并通过注意力池化层使每个帧代表特定的时间颗粒度(例如160毫秒)。
  • 将池化层的输出输入到BE模块以增强边界特征表示,并使用简单的全连接层识别边界帧。
  • BFA模块接受边界预测结果和池化层的输出作为输入,以捕获帧之间的相关性信息。
  • BFA模块和BE模块的输出被拼接,并输入到全连接层以进行帧级真实性决策。

通过这种方式,BAM利用边界信息作为辅助的注意力提示来指导定位,有效地区分真实和伪造的帧,从而提高定位性能。

在这里插入图片描述

实验

数据集和实现细节

  • 数据集:实验在PartialSpoof数据库上进行,该数据库通过将ASVspoof2019 LA数据库中的完全伪造和真实话语进行分割,然后通过基本的数字信号处理技术进行拼接构建而成。
  • 评估指标:使用等错误率(Equal Error Rate, EER)、精确度(Precision)、召回率(Recall)和F1分数(F1 score)四个指标来评估模型性能。
  • 训练设置:在160毫秒时间分辨率的实验中,训练样本长度固定为4秒,超出长度的样本被随机截断,不足长度的样本用零填充。使用Adam优化器,学习率设置为(10^{-5}),每10个epoch减半,模型训练50个epoch。
  • 实验结果:在PartialSpoof数据集上,与现有方法(如LCNN-BLSTM、SELCNN-BLSTM、Single reso.、Multi reso.、SPF、TDL等)相比,BAM方法在EER和F1分数上均取得了最佳性能。具体来说,使用WavLM-Large作为前端特征提取器时,BAM方法的EER为3.58%,F1分数为96.09%。

消融研究

为了评估BAM框架中每个模块的有效性,进行了消融实验。结果显示,每个模块都对提高定位性能有贡献。例如,与基线模型相比,BAM方法将EER降低了2.21%,F1分数提高了1.73%。

更细粒度分辨率实验

  • 实验设置:在20毫秒时间分辨率下进行了额外的实验。首先,直接在前端特征上训练BAM模型50个epoch作为基线模型。然后,从预训练的基线模型中移除最后一个全连接层,并替换为注意力池化层后的新全连接层,微调10个epoch以预测特定时间分辨率的真实性。
  • 实验结果:基线模型在20毫秒分辨率下取得了EER为5.20%和F1分数为95.82%的显著定位性能。随着时间分辨率的降低,F1分数几乎保持不变,而EER持续增加。

结论

实验结果表明,BAM方法在PartialSpoof数据集上实现了最佳性能,证明了利用边界信息可以增强定位伪造音频区域的准确性。此外,细粒度分辨率实验表明,在更细的分辨率下准确检测边界位置是一个更具挑战性的任务,这将是未来工作的方向。

相关文章:

【Paper Note】利用Boundary-aware Attention边界感知注意力机制增强部分伪造音频定位

利用Boundary-aware Attention边界感知注意力机制增强部分伪造音频定位 摘要核心模块什么是边界&#xff1f;什么是边界特征&#xff1f; 写作背景解决的问题 方法1. 特征提取使用预训练好的自监督学习模型进行前端特征提取Attentive poolingQ&#xff1a;为什么使用Attentive …...

海外共享奶牛牧场投资源码-理财金融源码-基金源码-共享经济源码

新版海外共享奶牛牧场投资源码/理财金融源码/基金源码/共享经济源码...

iOS静态库(.a)及资源文件的生成与使用详解(OC版本)

引言 iOS静态库&#xff08;.a&#xff09;及资源文件的生成与使用详解&#xff08;Swift版本&#xff09;_xcode 合并 .a文件-CSDN博客 在前面的博客中我们已经介绍了关于iOS静态库的生成步骤以及关于资源文件的处理&#xff0c;在本篇博客中我们将会以Objective-C为基础语言…...

Python自动化:关键词密度分析与搜索引擎优化

在数字营销领域&#xff0c;搜索引擎优化&#xff08;SEO&#xff09;是提升网站可见性和吸引有机流量的关键。关键词密度分析作为SEO的一个重要组成部分&#xff0c;可以帮助我们理解特定关键词在网页内容中的分布情况&#xff0c;从而优化网页内容以提高搜索引擎排名。本文将…...

苏州金龙新V系客车创新引领旅游出行未来

10月25日&#xff0c;为期三天的“2024第六届旅游出行大会”在风景秀丽的云南省丽江市落下帷幕。本次大会由中国旅游车船协会主办&#xff0c;全面展示了中国旅游出行行业最新发展动态和发展成就&#xff0c;为旅游行业带来全新发展动力。 在大会期间&#xff0c;备受瞩目的展车…...

linux:DNS服务

DNS简介&#xff1a; DNS系统使用的是网络的查询&#xff0c;那么自然需要有监听的port。DNS使用的是53端口&#xff0c; 在/etc/services&#xff08;搜索domain&#xff09;这个文件中能看到。通常DNS是以UDP这个较快速的数据传输协议来查 询的&#xff0c;但是没有查询到完…...

传奇架设好后创建不了行会,开区时点创建行会没反应的解决办法

传奇架设好后&#xff0c;测试了版本&#xff0c;发现行会创建不了&#xff0c;按道理说一般的版本在创建行会这里不会出错的&#xff0c;因为这是引擎自带的功能。 建立不了行会虽然说问题不大&#xff0c;但也不小&#xff0c;会严重影响玩家的游戏体验&#xff0c;玩游戏为的…...

【小白学机器学习28】 统计学脉络+ 总体+ 随机抽样方法

目录 参考书&#xff0c;学习书 0 统计学知识大致脉络 1 个体---抽样---整体 1.1 关于个体---抽样---整体&#xff0c;这个三段式关系 1.2 要明白&#xff0c;自然界的整体/母体是不可能被全部认识的 1.2.1 不要较真&#xff0c;如果是人为定义的一个整体&#xff0c;是可…...

安全研究 | 不同编程语言中 IP 地址分类的不一致性

作为一名安全研究人员&#xff0c;我分析了不同编程语言中 IP 地址分类 的行为。最近&#xff0c;我注意到一些有趣的不一致性&#xff0c;特别是在循环地址和私有 IP 地址的处理上。在这篇文章中&#xff0c;我将分享我对此问题的观察和见解。 设置 我检查了多种编程语言&am…...

小小的表盘还能玩出这么多花样?华为手表这次细节真的拉满

没想到小小的表盘还能玩出这么多花样&#xff1f;华为这次细节真的拉满&#xff01;还有没有你不知道的神奇玩法&#xff1f; 情绪萌宠&#xff0c;心情状态抬腕可见 好心情就像生活馈赠的糖果&#xff0c;好的心情让我们遇到困难也不惧打击&#xff01;HUAWEI WATCH GT 5情绪…...

trueNas 24.10 docker配置文件daemon.json无法修改(重启被覆盖)解决方案

前言 最近听说truenas的24.10版本开放docker容器解决方案放弃了原来难用的k3s&#xff0c;感觉非常巴适&#xff0c;就研究了一下&#xff0c;首先遇到无法迁移老系统应用问题比较好解决&#xff0c;使用sudo登录ssh临时修改daemon.json重启docker后进行docker start 容器即可…...

数字孪生,概念、应用与未来展望

随着科技的飞速发展&#xff0c;数字化已经成为各行各业的发展趋势&#xff0c;在这个过程中&#xff0c;数字孪生作为一种新兴的技术&#xff0c;逐渐引起了人们的关注&#xff0c;本文将对数字孪生的概念、应用以及未来展望进行详细介绍。 数字孪生的概念&#xff1a; 数字孪…...

Chromium HTML Input 类型Text 对应c++

一、文本域&#xff08;Text Fields&#xff09; 文本域通过 <input type"text"> 标签来设定&#xff0c;当用户要在表单中键入字母、数字等内容时&#xff0c;就会用到文本域。 <!DOCTYPE html> <html> <head> <meta charset"ut…...

SpringMvc参数传递

首先对于post请求汉字乱码需要进行过滤器配置 普通参数传递 直接传递 客户端传递的属性名与我的bean中的函数参数名相同 映射传递RequestParam("XXX") 在我们方法参数中定义一个与客户端属性名一致 并绑定参数 POJO实体类传递 嵌套POJO传递 数组likes参数传递…...

西安国际数字影像产业园:数字化建设赋能产业升级与拓展

西安国际数字影像产业园的数字化建设&#xff0c;在当前经济与科技迅猛发展的大背景下&#xff0c;已然成为提升园区管理效率、服务水平以及运营效果的关键趋势。随着信息技术日新月异的进步&#xff0c;数字化更是成为这座产业园转型升级的核心关键词。如今&#xff0c;西安国…...

linux线程池

线程池: * 一种线程使用模式。线程过多会带来调度开销&#xff0c;进而影响缓存局部性和整体性能。而线程池维护着多个线程&#xff0c;等待着 监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利 用&#xff0…...

PyTorch图像分类实战——基于ResNet18的RAF-DB情感识别(附完整代码和结果图)

PyTorch图像分类实战——基于ResNet18的RAF-DB情感识别&#xff08;附完整代码和结果图&#xff09; 关于作者 作者&#xff1a;小白熊 作者简介&#xff1a;精通python、matlab、c#语言&#xff0c;擅长机器学习&#xff0c;深度学习&#xff0c;机器视觉&#xff0c;目标检测…...

【OccNeRF: Advancing 3D Occupancy Prediction in LiDAR-Free Environments】阅读笔记

【OccNeRF: Advancing 3D Occupancy Prediction in LiDAR-Free Environments】阅读笔记 1. 论文概述Abstract1. Introduction2. Related work2.1 3D Occupancy Prediction2.2 Neural Radiance Fields2.3 Self-supervised Depth Estimation 3. Method3.1 Parameterized Occupanc…...

DDRPHY数字IC后端设计实现系列专题之后端设计导入,IO Ring设计

本章详细分析和论述了 LPDDR3 物理层接口模块的布图和布局规划的设计和实 现过程&#xff0c;包括设计环境的建立&#xff0c;布图规划包括模块尺寸的确定&#xff0c;IO 单元、宏单元以及 特殊单元的摆放。由于布图规划中的电源规划环节较为重要&#xff0c; 影响芯片的布线资…...

EDA --软件开发之路

之前一直在一家做数据处理的公司&#xff0c;从事c开发&#xff0c;公司业务稳定&#xff0c;项目有忙有闲&#xff0c;时而看下c&#xff0c;数据库&#xff0c;linux相关书籍&#xff0c;后面跳槽到了家eda公司&#xff0c;开始了一段eda开发之路。 eda 是 electric design …...

51c~目标检测~合集2

我自己的原文哦~ https://blog.51cto.com/whaosoft/12377509 一、总结 这里概述了基于深度学习的目标检测器的最新发展。同时&#xff0c;还提供了目标检测任务的基准数据集和评估指标的简要概述&#xff0c;以及在识别任务中使用的一些高性能基础架构&#xff0c;其还涵盖了…...

计算机低能儿从0刷leetcode | 33.搜索旋转排列数组

题目&#xff1a;33. 搜索旋转排序数组 思路&#xff1a;看到时间复杂度要求是O(log N)很容易想到二分查找&#xff0c;普通的二分查找我们已经掌握&#xff0c;本题中的数组可以看作由两个分别升序的数组拼成&#xff0c;在完全升序的部分中进行二分查找是容易的&#xff0c;…...

SpringBoot+VUE2完成WebSocket聊天(数据入库)

下载依赖 <!-- websocket --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId></dependency><!-- MybatisPlus --><dependency><groupId>com.ba…...

理解 CSS 中的绝对定位与 Flex 布局混用

理解 CSS 中的绝对定位与 Flex 布局混用 在现代网页设计中&#xff0c;CSS 布局技术如 flex 和绝对定位被广泛使用。然而&#xff0c;这两者结合使用时&#xff0c;可能会导致一些意想不到的布局问题。本文将探讨如何正确使用绝对定位元素&#xff0c;避免它们受到 flex 布局的…...

Redis 事务 问题

前言 相关系列 《Redis & 目录》《Redis & 事务 & 源码》《Redis & 事务 & 总结》《Redis & 事务 & 问题》 参考文献 《Redis事务详解》 Redis事务是什么&#xff1f; 标准的事务是指执行时具备原子性/一致性/隔离性/持久性的一系列操作。…...

Cpp学习手册-进阶学习

C标准库和C20新特性 C标准库概览&#xff1a; 核心库组件介绍&#xff1a; 容器&#xff1a; C 标准库提供了多种容器&#xff0c;它们各有特点&#xff0c;适用于不同的应用场景。 std::vector&#xff1a; vector&#xff1a;动态数组&#xff0c;支持快速随机访问。 #in…...

代码随想录-字符串-反转字符串中的单词

题目 题解 法一:纯粹为了做出本题&#xff0c;暴力解 没有技巧全是感情 class Solution {public String reverseWords(String s) {//首先去除首尾空格s s.trim();String[] strs s.split("\\s");StringBuilder sb new StringBuilder();//定义一个公共的字符反转…...

勒索软件通过易受攻击的 Cyber​​Panel 实例攻击网络托管服务器

一个威胁行为者&#xff08;或可能多个&#xff09;使用 PSAUX 和其他勒索软件攻击了大约 22,000 个易受攻击的 Cyber​​Panel 实例以及运行该实例的服务器上的加密文件。 PSAUX 赎金记录&#xff08;来源&#xff1a;LeakIX&#xff09; Cyber​​Panel 漏洞 Cyber​​Pane…...

Open WebUI + openai API / vllm API ,实战部署教程

介绍Open WebUI + Ollama 的使用: https://www.dong-blog.fun/post/1796 介绍vllm 的使用:https://www.dong-blog.fun/post/1781 介绍 Ollama 的使用: https://www.dong-blog.fun/post/1797 本篇博客玩个花的,Open WebUI 本身可以兼容openai 的api, 那来尝试一下。 仅供…...

InsuranceclaimsController

目录 1、 InsuranceclaimsController 1.1、 保险理赔结算 1.2、 生成预约单号 1.3、 保存索赔表 InsuranceclaimsController using QXQPS.Models; using QXQPS.Vo; using System; using System.Collections; using System.Collections.Generic; using System.Li…...

中小企业网站制作广州网络服务公司找赛合公司/品牌推广策略怎么写

Qt中我遇到过debug版本能运行而release版本却不能&#xff0c;即使是Qt中的示例&#xff0c;也只能选择debug模式运行&#xff0c;选release模式运行莫名其妙就会出现程序异常结束的问题。查过很多网上的解答&#xff0c;都没能解决。 我自己对于这个问题其实也没有很好解决&am…...

什么好的主题做网站/品牌运营管理公司

sqrt() 方法返回数字x的平方根。以下是 sqrt() 方法的语法:&#xff08;推荐学习&#xff1a;Python视频教程&#xff09;import math math.sqrt( x ) 注意&#xff1a;sqrt()是不能直接访问的&#xff0c;需要导入 math 模块&#xff0c;通过静态对象调用该方法。 参数 x -- 数…...

房山住房和城乡建设委员会网站/百度商家怎么入驻

最近一直在解决线上一个问题&#xff0c;表现是&#xff1a; Tomcat每到凌晨会有一个高峰&#xff0c;峰值的并发达到了3000以上&#xff0c;最后的结果是Tomcat线程池满了&#xff0c;日志看很多请求超过了1s。 服务器性能很好&#xff0c;Tomcat版本是7.0.54&#xff0c;配置…...

佛山新网站制作渠道/郑州seo竞价

程序开头需要加上#include<math.h> 1.fabs(double x) 对double型变量取绝对值 2.floor(double x)和ceil(double x) 对double型变量向下取整和向上取整&#xff0c;返回类型为double类型 3.pow(double r,double p) 返回r的p次方 4.sqrt(double x) 返回double型变量…...

莱州网站定制/女排联赛最新排行榜

python中并没有像 C语言 C java 那样定义静态属性的关键字 static 那么在python中是怎么做的呢&#xff1f; class A(object): name"lance" def __init__(self): print("in the init")print(A.name)打印&#xff1a;lance其实类属性就差不多相…...

编程一个最简单游戏代码/seo常规优化

华为SRG 2220简单上网! SRG2200路由配置!//WAN//123.162.114.24//255.255.255.192//123.162.114.1////LAN//192.168.67.1//255.255.0.0//(请根据需要改成自己的)// 超级用户xy03 密码123456a//斜线文字为说明#acl number 2001rule 0 permit#sysname SRG2220#web-manager enable…...