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

如何让自己做的博客网站上线今天深圳大事件新闻

如何让自己做的博客网站上线,今天深圳大事件新闻,珠海专业网站建设,承包酒席可以做网站吗本期分享: 1.sync.Map的原理和使用方式 2.实现有序的Map sync.Map的原理和使用方式 sync.Map的底层结构是通过读写分离和无锁读设计实现高并发安全: 1)双存储结构: 包含原子化的 read(只读缓存,无锁快…

本期分享:

1.sync.Map的原理和使用方式

2.实现有序的Map

sync.Map的原理和使用方式

sync.Map的底层结构是通过读写分离无锁读设计实现高并发安全:

1)双存储结构

包含原子化的 read(只读缓存,无锁快速访问)和加锁的 dirty(写入缓冲区)

2)读优先

读取时先尝试无锁访问 read,未命中时加锁访问 dirty 并记录未命中次数

3)动态升级

当未命中次数超过 dirty 长度时,将 dirty 原子替换为新的 read

4)延迟删除

删除操作仅标记数据状态(expunged),实际清理在 dirty 升级时批量处理

5)值原子化

通过 entry 指针的原子操作实现值更新的无锁化,适用于读多写少的高并发场景。

请在此添加图片描述

部分源码:

type Map struct {mu     sync.Mutex       // 保护 dirty 操作read   atomic.Value     // 只读缓存(atomic 访问)dirty  map[interface{}]*entry  // 写入缓冲区misses int              // read 未命中计数器
}type entry struct {p unsafe.Pointer  // 可能的状态:nil, expunged, 有效指针
}

Go 语言标准库中的 sync.map 专为以下场景优化:

  • 读多写少(98% 读操作)
  • 动态键空间(频繁创建/删除键)
  • 需要保证并发安全

性能对比测试: 测试场景为4核CPU环境下并发读写

实现方式100万次读/写 (ns/op)内存占用 (MB)
map+sync.RWMutex42032
sync.Map8528

实现有序的map

在Go语言中,标准库的map是无序的,但可以通过组合数据结构实现有序映射。以下是几种常见实现方案,根据需求选择最适合的方式:

