-
内容大纲
随着服务器硬件性能的提升,多核CPU已经很常见,充分利用硬件的多核运算优势是很多开发者不断探索和努力的方向。相较于一些编程语言的框架在不断地提高多核资源的使用效率,Go语言在多核并发上拥有原生的设计优势,其显著的语言特征是对并发编程的原生支持,目前在云计算、容器领域应用广泛。
Go语言总体来说上手简单,但是到实际的开发中,仅仅掌握Go语言的语法远远不够。因此在理解Go语言语法的基础上,深入了解Go语言的实现内幕、高级特性以及实践中的使用陷阱变得异常重要,这也正是本书要向读者详细介绍的。
本书适合Go语言开发者,尤其是想要深入了解或者转型Go语言开发的进阶型开发者。 -
作者介绍
-
目录
第1章 高级编程语言以及Go语言基础
1.1 高级语言简介
1.1.1 程序设计语言的定义
1.1.2 程序设计语言的发展历史
1.1.3 高级语言分类
1.2 为什么要研究编程语言
1.2.1 当今流行编程语言的概况
1.2.2 效率是程序语言流行的决定因素
1.2.3 了解高级语言的重要性
1.3 本书的主角:Go语言
1.3.1 体现Go语言特性的五个关键词
1.3.2 Go语言基础语法
第2章 数据结构源码分析
2.1 数组
2.1.1 数组的基础使用
2.1.2 数组的底层数据结构
2.1.3 数组的越界检查
2.2 字符串
2.2.1 Go语言字符串的基础操作
2.2.2 Go语言字符串的底层数据结构
2.2.3 Go语言字符串的拼接
2.2.4 Go语言字符串的类型转换
2.3 切片
2.3.1 切片的基础操作
2.3.2 切片的底层数据结构
2.3.3 切片的追加操作
2.3.4 切片的删除操作
2.4 哈希表
2.4.1 哈希表的基础操作
2.4.2 哈希表底层数据结构
2.4.3 哈希表的初始化
2.4.4 哈希表的读取操作
2.4.5 哈希表的写入操作
2.4.6 删除操作
2.4.7 哈希表的扩容操作
第3章 Go语言的并发结构
3.1 锁控制
3.1.1 互斥锁Mutext
3.1.2 读/写锁RWMutext
3.2 协程编排
3.2.1 协同等待的WaitGroup
3.2.2 只执行一次的Once
3.2.3 请求合并的SingleFlight
3.3 协程安全的数据结构
3.3.1 读写锁实现
3.3.2 分片加锁实现
3.3.3 sync.Map实现
3.3.4 性能评测实验
第4章 Go语言内存分配和垃圾回收机制
4.1 Linux内存空间布局
4.2 Go语言内存分配机制
4.2.1 Go语言内存空间的状态机
4.2.2 内存管理单元mspan
4.2.3 内存线程缓存mcache
4.2.4 内存中心缓存mcentral
4.2.5 页堆mheap
4.2.6 内存分配函数newObject
4.2.7 各级内存组件功能的实现
4.2.8 实验:打印内存分配相关日志
4.3 Go语言垃圾回收机制
4.3.1 Go语言垃圾回收的基础原理
4.3.2 Go语言垃圾回收流程
4.3.3 垃圾回收触发时机
4.3.4 清理终止阶段和开启标记阶段
4.3.5 标记阶段
4.3.6 标记终止阶段
4.3.7 内存清理
第5章 Go语言协程
5.1 进程与线程
5.1.1 进程和线程的概念
5.1.2 进程与线程的区别
5.1.3 并发与并行
5.2 协程的诞生
5.2.1 协程诞生的背景
5.2.2 协程的工作机制和优势
5.2.3 协程、线程、进程的差异
5.3 Go语言的调度器goroutine
5.3.1 Go context上下文
5.3.2 Go语言并发模型
5.3.3 Go调度模型概览
5.3.4 调度器的实现原理
5.4 goroutine之间的通信:channel
5.4.1 channel的设计与结构
5.4.2 channel的使用
5.4.3 解决channel阻塞:select
5.4.4 goroutine与channel的结合案例
5.4.5 并发问题是选Mutex还是选channel
第6章 Go语言网络并发处理
6.1 网络并发处理的演变
6.1.1 程序设计导致的C10K问题
6.1.2 操作系统调优的C1000K问题
6.1.3 更进一步的C10M问题
6.2 Reactor请求处理模式
6.2.1 Reactor模式简介
6.2.2 Getty网络库介绍
6.3 HTTP请求处理
6.3.1 net/http包解析
6.3.2 Go Fasthttp解析
第7章 Go语言错误处理机制
7.1 代码中的错误与异常
7.2 Go语言的错误处理哲学
7.2.1 Errors are values
7.2.2 error接口
7.2.3 对error进行编程
7.3 处理异常并恢复
7.3.1 基本使用方式
7.3.2 defer延时执行的实现原理
7.3.3 panic终止程序和recover从panic中恢复的原理
第8章 Go语言的类型系统
8.1 编程语言类型系统简介
8.1.1 用户自定义类型
8.1.2 抽象数据类型
8.1.3 面向对象编程
8.2 Go语言类型底层实现
8.2.1 Go语言结构体底层实现
8.2.2 嵌入底层实现
8.2.3 接口底层实现
8.2.4 接口函数调用和动态派发
第9章 Go语言的泛型和反射
9.1 Go语言的泛型
9.1.1 Go语言泛型基础理念
9.1.2 泛型的必要性
9.2 Go语言的泛型特性
9.2.1 Go语言泛型的理念
9.2.2 Go语言泛型语法
9.2.3 Go语言泛型的实现
9.3 Go语言反射机制
9.3.1 Go语言反射技术简介
9.3.2 Go语言反射使用
9.4 Go语言反射实现
9.4.1 获取反射对象
9.4.2 更新变量
9.4.3 调用函数
第10章 Go语言工程化实践
10.1 日志
10.1.1 日志级别
10.1.2 日志格式
10.1.3 日志框架
10.2 代码测试
10.2.1 单元测试
10.2.2 基准测试
10.3 Go语言调试
10.3.1 GDB调试
10.3.2 使用Delve进行调试
10.4 Go语言性能分析
10.4.1 普通应用程序的性能分析
10.4.2 后台服务程序的性能分析
10.4.3 利用go-torch生成火焰图
第11章 etcd存储原理与机制
11.1 etcd整体架构
11.1.1 etcd项目结构
11.1.2 etcd整体架构
11.2 etcd交互总览
11.3 读/写请求的处理过程
11.3.1 读操作的过程
11.3.2 写操作的过程
11.4 WAL日志与备份快照
11.4.1 WAL日志
11.4.2 快照备份
11.4.3 WAL存储
11.4.4 WAL日志打开
11.4.5 WAL文件读取
11.5 backend存储
11.5.1 BoltDB相关概念
11.5.2 Backend与BackendTx接口
第12章 如何写出更好的Go语言代码
12.1 Go语言的最佳实践
12.1.1 Go语言风格的命名方式
12.1.2 相似相近原则
12.1.3 尽早return
12.1.4 善用零值
12.1.5 结构体嵌入原则
12.1.6 功能选项Option
12.2 Go语言标准目录结构
12.3 Clean Architecture与DDD在Go语言项目中的应用
12.3.1 整洁架构
12.3.2 领域驱动设计
12.4 综合案例:货运业务项目
12.4.1 项目需求分析
12.4.2 项目目录结构
12.4.3 具体实现
同类热销排行榜
- C语言与程序设计教程(高等学校计算机类十二五规划教材)16
- 电机与拖动基础(教育部高等学校自动化专业教学指导分委员会规划工程应用型自动化专业系列教材)13.48
- 传感器与检测技术(第2版高职高专电子信息类系列教材)13.6
- ASP.NET项目开发实战(高职高专计算机项目任务驱动模式教材)15.2
- Access数据库实用教程(第2版十二五职业教育国家规划教材)14.72
- 信号与系统(第3版下普通高等教育九五国家级重点教材)15.08
- 电气控制与PLC(普通高等教育十二五电气信息类规划教材)17.2
- 数字电子技术基础(第2版)17.36
- VB程序设计及应用(第3版十二五职业教育国家规划教材)14.32
- Java Web从入门到精通(附光盘)/软件开发视频大讲堂27.92
推荐书目
-
孩子你慢慢来/人生三书 华人世界率性犀利的一枝笔,龙应台独家授权《孩子你慢慢来》20周年经典新版。她的《...
-
时间简史(插图版) 相对论、黑洞、弯曲空间……这些词给我们的感觉是艰深、晦涩、难以理解而且与我们的...
-
本质(精) 改革开放40年,恰如一部四部曲的年代大戏。技术突变、产品迭代、产业升级、资本对接...