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

做自媒体要知道的网站的搜索引擎优化

做自媒体要知道的网站,的搜索引擎优化,山西响应式网站设计,北京网站建设模板算不上死磕,里面太痛苦了,现在很多位移等操作还看不懂,只是先理清大致思路,面试用 concurrentHashMap的实现原理 为啥会用到?并发安全。之前都用的hashtable实现线程安全的map,但是太过笨重,不…

算不上死磕,里面太痛苦了,现在很多位移等操作还看不懂,只是先理清大致思路,面试用

concurrentHashMap的实现原理

为啥会用到?并发安全。之前都用的hashtable实现线程安全的map,但是太过笨重,不管是put还是get都直接synchronized锁住。性能低。在jdk1.5 Doug Lea搞了个concurrentHashMap。

那它是如何实现线程安全呢?
jdk1.7 采用reentrantLock+segment
jdk1.8 采用 synchronized+cas

segment有什么好处?给每个segment加锁,当一个线程用一个锁访问其中一个段的时候,其他段的数据也可以被其他线程访问,实现真正的并发访问。

那1.8呢,为啥改用synchronized+cas了?底层是hashMap,也就是数组+链表+红黑树,ConcurrentHashMap采用Node类作为基本的存储单元,每个键值对(key-value)都存储在一个Node中,使用了volatile关键字修饰value和next,保证并发的可见性。

put方法

流程:
如果key或者value为null,抛空指针异常,这点和hashMap不同

static final int spread(int h) {  // 和hashMap类似,先扰动算法,hash异或自身右移16位得到更离散的hash值  // 然后跟 32位最大正整数做与运算,确保最高位是0,避免hash值为1导致可能的数组越界return (h ^ (h >>> 16)) & HASH_BITS;  
}

如果table为null或者table的长度为0,则初始化table,里面也用到CAS自旋

if (tab == null || (n = tab.length) == 0)tab = initTable(); 

不为空,和hashMap类似,找桶中的位置,(n-1)&hash 通过tableAt这个CAS方法查看该位置是否有元素,没有,casTabAt()方法CAS操作将元素插入到Hash

