j2EE基礎概念(總結)

來源:互聯網
上載者:User
j2ee|概念 Java基礎方面:

1,範圍public,protected,private,以及不寫時的區別

2,ArrayList和Vector的區別,HashMap和Hashtable的區別

3,char型變數能不能定義為一個中文?為什麼?

4,多線程有幾種表示方法,都是什麼?同步有幾種實現方法,都是什麼?

5,繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼?

6,內部類的實現方式?

7,記憶體回收機制,如何最佳化程式?

8,float型float f=3.4是否正確?

Jsp方面

1,jsp有哪些內建對象?作用分別是什麼?

2,jsp有哪些動作?作用分別是什麼?

3,include的兩種實現方式的區別?

4,兩種跳轉方式分別是什麼?有什麼區別?

Servlet方面

1,說一說Servlet的生命週期?

2,Servlet版本間(忘了問的是哪兩個版本了)的不同?

Jdbc,Jdo方面

1,可能會讓你寫一段Jdbc連Oracle的程式.

2,Class.forName的作用?為什麼要用?

3,Jdo是什麼?

Xml方面

1,xml有哪些解析技術?區別是什麼?

2,你在項目中用到了xml技術的哪些方面?如何?的?

3,用jdom解析xml檔案時如何解決中文問題?如何解析?

EJB方面

1,EJB2.0有哪些內容?分別用在什麼場合? EJB2.0和EJB1.1的區別?

MVC方面

1,MVC的各個部分都有那些技術來實現?如何??

設計模式方面:

1,開發中都用到了那些設計模式?用在什麼場合?

JavaScript方面

1,如何校正數字型?

CORBA

1,CORBA是什麼?用途是什麼?


誰來做出解答阿!
-------------------------------------------------------------
回答一部分。
1,範圍public,protected,private,以及不寫時的區別
public 在其他的包中的類也可以引用,protected只限於同一個包內的類,private只有自己可以使用。不寫的時候和protected一樣。
2,ArrayList和Vector的區別,HashMap和Hashtable的區別
ArrayList需要預先定義大小,Vector不用。HashMap和Hashtable的預設初始化容量(default initial capacity)不同 HashMap是16,Hashtable為11。
3,char型變數能不能定義為一個中文?為什麼?
可以定義。因為中文也是16bit的。
4,多線程有幾種表示方法,都是什麼?同步有幾種實現方法,都是什麼?
查看jdk文檔。
5,繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼?
這個具體的去看。
6,內部類的實現方式?
內部類”是在另一個類的內部聲明的類。從Java 1.1開始,你可在一個類中聲明另一個類,這與聲明欄位和方法非常相似。
7,記憶體回收機制,如何最佳化程式?
在變數不使用的時候將其賦值為null。
8,float型float f=3.4是否正確?
不行。類型不符。改為float f=3.4f。

Servlet方面

1,說一說Servlet的生命週期?
Servlet的生命週期是當伺服器裝載運行servlets,接收來自用戶端的多個請求並且返回資料給用戶端,然後再刪除移開servlets的時間。
2,Servlet版本間(忘了問的是哪兩個版本了)的不同?
我個人認為這個問題沒有什麼實際意義。
Jdbc,Jdo方面

1,可能會讓你寫一段Jdbc連Oracle的程式.
有通式。Connection conn = null;
String driver = "oracle.jdbc.driver.OracleDriver";
String url = "jdbc:oracle:thin:@xxx:1521:xxx";
String user = "xxx";
String password = "xxx";
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(url, user, password);
}
catch (ClassNotFoundException e)
{
System.err.print("ClassNotFoundException: Load jdbc-driver failure!");
System.err.println(e.getMessage());
}
catch (SQLException e)
{
e.printStackTrace();
try
{
if (conn != null)
{
conn.close();
conn = null;
}
}
catch (SQLException se)
{
}
}
2,Class.forName的作用?為什麼要用?
返回一個指定名稱的class對象。用它是為了load你指定名稱的class。
3,Jdo是什麼?
全稱Java Data Objects。提供了在交易處理資料庫中Java物件模型的明顯的持久性,直接支援了Java類的執行個體,應用程式不用處理任何其它的資料模型。

Xml方面

