 Go性能优化概览-曹春晖业务性能优化概览 By Xargin 《Go 语⾔⾼级编程》合著者 Go contributor ⽬ 录 优化的前置知识 01 ⽣产环境的优化 02 Continuous profiling 03 优化的前置知识 第⼀部分 Latency numbers every programmer should know https://colin-scott.github.io/p io/personal_website/research/interactive_latency.html 优化的前置知识 • 要能读得懂基本的调⽤栈 • 了解 Go 语⾔内部原理(runtime,常⽤标准库) • 了解常⻅的⽹络协议(http、pb) https://github.com/bagder/http2-explained https://github.com/bagder/http3-explained ⽤户声明的对象,被放在栈上还是堆上, 是由编译器的 escape analysis 来决定的 ⽅法论 内存使⽤优化 CPU 使⽤优化 阻塞优化 GC 优化 标准库优化 runtime 优化 应⽤层优化 底层优化 • 越靠近应⽤层,优化带来的效果越好 • 涉及到底层优化的,⼤多数情况下还是修改应⽤代码 逻辑优化 ⽣产环境的优化 第⼆部分 ⾸先,是发现问题 API 压测 全链路压测 ⽣产环境被 ⾼峰流量打爆了0 码力 | 40 页 | 8.69 MB | 1 年前3 Go性能优化概览-曹春晖业务性能优化概览 By Xargin 《Go 语⾔⾼级编程》合著者 Go contributor ⽬ 录 优化的前置知识 01 ⽣产环境的优化 02 Continuous profiling 03 优化的前置知识 第⼀部分 Latency numbers every programmer should know https://colin-scott.github.io/p io/personal_website/research/interactive_latency.html 优化的前置知识 • 要能读得懂基本的调⽤栈 • 了解 Go 语⾔内部原理(runtime,常⽤标准库) • 了解常⻅的⽹络协议(http、pb) https://github.com/bagder/http2-explained https://github.com/bagder/http3-explained ⽤户声明的对象,被放在栈上还是堆上, 是由编译器的 escape analysis 来决定的 ⽅法论 内存使⽤优化 CPU 使⽤优化 阻塞优化 GC 优化 标准库优化 runtime 优化 应⽤层优化 底层优化 • 越靠近应⽤层,优化带来的效果越好 • 涉及到底层优化的,⼤多数情况下还是修改应⽤代码 逻辑优化 ⽣产环境的优化 第⼆部分 ⾸先,是发现问题 API 压测 全链路压测 ⽣产环境被 ⾼峰流量打爆了0 码力 | 40 页 | 8.69 MB | 1 年前3
 1.Golang工具链选择_水羽哲⼯工具链选择 创业公司 CuriosityChina is a digital and tech company focusing on the development of social CRM, building a one stop social media customer/ user management platform - CURIO. By tracking, analyzing 2 历史与现状 • 开发环境 • 测试环境 • ⽣生产环境 统⼀一开发环境 应⽤用程序运⾏行环境的依赖描述! + + + + Docker Compose 简单的测试⼯工具 gor ngrok 封装你的业务 Generator gor Godep ngrok goconvey 线上应⽤用 项⺫⽬目太多 定制化 服务状态管理 Supervisor0 码力 | 55 页 | 5.09 MB | 1 年前3 1.Golang工具链选择_水羽哲⼯工具链选择 创业公司 CuriosityChina is a digital and tech company focusing on the development of social CRM, building a one stop social media customer/ user management platform - CURIO. By tracking, analyzing 2 历史与现状 • 开发环境 • 测试环境 • ⽣生产环境 统⼀一开发环境 应⽤用程序运⾏行环境的依赖描述! + + + + Docker Compose 简单的测试⼯工具 gor ngrok 封装你的业务 Generator gor Godep ngrok goconvey 线上应⽤用 项⺫⽬目太多 定制化 服务状态管理 Supervisor0 码力 | 55 页 | 5.09 MB | 1 年前3
 IPC性能极致优化方案-RPAL落地实践IPC性能极致优化方案-RPAL落地实践 谢正尧 字节跳动 研发工程师 目 录 方案诞生的背景 01 全进程地址空间共享与保护 02 用户态进程切换 03 高效的Go Event Poller 04 RPC框架Kitex集成 05 性能收益与业务展望 06 方案诞生的背景 第一部分 方案诞生的背景 几种常见的同机通信场景: 1. 微服务合并部署(亲和性部署、sidecar Call,对比同进程 Function Call 仅增加 200 ns 延迟。 业务真实数据 性能收益与业务展望 业务展望 1. 定制化场景深度优化: 同步 RPAL Call; 请求/响应 Zero Copy; 2. 业务进程与服务网格 IPC 性能优化: 结合用户态协议栈,实现网络 IO 绕过内核 CloudWeGo 是一套由字节跳动基础架构服务框架团队开源的、 可快速构建企业级云原生微服务架构0 码力 | 39 页 | 2.98 MB | 1 年前3 IPC性能极致优化方案-RPAL落地实践IPC性能极致优化方案-RPAL落地实践 谢正尧 字节跳动 研发工程师 目 录 方案诞生的背景 01 全进程地址空间共享与保护 02 用户态进程切换 03 高效的Go Event Poller 04 RPC框架Kitex集成 05 性能收益与业务展望 06 方案诞生的背景 第一部分 方案诞生的背景 几种常见的同机通信场景: 1. 微服务合并部署(亲和性部署、sidecar Call,对比同进程 Function Call 仅增加 200 ns 延迟。 业务真实数据 性能收益与业务展望 业务展望 1. 定制化场景深度优化: 同步 RPAL Call; 请求/响应 Zero Copy; 2. 业务进程与服务网格 IPC 性能优化: 结合用户态协议栈,实现网络 IO 绕过内核 CloudWeGo 是一套由字节跳动基础架构服务框架团队开源的、 可快速构建企业级云原生微服务架构0 码力 | 39 页 | 2.98 MB | 1 年前3
 5.cgo 原理解析及优化实践cgo 原理解析及优化实践 朱德江 蚂蚁集团 MOSN 核心成员 Golang contributor Envoy Golang extension maintainer 公众号 • 开源爱好者 • 十余年网关研发 • OpenResty 老司机(NGINX + LuaJIT) • MOSN 核心成员 • Envoy Golang extension maintainer • • 玩过 DSL 编译器 • 对 LuaJIT、Go 有一些研究 目 录 背景介绍 01 cgo 工作机制 02 cgo 调度机制 03 CPU 优化 04 GC 优化 05 背景介绍 第一部分 网关发展历史 网关的扩展机制 什么是 MoE 举个例子 为什么需要 MoE Envoy  研发效能  良好的生态,上手门槛低  Wasm?Lua? Golang 良好的可扩展性  高性能 MoE 有什么挑战 业界少见 - 重度依赖 cgo  性能敏感  延时敏感 网关场景  cgo 是成熟 & 稳定的  唯一的 bug:trace 工具  性能挖掘空间大 cgo 工作机制 第二部分 Foreign Function Interface 函数调用 数据交互 抽象模型 1 2 3  对 PC 寄存器的修改  编译器完成地址指引0 码力 | 45 页 | 5.74 MB | 1 年前3 5.cgo 原理解析及优化实践cgo 原理解析及优化实践 朱德江 蚂蚁集团 MOSN 核心成员 Golang contributor Envoy Golang extension maintainer 公众号 • 开源爱好者 • 十余年网关研发 • OpenResty 老司机(NGINX + LuaJIT) • MOSN 核心成员 • Envoy Golang extension maintainer • • 玩过 DSL 编译器 • 对 LuaJIT、Go 有一些研究 目 录 背景介绍 01 cgo 工作机制 02 cgo 调度机制 03 CPU 优化 04 GC 优化 05 背景介绍 第一部分 网关发展历史 网关的扩展机制 什么是 MoE 举个例子 为什么需要 MoE Envoy  研发效能  良好的生态,上手门槛低  Wasm?Lua? Golang 良好的可扩展性  高性能 MoE 有什么挑战 业界少见 - 重度依赖 cgo  性能敏感  延时敏感 网关场景  cgo 是成熟 & 稳定的  唯一的 bug:trace 工具  性能挖掘空间大 cgo 工作机制 第二部分 Foreign Function Interface 函数调用 数据交互 抽象模型 1 2 3  对 PC 寄存器的修改  编译器完成地址指引0 码力 | 45 页 | 5.74 MB | 1 年前3
 2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家 目 录 问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 问题引入 第一部分 为什么能有极致的性能? 01. 如何优化? 解决了哪些技术难题? 主动式内存缓存 如何优化? 极致的性能 除了网络IO,与Redis有什么区别? 复杂的查询怎么办? 02. 传统的Cache很难 主动式内存缓存框架 第三部分 技术全景图 01. 主动式内存缓存架构的技术全景图 数据中心、数据源 02. 分布式部署,解决海量数据的传输、加载 数据全量加载时,缓解数据库压力 链路优化 优化 协议 编码 空值剔除 数据存储、数据传输 带宽减少40% 2GB -> 1.2GB MaxwellConsumer 03. 通过golang接口的方式,实现业务与框架代码分离 DataManager0 码力 | 48 页 | 6.06 MB | 1 年前3 2.1.1 Golang主动式内存缓存的优化探索之路Golang主动式内存缓存的优化探索之路 安晏伯 学而思网校 技术专家 目 录 问题引入 01 难点攻克 02 主动式内存缓存框架 03 总结 04 问题引入 第一部分 为什么能有极致的性能? 01. 如何优化? 解决了哪些技术难题? 主动式内存缓存 如何优化? 极致的性能 除了网络IO,与Redis有什么区别? 复杂的查询怎么办? 02. 传统的Cache很难 主动式内存缓存框架 第三部分 技术全景图 01. 主动式内存缓存架构的技术全景图 数据中心、数据源 02. 分布式部署,解决海量数据的传输、加载 数据全量加载时,缓解数据库压力 链路优化 优化 协议 编码 空值剔除 数据存储、数据传输 带宽减少40% 2GB -> 1.2GB MaxwellConsumer 03. 通过golang接口的方式,实现业务与框架代码分离 DataManager0 码力 | 48 页 | 6.06 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两个编译器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力 更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章 中介绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go 官方工具链的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很0 码力 | 821 页 | 956.82 KB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两个编译器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力 更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章 中介绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go 官方工具链的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很0 码力 | 821 页 | 956.82 KB | 1 年前3
 1.5 Go 语言构建高并发分布式系统实践套路:任务池集中数据合并请求、连接池+pipeline 利⽤用全双⼯工特性 经验⼀一 性能优化 性能优化:io集中处理 通信库 性能优化:io集中处理 通信库 性能优化:数据集中处理 性能优化:数据集中处理 go语⾔言开发追求开销优化的极限,谨慎引⼊入其他语⾔言领域⾼高性能 服务的通⽤用⽅方案 关注 关注:内存池、对象池使⽤用与代码可读性与整体效率的权衡 经验⼆二 性能优化 内存池 性能优化:通⽤用⽅方案 性能优化 对象池 性能优化:通⽤用⽅方案 如何应对的? go语⾔言在基础服务开发领域的优势? 我遭遇了哪些挑战? ⺫⽬目录 具有go特⾊色的运维 go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了 便利 便利 = 原⽣生profiling⼯工具 + 开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 ⽐比较不同时间维度,两次上线后,进程的各种状态 对于优化上线的效果,可评估(上线新功能发现问题与后续确定KPI神器)0 码力 | 39 页 | 5.23 MB | 1 年前3 1.5 Go 语言构建高并发分布式系统实践套路:任务池集中数据合并请求、连接池+pipeline 利⽤用全双⼯工特性 经验⼀一 性能优化 性能优化:io集中处理 通信库 性能优化:io集中处理 通信库 性能优化:数据集中处理 性能优化:数据集中处理 go语⾔言开发追求开销优化的极限,谨慎引⼊入其他语⾔言领域⾼高性能 服务的通⽤用⽅方案 关注 关注:内存池、对象池使⽤用与代码可读性与整体效率的权衡 经验⼆二 性能优化 内存池 性能优化:通⽤用⽅方案 性能优化 对象池 性能优化:通⽤用⽅方案 如何应对的? go语⾔言在基础服务开发领域的优势? 我遭遇了哪些挑战? ⺫⽬目录 具有go特⾊色的运维 go语⾔言原⽣生提供的各组⼯工具,构建分布式系统配套设施⽅方⾯面,提供了 便利 便利 = 原⽣生profiling⼯工具 + 开协程模拟测试终端+协程协作模拟业务 go语⾔言运维管理⽅方⾯面的独特魅⼒力…… 具有go语⾔言特⾊色的运维 Æ 可视化平台 Profiling可视化 将常规排查问题从⼿手⼯工经验化,变成流程化的过程 ⽐比较不同时间维度,两次上线后,进程的各种状态 对于优化上线的效果,可评估(上线新功能发现问题与后续确定KPI神器)0 码力 | 39 页 | 5.23 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两 个编译器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章 中介绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go官 方工具链的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很多0 码力 | 608 页 | 1.08 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两 个编译器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章 中介绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go官 方工具链的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地 改进。 的几个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说, Go是一个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数 据库开发和区块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更 多开发领域流行起来,比如图形界面、游戏、大数据和人工智能等。 最后,我们应该知道,没有一门语言是完美的。Go也一样。Go的设计中有很多0 码力 | 608 页 | 1.08 MB | 1 年前3
 Golang 101(Go语言101 中文版)  v1.21.a目录 1 目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两个编译 器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章中介 绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go官方工具链 的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地改 进。 个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说,Go是一 个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数据库开发和区 块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更多开发领域流行起 来,比如图形界面、游戏、大数据和人工智能等。 第2章:Go语言简介 10 最后,我0 码力 | 591 页 | 21.40 MB | 1 年前3 Golang 101(Go语言101 中文版)  v1.21.a目录 1 目录 第0章:关于《Go语言101》 - 为什么写这本书 第1章:致谢 第2章:Go语言简介 - 为什么Go语言值得学习 第3章:Go官方工具链 - 如何编译和运行Go程序 Go编程入门 第4章:程序源代码基本元素介绍 第5章:关键字和标识符 第6章:基本类型和它们的字面量表示 第7章:常量和变量 - 顺便介绍了类型不确定值和类型推断 第8章:运算操作符 - 顺便介绍了更多的类型推断规则 目前两个编译 器的开发都很活跃,尽管Go开发团队在gc的开发上花费的精力更多。 gc编译器是Go官方工具链中一个组件。 Go官方工具链的使用将在下一篇文章中介 绍。 Go官方工具链1.0发布于2012年三月。 Go语言规范的最新版本和Go官方工具链 的最新版本总是保持一致。 每年Go官方工具链发行两个主版本。 自从Go语言正式发布后,Go的语法变化很小。 但是标准编译器gc却在不断地改 进。 个重要优点: 程序编译时间短 像动态语言一样灵活 内置并发支持 上面所有提到的优点使得Go成为一个出众的编程语言。 对于很多项目来说,Go是一 个相当不错的选择。 目前,Go主要用于网络开发、系统工具开发、数据库开发和区 块链开发。 随着从Go 1.18开始支持自定义泛型,预期Go会在更多开发领域流行起 来,比如图形界面、游戏、大数据和人工智能等。 第2章:Go语言简介 10 最后,我0 码力 | 591 页 | 21.40 MB | 1 年前3
 Go 入门指南(The way to Go)安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 13.7 Go 中的单元测试和基准测试 13.8 测试的具体例子 13.9 用(测试数据)表驱动测试 13.10 性能调试:分析并优化 Go 程序 第 14 章 协程(goroutine)与通道(channel) 14.1 什么是协程 14.2 协程间的信道 14.3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 《Go入门指南》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-08。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果您在阅读文档 获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准确、高效且有效地传递0 码力 | 466 页 | 4.44 MB | 1 年前3 Go 入门指南(The way to Go)安装目录清单 2.7 Go 运行时(runtime) 2.8 Go 解释器 第3章:编辑器、集成开发环境与其它工具 3.1 Go 开发环境的基本要求 3.2 编辑器和集成开发环境 3.3 调试器 3.4 构建并运行 Go 程序 3.5 格式化代码 3.6 生成代码文档 3.7 其它工具 3.8 Go 性能说明 3.9 与其它语言进行交互 第4章:基本结构和基本数据类型 4.1 文件名、关键字与标识符 5 一种用闭包处理错误的模式 13.6 启动外部命令和程序 13.7 Go 中的单元测试和基准测试 13.8 测试的具体例子 13.9 用(测试数据)表驱动测试 13.10 性能调试:分析并优化 Go 程序 第 14 章 协程(goroutine)与通道(channel) 14.1 什么是协程 14.2 协程间的信道 14.3 协程的同步:关闭通道-测试阻塞的通道 14.4 使用 《Go入门指南》 由 进击的皇虫 使用 书栈(BookStack.CN) 进行构建,生成于 2018-02-08。 书栈(BookStack.CN) 仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由网友们编写和整理,书栈(BookStack.CN) 难以确认文档内容知识点是否错漏。如果您在阅读文档 获取知识的时候,发现文档内容有不恰当的地方,请向我们反馈,让我们共同携手,将知识准确、高效且有效地传递0 码力 | 466 页 | 4.44 MB | 1 年前3
共 61 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7














 
 