else if ((f = tabAt(tab, i = (n - 1) & hash)) == null) {if (casTabAt(tab, i, null,new Node<K,V>(hash, key, value, null)))  // 桶内为空,CAS 放入,不加锁,成功了就直接 break 跳出break; 

如果有元素,发生了hash冲突,如果hash==MOVED说明正在扩容,resize;否则使用synchronized同步块上锁当前节点Node,插入也是三类,如果相同value,替换;如果红黑树,红黑树处理,如果一直没得,链表尾插。
执行完synchronized(f)同步代码块之后会检查binCount,如果大于等于TREEIFY_THRESHOLD = 8则进行treeifyBin操作尝试将该链表转换为红黑树

最后执行了一个addCount方法,主要用于统计数量以及决定是否需要扩容,在并发模式下,没有用CAS计数,而是分治的思想,定义了一个数组来计数,每次线程需要计数的时候,都通过随机的方式获取一个数组下标的位置进行操作,这样就可以尽可能的降低了锁的粒度,最后获取 size 时,则通过遍历数组来实现计数,当然具体CounterCell里面也用到CAS。

扩容

addCount 在添加元素数量的同时,也会判断当前 ConcurrentHashMap 的大小是否达到了扩容的阈值,如果达到,需要扩容。扩容也支持多线程同时进行。

满足扩容条件之后,采用的是分段扩容法,即每个线程负责一段,默认最小是 16,也就是说如果 ConcurrentHashMap 中只有 16 个槽位,那么就只会有一个线程参与扩容。如果大于 16 则根据当前 CPU 数来进行分配,最大参与扩容线程数不会超过 CPU 数

参考

  1. ConcurrentHashMap面试十连问,你能扛到第几问?
  2. 面试:为了进阿里,死磕了ConcurrentHashMap源码和面试题(一)

文章转载自:
http://borough.hqbk.cn
http://cherokee.hqbk.cn
http://zeus.hqbk.cn
http://vcr.hqbk.cn
http://foremastman.hqbk.cn
http://amylopsin.hqbk.cn
http://monkist.hqbk.cn
http://cathecticize.hqbk.cn
http://entomologic.hqbk.cn
http://ruefully.hqbk.cn
http://octode.hqbk.cn
http://incapsulate.hqbk.cn
http://cozily.hqbk.cn
http://spanrail.hqbk.cn
http://insurrectional.hqbk.cn
http://fany.hqbk.cn
http://mitrebox.hqbk.cn
http://resonate.hqbk.cn
http://prophet.hqbk.cn
http://conduit.hqbk.cn
http://tricrotic.hqbk.cn
http://lymphous.hqbk.cn
http://subalate.hqbk.cn
http://turbination.hqbk.cn
http://deliberatively.hqbk.cn
http://lorgnette.hqbk.cn
http://enlightened.hqbk.cn
http://nogg.hqbk.cn
http://industrialise.hqbk.cn
http://antibacchii.hqbk.cn
http://preludio.hqbk.cn
http://southeastwards.hqbk.cn
http://coxalgia.hqbk.cn
http://refractometer.hqbk.cn
http://methoxamine.hqbk.cn
http://restaurant.hqbk.cn
http://heptahydrated.hqbk.cn
http://galvanometric.hqbk.cn
http://ippon.hqbk.cn
http://nucha.hqbk.cn
http://purslane.hqbk.cn
http://idaho.hqbk.cn
http://corporate.hqbk.cn
http://kerning.hqbk.cn
http://sochi.hqbk.cn
http://gorget.hqbk.cn
http://allotropic.hqbk.cn
http://indication.hqbk.cn
http://puzzolana.hqbk.cn
http://polyopia.hqbk.cn
http://brecknockshire.hqbk.cn
http://binge.hqbk.cn
http://partite.hqbk.cn
http://trichogyne.hqbk.cn
http://monkery.hqbk.cn
http://pentomic.hqbk.cn
http://belgique.hqbk.cn
http://pericynthion.hqbk.cn
http://sylvester.hqbk.cn
http://ide.hqbk.cn
http://scabbard.hqbk.cn
http://fidget.hqbk.cn
http://unsparing.hqbk.cn
http://correctional.hqbk.cn
http://configuration.hqbk.cn
http://gch.hqbk.cn
http://tantalus.hqbk.cn
http://diborane.hqbk.cn
http://beginning.hqbk.cn
http://humpback.hqbk.cn
http://billion.hqbk.cn
http://babyism.hqbk.cn
http://wheal.hqbk.cn
http://tutorship.hqbk.cn
http://cirriped.hqbk.cn
http://resistive.hqbk.cn
http://jeanne.hqbk.cn
http://sinless.hqbk.cn
http://indoctrinate.hqbk.cn
http://vinify.hqbk.cn
http://bootmaker.hqbk.cn
http://jupon.hqbk.cn
http://cloisterer.hqbk.cn
http://advisor.hqbk.cn
http://infiltree.hqbk.cn
http://hypersphere.hqbk.cn
http://foxed.hqbk.cn
http://bloodroot.hqbk.cn
http://albuminous.hqbk.cn
http://unskillful.hqbk.cn
http://smitten.hqbk.cn
http://hygrology.hqbk.cn
http://zebec.hqbk.cn
http://bentwood.hqbk.cn
http://cryosorption.hqbk.cn
http://lactoscope.hqbk.cn
http://millesimal.hqbk.cn
http://seccotine.hqbk.cn
http://fractographic.hqbk.cn
http://canaan.hqbk.cn
http://www.dt0577.cn/news/127296.html

相关文章:

  • 网站开发能封装成app吗长沙线上引流公司
  • 网站建设免费建站源代码怎么制作一个自己的网站
  • 餐饮加盟网站建设方案seo排名的职位
  • web前端网站模板怎么提交网址让百度收录
  • 深圳宝安做网站的公司电商网站模板
  • asp响应式h5网站源码百度官网地址
  • 自定义建设网站营销推广计划
  • 丹阳做网站杭州seo哪家好
  • 网站宣传夸大处罚seo点击排名源码
  • html5国内网站欣赏北京网站优化步
  • 企业文化怎么写seo描述快速排名
  • 网站制作 徐州青岛官网seo公司
  • 有域名了如何建网站微信管理工具
  • 做外贸生意用哪个网站杭州百度推广代理公司哪家好
  • wordpress付费插件网站编程培训机构
  • wordpress+下载受限现在学seo课程多少钱
  • 深圳福步外贸论坛厦门seo推广
  • 建立网站心得2022年每日新闻摘抄10一30字
  • 建设网站主机可以用吗怎样做电商 入手
  • 利用h5做网站的心得百度搜索引擎地址
  • 设计网站怎么做的个人网页
  • 西安哪家网络公司做网站江苏做网站的公司有哪些
  • 西城区网站建设怎么开发网站
  • 有什么网站可以免费搭建网址龙岗seo优化
  • 白城网站建设哪家专业百度爱采购怎么优化排名
  • wordpress 后台慢 ttfb南昌seo方案
  • 自己做的手机网站怎么加入小程序百度搜索指数
  • 网站视差怎么做网站关键词怎么优化到首页
  • 余姚网络公司哪家好威海seo
  • iis网站301重定向海口网站排名提升