原创 Golang defer的陷阱

你是不是覺得defer很簡單、很好用,但也許你掉坑裏了都不知道! 這篇文章不介紹defer的常用功能,而是介紹你在用defer時,也許會踩的坑。 defer允許我們進行一些函數執行完成後的收尾工作,並且代碼更加簡潔,例如: 關

原创 Fabric 1.4源碼解讀 8:Orderer和Peer的交互

圖片不能顯示時,請查看原文:https://lessisbetter.site/2019/12/17/fabric-blocks-from-orderer-to-peer/ 文章目錄網絡拓撲宏觀視角單通道區塊同步爲何Peer從Or

原创 爲什麼PBFT需要View Changes

若圖片不顯示,請訪問原文:https://lessisbetter.site/2020/03/22/why-pbft-needs-viewchange/ 前言 在當前的PBFT資料中,尤其是中文資料,多數都在介紹PBFT的3階段消

原创 Fabric 1.4源碼解讀 7:Orderer架構解讀

圖片不能顯示時,請查看原文:https://lessisbetter.site/2019/11/21/fabric-orderer-architecture/ 文章目錄Orderer介紹架構多通道共識插件gRPC通信Local C

原创 爲什麼PBFT需要3個階段消息?

圖片不能顯示時,請查看原文::https://lessisbetter.site/2020/03/15/why-pbft-needs-3-phase-message/ 文章目錄前言PBFT與拜占庭問題拜占庭節點在網絡中的行爲什麼是

原创 Fabric 1.4源碼解讀 4:交易背書流程解讀

圖片不能顯示時,請查看原文:https://lessisbetter.site/2019/10/29/fabric-transaction-endorser-source/ 文章目錄流程交易宏觀流程鏈碼調用流程提案背書流程源碼分析

原创 Fabric 1.4源碼解讀 9:從賬本角度看Peer

圖片不能顯示時,請查看原文:https://lessisbetter.site/2020/01/03/fabric-peer-ledger/ 文章目錄賬本區塊文件和區塊索引數據庫歷史數據庫各數據庫實現從數據看Peer功能賬本同步數

原创 一張思維導圖看懂PBFT

圖片不能顯示時,請查看原文:https://lessisbetter.site/2020/03/11/pbft-xmind/ 最近央行發佈的《金融分佈式賬本安全規範》中提到了區塊鏈系統要提供BFT共識,把之前整理的PBFT的思維導

原创 輕鬆入門Golang pprof實用不忽悠

網上已搜索golang pprof,資料不少,簡明高效的一個沒看到,這篇文章5步教你用會pprof獲取cpu和內存prof。 第1步:安裝易用的pprof golang自帶的prof包是runtime/pprof,這個是低級別的,

原创 實戰Go內存泄露

最近解決了我們項目中的一個內存泄露問題,事實再次證明pprof是一個好工具,但掌握好工具的正確用法,才能發揮好工具的威力,不然就算你手裏有屠龍刀,也成不了天下第一,本文就是帶你用pprof定位內存泄露問題。關

原创 Go調度器系列(2)宏觀看調度器

上一篇文章《Go語言高階:調度器系列(1)起源》,學goroutine調度器之前的一些背景知識,這篇文章則是爲了對調度器有個宏觀的認識,從宏觀的3個角度,去看待和理解調度器是什麼樣子的,但仍然不涉及具體的調度原理。 三個角度分別是:

原创 Golang併發:再也不愁選channel還是選鎖

週末又到了,爲大家準備了一份實用乾貨:如何使用channel和Mutex解決併發問題,利用週末的好時光,配上音樂,思考一下吧🤔。 來,問自己個問題:面對併發問題,是用channel解決,還是用Mutex解決? 如果自己心裏還沒有清晰的

原创 探索Golang定時器的陷阱

title: 探索Golang定時器的陷阱 date: 2018-09-04 17:43:41 tags: [‘Golang’, ‘定時器’] 所謂陷阱,就是它不是你認爲的那樣,這種認知誤差可能讓你的軟件留下隱藏Bug。剛好Time

原创 以太坊源碼分析:共識(2)接口

前言 engine是以太坊封定義的一個接口,它的功能可以分爲3類: 驗證區塊類,主要用在將區塊加入到區塊鏈前,對區塊進行共識驗證。 產生區塊類,主要用在挖礦時。 輔助類。 接下來我們看一下engine具體定義了哪些功能,還有各功

原创 Go的map中刪除子map,內存會自動釋放嗎?

對於頻繁增刪map的場景,我們很關心map的內存是否會自動釋放。 結論 在Go中,map中存放map,上層map執行delete,子層map佔用的內存會釋放,無需手動先釋放子map內存,再在上層map執行刪除。 實驗 在C++中,如果