淺談JAVA資料快取
一般是採用HashMap來作為快取的儲存結構,但Java沒有全域性變數的概念,怎麼保證快取中的資料不被垃圾回收器收集,而造成資料的丟失呢?
請問一般的快取是怎樣保證資料的獨立性(即脫離垃圾回收器)的?
做一個判斷,HashMap取不到值就到資料庫裡再讀資料
系統第一次起來,或是第一次取資料後將資料
儲存在一個static的Map裡即可,凡是快取的東西
總是經常用到的,所以一般是保持強引用,GC應該
會清理
(1)jive裡面,是使用單態模式維護一個工廠例項,做為程式的入口,就是無論有多少個線上使用者,都只要從該入口進入.在這個工廠例項中,有一個快取管理類(DatabaseCacheManager)變數,這個類有幾個公有變數,如DbUserCache(就是快取訪問過的使用者)等.當要獲取一個user的使用者資訊時,它就會先在DbUserCache中查詢,如果找不到,那麼就從資料庫中讀取,再放入快取中.
singleton模式:
public class DataCache {
protected static final HashMap map = new HashMap(); // Cache table
private static final Object lock = new Object();
private DataCache() {} // 防止在外部例項化
public static Object getData(Object key) {
Object v = map.get(key);
if (v == null) {
synchronized(lock) {
v = map.get(key); // Check again to avoid re-load
if (v == null) loadDataSource(key);
v = map.get(key); // retrieves data.
}
}
return v;
}
/*
*Load data from data source.
*/
protected static synchronized void loadDataSource(Object key) {
Object value = new Object(); // Load value from data source
map.put(key, value);
}
}
相關推薦
淺談JAVA資料快取
一般是採用HashMap來作為快取的儲存結構,但Java沒有全域性變數的概念,怎麼保證快取中的資料不被垃圾回收器收集,而造成資料的丟失呢? 請問一般的快取是怎樣保證資料的獨立性(即脫離垃圾回收器)的? 做一個判斷,HashMap取不到值就到資料庫裡
淺談Java中的八種基本資料型別
1)四種整數型別(byte、short、int、long): byte:8 位,用於表示最小資料單位,如檔案中資料,-128~127 short:16 位,很少用,-32768 ~ 32767 int:32 位、最常用,-2^31-1~2^31 (21 億
淺談JAVA驗證碼~
puts oid blog 方式 log 需求 .html index.jsp script 這兩天在幫同學做個項目,項目中需要做個驗證碼,說實話那麽多年竟然沒註意過這東西,原理很簡單,貼出來給大家做個參考。 1、簡單介紹 一般稍微有些經驗的程序員都不會再自己寫原生驗證碼生
淺談Java中的hashCode方法
implement state ask get() 存在 rsa key 沖突 如何 哈希表這個數據結構想必大多數人都不陌生,而且在很多地方都會利用到hash表來提高查找效率。在Java的Object類中有一個方法: public native int hashCode(
淺談java內存分配和回收策略
內存空間 高效率 cde map details 閾值 老年代 total 關於 一、導論 java技術體系中所提到的內存自動化管理歸根結底就是內存的分配與回收兩個問題,之前已經和大家談過java回收的相關知識,今天來和大家聊聊java對象的在內存中的分配。通俗的講,對
淺談Java集合框架
順序 eem map pre 叠代器 static 支持 print ted 集合框架最大的作用就是維護一組類型同樣的對象。僅僅是不同的類有不同的行為和性能。通常關註下面這些行為: 是否能存放反復的元素遍歷的順序是如何的是否支持多線程 以下首先介紹集合的經常使用,隨
淺談Java的學習
override web ring 只知道 網頁標簽 insert語句 知識 reg 模型 Java就是用來做項目的!Java的主要應用領域就是企業級的項目開發!要想從事企業級的項目開發,你必須掌握如下要點: 1、掌握項目開發的基本步驟2、具備極強的面向對象的分析與設計技巧
淺談java中內置的觀察者模式與動態代理的實現
所有 代理 notify play ani effect 一個 indicate protected 一.關於觀察者模式 1.將觀察者與被觀察者分離開來,當被觀察者發生變化時,將通知所有觀察者,觀察者會根據這些變化做出對應的處理。 2.jdk裏已經提供對應的Observer
淺談Java中的深拷貝和淺拷貝
detail tle pac err @override 復制對象 deep har 間接 淺談Java中的深拷貝和淺拷貝(轉載) 原文鏈接: http://blog.csdn.net/tounaobun/article/details/8491392 假如說你想復制一
201671010116. 2016-2017-3《Java程序設計》淺談Java
虛擬 專業 ble ise 解釋執行 long [] 程序編譯 orm 1.Java的工作方式:java把程序編譯為字節碼,字節碼可以在提供了Java虛擬機的任何系統上被解釋執行 。 源文件:文件名.java→字節碼文件:文件名.class→java虛擬機支持程序運行 2.
淺談java異常[Exception]
你在 這也 一點 io操作 www. 新手 公司 manager other 淺談java異常[Exception] 一. 異常的定義 在《java編程思想》中這樣定義 異常:阻止當前方法或作用域繼續執行的問題。雖然java中有異常處理機制,但是要明確一點,決不應該
淺談JAVA中“增強”類的某個方法的幾個中方法!
exc 目標 byte 相同 nbsp 優點 method value oca 一、繼承 使用場景:能夠控制這個類的構造的時候,才可以使用繼承。 優點:簡單容易使用, 缺點:耦合性大大的增強,不利於後期的維護,所以對於繼承這種方法,謹慎使用。 代碼實現:二、裝飾者模式
淺談Java SE、Java EE、Java ME三者的區別
網絡 orien service 離線 web 手機 規範 嵌入 ice 1. Java SE(Java Platform,Standard Edition)。Java SE 以前稱為 J2SE。它允許開發和部署在桌面、服務器、嵌入式環境和實時環境中使用的 Java 應用程
淺談JAVA中字符串常量的儲存位置
數據 每一個 [] jit 返回 inf post 符號 boolean 在講述這些之前我們需要一些預備知識: Java的內存結構我們可以通過兩個方面去看待它。 一、從抽象的JVM的角度去看。相關定義請參考JVM規範:Chapter 2. The Structure o
淺談java中的"=="和eqals區別
short copy 覆寫 main 否則 變量 程序 bar gif 在初學Java時,可能會經常碰到下面的代碼: 1 String str1 = new String("hello"); 2 String str2 = new String("hello");
Java基礎8-淺談java程序的運行機制與JVM運行
style 窗口 exe 了解 體感 語法 我們 nbsp .exe 一、java程序的運行機制 Java開發的整個生命周期,可以概括為兩個階段:編譯階段和運行階段。 1.編譯階段 ①程序員編寫一個符合java語法的xx.java的源文件。 ②使用javac.exe命令對以
淺談java放射機制
bject bootstrap pan voc get set class文件 獲得 訪問 java反射機制概念: 用途:JAVA反射機制是在運行狀態中,對於任意一個類,都能夠知道這個類的所有屬性和方法;對於任意一個對象,都能夠調用它的任意方法和屬性;這種動態獲取
淺談java淺拷貝和深拷貝
原來 變量 基本數據 的區別 引用數據類型 復制 值傳遞 ec2 深拷貝和淺拷貝 前言:深拷貝和淺拷貝的區別是什麽? 淺拷貝:被復制的對象的所有變量都含有原來對象相同的值,而所有的對其他對象的引用仍然指向原來的對象。換言之, 淺拷貝僅僅復制所考慮的對象,而不復制它所引用的對
最近在研究多線程,淺談JAVA中多線程的幾種實現方式
進行 數據 使用 導致 效率問題 多線程 方法 sta img 多線程的實現方式: 個人認為,要說多線程的實現方式,萬變不離其宗,最基本的就是兩種1.繼承Thread類;2.實現runnable接口,本質上來說就是用來啟動線程執行任務的過程,具體來說的話,通過這
淺談Java中的物件和物件的引用
淺談java中的物件和引用 文章轉載出處:https://www.cnblogs.com/dolphin0520/p/3592498.html 在Java中,有一組名詞經常一起出現,它們就是“物件和物件引用”,很多朋友在初學Java的時候可能經常會混淆這2個概念,覺得它們是一回事,事