方案一:维护插入顺序(链表法)
package mainimport"fmt"type OrderedMap struct {items map[interface{}]interface{}order []interface{}
}func NewOrderedMap() *OrderedMap {return &OrderedMap{items: make(map[interface{}]interface{}),order: make([]interface{}, 0),}
}func (m *OrderedMap) Set(key, value interface{}) {if _, exists := m.items[key]; !exists {m.order = append(m.order, key)}m.items[key] = value
}func (m *OrderedMap) Get(key interface{}) (interface{}, bool) {val, exists := m.items[key]return val, exists
}func (m *OrderedMap) Delete(key interface{}) {delete(m.items, key)// 重建顺序切片(简单实现,实际可用更高效方式)newOrder := make([]interface{}, 0, len(m.order)-1)for _, k := range m.order {if k != key {newOrder = append(newOrder, k)}}m.order = newOrder
}func (m *OrderedMap) Iterate() {for _, key := range m.order {fmt.Printf("%v: %v\n", key, m.items[key])}
}
方案二:排序映射(使用sort包)
package mainimport ("fmt""sort"
)type SortedMap struct {keys  []intitems map[int]string
}func NewSortedMap() *SortedMap {return &SortedMap{keys:  make([]int, 0),items: make(map[int]string),}
}func (m *SortedMap) Set(key int, value string) {if _, exists := m.items[key]; !exists {m.keys = append(m.keys, key)sort.Ints(m.keys) // 保持有序}m.items[key] = value
}func (m *SortedMap) Get(key int) (string, bool) {val, exists := m.items[key]return val, exists
}func (m *SortedMap) Iterate() {for _, key := range m.keys {fmt.Printf("%d: %s\n", key, m.items[key])}
}
方案三:使用第三方库(推荐)
import "github.com/emirpasic/gods/maps/treemap"func main() {// 自然排序m := treemap.NewWithIntComparator()m.Put(1, "one")m.Put(3, "three")m.Put(2, "two")// 迭代器it := m.Iterator()for it.Next() {fmt.Printf("%d: %s\n", it.Key(), it.Value())}// 反向迭代rit := m.ReverseIterator()for rit.Next() {fmt.Printf("%d: %s\n", rit.Key(), rit.Value())}
}

本篇结束~

欢迎关注我


文章转载自:

http://r3TURAUo.rnqbn.cn
http://kHUZx2yj.rnqbn.cn
http://XqDRVQDl.rnqbn.cn
http://nx8Warwz.rnqbn.cn
http://u90dNsqT.rnqbn.cn
http://XR4zlrHq.rnqbn.cn
http://dKrbxbB4.rnqbn.cn
http://lGkO2MtC.rnqbn.cn
http://nOyMoqd5.rnqbn.cn
http://wdAve1zR.rnqbn.cn
http://OVDgqPE5.rnqbn.cn
http://OKMCEpcw.rnqbn.cn
http://kpsEXYth.rnqbn.cn
http://BIYszW8i.rnqbn.cn
http://muSxEjE0.rnqbn.cn
http://sI88aVXO.rnqbn.cn
http://PUNInAib.rnqbn.cn
http://YoaUG0WQ.rnqbn.cn
http://lUtMZuzs.rnqbn.cn
http://I7rnJtNY.rnqbn.cn
http://9bjXPzyo.rnqbn.cn
http://hXxaR5q1.rnqbn.cn
http://cz2moIdS.rnqbn.cn
http://slCgznxD.rnqbn.cn
http://3xGGllfY.rnqbn.cn
http://1tuWMSHy.rnqbn.cn
http://XOiMhW2H.rnqbn.cn
http://0zC1kSXk.rnqbn.cn
http://we03pp4f.rnqbn.cn
http://2VGBf0ME.rnqbn.cn
http://www.dtcms.com/wzjs/677529.html

相关文章:

  • 免费永久个人域名注册系统优化软件哪个最好的
  • 网站举报平台12315怎么做网站的站点地图
  • 网站如何更新内容视频剪辑培训班学费一般多少
  • 深圳好的网站制作公司宝塔默认安装wordpress
  • 宁波正规站内优化seo购买网站建站
  • 做系统用什么网站网站上的导航栏怎么做
  • 做网站设计前景怎么样像素人物制作网站
  • 网站建设售后服务承诺建设企业网站就等于开展网络营销
  • 做阿里国际网站会有成效吗安徽宿州住房与建设网站
  • 沈阳做网站费用vr看房网站开发费用
  • 如何查找各种网站银行网站开发
  • 备案 网站名称什么用wordpress推特登陆
  • 多城市网站如何做seo做设计的一般在什么网站找素材
  • 物流网站前端模板下载百度包头网站建设
  • 网站源码asp兰州手机网站制作公司
  • 成都网站制作是什么做网站一个月工资
  • 聊城汽车网站建设wordpress论坛哪个功能全面
  • 网站建设设计问卷唐山市里做网站的
  • 手机医疗网站凡科做的网站能被收录吗
  • 科技设计网站有哪些内容菜馆网站制作
  • 天津人工智能建站系统软件wordpress 自带搜索
  • 大足网站建设公司手机怎么制作网站教程视频教程
  • 菏泽外贸网站建设wordpress登录界面怎么编辑
  • 哪个网站查公司信息比较准注册一个公司多少钱
  • 自己视频怎么上传网站怎么做网页快捷方式
  • 网站seo主管招聘酷家乐软件培训班
  • 7000元买一个域名做网站孝感建设银行网站
  • 免费html网站制作成品南宁网站建设智能优化
  • 南京哪家做网站好建筑工程公司企业简介
  • 网站建站外包公司网站怎么加代码