Toggle navigation
码云博客
首页
Devops
PHP
Golang
数据库
Docker
K8s
Ai
杂项
Home
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
简单工厂模式概述简单工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在这种模式中,一个工厂类负责创建其他类的实例,并且封装实例的创建逻辑。这种模式让类的实例化推迟到子类进行。 为什么需要简单工厂模式在没有工厂模式的情况下,如果需要创建多种类型的对象,可能会导致一个类中包含大量条件判断语句,这不仅增加了代码的复杂性,也违反了单一职责原则和开闭原则。 简
阅读全文
RAG优化
小码哥
2024-10-13 11:16:30
Ai
rag
ai
向量化
RAG概述RAG,即"RetrievalAugmented Generation",是一种结合了检索(Retrieval)和生成(Generation)的机器学习模型框架。它广泛应用于自然语言处理任务,如文本生成和问答系统等。RAG模型首先通过检索机制从大型文档集合中检索出与输入查询最相关的文档或文档片段,然后利用这些信息作为上下文,输入到生成模型中,以生成响应或完成特定的语言任务。RA
阅读全文
使用docker-compose构建本地lamp开发环境
小码哥
2024-10-12 10:50:30
Docker
docker
docker-compose
使用使用 Docker 和 项目在 Windows 上搭建一个 LAMP 开发环境,将本地的 PHP 项目、MySQL映射到 Docker 服务器上。 前置条件1. Docker Desktop: 请确保已在 Windows 上安装并运行最新版的 Docker Desktop。2. Git: 需要安装 Git 来克隆代码库。 步骤 1. 克隆 LAMP 项目
阅读全文
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
5
6
7
8
9
10
下一页
热门标签
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)
置顶推荐
最新评论
友情链接
更多
×
无需注册,用以下帐号即可直接登录。
需要先增加第三方登录配置。
点击前往
最新评论