1,xml有哪些解析技術?區別是什麼?
1) CSS是Cascading Style Sheet的縮寫,即“層疊樣式表”,在1997年W3C頒布HTML4標準的同時也公布了有關樣式單的第一個標準CSS1。
2)XSL(eXtensible Style Language,可擴充的樣式語言)是最強大和靈活的樣式語言,是特別為應用XML而設計的,它完全遵循XML規則,進一步完善了XML本身。
3)Data-Island。還有幾個,但是主要是第二個,其他的我認為不是主流。
2,你在項目中用到了xml技術的哪些方面?如何?的?
xslt,fo,html解析,xml資料封裝和解析。使用第三方軟體包實現。
3,用jdom解析xml檔案時如何解決中文問題?如何解析?
沒用過,不太清楚。我使用的castor。(jbuilder9中有)

JavaScript方面

1,如何校正數字型?
isNaN(parseFloat(xxx))如果為true,則不是數字。
---
做點力所能及的補充:
(1)Vector的方法都是同步的(Synchronized),是安全執行緒的(thread-safe),而
ArrayList的方法不是,由於線程的同步必然要影響效能,因此,ArrayList的效能比
Vector好。
(2)當Vector或ArrayList中的元素超過它的初始大小時,Vector會將它的容量翻倍,而
ArrayList只增加50%的大小,這樣,ArrayList就有利於節約記憶體空間。
(3)Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一
個實現。
(4)效能方面的比較類似 Vector和ArrayList,比如Hashtable的方法是同步的,而
HashMap的不是。
(5)只有HashMap可以讓你將空值作為一個表的條目的key或value
---
1,xml有哪些解析技術?區別是什麼?

有兩種:DOM和SAX.

DOM:可以得到一個包含文檔中所有元素的樹結構.
SAX:在文檔的不同治點產生事件,應用程式可以決定如何處理這些事件以從解析器中得到資訊.
---
Java基礎方面:(未寫的是已經有人回答或我自己也未知或不確定)

4,多線程有幾種表示方法,都是什麼?同步有幾種實現方法,都是什麼?
:::
我所知道的有兩種實現方法:
一種是將方法同步:public synchronized methodName(...){....}
另一種是將對象同步(此對象不能是null值): synchronized (object) { ..... }

5,繼承時候類的執行順序問題,一般都是選擇題,問你將會列印出什麼?
繼承時候類的執行順序是:
父類中被static關鍵字定義的部分是按所定義的順序而最先被初始化的;
父類建構函式(按調用順序);

子類中被static關鍵字定義的部分是按所定義的順序而最先被初始化的;
子類建構函式(按調用順序);
其他則按方法的調用順序.

6,內部類的實現方式?
public class XXXXX{ // 只有一個public類

...

class YYYYY{ // 可以有的訪問類型是[ protected | private | 無 ]
...
}

}

8,float型float f=3.4是否正確?
我也不知道是否正確.
我一般是這樣:float f=3.4F; 或 float f=3.4f;// 後面跟一個英文大寫或小寫字母F
---
JavaScript方面

1,如何校正數字型?
var v = document.all.Telephone.value;
if(isNan(v)){
alert("全是數字");
}
---
yangtaylor的解釋有一半以上是錯誤的,大家不要作標準答案背哦
noisysilence的解釋很不錯,說明你已經是高手了,不過說明一點,Vector的精妙設定是在於第二個參數的設定,其餘的都基本正確。

關於“範圍public,protected,private,以及不寫時的區別”的說明---
前三個常用,就不用說了,關於不寫時的情況我來說明一下:
JAVA的範圍其實有5種,除了上面的3種外還有:private protected,default
public--------------不說了
protected-----------除了所有的子類可訪問外,同包的非子類也可以訪問
private-------------也不說了
private protected---只有子類可以訪問(這才是我們理解意義上的protected)
default-------------只有同包的類可以訪問,即使是子類但不同包仍不能訪問

我也是看了很多參考書才最終得到的結果,在此獻給大家了。
---
ArrayList和Vector的區別上面已說,我說說它們會帶來得影響吧。
同為對象集合,ArrayList可由編譯器檢查而Vector則不會,所以如果用Vector返回對象集合,編譯器是無法查錯得,只有在運行時才能才能發現。例如:
********採用Vector*************
server side:
public Vector getCustomDataSet(int num)
{
Vector v = new Vector();
for(int i=0; i<num; i++)
{
CustomData customData = new CustomData(i);
v.add(customData) //此處加入自訂的資料結構CustomData
}
return v;
}
client side:

