02 BlockChain-- ETH

以太坊与比特币有什么不同?

以太坊立足比特币创新之上,于 2015 年启动,两者之间有一些显著不同。

从宏观的方面:

  • 比特币就仅仅是比特币;以太坊(Ethereum)包括以太币(Ether),以太币才是和比特币对等的存在。
  • 比特币使我们能够互通基本信息;以太坊则更进一步,不仅可以互通信息,用户还能编写任何常规程序或合约。可以创建和达成共识的合约种类没有限制。
  • 比特币只是一个支付网络,而以太坊更像是一个金融服务、游戏、社交网络和其他应用程序的市场。

从细节方面:

  • ETH 中存在账户这个概念;相区别,BTC只有 UTXO。
  • ETH 没有发行数量限制,但每次交易过程中,都会有一定数量的 ETH 被燃烧,这就是 Base Gas Fee 基础燃料费。特别是网络需求量高时,燃烧的以太币数量可以多于铸造的以太币数量,有效地抵消了以太币的发行。

ETH Account 账户

一个以太坊帐户是一个具有以太币 (ETH) 余额的实体,可以在以太坊上发送交易。
帐户可以由用户控制,也可以作为智能合约部署。

账户类型

以太坊有两种帐户类型:

  • Externally-owned account (EOA) 外部所有的帐户 – 由任何拥有私钥的人控制
    • 创建帐户是免费的
    • 可以发起交易
    • 外部所有的帐户之间只能进行以太币和代币交易
    • 由一对加密密钥组成:控制帐户活动的公钥和私钥
  • Contract account 合约帐户 – 部署到网络上的智能合约,由代码控制。
    • 创建合约存在成本,因为需要使用网络存储空间
    • 只能在收到交易时,作为回应,发送交易
    • 从外部帐户向合约帐户发起的交易能触发可执行多种操作的代码,例如转移代币甚至创建新合约
    • 合约帐户没有私钥。 相反,它们由智能合约代码逻辑控制

以太坊的账户模型

以太坊使用 账户模型(Account Model),在此模型中,所有的账户都存储在一个全局状态数据库中,称为 世界状态(World State)

以太坊使用一种被称为 Merkle Patricia trie (MPT) 默克尔压缩前缀树的数据结构来存储世界状态和账户存储状态。
这种树形结构结合了前缀树(Patricia Trie)和哈希树(Merkle Tree)的优点,

以太坊有两棵重要的树:

  • 世界状态树:
    • 每个账户的状态都存储在 Trie 中,账户地址作为键,账户状态作为值。
    • 这个状态树的根节点的哈希值称为 stateRoot,并存储在每个区块的区块头中。当交易执行导致账户状态发生变化时,这棵状态树会更新,新的状态树的根哈希也会变化,成为新区块头中的新的 stateRoot。
  • 账户存储树:每个智能合约账户的存储是另一个独立的 Trie,存储在 storageRoot 中。这个 Trie 负责存储智能合约的数据,例如映射、数组等复杂数据结构。

以太坊帐户有四个字段:

  • nonce :一个计数器,用来显示外部帐户发送的交易数量或合约帐户创建的合约数量。 每个帐户只能执行具有一个给定随机数的一笔交易,以防范重放攻击,重放攻击指多次广播和重复执行已签署的交易。
  • balance – 这个地址拥有的 Wei 数量。 Wei 是以太币的计数单位,每个 ETH 有 1e+18 个 Wei。
  • codeHash - 该哈希表示 EVM 上的帐户代码。 合约帐户具有编程的代码片段,可以执行不同的操作。 如果帐户收到消息调用,则执行此 EVM 代码。 与其他帐户字段不同,不能更改。 所有代码片段都被保存在状态数据库的相应哈希下,供后续检索。 此哈希值称 codeHash。 对于外部所有的帐户,codeHash 字段是空字符串的哈希。
  • storageRoot – 有时被称为存储哈希。
    在这里插入图片描述

迈向 ETH2

在这里插入图片描述
以太坊网络同时存在主链和信标链( ETH2 的一部分,现在作为共识层)。

