如何使用 Diago 诊断 Go 程序中的 CPU 和内存使用情况

如何使用 Diago 诊断 Go 程序中的 CPU 和内存使用情况

原文链接:https://remy.io/blog/how-to-use-diago-to-diagnose-cpu-and-memory-usage-in-go-programs/ 作者:Rémy Mathieu https://github.com/remeh/diago Diago 是借助 pprof 生成的配置文件和堆快照的可视化工具。 它是一个独立的应用程序,显示每个函数(或函数中每行代码)的 CPU 使用率的调用树,但也可以显示堆快照。 我们将在这篇简短的文章中介…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Echo系列教程 — 定制篇6:自定义 Server 相关,替换或扩展默认的 Server

Echo系列教程 — 定制篇6:自定义 Server 相关,替换或扩展默认的 Server

这是定制篇的最后一节,讲解 Server 的自定义。 默认 Server 通常情况下,Echo 通过如下方式启动一个 HTTP Server: e := echo.New() e.GET(“/”, func(c echo.Context) error { return c.String(http.StatusOK, “Hello, World!”) }) e.Logger.Fatal(e.Start(“:2020”)) 我们打开源码一探究竟: // Start starts …

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Echo系列教程 — 定制篇5:自定义 HTTP Error Handler,让 HTTP 错误处理更友好

Echo系列教程 — 定制篇5:自定义 HTTP Error Handler,让 HTTP 错误处理更友好

Echo 倡导通过从中间件和 Handler 返回错误来进行集中式 HTTP 错误处理。集中式错误处理程序使我们能够从统一位置将错误记录到外部服务,并向客户端发送自定义的 HTTP 响应。本节一起学习如何定制化,进行集中式错误处理。 默认的错误处理 在定制篇 4 中,我们讲到了 Render。如果在 Handler 中调用了 Render,但是并没有给 Echo.Renderer 赋值或其他原因,导致出错,页面看到的信息如下: { “message”: “Internal S…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
用 Go 编写能存数百万条记录仍非常快的缓存服务

用 Go 编写能存数百万条记录仍非常快的缓存服务

本文发布于 2016 年 3 月,但其中的设计技巧仍然有效。 我们的团队需要编写非常快速的缓存服务。目标非常明确,但可以通过多种方式实现。最后,我们决定尝试一些新的东西,并在 Go 中实现该服务。本文描述了我们是如何做到的以及由此产生的价值。 目录 需求 为什么用 Go 缓存 并发 移除 避免 GC BigCache HTTP 服务器 JSON 反序列化 最终结果 总结 需求 根据需求,我们的服务应: 使用 HTTP 协议处理请求 支持 10K RPS (5k 写,5k 读)…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
官方不推荐使用 Goroutine ID,但它自己却使用了:原来是这么做的

官方不推荐使用 Goroutine ID,但它自己却使用了:原来是这么做的

在操作系统中,每个进程都会有一个唯一的进程编号,每个线程也有自己唯一的线程编号。同样在 Go 语言中,每个 Goroutine 也有自己唯一的 Go 程编号(下文简称为 goid),这个编号在 panic 等场景下经常遇到。虽然 Goroutine 有内在的编号,但是 Go 语言却刻意没有提供获取该编号的接口。 故意设计没有 goid 根据官方的相关资料显示,Go 语言刻意没有提供 goid 的原因是为了避免被滥用。因为大部分用户在轻松拿到 goid 之后,在之后的编程中会不…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Echo系列教程 — 定制篇4:自定义 Renderer,增强或替换模板引擎

Echo系列教程 — 定制篇4:自定义 Renderer,增强或替换模板引擎

Render,顾名思义,要进行页面渲染。Go 语言不但自带有强大的 http 库,还自带了 HTML 模板引擎。Echo 框架对模板引擎进行了一些额外处理,并提供了给用户自定义页面渲染的接口。本文就相关问题进行探讨。 模板渲染 Echo 框架的 Context 接口提供了下面的方法进行页面渲染: // echo 包中 Context 接口的方法 Render(code int, name string, data interface{}) error 其中,code 是 HT…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Go1.14 的这个改进让 Gopher 生活更美好

Go1.14 的这个改进让 Gopher 生活更美好

Go1.14 的 go test -v 支持流式输出 testing 包是 Go 标准库中我最喜欢的程序包之一,不仅是它具有低干扰的单元测试方法,而且在 Go 的整个生命周期中,它可以改善、提高生活质量 ^_^。 在 Go1.14 中,go test -v 将使 t.Log 的输出变成流式,而不是在测试运行结束之前进行存储,最后一起输出。看一个例子: package main import ( “fmt” “testing” “time” ) func TestLogStre…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Echo系列教程 — 定制篇3:自定义 Logger,用你喜欢的日志库

Echo系列教程 — 定制篇3:自定义 Logger,用你喜欢的日志库

在知识星球简书项目中,我们分析对比了目前的一些日志库。虽然 Go 标准库有一个 log,但功能有限,所以才出现了很多第三方的日志库。在 用 Go 实现一个简书 8:日志记录和优秀库的学习 中,我们得出结论,推荐大家使用 zerolog。现在我们就将 zerolog 集成进 Echo 框架中。 Echo 默认的 Logger Echo 日志记录的默认格式是 JSON,可以通过修改标头来更改,即 Echo#Logger.SetHeader(io.Writer)。 Log Head…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Go 官宣:新版 Protobuf API

Go 官宣:新版 Protobuf API

原文作者:Joe Tsai, Damien Neil 和 Herbie Ong 原文链接:https://blog.golang.org/a-new-go-api-for-protocol-buffers 发布时间:2020-03-02 翻译:polaris,Go 语言中文网 简介 我们很高兴地宣布,用于 Google 的语言无关数据交换格式 protocol buffers 的新版 Go API 发布了,这是一次重大的版本升级。 新 API 的动机 Go 的第一个 prot…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...
Echo 系列教程 — 定制篇2:自定义 Validator,进行输入校验

Echo 系列教程 — 定制篇2:自定义 Validator,进行输入校验

上一篇讲 Binder 时提到,参数自动绑定和校验是 Web 框架很重要的两个功能,可以极大的提升开发速度,并更好的保证数据的可靠性(服务端数据校验很重要)。本节,我们就一起看看如何自定义 Echo 的表单校验功能。 不同于 Binder,Echo 并没有内置数据校验的能力,也就是没有默认的 Validator 实现。然而,你可以很方便的集成第三方的数据校验库。跟 Binder 类似,Echo 提供了一个 Validator 接口,方便将第三方数据校验库集成进来。 Valid…

阅读全文 阅读全文


好差啊挺差的一般般还行很赞 (还没有人评分,赶紧评一下)
Loading...