作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 以最经典的计算 qps 的曲线为例,vmselect 内部是如何计算的? 1 grafana 通过 query_range 接口发起请求 通常会在 grafa ...
DocHub 使用 Go 语言的 Beego 框架开发实现的类百度文库解决方案,支持 Office、Pdf、Txt、Mobi、EPub 等多种文档格式的在线阅读浏览。 ...
Go语言代码覆盖率实现 一、什么是代码覆盖率 代码覆盖率是软件测试中的一种白盒测试度量指标,表示程序源代码中被执行的比例。简单来说,就是“我的测试到底跑过多少代码”。 覆盖率常见的几种标准: 语句覆盖(段覆盖、基本块覆盖):每一行代码是否至少执行过一次 分支覆盖:程序中的每个判断(if/else)是 ...
Golang相关测试框架 在 Go 语言里,最常用的测试框架有:自带的 testing 包、GoConvey 和 testify。 1、Go自带的testing包 testing 包是官方内置的,无需额外安装,也是大多数项目的首选。 (1)单元测试 测试文件必须以 _test.go 结尾,例如:ca ...
一、静态代码分析 静态代码分析是一种在不执行和运行程序的情况下检查源代码的方法。通过这种方法,自动化工具会扫描代码查找潜在的问题,如bug、安全漏洞或与编码标准的偏离。静态代码分析可以在执行或合并到main分支之前检查源代码中的问题。 动态代码分析是在代码被执行时,识别运行时的问题,例如性能瓶颈、内 ...
目前golang 1.26的各种新特性还在开发中,不过其中一个在开发完成之前就已经被官方拿到台面上进行宣传了——内置函数new功能扩展。 每个新特性其实都有它的背景故事,没有需求的驱动也就不会有新特性的诞生。所以在介绍这个新特性之前我们先来了解下是什么样的场景催生了这个功能。 如果你经常浏览一些大型 ...
package _case import ( "fmt" "strconv" "time" "unsafe" ) // ConvertCase 类型转换 func ConvertCase() { // 同类型转换 数字和数字 字符串和字符和字节 // 不同类型转换 数字和字符串 // 接口类型转其他 ...
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我曾在一年多前设计了一种 VictoriaMetrics 监控系统的历史群集的部署方法,并把部署方式进行了开源:https://github.com/ahfu ...
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 读了大约半天的 vmagent 的代码,为了确定一些特定的用法的实现逻辑。 增加了很多中文注释,并且把代码提交到了:https://github.com/ah ...
ezBookkeeping —— 一款轻量、自托管的个人记账应用,基于 Go + Vue 构建,拥有用户友好的界面和强大的记账功能。 ...
引言:从Gin的Context池化,揭开sync.Pool的神秘面纱 在编写高性能的Go Web服务时,我们总是追求极致的效率。但在高并发场景下,频繁的对象创建和销毁是隐藏在背后的性能杀手。 在《Gin 框架核心架构解析》中,我们提到Gin会为每个HTTP请求分配一个Context对象。当你的服务每 ...
WebCurl —— 一个极致轻量、跨平台、无依赖的 HTTP 请求转发与调试工具,本质上就是一个网页版的 API 测试与调试工具,适合接口开发、调试、测试等多种场景。 ...
最近公司里的新人问了我一个问题:这段代码是啥意思。这个问题很普通也很常见,我还是个新人的时候也经常问,当然,现在我不是新人了但我也经常发出类似的提问。 代码是长这样的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string ...
本文首发于公众号:Hunter后端 原文链接:Golang笔记之Redis 这一篇笔记主要介绍 Golang 连接和使用 Redis,以下是本篇笔记目录: 目录1、安装模块2、连接 Redis3、字符串1. 字符串写入2. 字符串读取4、哈希1. 写入1) 单字段写入2) 多字段写入2. 读取1) ...
很多初级甚至中级开发会滥用atomic,因为在他们的世界观里atomic比mutex轻量,性能总是优于锁的。 这话不能算错,但有个很重要的前提,那就是原子操作竞争不激烈的时候。 “竞争激烈”是指什么呢,指的是有很多线程在同一个资源上大量执行原子操作的情况。 落在这种情况下原子操作反而会成为性能拖油瓶 ...
本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十六之反射 反射可以用于程序在运行时检查、修改自身类型和值,主要通过 reflect 包实现。 首先,我们提出一个需求,要打印出一个结构体 struct 的各个字段及其对应的标签数据,按照当前的笔记内容是无法解决该问题的,但是我们可以 ...
本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十五之sync 这一篇笔记介绍 Golang 中的 sync 模块。 sync 包主要提供了基础的同步原语,比如互斥锁,读写锁,等待组等,用于解决并发编程中的线程安全问题,以下是本篇笔记目录: WaitGroup-等待组 sync.M ...
docker.ui —— 一个可视化的 Docker 容器镜像图形管理工具,用于搭建、管理和维护 Docker 环境,完全开源免费。 ...
原代码 func AtomicCounterDemo() { var count int32 var wg sync.WaitGroup for i := 0; i < 10; i++ { wg.Add(1) go func() { defer wg.Done() for j := 0; j < 1 ...
本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十四之文件操作 这一篇笔记介绍 Golang 里文件的相关操作,主要用的库是 io。 以下是本篇笔记目录: 文件读取 文件写入 文件追加 os.OpenFile() 文件属性 1、文件读取 1. 文件的打开与关闭 1) os.Open ...