架构&框架
设计架构要解决什么问题呢?
1.实现模块化
2.进行分层,实现解耦
3.降低代码的重合度
图片缓存
怎样设计一个图片缓存框架?
图片缓存--读写流程
图片通过什么方式进行读写,过程是怎样的?
图片在图片框架的读取流程:
图片缓存--内存设计
内存的设计上需要考虑哪些问题?
1.存储的Size
2.淘汰策略
1、存储的size:
例如,我们可以如下分配:
10kb以下图片:分配50个
100kb:分配20个
100kb以上,分配10个
以队列的形式,先进先出:
2、淘汰策略
·策略1:以队列先进先出的方式淘汰
·策略2:LRU算法(如30分钟之内是否使用过)
定时检查:
每次进行读写时,进行检查
前后台切换时候,进行检查
图片缓存--磁盘设计
磁盘设计需要考虑哪些问题?
1、存储方式
2、大小限制(如100MB)
3、淘汰策略(如某一图片存储时间距今已超过7天)
图片缓存--网络设计
网络部分的设计需要考虑哪些问题?
1、图片请求最大并发量
2、请求超时策略(例如失败后可以重试2次)
3、请求优先级
图片缓存--图片解码
对于不同格式的图片,解码采用什么方式来做?
·应用策略模式对不同图片格式进行解码
在哪个阶段做图片解码处理?
a、磁盘读取后
b、网络请求返回后
图片缓存--线程处理(整个流程)
先去缓存里面读取,读取到就显示;
缓存没有就到 磁盘查找,读取到就保存到缓存里面、并显示;
磁盘里面没有读取到,就去网络请求,请求回来后放到缓存里面,并显示。