这里记录每周值得分享的 Go 语言相关内容,周日发布。

本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2]

鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。

题图:Go 在谷歌的使用插图

刊首语

借用 Dave Cheney 的一道测试题作为这次周刊的刊首语。

以下程序打印什么?

package mainimport (    "context"    "fmt")func f(ctx context.Context) {    context.WithValue(ctx, "foo", -6)}func main() {    ctx := context.TODO()    f(ctx)    fmt.Println(ctx.Value("foo"))}

资讯

1、关于 Go 语言泛型设计的最新进展和一些问题的说明

前段时间 Go 官方发布了新的泛型草案,一时间在社区引起了很大的反响,各种关于泛型的文章、讨论涌现出来。8 月 21日 Ian Lance Taylor 在 golang-nuts 讨论组总结了泛型设计的最新进展和一些问题的说明。

2、Istio 1.5.10 发布[3]

Istio 是一个由谷歌、IBM 与 Lyft 共同开发的开源项目,旨在提供一种统一化的微服务连接、安全保障、管理与监控方式。具体来说,Istio 是一个开源服务网格平台,它确保微服务在处理故障时以指定的方式相互连接。这是小版本升级。

3、Kubernetes v1.19.0 正式发布[4]

终于,我们迎来了 Kubernetes 1.19 版本,这是 2020 年的第二个版本,也是迄今为止最长的发布周期,总共持续 20 周。它由 33 项增强功能组成。12 个增强功能进入稳定版,18 个增强功能进入测试版,13 个增强功能进入 alpha 版。

4、net 包将导出 ErrClosed 以便程序可以可靠的判断当前链接是否已经关闭[5]

从提交可以看到这点。

文章

1、Go 热重载工具 air 不好使了:goproxy.cn 的锅?

大家写开源项目还是需要注意下。

2、我擦~字符串转字节切片后,切片的容量竟然千奇百怪

给结论,字符串转字节切片步骤如下:

1)判断是否是常量, 如果是常量则转换为等容量等长的字节切片

2)如果是变量, 先判断生成的切片是否发生变量逃逸

  • 如果逃逸或者字符串长度>32, 则根据字符串长度可以计算出不同的容量
  • 如果未逃逸且字符串长度<=32, 则字符切片容量为32

3、踩了 Go 1.15 sync.Map的一个坑[6]

使用 1.15 的用户可以注意下。

4、微服务的战争:统一且标准化

“微服务的战争” 是一个关于微服务设计思考的系列题材,主要是针对在微服务化后所出现的一些矛盾/冲突点,不涉及具体某一个知识点深入。

5、2021 年最佳的后端编程语言会是谁?

Go、Python 还是 NodeJS 等。

6、Go 每日一库之 go-bindata — 静态资源嵌入详解

本文没有一开始给出最佳实践,而是从最简单的做法开始,展示一点一点改进的过程。长度尽量精简,希望你看到最后。

7、手把手教你用 ETCD:一篇短文却包含众多知识

一句话概括的话:ETCD 是一个基于 RAFT 的分布式 KV 存储系统。

8、都说 Go 可以开启成千上万的 Goroutine,那调度器是怎么处理核上任务分配的?

在 Go 中创建 Goroutine 既方便又快捷,然而 Go 在同一时间内最多在一个核上运行一个 Goroutine,因此需要一种方法来存放其他的 Goroutine,从而确保处理器(processor)负载均衡。

9、容器基础:Cgroup[7]

Cgroup 是 Control Group 的缩写,提供对一组进程,及未来子进程的资源限制、控制、统计能力,包括CPU、内存、磁盘、网络。

10、线上 Go 程序偶尔出现异常怎么办?这个思路可解决你的烦恼

Go 项目做的比较大(主要说代码多,参与人多)之后,可能会遇到类似下面这样的问题:

  • 程序老是半夜崩,崩了以后就重启了,我也醒不来,现场早就丢了,不知道怎么定位
  • 这压测开压之后,随机出问题,可能两小时,也可能五小时以后才出问题,这我蹲点蹲出痔疮都不一定能等到崩溃的那个时间点啊
  • 有些级联失败,最后留下现场并不能帮助我们准确地判断问题的根因,我们需要出问题时第一时间的现场

开源项目

1、go-reddit[8]

用于访问 Reddit API 的库。

2、modernc/sqlite[9]

