这里记录每周值得分享的 Go 语言相关内容,周日发布。
本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue 。
鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。
题图:Go 1.16 发布说明草案,文档大部分已经完成,具体参见:https://tip.golang.org/doc/go1.16
一道考察你能否看懂的题目。
var x int
inc := func() int {
x++
return x
}
fmt.Println(func() (a, b int) {
return inc(), inc()
}())
以上代码输出什么:
A:1 1;B:1 2;C:2 2;D:不确定
苹果的 M1 芯片带来了更多的乐趣,这次运行的是 Hugo 的一系列基准测试,该测试显示了一个芯片明显胜过另一个芯片。
这是一个流行的开源活动,有 Go 相关的,有兴趣的可以了解下。
改动比较多,其中被大家传的最多的就是 Docker 不是默认的容器运行时。
本文档介绍了 Docker Engine 的最新更改,新增功能,已知问题和修复。
学习不错的网站。
十亿美元(billion dollar)的错误 / bug 貌似是美国的一个梗,大概的意思是,对于那些市值上几千亿的大企业,如果一个错误能够导致市值下跌个百分之零点几,就已经是十亿左右了。
将 Goroutine 从一个 OS 线程切换到另一个线程需要一定开销,并且,如果这种操作过于频繁的话会降低应用性能。
寻求贡献者一起维护。
深入分析 mutex 与 cas 的底层实现。
Go channel 中的实现中使用了 mutex,这个 mutex 和标准库中的 Mutex 有什么不同。
本文通过分析一个父进程没有 wait 子进程的问题,了解到了进程 reaper 机制,并进一步了解到它在 container 这种特殊系统环境下的存在意义。
性能问题可以分为两种类型:On-CPU 和 Off-CPU。
9、聊聊 Golang 的 zap 的 WriteSyncer
本文研究 zap 的 WriteSyncer。
这篇文章的初衷是想解答知乎上的一位知友提出的问题。
使用四种不同的方式来介绍如何观察 GC。
1、gosnmp
一个 SNMP(Simple Network Management Protocol)库。SNMP 是一种协议,用于管理或监视有关 IP 网络上的设备(例如路由器,服务器,打印机)的数据。 gosnmp 可让您用 Go 查询和设置数据。
2、gnomock
使用临时 Docker 容器进行无障碍测试。
3、phpgrep
为 PHP 代码准备的。
4、gocrest
类似 Hamcrest 的匹配器,GoCrest 匹配器是可组合的,自我描述的,可以以更易读的形式串在一起以创建灵活的断言。
5、kanzi-go
Go 实现的无损压缩库。
6、gaio
Go 语言高性能网络通信框架。
微众银行开源的 Go 实现的一站式云原生机器学习平台。
8、sariaf
一个快速,简单,轻巧的 HTTP 路由器,代码一共才 200+ 行。
9、cel-spec
Google 开源的通用表达式语言(cel)。
10、hashfs
实现 Go 1.16 的 io/fs.FS,将 SHA256 哈希附加到文件名中,以实现主动 HTTP 缓存。
11、arpc
支持更有效的网络通信。作者投稿,有一篇文章介绍。
1、jsondiff
基于 RFC6902 的 Go JSON diff 库。
Omniparser 是本地的 Golang ETL 解析器,它以流方式提取各种格式(CSV, txt, fixed length/width, XML, EDI/X12/EDIFACT, JSON 和自定义格式)的输入数据,并将数据转换为基于用 JSON 编写的模式。以下是在线的 Demo 示例:https://omniparser.herokuapp.com/。
Lunar Lander 是 1979 年的 Atari 游戏,玩家必须在特定位置放置太空飞船。这是用 Go 语言编写的基于终端的版本,你也可以直接将 ssh 定向到正在运行的实例(使用 sshtargate)。
4、nerdctl
与 docker 兼容的 containerd 客户端工具。
快速,简单的 Go + Docker 开发。
6、lens
k8s IDE 发布了 v4.0 版本。
7、sops
Mozilla 开源的 Go 实现的管理敏感数据的工具。
Mastering Go。有中文版。
9、IDE
Go 打造的在浏览器中使用的 Go IDE。
10、filecrypt
使用 Go 编写的超级易用的文件加密实用程序。
微信搜索"Go语言中文网"或者扫描二维码,即可订阅。