1. 程式人生 > >使用ConcurrentHashMap作為快取工具類的總結

使用ConcurrentHashMap作為快取工具類的總結

使用雜湊表作為快取工具,可以有時候有效避免對資料庫的頻繁訪問,有助於效率和效能的提高

package com.test.lz;

import java.util.Date;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 資料快取類
 * 
 * @author zhe.liu
 *
 */
public class CacheMap {
	public static int DEFAULT_CACHE_MINUTE = 5;
	/**
	 * 資料快取map
	 */
	private static Map<String, Object> dataMap = new ConcurrentHashMap<String, Object>();
	/**
	 * 資料快取過期map
	 */
	private static Map<String, Date> dataExpireMap = new ConcurrentHashMap<String, Date>();

	/**
	 * 將一個key、value值放入記憶體快取,並設定過期分鐘數
	 * 
	 * @param key
	 * @param val
	 * @param expireMiute
	 */
	public static void put(String key, Object val, int expireMiute) {
		dataMap.put(key, val);
		dataExpireMap.put(key, DateUtil.addMinutes(new Date(), expireMiute));
	}

	/**
	 * 從快取中獲取一個key的資料(若過期返回null)
	 * 
	 * @param key
	 * @return
	 */
	public static Object get(String cacheKey) {
		Object obj = null;
		Date expireDate = CacheMap.dataExpireMap.get(cacheKey);
		if (expireDate != null && expireDate.compareTo(new Date()) > 0) {
			obj = CacheMap.dataMap.get(cacheKey);
		}
		return obj;
	}
}


相關推薦

使用ConcurrentHashMap作為快取工具總結

使用雜湊表作為快取工具,可以有時候有效避免對資料庫的頻繁訪問,有助於效率和效能的提高 package com.test.lz; import java.util.Date; import java.

Apache下的ArrayUtils工具總結

tostring empty length contains oem 數量 main nts int ArrayUtils中的方法: 1.add():將給定的數據添加到指定的數組中,返回一個新的數組。 2.addAll():合並兩個數組。 3.contains():檢查該數

提取jedis源碼的一致性hash代碼作為通用工具

final pub 導致 exce value 上大 放心 while sha 一致性Hash熱點 一致性Hash算法是來解決熱點問題,如果虛擬節點設置過小熱點問題仍舊存在。 關於一致性Hash算法的原理我就不說了,網上有很多人提供自己編寫的一致性Hash算法的代碼示例,我

快取工具

這是專案用用到快取工具類 import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.C

清除APP快取工具

這是專案中用到的“ 清除快取”功能的工具類 import android.content.Context; import android.os.Environment; import android.text.TextUtils; import java.io.File; imp

提取jedis原始碼的一致性hash程式碼作為通用工具

一致性Hash熱點 一致性Hash演算法是來解決熱點問題,如果虛擬節點設定過小熱點問題仍舊存在。 關於一致性Hash演算法的原理我就不說了,網上有很多人提供自己編寫的一致性Hash演算法的程式碼示例,我在跑網上的程式碼示例發現還是有熱點問題。為此我翻閱了Jedis的ShardedJedis類的原始碼把它的一致

Android清理快取工具

DataCleanUtil.java import android.content.Context; import android.os.Environment; import java.io.File; import java.math.BigDecimal; /

Android彈出Toast工具總結

 Android彈出Toast工具類總結,包括系統自帶的,也包括自定義的。   public class ToastUtil { public ToastUtil() { } public static Toast showShortToast(

Redis儲存快取工具簡單封裝

一、公共實體類 (1)User.java package cn.xiyou.entity; import java.io.Serializable; /** * User實體 * * @author XIOAHU * */ publi

小程式開發之常用的工具總結

寫之前先說一下抽取公共類注意問題 require 暫時不支援絕對路徑 一般情況下建立在utils檔案中 先說明如何抽取工具類 假設: (1)先建立公共工具類common.js 注:一般情況下建立在utils檔案 // common.js functio

快取工具 使用IO流寫入本地檔案

/** * Copyright (c) 2012-2013, Michael Yang 楊福海 (www.yangfuhai.com). * * Licensed under the Apache License, Version 2.0 (the "License")

Fresco磁碟記憶體快取 工具

1. 新增依賴,在AndroidManifest.xml清單檔案中配置: compile 'com.facebook.fresco:fresco:1.5.0' <application android:name=".util.BaseApplication"  

Android面試題(23)-圖片的三級快取工具

上一篇部落格已經把三級快取原理大致都講了,這篇部落格就僅僅貼一下封裝好的一個圖片三級快取工具類,程式碼內有註釋,僅僅小記一下:首先是MyBitmapUtils,它提供了一個display方法去供外界呼叫:/** * 圖片三級快取工具類 * Created by PDD o

Unity+NGUI打造網路圖片非同步載入與本地快取工具(一)

我們在移動端的開發中,非同步網路圖片載入用的非常的多,在unity當中雖然有AssetBundle的存在,一般是先載入好遊戲資源然後再進入場景,但是還有不少地方能夠用到非同步網路圖片的載入以及其快取機制。 我之前也寫過兩個版本的ios中的非同步網路圖片載入helper類,所

【java reflection】反射工具總結

這段時間公司搞封閉開發,做一個聯通總部的客服系統專案,是基於springboot的。在開發工程中遇到一個頁面datagrid資料排序的功能,因為有多個表的資料都要用到排序功能,於是我就寫了一個排序功能的公共實現類,方便大家使用。在寫實現類的過程中需要通過反射去呼

Android 清理資料/快取工具 CleanCacheUtil

/** * * 清除快取 * * * */ public class CleanCacheUtil {

常用高效 Java 工具總結

一、前言 在Java中,工具類定義了一組公共方法,這篇文章將介紹Java中使用最頻繁及最通用的Java工具類。以下工具類、方法按使用流行度排名,參考資料來源於Github上隨機選取的5萬個開源專案原始碼。 二、org.apache.commons.io.IOUtils closeQuietly:關閉一個I

JAVA使用JDK1.5提供的讀寫鎖實現高併發本地快取工具

package com.study; import java.util.LinkedHashMap; import jav

Redis作為快取實現工具

使用Redis作為快取物件,常用的儲存格式為字串,所以在儲存快取時,將物件轉為字串儲存.由於存的時候為字串,所以取出的也為json字串. 此工具類在設值時只需要將key與物件傳入即可 取值時只需要將key與要取的物件型別傳入即可 public class CacheUtilImpl im

9.9-全棧Java筆記:遍歷集合的N種方式總結&Collections工具

java遍歷集合的N種方式總結【示例1】遍歷List方法1,使用普通for循環for(int i=0;i<list.size();i++){ //list為集合的對象名 String temp = (String)list.get(i); System.out.println