Toggle navigation
码云博客
首页
Devops
PHP
Golang
数据库
Docker
K8s
Ai
杂项
Home
Golang
Golang sync.Cond
小码哥
2024-09-05 11:12:31
Golang
cond
sync
golang
在并发编程中,协调多个协程之间的操作是一项常见的需求。条件变量(Condition Variable)是用于解决多个协程之间复杂协调问题的一种机制。条件变量配合互斥锁(`Mutex`)使用,可以让一组协程等待某个条件成立后再继续进行,而不会一直消耗 CPU 资源进行忙等待。本文将详细介绍 Golang 中 `sync` 包提供的 `Cond` 类型,并通过示例代码展示如何使用 `Cond`
阅读全文
Go内存逃逸分析
小码哥
2024-09-04 22:07:35
Golang
内存逃逸
heap
基本概念逃逸分析(Escape analysis)是由编译器决定内存分配位置的一种技术,不需要程序员明确指定。函数中申请一个新对象时,编译器决定该对象是分配在栈中还是堆中: 如果分配在栈中,函数执行结束后内存会自动回收。 如果分配在堆中,函数执行结束后内存会交给GC(垃圾回收)处理。有了逃逸分析,返回函数局部变量变得可能,这与闭包息息相关。了解哪些场景下对象会逃逸至关
阅读全文
Go垃圾回收机制
小码哥
2024-09-04 17:56:57
Golang
golang
gc
垃圾回收
前言垃圾即为不再需要的内存块。如果这些垃圾不清理,无法再次被分配使用。在不支持垃圾回收(GC)的编程语言中,这些垃圾内存就会泄露。Golang的垃圾回收也是内存管理的一部分。了解垃圾回收,最好先了解内存分配原理。 垃圾回收算法业界常见的垃圾回收算法有以下几种: 引用计数维护每个对象的引用计数,当引用该对象的对象被销毁时,引用计数减1。当引用计数为0时,回收
阅读全文
Go语言之Context详解
小码哥
2024-08-25 16:00:23
Golang
context
golang
1. 基本概念 1.1 什么是 Context上下文 `context.Context` 在 Go 语言中用来设置截止日期、同步信号,传递请求相关值的结构体。上下文与 Goroutine 有比较密切的关系,是 Go 语言中独特的设计,在其他编程语言中我们很少见到类似的概念。主要用于超时控制和多Goroutine间的数据传递。注:这里的数据传递主要指全局数据,如 链
阅读全文
WaitGroup底层原理
小码哥
2024-08-18 17:04:57
Golang
WaitGroup
golang
WaitGroup核心组件`WaitGroup` 结构体内部主要包含以下两个核心部分(在较新的 Go 版本中,实现有所优化,但基本思想一致):1. `counter` (计数器):这是一个整数,用来记录需要等待的 goroutine 的数量。 当我们调用 `Add(n)` 方法时,这个计数器会增加 `n`。 当我们调用 `Done()`
阅读全文
Go语言之防缓存击穿利器 Singleflight
小码哥
2024-08-11 17:33:26
Golang
ACID
事务
mysql
Go语言之防缓存击穿利器 Singleflight 1. 缓存击穿在日常开发中,为了提升性能和减轻数据库的压力,通常会对热点数据进行缓存。例如,使用 Redis 缓存用户请求的数据,如果缓存中有数据则直接返回,否则查询数据库并将结果写入缓存。但是,如果缓存失效了,在查询数据库和将数据再次写入缓存的过程中,其他请求也会出现缓存未命中的情况,导致大量请求直接打到数据库,给数据
阅读全文
Golang sync.Mutex源码解析
小码哥
2024-08-11 17:16:19
Golang
锁
mutex
golang
Golang sync.Mutex源码解析Go 语言在 `sync` 包中提供了用于同步的一些基本原语,`sync.Mutex` 就是其中最常用的一个。 1. 基本结构Go 语言的 `sync.Mutex` 由两个字段 `state` 和 `sema` 组成。其中 `state` 表示当前互斥锁的状态,而 `sema` 是用于控制锁状态的信号量。```go//
阅读全文
Golang Channel源码解析
小码哥
2024-08-10 17:06:27
Golang
并发
channel
golang
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数据结构
小码哥
2024-08-03 16:48:55
Golang
golang
Golang中的Map数据结构在Go语言中,`map`是一种非常强大的数据结构,它提供了键值对的存储和快速查找功能。本文将详细介绍Go语言中`map`的数据结构、实现原理和常见操作。 一、Map的数据结构Go语言中的`map`数据结构由`runtime/map.go`中的`hmap`定义:```gotype hmap struct { count
阅读全文
GORM(四)之链式方法、钩子和事务
小码哥
2024-02-17 15:26:08
Golang
gorm
golang
GORM深度解析:链式方法、钩子和事务 引言在Go语言的生态系统中,GORM作为一个功能强大的ORM库,为开发者提供了一种简洁而直观的方式来操作数据库。本文将深入探讨GORM的三个核心特性:链式方法、钩子(Hooks)和事务(Transactions
阅读全文
上一页
1
2
3
4
下一页
热门标签
laravel (3)
Opentracing (3)
链路追踪 (2)
Jaeger (2)
golang (21)
helm (3)
CRI (1)
kubesphere (1)
k8s (9)
slices (1)
Ticker (1)
Timer (1)
mysql (9)
pattern (2)
golang迭代器 (1)
docker (3)
向量化 (1)
factory (4)
设计模式 (6)
kafka (1)
sync.Once (1)
docker-compose (1)
消息中间件 (2)
sync (3)
pool (1)
池 (1)
queue (1)
gc (1)
垃圾回收 (1)
cond (1)
test (1)
heap (1)
内存逃逸 (1)
算法 (1)
事务 (1)
Singleflight (1)
context (1)
Nginx (1)
mutex (1)
锁 (1)
ACID (1)
php (1)
udp (1)
channel (2)
并发 (1)
es (2)
HTTP (3)
tcp (2)
redis (2)
llm (1)
isito (1)
服务网格 (1)
linux (1)
云原生 (5)
rag (2)
ssh (1)
容器 (4)
devops (3)
gorm (4)
database (2)
gitlab (1)
ai (7)
chatgpt (1)
sd (1)
DB (1)
mcp (4)
量化 (1)
蒸馏 (1)
内存对齐 (1)
MySQL双写策略 (1)
值传递 (1)
uintptr (1)
WaitGroup (1)
agent (1)
map (1)
n8n (1)
tools (1)
nats (1)
middleware (1)
etcd (1)
分布式锁 (1)
置顶推荐
最新评论
友情链接
更多
×
无需注册,用以下帐号即可直接登录。
需要先增加第三方登录配置。
点击前往
最新评论