建议收藏,轻松搞懂区块链
未来已来,只是不均衡地分布在当下
大家好,我是菜农,欢迎来到我的频道。
本文共 5844字,预计阅读 30 分钟
区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"黑科技"之一。
在本篇中我们将掌握区块链的基本概念、技术构成 与 逻辑结构
一、基本概念
“区块链” 这个概念是由一个网名为中本聪的人在2008年发表的《比特币:一种点对点的电子现金系统》中提出的。随后他实现了一个比特币系统,并发布了加密数字货币—比特币。接下来出现了以太坊和超级账本这样的大型区块链项目。
那么在你的认知中,区块链是什么样的?下面整理了几种选项,看下是否有符合你认知的选项。
- 区块链是比特币,比特币就是区块链
- 区块链很值钱
- 区块链可以运用在任何领域
- 区块链是免费的
- 区块链是非常安全的
通常来说,选项1是大多倾向的结果。但比特币和区块链两者不能等同,实际上,区块链是比特币的底层技术,如果要举例比喻的话,就好比用面粉可以做包子,但不能说面粉等于包子,包子等于面粉。而这里的面粉就相当于是包子。当然了作为底层技术的存在,不仅仅应用于比特币的实现中,还有很多其他基于区块链技术的应用。
那么区块链究竟是什么?从比较专业的维度上看,可以从以下三点来解释
- 区块链是底层技术
作为一个底层技术,它是包含了 P2P动态组网、基于密码学的共享账本、共识机制、智能合约 等关键技术
- 区块链是一个数字货币和账本系统
从货币学的角度看,区块链是数字货币系统的分布式共享账本系统,这是一个去中心化的、网内用户共同维护的账本系统。
- 区块链是互联网的基础设施
它提供了分布式去中心化的价值互联网,为更多大规模的共享、协作应用创造可能。
作为解释依据,这里提取了来自中本聪在2008年发表的《比特币:一种点对点的电子现金系统》中的一段描述:
时间戳服务器对以区块(Block)形式存在的一组数据是实施随机散列并加上时间戳,然后将该随机散列进行广播,就像在新闻后世界性新闻组网络(Usenet)的发帖一样。显然,该时间戳能够证实特定数据于某特定时间是的确存在的,因为只有在该时刻存在了才能获取相应的随机散列值。每个时间戳应当将前一个时间戳纳入其随机散列值中,每一个随后的时间戳都对之前的一个时间戳进行增强(Reinforcing),这样就形成了一个(Chain),即区块链,如下图所示:

文字较为苍白,我们看图可以很清晰的看出 区块链就是由 区块 和 链 构成的
1)区块
区块是区块链的组成单元,就像金字塔是由一块块石头组成的一样,区块链就是一个个区块组成的。
区块是由一系列特征值和一段时间内的交易记录组成的一个数据结构。区块的数据结构是由 区块头 和 区块体 组成。其中区块头包含了当前区块的特征值,区块体中包含的是实际的交易记录数据。
1、数据结构
1️⃣ 区块头
区块头是由 80 个字节组成,主要由版本号、前一个区块的哈希值、Merkle根、时间戳、bits、Nonce 这几项区块的特征值组成。

- ver: 版本号,表示本区块遵守的验证规则
- prev_block: 父区块哈希值,指的是这个区块连接的上一个区块的哈希值
- mrkl_root: mrkl_root 根,是该区块链交易的 Merkle 树根的哈希值(Merkle 是一种哈希树的数据结构)
- time: 时间戳,区块生成的时间
- bits: 区块的难度值,该区块工作量证明算法的难度目标,使用特定的算法编码
- Nonce: 是一个随机数,为了找到满足难度目标所设定的
2️⃣ 区块体
区块体主要包括了 交易数量(n_tx)、区块大小(size)和长度不定的交易记录(tx 字段包含的交易列表) 等信息。但这只是比特币中的区块体结构,实际上区块体重可以包括任何内容,比如以太坊的区块体中除了交易数据还包含智能合约。