随着以太坊网络的增长,原有架构已经难以支撑日益增长的交易量和复杂的应用场景。为了应对这些问题,以太坊社区启动了以太坊 2.0 项目,即 ETH2,旨在通过一系列的技术革新提升整个网络的性能。

在2020年底,以太坊推出了信标链,这是以太坊向权益证明(PoS) 转换的第一步。
这个新的链与原有的工作量证明(PoW)主链并行运行。在合并之前,信标链主要负责处理以太坊网络未来的 PoS 机制,并且逐步地将接管整个网络的共识机制。

“合并”是指以太坊的 PoW 共识机制向 PoS 机制的转变,这一过程发生在2022年9月。合并后,以太坊的共识层(即之前的信标链)和执行层(即之前的以太坊主网)相结合,形成了一个更加节能高效的区块链网络。

在原有的 PoW 区块链转变为 PoS 区块链的过程中,引入了一个名为“信标链”的新组件,它是 ETH2 的核心部分,负责协调整个网络并向 PoS 机制过渡、管理验证者的集合、分配奖励和惩罚,并协调未来的分片链(Shard Chains)。

信标链是一个由“空”区块组成的链。在以太坊上停止 PoW 并启动 PoS 时,需要先让信标链接受来自执行客户端的交易数据,将它们打包到区块,再将区块组织到一条运行 PoS 共识机制的区块链上。 与此同时,原有的以太坊客户端停止挖矿、区块传播及旧的共识逻辑,并将这一切转交给信标链。 这一事件称为合并。

在合并发生后,就不再有两个区块链。 相反,只有一个 PoS 以太坊,与 PoW 以太坊不同,现在每个节点需要两个不同的客户端
信标链现在是 PoS 以太坊的共识层,即一个处理区块消息和共识逻辑的共识客户端的点对点网络,而原始客户端形成执行层,负责传播消息和执行交易,以及管理 ETH 的状态。
这两层可以使用引擎 API 相互通信。

PoS 、信标链、质押、分片和 ETH2 的关系
迈向 ETH2 的目的是更低能耗更可持续,而 ETH2 最关键的特征就是 PoS。
为了将主链从 PoW 转向 PoS ,引入了信标链和质押,且在完成合并后,信标链就是系统的一部分。
为了进一步横向扩展 ETH ,分片概念得以产生。

ETH1、ETH2、ETH?
“以太坊 2”一词已弃用。 在将“以太坊 1”和“以太坊 2”合并为一条链之后,将不再需要区分两个不同 的以太坊网络,只有以太坊。
但是,若专门提到,以下两个词都特定的含义:

  • “以太坊 1”现在是处理交易和执行的“执行层”。
  • “以太坊 2”现在是处理权益证明共识的“共识层”。

Merge 合并

在这里插入图片描述

合并是指在 ETH 的原有执行层(从创世块开始就一直存在的主网)中加入其新的权益证明共识层,即信标链。
合并摒弃了消耗大量能源的挖矿,而是通过质押以太币来保护网络的安全。

信标链最初是与主网分开上线的。 以太坊主网(所有帐户、余额、智能合约和区块链状态)仍继续由 PoW 保护,与此同时,与之一起运行的信标链采用 PoS。 合并是指这两个系统最终整合在一起之时,且 PoW 被 PoS 永久取代。

信标链最开始并不处理主网上的交易。 而是通过对活跃的验证者及其帐户余额达成一致来就自己的状态达成共识。
经过广泛测试后,即合并后,信标链将成为所有网络数据的共识引擎,包括执行层交易和帐户余额。

合并代表正式转变成使用信标链作为区块生产引擎
同时,挖矿将不再生成区块,该任务交由 PoS 验证者,PoS 现在负责处理所有交易的有效性及创建区块。

功能

