刷新
如何有效提升代码覆盖率:从单元测试到集成测试的实践指南

博主头像 Go语言代码覆盖率实现 一、什么是代码覆盖率 代码覆盖率是软件测试中的一种白盒测试度量指标,表示程序源代码中被执行的比例。简单来说,就是“我的测试到底跑过多少代码”。 覆盖率常见的几种标准: 语句覆盖(段覆盖、基本块覆盖):每一行代码是否至少执行过一次 分支覆盖:程序中的每个判断(if/else)是 ...

《Go 单元测试从入门到覆盖率提升》(二)

博主头像 Golang相关测试框架 在 Go 语言里,最常用的测试框架有:自带的 testing 包、GoConvey 和 testify。 1、Go自带的testing包 testing 包是官方内置的,无需额外安装,也是大多数项目的首选。 (1)单元测试 测试文件必须以 _test.go 结尾,例如:ca ...

《Go 单元测试从入门到覆盖率提升》(一)

博主头像 一、静态代码分析 静态代码分析是一种在不执行和运行程序的情况下检查源代码的方法。通过这种方法,自动化工具会扫描代码查找潜在的问题,如bug、安全漏洞或与编码标准的偏离。静态代码分析可以在执行或合并到main分支之前检查源代码中的问题。 动态代码分析是在代码被执行时,识别运行时的问题,例如性能瓶颈、内 ...

Go 1.26 内置函数 new 新特性

博主头像 目前golang 1.26的各种新特性还在开发中,不过其中一个在开发完成之前就已经被官方拿到台面上进行宣传了——内置函数new功能扩展。 每个新特性其实都有它的背景故事,没有需求的驱动也就不会有新特性的诞生。所以在介绍这个新特性之前我们先来了解下是什么样的场景催生了这个功能。 如果你经常浏览一些大型 ...

类型转换

博主头像 package _case import ( "fmt" "strconv" "time" "unsafe" ) // ConvertCase 类型转换 func ConvertCase() { // 同类型转换 数字和数字 字符串和字符和字节 // 不同类型转换 数字和字符串 // 接口类型转其他 ...

VictoriaMetrics 部署历史群集的另外两种方式

博主头像 作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 我曾在一年多前设计了一种 VictoriaMetrics 监控系统的历史群集的部署方法,并把部署方式进行了开源:https://github.com/ahfu ...

vmagent 源码阅读

博主头像 作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 读了大约半天的 vmagent 的代码,为了确定一些特定的用法的实现逻辑。 增加了很多中文注释,并且把代码提交到了:https://github.com/ah ...

深度揭秘 sync.Pool:Go 高性能对象池的设计哲学与源码实现

引言:从Gin的Context池化,揭开sync.Pool的神秘面纱 在编写高性能的Go Web服务时,我们总是追求极致的效率。但在高并发场景下,频繁的对象创建和销毁是隐藏在背后的性能杀手。 在《Gin 框架核心架构解析》中,我们提到Gin会为每个HTTP请求分配一个Context对象。当你的服务每 ...

下划线字段在golang结构体中的应用

博主头像 最近公司里的新人问了我一个问题:这段代码是啥意思。这个问题很普通也很常见,我还是个新人的时候也经常问,当然,现在我不是新人了但我也经常发出类似的提问。 代码是长这样的: type BussinessObject struct { _ [0]func() ID uint64 FieldA string ...

Golang笔记之Redis

博主头像 本文首发于公众号:Hunter后端 原文链接:Golang笔记之Redis 这一篇笔记主要介绍 Golang 连接和使用 Redis,以下是本篇笔记目录: 目录1、安装模块2、连接 Redis3、字符串1. 字符串写入2. 字符串读取4、哈希1. 写入1) 单字段写入2) 多字段写入2. 读取1) ...

atomic不是免费午餐

博主头像 很多初级甚至中级开发会滥用atomic,因为在他们的世界观里atomic比mutex轻量,性能总是优于锁的。 这话不能算错,但有个很重要的前提,那就是原子操作竞争不激烈的时候。 “竞争激烈”是指什么呢,指的是有很多线程在同一个资源上大量执行原子操作的情况。 落在这种情况下原子操作反而会成为性能拖油瓶 ...

Golang基础笔记十六之反射

博主头像 本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十六之反射 反射可以用于程序在运行时检查、修改自身类型和值,主要通过 reflect 包实现。 首先,我们提出一个需求,要打印出一个结构体 struct 的各个字段及其对应的标签数据,按照当前的笔记内容是无法解决该问题的,但是我们可以 ...

Golang基础笔记十五之sync

博主头像 本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十五之sync 这一篇笔记介绍 Golang 中的 sync 模块。 sync 包主要提供了基础的同步原语,比如互斥锁,读写锁,等待组等,用于解决并发编程中的线程安全问题,以下是本篇笔记目录: WaitGroup-等待组 sync.M ...

Golang基础笔记十四之文件操作

博主头像 本文首发于公众号:Hunter后端 原文链接:Golang基础笔记十四之文件操作 这一篇笔记介绍 Golang 里文件的相关操作,主要用的库是 io。 以下是本篇笔记目录: 文件读取 文件写入 文件追加 os.OpenFile() 文件属性 1、文件读取 1. 文件的打开与关闭 1) os.Open ...

123···7>