Vector v = getCustomDataSet(5);
for(int i=0; i<v.size(); i++)
{
OtherData data = (OtherData)v.get(i);//此處取出的是customData卻轉換為OtherData,編譯器通過
}

********採用ArrayList*************
server side:
public CustomData[] getCustomDataSet(int num)
{
CustomData[] customData = new CustomData[5];
for(int i=0; i<num; i++)
{
customData[i] = new CustomData(i);
}
return customData;
}
client side:

CustomData[] datas = getCustomDataSet(5);
for(int i=0; i<datas.length; i++)
{
OtherData data = datas[i];//編譯不通過,類型不符
}

---
下邊是以前我找的關於Hashtable和HashMap的不同之處。


Hashtable和HashMap
Hashtable和HashMap類有三個重要的不同之處。第一個不同主要是曆史原因。Hashtable是基於陳舊的Dictionary類的,HashMap是Java 1.2引進的Map介面的一個實現。
也許最重要的不同是Hashtable的方法是同步的,而HashMap的方法不是。這就意味著,雖然你可以不用採取任何特殊的行為就可以在一個多線程的應用程式中用一個Hashtable,但你必須同樣地為一個HashMap提供外同步。一個方便的方法就是利用Collections類的靜態synchronizedMap()方法,它建立一個安全執行緒的Map對象,並把它作為一個封裝的對象來返回。這個對象的方法可以讓你同步訪問潛在的HashMap。這麼做的結果就是當你不需要同步時,你不能切斷Hashtable中的同步(比如在一個單線程的應用程式中),而且同步增加了很多處理費用。
第三點不同是,只有HashMap可以讓你將空值作為一個表的條目的key或value。HashMap中只有一條記錄可以是一個空的key,但任意數量的條目可以是空的value。這就是說,如果在表中沒有發現搜尋鍵,或者如果發現了搜尋鍵,但它是一個空的值,那麼get()將返回null。如果有必要,用containKey()方法來區別這兩種情況。
一些資料建議,當需要同步時,用Hashtable,反之用HashMap。但是,因為在需要時,HashMap可以被同步,HashMap的功能比Hashtable的功能更多,而且它不是基於一個陳舊的類的,所以有人認為,在各種情況下,HashMap都優先於Hashtable。
---
XML 的編程介面: DOM SAX JDOM JAXP

文件物件模型(通常稱為 DOM)為 XML 文檔的已解析版本定義了一組介面。解析器讀入整個文檔,然後構建一個駐留記憶體的樹結構,然後您的代碼就可以使用 DOM 介面來操作這個樹結構。您可以遍曆樹以瞭解原始文檔包含了什麼,您可以刪除樹的幾個部分,還可以重新排列樹和添加新的分支
DOM 提供了一組豐富的功能,您可以用這些功能來解釋和操作 XML 文檔,但使用它們是有代價的。
DOM 構建整個文檔駐留記憶體的樹。如果文檔很大,就會要求有極大的記憶體。
DOM 建立表示原始文檔中每個東西的對象,包括元素、文本、屬性和空格。如果您只需關注原始文檔的一小部分,那麼建立那些永遠不被使用的對象是極其浪費的。
DOM 解析器必須在您的代碼取得控制權之前讀取整個文檔。對於非常大的文檔,這會引起顯著的延遲


為瞭解決 DOM 問題,XML-DEV 參與者們(由 David Megginson 領導)建立了 SAX 介面。SAX 的幾個特徵解決了 DOM 的問題:

SAX 解析器向您的代碼發送事件。當解析器發現元素開始、元素結束、文本、文檔的開始或結束等時,它會告訴您。您可以決定什麼事件對您重要,而且可以決定要建立什麼類型的資料結構以儲存來自這些事件的資料。如果您沒有顯式地儲存來自某個事件的資料,它就被丟棄。
SAX 解析器根本不建立任何對象,它只是將事件傳遞給您的應用程式。如果希望基於那些事件建立對象,這將由您來完成。
SAX 解析器在解析開始的時候就開始發送事件。當解析器發現文檔開始、元素開始和文本等時,代碼會收到一個事件。您的應用程式可以立即開始產生結果;您不必一直等到整個文檔被解析完畢。更妙的是,如果您只尋找文檔中某些內容,代碼一旦找到所要找的東西就可以拋出一個異常。該異常會停止 SAX 解析器,然後代碼用它找到的資料做它需要做的任何事。
SAX 解析器也有些問題引人關註:

