lessisbetter
码龄6年
关注
提问 私信
  • 博客:52,414
    52,414
    总访问量
  • 28
    原创
  • 2,119,914
    排名
  • 68
    粉丝
  • 0
    铁粉

个人简介:LIB: lessisbetter.site

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2018-10-23
博客简介:

LIB

博客描述:
lessisbetter.site
查看详细资料
个人成就
  • 获得37次点赞
  • 内容获得12次评论
  • 获得124次收藏
创作历程
  • 7篇
    2020年
  • 21篇
    2019年
成就勋章
TA的专栏
  • Go语言实战
  • golang
    17篇
  • 区块链
    10篇
  • 以太坊
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

350人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

为什么PBFT需要View Changes

前言在当前的PBFT资料中,尤其是中文资料,多数都在介绍PBFT的3阶段消息过程,很少提及View Changes(视图切换),View Changes对PBFT的重要性,如同Leader Election对Raft的重要性,它是一个一致性算法中,不可或缺的部分。作者为大家介绍下,为什么View Changes如此重要,即为什么PBFT需要View Changes,以及View Changes...
原创
发布博客 2020.04.11 ·
3533 阅读 ·
5 点赞 ·
3 评论 ·
20 收藏

Fabric 1.4源码解读 4:交易背书流程解读

图片不能显示时,请查看原文:https://lessisbetter.site/2019/10/29/fabric-transaction-endorser-source/文章目录流程交易宏观流程链码调用流程提案背书流程源码分析Proposal定义ProposalHeadergRPC定义SDK发送ProposalPeer接收ProposalPeer处理Proposal主流程preProcess ...
原创
发布博客 2020.03.15 ·
728 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Fabric 1.4源码解读 7:Orderer架构解读

图片不能显示时,请查看原文:https://lessisbetter.site/2019/11/21/fabric-orderer-architecture/文章目录Orderer介绍架构多通道共识插件gRPC通信Local ConfigMetadataMsgProcessorBlockCutterBlockWriterOrderer节点启动Orderer处理交易的流程普通交易在Orderer中...
原创
发布博客 2020.03.15 ·
844 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

Fabric 1.4源码解读 8:Orderer和Peer的交互

图片不能显示时,请查看原文:https://lessisbetter.site/2019/12/17/fabric-blocks-from-orderer-to-peer/文章目录网络拓扑宏观视角单通道区块同步为何Peer从Orderer获取区块慢?为何不让Peer缓存所有未处理的区块?Peer与Orderer的交互主要是组织的Peer主节点从Orderer获取区块,本文就来介绍,Peer是如...
原创
发布博客 2020.03.15 ·
1297 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Fabric 1.4源码解读 9:从账本角度看Peer

图片不能显示时,请查看原文:https://lessisbetter.site/2020/01/03/fabric-peer-ledger/文章目录账本区块文件和区块索引数据库历史数据库各数据库实现从数据看Peer功能账本同步数据使用Deliver同步区块Peer请求区块Peer处理收到的区块验证区块区块写入账本写区块完成后背书MVCCFabric对MVCC的使用总结参考区块链最核心的是可信数...
原创
发布博客 2020.03.15 ·
617 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

一张思维导图看懂PBFT

图片不能显示时,请查看原文:https://lessisbetter.site/2020/03/11/pbft-xmind/最近央行发布的《金融分布式账本安全规范》中提到了区块链系统要提供BFT共识,把之前整理的PBFT的思维导图分享给大家。新标签页中打开,查看高清大图。...
原创
发布博客 2020.03.15 ·
278 阅读 ·
2 点赞 ·
1 评论 ·
1 收藏

为什么PBFT需要3个阶段消息?

