HashMap全解析 编程技术

HashMap全解析

HashMap是键值对的集合。为什么要写它呢? 首先是因为HashMap日常使用比较多,并且面试中是大概率被问到的面试题。 所以我们对它的设计和源码来做一个分析。 准备的技术点 单链表、双链表、红黑树、二叉搜索树,hash 单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(...
阅读全文
面试官:为什么 HashMap 的加载因子是0.75? Java

面试官:为什么 HashMap 的加载因子是0.75?

来源:http://39sd.cn/0DE1B 有很多东西之前在学的时候没怎么注意,笔者也是在重温HashMap的时候发现有很多可以去细究的问题,最终是会回归于数学的,如HashMap的加载因子为什么是0.75? 本文主要对以下内容进行介绍: 为什么HashMap需要加载因子? 解决冲突有什么方法? 为什么加载因子一定是0...
阅读全文
jvm内部缓存选型?一篇文章为你解答疑惑 Java

jvm内部缓存选型?一篇文章为你解答疑惑

jvm内部缓存有哪些 原生Java 简单的在HashMap的链式法增加新的引用形成一个链表,即是一个HashMap又是一个链表,这样输出即有序,也可以根据访问来动态调整顺序,达到FIFO或者LRU的特点。 使用ConcurrentHashMap作为缓存,没有淘汰功能或者手动淘汰。但是寻找效率较高,而且线程安全 可以明显看出这个存在的问题,线程不安全,需要额外加锁,功能结构单一,没有...
阅读全文
HashMap不得不知道的那些事儿 编程技术

HashMap不得不知道的那些事儿

主要是根据Hashmap的源码来近距离了解庐山真面目; 为什么要写,因为面试经常问啊,而且9%的程序员都知道也用过;而且它涉及的知识远远不止put和get那么简单,有必要知晓,也有利于对数据进行灵活的存储引用; 源码 jdk 1.8 2、知识铺垫 涉及知识点:hash算法,单链表、双链表、红黑树、二叉搜索树 2.1 单链表 单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线...
阅读全文
阿里P7岗位面试,面试官问我:为什么HashMap底层树化标准的元素个数是8 编程技术

阿里P7岗位面试,面试官问我:为什么HashMap底层树化标准的元素个数是8

前言 先声明一下,本文有点标题党了,像我这样的菜鸡何德何能去面试阿里的P7岗啊,不过,这确实是阿里p7级岗位的面试题,当然,参加面试的人不是我,而是我部门的一个大佬。他把自己的面试经验分享给了我,也让我间接体会下阿里级别的面试难度,这样算起来,我也勉强算是经历面试过阿里P7的岗位的人吧,顿时感觉信心暴涨。 一般的面试题 对于HashMap,我们再熟悉不过了,日常开...
阅读全文
计时攻击 Time Attacks Java

计时攻击 Time Attacks

本文来自读者“程序猿石头”的投稿文章《 这 10 行比较字符串相等的代码给我整懵了,不信你也来看看 》,原文写的很好,但不够直接了当,信息密度不够高,所以我对原文进行大量的删减、裁剪、改写和添加,主要删除了一些没有信息的段落,主要加入了如何实施计时攻击相关的其它内容,让这篇文章中的知识更系统一些,并且还指出了其它的一些问题。所以,我把标题也改成了《计时攻击》。 另类的字符串比较 在 J...
阅读全文
一致性哈希的分析与实现 编程技术

一致性哈希的分析与实现

哈希函数,想必大家都不陌生。通过哈希函数我们可以将数据映射成一个数字(哈希值),然后可用于将数据打乱。例如,在HashMap中则是通过哈希函数使得每个桶中的数据尽量均匀。那一致性哈希又是什么?它是用于解决什么问题?本文将从普通的哈希函数说起,看看普通哈希函数存在的问题,然后再看一致性哈希是如何解决,一步步进行分析,并结合代码实现来讲解。 首先,设定这样一个场景,我们每天有1千万条业务数据,还有...
阅读全文
手撕系列之HashMap源码 编程技术

手撕系列之HashMap源码

哈希、散列、杂凑 本质上,把任意长度的输入,通过算法,变换成固定长度的输出 是一种压缩 二、hashcode Object类提供的方法,返回的是对象的内存地址转化为整数的结果 三、HashMap(1.8版本) 键值对的数据存储 数据结构:数组 + 链表 + 红黑树 HashMap map = new HashMap(); map.put("小飘",20); 1、m...
阅读全文
要想数组用的 6,怎能不懂 java.util.Arrays 编程技术

要想数组用的 6,怎能不懂 java.util.Arrays

java.util.Arrays 类就是为数组而生的专用工具类,基本上常见的对数组的操作,Arrays 类都考虑到了,这让我由衷地觉得,是时候给该类的作者 Josh Bloch、Neal Gafter、John Rose 点个赞了。 (我是怎么知道作者名的?看源码就可以,小伙伴们,装逼吧) Arrays 都可以干嘛呢?常见的有: 创建数组 ...
阅读全文
多核多处理器架构软件设计 软件架构

多核多处理器架构软件设计

编辑推荐: 本文主要本文简要介绍了多核多线程环境的特性,对软件设计决策的影响以及些重要考虑事项和技巧。 本文来自于IBM,由火龙果软件Anna编辑、推荐。 简介 计算硬件正在快速蓬勃发展。在时钟速度呈平稳状态的同时,晶体管密度在不断增长。处理器制造商希望通过让每个芯片拥有多个核和硬件线程来提高多处理能力。例如,IBM POWER7...
阅读全文
Loading...