Zama:链上隐私新标准

1. 引言

揭示 Web3 中全同态加密的潜在用例,并深入研究 Zama 的四种主要开源产品:

  • TFHE-rs
  • Concrete
  • Concrete ML
  • fhEVM

众所周知,在当今时代,数据隐私问题与互联网诞生以来一样普遍。仅 Yahoo!、Equifax 和 Marriott 的数据泄露就导致了近10 亿美元的法律和解费用。IBM 最近发布的行业报告Cost of a Data Breach Report 2023显示,2023 年数据泄露的全球平均成本为 445 万美元,三年内增长 15%。

具体来说,在Web3中,零知识证明(ZKP)和可信执行环境(TEE)等技术已被用于保护用户数据。然而,最近,完全同态加密 (FHE) 已成为许多以隐私为中心的工具的流行替代品(和补充)。FHE 是一种加密形式,允许在数据保持加密状态的同时对数据执行计算。考虑到2023 年基于基础设施的项目在区块链行业中处于领先地位,平均每月融资额为 2.07 亿美元,预计新的 FHE 项目将很好地适合这一类别,并将基础设施融资规模扩大到 2024 年。

2. 何为Zama?

Zama 是一家总部位于巴黎的远程友好公司,致力于为 Web2 和 Web3 应用程序提供开源 FHE 工具。其构建了多个开源产品,使开发人员可以更轻松地将 FHE 用于区块链和人工智能等领域的各种用例。Zama 已成功完成三轮融资,迄今为止筹集了 5000 万美元。他们最近一轮融资是 2022 年 2 月由 Protocol Labs 领投的 4200 万美元 A 轮融资。【2024年3月再度获得7300万美金A轮融资。】

为了直接展示 FHE 的强大功能,Zama 在其 Huggingface profile上创建了一些用户友好的 FHE 程序:

  • 第一个程序是情感分析工具。其采用短文本作为输入,使用 FHE 对其进行加密,分析加密的消息,然后告知文本的情绪 - 表明消息的​​积极或消极程度。
  • 另一个程序是图像过滤工具。其将图像作为输入,使用 FHE 对其进行加密,对加密图像应用过滤器,然后提供过滤后的图像作为输出。
  • 最后一个程序是一个健康预测工具:用户输入他们的症状,然后使用 FHE 进行加密。该程序分析这些加密的症状并告知最可能的健康问题。

Zama 的四种主要产品有:

  • TFHE-rs
  • Concrete
  • Concrete ML
  • fhEVM

3. TFHE-rs

Zama 的第一个开源工具是 TFHE-rs,为“Fast Fully Homomorphic Encryption over the Torus using Rust”的简称。

开发人员有多种方案来实现 FHE,这些方案在各方面可能有所不同,如它们所基于的数学原理和性能速度。FHE 的一个特定版本在“torus”上运行并且速度“fast”。通俗地说,torus就是一个甜甜圈。从形式上来说,它是类似于甜甜圈的几何形状的数学术语。TFHE-rs 采用与 tori(复数 torus)相关的数学结构和公式进行加密。

有趣的是,使用 tori 循环表示数字可以提高 FHE 方案的性能速度。这就是为什么它被称为“Fast Fully Homomorphic Encryption over the Torus.”。TFHE-rs 采用 Rust 编程语言编写,由缩写词中的“-rs”后缀表示。这是 Rust 库的典型扩展,类似于“.jpeg”用于图像文件。

在这里插入图片描述

Zama TFHE-rs 库的优势之一是其功能范围,包括:

  • Rust 和 C API:该库提供与 Rust 和 C 编程语言兼容的接口。这使得 FHE 对于开发人员来说更易于访问且用途更广泛。
  • 客户端 WebAssembly API:此功能允许开发人员直接在浏览器中执行 JavaScript 以外的语言代码,其速度几乎与在本机环境中运行它们一样快。它是一个有用的 API,因为它允许开发人员将 TFHE-rs 用于 Web 应用程序。

TFHE-rs 的一个重要特征是它对量子计算机的抵抗力,量子计算机比传统计算机强大几个数量级,并且可以破解特定的加密方案。TFHE-rs 能够抵御量子威胁,因为它的安全性基于一个名为“Learning with Errors”(LWE) 的密码学难题。”

LWE 难题是指数学挑战:

  • 其中给定一组线性方程,求解这些方程在计算上是困难的,因为它们被设计为产生包含误差的结果。

