当前位置:首页 » 文件管理 » map缓存

map缓存

发布时间: 2022-02-10 16:26:57

㈠ 为什么要用 redis 而不用 map/guava 做缓存

因为前置款存的话要好一点,而且实用性要高一点。

㈡ hashTable 和 hashMap 作缓存,实现的两种单例的区别

hashMap和 hashTable区别主要是hashTable对所有的读取和修操作改加了同步锁,你的那个例子如果没有其他入口可以修改managers的情况下 hashMap和 hashTable是一样的,否则会有并发问题, ConcurrentHashMap主要是用了分段锁,并发使用性能好点,可以看下源代码就知道了

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

}

㈣ java下载图片出错使用map集合缓存地址怎么写

理论上,jvm会定期帮你回收垃圾,释放内存。 如果短时间大量调用该方法,建议用System.gc(),强制回收,jvm会较快响应(非及时)。
另外, refreshData 需要谨慎,不用的对象尽量赋值null,方便回收

㈤ android手机的google map的缓存存在哪里啊

android/下面的一个目录

㈥ 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进行互操作,这取决于其线程安全,而与其同步细节无关。

㈦ google map 怎么缓存到本地

你好
很高兴为您解答
这个好像实现不了的
满意采纳下

㈧ 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方法
*/
}

㈨ 鹰大的ROM里面的Googlemap缓存存在哪能否读离线地图文件

2.2的谷歌地图、你看过之后会自动保存的、、、你连WIFI接着狂看就行了、、、
查看原帖>>

热点内容
怎么在多玩上传图片 发布:2024-10-24 18:12:34 浏览:752
云动加密码 发布:2024-10-24 18:04:31 浏览:130
androidstudio搭建 发布:2024-10-24 17:44:41 浏览:367
mc启动器源码 发布:2024-10-24 17:44:38 浏览:186
服务器的lp是什么意思 发布:2024-10-24 17:41:13 浏览:205
cjs脚本 发布:2024-10-24 17:35:26 浏览:33
阿里云服务器ip绑定域名 发布:2024-10-24 17:33:15 浏览:535
android刷新布局 发布:2024-10-24 17:33:12 浏览:72
websocket数据加密 发布:2024-10-24 17:31:49 浏览:712
年薪的算法 发布:2024-10-24 17:22:36 浏览:296