Golang 中栈、队列的实现及常用操作,数据结构系列原文:flaviocopes.com,翻译已获作者授权。 栈概述栈是数据按照后进先出 LIFO(Last-In-First-Out) 原则组成的集合。添加和移除元素都是在栈顶进行,类比书堆,不能在栈底增删元素。 栈的应用很广泛,比如网页跳转后一层层返回,ctrl+z 撤销操作等。 使用 slice 动态类型来实现栈,栈元素的类型是使用 genny 创建的通用类型 ItemStack,实现以下常用操作: 123New() // 生成栈的构造器P...
-
Golang 数据结构:栈与队列
-
用 Go 构建一个区块链 -- Part 2: 工作量证明
翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 在前面一文中,我们构造了一个非常简单的数据结构,这个数据结构也是整个区块链数据库的核心。目前所完成的区块链原型,已经可以通过链式关系把区块相互关联起来:每个块都被连接到前一个块。 但是,我们实现的区块链有一个巨大的缺点:向链中加入区块太容易和廉...
-
用 Go 构建一个区块链 ---- Part 1: 基本原型
翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现出来。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是,区块链是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人...