因此,确定实际的解决方案并支撑密码学的安全性是具有挑战性的。一个简单的类比如下:假设你品尝了一道意大利面,并试图仅根据其味道来推断其成分及其数量。最重要的是,想象一下,每次你把意大利面拧到叉子上时,我都会在你的嘴里加一点盐或糖,故意误导你。在这个类比中,方程类似于成分,误差类似于意外的盐或糖,解决 LWE 问题类似于猜测精确的配方。
在这里插入图片描述

为了安全起见,LWE 需要在加密过程中向消息添加随机错误或噪声。然而,随着执行更多的计算,每次计算都会累积额外的噪声或错误。某些计算步骤可能会比其他步骤产生更多的噪音。如,密文(加密数据)的乘法会导致每个计算步骤的噪声几乎呈指数增长,而密文的加法会导致噪声大致呈线性增长。当只需要几次计算时,这种噪声水平是可以控制的,但经过多次分析后,噪声可能变得如此突出,以至于原始数据变得难以理解。数据实际上已丢失。
在这里插入图片描述

为了保持可接受的噪声水平以成功实施 FHE,TFHE-rs 利用了一种称为“Programmable Bootstrapping可编程引导”的技术。该方法通过花费计算能力来刷新和减少噪声来减轻噪声。想象一下这个过程就像在一台旧收音机上听音乐一样,随着时间的推移,静电会累积,使声音变得不太清晰。可通过快速关闭并重新打开收音机来消除静电。在这个类比中,加密的数据被比作音乐,错误/噪音象征着静电,而引导则被比作重新启动收音机。
在这里插入图片描述
可编程引导有一定的局限性:

  • 需要强大的计算能力。
  • 由于其实施所需的时间,降低了处理速度。
  • 其应用程序必须根据所执行的计算具体情况进行定制。

Zama 通过采用“并行性”来提高可编程引导的效率,从而缓解了这些限制。并行性涉及同时执行多个计算,以防止连续计算顺序可能发生的数据失真。实现这一点需要配备先进硬件和软件的计算机。值得庆幸的是,微软和英特尔等公司多年来致力于开发此类功能,作为 DPRIVE 计划的一部分。

实际上,使用 TFHE-rs 需要用户生成两个密钥:

  • 客户端密钥:客户端密钥是私有的,由用户用来加密其数据。
  • 服务端密钥:服务端密钥是公开的,允许在不泄露其内容的情况下处理加密数据。
    • 一旦完成对用户的加密数据的操作,就会产生加密结果,只有用户可以使用客户端密钥解密。

在这里插入图片描述

4. Concrete

Zama 开发的另一个核心工具是 Concrete,这是一个开源框架,可以简化开发人员创建 FHE 程序的挑战性过程。Concrete 包括一个 TFHE(Fast Fully Homomorphic Encryption over the Torus)编译器作为该框架的一部分。该编译器将常规编程代码转换为计算机可以使用 FHE 执行的可执行指令。这对于开发人员来说是个好消息,因为他们可以像平常一样编写代码,并且只需使用 Concrete 进行微小的调整即可确保他们的程序完全同态加密。

如前所述,对 FHE 加密数据执行计算可能会引入显著的噪声,从而导致错误。Concrete 的默认错误概率非常低,每 100,000 次执行中只有 1 次产生错误输出。开发人员可以灵活地修改此错误概率的参数。然而,将错误概率降低到低于此默认设置需要更多的计算资源,并显著降低性能速度。相反,增加错误概率可以提高性能。
在这里插入图片描述

构建 FHE 程序的开发人员可以使用多种选项来优化计算以提高效率:

  • 降低精度:涉及程序和数据中的舍入数字。
  • 减少可编程自举:虽然可编程自举对于提高准确性很有价值,但可以通过尽可能少地使用它来实现最佳效率。
  • 增加并行化:这一策略涉及将程序分成可以并发处理的更小的段,而不是一次性执行整个程序。

5. Concrete ML

Zama 的第三个重要 FHE工具Concrete ML 简介:

  • 这个开源机器学习推理框架基于 Concrete 构建,融合了 AI 和 FHE。

Concrete ML 的价值在于:

  • 它能够让传统数据科学家和 AI 工程师将 FHE 集成到他们的机器学习模型中,而无需事先了解密码学。这些开发人员可以继续使用他们通常使用的熟悉工具,如 scikit-learn 和 PyTorch,因为它们与 Zama 的开源框架集成。

