实现对象缓存框架一、框架的大体架构

  在github看了很久关于缓存的一些框架,也积累了一些基础,想自己试试写一写神秘的缓存框架。

首先,我们分析一下如何开始? 框架的大体架构是什么?

下面给出示意图:  

那么框架结构出来了:

  1. ZSYCache提供一些Api给调用者使用关于缓存的所有方法

  2. ZSYCacheQueue、ZSYCachePool作为缓存数据的结构

  3. ZSYCacheHolder持久化对象

  4. ZSYCacheObject包装被持久化的对象相关附加属性: 保存对象的NSData、记录对象过期的时间

  注:对象要NSKeyedArchiver成NSData然后写入本地文件,所以需要使用NSCoding协议,介绍一个自动实现coding的代码--AutoCoding。

时间: 2024-10-17 16:33:53

实现对象缓存框架一、框架的大体架构的相关文章

实现对象缓存框架二、ZSYCache

ZSYCache作为给调用者暴露的主要Api方法,来实现对象的缓存. 思路: 1. 每一个ZSYCache对象,可以存在多个缓存队列.对个缓存池. 2. 每一个新创建的ZSYCache对象,他们的 缓存队列.缓存池,应该是互相独立. 3. 使用单例对象,应该提供默认的缓存队列.缓存池 4. 根据 名字--队列,名字--池, 保存多个队列.池 5. 在哪个时刻将内存队列.内存池的所有对象持久化到本地 6. 在哪个时刻将本地对象,恢复到内存队列.内存池 下面给出代码: //.h #import <F

JAVA之旅(十八)——基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用

JAVA之旅(十八)--基本数据类型的对象包装类,集合框架,数据结构,Collection,ArrayList,迭代器Iterator,List的使用 JAVA把完事万物都定义为对象,而我们想使用数据类型也是可以引用的 一.基本数据类型的对象包装类 左为基本数据类型,又为引用数据类型 byte Byte int Integer long Long boolean Booleab float Float double Double char Character 我们拿Integer来举例子 //整

JAVA学习第三十三课(常用对象API)- 集合框架(一)

数字有很多用数组存,对象有很多就要用集合存 但是数组是固定长度的,集合是可变长度的 集合的由来: 对象用来封装特有数据,对象多了需要存储,如果对象个数不确定,就需要使用集合容器来存储 集合的特点: 1.用于存储对象的容器 2.长度可变 3.集合中不可存储基本数据类型 对于集合体系,的最顶层存储的是该体系中所有的共性内容,Collection,同继承一样,看顶层,用底层 java.uitil包中的Cellection 集合容器因为内部的数据不同,有多种具体容器,不断向上抽取,就形成了集合框架 整个

应用程序框架实战十七:DDD分层架构之值对象(层超类型篇)

上一篇介绍了值对象的基本概念,得到了一些朋友的支持,另外也有一些朋友提出了不同意见.这其实是很自然的事情,设计本来就充满了各种可能性,没有绝对正确的做法,只有更好的实践.但是设计与实践的好与坏,对于不同的人,以及处于不同的环境都有不同的诠释,这是一个仁者见仁,智者见智的问题.DDD非常抽象,以至于它的每一个概念,对于不同的人都有不同的看法,更何况基于DDD的.Net实践,就更难分辨哪一个用法更标准.更正宗. 我对DDD的认识虽然还很肤浅,用得也很山寨,但这可能更加适合初步接触DDD的朋友.还是那

【ABP框架系列学习】N层架构(3)

原文:[ABP框架系列学习]N层架构(3) 目录 0.引言 1.DDD分层 2.ABP应用构架模型 客户端应用程序(Client Applications) 表现层(Presentation Layer) 分布式服务层(Distributed Service Layer) 应用层(Application Layer) 领域层 基础设施层 3.使用ABP项目模版快速生成应用程序 0.引言 应用程序的分层是一种广泛接受的技术, 可以降低复杂度和提高代码的可重用性.为了实现分层架构,ABP遵循领域驱动

Android学习之——自己搭建Http框架(2)——框架扩展

· 本文主要讲解的是Json指定转化成对象返回,下载进度更新,随时取消Request请求 一.Json指定转化成对象返回 上篇文章主要讲基础的框架搭建起来了,这次需要做一些些的扩展,这里Json转化用到了google的Gson. 上篇文章,我们直接返回了String的字符串,那么如果是请求返回回来的是Json格式的,我们能否在数据返回的时候将数据转化成需要的对象呢.答案当然是可以的. 我们可以在UI线程中创建Callback的时候将预处理的对象放入进去,还是直接代码描述比较清楚:        

高性能的分布式内存对象缓存系统Memcached

Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载.它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态.数据库驱动网站的速度.Memcached基于一个存储键/值对的hashmap.其守护进程(daemon )是用C写的,但是客户端可以用任何语言来编写,并通过memcached协议与守护进程通信. 外文名 memcached 所    属 缓存系统 编写语言 不限 通信手段 memcached协议 目录 1功能 2特征 ? 协议 ? 事件处

Ehcache 整合Spring 使用页面、对象缓存

Ehcache在很多项目中都出现过,用法也比较简单.一般的加些配置就可以了,而且Ehcache可以对页面.对象.数据进行缓存,同时支持集群/分布式缓存.如果整合Spring.Hibernate也非常的简单,Spring对Ehcache的支持也非常好.EHCache支持内存和磁盘的缓存,支持LRU.LFU和FIFO多种淘汰算法,支持分布式的Cache,可以作为Hibernate的缓存插件.同时它也能提供基于Filter的Cache,该Filter可以缓存响应的内容并采用Gzip压缩提高响应速度.

jQuery框架+DWR框架实现的Java Web中的Ajax效果(异步请求,局部刷新)

一 简介和实现效果 这里用一个小例子来简单举例说明,做一个搜索引擎搜索提示效果,通过不断输入字符,然后在下方给出搜索提示.效果图如下: 通过上图可以看到,当输入一个"a"时,提示了很多内容,然后继续输入一个"e"后,提示的范围明显就变小了. 注:在文末我会给出完整源代码的下载链接,以供大家参考 二 具体实现 1 在eclipse for java ee中创建一个Java Web工程,然后导入相应的jar包,特别说明的是:这里要导入一个额外的dwr.jar.也就是说,