Tendermint源码学习I

作为一个区块链研究生&码农,没有系统的阅读过一个区块链系统的源码,实在不好意思说出去。之前我阅读过几天的Fabric,结果发现读起来有点难以理解。于是放弃了好久。以前了解了Tendermint,发现是一个研究生的毕设,而且目前应用也挺广泛,就沉下心来阅读一下吧。当然啦,我自己直接阅读起来发现还是有一些问题...

写了一个基于golang的博客系统

最近这段时间,把所有的空闲无聊时间都利用了下,通过使用gin框架,开发了自己的第一套博客系统。 为什么想要开发自己的博客系统呢?主要是闲的。 不开玩笑,主要是使用了typecho很久了,现在的博客系统也是使用的typecho建设的。然后用着感觉很不错,想想自己虽然一直说非常喜欢敲代码,但是一个完全自己独立做出来的...

golang的slice处理

今天在看《go in action》的时候,看到切片这一章对于切片分配有点不太理解,做了几个实验理解了,感觉很有意义,记录下来。 首先我们要说一点,在golang中大部分都是值拷贝,但是slice并不是,而是基于长度进行的选择。我们先做最简单的例子1234567func TestAppend(t *testing...

boltdb阅读IV

我们在前面的文章中创建了一个数据库,接下来就要对数据库进行操作了。 指令为了方便后续的操作,我们沿着以下程序进行阅读1234567db.Update(func(tx *bolt.Tx) error { b, err := tx.CreateBucket([]byte("MyBucket")) if er...

boltdb阅读III

我们上一篇主要分析了boltdb初始化,也就是创建一个新的数据库的过程。 读取数据库如果直接从文件读取,会效率低下,因此bolt做了一个mmap,也就是将数据使用内存映射的方法读取对应的数据。我们接着第一篇的脚步,往后面执行。12345678910111213141516// Initialize page po...

boltdb阅读II

我们继续上篇的bolt源码阅读。 文件锁数据库由于有读写操作,所以会在一定情况下会有多个进程同时写一个文件的情况。1234if err := flock(db, mode, !db.readOnly, options.Timeout); err != nil { _ = db.close() ret...

boltdb阅读I

最近这两天闲了一些,准备好好学一下golang。 学习一门语言最好的办法就是通过项目学习,所以我就找了个评价比较高代码不太大的项目 boltdb,开始学习。 Open为了方便理解,我们假设执行Open是这一句话1db, err := bolt.Open("my.db", 0600, &bolt.Optio...

十年的期许

闲来无事,断断续续的看完了忠犬八公的故事,虽然没有达到很多人哭肿眼睛的程度,内心也已经难以平静。日复一日,年复一年,春去春来,花谢花开,十年来,hachi每天准时5:05等在车站门口,等着主人帕克。这一切,可能都源于那晚的邂逅吧。小八选择帕克,而帕克已经成为了小八的全部。 可能由于从小家里就养狗吧,我对狗有着很深...

win10安装latex使用sublime

最近要写论文,推荐使用latex书写,由于比较习惯sublime,就安装了一遍。 先说一点心得,用了latex后感觉markdown好简陋啊,突然很想用latex写博客了。还没在网上调查有没有什么工具可以实现,不过估计是没有的。 texlive安装latex的安装还是比较简单的,可以直接去官网下载exe安装包,但...

掌握比特币IV:节点功能II

上一篇大体讲了比特币中节点主要全节点的功能,本文分析下轻节点等相关的功能。 spv节点这个是钱包使用的较多的节点方式。SPV(simple payment verify),就是验证一笔交易,没必要把其他的交易信息都下载下来,只需要下载和交易相关的区块,其他的下载区块头就可以了。所以一个SPV节点需要和连接到区块链...