❶ concurrenthashmap怎樣解決緩存
類HASHSET所有已實現的介面:Serializable,Cloneable,Iterable,Collection,Set此類實現Set介面,由哈希表(實際上是一個HashMap實例)支持。它不保證set的迭代順序;特別是它不保證該順序搜索恆久不變。此類允許使用null元素。此類為基本操作提供了穩定性能,這些基本操作包括add、remove、contains和size,假定哈希函數將這些元素正確地分布在桶中。對此set進行迭代所需的時間與HashSet實例的大小(元素的數量)和底層HashMap實例(桶的數量)的「容量」的和成比例。因此,如果迭代性能很重要,則不要將初始容量設置得太高(或將載入因子設置得太低)。注意,此實現不是同步的。如果多個線程同時訪問一個哈希set,而其中至少一個線程修改了該set,那麼它必須保持外部同步。這通常是通過對自然封裝該set的對象執行同步操作來完成的。如果不存在這樣的對象,則應該使用Collections.synchronizedSet方法來「包裝」set。最好在創建時完成這一操作,以防止對該set進行意外的不同步訪問:Sets=Collections.synchronizedSet(newHashSet());類HASHMAP所有已實現的介面:Serializable,Cloneable,Map基於哈希表的Map介面的實現。此實現提供所有可選的映射操作,並允許使用null值和null鍵。(除了非同步和允許使用null之外,HashMap類與Hashtable大致相同。)此類不保證映射的順序,特別是它不保證該順序恆久不變。類CONCURRENTHASHMAP所有已實現的介面:Serializable,ConcurrentMap,Map支持獲取的完全並發和更新的所期望可調整並發的哈希表。此類遵守與Hashtable相同的功能規范,並且包括對應於Hashtable的每個方法的方法版本。不過,盡管所有操作都是線程安全的,但獲取操作不必鎖定,並且不支持以某種防止所有訪問的方式鎖定整個表。此類可以通過程序完全與Hashtable進行互操作,這取決於其線程安全,而與其同步細節無關。
❷ java map可以放多少數據
map由key value鍵值對組成,具體放多少數據和你的伺服器運行時的內存有關系,同時也和你代碼中及時清理無效緩存有關系。
一般編寫代碼中不會去考慮放多少數據問題,除非你數據量超級大對內存要求比較高。這個時候需要對代碼和伺服器進行優化
❸ 鷹大的ROM裡面的Googlemap緩存存在哪能否讀離線地圖文件
2.2的谷歌地圖、你看過之後會自動保存的、、、你連WIFI接著狂看就行了、、、
查看原帖>>
❹ java怎麼實現map 緩存技術
/**
*緩存池
*@authorxiaoquan
*@create2015年3月13日上午10:32:13
*@see
*/
publicclassCachePool{
;//緩存池唯一實例
privatestaticMap<String,Object>cacheItems;//緩存Map
privateCachePool(){
cacheItems=newHashMap<String,Object>();
}
/**
*得到唯一實例
*@return
*/
(){
if(instance==null){
instance=newCachePool();
}
returninstance;
}
/**
*清除所有Item緩存
*/
(){
cacheItems.clear();
}
/**
*獲取緩存實體
*@paramname
*@return
*/
(Stringname){
if(!cacheItems.containsKey(name)){
returnnull;
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
if(cacheItem.isExpired()){
returnnull;
}
returncacheItem.getEntity();
}
/**
*存放緩存信息
*@paramname
*@paramobj
*@paramexpires
*/
(Stringname,Objectobj,longexpires){
if(!cacheItems.containsKey(name)){
cacheItems.put(name,newCacheItem(obj,expires));
}
CacheItemcacheItem=(CacheItem)cacheItems.get(name);
cacheItem.setCreateTime(newDate());
cacheItem.setEntity(obj);
cacheItem.setExpireTime(expires);
}
(Stringname,Objectobj){
putCacheItem(name,obj,-1);
}
/**
*移除緩存數據
*@paramname
*/
(Stringname){
if(!cacheItems.containsKey(name)){
return;
}
cacheItems.remove(name);
}
/**
*獲取緩存數據的數量
*@return
*/
publicintgetSize(){
returncacheItems.size();
}
}
publicclassCacheItem{
privateDatecreateTime=newDate();//創建緩存的時間
privatelongexpireTime=1;//緩存期滿的時間
privateObjectentity;//緩存的實體
publicCacheItem(Objectobj,longexpires){
this.entity=obj;
this.expireTime=expires;
}
publicbooleanisExpired(){
return(expireTime!=-1&&newDate().getTime()-createTime.getTime()>expireTime);
}
/**
*省略getter、setter方法
*/
}
❺ java中怎麼樣將方法中的map內數據保存以便在下次調用時繼續使用
你可以把這個map定義為類成員,如果是通過靜態方法向map裡面加東西,那就定義為靜態成員。總之,定義為方法內的局部變數是肯定不行的,因為它的作用域是方法內,執行一次方法後,這個map變數的生命周期就到了,下次再調用的時候,是產生一個新的map。(java不像c,c++,沒有局部靜態變數)
❻ java jdis 可以緩存map 嗎
緩存是Java中主要的內容,主要目的是緩解項目訪問資料庫的壓力以及提升訪問數據的效率,以下是通過Map實現java緩存的功能,並沒有用cache相關框架。
一、緩存管理類 CacheMgr.java
[java] view plain
package cache.com;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* 緩存管理類
* @author Administrator
*
*/
public class CacheMgr {
private static Map cacheMap = new HashMap();
private static Map cacheConfMap = new HashMap();
private static CacheMgr cm = null;
//構造方法
private CacheMgr(){
}
public static CacheMgr getInstance(){
if(cm==null){
cm = new CacheMgr();
Thread t = new ClearCache();
t.start();
}
return cm;
}
/**
* 增加緩存
* @param key
* @param value
* @param ccm 緩存對象
* @return
*/
public boolean addCache(Object key,Object value,CacheConfModel ccm){
System.out.println("開始增加緩存-------------");
boolean flag = false;
try {
cacheMap.put(key, value);
cacheConfMap.put(key, ccm);
System.out.println("增加緩存結束-------------");
System.out.println("now addcache=="+cacheMap.size());
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 獲取緩存實體
*/
public Object getValue(String key){
Object ob=cacheMap.get(key);
if(ob!=null){
return ob;
}else{
return null;
}
}
/**
* 獲取緩存數據的數量
* @return
*/
public int getSize(){
return cacheMap.size();
}
/**
* 刪除緩存
* @param key
* @return
*/
public boolean removeCache(Object key){
boolean flag=false;
try {
cacheMap.remove(key);
cacheConfMap.remove(key);
flag=true;
} catch (Exception e) {
e.printStackTrace();
}
return flag;
}
/**
* 清除緩存的類
* 繼承Thread線程類
*/
private static class ClearCache extends Thread{
public void run(){
while(true){
Set tempSet = new HashSet();
Set set = cacheConfMap.keySet();
Iterator it = set.iterator();
while(it.hasNext()){
Object key = it.next();
CacheConfModel ccm = (CacheConfModel)cacheConfMap.get(key);
//比較是否需要清除
if(!ccm.isForever()){
if((new Date().getTime()-ccm.getBeginTime())>= ccm.getDurableTime()*60*1000){
//可以清除,先記錄下來
tempSet.add(key);
}
}
}
//真正清除
Iterator tempIt = tempSet.iterator();
while(tempIt.hasNext()){
Object key = tempIt.next();
cacheMap.remove(key);
cacheConfMap.remove(key);
}
System.out.println("now thread================>"+cacheMap.size());
//休息
try {
Thread.sleep(60*1000L);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
二、緩存屬性類 CacheConfModel.java
[java] view plain
package cache.com;
/**
* 緩存屬性類
* @author Administrator
*
*/
public class CacheConfModel implements java.io.Serializable{
private long beginTime;//緩存開始時間
private boolean isForever = false;//是否持久
private int rableTime;//持續時間
public long getBeginTime() {
return beginTime;
}
public void setBeginTime(long beginTime) {
this.beginTime = beginTime;
}
public boolean isForever() {
return isForever;
}
public void setForever(boolean isForever) {
this.isForever = isForever;
}
public int getDurableTime() {
return rableTime;
}
public void setDurableTime(int rableTime) {
this.rableTime = rableTime;
}
}
❼ hashTable 和 hashMap 作緩存,實現的兩種單例的區別
hashMap和 hashTable區別主要是hashTable對所有的讀取和修操作改加了同步鎖,你的那個例子如果沒有其他入口可以修改managers的情況下 hashMap和 hashTable是一樣的,否則會有並發問題, ConcurrentHashMap主要是用了分段鎖,並發使用性能好點,可以看下源代碼就知道了
❽ 【求助】Map輸出的臨時數據在本機的什麼位置
1.jpg
內存溢出
跟
maprece的內存有關系,跟文件緩存沒有關系。中間是磁碟操作,跟內存沒有關系。
每個Job在運行時是散布在TaskTracker上,由不同的JVM來執行。所以這個問題歸根結底就是想獲取每個運行task的JVM對資源的消費情況。
詳細參考
計算Job運行時的CPU與內存平均利用率(
MapRece
)
❾ java下載圖片出錯使用map集合緩存地址怎麼寫
理論上,jvm會定期幫你回收垃圾,釋放內存。 如果短時間大量調用該方法,建議用System.gc(),強制回收,jvm會較快響應(非及時)。
另外, refreshData 需要謹慎,不用的對象盡量賦值null,方便回收
❿ google map 怎麼緩存到本地
你好
很高興為您解答
這個好像實現不了的
滿意採納下