上周跟一个做后端的老兄弟吃饭,他吐槽说前几天面试栽大了——面试官盯着 HashMap 不放,问“Hash冲突到底怎么解决?除了链表还有别的方式吗?JDK 1.8 里处理冲突的逻辑跟之前比有啥不一样?”他当时脑子一蒙,只记得链表俩字,后面的红黑树转换、哈希函数 ...
A100、B100、H100、GH200、GB200、NVLINK、NVSwitch、DGX、HGX、Quantum、Spectrum、BlueField、CUDA等等。这些名词看多了,就有点晕。搞不懂到底是什么,有什么关系。今天这篇文章,小枣君就给大家详细梳理一下这些名词概念,顺便普及一下相关的知识。 英伟达这几年很火。
我们首先可能会想到采用 % 取余的操作来实现。但是,重点来了:“取余(%)操作中如果除数是 2 的幂次则等价于与其除数减一的与(&)操作(也就是说 hash%length==hash&(length-1)的前提是 length 是 2 的 n 次方;)。” 并且 采用二进制位操作 & 相对于 % 能够提高运算效率 ...
经常有些面试官会问,是否了解过 HashMap 在多线程环境下使用时可能会发生死循环,导致服务器 cpu 100% 的线上故障? 关于这个问题,很多年前,在淘宝内网里就有很多的程序员发过这种帖子说一个CPU 被100%了,原因竟是多线程环境下使用 HashMap 造成的死循环 ...
基于Redis的Redisson的分布式映射结构的RMap Java对象实现了java.util.concurrent.ConcurrentMap接口和java.util.Map接口。与HashMap不同的是,RMap保持了元素的插入顺序。该对象的最大容量受Redis限制,最大元素数量是4 294 967 295个。 除了同步接口外,还提供了异步(Async)、反射 ...
在《疫苗:Java HashMap的死循环》中,我们看到,java.util.HashMap并不能直接应用于多线程环境。对于多线程环境中应用HashMap,主要有以下几种选择: 使用线程安全的java.util.Hashtable作为替代。 使用java.util.Collections.synchronizedMap方法,将已有的HashMap对象包装为线程安全的 ...
在淘宝内网里看到同事发了贴说了一个CPU被100%的线上故障,并且这个事发生了很多次,原因是在Java语言在并发情况下使用HashMap造成Race Condition,从而导致死循环。这个事情我4、5年前也经历过,本来觉得没什么好写的,因为Java的HashMap是非线程安全的,所以在 ...