信标链是在以太坊质押人开始验证真实的以太坊区块之前管理和协调以太坊质押人网络的帐户账本的名称。 它不处理交易或智能合约交互,因为这些任务在执行层完成。 信标链负责处理区块和证明、运行分叉选择算法以及管理奖励和惩罚等。

  • 共识机制:信标链引入了 PoS 机制,允许用户通过质押一定数量的 ETH(通常为 32ETH)成为验证者,参与区块的创建和验证过程。这与 PoW 相比,减少了计算资源的需求,使得系统更加环保和高效。
  • 分片链管理:信标链不仅负责维护自身的状态,还管理着多个分片链(Shard Chains)。分片链是独立的数据块链,它们可以并行处理交易和智能合约,从而极大地提高了系统的吞吐量。

Beacon Chain 信标链

信标链是 PoS 区块链,它可以让验证者可以参与质押系统、替代矿工的角色而成为链的构建者。
也就是说信标链上管理着验证者的名单,以及分片验证者任务。

信标链由多个部分组成,诸如分片(shards)、质押验证者 (staking validators)、证明 (attestations)、委员会 (committees)、检验点 (checkpoints) 和最终确定性 (finality)。

一个简单的例子

怎么样才可以成为信标链的验证者呢?

首先你需要向当前以太坊主链上的一个合约发送押金( 32 个以太币),然后经过一系列的审核检查之后,你就会收到一张电子收据(以太坊智能合约中的事件),从此你就拥有了验证资格,成为了验证者。
成为验证者之后,信标链就会给你安排任务了。

它会将你随机分配到一到两个分片中去做验证。我们知道,在 PoW 机制下,也就是我们现在的以太坊主链上,矿工通过挖矿生成下一个区块,但是在 PoS 机制下,不存在挖矿,下一个区块的产生是由验证者们选择出来的。这个选择具有随机性,不是一个验证者所能掌控的,这也体现了去中心化的特点。

假如你很“活跃”,就可能被选中成为区块提议者(block proposer)。
假如你不是很“活跃”,信标链将可能将你指定为验证者 (validators),并分配到某一分片,此后你需要同该分片的其它验证者一起从候选区块中选择出新的区块。

然后该分片的区块提议者就会为这个分片收集交易,并且将这些交易纳入到刚刚验证者们选出的区块中去,虽然由于你不是区块的提议者,也就没有将交易纳入新区块的权力,但是作为验证者的你这个时候可以验证这个过程中区块提议者是否行为妥当。

如果你表现良好,做了身为验证者应该做的事就会得到奖励,相反,如果你违反规则就受到惩罚,惩罚就是从你抵押的 32 ETH 中扣除一部分,当抵押金低于 16 个以太币之后,信标链就会将你从验证者列表中移除。

如果有一天你不想当验证者了,你抵押的以太币加上你得到的奖励以及减去你因惩罚而扣除的以太币将不会回到你之前的以太坊主链中,而是会被存进某一个分片链中。

除了管理验证者之外,信标链还需要存储一些认证( Attestation )。

我们知道当前的以太坊区块链上存储了我们平时的那些资产转移等交易的数据信息,但是信标链不同于当前的以太坊主链,它存储的是一系列经过哈希运算的字符串。

在信标链中,验证者验证并签名交易,比如一笔转账交易,然后经过哈希变成一段字符串,将这个字符串存到信标链中,此时这个字符串就代表了一笔交易的数据,这样做的好处就是,你不用去深入探究这笔交易到底在哪个分片中发生。

分片中的状态一旦发生改变(比如某个账户余额发生了丁点改变),验证者都会把这个变化汇报给信标链。因此,信标链实时跟踪者分片的变化,也建立起了个分片间的联系与通信。

Staking 质押

质押是指存入 32 个以太币以激活验证者( validator)的行为。
质押者每质押 32 个以太币,就可激活一个验证者,即,一个质押者可激活多个验证者。

作为验证者,你将负责存储数据,处理交易并向区块链添加新的区块。这将保证以太坊的安全,并在此过程中为你赚取新以太币。

质押的目的和以前的挖矿相似,都是为了保证区块链正常运行。
但又在很多方面不同。 挖矿的前期支出庞大,需要投入强大的硬件和消耗大量能源,从而产生规模经济并促进集中化。
挖矿也没有提出任何将资产锁定作为抵押品的要求,这限制了被攻击后协议惩罚不良行为者的能力。

