Go语言编程之旅:一起用Go做项目

Go语言编程之旅:一起用Go做项目

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

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

内容简介

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

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

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

作者简介

作者陈剑煜,网名煎鱼,微信公众号“脑子进煎鱼了”的作者,“Go夜读”SIG小组成员,对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“恐慌”的十种方法

反侵权盗版声明

Go语言编程之旅:一起用Go做项目是2020年由电子工业出版社出版,作者陈剑煜。

得书感谢您对《Go语言编程之旅:一起用Go做项目》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Python游戏趣味编程 电子书
1.易于学习和理解:先讲解较少的语法知识,通过游戏案例逐步引入新的语法知识; 2.为初学者量身打造:案例从易到难,所有程序的代码均不超过100行; 3.趣味性强:12个案例,涵盖了多种游戏类型,寓教于乐; 4.可拓展性强:提供练习题和参考答案,巩固知识,训练逻辑思维; 5.配套素材齐全:提供完整源代码和分步骤源代码、游戏素材、游戏效果演示视频,可通过异步社区观看游戏开发步骤讲解视频; 6.全彩印刷。 美国教育家杜威曾说过:“大多数的人,只觉得五官能接触的、实用的东西才有趣味,书本上的趣味是没有的。” 《Python游戏趣味编程》通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者学习用Python开发趣味游戏,从而提升读者对编程的兴趣和能力。 《Python游戏趣味编程》把趣味游戏开发应用于Python编程教学,通过介绍12个由易到难的有趣游戏案例的编写过程,带领读者从零基础开始学习。全书共13章,系统讲解了Python语言基本概念、开发环境搭建、循环、列表、数据类型、条件、复合运算符、字符串拼接、布尔变量、数组、函数、列表操作、面向对象编程等基础知识,还介绍了图片操作、文件读写、声音播放、异常处理等较为实用的编程技能,所有这些知识和技能,都通过游戏案例展示其用法。贯穿各章,还给出了一些练习,帮助读者巩固所学的知识。附录A给出了这些练习题的答案,附录B给出了Python语法知识在书中相关章节的索引。 《Python游戏趣味编程》适合不同年龄、不同层次的Python编程初学者阅读和自学,也可以作为中学生、大学生学习程序设计的教材和少儿编程培训机构的参考教材。 本书适合以下人群阅读: 想要让孩子学习Python编程的家长,或者想要自己教孩子编程的家长。 学习过其他编程语言,想要快速学习Python的人。 对计算机游戏感兴趣,想要尝试Python游戏编程的人。 想要学习Python编程的中学生和大学生。 少儿编程培训机构的老师和学生。 任何对计算机编程感兴趣、特别是初次接触编程的人。 本书中制作和讲解的小游戏 弹跳的小球 美丽的圆圈画 疯狂的小圆圈 飞翔的小鸟 见缝插针 飞机大战 勇闯地下一百层 贪吃蛇 拼图游戏 消灭星星 坚持一百秒 趣味图像生成
PythonQtGUI与数据可视化编程 电子书
Python PyQt5编写GUI应用程序及数据可视化方法
算法精粹:经典计算机科学问题的Python实现 电子书
Django实战:PythonWeb典型模块与项目开发 电子书
本书详细讲解Django基础知识及实战应用,适合Python进阶和Django开发入门者。
Java基础案例教程 电子书
传智播客经典图书的延续。本书采用章节 案例的编写方式,除第1章外,其他章节均加入案例讲解,总计20个案例,达到“边做边学”的效果,提供免费教学资源,包括11 个精美教学PPT、1300 道测试题、长达37 小时的教学视频等。