以下是使用 Concrete ML 将标准机器学习模型转换为可以对加密数据进行推断的模型的高级概述:

  • 在未加密数据上训练模型:使用未加密数据训练模型,就像使用传统机器学习模型一样。
  • 模型的量化:通过 Concrete ML,实现量化方案。此过程涉及将小数和浮点值转换为整数,鉴于 Concrete ML 目前只处理整数,这是至关重要的一步。
  • 编译为 FHE:量化后,Zama 的编译器将标准程序代码转换为能够解释加密数据的代码,确保 FHE 兼容性。

尽管 Zama 在创建专为机器学习定制的 FHE 工具方面取得了显著进步,但仍然存在某些局限性。

  • 可能已经想到的一个突出限制是需要对未加密的数据进行训练。目前,Concrete ML 仅支持 FHE 进行推理。尽管 FHE 取得了许多进步,但距离能够在加密数据上训练机器学习模型还有一段距离。
  • 另一个限制是需要量化方案。Concrete ML 仅使用 16 位整数而不是小数进行操作。这带来了挑战,因为许多模型,特别是复杂的深度学习模型,通常依赖于十进制精度。这些精确的数字必须被量化并转换为整数,这可能会导致细节丢失和模型性能变差。Concrete ML 配备了内置量化算法,使开发人员无需从头开始量化过程。然而,它还允许开发人员创建自己的量化算法,使他们能够调整功能并尝试最大限度地减少细节损失并优化性能。

尽管存在这些限制,但也不全是厄运和悲观。即使以目前的形式,Concrete ML 也展示了各种令人兴奋的机器学习演示。其中包括加密图像过滤、信用评分、基于用户提示(如 GPT-2)的隐私保护文本生成,以及旨在从短文本中评估情绪情绪的程序。

6. fhEVM

区块链存在一个突出的不可能三角。通过在链上存储数据,区块链通过固有的透明度促进信任。为了缓解这种情况,许多旨在保护隐私的协议将数据存储在链外。然而,这种方法消除了合约的可组合性,阻止了某些智能合约的交互,因为它们并不全部在链上。这些考虑引出了一个问题:如何在保证机密性的同时将数据存储在链上?

作为回应,Zama推出了fhEVM(以太坊虚拟机上的全同态加密)。

  • fhEVM 是一种协议,使开发人员能够在链上执行机密智能合约。这种设置是理想的,因为它确保智能合约保持可组合性,允许彼此交互,同时保留链上数据的机密性。
  • 此外,fhEVM 还整合了 Zama 的 TFHE-rs 库(前面讨论过),并引入了新的 TFHE Solidity 库。这个新库非常有用,因为它允许开发人员使用 Solidity(以太坊区块链上广泛认可的编程语言)来计算加密数据。

fhEVM 的高级概述是它使用全局公钥,允许所有协议用户使用 FHE 加密链上数据。采用这种方法的主要原因是,它使多个用户(每个用户的数据都保密)能够使用智能合约相互交互。

由于fhEVM使用非对称加密,因此有两个密钥:

  • 公钥:该密钥公开存储在链上,所有用户都使用它来加密其数据并对加密数据进行计算。
  • 私钥:该密钥具有解密数据的能力。它不属于任何单个用户,而是在网络中的验证器节点之间分配所有权。对于要解密的数据,多个验证者必须合作并批准此操作。这种协作批准被称为“阈值协议”。这种方法通过去中心化来增强安全性,防止恶意滥用密钥。

尽管加密数据的密钥是公开的并且网络中的任何人都可以使用,但仍采取预防措施来防止恶意行为。要将加密数据添加到区块链并在其上进行计算,用户必须提交两件事:

  • 其希望添加到区块链的加密数据。
  • A zero-knowledge proof of plaintext knowledge(ZKPoK)。通过 ZKPoK,用户向网络证明他们知道他们所引入的加密数据的内容(以未加密形式)。零知识证明是一种密码学方法,可在不泄露特定信息的情况下验证该信息的知识。

提交这两项后,网络将验证加密数据及其相应的零知识证明。如果验证成功,fhEVM 将加密数据存储在链上并提供句柄(对该数据的引用)。如果验证失败,则加密数据不会添加到区块链中。

