自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Now

技术笔记

原创 分布式系统中时间、时钟和事件序列

在程序中,我们经常需要知道事件序列,在单体应用中,事件序列是较为简单的,最简单的办法就是用时间戳,但在分布式系统中,事件序列是很困难的,Leslie Lamport大神在论文Time, Clocks, and the Ordering of Events in a Distributed Syst...

2019-05-15 23:18:03

阅读数 118

评论数 1

原创 分布式系统:向量时钟

Lamport时钟存在的问题 使用Lamport时间戳,只是比较事件aaa和bbb各自的时钟值C{a}C\{a\}C{a}和C{b}C\{b\}C{b},无法说明它们之间的关系。也就是说,C{a}<C{b}C\{a\}<C\{b\}C{a}&lt...

2019-08-01 08:49:28

阅读数 796

评论数 2

原创 2019年中总结

转眼间,已经工作N年了,最大的感悟就是是基础要扎实,一定要不断的修习基础,每重新学习一次,都会有新的感悟,再结合工作中实际的项目,思考一下,会有更深的理解。越是基础的东西,越是精华,基础的东西理解透了,再学习新的技术时理解的会非常快。

2019-07-18 18:53:24

阅读数 48

评论数 0

原创 比特币挖矿及源码分析

挖矿流程概述 比特币挖矿,其实就是比特币节点,对交易进行打包出块,获取记账权的同时得到比特币激励。挖矿主要流程如下: 收集网络上广播的交易,进行验证,加入到交易池中; 构造新块——将交易池中的交易打包,选择一条最长的区块链,计算最新块头哈希值作为新块(候选块,还未获得记账权)前一区块哈希; 工作...

2019-07-15 13:41:29

阅读数 295

评论数 0

原创 比特币核心数据结构

我们学习计算机时曾经有这么一个定义:程序=数据结构+算法,对于一个区块链,我认为从技术方面看与程序的定义类似,核心一个是共识算法,一个是核心数据结构,这两点直接决定了这条区块链工作运行原理。比特币的共识算法,在这一篇哈希函数与比特币共识算法PoW中已经讲述了其原理,这一篇主要讲述比特币核心数据结构...

2019-07-12 11:59:27

阅读数 47

评论数 0

原创 Merkle树

Merkle tree Merkle树看起来非常像二叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值,所以有时候Merkle tree也表示为Hash tree,如下图所示: 在构造Merkle树时,首先要对数据块计算哈希值,通常,选用SHA-256等哈希算法。但如果仅仅防止数据不...

2019-07-11 15:09:08

阅读数 68

评论数 0

原创 Bloom过滤器

提出一个问题 在我们细述Bloom过滤器之前,我们先抛出一个问题:给你一个巨大的数据集(百万级、亿级…),怎么判断一个元素是否在此数据集中?或者怎么判断一个元素不在此数据集中? 思考这个问题的时候,最先想到的可能是哈希表,在数据集规模较小的时候,这个方法是可行的,当然,数据集巨大的时候也可以采用分...

2019-07-10 13:35:41

阅读数 134

评论数 0

原创 闪电网络

闪电网络属于状态通道技术范畴,是区块链技术的一个发展方向之一,其核心思想是将本来在链上结算的交易在链下通过状态通道维护中间态,并且在发生纠纷时回到链上仲裁。链上仲裁的公平性和安全性在博弈论上保证了链下交易的对手不会作恶。通过这种方式实现扩容。下面是闪电网络技术概要。 一、闪电网络——币链下扩容方...

2019-07-10 13:25:10

阅读数 538

评论数 0

原创 比特币交易

理解交易对比特币系统是如何工作的是非常重要的,可以说比特币整个的工作流程就是围绕着交易展开的。下面我们先叙述一下比特币交易流程,在宏观上对交易有个认识,后面会讲一下交易数据结构,具体在程序中是怎么定义的。下面先让我们看一下比特币交易流程。 比特币交易流程 比特币交易并不是通常意义上的一手交钱一手交...

2019-07-09 13:32:43

阅读数 87

评论数 0

原创 哈希表原理

哈希表是最常用的数据结构之一,对于其用法,大家都非常熟悉,这里详细探讨一下其原理。哈希表的底层实际上是基于数组来存储的,当插入键值对时,并不是直接插入该数组中,而是通过对键进行Hash运算得到Hash值,然后和数组容量取模,得到在数组中的位置后再插入。取值时,先对指定的键求Hash值,再和容量取模...

