摘要: tableSizeFor(int cap)方法返回不小于指定参数cap的最小2的整数次幂,具体是怎么实现的呢?看源码! /** * Returns a power of two size for the given target capacity. */ static final int table 阅读全文
posted @ 2019-07-23 10:27 SundayMoning 阅读(659) 评论(0) 推荐(0) 编辑
摘要: final Node<K,V>[] resize() { //创建一个Node数组用于存放table中的元素, Node<K,V>[] oldTab = table; //获取旧table的长度 int oldCap = (oldTab == null) ? 0 : oldTab.length; / 阅读全文
posted @ 2020-02-27 21:34 SundayMoning 阅读(147) 评论(0) 推荐(0) 编辑
摘要: 死信队列 消息传输过程中难免会产生一些无法及时处理的消息,这些暂时无法处理的消息有时候也是需要被保留下来的,于是这些无法被及时处理的消息就变成了死信。 既然需要保留这些死信,那么就需要一个容器来存储它们以便后续需要时将它们取出来进行处理,于是就有了死信队列。 在RabbitMQ中当一个消息变成死信后 阅读全文
posted @ 2020-02-27 21:32 SundayMoning 阅读(3151) 评论(0) 推荐(0) 编辑
摘要: HashMap的底层实现是一个Node类型的数组,也就是说使用put(key, value)方法的时候就把key和value根据hashcode值存在table数组相应的下标中,源码如下: Node是一个实现了Map.Entry的泛型类,源码如下: 2 HashMap的构造函数 HashMap共有四 阅读全文
posted @ 2019-07-23 10:40 SundayMoning 阅读(201) 评论(0) 推荐(0) 编辑
摘要: final Node[] resize() { //创建一个Node数组用于存放table中的元素, Node[] oldTab = table; //获取旧table的长度 int oldCap = (oldTab == null) ? 0 : oldTab.length; //获取旧的扩容阈值 ... 阅读全文
posted @ 2019-07-16 08:38 SundayMoning 阅读(708) 评论(0) 推荐(0) 编辑