堆栈跟踪:Stack-Trace 2020-02-11 Go调优 约 2781 字 预计阅读 6 分钟 Stack Trace表示堆栈跟踪,这是一个或多个堆栈帧的有序的集合。在程序出现panic的时候你会看到控制台有Stack Trace信息打印出来。 介绍 阅读更多
Go性能分析工具trace介绍 2020-02-10 Go调优 约 5365 字 预计阅读 11 分钟 trace 你有没有考虑过,你的goroutines是如何被go的runtime系统调度的?是否尝试理解过为什么在程序中增加了并发,但并没有给它带来更 阅读更多
Pprof实战:解决内存泄露 2020-02-09 Go调优 约 7368 字 预计阅读 15 分钟 前言 关于Go的内存泄露有这么一句话不知道你听过没有: 10次内存泄露,有9次是goroutine泄露。 我所解决的问题,也是goroutine泄 阅读更多
Pprof实战:从零开始排查炸弹程序 2020-02-09 Go调优 约 6048 字 预计阅读 13 分钟 前言 如果要说在 golang 开发过程进行性能调优,pprof 一定是一个大杀器般的工具。但在网上找到的教程都偏向简略,难寻真的能应用于实战的教程。这也无可 阅读更多
Pprof实战:Profiling Go Programs 2020-02-02 Go调优 约 6358 字 预计阅读 13 分钟 背景 在Scala Days 2011,Robert Hundt 发表了一篇名为 Loop Recognition in C++/Java/Go/Scala 的论文。 该论文实现了一种特定的循环查找算法,例如您可以在C++,Go,Jav 阅读更多
Pprof实战:利用火焰图优化代码 2020-02-02 Go调优 约 737 字 预计阅读 2 分钟 这里使用火焰图复现 logger 100% CPU 问题。 先看现象, 用 wrk 压测 logger 1 wrk -t1 -c100 -d30 --script=post.lua 'http://127.0.0.1:4500/marco/log' 查看 CPU 占用情况 采集 30s 的 CPU profile 火焰图 图中红色标记部分 startSink 函数中 runtime.selectgo 消耗了大量 CPU, 阅读更多
Pprof替代库:pkg Profile 2020-02-01 Go调优 约 1389 字 预计阅读 3 分钟 简介 Go 运行时的分析接口存在于 runtime/pprof 包中。 runtime/pprof 是一个非常低级的工具,由于历史原因,不同类型 profile 的接口并不统一,而且使用起来还不是太方便,例如:输出数据 阅读更多
pprof实战:利用runtime-pprof优化代码 2020-02-01 Go调优 约 1984 字 预计阅读 4 分钟 示例代码 我们写一个程序来计算单词数量: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 package main import ( "fmt" "io" "log" "os" "unicode" ) func 阅读更多
Go代码优化建议 2020-02-01 Go调优 约 4205 字 预计阅读 9 分钟 将多个小对象合并成一个大的对象 减少不必要的指针间接引用,多使用copy引用 例如使用bytes.Buffer代替*bytes.Buffer`, 阅读更多
pprof实战:结合benchmark优化代码 2020-01-31 Go调优 约 4241 字 预计阅读 9 分钟 示例代码:数独 sodoku.go: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 阅读更多
Go性能分析工具pprof介绍 2020-01-30 Go调优 约 12712 字 预计阅读 26 分钟 简介 什么是pprof 代码上线前,我们通过压测可以获知系统的性能,例如每秒能处理的请求数,平均响应时间,错误率等指标。这样,我们对自己服务的性 阅读更多
Go如何使用testing包 2020-01-30 Go实践 约 17698 字 预计阅读 36 分钟 go test 命令参数 Go 测试工具 go test,包括各种子命令、参数之类的内容。你可以通过 go test -h 查看帮助信息。 其基本形式是: 1 go test [build/test flags] [packages] [build/test flags & test binary flags] 执行 go 阅读更多
Go如何使用httptesting包 2020-01-28 Go实践 约 4480 字 预计阅读 9 分钟 Constants DefaultRemoteAddr是默认的远端地址。如果ResponseRecorder未显式的设置该属性,RemoteAddr方法就会返 阅读更多
RESTAPI测试框架:httpexpect 2020-01-28 Go测试 约 1792 字 预计阅读 4 分钟 简介 httpexpect基本上,是一组基于HTTP请求和基于HTTP的断言( 例如HTTP响应和负载),位于net/HTTP和几个实用程序包之 阅读更多
Sql模拟库:go-sqlmock 2020-01-27 Go测试 约 8759 字 预计阅读 18 分钟 简介 sqlmock是一个实现sql/driver的模拟库。它有一个唯一的目的:在测试中模拟任何sql驱动程序行为,而无需真正的数据库连接。它 阅读更多
打桩框架:gomonkey 2020-01-27 Go测试 约 3162 字 预计阅读 7 分钟 介绍 gomonkey 是 golang 的一款打桩框架,目标是让用户在单元测试中低成本的完成打桩,从而将精力聚焦于业务功能的开发。gomonkey 接口友好,功能强大,目前 阅读更多
猴子补丁:monkey 2020-01-25 Go测试 约 6174 字 预计阅读 13 分钟 前言 我们已经知道: 全局变量可通过GoStub框架打桩 过程可通过GoStub框架打桩 函数可通过GoStub框架打桩 interface可通过Go 阅读更多
interface的mock:gomock 2020-01-07 Go测试 约 4227 字 预计阅读 9 分钟 序言 GoMock是由Golang官方开发维护的测试框架,实现了较为完整的基于interface的Mock功能,能够与Golang内置的tes 阅读更多
变量与函数打桩:gostub 2020-01-07 Go测试 约 5953 字 预计阅读 12 分钟 简介 gostub用于在测试中添加变量,并在测试运行后重置原始值。 这可以用于对静态变量和静态函数进行打桩。要打桩静态变量,请使用stub函数: 阅读更多
测试金字塔实战 2020-01-05 架构 约 21430 字 预计阅读 43 分钟 前言 “测试金字塔”是一个比喻,它告诉我们要把软件测试按照不同粒度来分组。它也告诉我们每个组应该有多少测试。虽然测试金字塔的概念已经存在了一段 阅读更多