七叶笔记 » golang编程 » Go语言爱好者周刊:第 12 期

Go语言爱好者周刊:第 12 期

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

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

由于头条不允许外链,文中链接可以通过文末引用找到,或「了解更多」查看。

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

题图:来源 golangweekly.com

刊首语

Go 有语言公认的一个很好的工具是 gofmt,它让不同人的代码写出来风格差不多,这也极大的减少了团队对代码风格的要求。

最近 Uber 公开的一份 Go 语言编程规范 [3] ,受到极大的欢迎。2、3 天时间,star 数 2.4k+,今天(2019-10-13 日),Tony Bai 和 legendtkl(陶大)同时发布了翻译版本(见下文),推荐大家学习,根据情况用在自己的日常 编码 和团队规范中。

资讯

1、gcs v0.1.1 加入接口缓存,Go 配置管理 平台 [4]

gcs(go config server) 配置管理平台,此项目基于 gf 框架开发,支持项目管理、配置管理、配置发布、项目对比、配置复制,接口获取配置等。

2、Traefik 2.0.2 发布,HTTP 反向代理 与负载均衡工具 [5]

Træfɪk 是一个新型的 HTTP 反向代理、负载均衡软件,能轻易的部署 微服务 ,它支持多种后端 ( Docker , Swarm, Mesos/Marathon, Consul, Etcd, Zookeeper, BoltDB, Rest API, file…) ,可以对配置进行自动化、动态的管理。

3、gout v0.0.1 发布,golang 流式 http client [6]

gout 是 go 写的 http 客户端,为提高工作效率而开发。

4、

Rancher 2.3 发布,支持 Windows 容器,集成 Istio

据说这是 Rancher Labs 迄今为止最重要的版本更新。Rancher 2.3 是业界首个 GA 支持 Windows 容器的 Kubernetes 管理平台,并正式集成了 Istio,还引入了创新的“集群模板”功能以增强企业集群的安全性。

5、Grafana 6.4.2 发布,系统指标监控与分析平台 [7]

Grafana 是一个功能丰富的指标标准仪表板和图形编辑器,用于分析和监控 Graphite、Elasticsearch、OpenTSDB、Prometheus 和 InfluxDB。

6、Excelize 发布 2.0.2 版本,Go 语言 Excel 基础库 [8]

Excelize 是 Go 语言编写的一个用来操作 Office Excel 文档类库,基于 ECMA-376 OOXML Spec。可以使用它来读取、写入 XLSX 文件,相比较其他的开源类库,Excelize 支持操作带有数据透视表、切片器、图表与图片的 Excel 并支持向 Excel 中插入图片与创建简单图表,可应用于各种报表系统中。Excelize 作为 2018 开源中国 Gitee 最有价值 开源项目 GVP [9] ,现已成为 Go 语言最受欢迎的 Excel 文档基础库。

7、TiDB 3.0.4 发布,分布式 NewSQL 数据库 [10]

TiDB 是国内 PingCAP 团队开发的一个分布式 SQL 数据库。其灵感来自于 Google 的 F1 和 Google spanner, TiDB 支持包括传统 RDBMS 和 NoSQL 的特性。

8、Harbor 1.9 发布,新增多项企业级功能 [11]

Harbor 是为企业用户设计的 Registry server 开源项目,包括了权限管理(RBAC)、LDAP、审计、安全漏洞扫描、镜像验真、管理界面、自我注册、HA 等企业必需的功能,同时针对中国用户的特点,设计镜像复制和中文支持等功能。

9、MongoDB Go 官方驱动 1.1.2 版本发布 [12]

这是小版本更新。

10、GoLand 2019.2.3 发布 [13]

主要是 bug 修复。

问答

1、对于无缓冲的 channel,用 select 来处理通道超时时间,如果在接收超时后,退出接收,那么该通道的发送会被阻塞吗? [14]

欢迎讨论。

2、map 怎么确定 key 是否存在,如果访问了不存在的 key 会出现什么问题? [15]

这个属于比较基础的问题。

3、golang time Unmarshal 必须包含时区吗? [16]

