本地缓存
来源:互联网 发布:手机服务器端口查询 编辑:程序博客网 时间:2024/05/01 22:50
import java.util.ArrayList;import java.util.HashMap;public final class Demo {private long ID=0;private HashMap<String,String> nameUrlMap;private HashMap<String,String> urlNameMap;private HashMap<String,Long> urlTimeMap;private HashMap<Long,String> timeUrlMap;private HashMap<String,Integer> urlSizeMap;private ArrayList<Long> timeList;private int size;private int useSize;private String formatList;private static String[] ZEROS={"","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000"};private static int NAMELEN=16;public Demo(){this.ID=0;this.useSize=0;this.size=10*1024*1024;this.formatList="jpg/jpeg/png/gif/bmp/amr/mid/mp3/mp4/rm/rmvb/3gp/flv";this.timeList=new ArrayList<Long>();this.nameUrlMap=new HashMap<String,String>();this.urlNameMap=new HashMap<String,String>();this.urlTimeMap=new HashMap<String,Long>();this.urlSizeMap=new HashMap<String,Integer>();this.timeUrlMap=new HashMap<Long,String>();} /***************************************************************************** Description : 设置缓存的空间大小, Prototype : public void setCacheSize(int size) Input Param : 参数size表示空间大小,单位为均为字节 Return Value : 无 *****************************************************************************/ public void setCacheSize(int size) { /* 在这里实现功能 */ this.size=size; } /***************************************************************************** Description : 设置支持缓存的文件格式 Prototype : public void setCacheFormat(String formatList) Input Param : formatList,支持的格式列表,输入字符串例如“jpg/jpeg/PNG”,输入不区分大小写 Return Value : 无 *****************************************************************************/ public void setCacheFormat(String formatList) { /* 在这里实现功能 */ this.formatList=formatList.toLowerCase(); } /***************************************************************************** Description : 清除设置 Prototype : public void clearSetting() Input Param : 无 Return Value : 无 *****************************************************************************/ public void clearSetting() { /* 在这里实现功能 */ this.size=10*1024; this.formatList="jpg/jpeg/png/gif/bmp/amr/mid/mp3/mp4/rm/rmvb/3gp/flv"; } /***************************************************************************** Description : 存储该URL对应的文件,并返回一个随机生成的文件名 Prototype : public String cacheResource(String url, int size) Input Param : url为常见的HTTP的URL格式, size为资源文件大小 Output Param : 无 Return Value : 成功返回新生成的文件名; 失败返回:failure *****************************************************************************/ public String cacheResource(String url, int size) { /* 在这里实现功能 */ if(size>this.size){ return "failure"; } String format=url.substring(url.lastIndexOf(".")+1); if(!this.formatList.contains(format.toLowerCase())){ return "failure"; } long curtime=System.currentTimeMillis(); if(this.urlTimeMap.containsKey(url)){ long time=this.urlTimeMap.get(url); this.timeList.remove(time); this.timeList.add(curtime); this.urlTimeMap.put(url, curtime); this.timeUrlMap.remove(time); this.timeUrlMap.put(curtime, url); return this.urlNameMap.get(url); } while(size>this.size-this.useSize){ long time=timeList.remove(0); String turl=this.timeUrlMap.get(time); String tname=this.urlNameMap.get(turl); int tsize=this.urlSizeMap.get(turl); this.urlNameMap.remove(turl); this.nameUrlMap.remove(tname); this.urlTimeMap.remove(turl); this.timeUrlMap.remove(time); this.urlSizeMap.remove(turl); this.useSize-=tsize; } String name=this.ID+"."+format;name=ZEROS[NAMELEN-name.length()]+name;this.ID++;//System.out.println(name);this.timeList.add(curtime); this.urlSizeMap.put(url, size);this.urlNameMap.put(url, name);this.nameUrlMap.put(name, url);this.urlTimeMap.put(url, curtime);this.timeUrlMap.put(curtime, url);this.useSize+=size;return name; } /***************************************************************************** Description : 根据新生成的文件名,获取该资源文件对应的URL,为cacheResource的逆操作 Prototype : public String getUrlByName(string filename) Input Param : filename为cacheResource生成的文件名 Output Param : 无 Return Value : 成功返回URL; 失败返回:failure *****************************************************************************/ public String getUrlByName(String filename) { /* 在这里实现功能 */ if(this.nameUrlMap.containsKey(filename)){ return this.nameUrlMap.get(filename); } return "failure"; } /***************************************************************************** Description : 返回url对应的文件在缓存中是否存在 Prototype : public boolean checkCache(String url) Input Param : 待查询的url Return Value : 成功返回true,失败返回false *****************************************************************************/ public boolean checkCache(String url) { /* 在这里实现功能 */ return this.urlNameMap.containsKey(url); } /***************************************************************************** Description : 清除cache Prototype : public void clearCache(String url) Input Param : 无 Return Value : 无 *****************************************************************************/ public void clearCache() { /* 在这里实现功能 */ this.useSize=0; this.timeList.clear(); this.urlNameMap.clear(); this.urlSizeMap.clear(); this.urlTimeMap.clear(); this.timeUrlMap.clear(); this.nameUrlMap.clear(); }}
0 0
- 本地缓存
- 本地缓存
- 本地缓存
- 本地缓存
- iOS开发缓存:本地缓存
- ADOQuery 开启本地缓存。。。
- 数据本地缓存方法
- 本地DNS缓存
- HTML5 本地缓存
- Flex 本地缓存
- 更新本地DNS缓存
- .net4.0本地缓存
- ASIHttpRequest 本地缓存
- Android图片本地缓存
- ios 本地缓存
- 如何禁用本地缓存
- Java8-本地缓存
- Java8-本地缓存
- AA树—简单的红黑树
- 想让他和你的人有机地
- String
- 在抱孩子的那些
- 驱动——IIC
- 本地缓存
- 黑马程序员_高新技术_JAVA1.5新特性
- java设计模式-模板方法模式
- Jquery 获取鼠标所在的当前对象
- 软件各生命周期所用的工具
- android 中 ArrayList 、LinkList、List 区别
- java学习小实例一
- iOS 短信与电话事件的获取
- css格式化工具