2)区块特点
区块是由计算机通过加密算法生成的。如果成功地生成一个有效的区块,该计算机(节点)就能获得一定的奖励,这个奖励就是加密数字货币,也就是所谓的 挖矿。
加密算法并不是容易生成结果的,而是该区块的哈希值必须满足一定的条件。这个条件就是能够使得区块头中特征值相加生成的哈希值需要符合一定格式,比如难度值为 000,由于哈希值随着输入的不同而不同,因此计算机要不断尝试改变区块头的 Nonce 值直至最终生成的哈希值满足条件才算生成了一个有效的区块。
我们可以借助 Blockchain Demo 工具来尝试生成一个区块。

从图中可以看出在 HASH 一栏中的数据是红色的,说明该哈希值是无效的。因为未满足 000 开头的数据。那么我们需要再次计算后查看结果

可以看出这次的结果为绿色,是有效的,因为该数据满足 000 开头。我们将上面的区块结果进行解读,可以分为以下几部分:

- 索引: 表示区块在区块链中的位置,其中第一个区块为 创世区块(索引为 0) ,第二个区块的索引为1,第三个区块的索引为2,以此类推。
- 时间戳: 表示该区块的生成时间,根据时间戳可以判断区块链中各个区块生成的先后顺序。
- 哈希值: 表示每个区块的唯一标识,也可称为区块的 数字指纹。哈希值的长度是固定的,而且和区块的内容紧密关联,一旦区块内容发生改变,该区块的哈希值也会发生改变。而且,区块中的哈希值还有 有效 和 无效 之分,满足特定条件的哈希值是有效的,否则就是无效的。这个特定条件一般称称为 困难度(Difficulty)。父区块哈希值就是区块中特定区块前一个区块的哈希值。
- **数据:**区块中的数据可以是任何内容,比特币区块链的区块中的数据为一串串交易记录。
- Nonce: 是一个随机数,用来生成一个有效的哈希值。Nonce 会根据区块数据的不同而不同,每个区块都需要经过大量计算才能找到对应的 Nonce 值。
- 创世区块: 区块链中的第一个区块,它没有父区块,故创世区块的父区块哈希值为空或者为 0。
2)运行原理
综上所述,区块链就是一个链表,而这个链表就是由一个个区块组成的,这些区块依次连接,形成一个不可篡改的链条,那么其中的运行过程我们也可以由此推出:
- 首先构成区块链的去中心化网络中的第一个节点,生成一个 创世区块
- 然后通过 挖矿 生成新的区块添加到区块链中
- 新的节点加入到去中心化网络中会先生成一个最新的区块链数据
- 随后每个节点生成的区块都会向网络中的其他节点进行广播
- 其他节点收到广播后会判断自己是否已经收到该区块,是的话就忽略,否的话会先校验该区块是否有效,如果是有效的区块则会添加到自己的区块链中
3)小结
- 区块链中的节点始终都讲最长的链条作为正确的链,并持续延长和维护这条链。当节点发现有更长的链条并且本身的链条不是最新时,就会使用最长的链条提花你当前节点的链条。若一个节点判断出本身的区块链是最新的,再收到新的区块信息时,节点就会把新的区块添加到自身链条的最后。
- 当一个区块链的节点掌握了整个区块链中 51% 以上的计算能力时,它就可以重写整个区块链。基于这个原因,区块链中的计算能力过度集中会很危险。只有一个庞大且均匀分布的区块链才比较安全。
二、技术构成
区块链主要由三个核心技术构成,分别是 共识机制、智能合约、去中心化网络。
1)共识机制
共识机制是区块链中的重要机制,不同的区块链项目可能使用不同的共识机制。网络中的各个节点根据共识机制达成共识,共同维护整个区块链网络。

1、PoW 机制
工作量证明机制(Proof of Work,PoW),工作量证明就是一份证明,它用来确定完成了一定量的工作并可以因此获得一定的奖励。
工作量证明是一种对应服务与资源滥用,或是阻断服务供给的对策。一般要求发起者进行一些耗时的复杂运算,并且结果能被快速验算。在计算过程中耗用的时间和资源作为成本,据此来确定建立或惩罚,以此来维护系统的一致性。
工作量证明机制最常用的技术原理是哈希函数,工作量证明机制如下:
- 取得一些公开的数据,并加上一个随机数(Nonce)
- 以数据和随机数作为输入值计算哈希值
- 检查生成的哈希值是否符合一定的条件。若符合就几下这个随机数的值并退出。若不符合则改变随机数的值再重新计算。

