博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Go语言爱好者周刊:第 16 期
阅读量:2289 次
发布时间:2019-05-09

本文共 6690 字,大约阅读时间需要 22 分钟。

点击上方蓝色“Go语言中文网”关注我们,领全套Go资料,每天学习 Go 语言

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

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

由于微信公众号不支持外链,文中大量链接可通过「阅读原文」查看。

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

640?wx_fmt=jpeg

题图: Go 10 years

刊首语

马上双十一了,又到了剁手的日子了!既然剁手,那不如投资学习 Go 语言。Go 语言中文网的「Go 项目实战」知识星球送出 100 元优惠券,前 11 人加入有效。目前该知识星球正在出第 2 个实战项目:简书,同时在出 Echo 框架系列。加入后支持 3 天理由退款。

640?wx_fmt=png

资讯

1、Grafana 6.4.4 发布,系统指标监控与分析平台[3]

Grafana 6.4.4 发布了,Grafana 是一个功能丰富的指标标准仪表板和图形编辑器,用于分析和监控 Graphite、Elasticsearch、OpenTSDB、Prometheus 和 InfluxDB。该版本是 Bug 的修复。

2、Vitess 4.0 发布,MySQL 数据库集群水平扩展系统[4]

这是 Go 语言实现的。Vitess 是一个分布式 MySQL 工具集,它可以自动分片存储 MySQL 数据表,将单个 SQL 查询改写为分布式发送到多个 MySQL Server 上,支持行缓存(比 MySQL 本身缓存效率高)与复制容错等。

3、Proxy-Go v8.5 发布,全能代理服务工具,专业加速[5]

Proxy 是 golang 实现的高性能 http、https、websocket、tcp、udp、socks5 代理服务器,支持正向代理、反向代理、透明代理、内网穿透、TCP/UDP 端口映射、SSH 中转、TLS 加密传输、协议转换、DNS 防污染智能代理、前置 CDN/Nginx 反代、代理连接重定向、API 动态调用上级代理、限速限连接数。同时提供全平台的功能强大的命令行版本和友好易用的 web 控制面板版本。

更新内容:

  • tcp 代理转发增加了指定出口 IP 功能。

  • 修复了智能模式某些情况不能准确工作的问题。

  • socks/http(s)/sps 监听支持多端口和端口范围了。

  • 参数-p 现在可以这样写了:

    -p ":8081"  监听8081-p ":8081,:8082"  监听8081和8082 -p ":8081,:8082,:9000-9999" 监听8081和8082以及9000,9001至9999,共1002个端口
  • 增加了 freebsd 平台。

4、InfluxDB 1.7.9 发布[6]

将 Golang 版本更新为 1.12.10。

问答

1、web 框架中的每个请求是一个 goroutine 吗?[7]

对 channel 似乎有误解。

2、golang 的指针主要用途是不是函数调用的时候传参数?[8]

指针的用途有哪些?

3、golang 如何返回一个有序的 map 类型的数据[9]

golang 的 map 我们知道是无序的, 可是实际应用的时候, 我回经常需要返回一个有序的格式 比如 list 列表按时间分组排序, 这种的实现思路 应该如何呢?

4、golang 的静态文件打包输出 如何与 gin 结合作为模板输出 packr[10]

之前 gin 是通过 router.LoadHTMLGlob("templates/*") 然后指定模板文件名可以直接加载 html 文件输出的,

现在我想用 packr 把静态文件作为资源文件内嵌,怎么与 gin 配合?

