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

如何在量子计算时代保障 Sui 的安全性

量子计算的出现对依赖加密机制的系统构成了重大威胁。区块链依赖加密技术来进行身份管理、安全交易和数据完整性保护,而量子计算具备打破传统加密模型的能力,因此区块链面临特别严峻的挑战。

然而,Sui 天生具备“加密灵活性”,可以适配抗量子攻击的加密算法。此外,开发者现在就可以实施实际可行的过渡策略,以确保 Sui 在量子时代依然安全、可信且具备弹性。

量子计算带来的风险

量子计算通过使用如 Shor 算法这类强大的量子算法,对传统加密方法(如 RSA 加密和椭圆曲线加密 ECC)构成了巨大威胁,这些算法可以高效破解现有的加密系统。对像 Sui 这样的区块链生态来说,应对这一威胁是一项需要多年精心规划的长期任务。

近期的突破,如谷歌的 Willow 量子计算机成功运行 105 个量子比特,表明实现足以攻破经典加密系统的量子计算机正在快速逼近。美国国家标准与技术研究院(NIST)已要求在 2035 年前全面过渡到抗量子加密标准,并计划在 2030 年弃用现有经典加密算法。包括 Sui 在内的区块链平台必须积极准备,提前部署抗量子加密技术。

这项过渡对加密领域尤为紧迫,因为存在“先存储、后破解”(store now, decrypt later)的攻击方式 — — 攻击者会先收集加密数据,待未来量子计算成熟后再尝试破解。因此,立即采取措施,以确保区块链中的敏感数据能在长期内保持安全,是当前的当务之急。

后量子加密背景

什么是量子计算

传统计算机使用布尔逻辑门操作比特,而量子计算机使用量子比特(qubit),结合特殊的量子门和布尔门进行计算。量子门允许创建指数级的叠加态,并能并行处理这些状态。但最终结果必须通过“测量”转化为经典值,这个过程只能对叠加态进行抽样。量子计算的精妙之处就在于,它能利用这些特性来高效求解许多传统计算难以处理的问题。

经典加密体系现状

目前最具代表性的两类量子算法为 Simon/Shor 算法和 Grover 算法:

  • 周期发现(Shor 算法):寻找函数的周期性。这在计算基于群的函数的离散对数时尤其有用。这是因为群的幂运算本身就是一个周期函数。此功能的密码学相关形式可以破解 RSA 和基于椭圆曲线的密码体制。
  • 搜索算法(Grover 算法):寻找特定输出对应的输入,该算法的密码学相关形式包括对哈希函数求逆以及破解对称加密。

值得注意的是,Shor 算法带来了指数级的速度提升,而 Grover 算法则是平方级的提速。因此,虽然我们必须完全放弃 RSA 和 ECC,但对称加密和哈希函数只需将安全参数从 128 位提升至 256 位即可抵御量子威胁。

总体而言,公钥加密和签名算法必须从现有的算法(如 RSA 和 ECDSA)转向完全不同的新算法。NIST 推荐了以下几种基于格(lattice)的算法(以及其他几种):

  • ML-DSA,也称为 Crystals-Dilithium,用于数字签名
  • ML-KEM,也称为 Crystals-Kyber,用于公钥加密

虽然谷歌 Willow 的问世引发了对量子加速进展可能迅速攻破加密系统的担忧,但现实是,破解 RSA 等仍需要数百万个稳定量子比特。目前 Willow 的 105 个量子比特尚远远不够。

我们应关注的关键时间线是 NIST 的后量子加密标准时间表 — — 2030 年弃用经典算法,2035 年全面淘汰。

Sui 加密体系

当前 Sui 和许多区块链使用的主流加密方法包括:

  • 签名算法:ECDSA、EdDSA
  • 哈希函数:用于对象 ID、账户、交易摘要等
  • RSA 签名:用于 zkLogin(因为多数 OpenID 提供商使用 RSA 签名 JSON Web Tokens)
  • BLS12–381 曲线:用于随机性信标和签名
  • 公钥加密/密钥交换:用于 TLS 安全通信

签名算法

Sui 向后量子密码学的过渡,需要在安全性、效率和实际部署考量之间做好平衡。NIST 在其后量子密码标准化过程中推荐了几种签名方案,包括 CRYSTALS-Dilithium、FALCON 和 SPHINCS+。这些方案专为抵御量子计算机攻击而设计,因为量子攻击会威胁到目前在 Sui 中使用的基于 ECC 的签名方案(如 Ed25519)的安全性。

