当系统调用返回EAGAIN时,会调用WaitRead/WaitWrite来阻塞当前协程,现在我们接着聊。 我要晨读
通常C++通过指针引用计数来回收对象,但是这不能处理循环引用。为了避免引用计数的缺陷,后来出现了标记清除,分代等垃圾回收算法。Go的垃圾回收官方形容为 非分代 非紧缩 写屏障 并发标记清理。标记清理算法的字面解释,就是将可达的内存块进行标记mark,最后没有标记的不可达内存块将进行清理sweep。 我要晨读
Golang URL 解析常用代码 我要晨读
go 工具链目前[不支持编译 windows 下的动态链接库][1],不过[支持静态链接库][2]。 想要产生dll,可以这样 workaround ,参考 golang [issuse#11058][1]: 我要晨读
go2.0 会有什么新特性呢?下图是一个老外的调侃,他不希望发生这样的事情(please don't make it happen)。我倒是希望其中一些实现,比如泛型和操作符重载和多态。 我要晨读
图解 Go 中的延迟调用 defer:本教程将通过几个实用的例子讲解 Go 语言中的 defer 的用法。 我要晨读
众所周知,带缓冲的 IO 标准库一直是 Go 中优化读写操作的利器。本文带领大家深入理解 Go 标准库之 bufio.Scanner。该文由 GCTT 翻译。 我要晨读
集合就是不同对象的无序聚集。Go 数据结构之集合。本文图文并茂讲解 Go 集合的实现。Go 中文网增加了专题功能,欢迎大家入驻开通自己的专栏。 我要晨读
这一章节我们将详细描述网络关键API的实现,主要包括Listen、Accept、Read、Write等。 另外,为了突出关键流程,我们选择忽略所有的错误。这样可以使得代码看起来更为简单。 而且我们只关注tcp协议实现,udp和unix socket不是我们关心的。 我要晨读
go局部变量的存储空间是堆还是栈? 编译器会自动选择在栈上还是在堆上分配局部变量的存储空间,但可能令人惊讶的是,这个选择并不是由用var还是new声明变量的方式决定的。 我要晨读
之前在 golang 群里有人问过为什么程序会莫名其妙的 hang 死然后不再响应任何请求。单核 cpu 打满。 这个特征和我们公司的某个系统曾经遇到的情况很相似,内部经过了很长时间的定位分析总结,期间还各种阅读 golang 的 runtime 和 gc 代码,最终才定位到是业务里出现了类型下面这样的代码 我要晨读
一文读懂Go的net/http标准库。在进行 Web 应用开发的时候,使用成熟并且复杂的 Web 应用框架通常会使开发变得更加迅速和简便,但这也意味着开发者必须接受框架自身的一套约定和模式。本文的目的并不是让大家抛弃框架、约定和模式——理解那些隐藏在框架之下的底层概念和基础设施也是非常重要的。 我要晨读
Go 语言函数众生相。本文是对匿名函数、高阶函数、闭包、同步、延时(defer)及其他 Go 函数类型或特性的概览。GCTT 出品。 我要晨读
处理微信支付退款结果通知时,需要对返回数据进行AES-256-ECB解密,golang标准库未支持AES ECB加解密,特此记录。 我要晨读
经过四年的快速发展 Docker 已经成为了很多公司的标配,也不再是一个只能在开发阶段使用的玩具了。作为在生产环境中广泛应用的产品,Docker 有着非常成熟的社区以及大量的使用者,代码库中的内容也变得非常庞大。 我要晨读
Slice 和 Map 是 Go 中的两种重要的数据类型。本文将记录我关于这两种数据结构性能的一些关键的发现。 在讨论性能方面之前,我们先来简单介绍一下 Slice 和 Map。 我要晨读
他是 Golang 的作者之一。如果你还没有看过视频,请继续阅读,这篇文章是我对那个视频内容的一些个人见解。我感觉视频不是很完整。我猜 Rob 因为时间关系忽略掉了一些他认为不值得讲的观点。不过我花了很多的时间来写了一篇综合全面的关于 go-routines 的文章。我没有涵盖视频中涵盖的所有主题。我会介绍一些自己用来解决 Golang 常见问题的项目。 我要晨读
在入坑第一式中,我们提到过函数。当时以main函数为例进行的讲解。 那会是为了demo需要,拿来main就用。在此节中,开始详细讲解函数。 函数,字方法(method),又名子例程(sub-routine),别名过程(procedure)。在不同的语言种,有不同的叫法。 但本质都是一样的,都是一组执行不同任务的语句。别的语言暂且不提,下面所说的都是Golang的家规。 我要晨读
Golang 在异步处理上有着上佳的表现。因为 goroutines 和 channels 是非常容易使用且有效的异步处理手段。下面我们一起来看一看 Golang 的简易任务队列. 我要晨读