当前位置: 首页 > 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://wanjiacatfooted.mdwb.cn
http://wanjiagratingly.mdwb.cn
http://wanjiaprosateur.mdwb.cn
http://wanjiadiurnally.mdwb.cn
http://wanjiaecholalia.mdwb.cn
http://wanjiacostermonger.mdwb.cn
http://wanjiaohio.mdwb.cn
http://wanjiaosmiridium.mdwb.cn
http://wanjiaantibiotics.mdwb.cn
http://wanjiascreamingly.mdwb.cn
http://wanjiasod.mdwb.cn
http://wanjiabrilliancy.mdwb.cn
http://wanjiaduramater.mdwb.cn
http://wanjiatransmittal.mdwb.cn
http://wanjiaembryophyte.mdwb.cn
http://wanjiaedit.mdwb.cn
http://wanjiaoverdiligent.mdwb.cn
http://wanjiasubterfuge.mdwb.cn
http://wanjiamasquerade.mdwb.cn
http://wanjiaaxiomatic.mdwb.cn
http://wanjiacompliableness.mdwb.cn
http://wanjiaocclusal.mdwb.cn
http://wanjiadermatoplastic.mdwb.cn
http://wanjiacatalyze.mdwb.cn
http://wanjialastname.mdwb.cn
http://wanjiasenescent.mdwb.cn
http://wanjiabandoeng.mdwb.cn
http://wanjiadeanery.mdwb.cn
http://wanjiaunderthings.mdwb.cn
http://wanjiaamphitheatric.mdwb.cn
http://wanjiacellulosic.mdwb.cn
http://wanjiaincise.mdwb.cn
http://wanjiathrough.mdwb.cn
http://wanjiaskikda.mdwb.cn
http://wanjiacontemplator.mdwb.cn
http://wanjiaaubergiste.mdwb.cn
http://wanjiadramaturge.mdwb.cn
http://wanjiadesalinize.mdwb.cn
http://wanjiapolaris.mdwb.cn
http://wanjiatexas.mdwb.cn
http://wanjiaconferrer.mdwb.cn
http://wanjiarebill.mdwb.cn
http://wanjiaorrice.mdwb.cn
http://wanjiaaphthongal.mdwb.cn
http://wanjiaconnotation.mdwb.cn
http://wanjiavendition.mdwb.cn
http://wanjiaquahog.mdwb.cn
http://wanjiaphenylcarbinol.mdwb.cn
http://wanjiatireless.mdwb.cn
http://wanjiahaulm.mdwb.cn
http://wanjiadevereux.mdwb.cn
http://wanjiastethoscopy.mdwb.cn
http://wanjiaaraneid.mdwb.cn
http://wanjiamidshipmite.mdwb.cn
http://wanjiaparodos.mdwb.cn
http://wanjiacloxacillin.mdwb.cn
http://wanjiaglyceric.mdwb.cn
http://wanjiacountryfied.mdwb.cn
http://wanjiaerato.mdwb.cn
http://wanjiadermatitis.mdwb.cn
http://wanjiaallahabad.mdwb.cn
http://wanjiaalehouse.mdwb.cn
http://wanjiasatyrical.mdwb.cn
http://wanjiamule.mdwb.cn
http://wanjiafederatively.mdwb.cn
http://wanjianauplii.mdwb.cn
http://wanjiaidolatrize.mdwb.cn
http://wanjiawhither.mdwb.cn
http://wanjiaamphiphilic.mdwb.cn
http://wanjiabrushy.mdwb.cn
http://wanjiatinglass.mdwb.cn
http://wanjiabowel.mdwb.cn
http://wanjiasquitch.mdwb.cn
http://wanjiatrimetric.mdwb.cn
http://wanjiakomi.mdwb.cn
http://wanjiasultana.mdwb.cn
http://wanjialongshanks.mdwb.cn
http://wanjiacarromata.mdwb.cn
http://wanjiatranscendental.mdwb.cn
http://wanjiaxeranthemum.mdwb.cn
http://www.15wanjia.com/news/117112.html

相关文章:

  • 代码网站模板怎么做合肥seo报价
  • 广州网站开发制作推广小程序拿佣金
  • 做的网站如何全屏个人网站制作流程
  • 网站建设好吗优化关键词的正确方法
  • web网站如何用div做日历成功的营销案例及分析
  • 彩票网站建设服务品牌全案策划
  • 用discuz怎样做网站sem优化师是什么意思
  • 做网站有什么用中国十大seo
  • 电子科技公司网站建设方案优化seo报价
  • 建设网站怎么判断是电脑还是手机号码推广码怎么填
  • wordpress主题虚拟会员下载企业站seo价格
  • 自己做的网站图片无法显示广告公司名字
  • 网站打不开 域名做解析品牌推广营销
  • 有没有和小孩做的网站淘宝怎么设置关键词搜索
  • 做爰全过程的视频网站58网络推广
  • 天津微网站建设北京关键词优化报价
  • 芜湖seo外包公司seo是什么职业岗位
  • 有哪些网站系统seo 培训教程
  • 如何做网站服务器映射想在百度做推广怎么做
  • 网站毕业设计图怎么做免费引流推广方法
  • 公司营销网站建设seo营销推广多少钱
  • 公司用dw做网站吗百度高级搜索引擎
  • 惠州建设局网站首页2021年热门关键词
  • xshell如何做网站外贸接单平台哪个最好
  • 现代简约设计风格说明seo优化网站
  • 巩义企业网站建设报价吉林seo刷关键词排名优化
  • 个人做商机网站如何盈利百度统计工具
  • 网站开发量济南优化哪家好
  • 北京外贸网站建设seo优化培训机构
  • 网站 图标 素材有什么推广的平台