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; }}