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

【论文阅读】Comment on the Security of “VOSA“

Comment on the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning -- 关于隐私保护联邦中可验证与遗忘的安全聚合的安全性

  • 论文来源
  • 摘要
  • Introduction
  • 回顾 VOSA 方案
  • 对VOSA不可伪造性的攻击
    • 对于类型 I 的攻击
    • 对于类型 II 的攻击

论文来源

名称On the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning
期刊TDSC 2024
作者Jiahui Wu; Weizhe Zhang

摘要

Recently, to resist privacy leakage and aggregation result forgery in federated learning (FL), Wang et al. proposed a verifiable and oblivious secure aggregation protocol for FL, called VOSA. They claimed that VOSA was aggregate unforgeable and verifiable under a malicious aggregation server and gave detailed security proof. In this article, we show that VOSA is insecure, in which local gradients/aggregation results and their corresponding authentication tags/proofs can be tampered with without being detected by the verifiers. After presenting specific attacks, we analyze the reason for this security issue and give a suggestion to prevent it.

最近,为了抵御联邦学习(FL)中的隐私泄露和聚合结果伪造,Wang等人提出了一种可验证且不经意的联邦学习安全聚合协议,称为VOSA。他们声称,在VOSA协议中,恶意聚合服务器是无法伪造和可验证的,并给出了详细的安全证明。本文中,我们展示了VOSA是不安全的,其中 本地梯度/聚合结果 及其对应的 认证标签/证明 可以被篡改而不被验证者检测到。在展示具体攻击之后,我们分析了此安全问题的原因,并提出了防止该问题的建议。

Introduction

  • 联邦学习(FL)是一种流行的分布式机器学习范式,它使多个用户能够在不共享其私有数据集的情况下共同训练模型。在FL中,每个用户只需提交其训练后的本地梯度到中央聚合服务器(AS)进行全局模型聚合。这样可以在利用分布式数据集的同时缓解这些数据集的隐私泄露,从而获得更准确的全局模型。然而,提交的本地梯度也泄露了数据隐私。此外,未经信任的AS可能会修改或伪造聚合结果以欺骗用户。
  • 为减轻上述两个安全问题,Wang等人最近提出了 VOSA 方案,该方案设计了一种用于联邦学习(FL)的可验证和不经意的安全聚合协议。在协议中,构建了加密方法和认证标签生成方法,以保护数据隐私并验证聚合结果的正确性。Wang等人声称,VOSA下恶意聚合服务器(AS)是不可伪造和可验证的,并给出了详细的安全性证明。不幸的是,在本文中,通过分析VOSA的安全性,我们表明它是不安全的。特别是,VOSA无法抵抗来自恶意AS的伪造攻击,我们发现AS可以伪造密文及其对应的标签,也可以伪造聚合结果及其证明,欺骗验证者(即用户)接受伪造的聚合结果。我们提出了针对VOSA的两个具体伪造攻击。在分析该安全问题的原因后,我们提供了一个建议以克服此问题。

回顾 VOSA 方案

