Time of Update: 2017-01-19
定義:面板模式(Facade),為子系統中的一組介面提供一個一致的介面,定義一個高層介面,這個介面使得這一子系統更加容易使用特點: (1)實現了子系統與用戶端之間的松耦合關係。 (2)用戶端屏蔽了子系統組件,減少了用戶端所需處理的對象數目,並使得子系統使用起來更加容易。企業級開發和常用架構重的應用:很多,比如常見的字串的分割方法spilt也是具體執行個體:package com.test.faced;/** * 以喝茶為例:
Time of Update: 2017-01-19
實現方式和繼承方式有什麼區別呢?*區別:*繼承Thread:線程代碼存放在Thread子類run方法中*實現Runnable:線程代碼存放在介面的子類的run方法中*實現方式的好處:避免了單繼承的局限性*在定義線程時,建議使用實現方式,當然如果一個類沒有繼承父類,那麼也可以通過繼承Thread類來實現多線程*注意:Runnable介面沒有拋出異常,那麼實現它的類只能是try-catch不能throws*Java對多線程的安全問題提供了專業的解決方式就是同步代碼塊synchronized(對象){
Time of Update: 2017-01-19
thinking in java3中的多態People are often confused by other, non-object-oriented features of Java, like method overloading, which are sometimes presented as object-oriented. Don't be fooled: If it isn't late binding, it isn't
Time of Update: 2017-01-19
在電腦編程中,適配器模式(有時候也稱封裝樣式或者封裝)將一個類的介面適配成使用者所期待的。一個適配允許通常因為介面不相容而不能在一起工作的類工作在一起,做法是將類自己的介面包裹在一個已存在的類中。特點:將兩個不相容的類通過介面實現在一起工作企業級開發和常用架構中的應用:流介面,例如將字元流轉換為位元組流輸出是用的outputstreamreader適配器模式分為類適配器和對象適配器:舉例:電腦只有USB介面,但是鍵盤只有圓口,這時就需要一個適配器,讓鍵盤能輸入資料到電腦類適配器:package
Time of Update: 2017-01-19
定義:在不必改變原類檔案和使用繼承的情況下,動態地擴充一個對象的功能。它是通過建立一個封裝對象,也就是裝飾來包裹真實的對象。特點: (1) 裝飾對象和真實對象有相同的介面。這樣用戶端對象就能以和真實對象相同的方式和裝飾對象互動。 (2) 裝飾對象包含一個真實對象的引用(reference) (3)
Time of Update: 2017-01-19
volatile這個關鍵字可能很多朋友都聽說過,或許也都用過。在Java 5之前,它是一個備受爭議的關鍵字,因為在程式中使用它往往會導致出人意料的結果。在Java 5之後,volatile關鍵字才得以重獲生機。volatile 關鍵字作用是,使系統中所有線程對該關鍵字修飾的變數共用可見,可以禁止線程的工作記憶體對volatile修飾的變數進行緩衝。volatile
Time of Update: 2017-01-19
定義:責任鏈模式(Chain of Responsibility
Time of Update: 2017-01-19
java中有哪些鎖這個問題在我看了一遍<java並發編程>後盡然無法回答,說明自己對於鎖的概念瞭解的不夠。於是再次翻看了一下書裡的內容,突然有點開啟腦門的感覺。看來確實是要學習的最好方式是要帶著問題去學,並且解決問題。在java中鎖主要兩類:內部鎖synchronized和顯示鎖java.util.concurrent.locks.Lock。但細細想這貌似總結的也不太對。應該是由java內建的鎖和concurrent實現的一系列鎖。為什麼這說,因為在java中一切都是對象,而java
Time of Update: 2017-01-19
1。 二叉樹介面public interface BinaryTreeInterface<T> { public T getRootData(); public int getHeight(); public int getNumberOfRoot(); public void clear(); public void setTree(T rootData); // 用rootData設定樹 public void setTree(T
Time of Update: 2017-01-19
定義:用來降低多個對象和類之間的通訊複雜性。中介者模式屬於行為型模式。特點: 1、降低了類的複雜度,將一對多轉化成了一對一。 2、各個類之間的解耦。 3、符合迪米特原則。企業級開發和常用架構中的應用:mvc模式中的c具體執行個體:public class Demo { public static void main(String[] args) { Mediator m =
Time of Update: 2017-01-19
定義:請求以命令的形式包裹在對象中,並傳給調用對象。調用對象尋找可以處理該命令的合適的對象,並把該命令傳給相應的對象,該對象執行命令。特點: 1、降低了系統耦合度。 2、新的命令可以很容易添加到系統中去。企業級開發和常用架構中的應用:事務,struts的action控制器執行個體:public class Demo { public static void main(String[] args) { Reicever
Time of Update: 2017-01-19
定義:一個類的行為或其演算法可以在運行時更改。在策略模式中,我們建立表示各種策略的對象和一個行為隨著策略對象改變而改變的 context 對象。策略對象改變 context 對象的執行演算法。特點: 1、演算法可以自由切換。 2、避免使用多重條件判斷。
Time of Update: 2017-01-19
冒泡(Bubble Sort)排序的基本思想是:將待排序的數組看作從上倒下排列,把關鍵字較小的記錄看作較輕的,關鍵字較大的看作較重的,較小的關鍵字的值看作是水中的氣泡向上浮,較大的關鍵字如水中的石塊向下沉,當氣泡都浮到相應的位置的時候排序結束.演算法效能分析
Time of Update: 2017-01-19
定義:一個抽象類別公開定義了執行它的方法的方式/模板。它的子類可以按需要重寫方法實現,但調用將以抽象類別中定義的方式進行特點: 1、封裝不變部分,擴充可變部分。 2、提取公用代碼,便於維護。
Time of Update: 2017-01-19
定義:在狀態模式(State Pattern)中,類的行為是基於它的狀態改變的。特點:1、封裝了轉換規則。2、枚舉可能的狀態,在枚舉狀態之前需要確定狀態種類。3、將所有與某個狀態有關的行為放到一個類中,並且可以方便地增加新的狀態,只需要改變對象狀態即可改變對象的行為。4、允許狀態轉換邏輯與狀態物件合成一體,而不是某一個巨大的條件陳述式塊。5、可以讓多個環境對象共用一個狀態物件,從而減少系統中對象的個數。企業及開發和常用架構中的應用:執行個體:public class Demo { public
Time of Update: 2017-01-19
定義:當對象間存在一對多關聯性時,則使用觀察者模式(Observer Pattern)。比如,當一個對象被修改時,則會自動通知它的依賴對象。特點: 1、觀察者和被觀察者是抽象耦合的。 2、建立一套觸發機制。企業級開發和常用架構中的應用:Java內建觀察者類,servlet中的filter,分布式的訊息佇列執行個體:public class Demo { public static void main(String[]
Time of Update: 2017-01-19
定義:儲存一個對象的某個狀態,以便在適當的時候恢複對象特點: 1、給使用者提供了一種可以恢複狀態的機制,可以使使用者能夠比較方便地回到某個曆史的狀態。 2、實現了資訊的封裝,使得使用者不需要關心狀態的儲存細節。企業級應用和常用架構中的應用:常見文字編輯器使用了該模式執行個體:注意:該執行個體中只有撤銷操作,沒有向前還原作業/** * 目標對象:將要被備忘的對象 */class Word { private String
Time of Update: 2017-01-19
如下所示:String agent = request.getHeader("user-agent"); System.out.println(agent); StringTokenizer st = new StringTokenizer(agent,";"); st.nextToken(); String userbrowser = st.nextToken(); System.out.println(userbrowser); String useros = st.nextToken();
Time of Update: 2017-01-19
下面的這些都算是比較進階的問題了,面試中一般也很少問到,因為它們可能會把面試者拒之門外。不過你可以自己找個時間來實踐一下。 1. System.exit(0)會跳過finally塊的執行 System.setSecurityManager(new SecurityManager() { @Override public void checkExit(int status) { throw new ThreadDeath(); } }); try { System.exit(
Time of Update: 2017-01-19
對於Java初學者來說,想學習Java教程,需要明白,基礎打好才能學得更好,Java教程之學習Java的路線圖的五個必經階段,希望能對Java學習者有所協助。 第一個階段-java基礎階段 1.java文法 2.物件導向 3.常用的api 4.介面編程 5.多線程 6.檔案io 7.java網路編程.. 這是學習java開發的基礎階段,也是以後的學習基石。第二個階段-資料庫階段 1.oracle 2.mysql 3.sql server