原创 java面試:編譯時與運行時

在開發和設計的時候,我們需要考慮編譯時,運行時以及構建時這三個概念。理解這幾個概念可以更好地幫助你去了解一些基本的原理。下面是初學者晉級中級水平需要知道的一些問題。 Q.下面的代碼片段中,行A和行B所標識的代碼有什麼區別呢?

原创 java內存模型與線程

一、硬件的效率與緩存一致性 1.解決計算機硬件處理器和內存交互緩慢的問題,在計算機系統中加入一層高速緩存作爲中介。 2.每一個處理器都有一個緩存,但是卻共享一個內存,會出現緩存不一致問題,處理器在訪問緩存的時候要遵循一些協議。

原创 設計模式之建造者模式

一、建造者模式 1.建造者模式定義:講一個複雜對象的構建與它的表示分離,使得同樣的構建過程可以創建不同的表示。 2.建造者模式UML 3.建造者模式示例 import java.util.ArrayList; import

原创 java內存區域與內存溢出異常

一、java虛擬機所管理的內存包括幾個運行數據區域 程序計數器 (1)在虛擬機的概念模型裏,字節碼解釋器工作時就是通過改變這個計數器的值來選取下一條需要執行的字節碼指 令,分支、循環、跳轉、異常處理、線

原创 設計模式之組合模式

一、結構性設計模式-組合模式 1.組合模式定義:將對象組合成樹形結構以表示“部分-整體”的層次結構。組合模式使得用戶對單個對象和組合對象的使用具有一致性。 2.組合模式的UML 3.組合模式示例 import java.ut

原创 設計模式之適配器模式

一、結構性設計模式-適配器設計模式 1.適配器設計模式的定義:將一個類的接口轉換成客戶希望的另一個接口,使得原本由於接口不兼容而不能一起工作的那些類可以一起工作。java中目前支持對象適配器模式,並且只有在雙方都不太容易修改的時

原创 設計模式之原型模式

一、原型模式 1.原型模式定義:用原型實例指向創建對象的種類,並且通過拷貝這些原型創建新的實例。原型對象就是通過一個對象再創建另一個可定製的對象,而不需要知道任何創建的細節。而建造者模式是知道最終創建產品,然後通過不同的實現方式

原创 設計模式之橋接模式

一、結構性設計模式-橋接模式 1.橋接模式定義:將抽象部分與它的實現部分分離,使他們都可以獨立的變化,實現系統可能有多角度分類,每一種分類都有可能變化,那麼就把這種多角度分離出來讓它們獨立變化,減少它們之間的耦合。 2.橋接模式

原创 Tomcat正統類加載器架構

1、Web服務器要解決的幾個問題 (1)部署在同一個服務器上面的不同的Web應用程序所使用的Java類庫可以實現相互隔離。 (2)部署在同一個服務器上面的不同的Web應用程序所使用的Java類庫可以互相共享。 (3)服務器需

原创 線程安全與鎖優化

一、java 語言中的線程安全 1.java 中操作共享的數據的5類操作 (1)不可變:java語言中,如果共享數據是基本類型,只要定義時使用final關鍵字修飾就可以保證它不可變;如果共享數據類型是對象,那就需要保證對象的行

原创 設計模式之工廠模式

一、簡單工廠模式 1.簡單抽象工廠模式,又稱作靜態工廠方法模式,由工廠(使用switch)決定創建具體產品,不符合開放關閉原則。 2.簡單工廠模式UML圖 3.簡單工廠模式示例 package cn.sy.edu.facto

原创 虛擬機類加載機制

一、概述 1.類加載機制定義:虛擬機把Class文件加載到內存,並對數據進行校驗、轉換解析和初始化,最終形成可以被虛擬機直接使用的java類型,這就是虛擬機的類加載機制。 2.在java中類型的加載、連接和初始化過程都是在程序運

原创 虛擬機字節碼執行引擎

一、運行時棧幀結構 1.棧幀定義:用於支持虛擬機進行方法調用和方法執行的數據結構,它是虛擬機的虛擬機棧的棧元素。存儲了局部變量表、操作數棧、動態連接、方法返回地址等信息,每一方法從調用開始到執行完成的過程,對於棧幀在虛擬機中裏面

原创 設計模式之單例模式

一、單例模式 1.單例模式定義:保證一個類僅有一個實例,並提供一個訪問它的全局訪問點,該類不可子類化。 2.單例模式的UML 3.單例模式的示例 import java.io.ObjectStreamException; i

原创 Spring實戰4之Spring Web Flow篇

一、披薩流程 首先從構建一個高層次的流程開始,它定義了訂購披薩的整體流程,然後將其拆分爲多個子流程。 1.定義基本流程 當顧客訪問Spizza網站時,他們需要進行用戶識別、選擇一個或多個披薩添加到訂單、提供支付信息,然後提交訂單,等