HashMap是JDK提供的经典容器之一,最近刚好时间充裕,于是自己看了一遍hashMap的源码实现,不同版本的JDK,HashMap的实现方式有所不同,本文主要针对JDK1.8的源码进行分析,至于各版本实现方式的不同,本文不做讨论,下面直接开始。 一、hash函数分析 map的put方法,首先调用 ...
分类:
其他好文 时间:
2019-09-28 14:24:50
阅读次数:
89
一.为什么要用集群 redis3.0集群采用P2P模式,完全去中心化,将redis所有的key分成了16384个槽位,每个redis实例负责一部分slot,集群中的所有信息通过节点数据交换而更新。 redis实例集群主要思想是将redis数据的key进行散列,通过hash函数特定的key会映射到指定 ...
分类:
其他好文 时间:
2019-09-21 10:52:14
阅读次数:
79
底层:字典 字典是redis整个映射的基础,hash结构依赖字典,zset中member到score的映射也是通过字典。set的底层也是字典,只不过value是null。 一个字典内部实际包含两个hashtable,因为扩容缩容需要渐进式hash迁移。hashtable是由数组加链表组成。 渐进式h ...
分类:
其他好文 时间:
2019-09-15 10:32:35
阅读次数:
90
1. 为什么用HashMap? 1. 简述一下Map类继承关系? 1. 解决哈希冲突的方法? 1. 为什么HashMap线程不安全? 1. resize机制? 1. HashMap的工作原理是什么? 1. 有什么方法可以减少碰撞? 1. HashMap中hash函数怎么是是实现的? 1. 拉链法导致 ...
分类:
其他好文 时间:
2019-09-10 23:54:24
阅读次数:
206
1.给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url?方案1:可以估计每个文件安的大小为50G×64=320G,远远大于内存限制的4G。所以不可能将其完全加载到内存中处理。考虑采取分而治之的方法。遍历文件a,对每个url求取,然后根据所取得的值将url分别存储到1000个小文件(记为)中。这样每个小文件的大约为300M。遍历文件b,采
分类:
编程语言 时间:
2019-09-10 17:54:39
阅读次数:
127
1、JDK和JRE区别? 2、final关键字,抽象类可以使用final修饰吗? 3、JAVA容器 4、多线程安全在三个方面体现: 5、JAVA怎么保证线程安全? 6、有没有其他方法保证线程安全? 7、JAVA怎么避免死锁? 8、数据库为什么建立索引? 9、硬盘里一个50G大小的文件和另一个100G ...
分类:
编程语言 时间:
2019-09-07 20:53:12
阅读次数:
126
大数据与空间限制问题 statement:本篇文字是看书(最后有介绍)的总结,仅限于想法,没有代码实现。 1. 布隆过滤器:100亿个黑名单网页,使用额外空间不超过30GB,允许万分之一失误率。 常见于建立黑名单时过滤使用。使用多个(就k吧)相互独立的优秀的hash函数,创建一个m个bit的数组,先 ...
分类:
其他好文 时间:
2019-08-15 15:50:51
阅读次数:
74
背景说明 Hash 函数在计算机领域,尤其是数据快速查找领域,加密领域用的极广。 其作用是将一个大的数据集映射到一个小的数据集上面(这些小的数据集叫做哈希值,或者散列值)。 Hash table(散列表,也叫哈希表),是根据哈希值(Key value)而直接进行访问的数据结构。也就是说,它通过把哈希... ...
分类:
其他好文 时间:
2019-08-07 17:36:00
阅读次数:
115
理论概念 这玩意一直都是个好东西,但是我总觉得玄学的一批。今天借着专题学习的劲头,把Hash好好梳理一下。 定义/作用 哈希这东西应该都不陌生。将复杂的信息映射到一个容易维护的值域之内。那么Hash函数就有点类似于一个映射关系。通过这个函数来产生一个关键值(Key),通过关键值与值(value)的对 ...
分类:
其他好文 时间:
2019-07-15 23:59:46
阅读次数:
190
hashSet存储不同值的原理 hash函数 把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值,是一种压缩映射。 或者说一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。 把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固 ...
分类:
其他好文 时间:
2019-07-06 10:30:58
阅读次数:
202