原文链接:https://lessisbetter.site/2020/03/15/why-pbft-needs-3-phase-message/文章目录前言PBFT与拜占庭问题拜占庭节点在网络中的行为什么是3阶段消息3阶段消息解决什么问题为什么不能只有前2个阶段消息2个不变性为什么3个阶段消息可以达成一致性总结前言在面试的时候,很多同学的简历熟悉PBFT共识算法,在现场面试的时候,却只能说...
原创
发布博客 2020.03.15 ·
2108 阅读 ·
4 点赞 ·
0 评论 ·
17 收藏

实战Go内存泄露

最近解决了我们项目中的一个内存泄露问题,事实再次证明pprof是一个好工具,但掌握好工具的正确用法,才能发挥好工具的威力,不然就算你手里有屠龙刀,也成不了天下第一,本文就是带你用pprof定位内存泄露问题。关于Go的内存泄露有这么一句话不知道你听过没有:10次内存泄露,有9次是goroutine泄露。我所解决的问题,也是goroutine泄露导致的内存泄露,所以这篇文章主要介绍Go程序的...
原创
发布博客 2019.05.18 ·
1334 阅读 ·
0 点赞 ·
1 评论 ·
1 收藏

Go调度器系列(2)宏观看调度器

上一篇文章《Go语言高阶:调度器系列(1)起源》,学goroutine调度器之前的一些背景知识,这篇文章则是为了对调度器有个宏观的认识,从宏观的3个角度,去看待和理解调度器是什么样子的,但仍然不涉及具体的调度原理。三个角度分别是:调度器的宏观组成调度器的生命周期GMP的可视化感受在开始前,先回忆下调度器相关的3个缩写:G: goroutine,每个G都代表1个goroutine...
原创
发布博客 2019.03.27 ·
193 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Golang并发:再也不愁选channel还是选锁

周末又到了,为大家准备了一份实用干货:如何使用channel和Mutex解决并发问题,利用周末的好时光,配上音乐,思考一下吧
原创
发布博客 2019.01.14 ·
12029 阅读 ·
13 点赞 ·
1 评论 ·
53 收藏

以太坊源码分析:statedb

前言就如以太坊黄皮书讲的,以太坊是状态机,区块的产生,实际是状态迁移的过程。那以太坊是如何定义状态的?是如何迁移状态的?是怎么存储状态的?这篇文章就介绍什么是状态,以及是怎么存储的。状态基本知识状态的定义一个账户的信息,就是一个状态,而以太坊是所有状态的集合。比如,最开始的状态是:{A有10元,B有0元},后来A发起了交易,给B2元,状态变成{A有8元,B有2元},这中间的过...
原创
发布博客 2019.01.05 ·
4071 阅读 ·
0 点赞 ·
1 评论 ·
9 收藏

以太坊源码分析:fetcher模块和区块传播

前言这篇文章从区块传播策略入手,介绍新区块是如何传播到远端节点,以及新区块加入到远端节点本地链的过程,同时会介绍fetcher模块,fetcher的功能是处理Peer通知的区块信息。在介绍过程中,还会涉及到p2p,eth等模块,不会专门介绍,而是专注区块的传播和加入区块链的过程。当前代码是以太坊Release 1.8,如果版本不同,代码上可能存在差异。总体过程和传播策略本节从宏观角度介绍...
原创
发布博客 2019.01.05 ·
902 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

以太坊源码分析之事件框架

过去在学Actor模型的时候,就认为异步消息是相当的重要,在华为的时候,也深扒了一下当时产品用的消息模型,简单实用,支撑起了很多模块和业务,但也有一个缺点是和其他的框架有耦合,最近看到以太坊的事件框架,同样简单简洁,理念很适合初步接触事件框架的同学,写文介绍一下。以太坊的事件框架是一个单独的基础模块,存在于目录go-ethereum/event中,它有2中独立的事件框架实现,老点的叫TypeMu...
原创
发布博客 2019.01.05 ·
282 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

以太坊源码分析:共识(2)接口

