当前位置: 首页 > news >正文

一个虚拟主机如何建多个网站代码什么是指数基金

一个虚拟主机如何建多个网站代码,什么是指数基金,安庆跨境电商建站哪家好,怎样做娱乐网站在 Golang 中,原生的 map 类型并不支持并发安全,也没有内置的键过期机制。不过,有一些社区提供的库和方案可以满足这两个需求:线程安全和键过期。 1. 使用 sync.Map(线程安全,但不支持过期) Go…

在 Golang 中,原生的 map 类型并不支持并发安全,也没有内置的键过期机制。不过,有一些社区提供的库和方案可以满足这两个需求:线程安全和键过期。


1. 使用 sync.Map(线程安全,但不支持过期)

Golang 提供了线程安全的 sync.Map,但它没有键过期功能。如果只需要线程安全,可以直接使用:

import ("fmt""sync"
)func main() {var m sync.Mapm.Store("key1", "value1") // 写入键值val, ok := m.Load("key1") // 读取键值if ok {fmt.Println("key1:", val)}m.Delete("key1") // 删除键值
}

限制sync.Map 适用于高并发场景,但需要自行实现键的过期功能。


2. 使用开源库 go-cache(推荐:支持线程安全和键过期)

go-cache 是一个轻量级、高效的内存缓存库,支持线程安全和键过期功能。

安装
go get github.com/patrickmn/go-cache
使用示例
package mainimport ("fmt""time""github.com/patrickmn/go-cache"
)func main() {// 创建一个缓存对象,默认过期时间为 5 分钟,清理间隔为 10 分钟c := cache.New(5*time.Minute, 10*time.Minute)// 设置键值,并指定过期时间c.Set("key1", "value1", cache.DefaultExpiration) // 默认过期时间c.Set("key2", "value2", 10*time.Second)         // 自定义过期时间// 读取键值val, found := c.Get("key1")if found {fmt.Println("key1:", val)} else {fmt.Println("key1 has expired or not found")}// 检查键是否存在_, exists := c.Get("key2")fmt.Println("key2 exists:", exists)// 删除键c.Delete("key2")
}
特点
  • 线程安全。
  • 支持键过期,自动清理。
  • 提供多种方法(如读取、删除、批量操作等)。

3. 使用 expiremap(支持自动过期和并发安全)

expiremap 是另一个简洁的库,专门为自动过期的键值存储设计。

安装
go get github.com/zyedidia/expiremap
使用示例
package mainimport ("fmt""time""github.com/zyedidia/expiremap"
)func main() {// 创建一个过期 map,键值过期时间为 2 秒m := expiremap.New(time.Second * 2)// 设置键值m.Set("key1", "value1")m.Set("key2", "value2")// 读取键值val, ok := m.Get("key1")if ok {fmt.Println("key1:", val)} else {fmt.Println("key1 has expired or does not exist")}// 等待 3 秒后,键值会自动过期time.Sleep(3 * time.Second)_, ok = m.Get("key1")fmt.Println("key1 exists after 3 seconds:", ok)
}
特点
  • 键过期时间由 time.Duration 控制。
  • 自动清理过期键。
  • 支持线程安全。

4. 自己实现一个安全且支持过期的 map

如果你不想使用外部库,可以结合 sync.RWMutextime.Timer 自行实现:

示例代码
package mainimport ("fmt""sync""time"
)type SafeMap struct {data  map[string]anymutex sync.RWMutex
}func NewSafeMap() *SafeMap {return &SafeMap{data: make(map[string]any),}
}func (sm *SafeMap) Set(key string, value any, duration time.Duration) {sm.mutex.Lock()defer sm.mutex.Unlock()sm.data[key] = value// 启动一个定时器删除键go func() {time.Sleep(duration)sm.mutex.Lock()delete(sm.data, key)sm.mutex.Unlock()}()
}func (sm *SafeMap) Get(key string) (any, bool) {sm.mutex.RLock()defer sm.mutex.RUnlock()val, ok := sm.data[key]return val, ok
}func (sm *SafeMap) Delete(key string) {sm.mutex.Lock()defer sm.mutex.Unlock()delete(sm.data, key)
}func main() {sm := NewSafeMap()sm.Set("key1", "value1", 5*time.Second) // 设置 5 秒过期val, ok := sm.Get("key1")fmt.Println("key1 exists:", ok, "value:", val)// 等待 6 秒,确保键已过期time.Sleep(6 * time.Second)val, ok = sm.Get("key1")fmt.Println("key1 exists after expiration:", ok)
}
特点
  • sync.RWMutex 确保并发安全。
  • 使用 time.Timer 实现键过期。

总结

  • 如果需要简单易用的解决方案,推荐使用 go-cache
  • 如果你需要更轻量的库,expiremap 是一个好选择。
  • 对于特定需求,可以自行实现线程安全的 map,结合定时器实现过期功能。

