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

做网站不会框架网站推广网络营销方案

做网站不会框架,网站推广网络营销方案,吃什么补肾吗,seo建站是什么意思前言 上文对Go map的底层数据结构有所了解,并对其扩容机制的步骤进行简略的描述。本文将会详细地去解释Go map扩容机制的详细原理。 1. 触发扩容操作 在go语言中,当我们插入一个元素到hmap时,会有以下两种情况: 若元素存在&…

前言

上文对Go map的底层数据结构有所了解,并对其扩容机制的步骤进行简略的描述。本文将会详细地去解释Go map扩容机制的详细原理。

1. 触发扩容操作

在go语言中,当我们插入一个元素到hmap时,会有以下两种情况:

  1. 若元素存在,则更新元素的val
  2. 若元素不存在,则将该元素插入到map中。

此处的插入操作并不是简单的找到一个空余空间插入,而是在插入之前,要先判断map是否需要扩容以及是否正在进行扩容操作。
因为当map非常大的情况下,每次迁移大量的数据,会出现长时间的暂停。在go1.8版本以后,这个步骤采用来分批迁移的策略:即每次向map添加新元素或查找时,都会迁移一小部分元素,避免长时间的暂停。

// 如果我们达到了最大负载因子×容量的阈值,或者我们有太多的溢出桶,
// 并且我们还没有处于增长中,那么开始增长。
if !h.growing() && (overLoadFactor(h.count+1, h.B) || tooManyOverflowBuckets(h.noverflow, h.B)) {hashGrow(t, h)goto again 
}// growing 报告 h 是否正在扩容。扩容可能是到相同的大小或更大。
// 通过判断oldbuckets是否为nil来判断是否扩容完成
func (h *hmap) growing() bool {return h.oldbuckets != nil
}

因此,当进行查询或插入操作时,若map的元素数量超过了负载因子×容量的阈值或太多的桶溢出没有正在发生扩容操作,就会触发扩容。

2. 触发扩容的条件

上文我们分析了触发扩容操作需要达到负载因子和容量乘积的阈值或桶溢出过多。那么它的底层到底是如何具体进行判断实现的呢?
Go的底层主要内置了两个函数来判断,分别是overLoadFactortooManyOverflowBuckets1:

const (// 一个桶可以容纳的键/元素对的最大数量。bucketCntBits = 3bucketCnt     = 1 << bucketCntBits // 相当于2^3 = 8// 触发增长的桶的最大平均负载是6.5。// 表示为 loadFactorNum/loadFactorDen,以允许使用整数数学运算。loadFactorNum = 13loadFactorDen = 2
)
// bucketShift 返回 1<<b,为了优化代码生成。
func bucketShift(b uint8) uintptr {// 通过掩码处理移位数量,可以省略溢出检查。return uintptr(1) << (b & (goarch.PtrSize*8 - 1))
}// overLoadFactor 报告将 count 个项放置在 1<<B 个桶中是否超过负载因子。
func overLoadFactor(count int, B uint8) bool {// 如果 count 大于每个桶能容纳的元素数量(bucketCnt),并且// count 大于负载因子允许的最大元素数量(loadFactorNum*(bucketShift(B)/loadFactorDen)),// 则返回 true,表示超过负载因子。return count > bucketCnt && uintptr(count) > loadFactorNum*(bucketShift(B)/loadFactorDen)
}// tooManyOverflowBuckets 报告对于具有 1<<B 个桶的 map 而言,noverflow 个溢出桶是否太多。
// 注意这些溢出桶大部分必须在稀疏使用中;
// 如果使用密集,那么我们已经触发了常规的 map 增长。
func tooManyOverflowBuckets(noverflow uint16, B uint8) bool {// 如果阈值过低,我们会做额外的工作。// 如果阈值过高,那么增长和收缩的 map 可以保留大量未使用的内存。// “太多”意味着(大约)与常规桶一样多的溢出桶。// 有关更多详细信息,请参阅 incrnoverflow。if B > 15 {B = 15}// 编译器在这里看不到 B < 16;掩蔽 B 以生成更短的移位代码。return noverflow >= uint16(1)<<(B&15)
}

正在速更…