由于工作量证明机制需要消耗巨大的算力,如果有人尝试恶意破坏,需要付出巨大的经济成本,这就防止了恶意的数据修改。
缺点: 只有第一个获取有效哈希值的节点能得到奖励,其他节点的计算会被浪费掉。
2、PoS机制
权益证明机制(Proof of Stake,PoS)试图解决在 PoW 机制中大量资源被浪费的问题。不同于 PoW 机制要求进行一定量的计算,PoS 机制要求提供的是保证金,或者说是一定数量数字货币的拥有权。
PoS 机制的工作原理是通过保证金来确认一个合法的块成为新的区块,收益为保证金的利息和交易服务费。提供证明的保证金越多,则获得记账权的概率越大。
比如系统中有A、B、C、D4个人,A有40个币,B有30个币,C有20个币,D有10个币,那么A获得记账权的概率就是D的4倍

PoS 机制的好处是在一定程度上缩短了共识达成的时间,不再需要大量消耗能源挖矿,其与 PoW 机制的区别如下:

3、DPoS 机制
股份授权证明机制(Delegated Proof of Stake,DPoS),与 PoS 机制基本原理相同,只是选举了若干代理人,由代理人执行验证和记账功能,工作原理如下:

在 DPoS 机制下,每个节点按其持币比例拥有影响力,51%节点投票的结果将是不可逆切有约束力的。其过程为:
每个节点可以将其投票权授予一名代表,获票数最多的前 100 位代表按既定时间表轮流产生区块。每名代表分配到一个时间段来生产区块。所有的代表将收到等同于一个平均水平的区块所含交易费的 10% 作为报酬。如果一个平均水平的区块含有 100 股作为交易费,每个节点将获得 1 股作为报酬
DPoS 的好处是大幅缩小了参与验证和记账节点的数量,可以达到秒级的共识验证
4、DAG 机制
有向无环图(Direct Acyclic Graph,DAG),DAG 是一个没有有向循环的、有限的有向图。它由有限个顶点和有向边组成,每条有向边都从一个顶点指向另一个顶点;从任意一个顶点出发都不能通过这些有向边回到原来的顶点

传统的区块链只有一条单链,而在一条单链上无法并发打包区块。而DAG 是一种拓扑结构,在区块打包时间不变的情况下,可以并行打包N个区块,那么区块链的交易容纳能力就可以变成原来单链情况下的N倍。
2)智能合约
智能合约不是区块链的必要组成,它是区块链 2.0 之后出现的技术。如果把区块链比作一个公司,智能合约相当于公司中的规章制度,员工工作的时候会依据规章制度形式,而在有智能合约的区块链中,链上的节点会依据智能合约进行工作。
智能合约不只是一个可以自动执行的计算机程度,它还是一个基于区块链的参与者。它对接收到的信息进行回应,它可以接收和存储价值,也可以向外发送信息和价值。
智能合约具体是指运行在可复制、共享的账本上的计算机程序,可以处理信息,接收、存储和发送价值的脚本

特点
- 不可篡改
- 分布式
- 自动触发
- 不依赖第三方
3)去中心化网络
去中心化网络不同于中心化网络。在中心化网络中,需要中心服务器,是一种星型的辐射结构。
- 中心化网络

- 去中心化网络

我们演化成区块链的形式:

三、逻辑结构
从架构上来说,区块链大致可以分为4层,从下到上依次为 数据层、网络层、合约层 和 应用层