NIST 推荐与安全假设:NIST 选出的三种主要签名方案各具特点:

  • CRYSTALS-Dilithium:基于 Module-LWE 格问题的困难性,提供强大的安全性和高效的验证速度,但签名规格相对较大。
  • FALCON:同样基于格,使用 NTRU 假设,具有签名小、验证快的优势,但需要复杂的浮点运算来实现快速傅里叶高斯采样。
  • SPHINCS+:一种无状态的哈希基础方案,仅依赖密码哈希函数的安全性,但签名规格非常大,签名和验证速度都较慢。

以下是这几种方案在不同安全级别下的参数:

对像 Sui 这样的区块链而言,优先考虑高吞吐和低延迟签名验证,因此基于格的方案(如 Dilithium 或 FALCON)相比 SPHINCS+ 更为实用。

签名的批量验证(Batch Verification):在 Sui 中,一个重要的优化是对来自不同密钥的多个签名进行批量验证,以提高效率。虽然基于 ECC 的签名支持高效的批量验证,但目前所考虑的抗量子(PQ)签名方案在这方面还缺乏同等级别的优化:

  • Dilithium:支持一种“表面层级”的批量验证加速,适用于“单一密钥 + 多条消息”的场景,主要通过将矩阵-向量运算优化为矩阵-矩阵运算。通常相比单独验证每条签名可提升 20%-50% 的速度。
  • FALCON:由于其采用结构化的随机性,实现批量验证存在困难。
  • SPHINCS+:由于缺乏代数结构,不支持有效的批量验证。

过渡策略:为了平滑地从前量子(PreQ)签名系统过渡到后量子(PQ)签名系统,可采取以下几种策略:

主动策略(在账户创建时实施):

  1. 在生成地址时,用 PQ 签名对 PreQ 公钥进行签名,之后再从使用 PreQ 公钥过渡到 PQ 密钥。
  2. 使用 PreQ-PQ 的“2选1”多签(1-out-of-2 multisig)方案,并为 PreQ 密钥设置过期时间。多签地址必须是两个公钥的 PQ 哈希值。

适配已有账户的策略:

  1. 将现有的 PreQ 地址标准过渡为 PQ 地址。
  2. 在过渡时,从用于 PreQ 签名的同一随机种子构建 PQ 密钥对,并发布一个 PQ ZK 证明,证明两者的种子一致。

哈希函数

虽然 NIST 的后量子标准化进程主要聚焦在公钥密码学上,但由于 Grover 算法的存在,哈希函数也必须加以考虑。Grover 算法将哈希函数在抗原像(preimage resistance)方面的有效安全性降低了一半,在抗碰撞(collision resistance)方面则被相关的 BHT 算法降低了约三分之一。因此,对于 PQ 安全推荐的做法是使用至少 256 位输出的哈希函数,以在量子攻击者面前保持 128 位抗原像安全性,以及 384 位输出以保证 128 位抗碰撞安全性。

哈希函数的性质:我们关注哈希函数的两个标准安全属性:

第二抗原像性(Second Preimage Resistance):给定一个输入 x 和其哈希输出 y = H(x),应当难以找到任意另一个 x’ (≠ x),使得 H(x’) = y。与抗原像性类似,平均需要进行 2^{n-1} 次哈希查询才能破解第二抗原像性。在量子计算机下,Grover 算法可以用 O(2^{n/2}) 次查询来寻找碰撞。因此,为了实现 128 位的安全性,哈希输出需为 256 位。地址认证的安全性依赖于第二抗原像性,以防止攻击者构造出不同的验证密钥来伪装身份。

抗碰撞性(Collision Resistance):应当难以找到两个不同的输入 x ≠ x’,使得 H(x) = H(x’)。通用生日攻击需要 O(2^{n/2}) 次哈希查询即可找到碰撞,因此相比抗原像性与第二抗原像性,抗碰撞性的安全等级等效于减半。而基于 Grover 算法的 BHT 算法能够以 O(2^{n/3}) 的时间找到碰撞。抗碰撞性对于防止链分叉至关重要。Sui 当前的哈希摘要为 256 位,因此需要提升到 384 位才能提供 128 位的抗碰撞安全性。

不过,理论上的安全等级是一个上限,实际中可能因哈希函数的具体结构而降低。

过渡策略:在 Sui 中,哈希函数仅被用作压缩机制,以用于对公共数据的承诺,目标是优化存储而非隐私保护。典型示例包括交易摘要(transaction digests)和检查点摘要(checkpoint digests)。甚至地址生成也涉及将公钥和其他输入压缩为固定长度的字符串。在这些场景中,过渡过程可以相对简单,因为可以验证 PreQ 哈希和 PQ 哈希的公共原像是一致的。

公钥加密与密钥交换