ETH2 中存在着多种形式的质押
  • 独立质押(Solo Staking)/(Home Staking)
    概述:用户自己运行一个验证者节点,直接参与区块提议和验证。
    要求:必须持有至少32 ETH,具备技术能力来设置和维护验证节点,还需要持续运行高可用的节点。
    优点:完全去中心化,用户自己控制资金,并且可以获得完整的质押奖励。
    缺点:技术门槛高,需承担运营节点的责任,若节点下线或表现不佳,可能会被罚款或削减质押的 ETH。

  • 质押即服务(Staking as a Service)
    概述:以太坊协议本身并不支持质押委托, 如果你有 32 个以太币需要质押,但是没有合适的硬件设备,那么质押即服务可以使你在使用运营商硬件设施的同时获得区块奖励。
    优点:对于那些拥有 32 个以太币但是不能解决运行节点的技术问题的人来说,这是个很好的选择
    缺点: 出于安全原因,用于转移或提取资金的密钥是单独分开的,即每个帐户都由 BLS 签名密钥和 BLS 提款密钥组成。用户会将签名密钥授权给运营商使用。

  • 池化质押/联合质押(Pooled Staking)
    概述:用户可以将少量 ETH 投入质押池,与其他用户共同筹集 32 ETH 来运行一个验证者节点。
    优点:适合小额用户,需达到 32 ETH 的最低限额,通过参与池化质押可以降低技术门槛和资金门槛。
    缺点:质押奖励需要与其他用户共享,管理资金的质押池也可能带来一定的信任风险。

  • 流动性质押(Liquid Staking)
    概述:流动性质押由联合质押而引出。在参与联合质押时,用户可能想在质押过程尚未结束时退出质押(当然还可能有其它原因)。因此,在用户参与联合质押的开始,平台就发给用户代表质押 ETH 的代币(例如 Lido 的 stETH),这些代币可以在二级市场上交易或参与 DeFi 活动。。
    优点:用户可以在质押期间保持资产的流动性,质押代币可以在 DeFi 生态中使用或交易。
    缺点:存在平台风险,流动性质押可能会涉及智能合约的漏洞或平台治理问题。

  • 交易所质押(Exchange Staking)/中心化质押(Centralized exchanges)
    概述:在加密货币交易所(如币安、Coinbase 等)直接质押ETH,用户只需将资金存入交易所账户并参与质押。
    优点:通常没有最低金额要求,用户只需在交易所拥有 ETH 即可,操作最为简单,用户无需管理私钥和节点,质押收益会自动分发。
    缺点:资金完全托管在交易所,存在一定的集中化风险,可能会收取手续费。

PoS

  • 简单来说,PoS意味着:
    • 某个人向存款合约中质押 32 个以太币后,其可化身为验证节点,若顺利完成任务,其最终可以取回 32 个 ETH,以及工作的奖励。但是,如果被证实发生不诚实活动,部分甚至全部质押金额将被销毁。
    • 在每个时隙(12 秒的时间间隔)中,会随机选择一个验证者作为区块提议者。 区块提议者将交易打包为一个区块后执行,然后确定一个新的“状态”。 区块提议者将这些信息包装到一个区块中并传送给其他验证者以供验证。
    • 其他获悉新区块的验证者再次执行区块中包含的交易,确定他们同意对全局状态提出的修改。 假设该区块是有效的,验证者就将该区块添加进各自的数据库。
    • 如果验证者获悉在同一时隙内有两个冲突区块,他们会使用自己的分叉选择算法选择获得最多质押以太币支持的那一个区块。

区块时间

区块时间是指两个区块诞生的时间间隔。

在基于 PoW 的 BTC 中,区块生成时间依赖于挖矿难度调整,是随机的。

在以太坊中,时间划分为每 12 秒一个单位,称为“时隙”。
在每个时隙内,选择一个单独的验证者提议区块。 假设所有验证者都在线且完全正常运行,则每个时隙内都会有一个区块产生,意味着区块时间是 12 秒。 但是,偶尔验证者在被要求提议区块时不在线,导致有时候一些时隙是空的。

即,在 ETH 中,每 12 秒(一个时隙)要么产生一个区块(极大概率),要么不产生,这个时间是确定的。