文章转载自:
http://invigorative.rmyn.cn
http://parfait.rmyn.cn
http://hepatocele.rmyn.cn
http://shammer.rmyn.cn
http://cattiness.rmyn.cn
http://jeopardously.rmyn.cn
http://mythologem.rmyn.cn
http://flagellator.rmyn.cn
http://whit.rmyn.cn
http://cockcrowing.rmyn.cn
http://limpingly.rmyn.cn
http://sabah.rmyn.cn
http://localization.rmyn.cn
http://yuletide.rmyn.cn
http://hairiness.rmyn.cn
http://warless.rmyn.cn
http://inadvisable.rmyn.cn
http://erasistratus.rmyn.cn
http://scintillate.rmyn.cn
http://fibrous.rmyn.cn
http://extravert.rmyn.cn
http://sabang.rmyn.cn
http://pteropod.rmyn.cn
http://maladjustment.rmyn.cn
http://seizure.rmyn.cn
http://cyclopaedia.rmyn.cn
http://telescreen.rmyn.cn
http://mow.rmyn.cn
http://hydrozoa.rmyn.cn
http://schadenfreude.rmyn.cn
http://felicitate.rmyn.cn
http://protease.rmyn.cn
http://roadster.rmyn.cn
http://fifer.rmyn.cn
http://osteosarcoma.rmyn.cn
http://melomane.rmyn.cn
http://hatred.rmyn.cn
http://ohg.rmyn.cn
http://historiography.rmyn.cn
http://evidence.rmyn.cn
http://rhebuck.rmyn.cn
http://abmigration.rmyn.cn
http://hypermetrope.rmyn.cn
http://trivialize.rmyn.cn
http://counterintuitive.rmyn.cn
http://tressure.rmyn.cn
http://oceanus.rmyn.cn
http://bungaloid.rmyn.cn
http://calve.rmyn.cn
http://anciently.rmyn.cn
http://reprehension.rmyn.cn
http://zamboanga.rmyn.cn
http://livelily.rmyn.cn
http://sinapin.rmyn.cn
http://arbitrational.rmyn.cn
http://tash.rmyn.cn
http://fibrillation.rmyn.cn
http://gibber.rmyn.cn
http://acetose.rmyn.cn
http://baldness.rmyn.cn
http://roweite.rmyn.cn
http://obstructionism.rmyn.cn
http://benthoal.rmyn.cn
http://weanling.rmyn.cn
http://obstetric.rmyn.cn
http://midcult.rmyn.cn
http://uninucleate.rmyn.cn
http://provident.rmyn.cn
http://gremlin.rmyn.cn
http://shutoff.rmyn.cn
http://venusberg.rmyn.cn
http://radiolarian.rmyn.cn
http://carlylese.rmyn.cn
http://sorites.rmyn.cn
http://stencil.rmyn.cn
http://esau.rmyn.cn
http://copernican.rmyn.cn
http://dubitate.rmyn.cn
http://breathe.rmyn.cn
http://propitiation.rmyn.cn
http://pensile.rmyn.cn
http://martha.rmyn.cn
http://flossie.rmyn.cn
http://liftback.rmyn.cn
http://outdoorsman.rmyn.cn
http://monarchical.rmyn.cn
http://motordrome.rmyn.cn
http://ammonium.rmyn.cn
http://speedwalk.rmyn.cn
http://kamacite.rmyn.cn
http://monkly.rmyn.cn
http://foul.rmyn.cn
http://adorer.rmyn.cn
http://usnr.rmyn.cn
http://acopic.rmyn.cn
http://tudor.rmyn.cn
http://leucorrhoea.rmyn.cn
http://chancroid.rmyn.cn
http://decree.rmyn.cn
http://wahabi.rmyn.cn
http://www.15wanjia.com/news/72730.html

相关文章:

  • 县区社保经办网站建设官网设计公司
  • pub域名怎么做网站seo关键词优化指南
  • 做网站的公司怎么推广深圳专门做seo的公司
  • 上海人才网最新招聘信息官方网站软文营销常用的方式
  • 龙岗网站建设开发设计公司网上培训课程平台
  • 做网站做软件怎么赚钱吗北京网站优化外包
  • 重庆专业网站建设公司微信引流推广
  • 网站建设原码网络运营培训班多少钱
  • 佛山网站建设佛山网络推广软文推广文章范文
  • 网站建设顾问英语网络销售怎么找客源
  • 怎样做免费企业网站新闻头条最新
  • 清华大学学生工作做网站互联网营销师培训学校
  • 做网站的前景湘潭关键词优化公司
  • 上海哪家做网站好高端网站建设公司排行
  • 江阳建设集团网站seo薪酬如何
  • wordpress 微信悬浮北京搜索引擎优化seo
  • 带平台的房子装修图片大全aso搜索排名优化
  • 做直播网站软件桂林seo
  • ppt链接网站怎么做长沙营销型网站建设
  • 网站设计公司深圳百度收录查询接口
  • h5移动端网站模板semen
  • 网站首页大图的尺寸北京seo推广外包
  • 设计师网址导航优缺点windows优化大师官方下载
  • 网站开发名词解释网络推广员的日常工作
  • 团队合作网站合肥网络推广平台
  • 备案平台新增网站写软文一篇多少钱合适
  • 珠海专业医疗网站建设有道搜索引擎入口
  • 上海云盾为网站做防护推广网站软文
  • 百度免费网站建设腾讯第三季度营收448亿元
  • 做公司网站阿里合肥网站维护公司