不包含时区貌似不会成功呢!

4、如何在 Go 语言的模板中定义数组变量? [17]

模板本身不强大,但可以通过 Go 代码中进行扩展。

5、golang 中方法定义取舍 [18]

golang 中这两种方法的如何取舍选择,之间有什么区别?比如:func test(&post) error{} 和 func test() (post Post, err error){}。

6、goland 无法解析 go.mod 里的包 [19]

这个问题新手挺常见的吧,可能将来默认都使用 module,可能就不会有这样的问题了。

文章

1、

通过测试学习 Go 语言

从今天起,Go 语言中文网公众号为大家带来一个系列:通过测试学习 Go 语言,希望对新手学习有帮助!

2、

只因掌握它,便轻松使用 Go 构建微服务

本教程提供了 Go 使用 gRPC 的基础教程

3、

Uber Go 语言编程规范

Uber 出品,值得团队借鉴学习。除了 legendtkl 大神翻译外,Tony Bai 也进行了翻译,都在同一天发布。

Uber Go 语言编码规范

。原文: 。

4、

通过实例快速掌握 k8s(Kubernetes)核心概念

容器技术 是微服务技术的核心技术之一,并随着微服务的流行而迅速成为主流。Docker 是容器技术的先驱和奠基者,它出现之后迅速占领市场,几乎成了容器的代名词。但它在开始的时候并没有很好地解决容器的集群问题。

5、

Go 中某些语句中的表达式之间的相对估值顺序未定义

Go 语言中有很多独特的设计,也有很多从其它语言借鉴过来的设计。总体上看,Go 和 C 语言的血缘最近。事实上,我们可以将 Go 语言称为 C+语言。相对于 C 语言,Go 语言的一大特点是尽可能地减少了未定义行为。

6、

掌握本文,Go 语言新手也可以写出高质量代码:Go 测试高级窍门和技巧

测试的的技巧值得掌握。

7、

如何使用 Golang 处理 MySQL 的 binlog?

也许你什么时候需要用到。

8、

Go 高级编程:指针和内存分配详解

简化版的指针。

9、

Go 有 GC 就不需要掌握内存堆栈知识了吗?Go 堆栈的理解

什么是堆栈?在计算机中堆栈的概念分为:数据结构的堆栈和内存分配中堆栈。

10、

Go GC 卡顿由秒级降到毫秒级以下:到底做了哪些优化?

Go GC 的优化还是很明显的。

11、

800 字彻底理解 Go 指针

这篇文章是为不熟悉 Go 的指针或指针类型的程序员而准备的。Dave Cheney 大神出品。「Golang 来啦」公众号的 Seekload 翻译。

12、

小米 Go 开发实践——用 Go 构建高性能数据库中间件

GopherChina 2019 上的演讲整理。

13、Go 1.13 中 sync.Pool 是如何优化的? [20]

如何改进的?做了哪些改进?

14、etcd 性能测试与调优 [21]

etcd 是一个分布式一致性键值存储。其主要功能有服务注册与发现、消息发布与订阅、负载均衡、分布式通知与协调、分布式锁、分布式队列、集群监控与 leader 选举等。

开源项目

1、scc: 非常快速准确的代码计数器 [22]

与 cloc,sloccount 和 tokei 类似的工具。用于计数许多编程语言中的物理代码行,空行,注释行和源代码的物理行。

2、gocryptfs: Go 编写的加密 overlay 文件系统 [23]

官方网站:

3、guard: kubernetes webhook 身份验证服务器 [24]

支持使用各种身份验证提供程序(比如:github 账号等)登录 Kubernetes 集群。

4、oauth2_proxy: 反向代理和静态文件服务器 [25]

支持使用 Google,GitHub 和其他提供商账号提供身份验证。

5、imgproxy: 高性能且安全的图片 size 和格式转换服务器 [26]

imgproxy 可用于提供一种快速,安全的方式来替换 Web 应用程序的所有图像大小调整代码(如调用 ImageMagick 或 GraphicsMagick 或使用库),同时还能够快速,轻松地实时调整所有内容的大小。在处理大量图像大小调整时,尤其是当图像来自远程来源时,imgproxy 也是必不可少的。

