原创 《Head First 設計模式》:裝飾者模式

正文 一、定義 裝飾者模式動態地將責任(功能)附加到對象上。若要擴展功能,裝飾者提供了比繼承更有彈性的替代方案。 要點: 裝飾者和被裝飾者有相同的超類型。 可以用一個或多個裝飾者包裝一個對象。 既然裝飾者和被裝飾者有相同的超類型,所以在任

原创 《Head First 設計模式》:觀察者模式

正文 一、定義 觀察者模式定義了對象之間的一對多依賴,這樣一來,當一個對象改變狀態時,它的所有依賴者都會收到通知並自動更新。 要點: 觀察者模式定義了對象之間一對多的關係。 觀察者模式讓主題(可觀察者)和觀察者之間松耦合。 主題對象管理某

原创 《Head First 設計模式》:策略模式

正文 一、定義 策略模式定義了算法族,分別封裝起來,讓它們之間可以相互替換,此模式讓算法的變化獨立於使用算法的客戶。 要點: 策略模式把系統中會變化的部分抽出來封裝。 二、實現步驟 1、創建策略接口 /** * 策略接口 */ pu

原创 《深入理解 Java 虛擬機》讀書筆記:線程安全與鎖優化

正文 一、線程安全 當多個線程訪問一個對象時,如果不用考慮這些線程在運行時環境下的調度和交替執行,也不需要進行額外的同步,或者在調用方進行任何其他的協調操作,調用這個對象的行爲都可以獲得正確的結果,那這個對象是線程安全的。 1、Java 語

原创 《深入理解 Java 虛擬機》讀書筆記:晚期(運行期)優化

正文 在部分商用虛擬機(Sun HotSpot、IBM J9)中,Java 程序最初是通過解釋器進行解釋執行的,當虛擬機發現某個方法或代碼塊的運行特別頻繁時,就會把這些代碼認定爲“熱點代碼”。爲了提高熱點代碼的執行效率,在運行時,虛擬機會把

原创 《深入理解 Java 虛擬機》讀書筆記:類文件結構

正文 一、無關性的基石 1、兩種無關性 平臺無關性: Java 程序的運行不受計算機平臺的限制,“一次編寫,到處運行”。 語言無關性: Java 虛擬機只與 Class 文件關聯,並不關心 Class 文件的來源是何種語言。 2、無關性

原创 《深入理解 Java 虛擬機》讀書筆記:虛擬機性能監控與故障處理工具

正文 一、JDK 的命令行工具 JDK 的 bin 目錄下提供了一些用於監視虛擬機和故障處理的命令行工具。 名稱 主要作用 jps JVM Process Status Tool,顯示正在運行的虛擬機進程 jstat JV

原创 《深入理解 Java 虛擬機》讀書筆記:垃圾收集器與內存分配策略

正文 垃圾收集器關注的是 Java 堆和方法區,因爲這部分內存的分配和回收是動態的。只有在程序處於運行期間時才能知道會創建哪些對象,也才能知道需要多少內存。 虛擬機棧和本地方法棧則不需要過多考慮回收的問題,因爲棧中每一個棧幀分配多少內存基本

原创 《深入理解 Java 虛擬機》讀書筆記:Java 內存區域與內存溢出異常

前言 最近開始看這本書,記得前段時間拿起這本書的時候,心情是相當沉重的!當時的劇本是這樣的—— 內景。家裏 - 下午 我(畫外):唉,有點無聊啊!(偶然撇過書架)這麼多書得看到什麼時候啊,要不要拿一本翻翻呢?但是在家裏好像有點看不下去啊,