在现代区块链中,加密有几个重要用例,尽管不像签名方案那样具有核心地位。这些用例包括保护交易金额和地址隐私,以及通过加密交易防止 MEV 攻击。

对称密钥加密:由于像 AES 这样的标准加密算法基于非代数结构,它们通常仅会受到较不严重的量子攻击,例如 Grover 算法的攻击。标准的缓解方法是将密钥长度加倍,以达到目标安全级别。

公钥加密:像 ElGamal 和 RSA 这样的公钥加密方案依赖于群代数,因此可以被 Shor 算法在量子多项式时间内破解。为应对量子攻击,提出了基于格的方案,这些方案依赖于带噪声的代数运算。其安全性依赖于在高维格中寻找短向量或近似向量的量子困难性假设。

NIST 已将 CRYSTALS DILITHIUM 构造标准化为公钥封装机制的使用方式,也称为 ML-KEM。Dilithium 在运算中使用模格(module lattice),其底层的困难性假设为 Module-LWE,该假设的难度介于普通 LWE(使用无结构格)和 Ring-LWE(使用由多项式环诱导的格)之间。尽管 Ring-LWE 提供了最佳的公钥和密文大小,但它也容易受到利用环结构的攻击,例如子空间攻击。而 Module-LWE 则是基于环元素上的模构造,因此比纯粹的环结构拥有更少的结构性。

下表给出了 ML-KEM 在不同安全级别下的参数:

农场攻击(Farming attacks)

尽管今天的量子计算机尚不具备实际威胁,但攻击者可能现在就保存 PreQ 密文,以备将来拥有强大的量子计算机后进行解密。对于需要保密数十年的高度机密数据而言,这是无法接受的情况。仅仅将公开存储的 PreQ 密文重新加密为 PQ 密文并不足够安全,因为攻击者可能早已复制了这些密文。这与签名方案不同,签名可以通过多重签名层叠来增强未来的抗量子伪造能力。

过渡策略

  • 临时隐私需求的密文:可以在一段时间内继续使用 PreQ 加密。例如,用于缓解 MEV 攻击的加密交易、计划短期内公开的加密 NFT。
  • 价值较低或短期内价值即会消失的数据:也可以继续使用 PreQ 加密。例如加密的新闻内容、娱乐媒体。
  • 高价值、高机密性且需保密至 2030 年以后的数据应尽快使用 PQ 加密。对这类数据来说,先发布 PreQ 密文、后续切换为 PQ 密文的策略并不安全,因为存在农场攻击风险。

PQ-TLS(抗量子 TLS)

TLS 是当今网络安全通信的核心协议,涉及签名和加密两部分,因此也容易受到量子攻击。OpenSSL 3 拥有灵活架构,可集成 Open Quantum Safe 项目开发的 PQ 算法。oqs-provider 库已实现多种 PQ 算法,包括 ML-DSA、ML-KEM、Falcon 和 SPHINCS。亚马逊为其 KMS 提供了定制化的 PQ-TLS 实现,在等待标准化的同时,该实现已支持运行相同软件的通信端点。

ZK 证明系统

现代零知识(ZK)系统大致可以分为两类:

线性 PCPs:

像 Pinocchio 和 Groth16 这样的证明系统可以在概念上分解为线性交互式证明( Linear interactive proof,LIP)和加密的线性仅加密方案。虽然 LIP 部分在信息论上是安全的,因此对量子攻击免疫,但线性仅加密部分是通过基于配对友好型椭圆曲线的密码双线性映射实现的,使得该系统容易受到量子离散对数攻击。

  1. 优点:证明短、验证速度快。
  2. 缺点:电路特定的通用参考字符串(CRS)随着电路规模呈超线性增长,需要电路特定的生成仪式以避免信任单一的 CRS 生成者。
  3. 量子过渡:ACL+22 和 JPR23 等构造使用基于格的原生功能来实现线性仅加密,从而应对量子攻击。然而,这一研究方向仍处于起步阶段。

IOPs:

像 PLONK 和 STARK 这样的证明系统可以在概念上分解为一个交换多项式的交互式协议,一个将多项式压缩的密码学多项式承诺方案,以及一个通过 Fiat-Shamir 启发式将交互折叠的密码学哈希函数。尽管哈希函数可以通过加倍密钥长度实现抗量子能力,但多项式承诺部分需要更多的注意。

  1. 优点:透明或与电路无关的通用参考字符串(CRS),取决于所使用的多项式承诺方案。
  2. 缺点:证明较长,验证时间较慢。
  3. 量子过渡:基于群的多项式承诺方案(如 [KZG10])容易受到量子离散对数攻击。基于哈希函数的多项式承诺方案(如 FRI 及其变体)被认为是可能具备后量子安全性的。

