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

  

  这个周刊是开源的(GitHub:polaris1119/golangweekly1)。欢迎投稿、推荐或推荐文章/软件/资源等。请给提交 issue2.打电话   

  

  由于大部分人可能读不完英文文章,周刊会尽可能推荐高质量的中文文章。优秀的英文文章将由我们的GCTT机构翻译。   

  

     

  

  题目:黑白棋,围棋语言实现了这个小游戏。   

  

  刊首语's黑白棋,又称反黑白棋、奥赛罗棋、苹果棋或逆向棋。黑棋在西方和日本非常流行。游戏通过翻转对方的棋子,最终以棋盘上谁的棋子多来判断胜负。它的游戏规则很简单,所以很好用,但是它的变化很复杂。有句话说,学起来只需要几分钟,掌握起来却需要一辈子。   

  

  下面是一个用Go语言实现的黑白棋,地址:https://piccolo.click/.可惜源代码没有公开。它通过WebAssembly在Web上运行。用Ebiten 2D3游戏库搭建。   

  

  Piccolo是一个以强大的竞技水平玩日本奥赛罗策略游戏的AI。Piccolo结合了Negamax深度优先搜索和Alpha-Beta修剪以及启发式技术来评估位置强度,并具有优雅的用户界面。   

  

  除了网页版,还支持Windows和Linux客户端,很快也会有macOS客户端。   

  

  我以前没玩过。试了几次之后,2级玩家都输了。是AI这么厉害还是我太厉害了?   

  

  资讯1、Task 3.0 发布4   

  

  任务运行器,用Go语言写的。类似于GNU Make,目标是比它更简单易用。   

  

  2、用于 pkg.go.dev 的 Badge 生成工具5   

  

  这是一个官方工具,用来生成徽章并放入README。   

  

  3、关于 Go 泛型设计最新进展和一些问题的澄清6   

  

  很可能使用方括号,取消类型参数前面的type关键字,所有类型参数必须提供约束,引入“any”预声明标识符(interface{}的别名)等。   

  

  typeartfuncprint(ST ' tany '){…} func index(ST,et ' t comparable '){…}文章1 .比较三个GoPlaygrounds:你喜欢哪个?   

  

  曾几何时,语言的网上游乐场似乎是标准。事实上,操场允许我们快速试验一些想法。Go language在发布之初就提供了一个,就是https://play.golang.org。但是,由于众所周知的原因,我们不能参观。为了方便国内广大地鼠,我创建了一个国产镜像:https://play.studygolang.com,请大家使用和分享。   

  

  2.关于Golang错误处理的几点思考   

  

  如果你没有在错误上栽过跟头,那么当你栽了跟头的时候,你会哭着想起为什么没有思考和反思错误处理这么宏大的话题。   

  

  3.如果只知道go test用于单元测试,那就太低了。   

  

  go命令提供了许多优秀的功能,比如代码覆盖率、CPU和内存分析。为了提供这些统计数据,Go需要一种方法来跟踪CPU的使用情况,或者在代码覆盖率中何时使用一个函数。   

  

  4.掌握了这30个MySQL基础面试题,我就成了小霸王。   

  

  典型的互联网产品架构包括接入层、逻辑处理层和存储层,其中存储层承担数据落地和持久化的任务,为逻辑处理层提供数据查询功能支持。说到存储层,就要说到数据库了,数据库知识的程度也是面试的知识点。   

  

  5.说明Go内存管理和内存清理。   

  

  清理内存是一个让我们知道最近哪些内存段可用于分配的过程。   

但是,它并不会使用将位置 0 的方式来清理内存。   

6、作为 Gopher 你一定要懂的连接池

  

作为一名Golang开发者,线上环境遇到过好几次连接数暴增问题(mysql/redis/kafka等)。纠其原因,Golang作为常驻进程,请求第三方服务或者资源完毕后,需要手动关闭连接,否则连接会一直存在。而很多时候,开发者不一定记得关闭这个连接。这样是不是很麻烦?于是有了连接池。

  

7、Viper 加载远程配置的填坑之旅

  

关于 viper,无须多言,它是 Golang 社区里最流行的配置文件工具,除了常见功能之外,它还支持很多高级功能,比如可以加载远程配置,正好我最近在研究 etcd,于是我打算把二者结合起来,没想到就此开启了填坑之旅。

  

8、Go 读取文件方式那么多,到底应该用哪一种呢

  

Go 语言在进行文件操作的时候,可以有多种方法。最常见的比如直接对文件本身进行Read和Write;除此之外,还可以使用bufio库的流式处理以及分片式处理;如果文件较小,使用ioutil也不失为一种方法。面对这么多的文件处理的方式,那么初学者可能就会有困惑:我到底该用那种?它们之间有什么区别?笔者试着从文件读取来对 go 语言的几种文件处理方式进行分析。

  

9、从头教你使用 Hugo 搭建自己的博客

  

手把手教你。

  

10、微服务的战争:按什么维度拆分服务

  

微服务,这三个字正在席卷着目前的互联网软件行业,尤其在近几年云原生迸发后,似乎人人都对微服务有了更广泛的使用和理解,张口就是各种各样的问号,有着强大的好奇心。但微服务的拆分维度是什么?

  

11、TiDB 在知乎万亿量级业务数据下的实践和挑战

  

2019 年底的分享。

  

12、如何使得你的 Go 命令行程序变得友好?

  

从一个故事开始~

  

13、Go 项目实战:Golang HTTP 验证码

  

网站必备的功能。

  