一个自包含,无服务器,零配置的事务型 SQL 数据库引擎的进程内实现。

3、httpmock[10]

Go 轻量级的 http mock 库,建立在标准库 httptest 之上。

4、go-nfs[11]

NFSv3 协议的纯 Go 实现。

5、csvstruct[12]

CSV 反序列化为结构体对象库。

6、golf-engine[13]

GoLF 游戏引擎。

7、logr[14]

k8s 之父 Tim Hockin 创建的 go log 接口库。

8、cassandra web ui[15](yulintsai[16] 投稿)

cassandra-web 是一个以 golang&vue.js 为基础,以 Web-Base 方式架构在网站主机上的 cassandra 的资料库管理工具,让管理者可用 Web 界面管理 cassandra 资料库。

资源&&工具

1、从头开始用 Go 处理音频[17]

有关使用 Go 进行音频处理的一系列文章。介绍了如何使用自己创建的声波从头开始创建波形文件。

2、minify[18]

用于 Web 格式(CSS,HTML,JSON 等)的 Go 实现的压缩工具。这里有一个在线 Demo:https://go.tacodewolff.nl/minify。

3、maddy[19]

可组合的多合一邮件服务器。可以用作 MTA,通过 SMTP 接收邮件,存储邮件甚至通过 IMAP 提供对它们的访问权限。

4、播客第 134 期[20]

context.Context 的用法与误用。

5、localchat[21]

Go 编写的局域网聊天工具。

6、script-httpd[22]

将一个命令行脚本转换为 Web 服务。

7、gitlab[23]

Go 实现的 gitlab 客户端命令行工具。

8、油管视频[24]

Russ Cox 讲解 go:build 设计草案。

9、mini-blockchain[25]

基于教学目的区块链的 Go 语言参考实现。

10、go-readelf[26]

用 Go 编写的 elf 二进制解析实用程序。

11、monsoon[27]

用 Go 编写的快速灵活的 HTTP enumerator。

参考资料

[1]

polaris1119/golangweekly: https://github.com/polaris1119/golangweekly

[2]

提交 issue: https://github.com/polaris1119/golangweekly/issues

[3]

Istio 1.5.10 发布: https://www.oschina.net/news/118181/istio-1-5-10-released

[4]

Kubernetes v1.19.0 正式发布: https://dylanmeeus.github.io/tags/goaudio/

[5]

net 包将导出 ErrClosed 以便程序可以可靠的判断当前链接是否已经关闭: https://github.com/golang/go/commit/e9ad52e46dee4b4f9c73ff44f44e1e234815800f

[6]

踩了 Go 1.15 sync.Map的一个坑: https://purewhite.io/2020/08/24/golang-sync-map-keys-never-delete/

[7]

容器基础:Cgroup: https://lessisbetter.site/2020/08/27/cgroup-1/

[8]

go-reddit: https://github.com/vartanbeno/go-reddit

[9]

modernc/sqlite: https://gitlab.com/cznic/sqlite

[10]

httpmock: https://github.com/dankinder/httpmock

[11]

go-nfs: https://github.com/willscott/go-nfs

[12]

csvstruct: https://github.com/artyom/csvstruct

[13]

golf-engine: https://github.com/bjatkin/golf-engine

[14]

logr: https://github.com/go-logr/logr

[15]

cassandra web ui: https://github.com/orzhaha/cassandra-web

[16]

yulintsai: https://github.com/yulintsai

[17]

从头开始用 Go 处理音频: https://dylanmeeus.github.io/tags/goaudio/

[18]

minify: https://github.com/tdewolff/minify

[19]

maddy: https://github.com/foxcpp/maddy

[20]

播客第 134 期: https://changelog.com/gotime/143

[21]

localchat: https://github.com/fiatjaf/localchat

[22]

script-httpd: https://github.com/beefsack/script-httpd

[23]

gitlab: https://github.com/profclems/glab

[24]

油管视频: https://www.youtube.com/watch?v=AgR_mdC4Rs4

[25]

mini-blockchain: https://github.com/codingtmd/mini-blockchain

[26]

go-readelf: https://github.com/sad0p/go-readelf

[27]

monsoon: https://github.com/RedTeamPentesting/monsoon

[28]

Go语言中文网: https://studygolang.com/go/weekly

[29]

微信公众号: https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91

