深入Go语言:原理、关键技术与实战
正版保障 假一赔十 可开发票
¥
59.32
6.0折
¥
99
全新
库存2件
作者历冰,朱荣鑫,黄迪璇编著
出版社中国铁道出版社有限公司
ISBN9787113295738
出版时间2023-04
装帧平装
开本16开
定价99元
货号12291223
上书时间2024-08-18
商品详情
- 品相描述:全新
- 商品描述
-
目录
第1章 高级编程语言以及Go语言基础 1.1 高级语言简介... 11.1.1 程序设计语言的定义... 2 1.1.2 程序设计语言的发展历史... 4 1.1.3 高级语言分类... 5 1.2 为什么要研究编程语言... 81.2.1 当今流行编程语言的概况... 8 1.2.2 效率是程序语言流行的决定因素... 9 1.2.3 了解高级语言的重要性... 12 1.3 本书的主角:Go语言... 131.3.1 体现Go语言特性的五个关键词... 14 1.3.2 Go语言基础语法... 15 第2章 数据结构源码分析 2.1 数组... 242.1.1 数组的基础使用... 25 2.1.2 数组的底层数据结构... 27 2.1.3 数组的越界检查... 29 2.2 字符串... 302.2.1Go语言字符串的基础操作... 30 2.2.2Go语言字符串的底层数据结构... 33 2.2.3Go语言字符串的拼接... 34 2.2.4Go语言字符串的类型转换... 35 2.3 切片... 372.3.1 切片的基础操作... 37 2.3.2 切片的底层数据结构... 38 2.3.3 切片的追加操作... 39 2.3.4 切片的删除操作... 43 2.4 哈希表... 442.4.1 哈希表的基础操作... 44 2.4.2 哈希表底层数据结构... 45 2.4.3 哈希表的初始化... 47 2.4.4 哈希表的读取操作... 49 2.4.5 哈希表的写入操作... 50 2.4.6 删除操作... 53 2.4.7 哈希表的扩容操作... 54 第3章 Go语言的并发结构 3.1 锁控制... 613.1.1 互斥锁Mutext 62 3.1.2 读写锁RWMutext 69 3.2 协程编排... 713.2.1 协同等待的WaitGroup. 72 3.2.2 只执行一次的Once. 75 3.2.3 请求合并的SingleFlight 76 3.3 协程安全的数据结构... 803.3.1 读写锁实现... 80 3.3.2 分片加锁实现... 81 3.3.3sync.Map实现... 83 3.3.4 性能评测实验... 89 第4章 Go语言内存分配和垃圾回收机制 4.1 Linux内存空间布局... 914.2 Go语言内存分配机制... 944.2.1Go语言内存空间的状态机... 95 4.2.2 内存管理单元mspan. 96 4.2.3 内存线程缓存mcache. 98 4.2.4 内存中心缓存mcentral 99 4.2.5 页堆mheap. 100 4.2.6 内存分配函数newObject 101 4.2.7 各级内存组件功能的实现... 106 4.2.8 实验:打印内存分配相关日志... 119 4.3 Go语言垃圾回收机制... 1204.3.1Go语言垃圾回收的基础原理... 120 4.3.2Go语言垃圾回收流程... 124 4.3.3 垃圾回收触发时机... 125 4.3.4 清理终止阶段和开启标记阶段... 129 4.3.5 标记阶段... 132 4.3.6 标记终止阶段... 150 4.3.7 内存清理... 152 第5章 Go语言协程 5.1 进程与线程... 1565.1.1 进程和线程的概念... 156 5.1.2 进程与线程的区别... 160 5.1.3 并发与并行... 161 5.2 协程的诞生... 1625.2.1 协程诞生的背景... 162 5.2.2 协程的工作机制和优势... 162 5.2.3 协程、线程、进程的差异... 164 5.3 Go语言的调度器goroutine. 1645.3.1Go context 上下文... 164 5.3.2Go语言并发模型... 169 5.3.3Go调度模型概览... 170 5.3.4 调度器的实现原理... 173 5.4 goroutine之间的通信:channel 1775.4.1channel 的设计与结构... 177 5.4.2channel的使用... 179 5.4.3 解决channel阻塞:select 183 5.4.4goroutine 与channel的结合案例... 185 5.4.5 并发问题是选Mutex还是选channel 187 第6章 Go语言网络并发处理 6.1 网络并发处理的演变... 1896.1.1 程序设计导致的C10K问题... 190 6.1.2 操作系统调优的C1000K问题... 193 6.1.3 更进一步的C10M问题... 193 6.2 Reactor请求处理模式... 1956.2.1Reactor模式简介... 195 6.2.2Getty网络库介绍... 200 6.3 HTTP请求处理... 2056.3.1nethttp包解析... 206 6.3.2Go Fasthttp解析... 210 第7章 Go语言错误处理机制 7.1 代码中的错误与异常... 2197.2 Go语言的错误处理哲学... 2207.2.1Errors are values 220 7.2.2error接口... 220 7.2.3 对error进行编程... 223 7.3 处理异常并恢复... 2237.3.1 基本使用方式... 223 7.3.2defer延时执行的实现原理... 228 7.3.3panic终止程序和recover从panic中恢复的原理... 241 第8章 Go语言的类型系统 8.1 编程语言类型系统简介... 2468.1.1 用户自定义类型... 247 8.1.2 抽象数据类型... 250 8.1.3 面向对象编程... 251 8.2 Go语言类型底层实现... 2588.2.1Go语言结构体底层实现... 258 8.2.2 嵌入底层实现... 264 8.2.3 接口底层实现... 266 8.2.4 接口函数调用和动态派发... 271 第9章 Go语言的泛型和反射 9.1 Go语言的泛型... 2749.1.1Go语言泛型基础理念... 274 9.1.2 泛型的必要性... 275 9.2 Go语言的泛型特性... 2769.2.1Go语言泛型的理念... 277 9.2.2Go语言泛型语法... 277 9.2.3Go语言泛型的实现... 280 9.3 Go语言反射机制... 2839.3.1Go语言反射技术简介... 284 9.3.2Go语言反射使用... 284 9.4 Go语言反射实现... 2939.4.1 获取反射对象... 293 9.4.2 更新变量... 297 9.4.3 调用函数... 298 第10章 Go语言工程化实践 10.1 日志... 30210.1.1 日志级别... 302 10.1.2 日志格式... 303 10.1.3 日志框架... 304 10.2 代码测试... 32210.2.1 单元测试... 323 10.2.2 基准测试... 326 10.3 Go语言调试... 33210.3.1GDB调试... 333 10.3.2 使用Delve进行调试... 336 10.4 Go语言性能分析... 34010.4.1 普通应用程序的性能分析... 341 10.4.2 后台服务程序的性能分析... 345 10.4.3 利用go-torch生成火焰图... 350 第11章 etcd存储原理与机制 11.1 etcd整体架构... 35311.1.1etcd项目结构... 353 11.1.2etcd整体架构... 355 11.2 etcd交互总览... 35611.3 读写请求的处理过程... 35911.3.1 读操作的过程... 359 11.3.2 写操作的过程... 362 11.4 WAL日志与备份快照... 36511.4.1WAL日志... 365 11.4.2 快照备份... 367 11.4.3WAL存储... 369 11.4.4WAL日志打开... 374 11.4.5WAL文件读取... 376 11.5 backend存储... 37911.5.1BoltDB相关概念... 379 11.5.2Backend与BackendTx接口... 380 第12章 如何写出更好的Go语言代码 12.1 Go语言的很好实践... 38512.1.1Go语言风格的命名方式... 385 12.1.2 相似相近原则... 387 12.1.3 尽早return. 388 12.1.4 善用零值... 389 12.1.5 结构体嵌入原则... 390 12.1.6 功能选项Option. 391 12.2 Go语言标准目录结构... 39312.3 Clean Architecture与DDD在Go语言项目中的应用... 39612.3.1 整洁架构... 396 12.3.2 领域驱动设计... 398 12.4 综合案例:货运业务项目... 39912.4.1 项目需求分析... 400 12.4.2 项目目录结构... 402 12.4.3 具体实现... 403
精彩内容
随着服务器硬件性能的提升,多核CPU已经很常见,充分利用硬件的多核运算优势是很多开发者不断探索和努力的方向。相较于一些编程语言的框架在不断地提高多核资源的使用效率,Go语言在多核并发上拥有原生的设计优势,其显著的语言特征是对并发编程的原生支持,目前在云计算、容器领域应用广泛。
Go语言总体来说上手简单,但是到实际的开发中,仅仅掌握Go语言的语法远远不够。因此在理解Go语言语法的基础上,深入了解Go语言的实现内幕、高级特性以及实践中的使用陷阱变得异常重要,这也正是《深入Go语言:原理、关键技术与实战》要向读者详细介绍的。
《深入Go语言:原理、关键技术与实战》适合Go语言开发者,尤其是想要深入了解或者转型Go语言开发的进阶犁开发者。
— 没有更多了 —
以下为对购买帮助不大的评价