Go语言之防缓存击穿利器 Singleflight

Go语言之防缓存击穿利器 Singleflight 1. 缓存击穿在日常开发中,为了提升性能和减轻数据库的压力,通常会对热点数据进行缓存。例如,使用 Redis 缓存用户请求的数据,如果缓存中有数据则直接返回,否则查询数据库并将结果写入缓存。但是,如果缓存失效了,在查询数据库和将数据再次写入缓存的过程中,其他请求也会出现缓存未命中的情况,导致大量请求直接打到数据库,给数据
阅读全文

Golang sync.Mutex源码解析

Golang sync.Mutex源码解析Go 语言在 `sync` 包中提供了用于同步的一些基本原语,`sync.Mutex` 就是其中最常用的一个。 1. 基本结构Go 语言的 `sync.Mutex` 由两个字段 `state` 和 `sema` 组成。其中 `state` 表示当前互斥锁的状态,而 `sema` 是用于控制锁状态的信号量。```go//
阅读全文

Golang Channel源码解析

Golang Channel源码解析 1. 概述Golang官方对 `chan` 的描述如下: A channel provides a mechanism for concurrently executing functions to communicate by sending and receiving values of a specified element t
阅读全文

Golang中的Map数据结构

Golang中的Map数据结构在Go语言中,`map`是一种非常强大的数据结构,它提供了键值对的存储和快速查找功能。本文将详细介绍Go语言中`map`的数据结构、实现原理和常见操作。 一、Map的数据结构Go语言中的`map`数据结构由`runtime/map.go`中的`hmap`定义:```gotype hmap struct { count
阅读全文

GORM(四)之链式方法、钩子和事务

GORM深度解析:链式方法、钩子和事务 引言在Go语言的生态系统中,GORM作为一个功能强大的ORM库,为开发者提供了一种简洁而直观的方式来操作数据库。本文将深入探讨GORM的三个核心特性:链式方法、钩子(Hooks)和事务(Transactions
阅读全文

GORM(三)之上下文、错误处理与链式方法

GORM技术深度解析:上下文、错误处理与链式方法 引言GORM,作为Go语言中广受欢迎的ORM库,以其简洁的API和强大的功能,为开发者提供了便捷的数据库操作方式。本文将深入探讨GORM的三个核心特性:上下文支持、错误处理和链式方法。通过实际的代码示例,我们将展示如何在Go应用程序中有效地利用这些特性。 上下文支持(Context)在Go语言中,上下文(Conte
阅读全文

GORM(二)入门之关联

Golang Gorm 关联使用指南上篇文中介绍了gorm的安装和基本使用,本章我们将探讨如何在 Go 语言的 GORM 库中使用各种类型的关联,包括 Belongs To、HasOne、Has Many 以及 Many To Many。我们还会介绍关联模式和预加载的概念,并通过实例代码来展示它们的具体用法。 1. Belongs Tobelongs to 会与另一个模型建立了一
阅读全文

golang 版本升级

如何优雅的将本地的golang 版本升级到更高版本
阅读全文

pprof性能分析

pprof 是一个用于可视化和分析性能分析数据的工具,它是 Google 的一个开源项目,用于分析 CPU 利用率、内存使用情况和堆栈跟踪等性能数据。该工具的主要特点是方便、快速,可以用于在开发和生产环境中定位性能瓶颈。
阅读全文

grpc基本使用

RPC:即远程过程调用,能像调用本地一样调用远程方法。相比传统的http请求,rpc请求报文体积更小、传输效率更高,使用了HTTP2协议,跨平台等优点。rpc更侧重于内部调用,http主要侧重于对外、接口、第三方调用等。
阅读全文