扩容

二层网络

分片

在计算机科学中,主要有两种扩容方式: A.纵向扩容:即增强节点能力 B.横向扩容:即增加节点数量

为了保证去中心化,区块链需要采取横向扩容方式。 ETH2 其中一个目标就是让节点可以在消费级硬件中运行。
总体来说,ETH2 采用的分片机制指的就是对数据库进行横向分割。

每条分片链都拥有一个节点子集,在该链上进行工作。虚拟矿工和验证者被分配到不同的分片中,并且只处理和验证自己所在分片链上的交易。

以太坊分片上的节点子集是动态的,按照区块顺序处理分片。

区块链实行分片机制的主要挑战在于如何确保分片安全性。
由于验证者分散在不同的分片中,有的节点可能会恶意控制某个分片。

解决该问题的关键在于:

随机分配 (shuffling) 验证者,每个分片区块都有一个委员会,其中的验证者都经由随机挑选。这种做法的目的是,经数学计算,如果攻击者控制的验证者少于总数的三分之一,其想要攻击单个分片是难以实现的。

此外,错误性证明(fraud proofs)、数据托管证明 (custody proofs) 和数据可用性检查 (data availability checks) 都是确保安全的重要因素,不过需要单独的讲解才能说清楚。

Eth2 目前的计划是启用64个分片。尽管分片和信标链是独立运作的,我们还是会针对整个系统的关键部分进行阐述。

PoS 的优势是,在任何给定时间都有全部已批准的区块生产者的记录,每个区块生产者都质押了以太币。 这个记录不但为分开治理奠定了基础,还可靠地划分了具体的网络责任。

这种责任与 PoW 形成对比,在 PoW 中,矿工对网络没有义务,可以立即停止挖矿并永久关闭其节点而不会受到任何影响。 而且,也没有已知区块提议者的记录,并且没有可靠的方法安全地划分网络责任。

EVM 以太坊虚拟机

以太坊虚拟机是一个全局虚拟计算机,以太坊网络中的每个参与者都会存储并一致同意其状态。 任何参与者都可以请求在以太坊虚拟机上执行任意代码;代码执行会改变以太坊虚拟机的状态。

存储以太坊虚拟机状态的实体计算机就是 Node 节点。

Web3

  • Web 1.0 主要是由公司拥有的静态网站,用户之间的互动几乎为零 - 个人很少创造内容,导致它被称为只读网络。
  • Web 2.0 时期于 2004 年开启。 网络不再是只读的,它演变成读写网络。 互联网公司除了向用户提供内容外,还开始提供平台来共享用户生产的内容,并参与用户间的交互。
  • Web3 的核心是通过区块链、加密货币和非同质化代币将权力以所有权的形式归还用户。Web1 是只读的,Web2 能读/能写,未来的 Web3 能读/能写/能拥有。

SmartContract 智能合约

简单来说,你可以把智能合约想象成一种自动售货机:通过特定参数调用脚本后,如果满足某些特定条件,就会执行一些操作或计算。 例如,如果调用者将以太币发送给特定的接收者,简单的卖方智能合约就可以创建和分配数字资产所有权。

任何开发者都可以创建智能合约,并使用区块链作为其数据层,将其公开给网络,但要向网络支付以太币。 然后,任何用户都可以调用智能合约来执行其代码,并再次向网络支付费用。

Dapp 去中心化应用程序

去中心化应用程序 (dapp) 是在去中心化网络上构建的应用程序。

一般来说,一个网页应用 = 后端 + 前端。

一个**Dapp = 智能合约 + 前端用户界面 **,即智能合约就是 Dapp 的后端代码。

优点

  • 零停机时间:一旦将某 dapp 的智能合约部署到区块链上,整个网络都能为那些希望与合约互动的客户提供服务。 因此,恶意参与者无法针对单个
    dapp 发起 DoS 攻击。