(zk)SNARKs 的理想目标是:

  1. 电路无关的设置,避免昂贵的生成仪式
  2. 快速验证 O(λ) 、证明 O(|C|·log(|C|)·poly(λ)) 、证明大小 O(λ)
  3. 抗量子攻击

目前尚无任何架构能同时满足上述三项要求。

生产系统:现代的 ZK 生产系统(如 Polygon 的 Plonky3、StarkWare 的 STARKs 及其与 Mysten Labs 密码学家共同开发的 Winterfell、Succinct 的 SP1 和 Nexus zkVM)在效率、可扩展性和安全性方面提供了不同的权衡。

从安全性角度来看,StarkWare 和 Plonky3 仅依赖哈希函数,因此可以顺利过渡到后量子(PQ)安全。SP1 也使用 PQ 安全的原生功能,唯一的例外是可选的最终递归步骤使用了紧凑的 Groth16 证明,该部分仍不具备 PQ 安全性。Nexus zkVM 曾依赖于椭圆曲线密码学(由于使用了基于累积的方案,如 Nova/Hypernova),但最近已切换至 Circle STARKs。

zkLogin:Sui 的 zkLogin 使用 Groth16 证明,验证 OIDC JSON Web Token(JWT),而 JWT 又由 RSA 签名保护。Groth16 证明与 RSA 签名都容易受到量子攻击。一旦其中任一机制被攻破,zkLogin 的安全性将不复存在。

  • 对于 ZK 证明,我们必须过渡至 PQ 安全的系统(部分已在上文讨论)。除了 PQ 安全性外,最重要的标准是用户体验:包括低内存开销的快速生成器,以及验证节点端的快速验证。
  • 至于 JWT 签名,是否过渡将取决于 OIDC 的标准化进程。

zkLogin 的过渡策略:zkLogin 地址是多个字段的哈希,包括用户的 Web2 ID 以及保密存储的 salt。这些哈希值为 256 位,由于仅需第二抗原像性,因而在一段时间内仍具有合理的后量子安全性。

  • 我们需要适配 PQ-JWT 和 PQ-zkSNARK,同时保持地址不变。
  • 某些 zkLogin 电路内部使用的哈希需要碰撞抗性,这些哈希需扩展至 384 位以实现量子安全。

DKG 协议(分布式密钥生成)

目前广泛使用的随机信标基于 BLS 阈值签名,使用椭圆曲线,因此面临量子离散对数攻击的风险。相关的 DKG 协议也大量依赖椭圆曲线运算。为防御量子攻击,已有研究基于对称加密和格的随机信标方案,如 HashRand、Lattice-based PVSS 和 HERB。从 PreQ 过渡到 PQ 需要更改 DKG 协议,但由于它是内部的,因此可以在任何时候进行,而无需更改链上 API。

应用层使用场景

许多基于 Sui 构建的智能合约在应用层使用了上述密码学原生功能。例如,像原生桥和时间锁定加密这样的预言机。这些应用需要过渡到类似于上述讨论的 PQ 替代方案。

其他 Web3 努力

其他 Web3 基金会或公司也推出了后量子产品或即将推出的计划:

  • 以太坊、Algorand 和 Cardano 正在积极规划升级以应对量子威胁。
  • Solana 最近推出了一项量子安全功能 Winternitz Vault,它采用基于哈希的一次性签名来保护资金免受未来量子威胁。Move 也可以实现类似的功能。

关于 Sui Network

Sui是基于第一原理重新设计和构建而成的L1公有链,旨在为创作者和开发者提供能够承载Web3中下一个十亿用户的开发平台。Sui上的应用基于Move智能合约语言,并具有水平可扩展性,让开发者能够快速且低成本支持广泛的应用开发。获取更多信息:https://linktr.ee/sui_apac

官网|英文Twitter|中文Twitter|Discord|英文电报群|中文电报群

相关文章:

如何在量子计算时代保障 Sui 的安全性

量子计算的出现对依赖加密机制的系统构成了重大威胁。区块链依赖加密技术来进行身份管理、安全交易和数据完整性保护,而量子计算具备打破传统加密模型的能力,因此区块链面临特别严峻的挑战。 然而,Sui 天生具备“加密灵活性”,可…...

linux sysfs使用cat无显示的原因:返回值未赋值

在Linux驱动中通过sysfs定义的文件使用cat命令无显示,通常由以下原因导致: 1. show函数未正确实现 原因:show函数(如show_status)未正确填充缓冲区或返回有效字节数。 排查: // 错误示例:未写…...

Discuz论坛网站忘记管理员密码进不去管理中心怎么办?怎么改管理员密码?