1)数据层
数据层是区块链的逻辑架构中最基础的一层,功能主要包括区块数据的存储、哈希值和 Merkle 树的计算以及链式结构的生成,其中进行数据的存储时需要重点考虑数据存储的性能和稳定性。在比特币和以太坊中的存储功能选择的是 LevelDB数据库。
数据层的功能是把交易数据存储到区块中并将区块加入到区块链中。当节点之间发生交易后会将交易数据广播到区块链的去中心化网络上,网络中其他节点负责校验这些交易。交易被确认有效后会存储到区块中,并加入到区块链。
2)网络层
网络层主要包括 P2P 网络 和 共识算法 两个组成部分。P2P (Peer to Peer)网络也称为点对点网络或对等网络,根据去中心化程度的不同可以将其分为以下三种:
-
纯P2P网络
-
节点同时作为客户端和服务器
-
没有中心服务器
-
没有中心路由器
-
-
杂P2P网络
- 有一个中心服务器保存节点的信息并对请求这些信息的客户端作出响应
- 节点负责发布信息(因为中心服务器并不保存文件),让中心服务器知道哪些文件被共享,让需要的节点下载其可下载其可使用的资源
- 路由重点使用地址,通过被一组索引引用来获取绝对地址
-
混合P2P网络
同时含有纯P2P网络和杂P2P网络的特点
在 P2P 网络中,各个节点需要对区块链中的各个区块达成共识才能共同维护同一分布式账本。这个共识的机制就是共识算法,比较最为常用的共识算法有工作量证明机制(Proof of Work,PoW)、权益证明机制(Proof of Stake,PoS)、股份授权证明机制(Delegated Proof of Stake,DPoS)
3)合约层
合约层的功能使得区块链中的区块具有可编程的特性,并且赋予了区块链智能的特性,在区块链中智能合约的作用如同一个智能助理,对区块链中的数据和事件按照预先设定的逻辑进行处理。

4)应用层
应用层泛指基于区块链技术并结合具体业务场景开发的应用,包括加密数字货币钱包、交易所、去中心化应用等。
四、分类
随着区块链的快速发展、区块链的应用范围越来越广,不同的区块链应用之间也有了比较大的差异
1)公有链
公有链是对外公开、任何人都可以参与的区块链。公有链是真正意义上的完全无中心化的区块链。它通过加密技术保证交易不可篡改,在不可信的网络环境中建立共识,从而形成去中心化的信用机制。公有链使用于数字货币、电子商务、互联网金融、知识产权等应用场景。

2)联盟链
联盟链仅限于联盟成员使用,因其只针对成员开放全部或部分功能,所以联盟链上的读写权限、以及记账规则都按联盟链规则来控制。联盟链适用于机构间的交易、结算、清算等B2B场景。超级账本项目即属于联盟链。

3)私有链
私有链对单独的个人或实体开放,仅供在私有组织,比如公司内部使用,私有链上的读写权限,参与记账的权限都由私有组织来决定。私有链适用于企业、组织内部。

4)特点比较

