首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

所以我们也能知道,影响查找效率的因素主要有这几种: 散列函数是否可以将哈希表中的数据均匀地散列? 怎么处理冲突? 哈希表的加载因子怎么选择? 本文主要对后两个问题进行介绍。 解决冲突有什么方法?...开放定址法 Hi = (H(key) + di) MOD m,其中i=1,2,…,k(k<=m-1) H(key)为哈希函数,m为哈希表表长,di为增量序列,i为已发生冲突的次数。...那么为什么选择了0.75作为HashMap的加载因子呢?这个跟一个统计学里很重要的原理——泊松分布有关。 泊松分布是统计学和概率学常见的离散概率分布,适用于描述单位时间内随机事件发生的次数的概率分布。...在HashMap的源码中有这么一段注释: * Ideally, under random hashCodes, the frequency of * nodes in bins follows a Poisson...在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少扩容rehash操作次数,所以,一般在使用HashMap时建议根据预估值设置初始容量,以便减少扩容操作。

45310

面试细节:为什么 HashMap 默认加载因子非得是0.75?

所以我们也能知道,影响查找效率的因素主要有这几种: 散列函数是否可以将哈希表中的数据均匀地散列? 怎么处理冲突? 哈希表的加载因子怎么选择? 本文主要对后两个问题进行介绍。 解决冲突有什么方法?...,k(k<=m-1) H(key)为哈希函数,m为哈希表表长,di为增量序列,i为已发生冲突的次数。...泊松分布是统计学和概率学常见的离散概率分布,适用于描述单位时间内随机事件发生的次数的概率分布。有兴趣的读者可以看看维基百科或者阮一峰老师的这篇文章:[泊松分布和指数分布:10分钟教程]。 ?...在HashMap的源码中有这么一段注释: /* Ideally, under random hashCodes, the frequency of * nodes in bins follows...在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少扩容rehash操作次数,所以,一般在使用HashMap时建议根据预估值设置初始容量,以便减少扩容操作。

75040
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试难题:为什么HashMap的加载因子默认值是0.75呢?

    所以我们也能知道,影响查找效率的因素主要有这几种: 散列函数是否可以将哈希表中的数据均匀地散列? 怎么处理冲突? 哈希表的加载因子怎么选择? 本文主要对后两个问题进行介绍。 解决冲突有什么方法?...,k(k<=m-1) H(key)为哈希函数,m为哈希表表长,di为增量序列,i为已发生冲突的次数。...泊松分布是统计学和概率学常见的离散概率分布,适用于描述单位时间内随机事件发生的次数的概率分布。...在HashMap的源码中有这么一段注释: /* Ideally, under random hashCodes, the frequency of * nodes in bins follows...在设置初始容量时应该考虑到映射中所需的条目数及其加载因子,以便最大限度地减少扩容rehash操作次数,所以,一般在使用HashMap时建议根据预估值设置初始容量,以便减少扩容操作。

    1.1K40

    新特性解读 | MySQL 8.0.16 在组复制中启用成员自动重新加入

    随着 MySQL 8.0.16 的发布,我们为 MGR 添加了一些功能,以增强其高可用性。其中一个功能是能够在某些情况下启用已离开组的成员自动重新加入,而无需用户干预。...其中新成员需要在事务方面赶上组进度(是通过选择组内一个成员来将已处理的事务流式传输给他,在 MGR 中称为“捐赠”)。...为此 GCS 在每个成员中引入了一个故障检测器,用于分析组内交换的消息。如果它在一段时间内没有收到来自指定成员的消息,则故障检测器将对该成员产生“怀疑”,并认为该成员可能已经失效。...他们获取以下信息: 事件发生的线程ID(THREAD_ID) 活动名称(EVENT_NAME) 起止时间戳以及事件的总持续时间(TIMER_START,TIMER_END 和 TIMER_WAIT)...直到下一次重试的估计剩余时间 自动重新加入过程状态 可以通过过滤包含“auto-rejoin”字符串的活动事件来查找自动重新加入过程状态(即,是否正在进行): SELECT COUNT(*)

    1.3K20

    「PostgreSQL高级特性」PostgreSQL 数据库的近似算法

    公认的是,在大型分布式设置中,确切的非重复计数更难解决,因为它需要在节点之间进行大量数据转换。Citus确实支持不重复计数,但是在处理特别大的数据集时有时会很慢。...HyperLogLog的近似唯一性 在某些类别的应用程序中,例如网络分析,物联网(物联网)和广告,计算某事物发生的不同次数是一个共同的目标。...HyperLogLog是PostgreSQL数据类型扩展,它允许您获取原始数据并将其压缩为一段时间内存在的唯一身份值。 将数据保存到HLL数据类型的结果是,星期一的值将为25,而星期二的值将为20。...使用TopN查找重要事项 我们通常在Web分析,广告应用程序和安全性/日志事件应用程序中发现的另一种计数形式是希望知道已发生的最主要的操作或事件集。...这可能是您在Google Analytics(分析)中看到的首页视图,也可能是事件日志中发生的主要错误。 TopN利用基础JSONB数据类型存储其所有数据。

    1.7K30

    如何基于数据分析精准定位你的用户群?

    行为事件分析法主要用于研究某行为事件的发生对企业组织价值的影响以及影响程度。企业常常通过研究与事件发生关联的所有因素来挖掘用户行为事件背后的原因、交互影响等。...When:即事件发生的实际时间,应该记录精确到毫秒的事件发生时间。 Where:即事件发生的地点,可以通过 IP 来解析用户所在省市;也可以根据 GPS 定位方式获取地理位置信息。...新用户数:对于电商来说,新用户一般定义为未注册或者已注册,但还未进行首单支付的用户。一个新用户到老用户的转变过程可以用四象空间来划分:次数、金额、时间、品类。 2....用户留存率:留存指的就是“有多少用户留下来了”。用户在某段时间内开始使用应用的用户,经过一段时间后,仍然继续使用的用户,被认作是留存用户。...用户回访率:用户在某段时间内开始使用应用,经过一段时间后,继续登陆使用的用户,被认作是回访用户。

    1.2K20

    通过实例理解如何选择正确的概率分布

    泊松分布,测量给定时间内发生给定事件数的概率,例如每小时图书馆借书的计数。 几何分布,确定在第一次成功之前一定数量的试验发生的概率。 二项分布 二项分布可能是所有离散分布中最广为人知的。...超几何分布和二项分布都描述了一个事件在固定次数的试验中发生的次数。二项分布每次试验的概率都是一样的。相比之下,在超几何分布中,每次试验都会改变每次后续试验的概率,因为没有替代。...为了让公司接受这批货,我们不能有任何有缺陷的机器。所有不合格机的选择方法为6C5, 0个不合格机的选择方法为4C0。 泊松分布 泊松分布可以帮助我们预测特定事件在一段时间内发生的概率。...泊松分布的主要特征: 在不重叠间隔中发生的变化数量是独立的。 在足够短的时间间隔h内发生一次变化的概率大约为λh,,其中λ>0。 在足够短的时间内发生两次或两次以上变化的概率本质上是零。...由于n=1000是一个很大的数,我们可以使用泊松近似二项分布来解决这个问题,其中λ =pn = 0.005 * 1000 =5。

    1.3K30

    为什么服务器的宕机一般都发生在凌晨使用率最低的时候?

    都是在用户使用少的时候开始折腾,折腾的次数多也就容易出现服务器问题。...由于做的是物联网设备,在工作中遇到的宕机主要有这么几种情况,对大量数据的操作导致CPU占比在一段时间内骤增从而导致数据接收模块出问题,导致系统监控出现问题,很多设备信息检测不到了。 ?...4,一些没有必要的误操作,很多时候是因为程序员或者运维人员的误操作大致服务器大面积的宕机,这种事件在很多云服务提供商身上都发生过,根本层面还是管理问题。...后台管理的任何细节都有可能 服务器宕机查找问题的几个线索: 1.看看服务器是不是存在内存泄漏问题,有些时候重启机器开始还能正常运行弄了一段时间之后就会变得非常缓慢,十有八九都是内存的问题 2.是否有黑客入侵造成...服务器宕机一旦发生就会引起用户的无数的投诉,无论在什么情况下稳定永远是第一位,现在大的功能升级除非已经百分百验证成功,否则引起的后果不堪设想。

    1.6K40

    概念题知识点总结

    1.操作系统的的4个基本特点 并发性(宏观上同时进行,微观上交替): 两个或两个以上的事件或活动在同一时间间隔内发生。...2.OS的三种基本类型及其主要目标 批处理操作系统(有效):  提高资源利用率 分时操作系统(方便用户):实现人机交互 实时操作系统(实时性): 能对特定的输入作出实时的响应,并在规定的时间内完成对该事件的处理...就绪态: 一个进程已经具备运行条件,但由于无CPU暂时不能运行的状态。 等待态(阻塞态 睡眠态): 进程等待因某种事件的发生而暂时不能运行的状态(即使CPU空闲也无法运行)。...有限等待:任何进入互斥区的要求在有限的时间内得到满足。 让权等待:处于等待状态的进程应放弃占有CPU,以使其他进程有机会得到CPU的使用权。...访问位:记录该页在一段时间内被访问的次数。 修改位:表示该页面在调入内存后是否被修改过。 外存地址:用于指出该页在内存上的地址。

    66500

    从Exchange 谈企业邮件系统运维

    背景介绍:实际邮件事故案例企业邮件系统缺乏运维以上事件在众多企业经常发生,与邮件系统运维工作不完善有直接关系。...经嘉为走访客户后得知,大约 90% 的Exchange管理员在灾难发生之前很少进行规范性维护……为什么?...,如果存在:该用户多IP登录的数量多少,是否合理大概率每个用户应该不超3个2、密码暴力破解监测登录失败监测:过往一段时间内,是否存在用户多次登录失败的情况,如果存在:某一个用户输错用户名、密码是合理的次数过多...,可能存在其他用户在尝试暴力破解密码3、账户锁定监测被锁定的用户:统计过往一段时间内,登录失败被锁定的用户:某一个用户输错用户名、密码是合理的次数过多,可能存在其他用户在尝试暴力破解密码4、邮箱创建/禁用审计新建邮箱...、收件人、发送时间等属性进行邮件批量筛选可将筛选出来的邮件进行批量移动如需对邮件执行批量删除,工具会给出批量删除的官方命令,提醒谨慎操作6、邮箱活跃度分析邮箱登录活跃度:展示过往一段时间内,邮箱登录次数最少的用户邮箱发送活跃度

    27710

    C++ 之 perf+火焰图分析与调试

    性能事件是指在处理器或操作系统中发生的,可能影响到程序性能的硬件事件或软件事件 1.2 Perf的安装 ubuntu 18.04: sudo apt install linux-tools-common...也称任务执行时间context-switches是系统发生上下文切换的次数CPU-migrations是任务从一个处理器迁往另外一个处理器的次数page-faults是内核发生缺页的次数cycles是程序消耗的处理器周期数...event发生的次数,perf record在此基础之上可以记录event发生时详细的数据(比如IP、堆栈等等)。...perf record可以记录一段时间内系统/进程的性能时间,具体参数为: -e:选择性能事件 -p:待分析进程的id -t:待分析线程的id -a:分析整个系统的性能 -C:只采集指定CPU...触发事件的进程名)-S:只考虑指定符号-U:只显示已解析的符号-g[type,min,order]:显示调用关系,具体等同于perf top命令中的-g-c:只显示指定cpu采样信息-M:以指定汇编指令风格显示

    14820

    从Exchange谈企业邮件系统运维

    背景介绍:实际邮件事故案例案例1案例2案例3企业邮件系统缺乏运维以上事件在众多企业经常发生,与邮件系统运维工作不完善有直接关系。...经嘉为走访客户后得知,大约 90% 的Exchange管理员在灾难发生之前很少进行规范性维护……为什么?...,如果存在:该用户多IP登录的数量多少,是否合理大概率每个用户应该不超3个2、密码暴力破解监测登录失败监测:过往一段时间内,是否存在用户多次登录失败的情况,如果存在:某一个用户输错用户名、密码是合理的次数过多...,可能存在其他用户在尝试暴力破解密码3、账户锁定监测被锁定的用户:统计过往一段时间内,登录失败被锁定的用户:某一个用户输错用户名、密码是合理的次数过多,可能存在其他用户在尝试暴力破解密码4、邮箱创建/禁用审计新建邮箱...、收件人、发送时间等属性进行邮件批量筛选可将筛选出来的邮件进行批量移动如需对邮件执行批量删除,工具会给出批量删除的官方命令,提醒谨慎操作6、邮箱活跃度分析邮箱登录活跃度:展示过往一段时间内,邮箱登录次数最少的用户邮箱发送活跃度

    6410

    IO多路转接之select

    :则表示select()没有timeout,select将一直被阻塞,直到某个文件描述符上发生了事件; 0:仅检测描述符集合的状态,然后立即返回,并不等待外部事件的发生。...,如果在这个时间内,需要监视的描述符没有事件发生则函数返回,返回值为0。...函数返回值: 执行成功则返回文件描述词状态已改变的个数 如果返回0代表在描述词状态改变前已超过timeout时间,没有返回 当有错误发生时则返回-1,错误原因存于errno,此时参数readfds,writefds...注意:没有事件发生的fd=5被清空。...select函数的缺点 从函数原型看,只能监听可读、可写、异常三种事件; 内核程序和应用程序都需要才有轮询法查找就绪文件描述符,时间复杂度为O(n); 内核程序是直接修改传入的结构体中的内容,所以下一次调用时又必须重新设置结构体

    84220

    断路器模式

    这些故障通常会在短时间内自行更正,而且,应该会准备一个可靠的云应用程序,通过重试模式这样的策略来处理它们。 但是,也可能遇到由于意外事件而导致的故障,且需要更长的时间来进行修复。...请注意,设置较短的超时可能有助于解决此问题,但为避免操作在大多数时间内失败,超时不应太短(即使对服务的请求最终会成功)。 解决方案 Michael Nygard 在 Release It!(发布吧!)...超时计时器的目的是给系统一段时间来解决导致失败的问题,并允许应用程序再次尝试执行操作。 打开:来自应用程序的请求立即失败,并向应用程序返回异常。...这有助于防止断路器在遇到偶然失败时进入打开状态。仅当在指定间隔期间内发生指定数量的失败时,才会达到将断路器跳闸到打开状态的故障阈值。 半开状态使用的计数器记录成功调用操作的次数。...断路器可检查发生的异常的类型,并根据这些异常的性质来调整其策略。 例如,由于服务完全不可用,相比失败次数,有可能需要更多数量的超时异常才能使断路器跳闸至打开状态。 日志记录。

    1.3K40

    Redis知识点总结归纳

    跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。...分布式 Memcached 不支持分布式,只能通过在客户端使用一致性哈希来实现分布式存储,这种方式在存储和查询时都需要先在客户端计算一次数据所在的节点。...时间事件又分为: 定时事件:是让一段程序在指定的时间之内执行一次; 周期性事件:是让一段程序每隔指定时间就执行一次。...事件的调度与执行 服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能一直监听,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。...点赞功能 当有用户为一篇文章点赞时,除了要对该文章的 votes 字段进行加 1 操作,还必须记录该用户已经对该文章进行了点赞,防止用户点赞次数超过 1。可以建立文章的已投票用户集合来进行记录。

    37020

    Sentry 企业级数据安全解决方案 - Relay 监控 & 指标收集

    event_processing.process (Timer) 在事件上运行事件处理器以进行标准化所花费的时间(以毫秒为单位)。事件处理发生在过滤之前。...processing.produce.error (Counter) 在信封已排队发送到 Kafka 后发生的生产者错误数。...project_cache.hit (Counter) 从缓存中查找项目的次数。 缓存可能包含过时或过期的项目状态。在这种情况下,即使在缓存命中后,项目状态也会更新。...project_cache.miss (Counter) 项目查找失败的次数。 立即创建缓存条目,并从上游请求项目状态。...project_state.get (Counter) 从缓存中查找项目状态的次数。 这包括对缓存项目和新项目的查找。作为其中的一部分,会触发对过时或过期项目缓存的更新。

    1.4K40

    函数的防抖与节流

    前言 在开发中,我们经常会遇到需要频繁触发某个函数的情况,比如: 监听滚动条的变化,当滚动条的位置发生变化时,需要执行某个函数 监听鼠标的移动,当鼠标的位置发生变化时,需要执行某个函数 监听键盘的按键...,浏览器奔溃,页面空白等情况 而解决这一问题的,正是函数节流与函数防抖 函数节流 定义: 节约(减少)触发事件处理函数的频率,连续每隔一定的时间触发执行的函数,它是优化高频率执行一段js代码的一种手段...特点: 不管事件触发有多频繁,都会保证在规定的间隔时间内真正的执行一次事件处理函数,只会让一个函数在某个时间窗口内执行一次,若在时间窗口内再次触发,则重新计算时间 应用场景: 常用于鼠标连续多次点击click...,必然会造成多次数据的请求,服务器的压力,这样代码的性能是非常低效的,影响性能,降低这种频繁操作的一个重要的手段,就是降低频率,通过节流控制,也就是让核心功能代码在一定的时间,隔多长时间内执行一次 节流就是保证一段时间内只执行一次核心代码...例如:表单多次提交,推荐使用防抖 换句话说,也就是当连续触发事件时并没有执行事件处理函数,只有在某一阶段连续触发的最后一次才执行,它遵循两个条件 必须要等待一段时间 上一次触发的时间间隔要大于设定值才执行

    25920

    面试进阶必问的Redis,看这篇就够了!

    跳跃表是基于多指针有序链表实现的,可以看成多个有序链表。 ? 在查找时,从上层指针开始查找,找到对应的区间之后再到下一层去查找。下图演示了查找 22 的过程。 ?...分布式 Memcached 不支持分布式,只能通过在客户端使用一致性哈希来实现分布式存储,这种方式在存储和查询时都需要先在客户端计算一次数据所在的节点。...时间事件又分为: 定时事件:是让一段程序在指定的时间之内执行一次; 周期性事件:是让一段程序每隔指定时间就执行一次。...事件的调度与执行 服务器需要不断监听文件事件的套接字才能得到待处理的文件事件,但是不能一直监听,否则时间事件无法在规定的时间内执行,因此监听时间应该根据距离现在最近的时间事件来决定。...点赞功能 当有用户为一篇文章点赞时,除了要对该文章的 votes 字段进行加 1 操作,还必须记录该用户已经对该文章进行了点赞,防止用户点赞次数超过 1。可以建立文章的已投票用户集合来进行记录。

    1.1K10
    领券