ZibuのHippocampus

人生天地间,忽如远行客

作为区块链的发端者,比特币所采取的POW共识算法的弊端已经日益凸显,因此为了解决能源消耗过高等问题,新的共识算法不断推出。本文将介绍Pow,Pos,DPOS等三个主流共识算法。

阅读全文 »

UTXO概述

Unspent Transaction Output(未花费的交易输出),Transaction被简称为TX

实际的比特币并不存在,存在的只有UTXO。

比特币的交易由交易输入和交易输出组成,每一笔交易输出都需要花费一笔交易输入。输入与输出是等价的,收货人由地址表示,一个人可以有无穷多的地址。

因此每一笔交易都可溯源,不断向上查找父交易,直到找到这个比特币的创建交易,即挖矿奖励。

栗子:当A拥有10个比特币时,向B转3个比特币。实际上是,向B的地址创建一笔+3的交易,然后再创建一个给自己+7的交易。原来的UTXO因为花费就失效了。

阅读全文 »

Go中的接口

Go不是传统的面向对象的编程语言,它里面没有类和继承的概念。
但是Go语言中的接口概念可以很方便的实现许多面向对象的特性。

1
2
3
4
5
type Namer interface {
Method1(param_list) return_type
Method2(param_list) return_type
...
}
阅读全文 »

  • 结构体的三种声明方式,直接声明,new(Struct),混合字面量
  • 结构体的内存布局——Go的结构体数据以连续块的形式存放在内存中
  • 递归结构体——可以引用自身来定义,方便树和链表的建立
  • 结构体工厂
  • 带标签的结构体
  • 匿名字段
  • 结构方法
阅读全文 »

关键词defer允许我们推迟到函数返回之前(既函数return语句之后)一刻才执行某个语句或函数。类似于JAVA中的finally语句块,它一般用于释放某些资源

之所以有defer的语法是为了代码更加的简洁,易读。相当于一个语法糖(在创建资源后,就写好释放资源的代码)

defer的特点如下:

  • 在函数return之后才会执行
  • 当有多个defer执行时,以逆序执行(类似栈,即后进先出)
阅读全文 »

Goroutine ——协程

OS将程序分为了进程和线程来提高程序的CPU利用率,一个进程拥有多个线程,多个线程共享同一份内存空间来实现线程间通信。

协程,可以看做用户级线程(更为轻量级的线程),这个概念是相对于OS 系统级线程所提出的,协程的切换可以由用户控制,而线程只能由操作系统调度。

阅读全文 »

此处记录日常业务编写中所出现的Bug并加以记录,以作为以后快速解决Bug的查询数据库

阅读全文 »

Channel是Go中的一个核心类型,可以把它看作一个管道,通过它可以完成goroutine之间的通信。Channel是FIFO的队列,而且当多个goroutine可以同时读写channel而不用考虑同步

阅读全文 »

此处记录日常业务编写中所出现的Bug并加以记录,以作为以后快速解决Bug的查询数据库

阅读全文 »

Go build / install /clean /fmt /doc /get /test

本文主要介绍了以上几种GO常用命令

阅读全文 »
0%