Fastjson中:
public final boolean put(K key, V value) {
final int hash = System.identityHashCode(key);
final int bucket = hash & indexMask; for (Entry<K, V> entry = buckets[bucket]; entry != null; entry = entry.next) {
if (key == entry.key) {
return true;
}
} Entry<K, V> entry = new Entry<K, V>(key, value, hash, buckets[bucket]);
buckets[bucket] = entry; // 并发是处理时会可能导致缓存丢失,但不影响正确性 return false;
}这段代码中的indexMask 默认为 1024 -1 ,为什么会选择1023这个值呐??我用identityHashMap put值然后get值 他最大储存到 127,麻烦大神帮忙解决一下
在此谢过啦!!!
public final boolean put(K key, V value) {
final int hash = System.identityHashCode(key);
final int bucket = hash & indexMask; for (Entry<K, V> entry = buckets[bucket]; entry != null; entry = entry.next) {
if (key == entry.key) {
return true;
}
} Entry<K, V> entry = new Entry<K, V>(key, value, hash, buckets[bucket]);
buckets[bucket] = entry; // 并发是处理时会可能导致缓存丢失,但不影响正确性 return false;
}这段代码中的indexMask 默认为 1024 -1 ,为什么会选择1023这个值呐??我用identityHashMap put值然后get值 他最大储存到 127,麻烦大神帮忙解决一下
在此谢过啦!!!
我用identityHashMap put值然后get值 他最大储存到 127,这个没听懂
不好意思,这两天有事,一直没有看帖子; 哦,也对。可能就是十个1 选择的。
我说的那个 identityHashMap put值 然后get值 最大储存到 127,这个的意思就是说:
IdentityHashMap<Integer, Integer> aa = new IdentityHashMap<Integer, Integer>();
for (int i = 0 ; i< 1023; i++) {
aa.put(i, i);
}
for (int i = 0; i< 1023; i++) {
System.out.println(aa.get(i));
}这段代码计算出来的结果为:
....
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
null
null
null
null
null
null
null
null
.....