验证至关重要。它确保尝试在区块链上添加和使用加密数据的个人无法盗用他人的加密数据并将其呈现为自己的数据。回想一下,fhEVM 在链上存储加密数据以供公众查看。因此,虽然任何人都可以在没有适当验证系统的情况下尝试与此加密数据进行交互,但他们不会成功地将其用于意外目的。

此外,fhEVM 通过使用指向加密数据的句柄来增强其安全性。这使得 fhEVM 可以跟踪添加的加密数据,特别是在执行可能产生新加密值的操作时。当然,当发生这种情况时,句柄和数据之间的映射会被更新。这种方法的安全优势是确保仅使用合法获取的数据,因为 fhEVM 仅在数据通过验证阶段后才添加句柄。

解密时,解密数据有两种可能的结果:

  • 1)公开显示解密:验证者达到阈值协议时的标准方法是公开解密数据并将记录保存在区块链上。见下图:
    在这里插入图片描述

  • 2)私人解密:另一方面,如果用户希望维护其数据的机密性并且不将其公开显示在区块链上,他们可以选择该选项。网络中的validators达成阈值协议,并允许用户获取其数据而无需在链上泄露数据。这是通过使用用户而不是分布式网络拥有的一组不同的加密密钥将原始数据重新加密为新的加密版本来实现的。验证者使用用户的公钥来执行此操作,然后,将这些新加密的数据链下发送给用户,他们可以使用相应的私钥对其进行解密。通过这种方法,用户可以访问原始内容,而无需将其暴露在链上。见下图:
    在这里插入图片描述

7. 使用 Zama 工具的 Web3 应用程序