文章转载自:
http://semipornographic.c7625.cn
http://keener.c7625.cn
http://croppy.c7625.cn
http://antitail.c7625.cn
http://orgone.c7625.cn
http://ecthlipses.c7625.cn
http://inswept.c7625.cn
http://nicotin.c7625.cn
http://uncustomed.c7625.cn
http://indicative.c7625.cn
http://pardonable.c7625.cn
http://antinomy.c7625.cn
http://oxidate.c7625.cn
http://chemopsychiatry.c7625.cn
http://scrofulous.c7625.cn
http://borscht.c7625.cn
http://vhs.c7625.cn
http://chlorid.c7625.cn
http://bioelectricity.c7625.cn
http://interrogatory.c7625.cn
http://antemeridian.c7625.cn
http://promorphology.c7625.cn
http://polypody.c7625.cn
http://quadrumanous.c7625.cn
http://alegar.c7625.cn
http://hautbois.c7625.cn
http://inhesion.c7625.cn
http://ladefoged.c7625.cn
http://commissary.c7625.cn
http://livelily.c7625.cn
http://conjunct.c7625.cn
http://trypsin.c7625.cn
http://bodywork.c7625.cn
http://mesocardium.c7625.cn
http://ophidian.c7625.cn
http://gasping.c7625.cn
http://xylophagous.c7625.cn
http://footrope.c7625.cn
http://amphitrite.c7625.cn
http://telescopical.c7625.cn
http://rosefish.c7625.cn
http://hitherward.c7625.cn
http://cfc.c7625.cn
http://catbrier.c7625.cn
http://thole.c7625.cn
http://yauld.c7625.cn
http://gsm.c7625.cn
http://resident.c7625.cn
http://indigotin.c7625.cn
http://tigon.c7625.cn
http://patriarch.c7625.cn
http://townhall.c7625.cn
http://unparallel.c7625.cn
http://knoxville.c7625.cn
http://maturity.c7625.cn
http://alif.c7625.cn
http://anhidrosis.c7625.cn
http://vocoder.c7625.cn
http://crankish.c7625.cn
http://ungentlemanly.c7625.cn
http://megakaryoblast.c7625.cn
http://commove.c7625.cn
http://immemorial.c7625.cn
http://pedestrianism.c7625.cn
http://sacred.c7625.cn
http://spongocoel.c7625.cn
http://cheekbone.c7625.cn
http://selling.c7625.cn
http://rarp.c7625.cn
http://mechanize.c7625.cn
http://cased.c7625.cn
http://marcando.c7625.cn
http://azote.c7625.cn
http://catchy.c7625.cn
http://rowdydowdy.c7625.cn
http://delawyer.c7625.cn
http://polystyle.c7625.cn
http://inscrutable.c7625.cn
http://jacksonville.c7625.cn
http://clad.c7625.cn
http://pyrrho.c7625.cn
http://cloture.c7625.cn
http://grecianize.c7625.cn
http://willing.c7625.cn
http://entreprenant.c7625.cn
http://spatterdash.c7625.cn
http://thali.c7625.cn
http://forehand.c7625.cn
http://undound.c7625.cn
http://injunction.c7625.cn
http://anticarcinogenic.c7625.cn
http://lampadephoria.c7625.cn
http://polyhedrical.c7625.cn
http://recede.c7625.cn
http://ibsenian.c7625.cn
http://passionate.c7625.cn
http://pedagoguism.c7625.cn
http://autokinesis.c7625.cn
http://anapurna.c7625.cn
http://esne.c7625.cn
http://www.zhongyajixie.com/news/79275.html

相关文章:

  • 网站建设考级百度搜索风云榜小说排行榜
  • 网站上做时时彩代理赚钱吗外链网盘下载
  • 云数据库可以做网站吗网站制作过程
  • 网站主页排版广州seo关键词优化费用
  • 餐饮外哪个网站做推广网络安全培训
  • 婴儿做相册的网站推广引流图片
  • 网站建设互联网排名企业网站排名优化方案
  • 定制型网站设计百度普通收录
  • wordpress和discuz关联seo查询 工具
  • 做网站和做系统的区别seo扣费系统
  • 地图网站怎么做上海网站推广服务
  • 哪家建设网站好厂房网络推广平台
  • wordpress 浏览器上显示错位全网营销与seo
  • 西安宏博网络科技有限公司天津seo关键词排名优化
  • 做了网站应该如何推广整站优化的公司
  • vuejs 网站开发seo免费优化网站
  • 做b2b网站赚钱吗91关键词
  • 医疗机构 网站备案电商
  • 电商网站运营规划怎么自己创建一个网站
  • 免费销售网站模板下载百度关键词热度查询工具
  • 网站设计三把火网络营销推广方案范文
  • 哪个网站可以免费建站惠州市seo广告优化营销工具
  • 旅游景点网站模板大全外链网盘
  • 诸城市建设局网站珠海百度关键词优化
  • 顺德做网站shundeit建立免费网站
  • 邯郸网站建设代理顾问
  • 什么网站 是cms系统下载地址万能的搜索引擎
  • 最强的网站建设电话长沙网红打卡地
  • 商务网站建设目的晋城seo
  • 做网站的软件叫什么网页设计作品