深度解密调度器源码系列

上篇文章从全局视角讲了 Go 的调度器,其实在这个过程中,我还阅读了 Go 的源码,并作了详细的讲解。 整个系列共 10 篇文章,深度解析调度器的源码。 源码阅读系列 题目 三足鼎立 —— GPM 到底是什么?(一) 开天辟地 —— Go scheduler 初始化(二) 粉墨登场 —— main goroutine 的诞生(三) 偷天换日 —— g0 栈和用户栈如何完成切换?(四)……

阅读全文

深度解密 Go 语言之 scheduler

好久不见,你还好吗?距离上一篇文章已经过去了一个多月了,迟迟未更新文章,我也很着急啊。 跟大家汇报一下,这段时间我在看 proc.go 的源码,其实就是调度器的源码。代码有几千行之多,不像以往的 map,channel 等等。想把这些代码都看明白,是一个庞大的工程。到今天为止,我也不敢说我都看明白了。……

阅读全文

深度解密 Go 语言之 channel

大家好!“深度解密 Go 语言”系列好久未见,我们今天讲 channel,预祝阅读愉快!在开始正文之前,我们先说些题外话。 上一篇关于 Go 语言的文章讲 Go 程序的整个编码、编译、运行、退出的全过程。文章发出后,反响强烈,在各大平台的阅读量都不错。例如博客园登上了 48 小时阅读排行榜,并且受到了编辑推……

阅读全文

如何打造一份优雅的简历

最近一些朋友找我内推,并且给我发了他们的简历。很多简历在我看来都不合格,不只是内容,还有格式,在我这都没过关。然后,我都会把我的简历模板贡献出来,收获了诸多好评。 为了让更多读者朋友拥有一份优雅得体的简历,我会倾其所能,把经验全部传授出来,希望你能有收获。 虽然现在不是求职的高峰期,……

阅读全文

Go 程序是怎样跑起来的

刚开始写这篇文章的时候,目标非常大,想要探索 Go 程序的一生:编码、编译、汇编、链接、运行、退出。它的每一步具体如何进行,力图弄清 Go 程序的这一生。 在这个过程中,我又复习了一遍《程序员的自我修养》。这是一本讲编译、链接的书,非常详细,值得一看!数年前,我第一次看到这本书的书名,就非常喜……

阅读全文

曹大谈内存重排

写这篇文章的原因很简单,公司内部的 Golang 社区组织了第一期分享,主讲嘉宾就是我们敬爱的曹大。这个必定是要去听的,只是曹大的讲题非常硬核,所以提前找他要了参考资料,花了 1 个小时提前预习,才不至于在正式分享的时候什么也不懂。当然了,这也是对自己和主讲者的尊重。所有的参考资料都在文章最后一部……

阅读全文

深度解密 Go 语言之 context

Go 语言的 context 包短小精悍,非常适合新手学习。不论是它的源码还是实际使用,都值得投入时间去学习。 这篇文章依然想尝试全面、深入地去研究。文章相比往期而言,整体不长,希望你看完可以有所收获! 什么是 context Go 1.7 标准库引入 context,中文译作“上下文”,准确说它是 goroutine 的上下文,包含 goroutine 的运行状态、环……

阅读全文

深度解密 Go 语言之 unsafe

上一篇文章我们详细分析了 map 的底层实现,如果你也跟着阅读了源码,那一定对 unsafe.Pointer 不陌生,map 对 key 进行定位的时候,大量使用。 unsafe.Pointer 位于 unsafe 包,这篇文章,我们来深入研究 unsafe 包。先说明一下,本文没有之前那么长了,你可以比较轻松地读完,这样的时候不是太多。 上次发布文章的时候,包括代码超过 5w 字,后台编辑……

阅读全文

深度解密 Go 语言之 map

这篇文章主要讲 map 的赋值、删除、查询、扩容的具体执行过程,仍然是从底层的角度展开。结合源码,看完本文一定会彻底明白 map 底层原理。 我要说明的是,这里对 map 的基本用法涉及比较少,我相信可以通过阅读其他入门书籍了解。本文的内容比较深入,但是由于我画了各种图,我相信很容易看懂。 什么是 map 维基百科……

阅读全文

深度解密 Go 语言之反射

反射和 Interface 息息相关,而 Interface 是我们上一篇文章的内容。在开始正文前,和大家说点题外话。 上一篇关于 Interface 的文章发出后,获得了很多的关注和阅读。比如,登上了 GoCN 的每日新闻第一条: 可能是编辑者觉得这篇文章称不上“深度解密”,把标题给小小地改动了下,哈哈~~ 在博客园登上了 48 小时阅读排行榜: 在开发者头条……

阅读全文