作品简介

Go语言是一门年轻、简捷,但是强大、高效、充满潜力的服务器语言。本书使用浅显易懂的语言与大量图片深入介绍了Go语言编译时、类型系统、语法特性、函数调用规范、并发编程、内存管理与垃圾回收、运行状态监控等模块的使用方法和底层原理,并举例说明了构建大型软件工程需要遵循的设计规则,让作者系统并完整掌握Go语言隐藏在使用方法背后的底层细节。本书适合有一定工作经验的开发工程师进一步提升自己,以便更好地开发软件、系统架构,并进行工作面试。也可以作为高等院校计算机专业师生学习编程语言设计原理的参考教材

郑建勋

Golang contributor(Go语言垃圾回收模块代码贡献者)、Go语言精度库shopspring/decimal核心贡献者。滴滴高级研发工程师。拥有丰富的分布式、高并发、大规模微服务集群的开发设计经验。

微信公众号“gopher梦工厂”作者,知名go语言原创博主,51CTO学堂高级讲师、极客时间“每日一课”讲师。有丰富的教育经验,想读者之所想。相信这部系统且深入浅出的作品,会是读者打怪升级的最佳辅助。

作品目录

  • 内容简介
  • 前言
  • 第1章 深入Go语言编译器
  • 1.1 为什么要了解Go语言编译器
  • 1.2 Go语言编译器的阶段
  • 1.3 词法解析
  • 1.4 语法解析
  • 1.5 抽象语法树构建
  • 1.6 类型检查
  • 1.7 变量捕获
  • 1.8 函数内联
  • 1.9 逃逸分析
  • 1.10 闭包重写
  • 1.11 遍历函数
  • 1.12 SSA生成
  • 1.13 机器码生成——汇编器
  • 1.14 机器码生成——链接
  • 1.15 ELF文件解析
  • 1.16 总结
  • 第2章 浮点数设计原理与使用方法
  • 2.1 浮点数陷阱
  • 2.2 定点数与浮点数
  • 2.3 IEEE-754浮点数标准
  • 2.4 最佳实践:判断浮点数为整数
  • 2.5 常规数与非常规数
  • 2.6 NaN与Inf
  • 2.7 浮点数精度
  • 2.8 浮点数与格式化打印
  • 2.9 浮点数计算与精度损失
  • 2.10 多精度浮点数与math/big库
  • 2.11 总结
  • 第3章 类型推断全解析
  • 3.1 类型推断的优势
  • 3.2 Go语言中类型推断的特性
  • 3.3 类型推断原理
  • 3.4 总结
  • 第4章 常量与隐式类型转换
  • 4.1 常量声明与生存周期
  • 4.2 常量类型转换
  • 4.3 常量与隐式类型转换原理
  • 4.4 总结
  • 第5章 字符串本质与实现
  • 5.1 字符串的本质
  • 5.2 符文类型
  • 5.3 字符串工具函数
  • 5.4 字符串底层原理
  • 5.5 总结
  • 第6章 数组
  • 6.1 数组的声明方式
  • 6.2 数组值复制
  • 6.3 数组底层原理
  • 6.4 总结
  • 第7章 切片使用方法与底层原理
  • 7.1 切片使用方法
  • 7.2 切片底层原理
  • 7.3 总结
  • 第8章 哈希表与Go语言实现机制
  • 8.1 哈希碰撞与解决方法
  • 8.2 map基本操作
  • 8.3 哈希表底层结构
  • 8.4 哈希表原理图解
  • 8.5 深入哈希表原理
  • 8.6 总结
  • 第9章 函数与栈
  • 9.1 函数基本使用方式
  • 9.2 函数闭包与陷阱
  • 9.3 函数栈
  • 9.4 Go语言栈帧结构
  • 9.5 Go语言函数调用链结构与特性
  • 9.6 堆栈信息
  • 9.7 栈扩容与栈转移原理
  • 9.8 栈调试
  • 9.9 总结
  • 第10章 defer延迟调用
  • 10.1 使用defer的优势
  • 10.2 defer特性
  • 10.3 defer返回值陷阱
  • 10.4 defer底层原理
  • 10.5 总结
  • 第11章 异常与异常捕获
  • 11.1 panic函数使用方法
  • 11.2 异常捕获与recover
  • 11.3 panic与recover嵌套
  • 11.4 panic函数底层原理
  • 11.5 recover底层原理
  • 11.6 总结
  • 第12章 接口与程序设计模式
  • 12.1 接口的用途
  • 12.2 Go语言中的接口
  • 12.3 Go接口实践
  • 12.4 Go接口的使用方法
  • 12.5 接口底层原理
  • 12.6 总结
  • 第13章 反射高级编程
  • 13.1 为什么需要反射
  • 13.2 反射的基本使用方法
  • 13.3 反射底层原理
  • 13.4 总结
  • 第14章 协程初探
  • 14.1 进程与线程
  • 14.2 线程上下文切换
  • 14.3 线程与协程
  • 14.4 并发与并行
  • 14.5 简单协程入门
  • 14.6 主协程与子协程
  • 14.7 GMP模型
  • 14.8 总结
  • 第15章 深入协程设计与调度原理
  • 15.1 协程的生命周期与状态转移
  • 15.2 特殊协程g0与协程切换
  • 15.3 线程本地存储与线程绑定
  • 15.4 调度循环
  • 15.5 调度策略
  • 15.6 调度时机
  • 15.7 总结
  • 第16章 通道与协程间通信
  • 16.1 CSP并发编程
  • 16.2 通道基本使用方式
  • 16.3 select多路复用
  • 16.4 通道底层原理
  • 16.5 select底层原理
  • 16.6 总结
  • 第17章 并发控制
  • 17.1 context
  • 17.2 context原理
  • 17.3 数据争用检查
  • 17.4 锁
  • 17.5 总结
  • 第18章 内存分配管理
  • 18.1 Go语言内存分配全局视野
  • 18.2 对象分配
  • 18.3 总结
  • 第19章 垃圾回收初探
  • 19.1 为什么需要垃圾回收
  • 19.2 垃圾回收的5种经典算法
  • 19.3 Go语言中的垃圾回收
  • 19.4 Go垃圾回收演进
  • 19.5 总结
  • 第20章 深入垃圾回收全流程
  • 20.1 垃圾回收循环
  • 20.2 标记准备阶段
  • 20.3 并发标记阶段
  • 20.4 标记终止阶段
  • 20.5 辅助标记
  • 20.6 屏障技术
  • 20.7 垃圾清扫
  • 20.8 系统驻留内存清除
  • 20.9 实战:垃圾回收产生的性能问题
  • 20.10 总结
  • 第21章 调试利器:特征分析与事件追踪
  • 21.1 pprof的使用方式
  • 21.2 火焰图分析
  • 21.3 trace事件追踪
  • 21.4 pprof底层原理
  • 21.5 trace底层原理
  • 21.6 总结
展开全部