0%

Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议。通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情 况下提供资源隔离的应用运行环境。由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括 Google、Microsoft、VMware等业界行业领导者。同时,Docker在开发者社区也是一石激起千层浪,许多如我之码农纷纷开始关注、学 习和使用Docker,许多企业,尤其是互联网企业,也在不断加大对Docker的投入,大有掀起一场容器革命之势。

阅读全文 »

RRD 全称是 Round Robin Database ,即「环型数据库」。顾名思义,它是一种循环使用存储空间的数据库,适用于存储和时间序列相关的数据。RRDTool是RRD的实现工具,可用于存储和展示被监测对象随时间的变化情况。

“Round Robin”是一种存储数据的方式,使用固定大小的空间来存储数据,并有一个指针指向最新的数据的位置。存储数据的数据库的空间看成一个圆,上面有很多刻度,每个刻度上可以存储一个数值,同时有一个从圆心指向最新存储值的指针。随着时间推移,指针会绕着圆心一直移动下去,当它指向下一个刻度后,就可以在那个位置上存储一个新的数值。在一段时间后,当所有的空间都存满了数据,就又从头开始存放。这样整个存储空间的大小就是一个固定的数值。

阅读全文 »

defer和go一样都是Go语言提供的关键字。defer用于资源的释放,会在函数返回之前进行调用。一般采用如下模式:

1
2
3
4
5
f,err := os.Open(filename)
if err != nil {
panic(err)
}
defer f.Close()

如果有多个defer表达式,调用顺序类似于栈,越后面的defer表达式越先被调用。
不过如果对defer的了解不够深入,使用起来可能会踩到一些坑,尤其是跟带命名的返回参数一起使用时。在讲解defer的实现之前先看一看使用defer容易遇到的问题。

阅读全文 »

摘要: 区块链(Blockchain)是比特币的一个重要概念,本质上是一个去中心化的数据库,同时作为比特币的底层技术。本文将前一段时间整理的区块链技术文章做成了集合,以供大家学习。

今年以来“区块链”的概念可以说是异常火爆,好像互联网金融峰会上没人谈一谈区块链技术就out了,BAT以及各大银行还有什么金融机构都在开始自己的区块链研究工作,就连IBM最近也成立了自己的区块链研究实验室,但其实区块链到底是什么?大家或许并不清楚,停留在雾里看花的状态。前一段时间为大家整理一个区块链学习系列文章,在这里为大家提供一个文章集合,大家就和我一起走进区块链吧,揭开区块链的神秘面纱吧!

阅读全文 »

了解Golang中的各种类型变量在内存中的布局,有利于帮助我们加深理解。另一种更直接的方式是阅读源码,之后阅读rumtime包深入去了解Golang的运行机制。

阅读全文 »

首先说明json是不支持{"Bar":"test","M":{1:"a",2:"b"}}key是int的json字符串,官方encoding/json包也不解析这类json串。为什么还要解析这样的josn串呢。java的fastjson对Map<Int, String>解析生产1:"a",2:"b"的非标准json串。接下来就来实现解析这类非标准的json串吧。

阅读全文 »

Golang语言的接口实现是隐式声明,目标类只要实现接口定义的所有方法,就被视为实现了接口。接口使用了一个名为itab的结构存储运行期所需的相关类型信息。现在利用gdb调试器来查看结构存储的具体内容。

阅读全文 »

常用的bit下载软件:uTorrent(Windows用户推荐)、 Azureus、 BitTornado、 KTorrent、 RTorrent、 Transmission、 Deluge。捣鼓了下载机,安装了系统ubuntu16 tls,现在就选择deluge作为bit下载软件。这里记录下安装流程:

阅读全文 »

哈希表的原理与实现

一列键值对数据,存储在一个table中,如何通过数据的关键字快速查找相应值呢?不要告诉我一个个拿出来比较key啊,呵呵。

大家都知道,在所有的线性数据结构中,数组的定位速度最快,因为它可通过数组下标直接定位到相应的数组空间,就不需要一个个查找。而哈希表就是利用数组这个能够快速定位数据的结构解决以上的问题的。

阅读全文 »