SAX 事件是無狀態的。當 SAX 解析器在 XML 文檔中發現文本時,它就向您的代碼發送一個事件。該事件僅僅給您發現的文本;它不告訴您什麼元素包含那個文本。如果您想知道這一點,則必須自己編寫狀態管理代碼。
SAX 事件不是持久的。如果應用程式需要一個資料結構來對 XML 文檔建模,則必須自己編寫那樣的代碼。如果您需要從 SAX 事件訪問資料,並且沒有把那個資料存放區在代碼中,那麼您不得不再次解析該文檔。

JDOM 是基於 Java 技術的開放源碼項目,它試圖遵循 80/20 規則:用 DOM 和 SAX 20% 的功能來滿足 80% 的使用者需求。JDOM 使用 SAX 和 DOM 解析器,因此它是作為一組相對較小的 Java 類被實現的。

JDOM 的主要特性是它極大地減少了您必須編寫的代碼數量。儘管本篇介紹性教程並不深入討論編程主題,但 JDOM 應用程式的長度通常是 DOM 應用程式的三分之一,大約是 SAX 應用程式的一半。(當然,堅持使用 DOM 的純粹主義者會建議說:從長遠來看,學習和使用 DOM 終會有所回報)。JDOM 並不做所有的事,但對於大多數您要做的解析,它可能正好適合您。

儘管 DOM、SAX 和 JDOM 為大多數常見任務提供了標準介面,但仍有些事情是它們不能解決的。例如,在 Java 程式中建立 DOMParser 對象的過程因 DOM 解析器的不同而不同。為了修正這個問題,Sun 發布了 JAXP(用於 XML 解析的 Java API,Java API for XML Parsing)。該 API 為使用 DOM、SAX 和 XSLT 處理 XML 文檔提供了公用介面。

JAXP 提供的諸如 DocumentBuilderFactory 和 DocumentBuilder 之類的介面為不同的解析器提供了一個標準介面。還有一些方法可以允許您控制底層的解析器是否可以識別名稱空間以及是否使用 DTD 或模式來驗證 XML 文檔。
為了確定哪種介面適合您,您需要理解所有介面的設計要點,而且需要理解應用程式用您將要處理的 XML 文檔來做什麼。考慮下面的問題將有助於您找到正確的方法。

要用 Java 編寫應用程式嗎?JAXP 使用 DOM、SAX 和 JDOM;如果您用 Java 編寫代碼,那麼您應使用 JAXP 將您的代碼與各種解析器實現的細節隔離。
應用程式將如何部署?如果您的應用程式將要作為 Java applet 部署,那麼您會希望使要下載的代碼數量最小,別忘了 SAX 解析器比 DOM 解析器小。還要知道使用 JDOM 時,除了 SAX 或 DOM 解析器之外還要求編寫少量的代碼。
一旦解析了 XML 文檔,還需要多次訪問那些資料嗎?如果您需要回過頭來訪問 XML 檔案的已解析版本,DOM 可能是正確的選擇。而 SAX 事件被觸發時,如果您以後需要它,則由您(開發人員)自己決定以某種方式儲存它。如果您需要訪問不曾儲存的事件,則必須再次解析該檔案。而 DOM 自動儲存所有的資料。
只需要 XML 摘要檔案的少量內容嗎?如果您只需要 XML 摘要檔案的少量內容,那麼 SAX 可能是正確的選擇。SAX 不會為源檔案中的每個東西建立對象;您要確定什麼是重要的。使用 SAX,您要檢查每個事件以瞭解它是否與您的需要有關,然後相應地處理它。更妙的是,一旦找到您正在尋找的東西,您的代碼就會拋出一個異常來完全停止 SAX 解析器。
您正在一台記憶體很少的機器上工作嗎?若是的話,不管您可能考慮到的其它因素是什麼,SAX 是您的最佳選擇。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.