前言engine是以太坊封定义的一个接口,它的功能可以分为3类:验证区块类,主要用在将区块加入到区块链前,对区块进行共识验证。产生区块类,主要用在挖矿时。辅助类。接下来我们看一下engine具体定义了哪些功能,还有各功能的使用场景。engine定义的具体功能engine有3类功能,验证区块类、产生区块类、辅助类。因为产生区块在前,验证区块在后,接下来采用产生区块类、验证区块类、...
原创
发布博客 2019.01.05 ·
789 阅读 ·
2 点赞 ·
1 评论 ·
2 收藏

如何优雅的处理Golang错误

在看《Go入门指南》的一种用闭包处理错误的模式时,里面提到了一种错误的优雅处理方式,减少我们重复写if err:=f(); err != nil{}式的代码,感觉很心动,做了下测试,结论如下:能减少if err式的代码,代码可以变清新整洁。使用存在限制:只有当错误需要结束调用时才可以使用这种方法,如果被调用函数返回错误,但调用者函数需处理错误后,向下继续执行,则不能采用这种方法。经常的...
原创
发布博客 2019.01.05 ·
2584 阅读 ·
3 点赞 ·
0 评论 ·
5 收藏

Go的map中删除子map,内存会自动释放吗?

对于频繁增删map的场景,我们很关心map的内存是否会自动释放。结论在Go中,map中存放map,上层map执行delete,子层map占用的内存会释放,无需手动先释放子map内存,再在上层map执行删除。实验在C++中,如果使用了map包含map的数据结构,当要释放上层map的某一项时,需要手动释放对应的子map占用的内存,而在Go中,垃圾回收让内存管理变得如此简单。做2个对比实验,...
原创
发布博客 2019.01.05 ·
3945 阅读 ·
0 点赞 ·
3 评论 ·
1 收藏

探索Golang定时器的陷阱

title: 探索Golang定时器的陷阱date: 2018-09-04 17:43:41tags: [‘Golang’, ‘定时器’]所谓陷阱,就是它不是你认为的那样,这种认知误差可能让你的软件留下隐藏Bug。刚好Timer就有3个陷阱,我们会讲1)Reset的陷阱和2)通道的陷阱,3)Stop的陷阱与Reset的陷阱类似,自己探索吧。Reset的陷阱在哪Timer.Reset()...
原创
发布博客 2019.01.05 ·
253 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

轻松检测Golang并发的数据竞争

Golang中我们使用Channel或者sync.Mutex等锁保护数据,有没有一种机制可以检测代码中的数据竞争呢?背景知识数据竞争是并发情况下,存在多线程/协程读写相同数据的情况,必须存在至少一方写。另外,全是读的情况下是不存在数据竞争的。使用race检测数据竞争go build有个标记race可以帮助检测代码中的数据竞争。➜ awesome git:(master) ✗ go ...
原创
发布博客 2019.01.05 ·
3256 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Golang并发的次优选择:sync包

我们都知道Golang并发优选channel,但channel不是万能的,Golang为我们提供了另一种选择:sync。通过这篇文章,你会了解sync包最基础、最常用的方法,至于sync和channel之争留给下一篇文章。sync包提供了基础的异步操作方法,比如互斥锁(Mutex)、单次执行(Once)和等待组(WaitGroup),这些异步操作主要是为低级库提供,上层的异步/并发操作最好选用通...
原创
发布博客 2019.01.05 ·
312 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一招教你无阻塞读写Golang channel

无论是无缓冲通道,还是有缓冲通道,都存在阻塞的情况,教你一招再也不遇到channel阻塞的问题。这篇文章会介绍,哪些情况会存在阻塞,以及如何使用select解决阻塞。阻塞场景阻塞场景共4个,有缓存和无缓冲各2个。无缓冲通道的特点是,发送的数据需要被读取后,发送才会完成,它阻塞场景:通道中无数据,但执行读通道。通道中无数据,向通道写数据,但无协程读取。// 场景1func Re...
原创
发布博客 2019.01.05 ·
2380 阅读 ·
1 点赞 ·
1 评论 ·
5 收藏
加载更多