在本节中,我们简要回顾VOSA方案。系统模型包含四个实体:密钥生成中心(KGC)、用户、收集器和聚合服务器(AS)。在威胁模型中,恶意的AS可能会篡改或伪造聚合结果和证明,以欺骗用户接受不正确的结果。下面,我们描述包含五个阶段的 VOSA 详细协议。

  • 阶段 0:建立阶段:KGC 生成并发布公共系统参数 p m = { N , w 0 , g 1 , g 2 , h 1 , h 2 , G 1 , G 2 , G T , H 0 , H 1 } pm = \{N, w_0, g_1, g_2, h_1, h_2, G_1, G_2, G_T, H_0, H_1\} pm={N,w0,g1,g2,h1,h2,G1,G2,GT,H0,H1},其中 N = p q N = pq N=pq p p p q q q 是两个安全的大素数; w 0 w_0 w0 是初始模型参数; G 1 G_1 G1, G 2 G_2 G2 是两个素数阶为 p p p 的乘法循环群; g 1 g_1 g1, g 2 g_2 g2 分别是 G 1 G_1 G1, G 2 G_2 G2 的两个随机生成元; h 1 = g 1 a , h 2 = g 2 a , a ∈ Z p ∗ h_1 = g_1^a, h_2 = g_2^a, a \in Z_p^∗ h1=g1a,h2=g2a,aZp e : G 1 × G 2 → G T e : G_1 × G_2 \to G_T e:G1×G2GT 是一个可计算的双线性对; H 0 : { 0 , 1 } ∗ → Z N 2 ∗ H_0 : \{0, 1\}^∗ \to Z_{N^2}^∗ H0:{0,1}ZN2 H 1 : { 0 , 1 } ∗ → G 1 H_1 : \{0, 1\}^∗ \to G_1 H1:{0,1}G1 是两个哈希函数。AS 生成其秘密钥匙 s k A ∈ Z N 2 ∗ sk_A \in Z_{N^2}^∗ skAZN2 。每个用户 U i \mathcal{U}_i Ui 生成其加密钥匙 s k i ∈ [ 0 , N 2 ] sk_i ∈ [0, N^2] ski[0,N2] 和标签钥匙 t k i ∈ Z N 2 ∗ tk_i \in Z_{N^2}^∗ tkiZN2
  • 阶段 1:掩码和标签阶段:在第 t t t 次训练周期, U i \mathcal{U}_i Ui 将其本地梯度 w i , t w_{i,t} wi,t 加密为密文 C i , t = ( 1 + w i , t N ) H 0 ( t ) s k i m o d N 2 C_{i,t} = (1 + w_{i,t} N )H_0(t)^{sk_i} \ mod \ N^2 Ci,t=(1+wi,tN)H0(t)ski mod N2,并生成认证标签 T i , t = H 1 ( t ) t k i h 1 w i , t T_{i,t} = H_1(t)^{tk_i} h_1^{w_{i,t}} Ti,t=H1(t)tkih1wi,t 。然后 U i \mathcal{U}_i Ui ( C i , t , T i , t ) (C_{i,t}, T_{i,t}) (Ci,t,Ti,t) 发送到 AS 。
  • 阶段2:收集阶段:AS生成其公钥 p k A , t = ( p k A , t 1 , p k A , t 2 ) pk_{A,t} = (pk_{A,t}^1, pk_{A,t}^2) pkA,t=(pkA,t1,pkA,t2) 并将其分发给所有用户 U i ∈ U 1 \mathcal{U}_i \in \mathcal{U}_1 UiU1,其中 p k A , t 1 = H 0 ( t ) s k A pk_{A,t}^1 = H_0(t)^{sk_A} pkA,t1=H0(t)skA p k A , t 2 = h 2 s k A pk_{A,t}^2 = h_2^{sk_A} pkA,t2=h2skA U 1 \mathcal{U}_1 U1 包含所有将密文和标签发送给 AS 的用户。然后, U i \mathcal{U}_i Ui 生成其辅助信息 A u i , t = ( p k A , t 1 ) s k i , V k i , t = ( p k A , t 2 ) t k i Au_{i,t} = (pk_{A,t}^1)^{sk_i},Vk_{i,t} = (pk_{A,t}^2)^{tk_i} Aui,t=(pkA,t1)skiVki,t=(pkA,t2)tki 并将其发送给收集器。收集器构建用户列表 U 3 = U 1 ∩ U 2 \mathcal{U}_3 = \mathcal{U}_1 \cap \ \mathcal{U}_2 U3=U1 U2 U 2 \mathcal{U}_2 U2 包含所有将辅助信息发送给收集器的用户)并计算解密密钥 A u t = ∏ U i ∈ U 3 A u i , t Au_t = \prod_{\mathcal{U}_i \in \mathcal{U}_3} Au_{i,t} Aut=UiU3Aui,t 和验证密钥 V k t = ∏ U i ∈ U 3 V k i , t Vk_t = \prod_{\mathcal{U}_i \in \mathcal{U}_3} Vk_{i,t} Vkt=UiU3Vki,t 。最后,收集器将 A u t , U 3 Au_t, \mathcal{U}_3 Aut,U3 发送给AS,并将 V k t Vk_t Vkt 发送给 U 3 \mathcal{U}_3 U3 中的所有用户。
  • 第3阶段:解密和聚合阶段:AS将 U 3 \mathcal{U}_3 U3 中所有用户的密文聚合为聚合密文 C t = ( ∏ U i ∈ U 3 C i , t ) s k A m o d N 2 C_t = (\prod_{\mathcal{U}_i \in \mathcal{U}_3} Ci,t)^{sk_A} \ mod \ N^2 Ct=(UiU3Ci,t)skA mod N2,然后将其解密为聚合明文 W t = s k A − 1 C t A u t − 1 N m o d N W_t = sk_A^{−1 } \frac{\frac{C_t}{Au_t}-1}{N} \ mod \ N Wt=skA1NAutCt1 mod N 。AS 将所有认证标签聚合为证明 T t = ( ∏ U i ∈ U 3 T i , t ) s k A Tt = (\prod_{\mathcal{U}_i \in \mathcal{U}_3} T_{i,t})^{sk_A} Tt=(UiU3Ti,t)skA,并将 ( W t , T t ) (W_t, T_t) (Wt,Tt) 发送给 U 3 \mathcal{U}_3 U3 中的所有用户。
  • 第4阶段:验证阶段:每个用户通过检查 e ( T t , h 2 ) = ? e ( H 1 ( t ) , V k t ) ⋅ e ( h 1 W t , p k A , t 2 ) e(T_t, h_2) \stackrel{\text{\tiny ?}}{=} e(H_1(t), Vk_t) \cdot e(h_1^{W_t} , pk_{A,t}^2) e(Tt,h2)=?e(H1(t),Vkt)e(h1Wt,pkA,t2) 来验证聚合明文的正确性。如果等式成立,那么 W t W_t Wt 是正确的聚合明文;否则,它是不正确的。