Discuz论坛网站忘记管理员密码进不去管理中心怎么办?怎么改管理员密码?今天驰网飞飞和你分享 首先我们需要用到Discuz!急诊箱tools.php这个文件,可在下载中心搜索关键词下载,下载好后将tools.php文件放到网站根目录&a…...

基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估

以下是基于LangChain与Neo4j构建企业关系图谱的金融风控实施方案,结合工商数据、供应链记录及舆情数据,实现隐性关联识别与动态风险评估: 一、数据整合与图谱构建 多源数据融合与清洗 • 数据源:整合企业工商数据(股权…...

数据结构第六章(五)-拓扑排序、关键路径

数据结构第六章(五) 图的应用(二)一、有向无环图二、拓扑排序1. AOV网2. 拓扑排序3. 逆拓扑排序 三、关键路径1.AOE网2.关键路径2.1 介绍2.2 关键路径的求法 总结 图的应用(二) 一、有向无环图 首先我们得…...

stc32单片机实现串口2M波特率满带宽传输

我需要实现已极高的速度用串口往上位机发送数据, 并且还不能占用mcu资源, 使用的单片机位stc32g8K64 我的方法是串口接收采用中断接收, 发送采用dma自动发送, 预先初始化16个64字节的缓冲区, 每次通过串口发送时, 先找到当前的空闲缓冲区, 然后往缓冲区里填充数据, 在dma传输完…...

uni-app 状态管理深度解析:Vuex 与全局方案实战指南

uni-app 状态管理深度解析:Vuex 与全局方案实战指南 一、Vuex 使用示例 1. 基础 Vuex 配置 1.1 项目结构 src/ ├── store/ │ ├── index.js # 主入口文件 │ └── modules/ │ └── counter.js # 计数器模块 └── main.js …...

STM32之DHT11温湿度传感器---附代码

DHT11简介 DHT11的供电电压为 3-5.5V。 传感器上电后,要等待 1s 以越过不稳定状态在此期间无需发送任何指令。 电源引脚(VDD,GND)之间可增加一个100nF 的电容,用以去耦滤波。 DATA 用于微处理器与DHT11之间…...

Fluent 内置双向流固耦合FSI 液舱晃荡仿真计算

本案例利用Fluent 内置双向流固耦合FSI对液舱晃荡仿真展开了计算,提供了一种更为便捷快速的分析方法,对不同杨氏模量的液舱内部构件进行分析,后续可以通过该案例对不同的双向流固耦合模型展开计算分析。 1 SCDM 设置 1.1 导入几何 本案例根…...

嵌入式开发板调试方式完全指南:串口/SSH/Telnet及其他方式对比

文章目录 💻嵌入式开发板调试方式完全指南:串口/SSH/Telnet及其他方式对比一、为什么需要连接嵌入式开发板❓二、串口调试:最古老的调试方式仍在发光🏛️2.1 什么是串口调试? 三、SSH/Telnet:网络时代的调试…...

JavaScript数据结构与算法实战: 探秘Leetcode经典题目

# JavaScript数据结构与算法实战: 探秘Leetcode经典题目 第一章:掌握LeetCode经典题目 什么是LeetCode? 力扣)是一个专门为程序员提供算法题目练习的平台,涵盖了广泛的题目类型,包括数据结构、算法、数据库等多个领域。…...

内网穿透实践:cpolar快速入门教程

最近有个朋友联系我,问我有没有方法将自己做的项目让别人也能访问到,我寻思这不就是外网映射的事情。于是我很愉快的和他说,你去买个云服务器就行,尽管我一再和他说,个人新用户能有免费试用期,但是本着又蠢…...

HAL库(STM32CubeMX)——高级ADC学习、HRTIM(STM32G474RBT6)

系列文章目录 文章目录 系列文章目录前言存在的问题HRTIMcubemx配置前言 对cubemx的ADC的设置进行补充 ADCs_Common_Settings Mode:ADC 模式 Independent mod 独立 ADC 模式,当使用一个 ADC 时是独立模式,使用两个 ADC 时是双模式,在双模式下还有很多细分模式可选 ADC_Se…...

Kafka 详细解读

1. Producer(生产部卷王) 职责:往 Kafka 里疯狂输出数据,KPI 是「日抛式消息海啸」 职场人设: 白天开会画饼,深夜写周报的奋斗逼,口头禅是「这个需求今晚必须上线!」代码里的「福报…...

Python爬虫实战:获取高考网专业数据并分析,为志愿填报做参考

一、引言 高考志愿填报是考生人生的关键节点,合理的志愿填报能为其未来发展奠定良好基础。计算机类专业作为当下热门领域,相关信息对考生填报志愿至关重要。教育在线网站虽提供丰富的计算机类专业数据,但存在反爬机制,增加了数据获取难度。本研究借助 Scrapy 爬虫技术及多…...

Ubuntu下展锐刷机工具spd_dump使用说明

spd_dump使用说明 源码地址:https://github.com/ilyakurdyukov/spreadtrum_flash 编译环境准备: sudo apt update sudo apt install git sudo apt install build-essential sudo apt install libusb-1.0-0-devIf you create /etc/udev/rules.d/80-spd…...

配置 VS Code 使用 ESLint 格式化

1、在设置里面搜索Default Formatter,下拉框里选择eslint 2、并勾选Enables ESlint as a formatter 3、再在settings.json文件中添加配置代码,如下所示: 1) 、打开 VS Code 设置 快捷键:Ctrl ,(Mac: ⌘ ,…...

极刻云搜-专业的软件网址搜索引擎

软件名:极刻云搜 版本:v1.0 软件功能:搜索实用软件和网址 之前有个全网爆火的软件叫搜软 但是它满屏广告而且很久都没更新了 我看也有好多人在求这门类似的软件 我就按照它扒了一个一模一样的 软件丑是丑了点 但是这个功能确实简单粗暴 因为用…...

android Stagefright框架

作为Android音视频开发人员,学习Stagefright框架需要结合理论、源码分析和实践验证。以下是系统化的学习路径: 1. 基础准备 熟悉Android多媒体体系 掌握MediaPlayer、MediaCodec、MediaExtractor等核心API的用法。 理解Android的OpenMAX IL&#xff08…...

vscode 打开新页签

目录 vscode 打开新页签 完整settings.json内容: vscode 打开新页签 .vscode目录中 新建settings.json 在 settings.json 文件中,添加或修改以下行: json "workbench.editor.enablePreview": false 这将禁用预览模式&#xff0…...

【C++编程入门】:从零开始掌握基础语法

C语言是通过对C语言不足的地方进行优化创建的,C在C语言之上,C当然也兼容C语言, 在大部分地方使用C比C更方便,可能使用C需要一两百行代码,而C只需要五六十行。 目录 C关键字 命名空间 缺省参数 缺省参数分类 函数…...

Vue中如何优雅地阻止特定标签的移除并恢复其原始位置

Vue中如何优雅地阻止特定标签的移除并恢复其原始位置 在使用 Element Plus 或 Element UI 的 <el-select> 组件时,有时我们希望根据某些条件阻止用户移除特定的标签,并且在阻止移除后将该标签重新添加到其原始位置。这在处理与子项目关联的成员时特别有用。本文将详细…...

基于Arduino的ESP8266连接OneNET云平台(MQTT协议 物模型)(二)连接云平台

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、前期准备1.1 硬件配置1.2 软件环境配置 二、接线三、核心代码3.1 总代码 三、最终效果总结 前言 本系列将以0基础新手视角&#xff0c;完整演示ArduinoESP…...

空间注意力和通道注意力的区别

空间注意力和通道注意力是深度学习中两种常见的注意力机制。 1. ​​关注维度不同​​ ​​通道注意力​​&#xff08;Channel Attention&#xff09; 对特征图的每个通道分配不同的权重&#xff0c;强调“哪些通道更重要”。例如&#xff0c;在RGB图像中&#xff0c;可能红色…...

git 版本提交规范

Git 提交规范&#xff08;Git Commit Message Convention&#xff09;是为了让项目的提交历史更加清晰、可读、便于追踪和自动化工具解析。常见的规范之一是 Conventional Commits&#xff0c;下面是一个推荐的格式规范&#xff1a; &#x1f31f; 提交信息格式&#xff08;Con…...

Linux的基础的操作指令

一.目录文件&#xff1a;在Linux中的以d开头的文件&#xff0c;就叫做目录文件(Directory): 二.普通的文件&#xff1a;在Linux中的以-r开头的文件&#xff0c;就叫做普通的文件,他们通常以.txt .cpp .c为后缀: 三.pwd:查看当前目录的绝对路径:查看当前所在位置的目录的绝对路径…...

级联vs端到端、全双工、轮次检测、方言语种、商业模式…语音 AI 开发者都在关心什么?丨Voice Agent 学习笔记

编者按&#xff1a; A16Z在《AI Voice Agents: 2025 Update》中提到&#xff1a; 语音是 AI 应用公司最强大的突破之一。 它是人类沟通中最频繁&#xff08;也是信息密度最高的&#xff09;形式&#xff0c;AI 也让其首次变得“可编程”。 在13期Z沙龙&#xff0c;我们聚焦AI…...

使用Cloudflare加速网站的具体操作步骤

要通过Cloudflare加速网站&#xff0c;您需要按照以下步骤进行设置和配置。这些步骤包括域名设置、接入Cloudflare、配置缓存和其他设置&#xff0c;以及测试网站性能。 1. 注册Cloudflare账户 访问Cloudflare官网&#xff1a;前往 Cloudflare官网。创建账户&#xff1a;点击…...

编译原理实验(四)———— LR(1)分析法

一、实验目的 掌握LR(1)分析法的基本原理与实现流程。通过构造LR(1)分析表&#xff0c;验证符号串是否符合给定文法规则。理解LR(1)分析中向前搜索符&#xff08;Lookahead Symbol&#xff09;的作用&#xff0c;解决移进-归约冲突。 二、实验题目 1.对下列文法&#xff0c;用…...

【Redis】Jedis与Jedis连接池

目录 1. Jedis 单实例连接 2. Jedis 连接池&#xff08;JedisPool&#xff09; 3. JedisPool 与 Jedis 的区别 4. JedisPool 线程安全 6. 使用 JedisPool 的注意事项 1. Jedis 单实例连接 在最简单的用法中&#xff0c;Jedis 提供了直接与 Redis 服务器连接的方式。这适合…...

MongoDB数据库的安装到入门使用详细讲解

本篇文章主要讲解MongoDB的安装使用教程及基础的数据库管理和操作能力的讲解,通过本篇文章您可以快速的掌握对MongDB数据库的基本认识及,基础开发能力。 一、MongoDB介绍 MongoDB是一款免费开源的非关系型数据库,该数据库适应于复杂关系的存储和管理,非常适合数据结构复杂…...

Argo CD

文章目录 一、什么是 Argo CD二、为什么选择 Argo CD三、Argo CD 架构1、API服务器2、存储库服务器3、应用程序控制器 四、Argo CD 的使用1、要求2、安装 Argo CD2.1、创建 argocd 命名空间2.2、部署 Argo CD2.3、验证部署是否成功 3、下载 Argo CD CLI4、发布 Argo CD 服务器5…...

ElementUI中checkbox v-model绑定值为布尔、字符串或数字类型

这篇博客介绍了在Vue.js中使用El-Checkbox组件时&#xff0c;如何设置和处理v-model的布尔值和类型转换。通过示例代码展示了如何设置true-label和false-label属性来改变选中状态的值&#xff0c;适用于需要特定类型&#xff08;如字符串或整数&#xff09;的场景。v-model不能…...

Wasm Client SDK线上优化

前言 随着 WebAssembly&#xff08;Wasm&#xff09;在前端开发中的普及&#xff0c;越来越多的开源项目开始在浏览器端提供高性能的逻辑处理方案。OpenIM Wasm SDK 便是其中的代表&#xff1a;通过将 Go 语言编写的 OpenIMSDK 核心编译为 .wasm 文件&#xff0c;在前端即可完成…...

Spring(第一章)

一&#xff0c;Spring介绍 什么是Spring 1. 轻量级&#xff1a;Spring 是非侵入性的 - 基于 Spring 开发的应用中的对象可以不依赖于 Spring 的 API 2. 依赖注入(DI --- dependency injection、IOC) 3. 面向切面编程(AOP --- aspect oriented programming) 4. 容器: Spring 是…...

蓝桥杯 18.分考场

分考场 原题目链接 题目描述 有 n 个人参加某项特殊考试。 为了公平&#xff0c;要求任何两个认识的人不能分在同一个考场。 你的任务是求出最少需要分几个考场才能满足这个条件。 输入描述 第一行&#xff1a;一个整数 n&#xff0c;表示参加考试的人数&#xff08;1 ≤…...

大文件分片上传进阶版(新增md5校验、上传进度展示、并行控制,智能分片、加密上传、断点续传、自动重试),实现四位一体的网络感知型大文件传输系统‌

上篇文章我们总结了大文件分片上传的主要核心&#xff0c;但是我对md5校验和上传进度展示这块也比较感兴趣&#xff0c;所以在deepseek的帮助下&#xff0c;扩展了一下我们的代码&#xff0c;如果有任何问题和想法&#xff0c;非常欢迎大家在评论区与我交流&#xff0c;我需要学…...

【项目管理】成本类计算 笔记

项目管理-相关文档&#xff0c;希望互相学习&#xff0c;共同进步 风123456789&#xff5e;-CSDN博客 &#xff08;一&#xff09;知识总览 项目管理知识域 知识点&#xff1a; &#xff08;项目管理概论、立项管理、十大知识域、配置与变更管理、绩效域&#xff09; 对应&…...

Redis 事务

事务介绍 Redis 事务和 MySQL 事务在概念上类似的 把一些列的操作绑定成一组&#xff0c;让这一组能够批量执行 MySQL 事务 原子性&#xff1a;把多个操作打包成一个整体 一致性&#xff1a;事务执行前后数据合理 持久性&#xff1a;事务做出的操作都会修改硬盘 隔离性&#…...

JavaScript day5

立即执行函数 <script>(function(){ console.log//函数不需调用&#xff0c;立马执行 })() </script> //另外写法 <script> (function(){}()) </script> 常见的内置对象 Math console.dir()——打印对象的 使用Math中的属性——console.log(Math.…...

辛格迪客户案例 | 浙江高跖医药委托生产质量管理协同(OWL MAH)项目

一、案例概述 浙江高跖医药科技股份有限公司是一家集“研、产、销”为一体的专业化药品持证企业。高跖医药自成立之初就建立并运行着一套相对完善的质量管理体系&#xff0c;涵盖了药品的研发、生产监管及销售。高跖医药于2022年选择实施了辛格迪的“委托生产质量管理协同解决…...

科学养生指南:解锁健康生活新方式

在快节奏的现代生活中&#xff0c;健康养生已成为人们关注的焦点。科学合理的养生方式&#xff0c;能帮助我们增强体质、预防疾病&#xff0c;享受更优质的生活。​ 饮食是健康养生的基石。遵循 “均衡饮食” 原则&#xff0c;每日饮食需包含谷类、蔬菜水果、优质蛋白质和健康…...

FreeRTos学习记录--2.内存管理

后续的章节涉及这些内核对象&#xff1a;task、queue、semaphores和event group等。为了让FreeRTOS更容易使用&#xff0c;这些内核对象一般都是动态分配&#xff1a;用到时分配&#xff0c;不使用时释放。使用内存的动态管理功能&#xff0c;简化了程序设计&#xff1a;不再需…...

C++ 操作符重载Operator

C可以重载大多数操作符&#xff0c;如算术运算符号&#xff0c;-号。 位操作符<<,>> 下标符号[]等都可以重载。 重载的意思&#xff0c;是让这些符号&#xff0c;按你定义的行为来执行代码&#xff0c;但是这种自定义&#xff0c;是有限制的&#xff0c;必须有一…...

SBTI科学碳目标认证有什么要求?SBTI认证的好处?

SBTi&#xff08;科学碳目标倡议&#xff09;认证要求与好处 SBTi&#xff08;Science Based Targets initiative&#xff0c;科学碳目标倡议&#xff09;是由全球环境信息研究中心&#xff08;CDP&#xff09;、联合国全球契约&#xff08;UNGC&#xff09;、世界资源研究所&…...

RS232转Profibus DP网关:技术革新!

RS232转Profibus DP网关&#xff1a;技术革新&#xff01; 在工业自动化领域&#xff0c;通讯协议的多样性为系统设计提供了灵活性&#xff0c;但同时也带来了不同设备间通信的挑战。其中&#xff0c;RS232和Profibus DP是两种广泛应用的通讯协议。RS232&#xff0c;作为一种串…...

XAML基本语法与例子

XAML (eXtensible Application Markup Language) 是一种基于 XML 的声明性语言&#xff0c;主要用于 WPF、UWP、Xamarin.Forms 和 MAUI 等框架中构建用户界面。 基本语法结构 1. 根元素和命名空间声明 <Page x:Class"MyNamespace.MyPage"xmlns"http://sch…...

map和set封装

创作中心-CSDNhttps://mpbeta.csdn.net/mp_blog/creation/editor/147238663 目录 创作中心-CSDNhttps://mpbeta.csdn.net/mp_blog/creation/editor/147238663 一、封装原理 二、改造红黑树 三、实现迭代器 四、测试 五、小tip 一、封装原理 上一篇文章我们完成了红黑…...

Java第六节:创建线程的其它三种方式(附带源代码)

作者往期文章 Java第五节&#xff1a;继承thread类创建线程-CSDN博客 一、实现Runnable接口 创建一个Thread02类实现Runnable接口 二、使用匿名内部类 在Main函数中匿名内部类创建线程 三、使用Lambda表达式 在Main函数中利用Lambda表达式创建一个线程 四、源代码 此项目源代…...

041-代码味道-大泥团模块

代码味道-大泥团模块 代码味道-Blob Module深度解析与C重构实践 一、Blob Module定义与特征 Blob Module&#xff08;大泥团模块&#xff09;是代码坏味道中的一种典型表现&#xff0c;指某个类或模块承担了过多不相关的职责&#xff0c;导致代码结构臃肿、可维护性差。其核心…...