context存放内容_Go语言爱好者周刊:第 58 期—关于 context相关推荐

  1. go 字符串替换_Go语言爱好者周刊:第 64 期 — goup 这个工具了解下

    这里记录每周值得分享的 Go 语言相关内容,周日发布. 本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue . 鉴 ...

  2. go json部分解析_Go语言爱好者周刊:第 60 期 — 今天这题你做对了吗?

    这里记录每周值得分享的 Go 语言相关内容,周日发布. 本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue . 鉴 ...

  3. Go语言爱好者周刊:第 5 期

    这里记录每周值得分享的 Go 语言相关内容,周日发布. 欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[1] . 微信公众号无法外链,请通过文末「阅读原文」查看. 鉴于大部分人可能没法坚持 ...

  4. go调用ethereum_Go语言爱好者周刊:第 76 期 — 新年计划做了吗?

    这里记录每周值得分享的 Go 语言相关内容,周日发布. 本周刊开源(GitHub:polaris1119/golangweekly),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue . 鉴 ...

  5. Go语言爱好者周刊:第 14 期

    点击上方蓝色"Go语言中文网"关注我们,领全套Go资料,每天学习 Go 语言 这里记录每周值得分享的 Go 语言相关内容,周日发布. 本周刊开源(GitHub:polaris111 ...

  6. Go语言爱好者周刊:第 142 期

    据说留言能看到你在哪里哦!? 这里记录每周值得分享的 Go 语言相关内容,周日发布.本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/ ...

  7. Go语言爱好者周刊:第 144 期 — 一道切片的题目

    这里记录每周值得分享的 Go 语言相关内容,周日发布.本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2 ...

  8. Go语言爱好者周刊:第 137 期 — 34%的正确率

    这里记录每周值得分享的 Go 语言相关内容,周日发布.本周刊开源(GitHub:polaris1119/golangweekly[1]),欢迎投稿,推荐或自荐文章/软件/资源等,请提交 issue[2 ...

  9. Go语言爱好者周刊:第 7 期

    这里记录每周值得分享的 Go 语言相关内容,周日发布. 由于微信不允许外链,文中外链请通过点击文末的「阅读原文」查看. 本周刊开源(GitHub:polaris1119/golangweekly[1] ...

最新文章

  1. [恩难到了]陨石的秘密
  2. 升级CommunityServer2.0出现的两个问题的解决方法
  3. 抖音只能上下滑动吗_抖音:如何靠评论,轻松涨粉十万
  4. 读书笔记:《Aspx开发200问》——如果实现动态加载用户空间
  5. 软件测试b s环境如何配置,B/S架构测试环境搭建_DB2篇(Win32系统)
  6. 树:二叉树的层序遍历算法(超简洁实现及详细分析)
  7. MyBatis简单了解
  8. 磁盘设置压缩导致无法将数据库还原到该硬盘的问题
  9. python操作crontab定时任务
  10. c语言布线编程问题,布线问题c语言实现代码.doc
  11. Linux服务器部署蝉道软件(安装mysql)
  12. 2020-10-28-Requests及爬虫清单
  13. Refresh Token介绍
  14. 电影《海贼王:红发歌姬》观后感
  15. html新年礼物,特别的新年礼物 特殊的新年礼物
  16. 为什么大型高难度工程的首选支模架是盘扣架?
  17. css记录div渐变背景设置border-radius圆角显示不完整
  18. 信息收集--Nmap
  19. linux桌面图标不见_Ubuntu系统桌面任务栏和启动器全部消失解决方案
  20. 简述对css盒子模型的理解_css 盒子模型理解

热门文章

  1. 1060 Are They Equal (25 分)【难度: 一般 / 知识点: 模拟 字符串处理】
  2. C语言希尔排序(解析)
  3. MySQL中的数据分组
  4. Spring配置Bean的方式
  5. servlrt程序的入口点是_小程序深度报告:全网数量约550万,日活跃超4.4亿
  6. java.lang.IllegalArgumentException at org.springframework.asm.ClassReader.init(Unknown Source)
  7. java基础(八) 深入解析常量池与装拆箱机制
  8. idea redis 插件_Redis客户端RDM收费后,还有哪些开源的替代品呢?
  9. (JAVA学习笔记) 关于i++和++i的区别
  10. jQeury的日期时分秒生成器插件,使用jQuery的匿名函数,静态方法的使用