6、wasmer: 用于执行 WebAssembly 二进制文件的 Go 语言库 [27]

WebAssembly 似乎很火,但实际应用有多少?

7、docx2md: Go 实现的微软 word 格式转换为 markdown 格式的工具 [28]

这真是个好工具。

8、golangci-lint: 一个 linter 聚合器 [29]

号称速度很快!

9、devdash: 面向开发人员的高度可配置的终端仪表板 [30]

DevDash 是一个高度可配置的终端仪表板,适用于希望在一个地方选择并显示所需的最新指标的开发人员。

资源&&工具

1、微软出品的 Kubernetes 学习路径 [31] (英文)

PDF,可以下载到本地阅读。

2、软件设计和架构学习路线图 [32] (英文)

好资源大整理。

3、go time 讨论应用程序设计 [33] (英文)

Mat 与 Peter Bourgon,KatZień 和 Ben Johnson 一起参加了 Go 的应用程序设计讨论。

4、GitHub 中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果 [34]

榜单每周更新一次!

5、面试编码资源 [35] (英文)

每周 4-6 次编码面试问题,包括详细的解决方案,测试用例和程序分析。

订阅

这个周刊每周日发布,同步更新在Go 语言中文网 [36] 、微信公众号 [37] 今日头条 [38]

微信搜索”Go 语言中文网”或者扫描二维码,即可订阅。

推荐阅读

  • Go语言爱好者周刊:第 11 期
  • Go语言爱好者周刊:第 10 期

参考资料

[1]

polaris1119/golangweekly:

[2]

提交 issue:

[3]

Go 语言编程规范:

[4]

gcs v0.1.1 加入接口缓存,Go 配置管理平台:

[5]

Traefik 2.0.2 发布,HTTP 反向代理与负载均衡工具:

[6]

gout v0.0.1 发布,golang 流式 http client:

[7]

Grafana 6.4.2 发布,系统指标监控与分析平台:

[8]

Excelize 发布 2.0.2 版本,Go 语言 Excel 基础库:

[9]

2018 开源中国 Gitee 最有价值开源项目 GVP:

[10]

TiDB 3.0.4 发布,分布式 NewSQL 数据库:

[11]

Harbor 1.9 发布,新增多项企业级功能:

[12]

MongoDB Go 官方驱动 1.1.2 版本发布:

[13]

GoLand 2019.2.3 发布:

[14]

对于无缓冲的 channel,用 select 来处理通道超时时间,如果在接收超时后,退出接收,那么该通道的发送会被阻塞吗?:

[15]

map 怎么确定 key 是否存在,如果访问了不存在的 key 会出现什么问题?:

[16]

golang time Unmarshal 必须包含时区吗?:

[17]

如何在Go语言的模板中定义数组变量?:

[18]

golang中方法定义取舍:

[19]

goland 无法解析 go.mod里的包:

[20]

Go 1.13中 sync.Pool 是如何优化的?:

[21]

etcd 性能测试与调优:

[22]

scc: 非常快速准确的代码计数器:

[23]

gocryptfs: Go编写的加密overlay文件系统:

[24]

guard: kubernetes webhook身份验证服务器:

[25]

oauth2_proxy: 反向代理和静态文件服务器:

[26]

imgproxy: 高性能且安全的图片 size 和格式转换服务器:

[27]

wasmer: 用于执行WebAssembly二进制文件的Go语言库:

[28]

docx2md: Go实现的微软word格式转换为markdown格式的工具:

[29]

golangci-lint: 一个 linter 聚合器:

[30]

devdash: 面向开发人员的高度可配置的终端仪表板:

[31]

微软出品的 Kubernetes 学习路径:

[32]

软件设计和架构学习路线图:

[33]

go time 讨论应用程序设计:

[34]

GitHub中文排行榜,帮助你发现高分优秀中文项目、更高效地吸收国人的优秀经验成果:

[35]

面试编码资源:

[36]

Go语言中文网:

[37]

微信公众号:

[38]

今日头条: #mid=1586087918877709

相关文章