01
你真的需要用Kubernetes吗?
原文链接:
https://mp.weixin.qq.com/s/MNX7QG-TbHXe0OMOun5eWA
原文二维码:
02
Go Struct超详细讲解
Go语言中提供了对struct的支持,struct
,中文翻译称为结构体
,与数组一样,属于复合类型,并非引用类型。
Go语言的struct,与C语言中的struct或其他面向对象编程语言中的类(class)类似,可以定义字段(属性)和方法,但也有很不同的地方,需要深入学习,才能区分他们之间的区别。
注意复合类型与引用类型之间的区别,这应该也是值传递和引用传递的区别吧。
原文链接:
https://juejin.im/post/5ca2f37ce51d4502a27f0539
原文二维码:
03
Golang的分代GC(Garbage Collection)
前言
Go语言的垃圾回收(Garbage Collection,以下简称GC)机制是并发三色标记,是一种不移动的标记-清扫 GC算法。在2018年的一次演讲 中,官方公布了尝试使用分代GC的想法。截止目前(2019年4月份),分代GC仍处于试验的状态,没有具体的发布时间。
go官方代码库,目前共有10个commit,本文主要讲解Go分代GC的实现思路以及现有的一些问题,后面可能详细讲解一下代码。
标记-清扫 GC算法
标记-清扫GC算法首先会从一些固定的root节点开始,对于Go语言来说就是全局指针和 goroutine 栈上的指针,根据这些root节点进行递归标记。当标记完成后,所有被标记的对象就都是存活的,其余的对象即是可以清扫的。
原文链接:
https://www.jianshu.com/p/2383743edb7b
原文二维码:
04
GCTT | 使用 Goroutines 池来处理基于任务的操作
我在多个场合都被问到为什么使用工作池模式,为什么不在需要的时候启动所需要的 Goroutines
?我的答案一直是:受限于工作的类型、你所拥有的计算资源和所处平台的限制,盲目地使用 Goroutines
将会导致程序运行缓慢,进而伤害整个系统的响应和性能。每个程序、系统和平台都有短板。不管是内存、CPU
或者带宽资源也都不是无限的。因此对于我们的程序来说,减少资源消耗、重用有限资源是非常重要的。工作池恰好提供了这样一种模式,可以帮助程序管理资源,提供调节资源的选项。
原文链接:
https://studygolang.com/articles/14481
原文二维码:
05
一个示例阐述 Go 应用的优雅中止
写在前面
按照一般的设计原则, 每个 HTTP 请求都是无状态的,因此大多情况下 Web 应用都很容易做水平扩展。“无状态”也意味着 HTTP 请求发起重试的成本是很低的,从而使得 Web 接口的开发很少关注优雅中止(一部分也因为 Web 框架做了这部分的考虑)。
不过,业务中 ① 总会存在对中止比较敏感的接口(比如支付相关),并且 ② 总会存在一些带状态的服务,此时优雅中止就显得比较重要了。
本文通过一个Go 定时任务示例来简单介绍 Go 技术栈中优雅中止的处理思路。
适用人群
入门——初级√——中级——高级;本文适应初级及以上。
代码级支持优雅中止是必要的
优雅中止的含义
所谓“优雅中止”,是指应用接收到特定的中止信号(比如 INT、TERM)后,不再接受外部的新请求,也不再创建内部的新任务,保持应用进程运行直到旧需求和旧任务执行完成后再终止退出。
原文链接:
https://jingwei.link/2019/03/31/golang-graceful-ending.html
原文二维码:
职位推荐:
【上海】积梦智能招聘Go工程师
【北京】游戏公司 Magic Tavern招聘DevOps Engineer
【北京】Aibee招聘后端工程师
招聘详情地址:https://gocn.vip/explore/category-8
Gopher China 2019 粉丝福利活动入口:
粉丝福利 | 第五届 Gopher China大会门票福利第三波!
Gopher China 2019大会企业团购通道即将关闭,还未购票的伙伴们抓紧时间啦
详情请加微信号:13458572960(玉璧)
戳下方“阅读原文”即可报名本次 Gopher China 大会!