更新时间:2022-01-04 17:43:02
封面
版权信息
作者简介
推荐语
推荐序
前言
第八部分 测试、性能剖析与调试
第40条 理解包内测试与包外测试的差别
40.1 官方文档的“自相矛盾”
40.2 包内测试与包外测试
第41条 有层次地组织测试代码
41.1 经典模式——平铺
41.2 xUnit家族模式
41.3 测试固件
第42条 优先编写表驱动的测试
42.1 Go测试代码的一般逻辑
42.2 表驱动的测试实践
42.3 表驱动测试的优点
42.4 表驱动测试实践中的注意事项
第43条 使用testdata管理测试依赖的外部数据文件
43.1 testdata目录
43.2 golden文件惯用法
第44条 正确运用fake、stub和mock等辅助单元测试
44.1 fake:真实组件或服务的简化实现版替身
44.2 stub:对返回结果有一定预设控制能力的替身
44.3 mock:专用于行为观察和验证的替身
第45条 使用模糊测试让潜在bug无处遁形
45.1 模糊测试在挖掘Go代码的潜在bug中的作用
45.2 go-fuzz的初步工作原理
45.3 go-fuzz使用方法
45.4 使用go-fuzz建立模糊测试的示例
45.5 让模糊测试成为“一等公民”
第46条 为被测对象建立性能基准
46.1 性能基准测试在Go语言中是“一等公民”
46.2 顺序执行和并行执行的性能基准测试
46.3 使用性能基准比较工具
46.4 排除额外干扰,让基准测试更精确
第47条 使用pprof对程序进行性能剖析
47.1 pprof的工作原理
47.2 使用pprof进行性能剖析的实例
第48条 使用expvar输出度量数据,辅助定位性能瓶颈点
48.1 expvar包的工作原理
48.2 自定义应用通过expvar输出的度量数据
48.3 输出数据的展示
第49条 使用Delve调试Go代码
49.1 关于调试,你首先应该知道的几件事
49.2 Go调试工具的选择
49.3 Delve调试基础、原理与架构
49.4 并发、Coredump文件与挂接进程调试
第九部分 标准库、反射与cgo
第50条 理解Go TCP Socket网络编程模型
50.1 TCP Socket网络编程模型
50.2 TCP连接的建立
50.3 Socket读写
50.4 Socket属性
50.5 关闭连接
第51条 使用net/http包实现安全通信
51.1 HTTPS:在安全传输层上运行的HTTP协议
51.2 HTTPS安全传输层的工作机制
51.3 非对称加密和公钥证书
51.4 对服务端公钥证书的校验
51.5 对客户端公钥证书的校验
第52条 掌握字符集的原理和字符编码方案间的转换
52.1 字符与字符集
52.2 Unicode字符集的诞生与UTF-8编码方案
52.3 字符编码方案间的转换
第53条 掌握使用time包的正确方式
53.1 时间的基础操作
53.2 时间的格式化输出
53.3 定时器的使用
第54条 不要忽略对系统信号的处理
54.1 为什么不能忽略对系统信号的处理
54.2 Go语言对系统信号处理的支持
54.3 使用系统信号实现程序的优雅退出
第55条 使用crypto下的密码学包构建安全应用
55.1 Go密码学包概览与设计原则
55.2 分组密码算法
55.3 公钥密码
55.4 单向散列函数
55.5 消息认证码
55.6 数字签名
55.7 随机数生成
第56条 掌握bytes包和strings包的基本操作
56.1 查找与替换
56.2 比较
56.3 分割
56.4 拼接
56.5 修剪与变换
56.6 快速对接I/O模型
第57条 理解标准库的读写模型
57.1 直接读写字节序列
57.2 直接读写抽象数据类型实例
57.3 通过包裹类型读写数据
第58条 掌握unsafe包的安全使用模式
58.1 简洁的unsafe包
58.2 unsafe包的典型应用
58.3 正确理解unsafe.Pointer与uintptr
58.4 unsafe.Pointer的安全使用模式
第59条 谨慎使用reflect包提供的反射能力
59.1 Go反射的三大法则