区块链共识机制深度揭秘:从PoW到PoS,谁能主宰未来?
区块链的技术背后,最大的挑战之一就是如何让多个分布在全球各地的节点在没有中心化管理者的情况下达成一致,确保数据的一致性和安全性。这一切都依赖于区块链的核心——共识机制。共识机制不仅决定了区块链的安全性、效率和去中心化程度,还对整个数字货币的运行和应用产生深远影响。
在这篇博客中,我们将深入剖析区块链的主流共识机制,带你了解它们的工作原理、优缺点以及实际应用,帮助你了解目前主流的共识机制。
文章目录
- 1. PoW(工作量证明)——谁花时间做了最多的工作,谁就赢
- 类比:
- 详细解释:
- 为什么需要计算?
- 优缺点:
- 典型应用:
- 2. PoS(权益证明)——拥有更多资源的人更有话语权
- 类比:
- 详细解释:
- 为什么用代币来决定?
- 优缺点:
- 典型应用:
- 3. DPoS(委托权益证明)——大家选举代表来决定
- 类比:
- 详细解释:
- 为什么要选举代表?
- 优缺点:
- 典型应用:
- 4. BFT(拜占庭容错)——即使有人说谎,我们依然能找到真相
- 类比:
- 详细解释:
- 为什么需要容错?
- 优缺点:
- 典型应用:
- 5. PoA(权威证明)——由可信的人来管理
- 类比:
- 详细解释:
- 为什么使用信誉?
- 优缺点:
- 典型应用:
- 总结
1. PoW(工作量证明)——谁花时间做了最多的工作,谁就赢
类比:
想象你和你的朋友在草坪上比赛,谁能最快通过计算摆放正确的石子,谁就能赢得比赛。而且,大家必须展示自己做了多少工作,证明自己不作弊。
详细解释:
PoW(Proof of Work)是最早的区块链共识机制,它通过计算难题来验证交易。在PoW中,矿工需要通过解决复杂的数学难题(例如哈希函数)来“工作”,谁先解决问题,谁就可以在区块链上添加新区块,并获得一定的奖励。这一过程不仅确保了数据的安全性,还通过“工作量”保证了区块链的去中心化。
为什么需要计算?
这些数学题需要大量的计算力来解决,而哈希函数的不可逆性保证了数据的安全性。一旦一个区块被加到区块链上,任何人都无法更改它,除非他们能同时控制超过50%的网络算力(这几乎是不可能的)。
优缺点:
-
优点:
- 安全性高:攻击者很难通过控制部分算力篡改区块链数据。
- 去中心化:任何人都有机会参与矿工的竞争。
-
缺点:
- 能耗高:大量的计算需要消耗大量电力。
- 处理速度慢:随着网络的增长,解决问题的难度也在增加,导致交易确认速度较慢。
典型应用:
- 比特币(BTC)
- 莱特币(LTC)
2. PoS(权益证明)——拥有更多资源的人更有话语权
类比:
在一个小村庄里,如果你拥有更多的土地,大家会更愿意让你成为管理者。因为你有更多的资源,你的决策对村庄的影响更大。
详细解释:
PoS(Proof of Stake)机制通过代币的持有量来决定谁能参与新区块的生产。代币持有者的数量和持有时间将直接影响他们被选中验证交易和生成新区块的概率。简而言之,持有更多代币的人拥有更高的概率成为区块生产者。
为什么用代币来决定?
PoS通过将“工作量”转化为“代币”来实现共识,这样就不再需要大量的计算资源。代币持有者有动力维持区块链的健康,因为他们通过持有代币间接证明了自己对网络的贡献。
优缺点:
-
优点:
- 节能:不需要大量的计算力和电力。
- 交易处理速度快:相比PoW,PoS的区块确认速度更快,网络吞吐量更大。
-
缺点:
- 富者更富:大户拥有更多代币,可能进一步集中控制网络。
- 安全性问题:如果攻击者拥有足够多的代币,他们可能会发起攻击。
典型应用:
- 以太坊2.0(ETH 2.0)
- Cardano(ADA)
- Tezos(XTZ)
3. DPoS(委托权益证明)——大家选举代表来决定
类比:
假设你和其他村民一起选举一个代表来管理村里的事务,你们每个人都可以投票选举信任的人,而这些代表将负责做决策。
详细解释:
DPoS(Delegated Proof of Stake)是PoS的一种变体,通过代币持有者选举出代表节点来参与新区块的生成。节点通过投票选举一些“代表”来负责验证和生产新区块。这些代表节点通过投票权的授权获得区块生产的权利。
为什么要选举代表?
DPoS的设计是为了提高区块链的效率和吞吐量。通过选举一定数量的代表节点,网络不需要所有节点都参与验证,减少了资源消耗,同时提高了交易处理速度。
优缺点:
-
优点:
- 高效:区块链能处理更多的交易,网络吞吐量更大。
- 去中心化:虽然是代表节点,但节点依然由代币持有者选举产生。
-
缺点:
- 选举风险:如果大户控制了大量的代币,他们可能操控选举结果。
- 代表集中化:代表节点的数量有限,可能导致权力集中。
典型应用:
- EOS
- TRON
4. BFT(拜占庭容错)——即使有人说谎,我们依然能找到真相
类比:
你和一群朋友一起讨论一个问题,虽然其中有些人可能撒谎或误导他人,但其他人依然能通过与可信的人交流,得出正确的结论。
详细解释:
BFT(Byzantine Fault Tolerance)是一种容忍部分节点恶意行为的共识机制。即使网络中有部分节点(通常为三分之一以内)作恶,BFT算法仍能确保大多数节点达成一致,并生成正确的区块。
为什么需要容错?
BFT设计的目的是解决“拜占庭将军问题”,即在一个有部分恶意节点的网络中,如何保证系统的正确性和一致性。通过多轮投票,BFT保证了即使存在恶意节点,系统仍能保持一致。
优缺点:
-
优点:
- 高容错性:能够容忍一定比例的恶意节点。
- 快速达成共识:与PoW相比,BFT可以更迅速地达成一致,适合高频交易的应用场景。
-
缺点:
- 扩展性差:随着节点数量增加,BFT的通信成本和复杂度也会增加。
- 中心化风险:较少的节点参与共识,可能导致网络被少数人控制。
典型应用:
- Hyperledger Fabric
- Tendermint
5. PoA(权威证明)——由可信的人来管理
类比:
在一个企业中,管理者根据自己的经验和信誉来做决策。大家相信管理者是正确的,因为他们有责任和能力保证事务顺利进行。
详细解释:
PoA(Proof of Authority)机制是通过验证节点的身份和信誉来生成新区块。与其他机制不同,PoA不是通过工作量或代币的数量来选择区块生产者,而是通过节点的身份认证和信誉来决定谁可以生产新区块。这种机制通常适用于私有链或联盟链,节点通常是知名机构或企业。
为什么使用信誉?
在PoA中,节点的信誉至关重要。因为只有信任的节点才能参与区块生产。通过身份认证,PoA确保了网络中的每个节点都可以被验证和信任。
优缺点:
-
优点:
- 高效且节能:与PoW相比,PoA不需要大量的计算和电力,交易确认速度快。
- 去中心化程度较高:适用于联盟链或私有链环境,能够确保高度可信的网络。
-
缺点:
- 中心化风险:由于只允许少数受信任的节点参与区块生产,可能导致权力过度集中。
- 信任问题:如果有恶意节点伪装成可信节点,可能导致系统受到攻击。
典型应用:
- VeChain
- POA Network
总结
区块链的共识机制是去中心化网络成功的核心所在。每种共识机制(如PoW、PoS、DPoS、BFT、PoA等)都有自己的特点、优缺点和应用场景。随着区块链技术的发展,我们看到越来越多的创新机制应运而生。通过对这些机制的理解和分析,你可以更加清晰地了解它们如何共同推动区块链的进步。
如果你对共识机制有任何问题,欢迎在评论区留言讨论,我们一起探索区块链的未来!
相关文章:
区块链共识机制深度揭秘:从PoW到PoS,谁能主宰未来?
区块链的技术背后,最大的挑战之一就是如何让多个分布在全球各地的节点在没有中心化管理者的情况下达成一致,确保数据的一致性和安全性。这一切都依赖于区块链的核心——共识机制。共识机制不仅决定了区块链的安全性、效率和去中心化程度,还对…...
SQL Server 新建 用户 登录失败。 (Microsoft SQL Server,错误: 18456)
新建用户后用SQLserver shen身份验证一直提示用户登录用户 登录失败。 (Microsoft SQL Server,错误: 18456)。 问题: 新建标题: 连接到服务器 无法连接到 DESKTOP-GKBXLEE。 其他信息: 用户 ‘’ 登录失败。 (Microsoft SQL Server,错误: 18456) 解…...
AW36518芯片手册解读(3)
接前一篇文章:AW36518芯片手册解读(2) 二、详述 3. 功能描述 (1)上电复位 当电源电压VIN降至预定义电压VPOR(典型值为2.0V)以下时,该设备会产生复位信号以执行上电复位操作&#x…...
有没有免费提取音频的软件?音频编辑软件介绍!
出于工作和生活娱乐等原因,有时候我们需要把音频单独提取出来(比如歌曲伴奏、人声清唱等、乐器独奏等)。要提取音频必须借助音频处理软件,那么有没有免费提取音频的软件呢?下面我们将为大家介绍几款免费软件࿰…...
一次医院RIS系统的升级
2020-03-11 目录 数据库升级... 1 数据结构升级... 1 系统配置... 2 WEB服务器准备... 3 启动ASP.NET State Service服务... 3 检查IIS. 4 发布站点... 4 添加应用程序池... 4 发布网站... 5 处理打印模板... 6 web.config的配置... 6 处理图片文件目录... 6 修改W…...
clickhouse测试报告
一、背景 针对当前实施的项目,面临着两个主要挑战:一是需要存储更详细的原始数据和中间数据,二是现有基于MySQL的数据存储解决方案在数据量增长时性能受限,特别是在进行跨年历史数据的即时分析时。为了解决这些问题…...
Elasticsearch安装和数据迁移
Elasticsearch安装和数据迁移 Elasticsearch安装 下载并解压Elasticsearch 首先下载Elasticsearch的tar.gz文件,并将其解压: wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.8.2-linux-x86_64.tar.gz tar -xzf elastics…...
K8s证书过期
part of the existing bootstrap client certificate is expired: 2023-11-27 12:44:12 0000 UTC 查看运行日志: journalctl -xefu kubelet 重新生成证书: #重新生成证书 kubeadm alpha certs renew all #备份旧的配置文件 mv /etc/kubernetes/*.conf…...
JSONException:java.lang.String cannot be converted to JSONObject异常的解决方法
在用org.json.JSONObject解析从网络获取的json数据时,遇到JSONException:java.lang.String cannot be converted to JSONObject,打印字符串,查看json字符串没有问题,研究了好长时间,终于找到问题,造成问题的…...
[源码解析] 模型并行分布式训练Megatron (2) --- 整体架构
link [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 目录 [源码解析] 模型并行分布式训练Megatron (2) --- 整体架构 0x00 摘要0x01 启动 1.1 分布式启动1.2 构造基础 1.2.1 获取模型1.2.2 获取数据集1.2.3 步进函数 1.2.3.1 广播数据0x02 Pretrain0x03 初始化 3.1 …...
kubeadm搭建k8s集群
前置环境: 准备三台虚拟机 192.168.1.104(用来做k8s的mater节点) 192.168.1.105(节点node2) 192.168.1.109(节点node3) 关闭防火墙 systemctl stop firewalld systemctl disable firewalld安装…...
家用无线路由器的 2.4GHz 和 5GHz
家中的无线路由器 WiFi 名称有两个,一个后面带有 “5G” 的标记,这让人产生疑问:“连接带‘5G’的 WiFi 是不是速度更快?” 实际上,这里的 “5G” 并不是移动通信中的 5G 网络,而是指路由器的工作频率为 5G…...
#渗透测试#漏洞挖掘#红蓝攻防#漏洞挖掘#未授权漏洞-Es未授权漏洞
免责声明 本教程仅为合法的教学目的而准备,严禁用于任何形式的违法犯罪活动及其他商业行为,在使用本教程前,您应确保该行为符合当地的法律法规,继续阅读即表示您需自行承担所有操作的后果,如有异议,请立即停…...
Windows 使用 非安装版MySQL 8
1.下载MySQL 8 https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.40-winx64.zip 2.创建my.ini 下载解压后,发现根目录没有my.ini文件,需手动创建 my.ini # For advice on how to change settings please see # http://dev.mysql.com/doc/refma…...
nginx Rewrite 相关功能
一、Nginx Rewrite 概述 定义 Nginx 的 Rewrite 模块允许对请求的 URI 进行重写操作。它可以基于一定的规则修改请求的 URL 路径,然后将请求定向到新的 URL 地址,这在很多场景下都非常有用,比如实现 URL 美化、网站重构后的 URL 跳转等。主要…...
2024年AI相关的论文写作经验(附实践资料下载)
在撰写AI相关的论文时,以下是一些实用的经验和技巧: 明确写作目标:在开始写作之前,明确你的论文类型(期刊论文、毕业论文等)和目标,这将影响你的写作方式和工具选择。 AI辅助文献检索ÿ…...
List详解
List详解 在Java中,List是一个接口,它继承自Collection接口。List接口为数据的有序集合提供了操作接口,其中可以包含重复的元素。这个接口的实现类以特定的方式存储元素,允许元素根据索引进行访问,同时还支持通过迭代…...
Flutter实现可拖拽操作Draggable
文章目录 1. Draggable 控件的构造函数主要参数: 2. Draggable 的工作原理3. 常见用法示例 1:基本的拖拽控件解释:示例 2:与 DragTarget 配合使用解释: 4. Draggable 的回调详解5. 总结 Draggable 是 Flutter 中一个用…...
【QSS样式表 - ⑥】:QPushButton控件样式
文章目录 QPushBUtton控件样式QSS示例 QPushBUtton控件样式 常用子控件 常用伪状态 QSS示例 代码: QPushButton {background-color: #99B5D1;color: white;font-weigth: bold;border-radius: 20px; }QPushButton:hover {background-color: red; }QPushButton:p…...
DPO(Direct Preference Optimization)算法解释:中英双语
中文版 DPO paper: https://arxiv.org/pdf/2305.18290 DPO 算法详解:从理论到实现 1. 什么是 DPO? DPO(Direct Preference Optimization)是一种直接基于人类偏好进行优化的算法,旨在解决从人类偏好数据中训练出表现…...
springboot495基于java的物资综合管理系统的设计与实现(论文+源码)_kaic
摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往能解决一些老技术的弊端问题。因为传统物资综合管理系统信息管理难度大,容错率低&am…...
JavaScript语言的编程范式
JavaScript:面向对象与函数式编程的双重奏 在编程世界中,JavaScript 无疑是一颗璀璨的明星,它不仅主宰着前端开发领域,还在后端、桌面应用、甚至物联网设备上展现出了强大的生命力。JavaScript 的魅力在于其灵活多变的编程范式&a…...
MyBatis动态 SQL 的执行原理
MyBatis 动态 SQL 是 MyBatis 框架中的一个重要特性,它允许开发者根据条件动态地生成不同的 SQL 语句。通过使用动态 SQL,开发者可以根据传入的参数动态地构建 SQL 查询,这样就避免了写多个 SQL 语句,提升了代码的灵活性和可维护性…...
PostgreSQL自带的一个命令行工具pg_waldump
pg_waldump是PostgreSQL自带的一个命令行工具,用于以人类可读的形式显示PostgreSQL数据库集簇的预写式日志(Write-Ahead Logging,WAL)。以下是对pg_waldump的详细介绍: 一、主要用途 pg_waldump主要用于调试或教育目…...
K8s 常用资源介绍
在 Kubernetes 中,资源指的是可以在集群中管理的对象(Objects)。这些资源用来定义和控制应用、服务、以及集群的状态。以下是 Kubernetes 中常见的资源及其用途介绍: 1. 工作负载资源(Workloads Resources)…...
基于 Python 大数据的拼团购物数据分析系统的设计与实现
标题:基于 Python 大数据的拼团购物数据分析系统的设计与实现 内容:1.摘要 本文设计并实现了一个基于 Python 大数据的拼团购物数据分析系统。通过对拼团购物数据的收集、清洗和分析,系统能够为商家提供用户行为分析、商品销售情况分析等功能,帮助商家更…...
finalshell密码解密
finalshell密码解密 在线网站运行java https://c.runoob.com/compile/10/ import java.io.ByteArrayOutputStream; import java.io.DataOutputStream; import java.io.IOException; import java.math.BigInteger; import java.security.MessageDigest; import java.security.N…...
利用Java爬虫速卖通按关键字搜索AliExpress商品
在这个信息爆炸的时代,数据的价值日益凸显。对于电商领域的从业者来说,能够快速获取商品信息成为了一项重要的技能。速卖通(AliExpress)作为全球领先的跨境电商平台,拥有海量的商品数据。本文将介绍如何使用Java语言编…...
每天40分玩转Django:Django缓存
一、Django缓存概述 在高并发的Web应用中,缓存是提高性能的重要手段。通过缓存频繁访问的数据,可以显著减少数据库查询和渲染模板的时间,从而加快响应速度,提升用户体验。Django提供了多层级的缓存方案,可以灵活地满足不同场景下的缓存需求。 Django支持的缓存方式包括: 视图…...
matrix-breakout-2-morpheus
将这一关的镜像导入虚拟机,出现以下页面表示导入成功 以root身份打开kali终端,输入以下命令,查看靶机ip arp-scan -l 根据得到的靶机ip,浏览器访问进入环境 我们从当前页面没有得到有用的信息,尝试扫描后台 发现有一个…...
第七节:GLM-4v-9b模型的视觉模型源码解读
文章目录 前言一、EVA2CLIPModel视觉编码模块结构二、PatchEmbedding图像分块源码解读三、GLM的transformer结构源码解读四、GLU映射方法源码解读前言 清华智普的GLM-4v-9b模型,作为优化的多模态大模型,特别适用于国内应用场景,解决了国外模型本地化不足的问题。本专栏提供…...
@RestControllerAdvice和@ControllerAdvice的区别
RestControllerAdvice 和 ControllerAdvice 都是 Spring 框架中的注解,用于定义全局的异常处理、数据绑定、模型属性共享等功能。它们的区别主要体现在返回值的处理和适用的场景。 1. ControllerAdvice 功能: ControllerAdvice 是 Spring MVC 提供的全局…...
c++ 类似与c# 线程 AutoResetEvent 和 ManualResetEvent的实现
在 C 中,没有直接类似于 C# 的 AutoResetEvent 和 ManualResetEvent 的类,但可以通过一些线程同步机制来实现类似的功能。C 提供了一些线程同步原语,如 std::condition_variable 和 std::mutex,这些可以用来模拟类似于 C# 中 Auto…...
简单贪吃蛇小游戏的设计与实现
文章目录 1、知识预备1.1 WIN32 API1.1.1 什么是WIN32 API1.1.2 了解部分WIN32 API1.1.2.1 控制台坐标1.1.2.2 控制台光标1.1.2.3 获取键盘按键情况 2.1 宽字符2.1.1 C语言的国际化2.1.2 宽字符的打印 2、 贪吃蛇游戏设计2.1 游戏开始2.2 游戏运行2.2.1 更新分数2.2.2 按键检测…...
动态规划<五> 子数组问题(含对应LeetcodeOJ题)
目录 引例 经典LeetcodeOJ题 1.第一题 2.第二题 3.第三题 4.第四题 5.第五题 6.第六题 7.第七题 引例 OJ传送门 Leetcode<53> 最大子数组和 画图分析: 使用动态规划解决 1.状态表示 dp[i]表示以i位置为结尾的所有子数组中的最大和 2.状态转移方程 子数组的问题可以…...
计算机网络——期末复习(4)协议或技术汇总、思维导图
思维导图 协议与技术 物理层通信协议:曼彻斯特编码链路层通信协议:CSMA/CD (1)停止-等待协议(属于自动请求重传ARQ协议):确认、否认、重传、超时重传、 (2)回退N帧协…...
在 RK3568 Linux 系统上使用 TUN 设备:详细教程
RK3568 是一个基于 ARM 架构的处理器,广泛应用于嵌入式系统和物联网设备。Linux 系统上的 TUN(网络隧道)设备提供了一个虚拟的网络接口,允许用户空间程序通过内核与网络栈进行交互。本文将详细介绍如何在 RK3568 上配置和使用 TUN 设备,适用于搭建 VPN 或容器网络等应用场…...
记录一次前端绘画海报的过程及遇到的几个问题
先看效果 使用工具 html2canvas import html2canvas from html2canvas// 绘画前的内容 我就不过多写了<div class"content" ref"contentRef" v-show"!imgShow"><img :src"getReplaceImg(friendObj.coverUrl)" alt"&qu…...
费舍尔信息矩阵全面讲述
费舍尔信息矩阵(Fisher Information Matrix) 费舍尔信息矩阵是统计学中一个非常重要的概念,尤其在参数估计、最大似然估计(MLE)和贝叶斯推断中具有广泛的应用。它反映了参数估计的不确定性程度,也可以用来…...
【CSS in Depth 2 精译_094】16.2:CSS 变换在动效中的应用(下)——导航菜单的文本标签“飞入”特效与交错渲染效果的实现
当前内容所在位置(可进入专栏查看其他译好的章节内容) 第五部分 添加动效 ✔️【第 16 章 变换】 ✔️ 16.1 旋转、平移、缩放与倾斜 16.1.1 变换原点的更改16.1.2 多重变换的设置16.1.3 单个变换属性的设置 16.2 变换在动效中的应用 16.2.1 放大图标&am…...
webpack3 webpack4 webpack5 有什么区别
性能优化 Webpack 3 性能优化主要依赖开发者手动配置各种插件。例如,在代码分割方面,需要通过CommonsChunkPlugin来实现公共模块的提取,其配置相对复杂。如果配置不当,可能会导致模块重复打包等问题,影响构建效率和最终…...
vue2 升级为 vite 打包
VUE2 中使用 Webpack 打包、开发,每次打包时间太久,尤其是在开发的过程中,本文记录一下 VUE2 升级Vite 步骤。 安装 Vue2 Vite 依赖 dev 依赖 vitejs/plugin-vue2": "^2.3.3 vitejs/plugin-vue2-jsx": "^1.1.1 vite&…...
[创业之路-206]:《华为战略管理法-DSTE实战体系》- 6-关键成功因素法CSF
目录 一、概述 1、定义与起源 2、关键成功因素的定义 3、关键成功因素的来源 4、关键成功因素的确认方法 5、关键成功因素法的步骤 6、关键成功因素法的应用 7、关键成功因素法的优势与局限性 二、 关键成功因素法CSF的应用 1、企业战略管理 2、项目管理 3、绩效管…...
WebRTC服务质量(08)- 重传机制(05) RTX机制
WebRTC服务质量(01)- Qos概述 WebRTC服务质量(02)- RTP协议 WebRTC服务质量(03)- RTCP协议 WebRTC服务质量(04)- 重传机制(01) RTX NACK概述 WebRTC服务质量(…...
Go的select的运行原理
Go语言中的select语句是一种专门用于处理多个通道(channel)操作的控制结构。其运行原理可以概括为以下几点: 1. 监听多个通道 select语句能够同时监听多个通道上的操作,这些操作可以是发送操作或接收操作。每个通道操作都对应se…...
操作002:HelloWorld
文章目录 操作002:HelloWorld一、目标二、具体操作1、创建Java工程①消息发送端(生产者)②消息接收端(消费者)③添加依赖 2、发送消息①Java代码②查看效果 3、接收消息①Java代码②控制台打印③查看后台管理界面 操作…...
3D坐标下,一点在某一线段上的左右方向的判定
3D坐标下,一点在某一线段上的左右方向的判定 代码 代码 #include <iostream> #include <Eigen/Dense>#define M_PI 3.1415926// 计算三点组成平面的参数和变换到XOY平面的变换矩阵 void computePlaneAndTransform(const Eigen::Vector3d& P1, cons…...
Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码 【AI辅助开发系列】
🎀🎀🎀【AI辅助编程系列】🎀🎀🎀 Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码Visual Studio 安装和管理 GitHub CopilotVisual Studio 使用 GitHub Copilot 扩展Visual Studio 使用 GitHu…...
Linux高级--2.4.5 靠协议头保证传输的 MAC/IP/TCP/UDP---协议帧格式
任何网络协议,都必须要用包头里面设置写特殊字段来标识自己,传输越复杂,越稳定,越高性能的协议,包头越复杂。我们理解这些包头中每个字段的作用要站在它们解决什么问题的角度来理解。因为没人愿意让包头那么复杂。 本…...
【UE5 C++课程系列笔记】14——GameInstanceSubsystem与动态多播的简单结合使用
效果 通过在关卡蓝图中触发GameInstanceSubsystem包含的委托,来触发所有绑定到这个委托的事件,从而实现跨蓝图通信。 步骤 1. 新建一个C类 这里命名为“SubsystemAndDelegate” 引入GameInstanceSubsystem.h,让“SubsystemAndDelegate”继承…...