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

polaris · · 4499 次点击 · 开始浏览    置顶
这是一个创建于 的主题,其中的信息可能已经有所发展或是发生改变。

这里记录每周值得分享的 Go 语言相关内容,周日发布。 本周刊开源(GitHub:[polaris1119/golangweekly](https://github.com/polaris1119/golangweekly)),欢迎投稿,推荐或自荐文章/软件/资源等,请[提交 issue](https://github.com/polaris1119/golangweekly/issues) 。 鉴于大部分人可能没法坚持把英文文章看完,因此,周刊中会尽可能推荐优质的中文文章。优秀的英文文章,我们的 GCTT 组织会进行翻译。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/cover.png) 题图:最近的股市,你还好吗?来自:pexels ## 刊首语 Go 1.14 的这个 issue 大家怎么看,有人升级遇到过吗?[runtime: sometimes 100% CPU spin during init phase in Go 1.14 with preemptive scheduler](https://github.com/golang/go/issues/37741)。 ## 资讯 1、[Oragono 2.0 发布,Go 语言编写的现代 IRC 服务器](https://github.com/oragono/oragono/releases/tag/v2.0.0) 支持最新的 IRC 聊天功能(例如 IRCv3),UTF-8,并且从本周的版本 2 开始,支持持久化历史记录,LDAP 支持以及全面的“bouncer” /始终在线客户端支持。 2、[关于 COVID-19 参加活动组织者的公告](https://golangweekly.com/link/85311/web) Google 禁止员工进行所有国际旅行,直到另行通知为止,并且 Go 团队的任何成员至少在2020年5月之前不能进行国际旅行。因此一些原定的 Go 大会也取消了。除此以外,您还可以通过多种方式将您的状态通知给社区 Meetup。 3、[cli 2.2 发布](https://github.com/urfave/cli) 这是一个构建 Go CLI 应用程序的快速方法。这是 v2 版本文档:<https://github.com/urfave/cli/blob/master/docs/v2/manual.md>,很全。请考虑 bash 和 zsh 自动完成功能。 4、[Go Present 文件支持 Markdown](https://github.com/golang/tools/commit/8ac058ed9fb4355ae54723001f2956075c106a5b) 使用的是 github.com/yuin/goldmark 这个库。 5、[VS Code 1.43发布:远程开发、同步设置等新特性](https://mp.weixin.qq.com/s/XTUr9OZSb8UeBcGiYS5y1g) Visual Studio Code 1.43 版本,即 2020 年的 2 月更新已发布。 ## 文章 1、[Go1.14 的这个改进让 Gopher 生活更美好](https://mp.weixin.qq.com/s/qfou8AxoLAIG7CdnuKJGPw) testing 包是 Go 标准库中我最喜欢的程序包之一,不仅是它具有低干扰的单元测试方法,而且在 Go 的整个生命周期中,它可以改善、提高生活质量。Go1.14 的 go test -v 支持流式输出。 2、[换个角度看:Go里的unsafe包是什么?](https://mp.weixin.qq.com/s/pb9TNEE4Jp2mdrJcKyzhEg) unsafe 被用于和 Go 提供的安全类型相对立的一个名称了。让我们深入理解下文档中提到的 2 个要点。 3、[一文掌握 Go 语言 Select 的四大用法](https://mp.weixin.qq.com/s/-i-PoCTPuhRpd4cAKpNwuw) 本文带大家认识 Go 语言的 Select 用法。 4、[Go 如何防止缓存穿透](https://mp.weixin.qq.com/s/s8i2wQXHaP9EDJ0uXIR54A) 当线上接口请求量比较大时,如果恰好遇到缓存失效,会造成大量的请求直接打到数据库,导致数据库压力过大、甚至崩溃。如果缓存的数据实时性要求不那么高,可以试试 do-once-while-concurrent:<https://github.com/abusizhishen/do-once-while-concurrent>。 5、[Go 1.14 值得关注的几个变化](https://tonybai.com/2020/03/08/some-changes-in-go-1-14/) Go自从宣布Go1 Compatible后,直到这次的Go 1.14发布,Go的语法和核心库都没有做出不兼容的变化。这让很多其他主流语言的拥趸们觉得Go很“无趣”。但这种承诺恰恰是Go团队背后努力付出的结果,因此Go的每个发布版本都值得广大gopher尊重,每个发布版本都是Go团队能拿出的最好版本。解读一下Go 1.14的变化,看看这个新版本中有哪些值得我们重点关注的变化。 6、[可视化Go内存管理](https://tonybai.com/2020/03/10/visualizing-memory-management-in-golang/) 这篇文章为您提供了Go内存结构和内存管理的概述。这里不是全面详尽的说明,有许多更高级的概念,实现细节在各个版本之间都在不断变化。但是对于大多数Go开发人员来说,这些信息就已经足够了,我希望它能帮助您编写出更好的、性能更高的应用程序,牢记这些,将有助于您避免下一个内存泄漏问题。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/visualizing-memory-management-in-golang-1.jpg) 7、[小心 go.mod 中的 go directive](https://tonybai.com/2020/03/09/take-care-of-the-go-directive-in-go-dot-mod/) 目前仅仅在使用比 go.mod 中 Go 指示器版本低的 Go 编译器对 module 下源文件进行编译,在报错的时候才会给出版本不匹配的提示。 8、[“网红” WebAssembly 与 K8s 如何实现双剑合璧?](https://mp.weixin.qq.com/s/TWt9-All1U_m_5RlGPOg3Q) WebAssembly 技术已经走出浏览器,让计算无处不在。本文利用 containerd 的扩展机制,可以为 WebAssembly 应用提供与其他容器应用一致的、抽象的、应用分发、交付和运维模型,可以在 Kubernetes 集群中进行统一调度和管理。 9、[官方博文:使用 Go Cloud 的 Wire 进行编译时依赖注入](https://mp.weixin.qq.com/s/e8NeYNXS0ju5h6dnbZleDA) Go 团队公布了用于开放云开发的可移植云 API 和工具,开源项目Go Cloud 。这篇文章详细介绍了 Wire,一个随 Go Cloud 提供的依赖注入工具。 这里还有另外一篇:[《一文读懂 Go官方的 Wire》](https://mp.weixin.qq.com/s/ZQKi9O7DRJ3qGWhDL9aTVg)。 10、[直击痛点,详解 K8s 日志采集最佳实践](https://mp.weixin.qq.com/s/hvDaEaokxcekXCxREcEX1A) 在 Kubernetes 中,日志采集和普通虚拟机的方式有很大不同,相对实现难度和部署代价也略大,但若使用恰当则比传统方式自动化程度更高、运维代价更低。 11、[map 并发崩溃一例:顺便吐槽 Go 打印堆栈不友好](https://mp.weixin.qq.com/s/DJeyxJhHD8IC0V-l7Ogwww) 曹大根据实际业务遇到的问题总结。 12、[用面向对象设计原则理解 Go 中 interface](https://mp.weixin.qq.com/s/MqQ6b-Z_wvYe9YpNI5LDeA) interface 是GO语言的基础特性之一。可以理解为一种类型的规范或者约定。它跟java,C# 不太一样,不需要显示说明实现了某个接口,它没有继承或子类或“implements”关键字,只是通过约定的形式,隐式的实现interface 中的方法即可。因此,Golang 中的 interface 让编码更灵活、易扩展。 13、[API 网关和服务网格的区别](https://mp.weixin.qq.com/s/cdRjQdgaA6Z9x8UZgGTN2Q) 本文的目标是提供一个备忘单(Cheat sheet),指导架构师决定何时使用API网关,何时使用服务网格。 ## 开源项目 1、[arkanoid-go: 用 Go 语言编写的 Arkanoid 游戏](https://github.com/x-hgg-x/arkanoid-go) 对于那些在 80 年代还没有玩游戏的人,请考虑一下球棒游戏,这是用 Go 语言编写的,使用了 Ebiten 2D 游戏引擎,并遵循实体组件系统(ECS)架构。 2、[pogreb](https://github.com/akrylysov/pogreb) 读优化的嵌入式键值存储。 3、[cidrchk](https://github.com/mhausenblas/cidrchk) CIDR 地址范围重叠检查利器。 4、[broxy](https://github.com/rhaidiz/broxy) 用 Go 编写的 HTTP/HTTPS 拦截代理。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/broxy.png) 5、[netscanner](https://github.com/R4yGM/netscanner) TCP&UDP 端口扫描器。 6、[flagr](https://github.com/checkr/flagr) Flagr 是一个开源 Go 服务,它提供功能 flag,实验(A/B测试)和动态配置微服务。 7、[gonce](https://github.com/arham-jain/gonce) 用 Go 编写的 HTTP 性能测试工具。这里一篇介绍的英文文章:[Performance testing with Golang](https://medium.com/@arham.jain/performance-testing-with-golang-e125ced388b6)。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/gonce.png) 8、[vecosy](https://github.com/vecosy/vecosy) 用 Go 编写的集中式配置系统 — 兼容 Spring Cloud。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/vecosy.png) 9、[reqstrategy](https://github.com/syavorsky/reqstrategy) 支持重试、限流等策略的 http.Client 客户端。 10、[srv](https://github.com/kevinpollet/srv) 简单,安全和现代化的 Go HTTP 服务器,可轻松服务于静态站点,单页应用程序或文件。 11、[unioffice](https://github.com/unidoc/unioffice) 用于创建和处理 Office Word(.docx),Excel(.xlsx)和 Powerpoint(.pptx)文档的纯 Go 库。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/unioffice.png) 12、[go-app](https://github.com/maxence-charriere/go-app) 使用 Go 编程语言和 WebAssembly 构建渐进式 Web 应用程序的软件包。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/go-app.png) ## 资源&&工具 1、[faas: 将 Go 函数转换为 API](https://github.com/schollz/faas) 基本上是一种将函数转换为包装在容器中的 HTTP 服务的轻量级方法。 2、[goawk: Go 语言编写的 awk 解析器](https://github.com/benhoyt/goawk) awk 是一种历史悠久的文本处理语言。好吧,又一个轮子! 3、[基于 Go 与 Redis 构建的高性能推荐引擎](https://lp.redislabs.com/rs/915-NFD-128/images/WP-RedisLabs-Recommendations-Engine-102-proof.pdf) PDF 下载。 4、[可查询、排序的图形化 awesome-go 列表](https://awesomer-go.pantas.net) 很棒的工具,查询方便多了。 ![](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/issue034/awesome-go.png) 5、[给 Go 程序员的 Rust 语言介绍](https://www.youtube.com/watch?v=eQjPvsmfIts) 这是一个 youtube 视频。Rust 近期感觉挺火! 6、[太优秀了!竟然直播分布式写书:TiDB In Action 48小时写完了](https://mp.weixin.qq.com/s/hrXyd5qS2S4UtflxDuXHqg) 一本开源图书:TiDB In Action。地址:https://github.com/pingcap-incubator/tidb-in-action。 7、[Micro In Action 系列教程](https://mp.weixin.qq.com/s/LKNJyMx1gz6qrGlVpR0Mbg) 关注 Go 语言中文网,系列教程持续更新中。 8、[Go 夜读第 78 期 — 《Go scheduler 源码阅读》](https://qcrao.com/ishare/go-scheduler/) 饶全成(饶大)在 Go 夜读的分享。 9、[Go 语言实现的虚拟股市交易游戏](https://github.com/delta/dalal-street-server) Dalal Street 是由一群本科生开发的虚拟股市交易游戏。它是使用 Go 构建的。在线地址:<https://dalal.pragyan.org/trade>。 ## 订阅 这个周刊每周日发布,同步更新在[Go语言中文网](https://studygolang.com/go/weekly)和[微信公众号](https://weixin.sogou.com/weixin?query=Go%E8%AF%AD%E8%A8%80%E4%B8%AD%E6%96%87%E7%BD%91)。 微信搜索"Go语言中文网"或者扫描二维码,即可订阅。 ![wechat](https://raw.githubusercontent.com/polaris1119/golangweekly/master/docs/imgs/wechat.png)

有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4499 次点击  ∙  2 赞  
加入收藏 微博
2 回复  |  直到 2020-03-15 18:46:57
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传