缺点

  • Dapp 更难维护,因为发布到区块链的代码和数据更难修改,即使在旧版本中发现了漏洞或安全风险。、
  • 巨大的性能开销,而且难以扩展更多性能。 为了达到以太坊所追求的安全、完整、透明和可靠的水平,每个节点都会运行和存储每一笔交易。 除此之外,达成权益证明共识也需要时间。
  • 网络拥塞:至少在当前模型中,如果一个 dapp 使用了太多的计算资源,整个网络都会承担影响。 目前,该网络每秒只能处理约 10-15 笔交易;如果交易发送的速度超过这个速度,未确认的交易池会迅速膨胀。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python可迭代对象(2)

目录 3。字典 字典的构造 字典的添加和修改 字典推导式的使用 以上全部代码编译结果展示 字典复习 4。集合(set) 集合的创建 集合的运算 集合的添加和删除元素 以上全部代码的编译结果 序列解包(Sequence unpacking) 3。字典 字典的构造 #字…

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】

【第十六章:Sentosa_DSML社区版-机器学习之生存分析】 16.1 加速失效时间回归 1.算子介绍 加速失效时间回归模型Accelerated failure time (AFT)是一个监督型参数化的回归模型,它可以处理删失数据。它描述了一个生存时间的对数模型,所以它通…

Pygame中Sprite实现逃亡游戏1

在《Pygame中Sprite类实现多帧动画》系列中,通过pygame中的sprite类(精灵类)实现了多帧动画。在该动画的基础上,可以来实现一个逃亡游戏,如图1所示。 图1 逃亡游戏效果 从图1中可以看出,玩家被飞龙追赶&am…

【树莓派】python3程序获取CPU和GPU温度

前言代码以及展示总结 前言 来来来,先放参考文献 如何检查树莓派的温度⇨这个是通过两种指令获取温度,和我之前设置的状态栏显示有点大同小异。 读取树莓派4B处理器(CPU)的实时温度⇨这个也是指令 下面两个是代码了 树莓派实现温度监控并控制风扇散热 获…

powerBi -L4-分组求和

有如下的表格&#xff1a;我们想统计 不同商品的销售次数&#xff0c;根据商品ID进行分类&#xff0c;统计不同ID出现的次数 1.新建列&#xff1a; 2.输入如下的公式 分组统计序列 COUNTROWS(FILTER(数据源,[商品类别]EARLIER(数据源[商品类别])&&[索引]<EARLIE…

3.2 USART 通用同步/异步收发器

文章目录 什么是USARTUSART框图 stm32的Usart串口收发配置初始化发送接收 重定向的几种方法串口发送数据包 什么是USART USART&#xff08;Universal Synchronous/Asynchronous Receiver/Transmitter&#xff09;通用同步/异步收发器USART是STM32内部集成的硬件外设&#xff0…

李沐 模型选择、过拟合和欠拟合相关代码【动手学深度学习v2】

多项式回归 生成数据集 给定x,我们将使用以下三阶多项式来生成训练和测试数据的标签: y=5+1.2x−3.4+5.6+ϵ where ϵ∼( ). 噪声项ϵ服从均值为0且标准差为0.1的正态分布。 在优化

深入了解通用漏洞评分系统(CVSS)

1. 前言 在当今数字化的时代&#xff0c;网络安全问题日益凸显&#xff0c;漏洞的发现和评估成为保障系统安全的关键环节。而通用漏洞评分系统&#xff08;CVSS&#xff09;作为一种广泛应用的漏洞评估标准&#xff0c;对于准确衡量漏洞的严重程度起着至关重要的作用。本文将带…

视频无损压缩工具+预览视频生成工具

视频无损压缩工具 功能与作用 &#xff1a;视频无损压缩工具是一种能够减少视频文件大小&#xff0c;但同时保持视频质量的工具。它通过先进的编码技术和算法&#xff0c;有效降低视频文件的存储空间&#xff0c;同时保证视频的清晰度和观感。这对于需要分享或存储大量视频内容…

Thinkphp5x远程命令执⾏及getshell

启动环境查看端口 ? sindex/think\app/invokefunction&functioncall_user_func_array&vars[0]system&vars[1] []id ? s/Index/\think\app/invokefunction&functioncall_user_func_array&vars[0]phpinfo&vars[ 1][]-1 ? sindex/think\app/invokef…

