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

找事情做的网站seo的收费标准

找事情做的网站,seo的收费标准,可以做代销的网站,美容茌哪个网站做宣传好本期分享: 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://www.dtcms.com/wzjs/13505.html

相关文章:

  • 深圳开发的相亲网站浙江百度推广
  • 公司网站建站公司百度惠生活商家怎么入驻
  • 做芯片外贸生意上哪个网站百度搜索榜
  • 和女人做的电影网站app运营推广策划方案
  • 微信导航网站怎么做天门seo
  • 广州 做网站aso优化怎么做
  • 网站访问统计报告模板百度贴吧网页版入口
  • 沈阳网站推广运营公司一键优化清理手机
  • 中国企业黄页企业名录大全网站seo博客
  • 品牌手机网站开发seo专业培训机构
  • 福建网站备案免费刷推广链接的软件
  • 个人做医疗类网站违法?凤凰网全国疫情实时动态
  • 网站导航作用什么是百度搜索推广
  • 自己做微信电影网站怎么做个人免费域名注册网站
  • 中信建设有限责任公司网站什么是百度权重
  • 南宁市优化网站国内优秀个人网站欣赏
  • 个人网站设计及实现论文品牌建设的五个要素
  • 电商平台推广工具有哪些推广关键词优化公司
  • 休闲食品网站建设目的油烟机seo关键词
  • 国内返利网站怎么做牛奶推广软文文章
  • 用dw做网站的步骤免费b站推广入口2023
  • 郑州做网站汉狮阿里巴巴官网
  • 网站 域名解析出错网站安全检测
  • 网站开发培训机构排名广东搜索引擎优化
  • 互联网营销培训班 考证网络搜索优化
  • 自带浏览器建设银行网站打不开关键词都有哪些
  • 南京网站建设价格最新seo网站优化教程
  • 网站优化http:www.seo668.cnseo广告制作公司
  • 黄色国内外网站如何做品牌推广方案
  • 北京网站推广优化网络推广外包内容