基于 Zama 对 EVM 兼容 FHE 协议的独特实现,其在白皮书中揭示了几个令人兴奋的应用程序。

  • 1)Confidential Tokens
    以太坊区块链上的 ERC-20 代币通常是公开存储的,允许任何人访问钱包中的代币余额和之前交易的详细信息等信息。从保密的角度来看,这并不理想,因为它将使人们能够根据钱包活动模式或可能连接钱包的任何 KYC 协议来推断一个人的真实身份特征。
    使用 fhEVM,用户可以创建具有加密余额功能的 ERC-20 代币,这样它们就不会出现在钱包中。对于观察你钱包历史记录详细信息的人来说,余额会显示为加密的乱码,但token会像平常一样发挥作用。为了实现这一点,开发人员必须用完全同态加密的版本替换典型的运算和整数。
    Confidential Tokens有几个有趣的应用。以加密货币支付员工工资的公司可以使用加密货币来防止同事看到彼此的工资。在 DeFi 世界中,可以设计新协议来实施借贷、借贷和流动性挖矿等典型活动,但允许这些操作秘密进行。

  • 2)盲拍
    盲拍是一种拍卖方式,人们私下提交出价,确保其他出价者和拍卖师都不知道任何出价的金额。一旦收集到所有出价,它们就会被揭晓,出价最高者获胜。盲拍是确定拍卖物品实际价值的宝贵工具,因为鼓励人们根据他们个人分配给物品的价值进行投标,而不是受到其他投标人的影响。
    对于许多开发商来说,实施链上盲拍一直是一个挑战。两种主要方法是使用 ZKP 和a two-step process,每种方法都有缺点。

    • ZKP 方法:开发者可以使用 ZKP 来保证投标数据的机密性,但这需要将投标数据存储在链外,从而引入了有关投标数据存储位置的新的机密性问题。
    • 两步法:在这种方法中,参与者在拍卖期间将其实际出价的加密哈希发送到智能合约。投标结束后,拍卖进入揭晓阶段,每个投标人都会披露其确切的投标金额。为了确保参与者不会更改其出价金额,智能合约会计算所显示出价的哈希值,该哈希值应与之前提交的哈希值相匹配。这种方法的局限性在于,恶意行为者可以故意发送出价,但在揭示阶段却没有认领它们。这给拍卖带来了挑战,因为无法确定无人认领的出价是否是从未有人认领的合法中标出价,或者是否是由意图扰乱拍卖的恶意行为者提交的。

    使用 fhEVM,可以使用智能合约公平地设计盲目拍卖(见2023年7月博客Onchain Blind Auctions Using Homomorphic Encryption and the fhEVM),从而无需依赖受信任的第三方来管理拍卖。通过使用机密代币,个人可以将加密的出价发送到盲拍智能合约。合约通过比较加密的出价来确定获胜者,并且只显示获胜的出价。由于智能合约仅以加密形式比较投标,因此未中标的投标的隐私保持不变。

  • 3)Confidential DAOs
    去中心化自治组织 (Decentralized Autonomous Organizations,DAO) 是由其选民共同治理的组织。DAO 使用智能合约使其成员能够透明、公平地就如何使用国库资金做出集体决策。为了做出决策和转移资金,成员通常会提交提案,选民可以投票批准或反对。如果提案获得足够的支持,则会获得批准,并且智能合约会自动从财政部转移资金。
    DAO 主要由两个主要智能合约组成:Governor 合约和 Token 合约。Governor合约处理与治理相关的活动,如创建和提交提案、对提案进行投票、计票以及在获得多数票时执行操作。Token合约监督与代币相关的活动,如记录代币持有者和管理操作,如在成员之间发行、销毁或转移代币。
    由于 DAO 主要依靠持有代币来决定成员的投票权,因此经常会出现权威偏见(所谓权威偏见,参看2023年7月23日博客 Minimizing biases during proposal execution),因为拥有大量代币的人通常在投票中具有更大的影响力。有时,成员会跟随大股东的意见进行投票,而不是根据他们的真实信仰进行投票。这可能会导致投票结果出现偏差,而不是达成真正的共识。
    使用 fhEVM(详情见2023年10月12日博客 Confidential DAO Voting Using Homomorphic Encryption),DAO 现在可以建立具有保密投票的治理系统,这有助于消除影响投票决策的偏见。这些“机密 DAO”可以维护代币所有权和投票等组件的秘密。将传统 DAO 转变为机密 DAO 的过程非常简单。它涉及用使用 FHE 加密值的机密副本替换传统的Governor和Token合约。
    图9

  • 4)Decentralized Identifiers 去中心化标识符(DID):
    从历史上看,网络上的人物依赖于中央集权机构来构建维护电子邮件地址或网站域名等标识符的系统。然而,DID 提供了另一种方法,个人可以在去中心化网络的支持下在网络上可靠地识别自己的身份。个人可以控制他们的标识符和数据,执行诸如更新标识符之类的操作,而无需依赖权威来执行此操作。
    过去,由于公共区块链的保密性限制,创建安全的 DID 一直具有挑战性。然而,借助 Zama 的工具,人们可以在区块链上以加密且安全的方式存储敏感信息,并获得由去中心化网络支持的在线标识符的所有权。
    如,医院可以加密敏感数据,如患者的 COVID-19 历史记录,并将其存储在区块链上的智能合约中。将来,如果像旅行社这样的授权方想要验证一个人过去是否感染过 COVID-19 的信息,而不透露有关患者的其他敏感信息,他们可以向智能合约发送查询。使用 FHE,合约可以确定(是/否)响应,而无需透露有关患者的其他识别信息。

8. Zama核心团队介绍

Zama 的联合创始人是 Rand Hindi 博士(首席执行官)和 Pascal Paillier 博士(首席技术官)。

  • Rand Hindi 博士
    Rand Hindi 是人工智能、区块链和医疗科技等深科技领域的企业家和投资者。14 岁时,他创立了 Planet Ultra,这是一家将巴黎年轻人联系起来的社交网络初创公司。他还创立了 Snips,这是一种支持隐私的解决方案,供公司将语音助手集成到他们的产品中。Rand拥有计算机科学学士学位和博士学位。伦敦大学学院生物信息学博士。

  • Pascal Paillier博士
    Pascal是一位企业家和研究员,在密码学领域拥有超过 25 年的经验。他撰写了数十篇研究论文,主题包括同态加密、嵌入式安全和匿名凭证。Pascal在 CryptoExperts 担任首席执行官十年,这是一家总部位于巴黎的初创公司,致力于推动密码学的发展。他拥有工程学位和博士学位。巴黎高科电信的密码学专业。

9. 展望

Zama 做了值得称赞的工作,为将 FHE 集成到 Web3 应用程序奠定了基础并建立了开源工具。已经看到其他有前途的 Web3 项目使用这些工具来构建他们的产品,Fhenix最近宣布自己是第一个完全同态加密驱动的区块链。随着 Zama 不断完善其工具,更多公司将集成这些框架来构建令人兴奋的新产品,从而显著增强 Web3 世界的隐私性。随着这些发展的展开,在线数据隐私的新标准将会建立。