稳定为恒定功率负载供电的 DC/DC 转换器

恒定功率负载 (CPL) 存在于电动汽车、电信设备、电力电子设备等各种应用中。这些 CPL 是无论施加的电压或电流如何变化都保持恒定功耗的电气负载。与呈现恒定电阻的电阻负载不同&#xff0c;CPL 具有随电压或电流变化而变化的动态阻抗&#xff0c;即&#xff0c;当负载两端的电…

RabbitMQ 高级特性——重试机制

文章目录 前言重试机制配置文件设置生命交换机、队列和绑定关系生产者发送消息消费消息 前言 前面我们学习了 RabbitMQ 保证消息传递可靠性的机制——消息确认、持久化和发送发确认&#xff0c;那么对于消息确认和发送方确认&#xff0c;如果接收方没有收到消息&#xff0c;那…

照片EXIF数据统计与可视化

拍的照片越来越多&#xff0c;想要了解一下日常拍摄的习惯&#xff0c;便于后面换镜头、调整参数等操作&#xff0c;所以写了这个脚本来统计照片的EXIF数据。该脚本用于统计指定文件夹下所有JPG图片的EXIF数据&#xff0c;包括快门速度、ISO、焦距、光圈和拍摄时间&#xff0c;…

一张示意图看懂深度嵌入聚类DEC

深度嵌入聚类算法的架构。 步骤 1&#xff1a;根据输入数据集&#xff0c;训练自编码器将原始变量矩阵映射到潜在特征。 步骤 2&#xff1a;对潜在特征进行 K 均值聚类。 步骤 3-6&#xff1a;然后&#xff0c;为每个样本计算六个软标签&#xff0c;并估计目标分布&#xff…

小米机型更改参数与工程固件的关联 实例解析工程固件修改参数的步骤解析

工程固件写入后手机机型的端口默认是全开。包括usb调试以及基带端口diag 。而且工程固件基带默认是没有加密的。改写无限制。这也就是很多技术使用工程固件来写入机型的目的。今天简单来解析下工程固件修改参数的常规步骤以及一些常规知识。 通过博文了解: 1💝💝💝---…

基于vue框架的传染病人管理系统3w776(程序+源码+数据库+调试部署+开发环境)系统界面在最后面。

系统程序文件列表 项目功能&#xff1a;公告信息,工作人员,传染病人,上报记录,入住信息,需求订单,隔离结束记录 开题报告内容 基于Vue框架的传染病人管理系统开题报告 一、研究背景与意义 研究背景 在全球化的今天&#xff0c;人口流动日益频繁&#xff0c;传染病的传播速…

报文在VXLAN网络中是怎么转发的?这么简单居然有人不知道

号主&#xff1a;老杨丨11年资深网络工程师&#xff0c;更多网工提升干货&#xff0c;请关注公众号&#xff1a;网络工程师俱乐部 你们好&#xff0c;我的网工朋友 不知道大家有没有想过这个问题&#xff1a;VXLAN网络中的报文是如何转发的&#xff1f; 在基本的二三层转发中…

在ComfyUI中,Cross-Attention优化方案应该选哪个?

&#x1f431;‍&#x1f409;背景 在comfyui中&#xff0c;如果你使用了秋叶的启动器&#xff0c;会在高级选项中看到这样一行选项&#xff1a;Cross-Attention优化方案&#xff0c;右边有个下拉框&#xff0c;可以选择的选项有4个&#xff0c;如下图&#xff1a; 那么&#…

vscode缩进 和自动格式化

如下图&#xff0c;缩进太大了。 检查2个地方 prettierrc.cjs文件。此处决定缩进几个tab vscode 的设置。 保存的时候 格式化。

计算机毕业设计 基于Python内蒙古旅游景点数据分析系统 Django+Vue 前后端分离 附源码 讲解 文档

&#x1f34a;作者&#xff1a;计算机编程-吉哥 &#x1f34a;简介&#xff1a;专业从事JavaWeb程序开发&#xff0c;微信小程序开发&#xff0c;定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事&#xff0c;生活就是快乐的。 &#x1f34a;心愿&#xff1a;点…