拜占庭将军问题 发表于 2018-09-04 | 分类于 区块链 拜占庭将军问题(Byzantine failures)是由莱斯利·兰伯特提出的点对点通信中的基本问题。含义是在存在消息丢失的不可靠信道上试图通过消息传递的方式达到一致性是不可能的。因此对一致性的研究一般假设信道是可靠的,或不存在本问题。这个难题也被称为“拜占庭容错”、“拜占庭将军问题”、或者“两军问 ... 阅读全文 »
队列的链式存储结构 发表于 2018-09-04 | 分类于 数据结构和算法 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列。 为了操作上的方便,我们将队头指针指向链队列的头结点,而队尾指针指向终端结点。链队列示意图: 当队列为空时,front和rear都指向头结点 实例代码:12345678910111213141516171 ... 阅读全文 »
go语言之陷阱for range 发表于 2018-09-04 | 更新于 2018-09-05 | 分类于 GO语言 在go语言中,遍历有两种方法,一种就是for的普通方法,还有一种就是for range的遍历,但是在使用for range时,如果使用不当,就会出现一些问题比如我们下面先来看一个例题 123456789101112131415161718192021package mainimport "fmt"t ... 阅读全文 »
go语言错误捕获和panic异常 发表于 2018-09-04 | 更新于 2018-09-05 | 分类于 GO语言 在Go语言中我们首先来看一下err错误信息,我们先来看一段代码 123456789101112131415161718192021222324252627package mainimport ( "fmt" "errors")func calc(a int, b int) (v int, ... 阅读全文 »
go语言切片深入讲解 发表于 2018-09-03 | 更新于 2018-09-05 | 分类于 GO语言 我们在上一篇的切片讲解中,我们讲解到在go语言中 map和切片都是传引用(地址),也就是在调用函数的时候都是可以直接修改变量的值,关于切片,在某种程度上表面上来说也是可以这样说的,我们先来看一下一个小小的例题 1234567891011package mainimport "fmt&quo ... 阅读全文 »
go语言切片微讲解 发表于 2018-09-03 | 更新于 2018-09-05 | 分类于 GO语言 传递参数时分为值传递和地址传递,go语言中切片和map是地址传递,但是切片传递要有一个注意事项 例如: 123456789package mainfunc test(a []int){ a=append(a,1,2,3)}func main(){ var ... 阅读全文 »
插入排序 发表于 2018-09-02 | 分类于 数据结构和算法 插入排序在上一章中我们讲了算法排序中的最简单的冒泡排序,今天我们来讲解一下插入排序,后续将讲解快速排序,归并排序,希尔排序,二叉排序,这些等等,后续的排序都是在时间复杂度和空间复杂度上面优于这两种的,所以我们今天先来讲解一下插入排序 我们先来看以下的一张图 为了方便排序,我们一般将数据的第一个元素 ... 阅读全文 »
LeetCode|无重复字符的最长子串 发表于 2018-09-02 | 更新于 2018-09-07 | 分类于 数据结构和算法 今天的题目为: 给定一个字符串,找出不含有重复字符的最长子串的长度。 示例 1: 123输入: "abcabcbb"输出: 3 解释: 无重复字符的最长子串是 "abc",其长度为 3。 示例 2: 123输入: "bbbbb"输出: 1 ... 阅读全文 »
一条简单区块链的实现 发表于 2018-09-02 | 分类于 区块链 在上一章中我们讲解了一个简单的区块创建,那么我们今天来讲解一下一条简单区块链的实现 思路分析: 创建一个创世块,就是区块链的头 //上一章节中讲解了如果实现一个区块的简单实现 定义一个结构体,用来保存区块链中的区块,结构体里面的元素可以就是那条链 用方法来实现区块的添加,每次调用方法都加进相应 ... 阅读全文 »
一个简单区块的实现 发表于 2018-09-01 | 分类于 区块链 简单区块实现区块链技术如今已经越来越成熟,但是我们怎么深入到本质用技术的眼光来看待区块链技术,见名知意,区块链的意思就是用链条把区块链接起来,那我们先用代码来看一下,今天我们用go语言来简单的实现一个区块并打印。 我们可以先来理一下思路,我们想要实现一个区块该怎么办,思路理好然后再来代码一步一步实 ... 阅读全文 »