互联网迅猛发展的数十年时间里,不断面领着各种新的场景与挑战,例如大数据、大规模集群计算、更复杂的网络环境、多核处理器引起对于高并发的需求,云计算,上千万行的服务器代码……
那些成熟但上了年纪的语言没能为新的场景给出直接的解决方案。Go语言在这种时代背景下应运而生了。
如今,Go语言就像冉冉升起的太阳耀眼夺目,又如万马奔腾,势不可挡。
一门有潜力的语言需要具备诸多要素,Go语言显然都具备了。
其语言的设计者都是计算机科学的奠基人,曾经设计了C语言与UNIX系统的顶尖设计者罗勃·派克(Rob Pike)、肯·汤普逊(Ken Thompson)倾力加盟。
顶尖大公司谷歌的豪华开发团队也对其进行大力支持。
此外,其还是杀手级项目Kubernetes和Docker的开发语言。
国内大厂字节跳动、腾讯、阿里巴巴等纷纷转型,数以百万计的开发者开始投入Go语言的怀抱。
作为云原生、区块链等领域的宠儿,随便打开一家招聘网站上,都可以看到琳琅满目的Go语言招聘岗位,高薪却难求合格的Go开发工程师。
我相信稍微有点经验的开发者都不会质疑Go语言会有良好的发展趋势。
我相信很多朋友已经跃跃欲试,开始查资料学习了。
不过,开始学是第三步,在此之前,容我们先走好第二步:怎么学。
同学A:那么Go语言要怎么学呢?
大佬B:你应该问, Go语言需要掌握什么?
如果盲目地学习,你会发现当你掌握了1+1等于几的时候,考试问的却是太阳到月亮的距离是多少。
当你满心欢喜会写一个协程的时候,面试的时候问的却是协程的调度方式、协程与线程的区别。
学习应该怎么学?
自己学当然没问题,但是太慢太苦了。
由于信息不对称,初学者很难对一个新的生态和体系有一个清晰的理解。
很多知识是多方面的,例如操作系统、Go语言的历史,Go特性的设计,还有复杂项目的经验,这都是在短时间内无法填鸭式学习的。
但是有没有更快的掌握方式呢?答案是肯定的,那就是站在巨人的肩膀上,才能看得更远。
很多有经验的开发者喜欢去网络上查找文章深入学习,但是网上的文章碎片化,并且很多地方不太严谨,甚至可能出现多篇文章的描述和结论不一致的地方,这时候很容易陷入看了很多文章,但模棱两可,只能感动自己,感动不了用人单位的情况。
《Go语言底层原理剖析》这本书便可以帮助读者解决以上问题。
本书语言通俗易懂,书中有系统权威的知识解构、精美的示意图,并对照源码和参考文献字斟句酌,在一线大规模系统中提炼出设计哲学与避坑方法,对于编译时、运行时及垃圾回收的精彩讲解弥补了国内的多项缺陷,这本罕见的诚意之作必将陪伴读者实现最艰苦的能力跨越,你想要的都会到来……
内容简介
本书由21章组成,这21章可以分为6部分。
第1~8章为第1部分,介绍Go语言的基础——编译时及类型系统。包括浮点数、切片、哈希表等类型以及类型转换的原理。
第9~11章为第2部分,介绍程序运行重要的组成部分——函数与栈。包括栈帧布局、栈扩容、栈调试的原理,并介绍了延迟调用、异常与异常捕获的原理。
第12、13章为第3部分,介绍Go语言程序设计的关键——接口。包括如何正确合理地使用接口构建程序、接口的实现原理和可能遇到的问题,并探讨了接口之上的反射原理。
第14~17章为第4部分,介绍Go语言并发的核心——协程与通道。详细论述了协程的本质以及运行时调度器的调度时机与策略。介绍了通过通信来共享内存的通道本质以及通道的多路复用原理,并探讨了并发控制、数据争用问题的解决办法及锁的本质。
第18~20章为第5部分,介绍Go语言运行时最复杂的模块——内存管理与垃圾回收。详细论述了Go语言中实现内存管理方法及垃圾回收的详细步骤。
第21章为第6部分,介绍Go语言可视化工具——pprof与trace。详细论述了通过工具排查问题、观察系统运行状态的方法与实现原理。
本书作者
郑建勋
Golang contributor(Go语言垃圾回收模块代码贡献者)、Go语言精度库shopspring/decimal核心贡献者。滴滴高级研发工程师。拥有丰富的分布式、高并发、大规模微服务集群的开发设计经验。
微信公众号“gopher梦工厂”作者,知名go语言原创博主,51CTO学堂高级讲师、极客时间“每日一课”讲师。有丰富的教育经验,想读者之所想。相信这部系统且深入浅出的作品,会是读者打怪升级的最佳辅助。
专家力荐
这是一本Go语言的初学者和进阶学者都可以受益的书。它不仅仅介绍了Go的语言特性,还深入这些特性背后的设计考量、编译器及语言实现的细节。授人以鱼和授人以渔在本书里面一起得到了体现。更难得的是,本书并没有粘贴大段的代码,而是以图文的形式将复杂的概念解释清楚,降低了阅读和理解的难度,使得读者不会望“底层”和“深入”二词而却步。
——叶绍志博士 Shopee技术委员会主席、顺丰速运前CTO、Google前主任工程师
如果喜欢本文欢迎 在看丨留言丨分享至朋友圈 三连
在本文最后做个简单的抽奖活动,本文回复的第 1、4、9、16、25 个人,都能够得到一本《Go 语言底层原理剖析》,你需要写写自己学 Go 的故事。注意:和 Go 语言无关的留言不算数,也不会被精选出来。最终解释权归码农桃花源所有。
100 字以内就行,不用长篇大论~