对VOSA不可伪造性的攻击

在VOSA中,Wang等人声称VOSA实现了聚合的不可伪造性和可验证性,以抵御恶意的AS发起 篡改 / 伪造攻击 ,欺骗用户接受错误的聚合结果。

然而,我们发现它不能抵抗两种类型的伪造攻击:

  • 类型 I:AS 篡改任意用户的密文 / 标签对,并欺骗所有用户接受聚合结果。
  • 类型 II:AS 篡改聚合结果及其证明,以欺骗所有用户接受篡改后的聚合结果。

我们在下面提供详细的攻击情况。

对于类型 I 的攻击

AS 首先篡改了任意用户 U i ∈ U 3 \mathcal{U}_i \in \mathcal{U}_3 UiU3 的密文/标签对,如下所示:

  • AS 计算 ( 1 + w i , t ′ N , h 1 w i , t ′ ) (1+w_{i,t}'N , h_1^{w_{i,t}'}) (1+wi,tN,h1wi,t) ,其中 w i , t ′ w_{i,t}' wi,t 是 AS 任意伪造的梯度。
  • AS篡改了 U i \mathcal{U}_i Ui 的密文/标签对 ( C i , t , T i , t ) (C_{i,t}, T_{i,t}) (Ci,t,Ti,t) 为篡改后的密文/标签对。

在这里插入图片描述

其中 w i , t ∗ = w i , t + w i , t ′ w_{i,t}^* = w_{i,t} + w_{i,t}' wi,t=wi,t+wi,t 是被篡改的梯度。记 U ∗ ( U ∗ ⊆ U 3 ) \mathcal{U}^∗ (\mathcal{U}^∗ ⊆ \mathcal{U}_3) U(UU3) 为其密文/标签对被 AS 篡改的用户列表。为了便于后续的呈现,我们将 U j ∈ U 3 ∖ U ∗ \mathcal{U}_j \in \mathcal{U}_3 \setminus \mathcal{U}^∗ UjU3U 的梯度表示为 w j , t ∗ = w j , t w_{j,t}^* = w_{j,t} wj,t=wj,t

然后,AS 将所有 U 3 \mathcal{U}_3 U3 用户的密文聚合为伪造的聚合密文 C t ∗ C_t^∗ Ct 如(1),并使用去伪装密钥 A u t Au_t Aut 和其私钥 s k A sk_A skA 解密 C t ∗ C_t^∗ Ct 以获得伪造的聚合明文 W t ∗ W_t^∗ Wt 如(2)。AS 计算伪造的聚合标签 T t ∗ T_t^∗ Tt 如(3)。然后 AS 将 ( W t ∗ , T t ∗ ) (W_t^∗, T_t^∗) (Wt,Tt) 发送给 U 3 \mathcal{U}_3 U3 中的所有用户以进行验证。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在接收到伪造的聚合值 ( W t ∗ , T t ∗ ) (W_t^∗, T_t^∗) (Wt,Tt) 时,每个用户通过检查验证 W t ∗ W_t^∗ Wt 的正确性:
在这里插入图片描述
根据双线性配对性质,(4) 的左侧等于(4)的右侧。然后, W t ∗ W_t^∗ Wt 被验证为正确,因此 VOSA 无法抵抗 I 型伪造攻击。
在这里插入图片描述

