在机缘巧合下,了解到了这么一个神奇的 16 进制数字0x5f3759df
,顺便记录一下
科学改变世界,数学改变科学
上回遇到的不讲道理的数字是0.75
,它出现在 Java HashMap 的源码中,含义是默认的负载因子。简单介绍一下这个值的含义:在 HashMap 中达到容量的 0.75 倍时(即容量为 16 时元素为 12 时)会对 HashMap 进行扩容,扩容的意义在于减少 hash 冲突,避免 HashMap 退化为链表而大大增加查询时间。至于这个值为什么是 0.75,有个很简单的解释:提高空间利用率和减少查询成本的折中,主要是泊松分布,0.75 的话碰撞最小
大约 5 分钟