[返回] [最新] [最热门] [最高评价]

创建最小的Go docker 镜像

虽然曾有一些文章介绍了如何创建一个最小的Go Docker镜像,我也曾写过一篇文章,但是随着Go的新的版本的发布, 以及docker本身的进化,有些技巧已经发生了变化, 本文介绍了最新的创建超小的Go镜像的方法。

一个简单Go程序的镜像

首先让我们创建一个很简单的Go程序:

1
2
3
4
5
6
7

package main

import "fmt"

func main() {
f
...

鸟窝 2018-08-14 10:57 | 查看: 178

[译]Go HttpServer 最佳实践

这是 Cloudflare 的 Filippo Valsorda 2016年发表在Gopher Academy的一篇文章, 虽然过去两年了,但是依然很有意义。

先前 crypto/tls 太慢而net/http也很年轻, 所以对于Go web server来说, 通常我们明智的做法把它放在反向代理的后面, 如nginx等,现在不需要了。

在Cloudflare我们最近试验了直接暴漏纯Go的服务
...

鸟窝 2018-07-31 16:27 | 查看: 562

完全静态编译一个Go程序

在Docker化的今天, 我们经常需要静态编译一个Go程序,以便方便放在Docker容器中。 即使你没有引用其它的第三方包,只是在程序中使用了标准库net,你也会发现你编译后的程序依赖glic,这时候你需要glibc-static库,并且静态连接。

不同的Go版本下静态编译方式还有点不同,在go 1.10下, 下面的方式会尽可能做到静态编译:

1

CGO_ENABLED=0 go build
...

鸟窝 2018-07-25 11:37 | 查看: 810

CGO 文章整理

虽然CGO属于不太常用的技术,但是偶尔在一些场景中还是会用到的,本文搜集了一些CGO的文章, 方便大家学习和参考。

官方文章

cmd/cgo: cgo命令行工具

wiki/cgo: 简介

C? Go? Cgo!: 古老的文章

WindowsDLLs: 不是CGO

通过cgo调用C代码: Go语言圣经中的介绍

相关文章

cgo is not Go: Dave Cheney的文章,CG
...

鸟窝 2018-07-19 17:46 | 查看: 651

ldd、objdump、nm、strings、strip等工具

最近在做Docker镜像的时候发现镜像文件非常大,需要找出程序的依赖库,减少程序的大小,所以整理了一下相关的工具。基本上这些工具都在GNU Binutils中。

GNU Binary Utilities或binutils是一整套的编程语言工具程序,用来处理许多格式的目标文件。当前的版本原本由在Cygnus Solutions的程序员以Binary File Descriptor library(
...

鸟窝 2018-07-12 16:49 | 查看: 336

解决 error creating overlay mount to /var/lib/docker/overlay2

最近在centos7.1使用docker运行redis镜像,出现下面的错误:

1
2

/usr/bin/docker-current: Error response from daemon: error creating overlay mount to /var/lib/docker/overlay2/65f3c109fb903539820f84856d2725af784f2f03f95b1
...

鸟窝 2018-06-28 16:59 | 查看: 322

使用 Go 实现快速排序

快速排序(quick sort)号称是二十世纪最伟大的十大算法之一(The Best of the 20th Century: Editors Name Top 10 Algorithms), 但是快速排序也是最不容易实现的排序算法之一 ()。虽然它的原理非常的简单,但实现起来很容易出错。 也曾因为快排导致腥风血雨甚至网站攻击事件。

快速排序由C. A. R. Hoare在1962年提出。它的基
...

鸟窝 2018-06-26 19:22 | 查看: 353

停止、删除所有的docker容器和镜像

这些命令总是记不住,或者说不用心去记,所以记录在本文中,以便将来查询。

列出所有的容器 ID

1

docker ps -aq

停止所有的容器

1

docker stop $(docker ps -aq)

删除所有的容器

1

docker rm $(docker ps -aq)

删除所有的镜像

1

docker rmi $(docker images -q)

复制文件

1
...

鸟窝 2018-05-31 20:25 | 查看: 560

搭建IPFS私有网络

IPFS (InterPlanetary File System) 是一个面向全球的、点对点的分布式版本文件系统。它用基于内容的地址替代基于域名的地址,也就是用户寻找的不是某个地址而是储存在某个地方的内容,不需要验证发送者的身份,而只需要验证内容的哈希,通过这样可以让网页的速度更快、更安全、更健壮、更持久。IPFS表示,IPFS未来将替代HTTP(以及其他的许多东西)。

IPFS 和 BitTo
...

鸟窝 2018-05-29 17:35 | 查看: 499

2018微博内部技术分享春晚专场

这是公司内部分享的各部门春晚保障的技术分享。我将其中的和公司隐私相关的数据删除了,只保留了技术的介绍,总结了一些知识点。

Tim开场白。

双十一、微信红包和微博的区别(无法预期)。

三条军规。

孟兆飞 混合云架构下微博春晚保障

流量

突发流量: 日常、异常

春晚

央视合作

万台扩容挑战

联路长

依赖多

高并发

15分钟1000台全公司随时随地

自动化

智能弹性

混合
...

鸟窝 2018-04-24 18:32 | 查看: 481

Go Channel 应用模式

Channel是Go中的一种类型,和goroutine一起为Go提供了并发技术, 它在开发中得到了广泛的应用。Go鼓励人们通过Channel在goroutine之间传递数据的引用(就像把数据的owner从一个goroutine传递给另外一个goroutine), Effective Go总结了这么一句话:

Do not communicate by sharing memory; instead
...

鸟窝 2018-03-28 14:48 | 查看: 973

DHT 分布式哈希表

本文主要整理维基百科中英文和百度百科等资料,算是对 DHT 技术做一个综述,基本都是摘自参考资料中的文档。

DHT

分布式哈希表(distributed hash table,缩写DHT)是分布式计算系统中的一类,用来将一个键(key)的集合分散到所有在分布式系统中的节点。这里的节点类似哈希表中的存储位置。分布式哈希表通常是为了拥有大量节点的系统,而且系统的节点常常会加入或离开。

研究分布式
...

鸟窝 2018-03-26 18:36 | 查看: 536

...更多...