5、[当 golang 调用 time.Sleep()时 调度器发生了什么 G、P 和 M 之间又是怎样的关系?](https://segmentfault.com/q/1010000020903479 "当 golang 调用 time.Sleep( "当 golang 调用 time.Sleep()时 调度器发生了什么 G、P 和 M 之间又是怎样的关系?")时 调度器发生了什么 G、P 和 M 之间又是怎样的关系?")

golang 中 time.Sleep 是如何实现的,在这背后调度器对 time.Sleep 又是如何处理的?

文章

本文适用于 Go 的新手,以及想要了解 Go 的并发原语:go routine 和 channel 的学习者。

时间复杂度为 O(nlogn) 的最优排序算法中,归并排序是其中之一。它的原理为将数组分为两部分,分别进行排序,最后再归并,这种做法的开销没那么大。

640?wx_fmt=png

归并排序

本文分成两部分,第一部分讲正常安装步骤,如果一切顺利,就不需要看第二部分了。我只能说恭喜你,你的运气太好了。第二部分是讲各种问题及解决办法,这应该是本文最有价值的部分。

微软开源的微服务套件?我一下子来了兴趣,作为一个开发人员,当然是先上手试试手感啦。

学习 Go 的,对无闻应该不陌生,可能很多人是看着他的课程入门的。今天,他又出新课程了,你没有理由不学习!大家可以关注他新开的公众号:无闻是个码痴。

本系列课程同步首发在:「无闻是个码痴」、「Go 语言中文网网站」(专栏Go 语言 Web 应用开发:https://studygolang.com/subject/479)和公众号 「Go 语言中文网」。

无闻公众号

640?wx_fmt=png

我们不需要依赖任何第三方组件就能构建并启动一个高并发的 HTTP 服务器。

这堂课我们来学习如何使用 Go 语言标准库的 text/template 包来向客户端(即浏览器或终端)响应动态的内容。

后续不断为大家带来福利、核心知识!

最近尝试在 B 站录些小视频。录视频当是为了彻底搞懂某个知识点的最后一步吧,同时也希望能习得一些额外的能力。在讲 Go 如何实现 bitset 的时候,发现这块内容有点难讲。思考后,我决定通过文字辅以视频的方式说明,于是就写了这篇文章。

本文将基于 linux 平台来解析 Go netpoll 之 I/O 多路复用的底层是如何基于 epoll 封装实现的,从源码层层推进,全面而深度地解析 Go netpoll 的设计理念和实现原理,以及 Go 是如何利用 netpoll来构建它的原生网络模型的。

实战经验排查问题。

12、[Go 语言的遗产(中译版)](https://tonybai.com/2019/11/04/the-legacy-of-go/ "Go 语言的遗产(中译版 "Go 语言的遗产(中译版)")")

本文是 gohugo 作者 Steve Francia 在意大利佛罗伦萨举办的 GoLab 上分享的闭幕演讲讲稿的文字版,该演讲的主题为"Go 的遗产"。该演讲讨论了 Go 语言继承的遗产,以及它是如何尊重这些遗产的,并在最后总结了 Go 希望留给后来者的遗产。

挺有意思!

640?wx_fmt=gif

14、Go 语言开源十周年[11]

本文翻译自Go 官方博客[12]Russ Cox[13]代表 Go 核心团队发表的“Go Turns 10″[14]一文。

640?wx_fmt=jpeg

15、Golang template 小抄[15]

这是 Curtis Vermeeren 做的 Go 模板技术的小抄[16]

16、为什么要使用 goroutines 取代 threads[17]

goroutines 和 threads 都是为了并发而生。准确的说,并不能说 goroutines 取代 threads。因为其实 goroutines 是建立在一组 threads 之上。将多路并发执行的能力复用在 threads 组上。当某一个 goroutine 需要运行时,会自动将它挂载到一个 thread 上。而且这一系列的调度对开发者是黑盒,无感知的。

开源项目

1、go-testdeep[18]

灵活的 Go 深度比较包,用于扩展 go testing 包。

2、utask[19]

一个业务流程建模和执行的自动化引擎。

3、staticcheck[20]

一个 Go 代码静态检查工具集合。这里有一篇英文版 staticcheck 实战文章:https://superhighway.dev/staticcheck-in-action 。

4、gox[21]

一个超级简单的跨平台 Go 编译器。

5、stripe-cli[22]

用于简化与国际支付服务 Stripe 集成的工作。

6、kube-ovn[23]

灵雀云开源的基于 ovn 的 kubernetes 网络方案。

7、goque: LevelDB 支持的 Go 持久堆栈和队列[24]

现在还支持将对象编码/解码为 JSON,从而可以更轻松地存储复杂对象。

8、lungoDB:与 MongoDB 兼容的可嵌入数据库和工具包[25]

想象一下类似 SQLite 的东西,但具有 MongoDB 风味。

9、dns: Go 实现的 DNS 库[26]

该库支持大量与 DNS 相关的 RFC 和功能。

10、sqlhooks:为 database/sql 驱动加上钩子[27]

一种简便的方法来检测 SQL 查询。刚刚进行了近两年的首次更新,并添加了 go mod 支持。

11、pkger[28]

将静态文件嵌入 Go 二进制文件中(建议替换 gobuffalo/packr)。这里有一个英文教程:https://golangweekly.com/link/79660/web 。

640?wx_fmt=jpeg

12、inletsctl[29]

用 Go 编写的快速的 HTTP (L7) 和 TCP (L4) 隧道。

资源&&工具

1、go 语言 golang 实现区块链 blockchain 源代码[30]

为了便于学习 Golang 区块链,从零入门,分享几个 Go 语言实现的区块链项目,可以参考学习,理解区块、区块链、POW、钱包、交易、记账等这些术语。

很给力的 Linux 资料,值得收藏查阅。

2、Go 每日面试题,「Golang 来啦」公众号已经更新 60 多期了

十分佩服 Seekload 的坚持。日拱一卒,一起成长!Go 语言中文网对每日面试题也进行了转载,欢迎来刷题。

Golang来啦 公众号:

640?wx_fmt=jpeg

订阅

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

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

640?wx_fmt=png

推荐阅读

参考资料

[1]

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

[2]

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

[3]

Grafana 6.4.4 发布,系统指标监控与分析平台: https://www.oschina.net/news/111185/grafana-6-4-4-released

[4]

Vitess 4.0 发布,MySQL 数据库集群水平扩展系统: https://www.oschina.net/news/111162/vitess-4-0-0-released

[5]

Proxy-Go v8.5 发布,全能代理服务工具,专业加速: https://www.oschina.net/news/111074/proxy-go-8-5-released

[6]

InfluxDB 1.7.9 发布: https://www.influxdata.com/blog/release-announcement-influxdb-1-7-9/

[7]

web 框架中的每个请求是一个 goroutine 吗?: https://studygolang.com/topics/10394

[8]

golang 的指针主要用途是不是函数调用的时候传参数?: https://studygolang.com/topics/10352

[9]

golang 如何返回一个有序的map类型的数据: https://segmentfault.com/q/1010000020263981

[10]

golang 的静态文件打包输出 如何与gin结合作为模板输出 packr: https://segmentfault.com/q/1010000020928692

[11]

Go语言开源十周年: https://tonybai.com/2019/11/09/go-opensource-10-years/

[12]

Go官方博客: https://blog.golang.org

[13]

Russ Cox: https://research.swtch.com/

[14]

“Go Turns 10″: https://blog.golang.org/10years

[15]

Golang template 小抄: https://colobu.com/2019/11/05/Golang-Templates-Cheatsheet/

[16]

Go模板技术的小抄: https://curtisvermeeren.github.io/2017/09/14/Golang-Templates-Cheatsheet

[17]

为什么要使用 goroutines 取代 threads: https://juejin.im/post/5dc144c05188255f695be5f8

[18]

go-testdeep: https://github.com/maxatome/go-testdeep

[19]

utask: https://github.com/ovh/utask

[20]

staticcheck: https://github.com/dominikh/go-tools

[21]

gox: https://github.com/mitchellh/gox

[22]

stripe-cli: https://github.com/stripe/stripe-cli

[23]

kube-ovn: https://github.com/alauda/kube-ovn

[24]

goque: LevelDB 支持的 Go 持久堆栈和队列: https://github.com/beeker1121/goque

[25]

lungoDB:与 MongoDB 兼容的可嵌入数据库和工具包: https://github.com/256dpi/lungo

[26]

dns: Go 实现的 DNS 库: https://github.com/miekg/dns

[27]

sqlhooks:为 database/sql 驱动加上钩子: https://github.com/gchaincl/sqlhooks

[28]

pkger: https://github.com/markbates/pkger

[29]

inletsctl: https://github.com/inlets/inletsctl

[30]

go语言golang实现区块链blockchain源代码: https://www.flysnow.org/2019/11/08/golang-bitcoin-blockchain-sources.html

[31]

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

[32]

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

[33]

今日头条: https://www.toutiao.com/c/user/59903081459/#mid=1586087918877709

你可能感兴趣的文章
面试复盘:面完字节、美团、阿里等大厂,今年面试到底问什么?
查看>>
从0到1,决战Spring Boot《Spring Boot 2实战之旅》
查看>>
5面终于拿到字节跳动offer!忍不住和大家分享一波
查看>>
拿到阿里、字节offer后。我总结了一线大厂Java面试重难点:Java基础+并发+JVM+算法+框架+分布式+架构设计
查看>>
金九银十已过 成功入职美团,面试回顾及个人总结:算法+框架+Redis+分布式+JVM
查看>>
香!阿里P8手写3份满级“并发编程”笔记,原理→精通→实战
查看>>
五面美团后,我总结出美团面试四大难题:JVM+微服务+MySQL+Redis
查看>>
滴滴Java后台3面题目:网络+内存溢出+各种锁+高性能+消息队列
查看>>
大厂面试果然名不虚传,蚂蚁三面凉经,真的是“太难了”
查看>>
分享一次止于三面的阿里面试之旅,是我不配呀
查看>>
美团工作7年,精华全在这份学习笔记里了,已成功帮助多位朋友拿到5个大厂Offer
查看>>
淘宝架构师又出神作,Java异步编程实战笔记总结,彻底被征服
查看>>
深入OAuth2核心源码,阿里大佬的Spring Security手册惊呆我了
查看>>
普本毕业,阿里五面成功斩下offer,名校出身的我究竟输在哪?
查看>>
最新“美团+字节+腾讯”三面面经,你能撑到哪一面?
查看>>
三年Java开发,年底跳槽挂了阿里和字节,却收获美团offer,分享大厂面试心得
查看>>
4面全过之后还有交叉面,阿里面试也太“刺激”了
查看>>
手慢无!出自美团内部的精通Java并发编程手册,打倒高并发
查看>>
一线互联网大厂面经分享:阿里三面+头条四面+腾讯二面+美团四面
查看>>
快手三面(Java岗),意向已拿,盘点一下面试官都问了些啥?
查看>>