设计一个简单的缓存容器
在项目的开发中遇到一个这样的问题:没一个系统用户要有很多与之关联数据,而由于一些页面的加载是由这些数据来判断过滤的,所以与数据库交互加载这样数据的时间变的不可忍受,尤其是大数据量的时候。所以一个比较简单但又实用的方法就是将这些数据缓存起来,供后来调用。
在设计与实现这个简单缓存容器的时候,我想参考一下Microsoft的Application Block:Caching Framework,所以为了能使自己的设计水平提高,在这里我先把参考Caching Framework前的设计想法写下来,以备在后面比较,希望能有大的收获。
在开发的过程中,采用迭代开发的思想,不是赶时髦,只是想让自己持续的看到成果,不然的话会让我失去信心的,主要迭代周期一起各迭代周期的内容如下:
一期:支持最基本的插入缓存数据、自定义键字段、根据键获取缓存数据的方法。
二期:支持缓存数据的过期、依赖属性的应用,处理缓存数据的过期与同步问题,为缓存数据添加同步支持。
三期:重构代码以支持更广的缓存数据应用。
下面我按照时间顺序说明的我设计过程:
一期:
初期想法:设计一个CacheManager类,它有两个方法,Add(object key,object value),Delete(object key),Get(object key),三个方法,内部实现也就是基本的Cache方法包装。
参考了Caching Framework后的改进想法:
1.将Cache的管理功能与存储分开,提取一个CacheManager来管理执行诸如一些添加、删除、获取、清除的方法,添加一个CacheStorage类来处理存储,而且由于存储方式可能有不同,所以设计一个接口,其他不同的实现方式来实现。
2.包装Cache项,加入Metadata如:过期、依赖、回调、优先级等方法。
转载于:https://www.cnblogs.com/Masterpiece/archive/2004/11/24/67897.html
设计一个简单的缓存容器相关推荐
- 大学慕课MOOC设计一个简单的计算工具
题目: 编程题: 设计一个简单的四则运算工具,有一个标题为"计算"的窗口,窗口布局为FlowLayout.设计四个按钮,分别命名为"加"."减&q ...
- 如何设计一个简单的KV数据库
下面的内容仅供设计一个简单的KV数据库.如果想要实现一个功能更强的KV数据库的话,还需要考虑:更加丰富的数据类型.数据压缩.过期机制.数据淘汰策略.集群化.高可用等功能,另外还可以增加统计模块.通知模 ...
- 2.一个简单的Servlet容器
章前准备 如何处理ifelse众多的问题,当然也可以说是switch case 我们经常写这样的代码,如果这货小一点,且可预测什么的,那都不是事,问题是如果他要是可拓展的类- -!让他 ...
- 如何用Java设计一个简单的窗口界面(学习中.1)
如何用Java设计一个简单的窗口界面 一.前言 二.简单了解 1.Swing简介 2.框架(frame) 3.层次 三.步骤 1.打开eclipse,依次创建项目,包,类. 2.代码 2.1最简单的可 ...
- JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...
用java模拟设计一个简单的"用户注册"程序.当用户输入用户名和密码时,单击"注 2020 - 9 - 26 TAG : 所有功能均已实现,如有不满意的地方我再修改imp ...
- python界面设计-手把手教你用Python设计一个简单的命令行界面
原标题:手把手教你用Python设计一个简单的命令行界面 对 Python 程序来说,完备的命令行界面可以提升团队的工作效率,减少调用时可能碰到的困扰.今天,我们就来教大家如何设计功能完整的 Pyth ...
- tomcat(2)一个简单的servlet容器
[0]README 0.1)本文部分文字转自 "深入剖析Tomcat",旨在学习 一个简单的servlet容器 的基础知识: 0.2)for complete source c ...
- 设计一个简单分页存储管理系统_【系统架构】如何设计一个简单灵活的收银系统?看这里!(1)...
在电商项目中,收银系统是一个不可或缺的功能,因为你不仅要通过它来进行收款.退款,而且也要通过它进行财务的对账.报税等.因此,如何设计一个简单灵活的收银系统,对于开发电商项目来说非常重要. 那如何设计一 ...
- java 缓存方法_Java实现一个简单的缓存方法
Java实现一个简单的缓存方法 发布时间:2020-09-07 21:39:55 来源:脚本之家 阅读:99 作者:BrightLoong 缓存是在web开发中经常用到的,将程序经常使用到或调用到的对 ...
最新文章
- 2022-2028年中国干电池制造行业产销需求与投资预测分析报告
- java2018笔试基础题_java基础笔试题
- Apache Ignite——集合分布式缓存、计算、存储的分布式框架
- python工作招聘-python爬虫 智联招聘 工作地点
- box-sizing详解
- Apple watch 开发指南(1) 预览
- SAP ABAP Netweaver和Hybris Commerce的开发license
- Vijos P1196吃糖果游戏[组合游戏]
- Spring Security构建Rest服务-0600-SpringSecurity基本原理
- Redis 订阅与发布
- python标准库time_python标准库介绍——12 time 模块详解
- VMware15 Pro激活密钥
- Source Insight 4.0.0084 Patched
- 联想一体机计算机用户名锁定,联想电脑输入密码多次被锁定怎么办
- 设备唯一标识方法(Unique Identifier):如何在Windows系统上获取设备的唯一标识
- MATLAB 信号与系统
- 2021新宁二中高考喜报成绩查询,新宁各校高考喜报!最高分684,全县大获得丰收!看有你认识的吗?...
- 解决极客时间网页文字无法选中或复制copy
- poi-tl生成word中文和西文使用不同字体
- VITA 57 FPGA 夹层卡(FMC)