展开全部

主编推荐语

市面上少有的Go语言项目实践类图书,包含5个大的Go项目实践及重点源码分析。

内容简介

全书共分为6章,分别是命令行应用、HTTP应用、RPC应用、WebSocket应用、进程内缓存和Go语言中的大杀器,其中前5章是Go语言开发中最常见的项目类型。

本书对项目开发、细节分析、运行时分析等核心内容进行了较为深入的剖析,提供了相对完整的项目实践经验。在项目迭代过程中,难免会遇到问题,因此本书针对Go语言的大杀器(分析工具)及常见问题进行了全面讲解,帮助读者对各类问题进行排查。

本书适合有一定Go语言基础的读者以及相关开发人员阅读。

目录

  • 版权信息
  • 作者简介
  • 内容简介
  • 前言
  • 第1章 命令行应用:打造属于自己的工具集
  • 1.1 工具之旅
  • 1.1.1 标准库flag
  • 1.1.2 初始化项目
  • 1.1.3 示例
  • 1.1.4 分析
  • 1.1.5 定义参数类型
  • 1.1.6 小结
  • 1.2 单词格式转换
  • 1.2.1 安装Cobra
  • 1.2.2 初始化cmd和word子命令
  • 1.2.3 单词转换
  • 1.2.4 word子命令
  • 1.2.5 验证
  • 1.2.6 小结
  • 1.3 便捷的时间工具
  • 1.3.1 获取时间
  • 1.3.2 推算时间
  • 1.3.3 初始化子命令
  • 1.3.4 验证
  • 1.3.5 时区问题
  • 1.3.6 参考时间的格式
  • 1.3.7 小结
  • 1.4 SQL语句到结构体的转换
  • 1.4.1 需要转换的数据结构
  • 1.4.2 生成结构体
  • 1.4.3 表到结构体的转换
  • 1.4.4 初始化子命令
  • 1.4.5 验证
  • 1.4.6 小结
  • 第2章 HTTP应用:写一个完整的博客后端
  • 2.1 博客之旅
  • 2.1.1 gin
  • 2.1.2 初始化项目
  • 2.1.3 安装gin
  • 2.1.4 快速启动
  • 2.1.5 验证
  • 2.1.6 源码分析
  • 2.1.7 小结
  • 2.2 项目设计
  • 2.2.1 目录结构
  • 2.2.2 数据库
  • 2.2.3 创建model
  • 2.2.4 路由
  • 2.2.5 处理程序
  • 2.2.6 启动接入
  • 2.2.7 验证
  • 2.2.8 小结
  • 2.3 公共组件
  • 2.3.1 错误码标准化
  • 2.3.2 配置管理
  • 2.3.3 数据库连接
  • 2.3.4 日志写入
  • 2.3.5 响应处理
  • 2.3.6 小结
  • 2.4 接口文档
  • 2.4.1 Swagger简介
  • 2.4.2 OpenAPI和Swagger
  • 2.4.3 安装 Swagger
  • 2.4.4 写入注解
  • 2.4.5 生成
  • 2.4.6 路由
  • 2.4.7 查看接口文档
  • 2.4.8 源码分析
  • 2.4.9 存在的问题
  • 2.4.10 小结
  • 2.5 接口校验
  • 2.5.1 validator介绍
  • 2.5.2 业务接口校验
  • 2.5.3 国际化处理
  • 2.5.4 二次封装
  • 2.5.5 验证
  • 2.5.6 小结
  • 2.6 模块开发:标签管理
  • 2.6.1 新建model方法
  • 2.6.2 处理model回调
  • 2.6.3 新建dao方法
  • 2.6.4 新建service方法
  • 2.6.5 新增业务错误码
  • 2.6.6 新增路由方法
  • 2.6.7 验证接口
  • 2.6.8 发现问题
  • 2.6.9 解决问题
  • 2.6.10 小结
  • 2.7 上传图片和文件服务
  • 2.7.1 新增配置
  • 2.7.2 上传文件
  • 2.7.3 新建service方法
  • 2.7.4 新增业务错误码
  • 2.7.5 新增路由方法
  • 2.7.6 验证接口
  • 2.7.7 文件服务
  • 2.7.8 源码分析
  • 2.7.9 小结
  • 2.8 API访问控制
  • 2.8.1 JWT简介
  • 2.8.2 JWT的使用场景
  • 2.8.3 安装JWT
  • 2.8.4 配置JWT
  • 2.8.5 处理JWT令牌
  • 2.8.6 获取JWT令牌
  • 2.8.7 处理应用中间件
  • 2.8.8 小结
  • 2.9 常见应用中间件
  • 2.9.1 访问日志记录
  • 2.9.2 异常捕获处理
  • 2.9.3 服务信息存储
  • 2.9.4 接口限流控制
  • 2.9.5 统一超时控制
  • 2.9.6 注册中间件
  • 2.10 链路追踪
  • 2.10.1 OpenTracing规范
  • 2.10.2 Jaeger的使用
  • 2.10.3 在应用中注入追踪
  • 2.10.4 验证跟踪情况
  • 2.10.5 实现日志追踪
  • 2.10.6 实现SQL追踪
  • 2.10.7 小结
  • 2.11 应用配置问题
  • 2.11.1 配置读取
  • 2.11.2 配置热更新
  • 2.11.3 小结
  • 2.12 编译程序应用
  • 2.12.1 编译简介
  • 2.12.2 交叉编译
  • 2.12.3 编译缓存
  • 2.12.4 编译文件大小
  • 2.12.5 编译信息写入
  • 2.12.6 小结
  • 2.13 优雅重启和停止
  • 2.13.1 遇到的问题
  • 2.13.2 解决方案
  • 2.13.3 常用的快捷键
  • 2.13.4 实现优雅重启和停止
  • 2.13.5 小结
  • 2.14 思考
  • 2.14.1 总结
  • 2.14.2 作业
  • 第3章 RPC应用:启动你的RPC服务
  • 3.1 gRPC和Protobuf
  • 3.1.1 gRPC简介
  • 3.1.2 Protobuf简介
  • 3.1.3 gRPC的优点和缺点
  • 3.1.4 小结
  • 3.2 Protobuf的使用
  • 3.2.1 安装Protobuf
  • 3.2.2 初始化Demo项目
  • 3.2.3 编译和生成proto文件
  • 3.2.4 更多的数据类型支持
  • 3.2.5 小结
  • 3.3 gRPC的使用
  • 3.3.1 安装gRPC
  • 3.3.2 gRPC的调用方式
  • 3.3.3 Unary和Streaming RPC
  • 3.3.4 客户端与服务端是如何交互的
  • 3.3.5 小结
  • 3.4 运行一个gRPC服务
  • 3.4.1 初始化项目
  • 3.4.2 编译和生成proto文件
  • 3.4.3 编写gRPC方法
  • 3.4.4 编写启动文件
  • 3.4.5 调试gRPC接口
  • 3.4.6 gRPC的错误处理
  • 3.4.7 源码分析
  • 3.5 gRPC服务间的内调
  • 3.5.1 进行gRPC调用
  • 3.5.2 grpc.Dial做了什么
  • 3.6 提供HTTP接口
  • 3.6.1 支持其他协议
  • 3.6.2 另起端口监听HTTP
  • 3.6.3 在同端口监听HTTP
  • 3.6.4 同端口同方法提供双流量支持
  • 3.6.5 其他方案
  • 3.7 接口文档
  • 3.7.1 安装和下载
  • 3.7.2 静态资源转换
  • 3.7.3 Swagger UI的处理和访问
  • 3.7.4 Swagger描述文件的生成和读取
  • 3.7.5 查看接口文档
  • 3.7.6 小结
  • 3.8 gRPC拦截器
  • 3.8.1 拦截器的类型
  • 3.8.2 客户端和服务端拦截器
  • 3.8.3 实现一个拦截器
  • 3.8.4 实现多个拦截器
  • 3.8.5 “用”多个拦截器
  • 3.8.6 常用服务端拦截器
  • 3.8.7 常用客户端拦截器
  • 3.8.8 演示
  • 3.9 metadata和RPC自定义认证
  • 3.9.1 metadata介绍
  • 3.9.2 metadata是如何传递的
  • 3.9.3 对RPC方法做自定义认证
  • 3.9.4 小结
  • 3.10 链路追踪
  • 3.10.1 注入追踪信息
  • 3.10.2 初始化Jaeger
  • 3.10.3 metadata的读取和设置
  • 3.10.4 服务端
  • 3.10.5 客户端
  • 3.10.6 实现HTTP追踪
  • 3.10.7 验证
  • 3.10.8 小结
  • 3.11 gRPC服务注册和发现
  • 3.11.1 服务注册和发现
  • 3.11.2 gRPC负载均衡策略
  • 3.11.3 实现服务注册和发现
  • 3.11.4 其他方案
  • 3.12 实现自定义的protoc插件
  • 3.12.1 插件的内部逻辑
  • 3.12.2 generator.Plugin接口
  • 3.12.3 FileDescriptor属性
  • 3.12.4 实现一个简单的自定义插件
  • 3.12.5 实现定制化的gRPC自定义插件
  • 3.12.6 小结
  • 3.13 对gRPC接口进行版本管理
  • 3.13.1 接口变更
  • 3.13.2 可兼容性修改
  • 3.13.3 破坏性修改
  • 3.13.4 设计gRPC接口
  • 3.13.5 版本号管理
  • 3.14 常见问题讨论
  • 3.14.1 Q&A
  • 3.14.2 小结
  • 第4章 WebSocket应用:聊天室
  • 4.1 基于 TCP 的聊天室
  • 4.1.1 代码实现
  • 4.1.2 简单客户端
  • 4.1.3 演示
  • 4.1.4 改进
  • 4.1.5 小结
  • 4.2 认识 WebSocket
  • 4.2.1 WebSocket简介
  • 4.2.2 WebSocket 的优点
  • 4.2.3 选择一个合适的库
  • 4.2.4 nhooyr.io/websocket的介绍和使用
  • 4.2.5 抓包分析协议
  • 4.2.6 小结
  • 4.3 聊天室需求分析和设计
  • 4.3.1 聊天室的主要需求
  • 4.3.2 技术选择
  • 4.3.3 总体设计思路和流程
  • 4.4 项目结构组织和基础代码框架
  • 4.4.1 项目结构组织
  • 4.4.2 基础代码框架
  • 4.5 核心流程
  • 4.5.1 前端关键代码
  • 4.5.2 后端流程关键代码
  • 4.5.3 小结
  • 4.6 广播器
  • 4.6.1 单例模式
  • 4.6.2 广播器的实现
  • 4.7 非核心功能
  • 4.7.1@提醒功能
  • 4.7.2 敏感词处理
  • 4.7.3 离线消息处理
  • 4.7.4 小结
  • 4.8 关键性能分析和优化
  • 4.8.1 测试工具
  • 4.8.2 性能测试
  • 4.8.3 小结
  • 4.9 Nginx部署
  • 4.10 总结
  • 第5章 进程内缓存
  • 5.1 缓存简介
  • 5.2 缓存淘汰算法
  • 5.2.1 初始化项目
  • 5.2.2 缓存接口
  • 5.2.3 FIFO算法
  • 5.2.4 LFU算法
  • 5.2.5 LRU算法
  • 5.3 进程内缓存
  • 5.3.1 支持并发读写
  • 5.3.2 缓存库主体结构TourCache
  • 5.3.3 测试
  • 5.4 缓存的性能和优化思路
  • 5.4.1 基准测试
  • 5.4.2 优化方案
  • 5.4.3 小结
  • 5.5 高性能缓存库——BigCache
  • 5.5.1 简单使用
  • 5.5.2 优化技巧
  • 5.5.3 小结
  • 5.6 进程内缓存的优化版
  • 5.6.1 分片技术的应用
  • 5.6.2 测试
  • 5.6.3 GC耗时验证
  • 5.6.4 小结
  • 第6章 Go语言中的大杀器
  • 6.1 Go大杀器PProf之性能剖析(上)
  • 6.1.1 PProf简介
  • 6.1.2 PProf的使用
  • 6.1.3 通过测试用例做剖析
  • 6.1.4 通过Lookup写入文件做剖析
  • 6.1.5 为什么要初始化net/http/pprof
  • 6.1.6 小结
  • 6.2 Go大杀器PProf之性能剖析(下)
  • 6.2.1 场景
  • 6.2.2 措施
  • 6.2.3 排查
  • 6.2.4 发现根源、解决问题
  • 6.2.5 小结
  • 6.3 Go大杀器之跟踪剖析trace
  • 6.3.1 trace简介
  • 6.3.2 实战演练
  • 6.3.3 小结
  • 6.4 用GODEBUG看调度跟踪
  • 6.4.1 GODEBUG基础知识
  • 6.4.2 GODEBUG
  • 6.4.3 小结
  • 6.5 用GODEBUG看GC
  • 6.5.1 GC基础知识
  • 6.5.2 GODEBUG
  • 6.5.3 案例
  • 6.5.4 涉及术语
  • 6.5.5 小结
  • 6.6 Go进程诊断工具gops
  • 6.6.1 gops的基本使用
  • 6.6.2 常规命令
  • 6.6.3 源码分析
  • 6.6.4 需要注意的一点
  • 6.6.5 小结
  • 6.7 公开和发布度量指标
  • 6.7.1 expvar标准库
  • 6.7.2 Prometheus技术栈
  • 6.7.3 小结
  • 6.8 逃逸分析
  • 6.8.1 思考
  • 6.8.2 堆和栈
  • 6.8.3 逃逸分析简介
  • 6.8.4 需要逃逸分析的原因
  • 6.8.5 逃逸分析判断
  • 6.8.6 逃逸案例
  • 6.6.7 小结
  • 附录A Go modules的入门和使用
  • 附录B goroutine与panic、recover的小问题
  • 附录C Go在容器运行时要注意的细节
  • 附录D 让Go“恐慌”的十种方法
  • 反侵权盗版声明
展开全部

评分及书评

4.5
4个评分
  • 用户头像
    给这本书评了
    5.0
    给煎鱼哥的五星好评

    太好看了,虽然我才看了一章

      转发
      评论

    出版方

    电子工业出版社

    电子工业出版社成立于1982年10月,是国务院独资、工信部直属的中央级科技与教育出版社,是专业的信息技术知识集成和服务提供商。经过三十多年的建设与发展,已成为一家以科技和教育出版、期刊、网络、行业支撑服务、数字出版、软件研发、软科学研究、职业培训和教育为核心业务的现代知识服务集团。出版物内容涵盖了电子信息技术的各个分支及工业技术、经济管理、科普与少儿、社科人文等领域,综合出版能力位居全国出版行业前列。