bluele/gcache 是一个 高性能、功能丰富的 Go 语言缓存库,支持多种缓存策略,如 LRU(最近最少使用)、LFU(最少使用频率)、ARC(自适应缓存替换)等,可以灵活选择适合的缓存模式。 1. 安装 使用 go get 下载安装: go get github.com/bluele/gcache 然后在代码中导入: import "github.com/bluele/gcache" 2. 主要特性 支持多种缓存策略 LRU(Least Recently Used,最近最少使用) LFU(Least Frequently Used,最少使用频率) ARC(Adaptive Replacement Cache,自适应缓存替换) Simple(普通缓存) 可选自动过期(TTL) 支持回调函数(OnEvicted) 支持从数据源(如数据库)自动加载数据 并发安全 3. 快速入门 3.1 创建一个 LRU 缓存 package main import ( "fmt" "github.com/bluele/gcache" ) func main() { // 创建一个 LRU 缓存.... golang每日一库之bluele/gcache golang每日一库
github.com/bits-and-blooms/bloom 是 Go 语言中的 布隆过滤器(Bloom Filter) 实现。布隆过滤器是一种 高效的概率型数据结构,用于快速判断某个元素是否存在于一个集合中,具有 节省空间 和 高效查询 的特点,广泛应用于 去重、缓存、黑名单检测等场景。 1. 安装 使用 go get 下载安装: go get github.com/bits-and-blooms/bloom 然后在代码中导入: import "github.com/bits-and-blooms/bloom" 2. 布隆过滤器原理 布隆过滤器使用 多个哈希函数 将元素映射到一个 位数组(bit array) 中: 插入数据:使用多个哈希函数计算索引,并将对应的位设为 1。 查询数据:检查所有哈希索引位置是否都为 1,如果存在 0,则该元素一定 不在集合中,否则可能 在集合中(但可能存在误判)。 误判率:布隆过滤器 不会产生假阴性(False Negative),但会有** 假阳性(False Positive)**。 3. 使用示例 3.1 创建布隆过滤器 package .... golang每日一库之bits-and-blooms/bloom golang每日一库
github.com/deckarep/Golang-set 介绍 github.com/deckarep/Golang-set 是 Go 语言中一个流行的 集合(Set) 库,它提供了强类型、安全且易于使用的集合数据结构。Go 语言标准库没有内置集合(Set)类型,而该库弥补了这一缺陷,并提供了基本的集合操作,如 添加、删除、交集、并集、差集 等。 1. 安装 可以使用 go get 安装: go get github.com/deckarep/golang-set/v2 然后在 Go 代码中导入: import mapset "github.com/deckarep/golang-set/v2" 2. 主要特性 泛型支持(V2 版本),兼容 Go 1.18+ 线程安全(ConcurrentSet) 和 非线程安全(Set)两种实现 提供集合的标准操作,如: 并集(Union) 交集(Intersect) 差集(Difference) 子集检查(Subset) 超集检查(Superset) 3. 基本用法 3.1 创建集合 package main import ( "fmt".... 有更新! golang每日一库之deckarep/golang-set golang每日一库
在 Go 语言的生态中,数据结构的选择和实现往往直接影响程序的性能和代码的可维护性。 今天,我们就来聊聊一个备受开发者喜爱的开源项目 gods,它为我们提供了丰富且易用的数据结构实现,极大地简化了开发过程中“造轮子”的烦恼。 1. 项目背景 gods 是由 Emir Pasic 开发并维护的一个开源库,旨在为 Go 语言提供各种常用数据结构和算法的实现。项目采用 MIT 许可证,鼓励社区贡献和定制,使得开发者能够在项目中方便地使用列表、集合、映射、堆、树等数据结构,而无需从零开始实现。 2. 核心特性 丰富的数据结构支持 列表与链表: 库中实现了 ArrayList、LinkedList 等数据结构,既支持随机访问,也适合频繁插入和删除操作。 栈与队列: 通过内置的 Stack 和 Queue 实现,开发者可以轻松处理后进先出(LIFO)和先进先出(FIFO)的数据操作。 集合(Sets): 支持 HashSet 和 TreeSet,前者基于哈希实现,提供快速查找;后者则自动排序,方便范围查找。 映射(Maps): 提供了 HashMap、TreeMap 和 LinkedHashMap.... golang每日一库之gods golang每日一库