Toggle navigation
码云博客
首页
Devops
PHP
Golang
数据库
Docker
K8s
Ai
杂项
Home
Golang
Golang设计模式之代理模式
小码哥
2024-10-31 16:28:40
Golang
设计模式
golang
代理模式代理模式是一种结构型设计模式,它为其他对象提供一个代理以控制对这个对象的访问。代理模式在不直接访问实际对象的情况下,提供了对目标对象的间接访问。通过引入一个代理对象来间接操作实际对象,可以在不改变实际对象代码的前提下,增加额外的功能操作,如访问控制、延迟初始化、日志记录等。 代理模式中的角色 Subject(主题):定义了RealSubject和Proxy共有的接
阅读全文
Golang设计模式之适配器模式
小码哥
2024-10-31 16:25:04
Golang
pattern
设计模式
适配器模式适配器模式是一种结构型设计模式,它允许将不兼容的接口转换为一个客户端期望的另一个接口。适配器模式使得那些接口不兼容的类可以一起工作。 适配器模式中的角色和职责 Target(目标抽象类):定义客户所需接口,可以是一个抽象类或接口,也可以是具体类。 Adapter(适配器类):作为一个转换器,对Adaptee和Target进行适配,适配器类是适配器模式的核心。
阅读全文
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访问内存次数,降低性能。同
阅读全文
上一页
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)
置顶推荐
最新评论
友情链接
更多
×
无需注册,用以下帐号即可直接登录。
需要先增加第三方登录配置。
点击前往
最新评论