Toggle navigation
码云博客
首页
Devops
PHP
Golang
数据库
Docker
K8s
Ai
杂项
Home
Golang
Golang设计模式之单例模式
小码哥
2024-10-20 15:51:18
Golang
pattern
factory
单例模式单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供一个全局访问点。这种模式常用于管理共享资源,如配置信息、线程池、缓存等。 单例模式的角色 单例(Singleton)角色:单例类负责创建自己的实例,并提供一个访问该实例的全局访问点。 Go示例下面是一个使用Go语言实现的单例模式示例。我们将创建一个简单的配置管理器,它将作为单例使用。
阅读全文
Golang设计模式之抽象工厂方法
小码哥
2024-10-20 15:47:47
Golang
设计模式
factory
抽象工厂方法模式概述抽象工厂方法模式是一种创建型设计模式,它提供了一种方式,用于创建一系列相关或相互依赖的对象,而不需要指定它们具体的类。这种模式通过定义一个创建对象的接口,允许客户端使用这个接口来创建各种产品,而不需要知道具体的类。 产品族与产品等级结构 产品族:具有相同特点或功能,但来自不同地区、厂商、开发包或组织模块的产品集合。 产品等级结构:具有相同特点或功能
阅读全文
Golang设计模式之工厂方法模式
小码哥
2024-10-19 15:36:46
Golang
设计模式
factory
工厂方法模式概述工厂方法模式是一种创建型设计模式,其核心思想是定义一个用于创建对象的接口,但让实现这个接口的子类来决定实例化哪一个类。工厂方法把一个类的实例化推迟到其子类。 工厂方法模式中的角色和职责 抽象工厂(Abstract Factory)角色:定义创建产品对象的接口,但不实现该接口。 具体工厂(Concrete Factory)角色:实现抽象工厂中的接口方法,
阅读全文
Golang设计模式之简单工厂模式
小码哥
2024-10-19 15:31:30
Golang
设计模式
factory
简单工厂模式概述简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这种模式中,一个工厂类负责创建其他类的实例,并且封装实例的创建逻辑。这种模式让类的实例化推迟到子类进行。 为什么需要简单工厂模式在没有工厂模式的情况下,如果需要创建多种类型的对象,可能会导致一个类中包含大量条件判断语句,这不仅增加了代码的复杂性,也违反了单一职责原则和开闭原则。 简
阅读全文
sync.map底层原理
小码哥
2024-09-29 11:01:23
Golang
map
sync
一、`sync.Map` 的设计哲学在 Go 中,对一个普通的 `map` 进行并发读写操作是不安全的,会导致程序 panic。常规的解决方案是使用互斥锁 `sync.Mutex` 或读写锁 `sync.RWMutex` 来保护 `map`。```go// 使用读写锁保护mapvar mu sync.RWMutexm := make(mapint)// 写
阅读全文
Go语言之 sync.Once
小码哥
2024-09-27 17:41:54
Golang
sync.Once
`sync.Once` 是 `sync` 包下的一个组件,它保证某些操作只会被执行一次,无论有多少个 goroutine 调用它。常见的使用场景包括初始化操作,确保某段代码(如初始化函数)只执行一次。关键思想:通过原子操作和内存屏障的配合,确保在多线程环境下某些操作只会执行一次。 基本使用`sync.Once` 使用起来非常简单,只需要调用 `Do` 方法,传入一个无参无返回值
阅读全文
Go语言之 sync.Pool
小码哥
2024-09-21 17:26:54
Golang
池
pool
`sync.Pool` 是 `sync` 包下的一个组件,可以作为保存临时取还对象的一个“池子”,可以缓存暂时不用的对象,下次需要时直接使用(无需重新分配)。因为频繁的内存分配和回收会对性能产生影响,通过复用临时对象可以避免该问题。适用场景:当多个 goroutine 都需要创建同一个对象时,如果 goroutine 数过多,导致对象的创建数目剧增,进而导致 GC
阅读全文
Go语言的内存对齐
小码哥
2024-09-08 16:50:56
Golang
golang
内存对齐
关于内存对齐内存对齐,即字节对齐,指代码编译后在内存的布局与使用方式。现代计算机多为32位或64位地址对齐,若变量内存未对齐,可能触发总线错误。 为什么需要内存对齐CPU访问内存是以字长为单位,而非逐个字节。例如32位CPU,字长为4字节,其访问内存单位也是4字节。这种设计旨在减少CPU访问内存次数,提升访问吞吐量。若不进行内存对齐,会增加CPU访问内存次数,降低性能。同
阅读全文
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(垃圾回收)处理。有了逃逸分析,返回函数局部变量变得可能,这与闭包息息相关。了解哪些场景下对象会逃逸至关
阅读全文
上一页
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 (3)
量化 (1)
蒸馏 (1)
内存对齐 (1)
MySQL双写策略 (1)
值传递 (1)
uintptr (1)
WaitGroup (1)
agent (1)
map (1)
n8n (1)
置顶推荐
最新评论
友情链接
更多
×
无需注册,用以下帐号即可直接登录。
需要先增加第三方登录配置。
点击前往
最新评论