欢迎光临澳大利亚新华书店网 [登录 | 免费注册]

    • 深入Go语言(原理关键技术与实战)/Go语言与云原生系列
      • 作者:编者:历冰//朱荣鑫//黄迪璇|责编:荆波
      • 出版社:中国铁道
      • ISBN:9787113295738
      • 出版日期:2023/04/01
      • 页数:408
    • 售价:39.6
  • 内容大纲

        随着服务器硬件性能的提升,多核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  具体实现