深入理解Go语言
出版社: 清华大学出版社
原作名: 刘丹冰
页数: 458
ISBN: 9787302613664
Book Description
By finelybook
本书为深入理解学习Go语言必经之路中的重点知识领域,采用大量精美详细的图文介绍,文 章讲解深入浅出,极大降低了理解Golang底层精髓的学习门槛。本书包含3篇:第-篇为深度理论篇(第1章~第4章) , 包含深入理解Golang中GPM模型、深入理解Golang垃圾回收GC三色标记与混合写屏障、深入理解Golang内存管理模型、网络IO复 用模型等。第二篇为Golang实战中 需要进阶的知识育区介绍(第5章~第12章)。第三篇为基于Golang从0到1的实现轻量级网络服务框架Zinx及相关应用案例。本书主要的面向读者是已经具有软件编程开发经验的工程师、系统开发工程师、期望由Python、 PHP、 C/C++、Ruby、Java等 编程语言转职到Golang开发的后端工程师、期望深入理解Go语言特性的计算机软件学者等。
作者简介 · · · · · ·
刘丹冰( Aceld ) Zinx ( Golang 轻量级 TCP 服务器开源框架)作者,现就职于好未来集团,担任Golang 架构师、服务端高级专家。拥有多年互联网、网络安全、智能家居领域及分布式云服务研发经验,华为云 MVP 。曾就职于启明星辰,从事网络安全 IDS ( Intrusion Detection System ,入侵检测系统)、 IPS ( Intrusion Prevention System ,入侵防御系统)等研发工作。参与过国家互联网应急中心关口监测系统研发,并且担任重要岗位。曾任 Haier U + Smart Home 智能家居、智能电视服务研发工程师;传智教育科技 C / C ++、Golang 项目研究员,参与并创作过多部 C / C ++、Golang 研发课程及项目;Golang 、C / C ++业务线教学科研负责人。
目录
版权信息
作者简介
内容简介
序一
序二
前言
为什么写本书
本书主要面向的读者
本书读者应具备的背景知识
本书概述
致谢
第一篇Go语言修炼必经之路
第1章深入理解Go语言协程调度器GPM模型
1.1 Go语言“调度器”的由来
1.2 Go语言调度器GPM模型的设计思想
1.3 Go调度器调度场景过程全解析
1.4 小结
第2章Go语言混合写屏障的GC全场景分析
2.1 Go V1.3标记-清除算法
2.2 Go V1.5的三色标记法
2.3 Go V1.5的屏障机制
2.4 Go V1.8的混合写屏障
2.5 小结
第3章Go语言内存管理洗髓经
3.1 何为内存
3.2 内存为什么需要管理
3.3 操作系统是如何管理内存的
3.4 如何用Go语言实现内存管理和内存池设计
3.5 Go语言内存管理之魂TCMalloc
3.6 Go语言堆内存管理
3.7 小结
第4章深入理解Linux网络I/O复用并发模型
4.1 网络并发模型中的几个基本概念
4.2 解决阻塞等待缺点的办法
4.3 什么是epoll
4.4 epoll的触发模式
4.5 简单的epoll服务器
4.6 Linux下常见的网络I/O复用并发模型
4.7 小结
第二篇Go语言编程进阶之路
第5章有关Goroutine无限创建的分析
5.1 从操作系统分析进程、线程、协程的区别
5.2 协程的切换成本
5.3 Go是否可以无限创建,如何限定数量
5.4 动态保活Worker工作池设计
5.5 小结
第6章Go语言中的逃逸现象,变量“何时在栈、何时在堆”
6.1 Go语言中的逃逸现象
6.2 逃逸分析过程示例
6.3 普遍的逃逸规则
6.4 小结
第8章defer践行中必备的要领
8.1 defer的执行顺序
8.2 defer与return谁先谁后
8.3 函数返回值的初始化
8.4 有名函数返回值遇见defer的情况
8.5 defer遇见panic
8.6 defer中包含panic
8.7 defer下的函数参数包含子函数
8.8 小结
第9章Go语言中常用的问题及性能调试实践方法
9.1 如何分析程序的运行时间与CPU利用率
9.2 如何分析Go语言程序的内存使用情况
9.3 如何获取Go语言程序的CPU性能情况
9.4 小结
第10章make和new的原理性区别
10.1 变量的声明
10.2 Go语言中make与new的区别
10.3 slice与new关键字
10.4 小结
第11章精通Go Modules项目依赖管理
11.1 GOPATH的工作模式
11.2 Go Modules模式
11.3 使用Go Modules初始化项目
11.4 修改模块的版本依赖关系
11.5 小结
第12章ACID、CAP、BASE的分布式理论推进
12.1 从本地事务到分布式理论
12.2 ACID理论
12.3 CAP理论
12.4 CAP的“3选2”证明
12.5 分布式BASE理论
12.6 小结
第三篇Go语言框架设计之路
第13章Zinx框架基础服务构建
13.1 初探Zinx架构
13.2 Zinx-V0.1基础服务
13.3 Zinx-V0.2简单的连接封装与业务绑定
13.4 小结
第14章Zinx框架路由模块设计与实现
14.1 IRequest消息请求抽象类
14.2 IRouter路由配置抽象类
14.3 Zinx-V0.3集成简单路由功能
14.4 Server传递Router参数Connection
14.5 使用Zinx-V0.3完成应用程序
14.6 小结
第15章Zinx全局配置
15.1 Zinx-V0.4增添全局配置代码实现
15.2 使用Zinx-V0.4完成应用程序
15.3 小结
第16章Zinx消息封装模块设计与实现
16.1 创建消息封装类型
16.2 消息的封包与拆包
16.3 Zinx-V0.5代码实现
16.4 小结
第17章Zinx多路由模式设计与实现
17.1 创建消息管理模块
17.2 Zinx-V0.6代码实现
17.3 使用Zinx-V0.6完成应用程序
17.4 小结
第18章Zinx读写分离模型构建
18.1 Zinx-V0.7代码实现
18.2 小结
第19章Zinx消息队列和任务工作池设计与实现
19.1 创建消息队列
19.2 创建及启动Worker工作池
19.3 将消息发送给消息队列
19.4 Zinx-V0.8代码实现
19.5 使用Zinx-V0.8完成应用程序
19.6 小结
第20章Zinx连接管理及属性设置
20.1 连接管理
20.2 Zinx的连接属性设置
20.3 小结
第21章基于Zinx框架的应用项目案例
21.1 应用案例介绍
21.2 MMO多人在线游戏AOI算法
21.3 数据传输协议Protocol Buffer
21.4 MMO游戏服务器应用协议
21.5 构建项目与用户上线
21.6 世界聊天系统实现
21.7 上线位置信息同步
21.8 移动位置与未跨越格子的AOI广播
21.9 玩家下线
21.10 移动与跨越格子的AOI广播