
架構(gòu)&框架
設(shè)計(jì)架構(gòu)要解決什么問題呢?
1.實(shí)現(xiàn)模塊化
2.進(jìn)行分層,實(shí)現(xiàn)解耦
3.降低代碼的重合度
圖片緩存
怎樣設(shè)計(jì)一個(gè)圖片緩存框架?

圖片緩存--讀寫流程
圖片通過什么方式進(jìn)行讀寫,過程是怎樣的?

圖片在圖片框架的讀取流程:

圖片緩存--內(nèi)存設(shè)計(jì)
內(nèi)存的設(shè)計(jì)上需要考慮哪些問題?
1.存儲的Size
2.淘汰策略
1、存儲的size:
例如,我們可以如下分配:
10kb以下圖片:分配50個(gè)
100kb:分配20個(gè)
100kb以上,分配10個(gè)
以隊(duì)列的形式,先進(jìn)先出:

2、淘汰策略
·策略1:以隊(duì)列先進(jìn)先出的方式淘汰

·策略2:LRU算法(如30分鐘之內(nèi)是否使用過)
定時(shí)檢查:
每次進(jìn)行讀寫時(shí),進(jìn)行檢查
前后臺切換時(shí)候,進(jìn)行檢查

圖片緩存--磁盤設(shè)計(jì)
磁盤設(shè)計(jì)需要考慮哪些問題?
1、存儲方式
2、大小限制(如100MB)
3、淘汰策略(如某一圖片存儲時(shí)間距今已超過7天)
圖片緩存--網(wǎng)絡(luò)設(shè)計(jì)
網(wǎng)絡(luò)部分的設(shè)計(jì)需要考慮哪些問題?
1、圖片請求最大并發(fā)量
2、請求超時(shí)策略(例如失敗后可以重試2次)
3、請求優(yōu)先級
圖片緩存--圖片解碼
對于不同格式的圖片,解碼采用什么方式來做?
·應(yīng)用策略模式對不同圖片格式進(jìn)行解碼
在哪個(gè)階段做圖片解碼處理?
a、磁盤讀取后
b、網(wǎng)絡(luò)請求返回后
圖片緩存--線程處理(整個(gè)流程)
先去緩存里面讀取,讀取到就顯示;
緩存沒有就到 磁盤查找,讀取到就保存到緩存里面、并顯示;

磁盤里面沒有讀取到,就去網(wǎng)絡(luò)請求,請求回來后放到緩存里面,并顯示。