参考资料

[1] 2023年10月13日博客Zama: A New Standard for Confidentiality on the Blockchain

FHE系列博客

  • 技术探秘:在RISC Zero中验证FHE——由隐藏到证明:FHE验证的ZK路径(1)
  • 基于[Discretized] Torus的全同态加密指引(1)
  • 基于[Discretized] Torus的全同态加密指引(2)
  • TFHE——基于[Discretized] Torus的全同态加密 代码解析
  • 技术探秘:在RISC Zero中验证FHE——RISC Zero应用的DevOps(2)
  • FHE简介
  • Zama TFHE-rs
  • Zama TFHE-rs白皮书(1)
  • Zama TFHE-rs白皮书(2)
  • ZK系统内隐私 VS. FHE系统内隐私
  • ZK vs FHE

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/281722.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java动态规划学习笔记

学习笔记目录,这里记录个大纲,详情点链接 背包问题 01背包问题综述 01背包问题(二维数组)https://blog.csdn.net/m0_73065928/article/details/136794406?spm1001.2014.3001.5501 01背包问题(滚动数组&#xff09…

LeetCode 热题 100 | 堆(一)

目录 1 什么是堆排序 1.1 什么是堆 1.2 如何构建堆 1.3 举例说明 2 215. 数组中的第 K 个最大元素 2.1 子树大根化 2.2 遍历所有子树 2.3 弹出栈顶元素 2.4 完整代码 菜鸟做题,语言是 C 1 什么是堆排序 1.1 什么是堆 堆的定义和分类&#xff…

ECharts5 概念篇1

图表容器及大小 初始化 在 HTML 中定义有宽度和高度的父容器&#xff08;推荐&#xff09; 通常来说&#xff0c;需要在 HTML 中先定义一个 <div> 节点&#xff0c;并且通过 CSS 使得该节点具有宽度和高度。初始化的时候&#xff0c;传入该节点&#xff0c;图表的大小默认…

海外客户获取难?海外云手机助力电商引流!

海外电商面临的市场竞争激烈&#xff0c;如何在海外市场获客成为了摆在许多卖家面前的难题。而在这个问题的解决方案中&#xff0c;海外云手机崭露头角&#xff0c;成为助力电商引流的新利器。 在当前市场中&#xff0c;云手机主要用于游戏挂机&#xff0c;但其潜力在海外电商领…

四、C语言中的数组:如何输入与输出二维数组(数组,完)

本章的学习内容如下 四、C语言中的数组&#xff1a;数组的创建与初始化四、C语言中的数组&#xff1a;数组的输入与元素个数C语言—第6次作业—十道代码题掌握一维数组四、C语言中的数组&#xff1a;二维数组 1.二维数组的输入与输出 当我们输入一维数组时需要一个循环来遍历…

AWS监控,AWS 性能监控工具

监控云部署的性能是 IT 环境正常运行的内在条件。AWS 云是一个架构良好的框架&#xff0c;管理员可以使用专用的AWS 性能监控工具增强服务的功能。执行AWS监视是为了跟踪在AWS环境中积极运行的应用程序工作负载和资源。AWS监视器跟踪各种AWS云指标&#xff0c;以帮助提高在其上…

刷题DAY30 | LeetCode 332-重新安排行程 51-N皇后 37-解数独

332 重新安排行程&#xff08;hard&#xff09; 给你一份航线列表 tickets &#xff0c;其中 tickets[i] [fromi, toi] 表示飞机出发和降落的机场地点。请你对该行程进行重新规划排序。 所有这些机票都属于一个从 JFK&#xff08;肯尼迪国际机场&#xff09;出发的先生&…

机器学习知识点复习 下(保研、复试、面试)百面机器学习笔记

机器学习知识点复习下 第八章、采样1.采样的作用 第九章、前向神经网络1.多层感知机与布尔函数2.神经网络中的激活函数3.多层感知机的反向传播算法4.神经网络训练技巧5.深度卷积神经网络6.深度残差网络 第十章、循环神经网络1.循环神经网络和卷积神经网络2.循环神经网络的梯度消…

【前端Vue】Vue3+Pinia小兔鲜电商项目第2篇:什么是pinia,1. 创建空Vue项目【附代码文档】

