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

如何把jQuery特效做网站背景招商项目

如何把jQuery特效做网站背景,招商项目,相关网站查询,广告宣传费一般多少钱文章目录 1、HashMap 设置值的原理2、HashMap 获取值原理3、HashMap Hash优化4、HashMap 寻址优化5、HashMap 是如何解决Hash冲突的?5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?5.2 红黑树 6、数组扩容6.1 数…

文章目录

    • 1、HashMap 设置值的原理
    • 2、HashMap 获取值原理
    • 3、HashMap Hash优化
    • 4、HashMap 寻址优化
    • 5、HashMap 是如何解决Hash冲突的?
      • 5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?
      • 5.2 红黑树
    • 6、数组扩容
      • 6.1 数组长度为16,计算index
      • 6.2 数组长度为32, 计算index
      • 6.3 扩容总结:

1、HashMap 设置值的原理

  1. 根据key计算HashCode,
  2. 再使用HashCode对 数组长度取模,结果一定是存放到数组中 的某一个位置。
  3. 得到指定位置索引之后,就往指定位置设置数据即可。

2、HashMap 获取值原理

  1. 根据key计算hashCode,
  2. 再使用hashCode对 数据长度取模,得到一个数组索引,
  3. 然后再根据索引从数组中获取指定数据即可。

3、HashMap Hash优化

      // JDK 1.8以后的HashMap里面的一段源码static final int hash(Object key) {int h;return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);
}

答案:hash数组一般不会太大,使用 key 的hashCode 和 key的hashCode 右移16位 进行异或运算的目的就是让 高低16位都参与运算,减少hash冲突

4、HashMap 寻址优化

hash & (n - 1)

当n为2的n次方的时候, hash & (n - 1) = hash % n

答案:hash & (n - 1) -> 效果是跟hash对n取模,效果是一样的,但是与运算的性能要比hash对n取模要高很多,数学问题,数组的长度会一直是2的n次方,只要他保持数组长度是2的n次方

5、HashMap 是如何解决Hash冲突的?

使用链表法解决。
在数据的指定位置,挂一个链表,这个链表里放多个元素,让多个 key-value 放在数据的同一个位置

5.1 get数据的时候,如果定位到指定位置的元素是一个链表,怎么办呢?

get 的时候,如果定位到数组发现这个位置挂了一个链表哦,此时就会遍历 链表,从链表里面选择到自己需要的那个 kye-value 就可以了。

5.2 红黑树

为了解决hash冲突的问题,就会在 数据的指定为值挂一个链表,如果链表的长度达到了一定的长度之后,就会将链表转换成红黑树,通过遍历一颗红黑树找到一个元素,此时时间复杂度是 O(logn), 性能比链表要高一些。
如果链表过长,遍历的性能不高,因此当链表长度超过一定限制的时候,就会将链表转换成红黑树,提升搜索性能。

6、数组扩容

6.1 数组长度为16,计算index

n - 1  0000 0000 0000 0000 0000 0000 0000 1111
hash1  1111 1111 1111 1111 0000 1111 0000 0101
&      0000 0000 0000 0000 0000 0000 0000 0101 = 5(index = 5的位置)n - 1  0000 0000 0000 0000 0000 0000 0000 1111
hash2  1111 1111 1111 1111 0000 1111 0001 0101
&      0000 0000 0000 0000 0000 0000 0000 0101 = 5(index = 5的位置)

6.2 数组长度为32, 计算index

n-1    0000 0000 0000 0000 0000 0000 0001 1111
hash1  1111 1111 1111 1111 0000 1111 0000 0101
&结果   0000 0000 0000 0000 0000 0000 0000 0101 = 5(index = 5的位置)n-1    0000 0000 0000 0000 0000 0000 0001 1111
hash2  1111 1111 1111 1111 0000 1111 0001 0101
&结果   0000 0000 0000 0000 0000 0000 0001 0101 = 21(index = 21的位置)

6.3 扩容总结:

数据扩容 -> 2倍扩容 -> 重新对map中的每一个元素进行寻址->通过判断二进制结果是否多出来了一个bit为,判断index的位置是否变化;

如果数组的长度扩容之后 = 32,重新对每个hash值进行寻址,也就是用每个hash值跟新数组的length - 1进行与操作

  • 判断二级制结果是否多出来一个bit的1
  • 如果没有多,那么还是原来的index
  • 如果多了出来,那么新的index = oldIndex + oldCap
  • 通过这个方法避免了rehash的时候,用每个hash对数据的长度进行取模,取模的性能不高,位运算的性能比较高。
http://www.yayakq.cn/news/790583/

相关文章:

  • 专做it招聘的网站利用养生网站做竞价引流
  • 知名网站建设托管手机下载工具app
  • 深圳十大网站建设梅州兴宁网站建设培训
  • 视频网站的建设目标推广链接怎么制作
  • 有服务器如何做网站网站开发专员
  • 合肥网站改版郑州网站竞价托管
  • 网上书城网站开发方案网站网页价格
  • 深圳市网站建设单位十佳传媒公司主要做什么业务
  • 电脑网站设计公司给被k的网站做友链
  • 域名解析到网站百年人寿保险公司官网
  • php网站开发专业1.电子商务网站建设的核心是( )
  • 重庆快速建站运动猿app 网站开发
  • 免费发布信息网站大全网站一般用什么软件做
  • 个人soho要怎么做企业网站百度指数app下载
  • 印江建设局网站工伤做实的那个网站
  • 龙华网站建设全包网站备案无前置审批文件
  • 佛山网站推广 优帮云龙华o2o网站建设
  • flash 做网站房地产销售工作内容
  • 书画展示网站模板淮安网站建设价位
  • 网页设计留言板怎么做淄博seo网络推广
  • 邯郸市住房和城建设局网站建设好的网站怎么分享
  • 江苏国龙翔建设网站从头建设个人网站步骤
  • 深圳福田专业网站改版网站正在建设中html5
  • 常用设计网站有哪些软件企业为什么要做推广
  • 怎么查看网站空间是否到期无锡网站制作优化
  • 电子商务网站建设与管理实训报告有必要自建网站做导购吗
  • 大连中山网站建设江山市建设局网站
  • 陕西省关于网站信息内容建设做星座网站
  • 淘宝关闭网站建设类目简述网络营销产品的概念
  • 网站建设文献英文宁乡网站建设公司