读书总结
因为本书的每个章节的知识点缺少关联性,所以也分章节进行总结。
第一章对 Go 语言的来龙去脉,语法特性等做了一个较为详细的阐述。也对 Go 语言的数据类型都有深入的讲解,涵盖了底层细节和使用技巧。最重要的是并发一章,脱离俗套的 GMP 模型,讲述了 Go 并发的本身:并发的内存模型、并发和并行、CSP 的同步通信等等,配合书中的素数筛实例,我认为这些比起 GMP 更能让人理解 Go 的并发。
第二章 CGO 编程。快速入门中的示例程序对于我这种首次接触 cgo 的人来说看的是津津有味。只是后来大段的文档类说明有些枯燥,到实战部分就好了。这里顺便吐槽一下微信读书对于代码块的显示太差了,不能复制还没有颜色的渲染,看得眼睛都疼,还是去看作者的 gitbook 好一点。https://chai2010.cn/advanced-go-programming-book
第三章 Go 汇编语言。同样是大段文档类的说明,同样的有点枯燥,不过网上对于 Go 汇编的内容太少了,所以这里的内容还是很有价值的,值得多看几遍。这章对于我来说有些不合适的点在于出发点不一致,我现在没有场景也没有机会去自己写 Go 汇编,而是仅仅需要能看懂 Go 汇编代码,能找出一些问题就够了。希望等我有机会再看这本书时会有更大的收获。
第四章 —— 第六章。这三章的统一特点就是讲的比较浅,示例比较多。跟着走一遍也能有些收获,但还是遗憾没有深入一些。我的示例笔记:GitHub - cnbailian/Advanced-Go-Programming-examples: The《Advanced Go Programming》examples
相关文章
分享一下与本书相关的文章和书籍,可配合相关章节阅读。
1.5 面对并发的内存模型。
Go 语言作者之一 Rob Pike 对于 Go 并发的演讲:《Go Concurrency Patterns》 —— Rob Pike
1.6 常见的并发模式
Rob Pike 对于并发不是并行的演讲:《Concurrency is not Parallelism》 —— Rob Pike
通过 WebGL 动画详细的讲解 Go 并发,素数筛对应书中的示例:《Visualizing Concurrency in Go》 —— divan
3.1 快速入门
推荐本书作者之一曹大的文章:《Go 系列文章3 :plan9 汇编入门》 —— cch
5.2 请求路由
关于本章中提到的 REST 接口风格,如果感兴趣,可以看下我的推荐文章。
本篇文章是 REST 实践指南,如果想实现一个较好的 REST 风格结构,基本上看这篇文章就够了。《Best Practices for Designing a Pragmatic RESTful API》 —— Vinay Sahni
如果对 REST 本身感兴趣,可以读一读 REST 的出处论文:Fielding 博士的论文,译者李锟。《架构风格与基于网络的软件架构设计》
英文原版:《Architectural Styles and the Design of Network-based Software Architectures》 —— Roy Thomas Fielding
5.4 请求校验
本章提到的“卫语句”在《Go 语言实战:编写可维护 Go 语言代码建议》中有过类似的描述,称为“视线”编码,都是为了解决深层嵌套问题。同时推荐这篇文章,里面的建议都很有用。
5.7 常见大型 Web 项目分层
本章提到的 MVC 架构相对简单,可能难以应对复杂的业务场景。推荐《Clean Architecture》这本书,里面提到的整洁架构也是分层的架构设计,但能更好的解耦,解决依赖问题。
领域驱动设计(DDD)的学习成本更高,但应该能更好的处理复杂业务逻辑:
经典之作,学习起来很困难:《领域驱动设计》
infoq 推出的精简版,容易入门:《领域驱动设计精简版》
附录A A.8
Go 在 1.14 版本后增加了抢占式调度,不会再被死循环的 Goroutine 影响正常调度:《Under The Hood》6.8.2 抢占式调度