全套笔记资料代码移步&#xff1a; 前往gitee仓库查看 感兴趣的小伙伴可以自取哦&#xff0c;欢迎大家点赞转发~ 全套教程部分目录&#xff1a; 部分文件图片&#xff1a; 什么是pinia Pinia 是 Vue 的专属状态管理库&#xff0c;可以实现跨组件或页面共享状态&#xff0c;是…

数字电源浅析

电力电子技术是关于能量转换、调节、控制和管理等方面的学科,而数字电源则是电力电子技术的一种应用,是利用数字电路技术实现电源控制和管理的新型电源。 一、什么是数字电源 数字电源是一种数字控制的电源设备,可以通过数字控制芯片(DSP、MCU等)实现输出电压、电流、功…

TypeScript在学习(0)

1.什么是TypeScript? 答:TypeScript 是一种由微软开发的自由和开源的编程语言。它是 JavaScript 的一个超集&#xff0c;而且本质上向这个语言添加了可选的静态类型和基于类的面向对象编程。 个人浅见&#xff0c;我一直把ts简单理解成&#xff0c;其实就是javascript上多了…

插入排序+希尔排序

目录 插入排序&#xff1a; 希尔排序&#xff1a; 插入排序&#xff1a; 注意这里不要将插入排序和冒泡排序弄混&#xff1a; 插入排序是将数据不断放入前一个有序数列&#xff1a; // 插入排序 void InsertSort(int* a, int n) {for (int j 1; j < n; j){for (int i j;…

【嵌入式硬件】步进电机

1.步进电机简介 1.1步进电机基本原理 步进电机的英文是stepping motor。step的中文意思是行走、迈步。所以仅从字面上我们就可以得知,步进电机就是一步一步移动的电动机。说的官方一点儿,步进电机是一种将电脉冲信号转换成相应角位移或者线位移的电动机(直线电机)。下图为…

什么是物联网远程模块

在数字化和信息化的浪潮下&#xff0c;物联网技术正在以惊人的速度改变着我们的生活和生产方式。物联网远程模块&#xff0c;作为物联网技术的核心组件之一&#xff0c;正引领着这场变革。HiWoo Box就是这样一款出色的物联网远程模块&#xff0c;它通过支持远程透传、远程锁机、…

Flink GateWay、HiveServer2 和 hive on spark

Flink SQL Gateway简介 从官网的资料可以知道Flink SQL Gateway是一个服务&#xff0c;这个服务支持多个客户端并发的从远程提交任务。Flink SQL Gateway使任务的提交、元数据的查询、在线数据分析变得更简单。 Flink SQL Gateway的架构如下图&#xff0c;它由插件化的Endpoi…

AI原生安全 亚信安全首个“人工智能安全实用手册”开放阅览

不断涌现的AI技术新应用和大模型技术革新&#xff0c;让我们感叹从没有像今天这样&#xff0c;离人工智能的未来如此之近。 追逐AI原生&#xff1f;企业组织基于并利用大模型技术探索和开发AI应用的无限可能&#xff0c;迎接生产与业务模式的全面的革新。 我们更应关心AI安全原…

工控机丨丨工业电脑丨工控计算机丨工业一体机丨什么是工业一体机

工业一体机俗称工控机&#xff0c;是一种专门为工业应用而设计的计算机设备&#xff0c;主要应用于工厂、车间、仓库等工业场所。此外工控机还叫做工控计算机&#xff0c;通常采用工业级主板、工业级CPU、工业级硬盘、工业级内存和工业级电源等硬件组件&#xff0c;以确保其在高…

【Canvas与艺术】绘制一款色彩斑斓的调色盘状时钟表盘

【效果】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>调色盘时钟表</title><style type"text/css">…

Android Audio相关

AudioManager AudioService的Bp端&#xff0c;调用AudioManager>AudioService&#xff08;代码实现&#xff09; AudioService 继承自IAudioService.Stub&#xff0c;为Bn端 AudioSystem AudioService功能实现都依赖于AudioSystem&#xff0c;AudioService通过AudioSys…

大数据推给需要的人

1.编写一个程序&#xff0c;把变量n的初始值设置为1678&#xff0c;然后利用除法运算和取余运算把变量的每位数字都提出来并打印&#xff0c;输出结果为&#xff1a;n1678n的每位数字是1,6,7,8。 public static void main(String[]args) {int n1678;int a,b,c,d;an%10;bn/10%1…