change capacity

This commit is contained in:
Looly 2020-03-24 17:43:58 +08:00
parent 1497c430da
commit 2e9e174594
3 changed files with 11 additions and 15 deletions

View File

@ -10,6 +10,7 @@
* 【core 】 增加CityHash算法
* 【core 】 PageUtil支持setFirstPageNo自定义第一页的页码issue#I1CGNZ@Gitee
* 【http 】 UserAgentUtil增加Chromium内核的Edge浏览器支持issue#800@Github
* 【cache 】 修改FIFOCache中linkedHashMap的初始容量策略pr#801@Github
### Bug修复
* 【core 】 修复NumberWordFormatter拼写错误issue#799@Github

View File

@ -11,18 +11,17 @@ import java.util.LinkedHashMap;
* 优点简单快速 <br>
* 缺点不灵活不能保证最常用的对象总是被保留
* </p>
*
* @author Looly
*
* @param <K> 键类型
* @param <V> 值类型
* @author Looly
*/
public class FIFOCache<K, V> extends AbstractCache<K, V> {
private static final long serialVersionUID = 1L;
/**
* 构造默认对象不过期
*
*
* @param capacity 容量
*/
public FIFOCache(int capacity) {
@ -31,18 +30,14 @@ public class FIFOCache<K, V> extends AbstractCache<K, V> {
/**
* 构造
*
*
* @param capacity 容量
* @param timeout 过期时长
* @param timeout 过期时长
*/
public FIFOCache(int capacity, long timeout) {
if(Integer.MAX_VALUE == capacity) {
capacity -= 1;
}
this.capacity = capacity;
this.timeout = timeout;
cacheMap = new LinkedHashMap<>(capacity + 1, 1.0f, false);
cacheMap = new LinkedHashMap<>(Math.max(1 << 4, capacity >>> 7), 1.0f, false);
}
/**
@ -53,7 +48,7 @@ public class FIFOCache<K, V> extends AbstractCache<K, V> {
protected int pruneCache() {
int count = 0;
CacheObj<K, V> first = null;
// 清理过期对象并找出链表头部元素先入元素
Iterator<CacheObj<K, V>> values = cacheMap.values().iterator();
while (values.hasNext()) {

View File

@ -1,9 +1,9 @@
package cn.hutool.cache.impl;
import java.util.Iterator;
import cn.hutool.core.map.FixedLinkedHashMap;
import java.util.Iterator;
/**
* LRU (least recently used)最近最久未使用缓存<br>
* 根据使用时间来判定对象是否被持续缓存<br>
@ -37,12 +37,12 @@ public class LRUCache<K, V> extends AbstractCache<K, V> {
if(Integer.MAX_VALUE == capacity) {
capacity -= 1;
}
this.capacity = capacity;
this.timeout = timeout;
//链表key按照访问顺序排序调用get方法后会将这次访问的元素移至头部
cacheMap = new FixedLinkedHashMap<K, CacheObj<K, V>>(capacity);
cacheMap = new FixedLinkedHashMap<>(capacity);
}
// ---------------------------------------------------------------- prune