2019-07-08 18:05:07

阅读数 279

评论数 0

原创 【Rust】双重循环break的问题

在单循环中使用break跳出循环,但如果遇到双重循环或者更多重循环时怎么办呢?与其他语言类似,Rust使用标记标识跳出指定循环。如下所示: fn main() { let a = vec![1;5]; let b = vec![2;6]; 'outer: for i...

2019-07-03 18:51:11

阅读数 189

评论数 0

原创 比特币私钥、账户与钱包

对于比特币用户来讲,与它们最直接相关的就是比特币中私钥、账户及钱包了,这里讲述一下这三个概念及相关细节。在这之前,先简单的叙述一下基本的公钥密码学知识。 公钥密码体制(Public-key cryptography) 公钥密码体制分为三部分:公钥、私钥、加密解密算法。公钥密码体制的公钥和算法都...

2019-06-28 09:44:58

阅读数 902

评论数 0

原创 【Rust】写时复制Cow

写时复制(Copy on Write)技术是一种程序中的优化策略,多应用于读多写少的场景。主要思想是创建对象的时候不立即进行复制,而是先引用(借用)原有对象进行大量的读操作,只有进行到少量的写操作的时候,才进行复制操作,将原有对象复制后再写入。这样的好处是在读多写少的场景下,减少了复制操作,提高了...

2019-06-25 11:57:27

阅读数 145

评论数 0

原创 谈谈Libra

6月18日下午,Facebook发布加密货币白皮书,正式推出加密货币项目Libra。我想最近一段时间,肯定大部分区块链从业者都会关注这一项目,自己也不例外,在此,简单的谈一下Libra。 白皮书中讲到Libra的使命是建立一套简单的、无国界的货币和为数十亿人服务的金融基础设施。这一点与比特币类似...

2019-06-24 13:03:16

阅读数 658

评论数 0

原创 代码统计工具cloc

有时候我们需要统计一下代码量,这时候就需要代码统计工具,推荐cloc。 安装如下: npm install -g cloc # https://www.npmjs.com/package/cloc sudo apt-get install cloc...

2019-06-21 13:16:51

阅读数 343

评论数 0

原创 工作窃取算法(work-stealing)

工作中,我们经常会用到线程池,通常是任务产生后放到一个任务队列,线程池中的线程不断从任务队列中取任务执行,但这样设计在一些情况下并不是最优的,更常见的实现是基于work-stealing的线程池。work-stealing从字面理解即工作窃取,工作窃取(work-stealing)算法是指某个线程...

2019-06-20 19:16:41

阅读数 277

评论数 0

原创 顺序锁

顺序锁与读写自旋锁非常类似,只是赋予了写者较高的优先级:即使在读者正在读的时候也允许写者继续运行。这样的好处是写者不用等待(除非另一个写者正在写),缺点是有些时候读者不得不反复多次读相同的数据直到它获得有效的副本。 每个顺序锁就是包括两个字段的seqlock_t结构:一个类型为spinlock_t...

2019-06-17 19:14:59

阅读数 31

评论数 0

原创 区块链技术基础

区块链可以理解为是基于区块链技术形成的公共数据库。而区块链技术是比特币的底层技术,包含现代密码学、分布式一致性协议、点对点网络通信等技术,这些技术通过一定的规则协议,最终形成区块链技术......

2019-06-14 21:20:07

阅读数 6803

评论数 0

原创 自旋锁

自旋锁概念 自旋锁应该是Linux内核中使用最多的锁了,其它锁很多都依赖自旋锁实现。自旋锁概念上简单,一个自旋锁是一个互斥设备,只能有2个值:“上锁"和"解锁”。它常常实现为一个整数值中的一个单个位,想获取一个特殊锁的代码测试相关的位,如果锁是可用的,这个"上锁&q...

2019-06-13 19:23:03

阅读数 206

评论数 0

原创 ECDH密钥交换

前面一篇将过DH密钥交换算法,ECDH(Elliptic Curve Diffie-Hellman)顾名思义就是ECC+DH,安全性保证由椭圆曲线离散对数难题来保证。其思想与DH一致。 椭圆曲线密码学 椭圆曲线密码学是属于非对称密码学的。其公私钥计算公式如下: 私钥是一个随机数ddd,取...

2019-05-31 13:23:57

阅读数 304

评论数 0

提示
确定要删除当前文章?
取消 删除