- 博客(12)
- 资源 (2)
- 收藏
- 关注
翻译 以太坊 ERC-20 Token Standard(翻译)
ERC-20 代币(Token )标准英文原文: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-20.mdFabian Vogelsteller fabian@ethereum.org, Vitalik Buterin vitalik.buterin@ethereum.orgToken翻译为’代币’感觉更直观一些。在有些文章中翻...
2018-10-13 21:20:11
1258
原创 Golang 控制台百行代码贪吃蛇小游戏
Golang 并不适合在前端工作,缺少强大的图形图像包和硬件加速包,更适合做成后台服务程序。本文的贪吃蛇小游戏运行与控制台上,其中调用了Window系统kernel32.dll中控制台相关的函数。 项目地址: https://gitee.com/redfire0922/snakego 可以使用如下命令下载源码 go get gitee.com/redfire0922/snakego...
2018-09-01 11:29:56
3772
1
原创 Golang 交叉编译与选择性编译
Golang具有跨平台编译特性,省去了各个平台装编译环境的麻烦,设置起来也相当简单。交叉编译交叉编译主要是两个编译环境参数 $GOOS 和 $GOARCH 的设定。$GOOS代表编译的目标系统,$GOARCH代表编译的处理器体系结构。 $GOOS可选值如下 darwin dragonfly freebsd linux netbsd openbsd ...
2018-08-30 21:34:54
4101
原创 Ubuntu系统下Go语言环境的光速搭建
正如go语言从1.8版本开始环境变量GOPATH有了默认值,从1.10开始能够自动推导GOROOT以及其他相关变量的值。 GOPATH默认值 在Unix-like系统上是在$HOME/go目录下 在Windows系统下是%USERPROFILE%\go虽然这样的变化对于gopher们的意义微乎其微。但对于只是想用用go语言编写的工具的人员却是相当友好。因为目前大量个人开发...
2018-08-20 20:48:27
379
原创 Golang 深入理解io.Pipe同步通道
io.Pipe实现了一对多、多对多、多对一的内存数据通道功能,创建方式如下func Pipe() (*PipeReader, *PipeWriter) Pipe creates a synchronous in-memory pipe. It can be used to connect code expecting an io.Reader with code expecting a...
2018-08-19 20:44:46
6311
原创 Golang 构建网络传输数据包
网络通信中,端与端之间只能传输二进制数据流。TCP/IP协议的解析已经完全交给了硬件设备完成,即便是软路由等用服务器上装软件来替代硬件设备也已经相当成熟。我们需要面对的都是应用层的通信问题。而大部分情况下也无需考虑通信细节,因为总有各种框架比如长连接的websocket框架,处理HTTP协议的网站框架。或者直接提供网络访问包比如访问数据库的包,各种消息队列服务包。总之网络通信只剩下序列化对象,发送...
2018-07-26 22:06:15
4943
原创 Golang 理解slice很重要
Go语言的slice结合了数组的性能优势,同时提供了便捷的操作模式。它的本质只是在数组之上提供了访问指定范围内(起始索引和终止索引)的数组数据。要理解slice首先要说说数组。任何数组 A 都具有一个固定不变的长度 len 和指向首地址的指针 ptr,以及高效访问第n个数组成员的方法 A[ptr+n] (0 <= x < N)。 数组的长度是固定的,这是数组的最大劣势。在实际应用...
2018-07-23 20:55:17
3052
原创 Golang 的defer执行规则
defer介绍defer是golang的一个特色功能,被称为“延迟调用函数”。当外部函数返回后执行defer。类似于其他语言的 try… catch … finally… 中的finally,当然差别还是明显的。在使用defer之前我们应该多了解defer的特性,这样才能避免使用上的误区。1. 最简单的deferfunc test(){ defer func(){ fmt....
2018-07-06 22:37:48
8550
1
原创 Golang 越过关闭 Channel留下的坑
题外话目前CPU的核是越来越多,单个核的计算能力并没有大的提升。主要是硅晶片加工工艺快到头了,不能够提质,那就只能堆量。对于NodeJs这种单线程或少线程应用就很受限制。单线程都是在一个核上跑,虽然能够充分发挥单核性能,但很难发挥多多核优势,对于整体服务器利用率不高(有异议,请无视这个举例)。我们可以通过缩小单个处理任务拆分为大量的小任务然后并发执行来充分发挥服务器多核性能。这就涉及两个问...
2018-07-04 20:39:12
6856
原创 Golang实现简化版解析TOML格式
TOML的由来配置文件的使用由来已久,从.ini、XML、JSON、YAML再到TOML,语言的表达能力越来越强,同时书写便捷性也在不断提升。 TOML是前GitHub CEO, Tom Preston-Werner,于2013年创建的语言,其目标是成为一个小规模的易于使用的语义化配置文件格式。TOML被设计为可以无二义性的转换为一个哈希表(Hash table)。完全版解析TOML格式...
2018-07-03 19:28:42
2094
原创 Golang Scanner分拆 自定义分隔的数据
我们经常会遇到解析某个符号分隔的一串数列的问题。比如文章中的单词以空格分隔,简化版的csv格式以逗号分隔或者临时由两个符号分隔的二维表数据。这些数据用JSON,TOML描述又太笨重,要的就是简简单单。因此可以利用Scanner来完成。import ( "fmt" "bufio" "bytes&
2018-07-02 18:18:05
3731
原创 Golang rune []byte string 的相互转换
rune在一些流行编程语言中并没有对应的数据类型。因此首要需要先搞清楚这到底是个啥,否则这个大坑能埋很多人。且看代码func main(){ str := "名称Tom" fmt.Println(len(str)) fmt.Println(len([]byte(str)))}output: 9 9 输出的结果可以发现字符串的长度竟然和[]byte一样长。由此...
2018-07-02 14:13:25
30037
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人