現就對這十大快取誤區以及使用建議進行乙個全面的梳理:
1、依賴預設的序列化方式
使用預設的序列化處理方式可能會消耗大量的cpu資源,尤其是處理複雜型別資料時。所以建議大家一定要根據所使用語言和環境的情況,採用最合理、有效的序列化和反序列化方式。
2、在單一快取中儲存大物件資料
由於序列化和反序列化需要一定的資源開銷,當處於高併發高負載的情況下,對大物件資料的頻繁讀取有可能會使得伺服器的cpu崩潰,所以建議大家把大物件資料分成為較小的子物件,然後再各自進行快取。
3、在不同執行緒間使用快取共享物件
在競態條件(race conditions)條件下,當寫執行緒對快取進行寫入操作時,如果這是讀執行緒剛好也要訪問同一緩衝物件,就有可能讀取髒資料,所以在實際開發中要根據實際情況採取外部鎖機制,以保證快取資料的正確讀寫。
4、認為儲存資料操作後,資料即刻就能儲存到快取中
剛進行寫入快取操作的資料並不一定能夠馬上寫入快取,這是因為當快取空間不足時,剛寫入的快取有可能被重新整理掉。所以在編寫程式時,應該首先對獲得快取的值作空值檢測。
5、使用巢狀物件儲存整個集合
如果將整個集合物件資料進行巢狀快取的話,獲得其中某個具體元素的效能將會嚴重受到影響,這是因為整個集合儲存意味著對整個巢狀物件進行序列化。有鑑於此,建議單獨對每個元素進行快取,這樣就可以做到對每個物件分別更新和讀取,以減少序列化的影響。
6、對父子物件採取統一與單獨混用的儲存方式
有時候乙個物件可能擁有兩個或更多的父物件,同一物件儲存在不同地方,這樣就會造成快取的浪費。為了不讓同一物件儲存於不同地方,這就需要根據統一物件本身的鍵進行快取,這樣父物件就能夠根據需要訪問子物件。
7、對配置資訊進行快取
快取資料的訪問是有代價的,所以要盡可能把影響減到最低,所以建議使用本地靜態變數代替快取對配置資料進行儲存。
8、對實時物件進行快取
如果對實時物件(例如:流、檔案、註冊資訊或者網路情況)的引用進行快取的話,當快取資料被刪除後,之前快取的實時物件不被刪除,這樣會造成系統資源洩漏,所以不要對實時物件進行儲存。
9、使用多個鍵儲存同一物件
儘管使用多個鍵儲存同一物件就使得使用乙個鍵和索引號來進行訪問時帶來便利,但是當快取是基於遠端快取的話,任何關於物件改變都是不可見的,這樣會導致快取資料同步問題的發生,所以不建議使用多個鍵儲存同一物件。
10、在連續儲存中進行更新或刪除後不及時更新相應快取物件
由於在乙個遠端快取中,資料以拷貝方式儲存,所以當更新物件時,快取不會被同步更新。所以更新物件時,快取必須被明確地進行更新。然而在基於記憶體的快取中,當刪除乙個物件時,在快取中不會被同步刪除,所以建議通過程式確保快取物件被正確刪除。
**:
睡眠的十個建議
在睡覺前乙個小時洗乙個熱水澡,然後等身體逐漸變涼。有助於快速入眠 睡眠限制計畫。每天現在在臥室的時間如 6個小時,其他任何時間都不能夠進入臥室或者睡覺。每天都在固定的時間起床如 早上8點。打盹法。每次打盹大約30分鐘。早上7點 12點之間及晚上6點 8點之間不能打盹,最佳的時間為下午2 5點。打鼻鼾...
十個有效的企業用人建議
十個有效的企業用人建議 戰略要想有結果,戰術要想被執行,都離不開優秀的人才 所有的管理都是圍繞人來進行的,因此管理的首要任務便是尋找優秀的人才。下面是筆者多年的用人經驗 十個有效的企業用人建議,但願能給讀者朋友一些啟示。1 不要用來自同一地方 同一學校的人,也不要用具有相同背景 相同專業的人。長期接...
軟體專案管理中的十個誤區
隨著計算機硬體水平的不斷提高,計算機軟體的規模和複雜度也隨之增加。計算機軟體開發從 個人英雄 時代向團隊時代邁進,計算機軟體專案的管理也從 作坊式 管理向 軟體工廠式 管理邁進。這就要求軟體開發人員特別是軟體專案管理人員更深一步地理解和掌握現代軟體工程的理論方法,完成思想觀念上的轉變。筆者在此分析了...