14、优化 Docker 镜像大小常见方法

  

平时我们构建的 Docker 镜像通常比较大,占用大量的磁盘空间,随着容器的大规模部署,同样也会浪费宝贵的带宽资源。本文将介绍几种常用的方法来优化 Docker 镜像大小,这里我们使用 Docker Hub 官方上的 Redis 镜像进行说明。

  

15、通过 Go 语言代码理解大小端模式

  

Go 语言底层实现的为小端模式,因为计算机进行计算时,都是从低位开始进行计算的,这样计算效率比较高。而大端模式比较方便用户阅读,比较符合我们的阅读习惯。

  

16、聊聊自己学Go一年来的经历与成长<7>

  

今天偶然在掘金上看到了关于 Go 的征文稿,恰逢赶上自己学 Go 一周年的时间,最近也在部门内做了关于《Let's Go ! Go 语言入门与实践》的分享,结合自身在字节跳动的业务开发经历,整体聊聊自身关于 Go 的一些学习感悟与成长。

  

17、golang net/http 超时引发大量 fin-wait2<8>

  

通过 grafana 监控面板,发现几个高频的业务缓存节点出现了大量的 fin-wait2,而且 fin-wait2 状态持续了不短的时间。

  

开源项目1、ent<9>

  

Go 的实体框架。简单而强大的 ORM,用于建模和查询数据。官网 https://entgo.io/,Facebook 出品。最初是一个“ Facebook 孵化器”项目,但自本周发布的 v0.4.0 起,它已成为 Facebook 的正式项目。

  

  

2、tracesite<10>

  

tracesite 是 traceroute 工具的简单 Go 实现,作者写了一篇文件介绍它:https://blog.kalbhor.xyz/post/implementing-traceroute-in-go/。

  

不过这个项目结构不符合 Go 规范,里面不应该有 src。

  

3、askgit<11>

  

使用 SQL 查询 git 存储库。比如:askgit "SELECT * FROM commits,该库之前叫做:gitqlite。

  

4、guora<12>

  

Go 类似知乎的私有部署问答应用,包含问答、评论、点赞、管理后台等功能。

  

5、ebiten<13>

  

Go 的简单 2D 开源游戏库。Ebiten 的简单 API 使您可以快速轻松地开发可在多个平台上部署的 2D 游戏。

  

6、govalidator<14>

  

用于字符串,数字,切片和结构的验证程序。

  

7、 babygo<15>

  

从头开始编写的 Go 编译器。

  

8、 logr<16>

  

mattermost 开源的 go log 工具。

  

资源&&工具1、nali<17>

  

一个查询 IP 地理信息和 CDN 提供商的离线终端工具。

  

2、grpc 的那些事儿<18>

  

峰云就她了 博主的分享 PPT。

  

3、GopherCon Russia 2020 大会<19>(俄文)

  

疫情没有阻挡大会的正常进行。

  

4、lsif-go<20>

  

Language Server 索引格式生成器。

  

5、回放第 101 期 2020-08-16 黑板 go-zero 微服务框架的架构设计<21>

  

Go 夜读 第 101 期晓黑板 go-zero 微服务框架分享。

  

6、第 102 期官方标准编译器中实现的优化集锦<22>

  

Go101 作者分享。

  

7、油管视频<23>

  

从 OO 语言到 Go 的历程。

  

参考资料<1>

  

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

  

<2>

  

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

  

<3>

  

Ebiten 2D: https://ebiten.org/

  

<4>

  

Task 3.0 发布: https://github.com/go-task/task/releases/tag/v3.0.0

  

<5>

  

用于 pkg.go.dev 的 Badge 生成工具: https://pkg.go.dev/badge/

  

<6>

  

关于 Go 泛型设计最新进展和一些问题的澄清: https://groups.google.com/g/golang-nuts/c/iAD0NBz3DYw/m/VcXSK55XAwAJ

  

<7>

  

聊聊自己学Go一年来的经历与成长: https://juejin.im/post/6863680036407345166

  

<8>

  

golang net/http 超时引发大量 fin-wait2: http://xiaorui.cc/archives/6999

  

<9>

  

ent: https://github.com/facebook/ent

  

<10>

  

tracesite: https://github.com/kalbhor/tracesite

  

<11>

  

askgit: https://github.com/augmentable-dev/askgit

  

<12>

  

guora: https://github.com/meloalright/guora

  

<13>

  

ebiten: https://github.com/hajimehoshi/ebiten

  

<14>

  

govalidator: https://github.com/asaskevich/govalidator

  

<15>

  

babygo: https://github.com/DQNEO/babygo

  

<16>

  

logr: https://github.com/mattermost/logr

  

<17>

  

nali: https://github.com/zu1k/nali

  

<18>

  

grpc 的那些事儿: http://xiaorui.cc/static/grpc.pdf

  

<19>

  

GopherCon Russia 2020 大会: https://www.youtube.com/watch?v=dGcI1OsDCio&list=PLJTW0ZQ22rrEtvqbz0rxhNQTm0bkJV4Nb

  

<20>

  

lsif-go: https://github.com/sourcegraph/lsif-go

  

<21>

  

回放第 101 期 2020-08-16 晓黑板 go-zero 微服务框架的架构设计: https://talkgo.org/t/topic/729

  

<22>

  

第 102 期官方标准编译器中实现的优化集锦: https://talkgo.org/t/topic/702

  

<23>

  

油管视频: https://www.youtube.com/watch?v=1ZjvhGfpwJ8&feature=youtu.be

  

<24>

  

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