延伸實現:
1 獲取儲存路徑
1.public file getdiskcachedir(context context, string uniquename) else
9. return new file(cachepath + file.separator + uniquename);
10.}
3 標準使用
4 內部實現:
1 先判斷輸入的合法性
2 在響應目錄下建立journalfile用於記錄儲存日誌
3 建立disklrucache例項。
1.private boolean downloadurltostream(string urlstring, outputstream outputstream)
14. return true;
15. } catch (final ioexception e) finally
21. try
25. if (in != null)
28. } catch (final ioexception e)
31. }
32. return false;
33.}
1 先要將的url轉化成md5
2 完整的讀取操作
1.new thread(new runnable() else
15. }
16. mdisklrucache.flush();
17. } catch (ioexception e)
20. }
21.}).start();
4 內部分析:
1 edit方法會返回乙個editor物件。這個物件是disklrucache的內部類。
2 disklrucache的內部有三個內部類,分別是editor以及entry 還有snapshot(繼承了closeable介面)
3 含有強引用linkedhashmap 其中的key為url轉md5後的字串,value值為entry.
3 讀取快取
讀取的時候需要用到disklrucache的get方法。
1 讀取的時候需要傳入key值,這個值就是之錢存入時url轉為md5的值
1.string imageurl = 「
2.string key = hashkeyfordisk(imageurl);
3.disklrucache.snapshot snapshot = mdisklrucache.get(key);
2 從get方法返回的snapshot物件中獲取inputstream.並用這個流來讀取
1.try
10.} catch (ioexception e)
3 內部實現:
1 在get的時候會先對之前檔案的關閉,再檢查key值是否合法
2 獲取的時候也是從強引用的linkedhashmap中根據key獲取響應的entry
3 呼叫editor的getcleanfile方法 返回乙個相應路徑file的例項。
4 取出的只是乙個路檔案的具體路徑
4 擴充:還有響應的remove flush close等方法
5 郭林部落格的擴充套件demo
學習筆記 雜湊學習筆記
hash基本原理 hash就是乙個像函式一樣的東西,你放進去乙個值,它給你輸出來乙個值。輸出的值就是hash值。一般hash值會比原來的值更好儲存 更小 或比較。那字串hash就非常好理解了。就是把字串轉換成乙個整數的函式。而且要盡量做到使字串對應唯一的hash值。它的主要思路是選取恰當的進製,可以...
學習筆記 CentOS 學習筆記01
簡單的做個課堂筆記 虛擬機器用的是vmware,系統是centos cd etc sysconfig network scripts pwdls 顯示列表 cat ifcfg eth0 檢視檔案內容 vi ifcfg eth0 進入vi編輯器 onboot no 原始設定 x逐字刪除 d刪除整行 a...
筆記 spring cloud 學習筆記
1 spring cloud 是什麼 spring cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具 例如配置管理,服務發現,斷路器,智慧型路由,微 控制匯流排 分布式系統的協調導致了樣板模式,使用spring cloud開發人員可以快速地支援實現這些模式的服務和應用程式。他們將在任...