5)侧链
侧链的概念最早产生于比特币的应用过程中,侧链实质上是指遵守侧链协议的所有区块链。侧链协议是一种可以让比特币安全地从比特币主链转移到其他区块链,又可以从其他区块链安全地比特币主链的协议。
侧链本质上是一种跨区块链解决方案。通过这种解决方案,可以实现数字资产从第一个区块链到第二个区块链的转移,又可以在稍后的时间点从第二个区块链安全返回到第一个区块链。
6)闪电网络
在比特币交易网络中,最为人诟病的问题便是交易性能:全网约每秒7笔左右的交易速度远低于传统金融交易系统。同时,等待6个区块的可信确认将导致约1个小时的最终确认时间。
为了提升性能,比特币社区提出了闪电网络等创新的设计。闪电网络的主要思路十分简单—将大量交易放到比特币区块链之外进行,只把关键环节放到链上进行确认。闪电网络的工作原理是用比特币拥有权的承诺来替代拥有权。
五、总结
区块链的主要特点包括去中心化、去信任、集体维护、匿名性、可靠的数据库。
- 去中心化: 区块链技术基于P2P去中心化网络,区块链网络上的节点都是平等的,没有中心服务器,故区块链是去中心化的。
- 去信任: 区块链中的数据都是公开透明的,交易数据通过加密技术进行验证和记录,无须第三方信任机构的参与,故有去信任的特点。
- 集体维护: 区块链由全网节点共同参与维护,某一节点上数据的更新需要其他节点进行计算和验证,不会受少数节点控制。
- 可靠的数据库: 区块链中的每一个节点上的数据都是全网数据,单个节点的退出或瘫痪不会影响整个系统。
好了,以上便是本篇的所有内容,如果觉得对你有帮助的小伙伴不妨点个关注做个伴,便是对小菜最大的支持。不要空谈,不要贪懒,和小菜一起做个吹着牛X做架构的程序猿吧~ 咱们下文再见!
今天的你多努力一点,明天的你就能少说一句求人的话!
我是小菜,一个和你一起变强的男人。
💋微信公众号已开启,菜农曰,没关注的同学们记得关注哦!
相关文章:
建议收藏,轻松搞懂区块链
未来已来,只是不均衡地分布在当下 大家好,我是菜农,欢迎来到我的频道。 本文共 5844字,预计阅读 30 分钟 区块链是近些年来最热门的前沿技术,被认为是未来十几年对金融、物联网、医疗等诸多领域产生最大影响的"…...
php设计一个新春祝福墙
记得十几年前的时候,每到春节,各大网站都会建一个祝福墙,上面挂满网友的新年寄语。这些年随着移动互联网的高速发展,web的新春祝福墙越来越少了。今天,咱们就来考考古,用快速原型法进行设计。原型设计采用M…...
KubeSphere 社区双周报 | OpenFunction 集成 WasmEdge | 2023.02.03-02.16
KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书、新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列社区动态。 本次双周报涵盖时间为:2023.02.03-2023.…...
数字IC/FPGA 秋招知识点不全面整理
1. 引言 这篇文章的由来 秋招的时候,刚开始复习一些知识点的时候没有什么思路,只是盲目的看相关的书籍和资料,结果是留在脑子中的知识很有限,而且不够系统,在我需要它的时候,并不能很快的回忆起来。 于是就想着把一些典型的知识整理成一个文档,在进行刷题的时候可以比…...
你知道java8是如何排序Map嘛?
在Java中,有多种方法可以对Map进行排序,但是我们将重点介绍Java 8 Stream,这是实现目标的一种非常优雅的方法。 学习一下HashMap的merge()函数 在学习Map排序之前,有必要讲一下HashMap的merge()函数,该函数应用场景就…...
【李忍考研传】一、李忍
“老师,我来回答!” “非常好,我记得你是叫……呃……是李念同学吗?” “不,老师,我叫李忍。” “好,你来回答一下这个问题。” “这题用海明码校验的知识,能检错一位纠错一位&a…...
测牛学堂:软件测试python深入之类和对象的属性和方法总结
类对象和实例对象 类对象就是我们定义的类。 在代码执行的时候,解释器会自动创建类对象。 类对象的作用: 1 使用类对象创建实例对象 2 存储类的一些特性,就是类里面定义的属性 创建对象的过程也称为实例化的对象。所以,类创建的对…...
css实例--新闻页面
实现效果 实现代码 html代码: <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" co…...
SpringCloudGateway 动态转发后端服务
API网关的核心功能是统一流量入口,实现路由转发,SpringCloudGateway是API网关开发的技术之一,此外比较流行的还有Kong和ApiSix,这2个都是基于OpenResty技术栈。 简单的路由转发可以通过SpringCloudGateway的配置文件实现…...
使用canvas写一个flappy bird小游戏
简介 canvas 是HTML5 提供的一种新标签,它可以支持 JavaScript 在上面绘画,控制每一个像素,它经常被用来制作小游戏,接下来我将用它来模仿制作一款叫flappy bird的小游戏。flappy bird(中文名:笨鸟先飞&am…...
KVM-2、虚拟化基础
1. 虚拟化概念 什么是虚拟化 **虚拟化是使用所谓虚拟机管理程序从一台物理机上创建若干个虚拟机的过程。**虚拟机的行为和运转方式与物理机一样,但它们会使用物理机的计算资源,如 CPU 、内存和存储。虚拟机管理程序会根据需要将这些计算资源分配给每个虚拟机。 虚拟化有哪…...
设计模式之观察者模式与访问者模式详解和应用
目录1.访问者模式详解1.1 访问者模式的定义1.1.1 访问者模式在生活中的体现1.1.2 访问者模式的适用场景1.2 访问者模式的通用实现1.3 访问者模式的使用案例之KPI考核1.3.1 类图设计1.3.2 代码实现1.4 访问者模式扩展---分派1.4.1 java中静态分派示例代码1.4.2 java中动态分派1.…...
spring注解方式整合Dubbo源码解析
系列文章目录 前言 本节我们的Dubbo源码版本基于2.6.x 在前一章我们的整合案例中,我们有几个比较关键的步骤: 在启动类上标注了EnableDubbo注解在provider类上面标注了Service注解来提供dubbo服务在消费的时候通过Reference注解引入dubbo服务在配置文件…...
大数值金额大写转换(C语言)
关于大数值金额大写转换,在财务管理的应用方面没什么意义。一般来说,千亿级,万亿级的数值就够了。因为在国家级层面是以亿为单位的,也就表达为千万亿,万万亿。在企业层面数值金额转换设置到千亿、万亿就行了。大的集团…...
迷宫问题图解 : 基于骨架提取、四邻域
目录 1. 迷宫的连通域 2. How to remove branch ? 3. 基于4邻域的 remove 分支 3.1 找到分支的端点 3.2 4邻域的 remove 分支 3.3 循环移除分支 3.4 code 4. 迷宫路线 4.1 预处理 4.2 提取骨架 4.3 分支的端点 4.4 去除分支的端点 4.5 循环去除分支 4…...
设计模式 - 如何在库和主程序之间互相调用数据和函数
背景:在项目开发过程中,难免碰到这种情况,当我们想要通过我们开发的库,调用主程序中的一些变量或者函数的时候,就会导致一些问题,因为在项目构建过程中,库都是不依赖于主程序编译的,…...
Redis面试题:1~2亿条数据需要缓存,请问如何设计这个存储案例
目录 前言 一、哈希取余分区 优点 缺点 二、一致性哈希算法分区 背景 步骤 ① 算法构建一致性哈希环 ② 服务器IP节点映射 ③ key落到服务器的落键规则 优点 ① 容错性 ② 扩展性 缺点 三、哈希槽分区 前言 单机单台100%不可能,肯定是分布式存储&am…...
程序员必备的软技能-《如何阅读一本书》
阅读很重要,我们真的会阅读吗? 这本书的初版是 1940年,时隔 80年,其内容仍然不过时。第一次读这本书时,给我最大的影响就是主题阅读,每次学习一个新理论、技术,都入手多本关于这项理论、技术的书…...
Java数据结构-栈、队列常用类(Stack、ArrayDeque、LinkedLList)
数据结构的三要素包括:逻辑结构、存储结构、数据的运算。逻辑结构描述的是数据之间的逻辑关系,分为线性结构(线性表(数组、链表)、栈、队列)和非线性结构(图、树、集合)。物理结构也…...
React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...
OpenLayers 分屏对比(地图联动)
注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
SQL慢可能是触发了ring buffer
简介 最近在进行 postgresql 性能排查的时候,发现 PG 在某一个时间并行执行的 SQL 变得特别慢。最后通过监控监观察到并行发起得时间 buffers_alloc 就急速上升,且低水位伴随在整个慢 SQL,一直是 buferIO 的等待事件,此时也没有其他会话的争抢。SQL 虽然不是高效 SQL ,但…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
wpf在image控件上快速显示内存图像
wpf在image控件上快速显示内存图像https://www.cnblogs.com/haodafeng/p/10431387.html 如果你在寻找能够快速在image控件刷新大图像(比如分辨率3000*3000的图像)的办法,尤其是想把内存中的裸数据(只有图像的数据,不包…...
VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...
基于 HTTP 的单向流式通信协议SSE详解
SSE(Server-Sent Events)详解 🧠 什么是 SSE? SSE(Server-Sent Events) 是 HTML5 标准中定义的一种通信机制,它允许服务器主动将事件推送给客户端(浏览器)。与传统的 H…...
第22节 Node.js JXcore 打包
Node.js是一个开放源代码、跨平台的、用于服务器端和网络应用的运行环境。 JXcore是一个支持多线程的 Node.js 发行版本,基本不需要对你现有的代码做任何改动就可以直接线程安全地以多线程运行。 本文主要介绍JXcore的打包功能。 JXcore 安装 下载JXcore安装包&a…...
AWSLambda之设置时区
目标 希望Lambda运行的时区是东八区。 解决 只需要设置lambda的环境变量TZ为东八区时区即可,即Asia/Shanghai。 参考 使用 Lambda 环境变量...