对于类型 II 的攻击

AS 先在 W t W_t Wt 的基础上伪造一个聚合明文 W t ∗ = W t + w ∗ W_t^∗ = W_t + w^∗ Wt=Wt+w,其中 w ∗ w^∗ w 是一个随机选择的梯度。 然后,AS 修改 W t W_t Wt 的证明 T t T_t Tt 为证明 T t ∗ = T t ⋅ h 1 w ∗ s k A T_t^∗ = T_t \cdot \ h_1^{w^∗sk_A} Tt=Tt h1wskA 。 最后,AS 将 ( W t ∗ , T t ∗ ) (W_t^∗, T_t^∗) (Wt,Tt) 发送给用户进行验证。 在验证阶段,每个用户验证:
在这里插入图片描述
因此,VOSA 无法抵抗 II 型伪造攻击。

讨论:我们攻击的主要原因是VOSA的加密 / 认证标签生成方法使得密文 / 标签可以轻易地被恶意对手篡改,而不需要用户的加密 / 标签密钥。更明确地说,在密文和标签时,用户密钥不会直接影响明文。具体,一个密文 C i , t = ( 1 + w i , t N ) H 0 ( t ) s k i m o d N 2 C_{i,t} = (1 + w_{i,t}N )H_0(t)^{sk_i} \ mod \ N^2 Ci,t=(1+wi,tN)H0(t)ski mod N2 / 标签 T i , t = H 1 ( t ) t k i h 1 w i , t T_{i,t} = H_1(t)^{tk_i} h_1^{w_{i,t}} Ti,t=H1(t)tkih1wi,t 可以被视为由两个独立部分组成: { C i , t ( 1 ) , C i , t ( 2 ) = { ( 1 + w i , t N ) , H 0 ( t ) s k i } / { T i , t ( 1 ) , T i , t ( 2 ) } = { h 1 w i , t , H 1 ( t ) t k i } \{C_{i,t}^{(1)} , C_{i,t}^{(2)} = \{(1 + w_{i,t}N ), H_0(t)^{sk_i} \} / \{T_{i,t}^{(1)} , T_{i,t}^{(2)} \} = \{h_1^{w_{i,t}} ,H_1(t)^{tk_i}\} {Ci,t(1),Ci,t(2)={(1+wi,tN),H0(t)ski}/{Ti,t(1),Ti,t(2)}={h1wi,t,H1(t)tki},密文 / 标签的两个部分分别包含明文 w i , t w_{i,t} wi,t 和密钥 s k i / t k i sk_i/tk_i ski/tki ,从而使我们可以在篡改包含明文的部分(即 C i , t ( 1 ) / T i , t ( 1 ) C_{i,t}^{(1)} / T_{i,t}^{(1)} Ci,t(1)/Ti,t(1))时进行攻击。

虽然我们的攻击可以通过将用户密钥放在部分 C i , t ( 1 ) C_{i,t}^{(1)} Ci,t(1) T i , t ( 1 ) T_{i,t}^{(1)} Ti,t(1) 上来防止,但我们强调此方法对于VOSA来说难以维持解密的正确性。例如,我们将加密方法修改为 C i , t ~ = ( 1 + w i , t N ) s k i H 0 ( t ) s k i m o d N 2 \tilde{C_{i,t}} = (1 + w_{i,t}N )^{sk_i} H_0(t)^{sk_i} \ mod \ N^2 Ci,t~=(1+wi,tN)skiH0(t)ski mod N2,那么聚合密文是 C t ~ = ( ∏ U i ∈ U 3 C i , t ~ ) s k A m o d N 2 = ( 1 + s k A ∑ U i ∈ U 3 s k i w i , t N ) H 0 ( t ) s k A ∑ U i ∈ U 3 s k i m o d N 2 \tilde{C_t} = (\prod_{\mathcal{U}_i \in \mathcal{U}_3}\tilde{C_{i,t}})^{sk_A} \ mod \ N^2 = (1+sk_A\sum_{\mathcal{U}_i \in \mathcal{U}_3}sk_i w_{i,t}N)H_0(t)^{sk_A\sum_{\mathcal{U}_i \in \mathcal{U}_3}sk_i} \ mod \ N^2 Ct~=(UiU3Ci,t~)skA mod N2=(1+skAUiU3skiwi,tN)H0(t)skAUiU3ski mod N2 ,并且其解密结果为 W t ~ = s k A − 1 C ~ A u t − 1 N m o d N = ∑ U i ∈ U 3 s k i w i , t m o d N ≠ ∑ U i ∈ U 3 w i , t m o d N \tilde{W_t} = sk_A^{-1} \frac{\frac{\tilde{C}}{Au_t}-1}{N}\ mod \ N =\sum_{\mathcal{U}_i \in \mathcal{U}_3}sk_i w_{i,t} \ mod \ N \neq \sum_{\mathcal{U}_i \in \mathcal{U}_3}w_{i,t} \ mod \ N Wt~=skA1NAutC~1 mod N=UiU3skiwi,t mod N=UiU3wi,t mod N。也就是说,解密结果不正确。

上述方法不可行,主要是因为用户自己生成的密钥彼此不同,因此这些密钥在解密时无法去除。因此,我们建议 可信的KGC生成一个相同的共享密钥 s s s ,并将其分享给所有用户。然后, U i \mathcal{U}_i Ui 进行加密、标签生成和解密操作,分别为: C i , t = ( 1 + w i , t N ) s H 0 ( t ) s k i m o d N 2 C_{i,t} = (1 + w_{i,t}N)^sH_0(t)^{sk_i} \ mod \ N^2 Ci,t=(1+wi,tN)sH0(t)ski mod N2 , T i , t = H 1 ( t ) t k i h 1 w i , t s T_{i,t} = H_1(t)^{tk_i} h_1^{w_{i,t}s} Ti,t=H1(t)tkih1wi,ts , 和 W t ~ = s k A − 1 C ~ A u t − 1 N s m o d N \tilde{W_t} = sk_A^{-1} \frac{\frac{\tilde{C}}{Au_t}-1}{Ns}\ mod \ N Wt~=skA1NsAutC~1 mod N。我们提醒,这种方法要求AS不与任何用户串通;否则,AS知道 s s s 后仍可发起我们的伪造攻击。

相关文章:

【论文阅读】Comment on the Security of “VOSA“

Comment on the Security of Verifiable and Oblivious Secure Aggregation for Privacy-Preserving Federated Learning -- 关于隐私保护联邦中可验证与遗忘的安全聚合的安全性 论文来源摘要Introduction回顾 VOSA 方案对VOSA不可伪造性的攻击对于类型 I 的攻击对于类型 II 的…...

了解传输层TCP协议

目录 一、TCP协议段格式 二、TCP原理 1.确认应答 2.超时重传 3.连接管理 建立连接 断开连接 4.滑动窗口 5.流量控制 6.拥塞控制 7.延时应答 8.捎带应答 9.面向字节流 10.TCP异常情况 TCP,即Transmission Control Protocol,传输控制协议。人如…...

flask实现用户名查重,重复的用户名阻止注册,以及如何优化

在 Flask 中实现用户名查重,并阻止重复的用户名进行注册,可以使用数据库(如 SQLite、MySQL、PostgreSQL)存储用户信息,并在注册时检查用户名是否已存在。以下是实现步骤: 1. 安装 Flask 及 SQLAlchemy 确保…...

ASP.NET Core对JWT的封装

目录 JWT封装 [Authorize]的注意事项 JWT封装 NuGet 库 |Microsoft.AspNetCore.Authentication.JwtBearer 9.0.1https://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBearerhttps://www.nuget.org/packages/Microsoft.AspNetCore.Authentication.JwtBea…...

wordpressAI工具,已接入Deepseek 支持自动生成文章、生成图片、生成长尾关键词、前端AI窗口互动、批量采集等

基于关键词或现有内容生成SEO优化的文章,支持多种AI服务(如OpenAI、百度文心一言、智谱AI等),并提供定时任务、内容采集、关键词生成等功能。 核心功能 文章生成 关键词生成:根据输入的关键词生成高质量文章。 内容…...

Ollama部署 DeepSeek-R1:70B 模型的详细步骤

1. 确认环境准备 (1) 硬件要求 显存需求:70B 参数的模型需要大量显存。若使用 NVIDIA T4(16GB 显存),需多卡并行(如 8 卡)或开启量化(如 q4_0、q8_0)。内存需求:建议至…...

PAT乙级( 1009 说反话 1010 一元多项式求导)C语言版本超详细解析

1009 说反话 给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。 输入格式: 测试输入包含一个测试用例,在一行内给出总长度不超过 80的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母&#x…...

学习笔记十九:K8S生成pod过程

K8S生成pod过程 流程图具体生成过程用户提交 Pod 定义API Server 处理请求调度器分配节点(Scheduling)目标节点上的 Pod 创建网络配置状态上报与监控控制器管理(Controller Manager)就绪与服务发现 关键错误场景高级特性 流程图 具…...

Qwen2-VL:增强视觉语言模型对世界任意分辨率的感知能力

1、摘要 Qwen2-VL系列是Qwen-VL模型的高级升级版本,它重新定义了传统视觉处理中预设分辨率的方法。Qwen2-VL引入了Naive Dynamic Resolution机制,使模型能够动态处理不同分辨率的图像,并将其转换为不同数量的视觉标记。这种机制使模型能够生…...

原神新版本角色牌上新 七圣召唤增添新玩法

在原神这款游戏中,5.4版本更新后七圣召唤玩法将新增2张角色牌和对应天赋牌、3张行动牌,并进行部分卡牌平衡调整,今天就给大家介绍一下。 一、角色牌【基尼奇】 1.元素战技:选一个我方角色,自身附属钩索链接并进入夜魂…...

Spring 中的 事务 隔离级别以及传播行为

1. 事务隔离级别(Isolation Level) 事务隔离级别定义了事务在并发环境下的行为,主要解决以下问题: 脏读(Dirty Read):一个事务读取了另一个未提交事务的数据。 不可重复读(Non-Re…...

为多个GitHub账户配置SSH密钥

背景 当需要同时使用多个GitHub账户(例如工作和个人账户)时,默认的SSH配置可能导致冲突。本文介绍如何通过生成不同的SSH密钥对并配置SSH客户端来管理多个账户。 操作步骤 生成SSH密钥对 为每个GitHub账户生成独立的密钥对,并指…...

OSPF基础(3):区域划分

OSPF的区域划分 1、区域产生背景 路由器在同一个区域中泛洪LSA。为了确保每台路由器都拥有对网络拓扑的一致认知,LSDB需要在区域内进行同步。OSPF域如果仅有一个区域,随着网络规模越来越大,OSPF路由器的数量越来越多,这将导致诸…...

android studio无痛入门

在Android Studio中创建和管理项目主要涉及以下几个步骤: 1. 创建新项目 打开Android Studio,点击“Start a new Android Studio project”或者“File” > “New” > “New Project”。 选择一个模板,例如“Empty Activity”&#xff0…...

免费windows pdf编辑工具Epdf

Epdf(完全免费) 作者:不染心 时间:2025/2/6 Github: https://github.com/dog-tired/Epdf Epdf Epdf 是一款使用 Rust 编写的 PDF 编辑器,目前仍在开发中。它提供了一系列实用的命令行选项,方便用户对 PDF …...

CNN 卷积神经网络处理图片任务 | PyTorch 深度学习实战

前一篇文章,学习率调整策略 | PyTorch 深度学习实战 本系列文章 GitHub Repo: https://github.com/hailiang-wang/pytorch-get-started CNN 卷积神经网络 CNN什么是卷积工作原理深度学习的卷积运算提取特征不同特征核的效果比较卷积核感受野共享权重池化 示例源码 …...

LeetCode 128: 最长连续序列

LeetCode 128: 最长连续序列 题目: 给定一个未排序的整数数组 nums ,找出数字连续的最长序列(不要求序列元素在原数组中连续)的长度。 请你设计并实现时间复杂度为 O(n) 的算法解决此问题。 示例 1: 输入:nums […...

大语言模型需要的可观测性数据的关联方式

可观测性数据的关联方式及其优缺点 随着现代分布式架构和微服务的普及,可观测性(Observability)已经成为确保系统健康、排查故障、优化性能的重要组成部分。有效的可观测性数据关联方式不仅能够帮助我们实时监控系统的运行状态,还…...

【韩顺平linux】部分上课笔记整理

整理一下一些韩顺平老师上课时候的笔记 课程:【小白入门 通俗易懂】韩顺平 一周学会Linux linux环境:使用阿里云服务器 笔记参考 : [学习笔记]2021韩顺平一周学会Linux 一、自定义函数 基本语法 应用实例: 计算两个参数的和…...

python调用pc的语音借口

先安装: pip install pyttsx3再运行: import pyttsx3 # 初始化语音引擎 def init_engine():engine pyttsx3.init()# 设置中文语音voices engine.getProperty(voices)for voice in voices:if chinese in voice.name.lower():engine.setProperty(voice…...

【Golang学习之旅】Golang 内存管理与 GC 机制详解

文章目录 前言1. Go 语言的内存管理的简述2. Golang 内存管理机制2.1 Go 语言的内存分配模型2.2 Go 变量分配示例2.3 Go 语言的内存池(sync.Pool) 3. Golang 垃圾回收(GC)机制详解3.1 Go 的 GC 机制概述3.2 GC 触发条件3.3 手动触…...

Kamailio 各个功能的共同点、不同点及应用场景

Kamailio 各个功能的共同点、不同点及应用场景: 功能共同点不同点应用场景SIP 注册服务器处理用户注册请求,维护用户位置信息专注于用户设备的注册和注销,维护设备位置企业内部通信系统,确保用户设备的动态注册和注销SIP 代理服务…...

Linux(CentOS)安装 Nginx

CentOS版本:CentOS 7 Nginx版本:1.24.0 两种安装方式: 一、通过 yum 安装,最简单,一键安装,全程无忧。 二、通过编译源码包安装,需具备配置相关操作。 最后附:设置 Nginx 服务开…...

string 与 wstring 的字符编码

测试代码: #include<stdio.h> #include<stdlib.h> #include<windows.h> #include <locale.h> #include <string> #include <iostream>// 函数用于计算UTF-8字符串中的字符数 int utf8_strlen(const char* str) {int len = 0;for (; *s…...

C#面试常考随笔14: 方法如何传递不定数量的参数?params关键字怎么使用?

使用params关键字&#xff0c;就可以像python传参那样传递多个参数&#xff0c;类似元组 主要作用 params 关键字的主要作用是让方法可以接受不定数量的参数&#xff0c;而不需要在调用方法时显式地创建数组来传递多个参数。这为方法调用提供了更大的灵活性&#xff0c;使得代…...

开发一款类似《王者荣耀》的游戏是一个复杂的系统工程,涉及多个领域的知识和技术。以下是从多个角度详细阐述如何开发的思维。

一、明确游戏定位与核心玩法 游戏类型 MOBA&#xff08;Multiplayer Online Battle Arena&#xff09;&#xff1a;强调团队合作、策略性和即时战斗。确定游戏模式&#xff08;如5v5、3v3等&#xff09;和地图设计。 核心玩法 角色设计&#xff1a;英雄技能、属性、成长曲线。…...

VMware下Linux和macOS安装VSCode一些总结

本文介绍VMware下Linux和macOS安装VSCode的一些内容&#xff0c;包括VSCode编译器显示中文以及安装.NET环境和Python环境。 VSCode下载地址&#xff1a;Download Visual Studio Code - Mac, Linux, Windows 一.Linux系统下 1.安装中文包 按 Ctrl Shift P 打开命令面板。输…...

aspectFill(填充目标区域的同时保持图像的原有宽高比 (aspect ratio)图像不会被拉伸或压缩变形

“aspectFill” 是一个常用于图像和视频处理的术语&#xff0c;尤其是在用户界面 (UI) 设计和图形编程领域。它描述的是一种图像缩放或调整大小的方式&#xff0c;旨在填充目标区域的同时保持图像的原有宽高比 (aspect ratio)。 更详细的解释: Aspect Ratio (宽高比): 指的是图…...

我的年度写作计划

目录 计算机经典四件 数据结构 计算机网络体系 经典操作系统与计算机架构 嵌入式领域笔记 其他部分 私货部分 笔者打算在这里理一下今年的写作计划&#xff0c;如下所示&#xff1a; 计算机经典四件 数据结构 笔者因为冲刺面试需要&#xff0c;还是要更加扎实的掌握自…...

DeepSeek与llama本地部署(含WebUI)

DeepSeek从2025年1月起开始火爆&#xff0c;成为全球最炙手可热的大模型&#xff0c;各大媒体争相报道。我们可以和文心一言一样去官网进行DeepSeek的使用&#xff0c;那如果有读者希望将大模型部署在本地应该怎么做呢&#xff1f;本篇文章将会教你如何在本地傻瓜式的部署我们的…...