Go语言中文网 为您找到相关结果 8

用 Go 构建一个区块链 ---- Part 1: 基本原型

翻译的系列文章我已经放到了 GitHub 上:blockchain-tutorial,后续如有更新都会在 GitHub 上,可能就不在这里同步了。如果想直接运行代码,也可以 clone GitHub 上的教程仓库,进入 src 目录执行 make 即可。 引言 区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现出来。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是,区块链是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他数据库管理员的同意,才能向数据库中添加新的记录。 此外,也正是由于区块链,才使得加密货币和智能合约成为现实。 在本系列文章中,我们将实现一个简化版的区块链,基于...阅读全文

博文 2017-10-19 01:04:44 liuchengxu

Go语言实现HMACSHA1加密

首先来说说SHA1加密 SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所NIST发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。 --摘自维基百科 HMACSHA1是从 SHA1 哈希函数构造的一种键控哈希算法, 此 HMAC 进程将密钥与消息数据混合,使用哈希函数对混合结果进行哈希计算,将所得哈希值与该密钥混合,然后再次应用哈希函数。 输出的哈希值长度与SHA-1一致 总的来说,两者具体区别好像就是HMACSHA1加密需要密钥,而SHA1不需要。如果有大佬知道其它的区别,麻烦一定要留言告知。...阅读全文

博文 2019-07-10 17:32:44 香蕉你个不呐呐丶

【go tip】建议 gofmt 命令加上 -s 选项

项目在执行 `go build` 或 `go install` 之前,建议执行 `gofmt`,同时加上 `-w -s` 选项,保持代码风格一致。 `-s` 选项会简化代码的写法,比如: ``` []*Person{ &Person{Name: "zhangsan", Age: 21}, &Person{Name: "lisi", Age: 22}, }``` 会被简化为: ``` []*Person{ {Name: "zhangsan", Age: 21}, {Name: "lisi", Age: 22}, } ``...阅读全文

记一次golang 问题的处理

使用简化版本的http post请求会带来一个很莫名其妙的error :EOF 这里有一些解法: 将简化版 的http post改为,client.Do(request),并将request.Close设置为true。 client := &http.Client{} req, err := http.NewRequest(method, url, httpBody) // NOTE this !! req.Close = true req.Header.Set("Content-Type", "application/json") req.SetBasicAuth("user", "pass") resp, err := client.Do(req) if err != nil { // ...阅读全文

博文 2016-02-18 21:00:02 xyzhaopeng

用 Go 构建一个区块链 -- Part 1: 基本原型

引言 区块链是 21 世纪最具革命性的技术之一,它仍然处于不断成长的阶段,而且还有很多潜力尚未显现出来。 本质上,区块链只是一个分布式数据库而已。 不过,使它独一无二的是它是一个公开的数据库,而不是一个私人数据库,也就是说,每个使用它的人都有一个完整或部分的副本。 只有经过其他数据库管理员的同意,才能向数据库中添加新的记录。 此外,正是区块链,才使得加密货币和智能合约成为现实。 在本系列文章中,我们将基于一个简单的区块链实现,构建简化版的加密货币。 区块 让我们从 “区块链” 中的 “区块” 谈起。在区块链中,存储有效信息的是区块。比如,比特币的区块存储了比特币交易,这也是所有加密货币的本质。除此以外,区块还包含了一些技术信息,比如版本,当前时间戳和前一个区块的哈希。 在本文中,我们并不会实...阅读全文

博文 2017-09-23 14:34:52 simple_the_best

golang实现简化版桶算法

/** * 简化版桶算法 * 通过一维数组保存对应数字在一维数组中出现的个数,然后遍历一维数组达到排序的效果 * 这里一位数组是排序列表的范围,必须10以内的数字列表排序, 则一维数组大小为11 (N+1) * * 涉及知识点: * @随机数功能 * @时间处理和格式化 */ package main import ( "fmt" "math/rand" "time" ) func main() { var scoreList [11]int score := [5]int{5, 3, 5, 2, 8} for _, v := range score { scoreList[v]++ } fmt.Println(scoreList) var result []int // fmt.Print...阅读全文

博文 2020-05-25 03:32:49 全栈运维