隨處可見的緩存思想(有補充的歡迎留言交流)

【事先將要使用到的數據緩存好,以便使用的時候給予更快速的響應】
面向對象編程創建和銷燬對象費時費力。因此減少創建和銷燬對象的次數,如果可以對現存對象重複使用,尤其對於那些非常耗資源的對象,將會有效提高程序效率。
String對象(常量)池:1創建String對象時採用直接賦值的匿名對象方式,可以自動將字符串存入到字符串對象(常量)池中供後續重複使用.2採用new的構造方法方式,若調用String intern()方法也可也實現手工入池.
瀏覽器緩存:在首次訪問網站服務器時,瀏覽器會從服務器獲取所有資源,在傳輸過程中,瀏覽器會通過一些約定好的響應頭,從而確定是否需要將這個資源保存一份到本地作爲緩存。當用戶第二次訪問該網站的時候,瀏覽器就會優先從緩存中加載資源,不用向服務器請求資源,從而提高了網站的訪問速度。
CPU中的指令寄存器:它是芯片上的指令倉庫,有了它CPU就不必停下來查找計算機內存中的指令,從而大幅提高了CPU的運算速度。

數據庫連接池:有了它,就不必在操作數據庫時每次都創建新的數據庫連接,已有的連接可以被循環重複使用,減少了開銷同時也提高了效率。

Java程序中的庫表內存化:程序需要頻繁操作的數據庫表,可以預先存放到內存中,這樣的話,程序可以直接從內存操作數據,而且也不必使用數據庫連接資源,速度得到提升,資源消耗也降低。

線程池:有了線程池,就不必每次都創建一個新的線程,已有的線程可以被循環重複使用,既降低的開銷也提高了效率。

JIT Just-in-time Java即時編譯器:一般Java程序運行過程是由編譯器將源碼編譯成class字節碼文件,字節碼文件可以被JVM識別和轉換成計算機識別的機器碼指令。在JVM將字節碼轉換成機器碼時,有兩種方式配合一起完成:解釋器(負責將字節碼一條條翻譯成機器指令)和JIT即時編譯器(當JVM發現部分代碼經常被運行時,就會把這些熱點代碼翻譯爲與本地平臺相關的機器碼指令,還會將這些機器指令保存起來,再此執行時就不必翻譯了)。

字符串常量池:已經創建過的字符串常量,會被緩存在字符串常量池中,再次使用就不必再次創建了。

MyBatis中的一級緩存/二級緩存:SQL及參數一致,則直接讀取緩存數據,而不用再去數據庫中查詢

MyBatis的Configuration對象:程序啓動初始化時,會從xml配置文件讀取所有配置信息,並存入到Configuration對象中,配置信息中的各個子節點(如映射器節點/插件節點等)的信息也會相應的存入到配置對象的相應屬性中,以便後續取用。比如插件:在解析配置文件時,在MyBatis的上下文初始化過程中,就開始讀入插件節點和配置的參數,同時使用反射技術生成對應的插件實例,然後調用插件方法中的setProperties方法來設置我們配置的參數,將插件實例保存到配置對象中,以便讀取和使用它。所以插件的實例對象是一開始就被初始化的,而不是用到時才初始化,我們使用它時,直接拿出來就可以了,這樣有助於性能的提高。interceptorChain在Configuration裏面有一個屬性,它裏面有一個addInterceptor方法。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章