已阅读5页,还剩5页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Cache 所谓缓存,就是将程序或系统经常要调用的对象存在内存中,一遍其使用时可以快速 调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。 缓存主要可分为二大类: 一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以 XML 格式, 序列化文件 DAT 格式还是其它文件格式; 二、内存缓存,也就是实现一个类中静态 Map,对这个 Map 进行常规的增删查. 代码如下 : 1. package lhm.hcy.guge.frameset.cache; 2. 3. import java.util.*; 4. 5. /Description: 管理缓存 6. 7. /可扩展的功能:当 chche 到内存溢出时必须清除掉最早期的一些缓 存对象,这就要求对每个缓存对象保存创建时间 8. 9. public class CacheManager 10. private static HashMap cacheMap = new HashMap(); 11. 12. /单实例构造方法 13. private CacheManager() 14. super(); 15. 16. /获取布尔值的缓存 17. public static boolean getSimpleFlag(String key) 18. try 19. return (Boolean) cacheMap.get(key); 20. catch(NullPointerException e) 21. return false; 22. 23. 24. public static long getServerStartdt(String key) 25. try 26. return (Long)cacheMap.get(key); 27. catch (Exception ex) 28. return 0; 29. 30. 31. /设置布尔值的缓存 32. public synchronized static boolean setSimpleFlag(String k ey,boolean flag) 33. if (flag getSimpleFlag(key) /假如为真不 允许被覆盖 34. return false; 35. else 36. cacheMap.put(key, flag); 37. return true; 38. 39. 40. public synchronized static boolean setSimpleFlag(String k ey,long serverbegrundt) 41. if (cacheMap.get(key) = null) 42. cacheMap.put(key,serverbegrundt); 43. return true; 44. else 磨砺营 IT 教育版权所有 45. return false; 46. 47. 48. 49. 50. /得到缓存。同步静态方法 51. private synchronized static Cache getCache(String key) 52. return (Cache) cacheMap.get(key); 53. 54. 55. /判断是否存在一个缓存 56. private synchronized static boolean hasCache(String key) 57. return cacheMap.containsKey(key); 58. 59. 60. /清除所有缓存 61. public synchronized static void clearAll() 62. cacheMap.clear(); 63. 64. 65. /清除某一类特定缓存,通过遍历 HASHMAP 下的所有对象,来判断 它的 KEY 与传入的 TYPE 是否匹配 66. public synchronized static void clearAll(String type) 67. Iterator i = cacheMap.entrySet().iterator(); 68. String key; 69. ArrayList arr = new ArrayList(); 70. try 71. while (i.hasNext() 72. java.util.Map.Entry entry = (java.util.Map.En try) i.next(); 73. key = (String) entry.getKey(); 74. if (key.startsWith(type) /如果匹配则删除 掉 75. arr.add(key); 76. 77. 78. for (int k = 0; k arr.size(); k+) 79. clearOnly(arr.get(k); 80. 81. catch (Exception ex) 82. ex.printStackTrace(); 83. 84. 85. 86. /清除指定的缓存 87. public synchronized static void clearOnly(String key) 88. cacheMap.remove(key); 89. 90. 91. /载入缓存 92. public synchronized static void putCache(String key, Cach e obj) 93. cacheMap.put(key, obj); 94. 95. 96. /获取缓存信息 97. public static Cache getCacheInfo(String key) 98. 99. if (hasCache(key) 100. Cache cache = getCache(key); 101. if (cacheExpired(cache) /调用判断是否终止方法 102. cache.setExpired(true); 103. 104. return cache; 磨砺营 IT 教育版权所有 105. else 106. return null; 107. 108. 109. /载入缓存信息 110. public static void putCacheInfo(String key, Cache obj, lo ng dt,boolean expired) 111. Cache cache = new Cache(); 112. cache.setKey(key); 113. cache.setTimeOut(dt + System.currentTimeMillis(); / 设置多久后更新缓存 114. cache.setValue(obj); 115. cache.setExpired(expired); /缓存默认载入时,终止状态 为 FALSE 116. cacheMap.put(key, cache); 117. 118. /重写载入缓存信息方法 119. public static void putCacheInfo(String key,Cache obj,long dt) 120. Cache cache = new Cache(); 121. cache.setKey(key); 122. cache.setTimeOut(dt+System.currentTimeMillis(); 123. cache.setValue(obj); 124. cache.setExpired(false); 125. cacheMap.put(key,cache); 126. 127. 128. /判断缓存是否终止 129. public static boolean cacheExpired(Cache cache) 130. if (null = cache) /传入的缓存不存在 131. return false; 132. 133. long nowDt = System.currentTimeMillis(); /系统当前的 毫秒数 134. long cacheDt = cache.getTimeOut(); /缓存内的过期毫秒 数 135. if (cacheDt = 0|cacheDtnowDt) /过期时间小 于等于零时,或者过期时间大于当前时间时,则为 FALSE 136. return false; 137. else /大于过期时间 即过期 138. return true; 139. 140. 141. 142. /获取缓存中的大小 143. public static int getCacheSize() 144. return cacheMap.size(); 145. 146. 147. /获取指定的类型的大小 148. public static int getCacheSize(String type) 149. int k = 0; 150. Iterator i = cacheMap.entrySet().iterator(); 151. String key; 152. try 153. while (i.hasNext() 154. java.util.Map.Entry entry = (java.util.Map.En try) i.next(); 155. key = (String) entry.getKey(); 156. if (key.indexOf(type) != -1) /如果匹配则删 除掉 157. k+; 158. 159. 160. catch (Exception ex) 161. ex.printStackTrace(); 磨砺营 IT 教育版权所有 162. 163. 164. return k; 165. 166. 167. /获取缓存对象中的所有键值名称 168. public static ArrayList getCacheAllkey() 169. ArrayList a = new ArrayList(); 170. try 171. Iterator i = cacheMap.entrySet().iterator(); 172. while (i.hasNext() 173. java.util.Map.Entry entry = (java.util.Map.En try) i.next(); 174. a.add(String) entry.getKey(); 175. 176. catch (Exception ex) finally 177. return a; 178. 179. 180. 181. /获取缓存对象中指定类型 的键值名称 182. public static ArrayList getCacheListkey(String type) 183. ArrayList a = new ArrayList(); 184. String key; 185. try 186. Iterator i = cacheMap.entrySet().iterator(); 187. while (i.hasNext() 188. java.util.Map.Entry entry = (java.util.Map.En try) i.next(); 189. key = (String) entry.getKey(); 190. if (key.indexOf(type) != -1) 191. a.add(key); 192. 193. 194. catch (Exception ex) finally 195. return a; 196. 197. 198. 199. 200. 201. 202. package lhm.hcy.guge.frameset.cache; 203. 204. public class Cache 205. private String key;/缓存 ID 206. private Object value;/缓存数据 207. private long timeOut;/更新时间 208. private boolean expired; /是否终止 209. public Cache() 210. super(); 211. 212. 213. public Cache(String key, Object value, long timeOut, boolean expired) 214. this.key = key; 215. this.value = value; 216. this.timeOut = timeOut; 217. this.expired = expired; 218. 219. 220. public String getKey() 221. return key; 222. 223. 224. public long getTimeOut() 225. return timeOut; 磨砺营 IT 教育版权所有 226. 227. 228. public Object getValue() 229. return value; 230. 231. 232. public void setKey(String string) 233. key = string; 234. 235. 236. public void setTimeOut(long l) 237. timeOut = l; 238. 239. 240. public void setValue(Object object) 241. value = object; 242. 243. 244. public boolean isExpired() 245. return expired; 246. 247. 248. public void setExpired(boolean b) 249. expired = b; 250. 251. 252. 253. /测试类, 254. class Test 255. public static void main(String args) 256. System.out.println(CacheManager.getSimpleFlag(“alksd“) ; 257. / CacheManager.putCache(“abc“, new Cache(); 2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年专升本医学检验技术免疫学测试试卷(含答案)
- 物业顾问咨询合同范本
- 火车锻件采购合同范本
- 网约车租车合同协议书
- 看房翻新改造合同范本
- 家庭教育指导助力孩子快乐成长
- 美容设备合作合同范本
- 翡翠买卖居间合同范本
- 货物买卖抵押合同范本
- 牛奶定期采购合同范本
- 2025年乡村振兴面试题及答案
- 2025年《新课程标准解读》标准课件
- 2024年普通高中学业水平选择性考试(福建卷)物理试题含答案
- 交流发言:深入实施数字化转型条件下税费征管“强基工程”推动县税务局工作高质量发展
- 1与食品经营相适应的操作流程
- 高考数学专项复习:导数压轴大题归类(解析版)
- DB52-T1626-2021水利工程调整概算报告编制导则
- 第九章 幼儿园组织文化建设课件
- 抢救记录书写要求及模版
- 架线安全技术交底记录
- 人教版数学二年级上册期中考试试卷可打印
评论
0/150
提交评论