package com.gss.util;
import java.util.*;
/**
* 缓存验证码工具类
*/
public class CacheHashMap {
// 设置过期时间
private static final Long timeout = 100 * 60L;
// 创建一个Map用来保存数据
private static Map<String, List> cache = new HashMap<>();
// 设置list中的索引 0 表示数据索引
private static final Integer DATA_INDEX = 0;
// 设置list中的索引 1 表示保存的时间戳索引
private static final Integer TIME_INDEX = 1;
// 创建一个静态的Map用来保存
private static CacheHashMap cacheHashMap;
// 构造方法私有化不能创建对象
private CacheHashMap() {
}
/**
* 用来清理一些,用户没有用过的验证码。可以半小时来清理一次。
*/
public static void clearData() {
for (String key : cache.keySet()) {
List list = cache.get(key);
Long settime = (Long) list.get(TIME_INDEX);
// 获取当前时间戳
long nowtime = System.currentTimeMillis();
if (nowtime - settime > timeout) {
cache.remove(key);
}
}
}
/**
* @param code 验证码
* @param key 储存数据的key
* @return
*/
// 储存数据
public static void putData(String key, String code) {
List list = new ArrayList();
list.add(code);
list.add(System.currentTimeMillis());
cache.put(key, list);
}
/**
* @param key 取出数据的key
* @return 返回数据值 null为不存在。
*/
// 取出数据
public static String getData(String key) {
List list = cache.get(key);
Object o = list.get(DATA_INDEX);
Long settime = (Long) list.get(TIME_INDEX);
// 获取当前时间戳
long nowtime = System.currentTimeMillis();
if (nowtime - settime > timeout) {
cache.remove(key);
return null;
}
cache.remove(key);
return (String) o;
}
}