標籤:接受 預設 sql語句 介面互動 final 中文 提交 remove 庫存
Base:OOA是什嗎?OOD是什嗎?OOP是什嗎?{oo(object-oriented):基於對象概念,以對象為中心,以類和繼承為構造機制,來認識,理解,刻畫客觀世界和設計,構建相應的軟體系統的一門方法;本意----類比人類的思維方式,使開發,維護,修改更加容易 - ooa(object-oriented analysis):強調的是在系統調查資料的基礎上,針對OO方法所需要的素材進行的歸類分析和整理,而不是 對管理業務現狀和方法的分析-------其實就是進一步對oo進行細化,初步得出該oo的屬性與方法(或者簡單的理解:在得出的文檔中對介面的粗略定 義) - ood(object-oriented design):OO方法中一個中間過渡環節,其主要作用是對ooa分析的結果作進一步的正常化整理,以便能夠被OOP直接接受------整理和定義oo的屬性和方法 - oop(object-oriented programming):把組件的實現和介面分開,並且讓組件具有多態性----(抽象,繼承,封裝,多態)面向介面編程? - }分別是:物件導向分析、物件導向設計、物件導向編程 抽象的概念:繼承的概念:對象的一個新類可以從現有的類中派生,這個過程就是類的繼承,子類繼承父類的特性。子類可以從父類繼承方法和執行個體變數,並且子類可以修改或增加新的方法以便更適合的使用。{繼承主要實現重用代碼,節省開發時間。}封裝的概念:{封裝是實現物件導向程式設計的第一步,封裝就是將資料或函數等集合在一個個的單元中(我們稱之為類)。被封裝的對象通常被稱為抽象資料類型。 }多態的概念:構造器不可被Override但是可以Overload。{多態:同一操作作用於不同的對象,可以有不同的解釋,產生不同的執行結果。在運行時,可以通過指向基類的指標,來調用實現衍生類別中的方法。} 介面是否可繼承介面?抽象類別是否可以實現介面?抽象類別是否可繼承實體類?可以;可以;可以。 Overload和Override的區別兩者是多態的不同表現,Override是父類和子類之間多態性的一種表現,Overload是一個類中多態性的一種表現。Overload本身和傳回值無關,所以是可以改變傳回值的。{ Override是重寫:方法名稱、參數個數,類型,順序,傳回值類型都是必須和父類方法一致的。它的關係是父子關係Overload是重載:方法名稱不變,其餘的都是可以變更的。它的關係是同一個類,同一個方法名,不同的方法參數或傳回值。備忘:它們都是是Java多態性的不同表現 } abstract class和interface的區別抽象類別中可以存在非抽象方法,而介面不可以。抽象類別只可以被單繼承而介面則可以實現多繼承。 &和&&的區別&是位元運算符,表示按位與運算,&&是邏輯運算子,表示邏輯與(and) int和Integer有什麼區別Java的兩種不同的類型,基礎資料型別 (Elementary Data Type)和複合類型,Integer是int的封裝類型,提供了多種方法調用。運行速度上也有著區別,基礎資料型別 (Elementary Data Type)的運行速度更快。 String是最基本的資料類型嗎?基礎資料型別 (Elementary Data Type)只有以下8種:boolean,byte,char,short,int,float,long,double。所以String不是最基本的資料類型。 String和StringBuffer的區別都可以儲存和操作字串,String提供了數值不可變的字串,而StringBuffer可以進行字串的修改。 是否可繼承String類不可以,String類是final的。 final,finally,finalize的區別final是最終形態修飾符,修飾變數時,此變數為常量,修飾方法時,此方法不可被重寫,修飾類時,此類不可被繼承。finally是異常處理語句結構的一部分,表示總會被執行的語句塊。finalize是Object中的方法,在記憶體回收行程執行的時候會調用被回收對象的該方法用於釋放一些資源。 String s = new String(“xyz”)一共建立了幾個String對象?兩個{一個或兩個} Static Nested Class和Inner Class的不同靜態內部類可以不依賴於外部執行個體被執行個體化,而內部類需要在外部類執行個體化後才能執行個體化。 GC是什嗎?為什麼要有GC?GC是記憶體回收行程,程式員經常會忘記或錯誤的進行記憶體回收而導致程式或系統的不穩定甚至崩潰,java使用GC可以自動回收記憶體。 abstract的method是否可同時是static,是否可同時是native,是否可同時是synchronized都不能。 數組有沒有length()方法?String有沒有length()方法沒有;有。 switch能夠作用在byte上,能否作用在long上,能否作用在String上switch只能作用於以下幾種類型:byte,char,short,int。 兩個對象值相同,但卻可有不同的hashcode這話不對,值相同,hashcode一定相同。 Java是值傳遞還是引用傳遞?值傳遞,一個對象被當作參數傳遞進一個方法後,值被改變,在此方法結束後,被改變的值將保留,那是因為參數的值就是對該對象的引用,所以引用其實是不同的,但是所指對象是相同的。 Java的介面和C++的虛類的相同和不同處Java的介面和C++的虛類都可以實現多繼承,只是C++的虛類類似於Java的抽象類別。 JVM載入類檔案的原理機制JVM中類的裝載是由ClassLoader和它的子類來實現,ClassLoader是一個重要的Java運行時系統組件,負責在運行時尋找和裝入類檔案的類。 char型變數能儲存一個中文漢字嗎?能,因為java中以unicode編碼,一個char佔16個位元組,所以可以。 邏輯操作(&,|,^)與條件操作(&&,||)的區別條件操作只能操作boolean型,而邏輯操作不僅可以操作boolean還可以運算元值型。邏輯操作不會產生短路。 是否可以從一個static方法內部發出對非static方法的調用不可以。 寫clone()方法時,通常都有一行代碼,是什嗎?clone有預設行為,super.clone();負責產生正確大小的空間,並逐位複製。 靜態變數和執行個體變數的區別靜態變數為類所有,一個類的每一個執行個體都共用該變數,因此,對於每個執行個體來說,其值都是一致的。執行個體變數為每一個執行個體所特有,因此,對於每個執行個體來說,執行個體變數的值都保證了自己的某些狀態。 Anonymous Inner Class是否可繼承其他類或實現介面都可以。 Java中有沒有goto?有,是保留字,但是不能使用。 存取修飾詞的區別範圍 當前類 同包 子類 其他 public √ √ √ √ protected √ √ √ × default(不寫時) √ √ × × private √ × × × Java是從什麼語言改進重新設計?C++ 以下哪句話正確?A.Java程式經過編譯後產生machine codeB.Java程式經過編譯後產生byte codeC.Java程式經過編譯後產生dllD.以上都不正確答案:B 以下說法正確的有A.class中constructor不可省略B.constructor必須與class同名,但方法不能與class同名C.constructor在一個對象被new時執行D.一個class只能定義一個constructor答案:C 下列語句正確的是A.形參可被視為local variableB.形參可被欄位修飾符修飾C.形參為方法被調用時,真正被傳遞的參數D.形參不可以是對象答案:A public class A{ int x = 10; public A(){ //構造方法 System.out.println("A‘s constructor"); add(2); } public void add(int y){ System.out.println("A‘s add method"); x+=y; }}class B extends A{ int x = 9; public B(){ System.out.println("B‘s constructor"); } public void add(int y){ System.out.println("B‘s add method"); x+=y; } public static void main(String []args){ A a = new B(); System.out.println(a.x); B b = new B(); System.out.println(b.x); A c = new A(); System.out.println(c.x); }} 以上程式輸出結果是多少? 10,9,12{A‘s constructorB‘s add methodB‘s constructor10A‘s constructorB‘s add methodB‘s constructor9A‘s constructorA‘s add method12} Exception:運行時異常與一般異常有何不同異常表示程式運行過程中可能出現的非正常狀態,運行時異常表示虛擬機器的通常操作中可能遇到的異常,是一種常見運行錯誤。Java編譯器要求方法必須聲明拋出可能發生的非運行時異常,但並不要求必須聲明拋出未被捕獲的運行時異常。 Error和Exception的區別Error表示恢複很困難的一種嚴重問題,一般由os或jvm拋出。Exception表示一種設計或實現問題,一般由啟動並執行程式本身產生和拋出。 try裡有個return語句,緊跟在try後的finally中的code是否會被執行會,在return之前。Collection:說出ArrayList,Vectory,LinkedList的儲存效能和特性ArrayList和Vectory實現了線性結構,遍曆元素時,效率較高,LinkedList實現了鏈表結構(雙向迴圈),插入和刪除效率較高,ArrayList是線程非同步,Vectory是線程同步,所以執行效率Vectory較低,但是資料安全性較高。 Collection和Collections的區別Collection是集合架構的父介面,其直接子介面主要有Set和List。Collections是針對集合類的一個工具類,提供一系列靜態方法實現對各種集合的搜尋、排序、安全執行緒化等操作。 HashMap和Hashtable的區別 Hashtable的方法是同步的而HashMap不是,另外HashMap允許有一個null作為key,而Hashtable不允許 heap和stack有什麼區別stack是一種線形集合,按照先進後出(FILO)的方式進行處理。heap是stack的一個組成元素。{1.heap是堆,stack是棧。2.stack的空間由作業系統自動分配和釋放,heap的空間是手動申請和釋放的,heap常用new關鍵字來分配。3.stack空間有限,heap的空間是很大的自由區。在Java中,若只是聲明一個對象,則先在棧記憶體中為其分配地址空間,若再new一下,執行個體化它,則在堆記憶體中為其分配地址。4.舉例:資料類型 變數名;這樣定義的東西在棧區。如:Object a =null; 只在棧記憶體中分配空間new 資料類型();或者malloc(長度); 這樣定義的東西就在堆區如:Object b =new Object(); 則在堆記憶體中分配空間} List,Set,Map是否繼承自Collection介面?List,Set是;Map不是。 Set裡的元素是不能重複的,那麼用什麼方法來區分是否重複?是用==還是equals?有什麼區別?通過iterator來區分是否重複。==判斷的是地址,equals判斷內容和類型是否相同。 List,Set,Map介面各有什麼特點?List以特有次序來存放元素,可以重複。Set內部排序,不可重複。Map介面以索引值對來存放資料,鍵不可重複,值可以重複。Thread:sleep和wait的區別sleep是線程類Thread的方法,導致此線程暫停執行指定時間,將CPU的控制權出讓給其他線程,但監控狀態依然保持,到時恢複。wait是Object類的方法,對此對象調用wait方法導致本線程放棄對象鎖,進入等待此對象的等待鎖定池,只有針對此對象發出notify或notifyAll後本線程才進入對象鎖定池準備獲得對象鎖進入運行狀態。 同步和非同步區別獨佔鎖的概念,同步為線程獨佔,非同步則是共用使用,同步將導致運行效率降低,非同步則可能使得多線程並發訪問資源時產生狀態的衝突。 一個線程進入一個synchronized方法後,其他線程是否可進入此對象的其他方法?可以進入他的其他方法,而不能進入那一個方法。 簡述synchronized( 同步的)和java.util.concurrent.locks.Lock的異同Lock能完成synchronized所實現的所有功能。Lock有比synchronized更精確的線程語義和更好的效能。synchronized會自動釋放鎖,而Lock一定要求程式員手動釋放,並且必須在finally中釋放。 啟動一個線程需要調用什麼方法?start方法。但是並不代表這個線程被啟動了,而是處於一個待啟動狀態。線程啟動將調用run方法。IO:Java中有幾種類型的流?根據不同的分類可以分為:輸入資料流和輸出資料流、位元組流和字元流、節點流和介質流。{按照流是否直接與特定的地方(如磁碟、記憶體、裝置等)相連,分為節點流和處理流兩類。 節點流:可以從或向一個特定的地方(節點)讀寫資料。如FileReader. 處理流:是對一個已存在的流的串連和封裝,通過所封裝的流的功能調用實現資料讀寫。如BufferedReader.處理流的構造方法總是要帶一個其他的流對象做參數。一個流對象經過其他流的多次封裝,稱為流的連結。} 什麼是Java序列化,如何?Java序列化序列化就是一種用來處理物件流程的機制,所謂物件流程也就是將對象的內容進行流花。可以對流化後的對象進行讀寫操作,也可將流化後的對象傳輸於網路之間。序列化是為瞭解決在對物件流程進行讀寫操作時所引發的問題。JDBC:如多使用者同時訪問資料庫,應採用什麼技術來進行資料庫連接管理?可採用資料庫連接池。 Java中訪問資料庫的步驟,Statement和PreparedStatement的區別?(1).註冊驅動(2)建立串連(3)建立執行對象(4)執行SQL語句(5)處理結果集(6)關閉串連PreparedStatement是先行編譯的處理語句,可以使語句本身儲存在記憶體中,在多次執行時效率很高。 JDBC如何?分頁JDBC分頁分為資料庫分頁和應用程式分頁兩種。應用程式分頁講求將所有符合條件資料一次性取出,存放在數組或動態數組中,然後按要求提取。資料庫分頁按照資料庫的不同,採取的方式也不一樣,如MSSQL中按照TOP來進行分頁,而Oracle中則根據偽列來進行分頁。 交易處理的方法Connection中有3種交易處理方案:setAutoCommit(boolean)自動認可;commit()提交;rollback復原。XML:XML文檔定義有幾種形式?有什麼本質區別?解析XML文檔有哪幾種方式?有DTD和schema兩種方式。本質區別在於schema本事就是一份格式良好的XML文檔,並且加入了類型指定,名稱空間等內容,更加適合於XML文檔的定義和規範。解析XML文檔有多種方式,如DOM,SAX,JDOM等。 XML在項目中的運用有哪些?臨時性的資料存放區及傳遞:如AJAX技術從後台將資料傳遞到前台時,可以寫成XML文檔的格式進行傳遞,並在前台進行解析。設定檔:如資料來源的配置,架構的配置,JavaWeb應用的資訊配置等。Java Web:Servlet生命週期,說出Servlet和CGI的區別生命週期:new>init>service>destory。CGI對每個請求都產生新的進程,而servlet是通過多線程的方式服務於每個請求。CGI效率較低。 forward和redirect的區別forward是伺服器請求資源,伺服器直接存取目標地址URL,把URL的響應內容讀取過來,再發送給瀏覽器,瀏覽器無法得知伺服器從哪裡獲得來的內容,所以地址欄中不變。redirect是服務端根據邏輯,發送一個狀態代碼告訴瀏覽器重新去請求一個地址。forward之後request不變,而redirect之後request已經改變。 動態include和靜態include區別動態include用jsp:include動作實現,它總是會檢查所含檔案中的變化,適合用於包含動態網頁面,並且可以帶參數。靜態include不會檢查所含檔案的變化,適合包含靜態頁面。 說出資料庫連接池的工作機制J2EE伺服器啟動時會建立一定數量的串連,並一直維持不少於此數目的串連,串連有兩個狀態,繁忙和空閑。按客戶訪問量進行增加和減少串連數量。在所有串連都處於繁忙狀態時,串連池將增加串連數,當大部分串連都屬於空閑狀態時,串連池將自動清理一些串連。 JSP的內建對象及方法request表示HttpServletRequest對象。它包含了有關瀏覽器請求的資訊,並且提供了幾個用於擷取cookie, header, 和session資料的有用的方法。response表示HttpServletResponse對象,並提供了幾個用於設定送回瀏覽器的響應的方法(如cookies,頭資訊等)。out對象是javax.servlet.jsp.JspWriter的一個執行個體,並提供了幾個方法使你能用於向瀏覽器回送輸出結果。pageContext表示一個javax.servlet.jsp.PageContext對象。它是用於方便存取各種範圍的名字空間、servlet相關的對象的API,並且封裝了通用的servlet相關功能的方法。session表示一個請求的javax.servlet.http.HttpSession對象。Session可以存貯使用者的狀態資訊。applicaton 表示一個javax.servle.ServletContext對象。這有助於尋找有關servlet引擎和servlet環境的資訊。config表示一個javax.servlet.ServletConfig對象。該對象用於存取servlet執行個體的初始化參數。page表示從該頁面產生的一個servlet執行個體。exception記錄了頁面中的異常資訊,此對象只可在page指令屬性isErrorPage=”true”的頁面中才能訪問到。 JSP常用指令page、taglib、include 什麼情況下調用goGet()和doPost()servlet在接收到使用者請求時,調用service方法,此方法根據請求的類型(get或post)調用相應的方法。 JSP和Sevlet的相同和不同,有什麼聯絡?JSP是Servlet技術的演變和擴充,JSP更強調和適合於視圖層,Servlet則更適合於控制層。 MVC的各個部分都有哪些技術來實現?Java的WEB應用中,M層由JavaBean來實現,V層由JSP或HTML來實現,C層由Servlet來實現。 JSP的6個基本動作是什嗎?作用是什嗎?include動作用於動態包含一個檔案。useBean動作用於在指定範圍內擷取一個指定名稱及類型的對象。setProperty動作用於對指定的對象進行賦值操作。getProperty動作用於對指定對象的指定屬性進行取值。forward動作用於把請求轉寄到另一個頁面。plugin動作用於為java外掛程式產生object或embed標記。 get和post的區別get將表單資料按照variable=value的形式,添加到action所指向的URL後面,並且兩者使用“?”串連,各變數之間使用“&”串連;post是將表單中的資料放在form的資料體中,按照變數和值相對應的方式,傳遞到action所指URL。get不安全;post相對較安全。get受URL長度限制,傳輸的資料量小,post則可以傳輸較大資料。get限制form表單的資料集必須為ASCII字元,而post支援整個ISO10646個字元集。 Servlet2.2以上Web Application的基本目錄結構webapps---| |---Application---| |----JSP頁面 |----WEB-INF--| |----classes |----lib |----web.xml JSP的四種範圍page是代表與一個頁面相關的對象和屬性。request是代表與web客戶機發出的一個請求相關的對西哪個和屬性,一個請求可能跨越多個頁面。session是代表與用於某個web客戶機的一個使用者體驗相關的對象和屬性。一個web會話可以跨越多個客戶請求。application代表與整個web應用程式相關的對象和屬性。跨越整個web應用程式,包括多個頁面,請求和會話。 過濾器的用途有哪些?過濾器主要做攔截作用,所以可以做很多事情,比如過濾一些不合法的詞彙、驗證是否正常登陸、字元編碼的轉換。 過濾器的用法?實現Filter介面,覆蓋init(FilterConfig config)、doFilter(ServletRequest request,ServletResponse response,FilterChain chain)、destroy()方法。 JSP中如何使用JavaBeans?JSP有對於JavaBean操作的標準動作,useBean、setProperty、getProperty JSP和Servlet中的請求轉寄分別如何來實現?JSP中可以使用forward動作來實現。同時JSP和Servlet都可以使用request.getRequestDispatcher(path).forward(req,res);來進行請求轉寄。 web.xml的作用用於配置web應用的資訊,如servlet,filter等。JavaEE:Base:J2EE是技術還是平台還是架構J2EE本身是一個標準,一個為企業分布式應用的開發提供的標準平台。J2EE也是一個架構,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技術。 請解釋一下以下J2EE名詞:WEB容器、EJB容器、JNDI、JMS、JTA、JAF、RMI/IIOPWEB容器:給處於其中的應用程式組件(JSP、Servlet)提供一個環境,使JSP、Servlet直接與容器中的環境變數介面互動,不必關注其它系統問題。該容器提供的介面嚴格遵守J2EE規範中的WebApplication標準。遵守以上標準的WEB伺服器就叫做J2EE的WEB容器。EJB容器:EnterpriseJavaBean容器。更具有行業領域特色。提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規範的EJB放入該容器,馬上就會被容器進行高效率的管理。並且可以通過現成的介面來獲得系統層級的服務。JNDI:(Java Naming & Directory Interface)Java命名目錄服務。主要提供的功能是:提供一個目錄系統,讓其它各地的應用程式在某上面留下自己的索引,從而滿足快速尋找和定位分布式應用程式的功能。JMS:(Java Message Service)JavaMessage Service。主要實現各個應用程式之間的通訊。包括點對點和廣播。JTA:(Java Transaction API)Java事務服務。提供各種分散式交易服務。應用程式只需調用其提供的介面即可。JAF:(Java Action Framework)Java安全認證架構。提供一些安全控制方面的架構。讓開發人員通過各種部署和自訂實現自己的個性安全控制策略。RMI/IIOP(Remote Method Invocation/internet對象請求中介協議)他們主要用於通過遠程調用服務。Struts:什麼是STRUTS?struts本意為結構,在J2EE中為一個WEB架構,採用了JSP/Servlet/JavaBean技術。可以開發出基於MVC模式的應用架構。 STRUTS的入口類?ActionServlet,所有對Action的請求都經由該類轉寄處理。Hibernate:什麼是ORM?Object Relational Mapping。是一種為瞭解決物件導向與面向關聯式資料庫存在的互不匹配的現象的技術。通過使用描述對象和資料庫之間映射的中繼資料,將java程式中的對象自動持久化到關聯式資料庫中。 Hibernate比JDBC的優點?解決了物件模型與關聯式模式之間的阻抗不匹配問題。Hibernate靈活且運用簡單,大量使用設定檔和對應檔來解決類與表或視圖的對應關係,便於維護。完善的交易處理和利用緩衝以效能。 Hibernate有哪5個核心介面Configuration:配置Hibernate,根據其啟動hibernate,建立SessionFaction對象。SessionFactory:初始化Hibernate,充當資料存放區源的代理,建立session對象,SessionFactiory是安全執行緒的,同一個執行個體可以被應用的多個線程共用。Session:負責儲存、更新、刪除、載入和查詢對象,線程不安全,需要避免多個線程共用同一個session。Transaction:管理事務。Query和Criteria:執行資料庫的查詢。 關於Hibernate,設定檔呈現一對多,多對多的標籤是什嗎?Hibernate的二級緩衝是什嗎?Hibernate是如何處理事務的?一對多的標籤是<one-to-many>,多對多的標籤是<many-to-many>。SessionFactory的緩衝是Hibernate的二級緩衝。Hibernate的事務實際上是底層的JDBC Transaction的封裝或者是JTA Transaction的封裝。預設情況下使用JDBC Transaction。 Hibernate對應檔中屬性與表中列的關係,如屬性String對應的表中的類型為?字元型,如char,varchar等或大文本text。 Hibernate分頁實現代碼Query query = session.createQuery(“from Emp”);query.setFirstResult(first);query.setMaxResults(pageSize);Collection emps = query.list(); Session中的load和get的區別當給定的對象標識不存在時,get返回null,而load則拋出一個異常。Spring:簡述Spring架構。Spring架構是一個分層架構,由七個定義良好的模組組成,Spring模組構建在核心容器之上,核心容器定義了建立、配置和管理bean的方式。組成Spring架構的每個模組都可以單獨存在,或者與其他一個或多個模組聯合實現。Spring Core、Spring Context、Spring AOP、Spring DAO、Spring ORM、Spring Web、Spring MVCEJB:EJB是基於哪些技術實現的,SessionBean和EntityBean的區別EJB包括SessionBean,EntityBean,MessageDrivenBean,基於JNDI、RMI、JTA等技術實現。SessionBean在J2EE應用程式中被用來完成一些伺服器端的業務操作,例如訪問資料庫,調用其他EJB組件。EntityBean用來臨時性儲存資料。 EJB與JavaBean的區別JavaBean是可複用的組件,對JavaBean並沒有嚴格的規範,任何一個java類都可以是一個Bean,但由於通常JavaBean是被容器所建立,所以JavaBean應具有一個無參的構造器,並實現Serializable介面用於持久化,JavaBean是不能被跨進程訪問的。EJB是基於java的RMI技術,所以EJB可以被遠端存取(跨進程,跨電腦)。但EJB必須被部署在支援EJB的容器中(如Webspere,WebLogic等),EJB客戶不直接存取EJB組件,而是通過容器訪問。 說明EJB中的SessionBean和EntityBean的生命週期,以及如何進行交易管理SessionBean:StatelessSessionBean的生命週期由容器決定,當客戶機發出請求要建立一個Bean的執行個體時,EJB容器不一定要建立一個新的Bean的執行個體給客戶機調用,而是找一個現有的執行個體提供給客戶機。客戶機第一次調用一個StatefulSessionBean時,容器會立刻在伺服器中建立一個新的Bean執行個體,並關聯到客戶機上,以後此客戶機調用StatefulSessionBean的方法時容器會把調用指派到與此客戶機相關聯的Bean執行個體。EntityBean:EntityBean能存活相對較長的時間,並且狀態是持續的。只要資料庫中的資料存在,EntityBean就一直存活。而不按照應用程式或者服務進程來結束生命。EntityBean生命週期能夠被容器或Bean自己管理。EJB通過以下技術管理事務:OTS(Object Transaction Service),JTS(Java Transaction Service),JTA(Java Transaction API) EJB的角色和三個對象一個完整的基於EJB的分散式運算結構由六個角色群組成,每個角色所做的工作必須遵循Sun公司提供的EJB規範,以保證彼此之間的相容性。這六個角色分別是EJB組件開發人員(Enterprise Bean Provider)、應用組合者(Application Assembler)、部署者(Deployer)、EJB服務提供者(EJB ServerProvider)、EJB容器提供者(EJB Container Provider)、系統管理員(System Administrator)。三個對象是Remote(Local)介面、Home(LocalHome)介面、Bean類。 EJB容器提供的服務主要提供生命週期管理、代碼產生、持久性管理、安全、交易管理、鎖和並發管理等服務。 EJB禁止哪些操作1.不能操作線程和線程API(線程API指非線程對象的方法如notify,wait等)。2.不能操作awt。3.不能實現伺服器功能。4.不能對靜態屬性存取。5.不能使用IO操作直接存取檔案系統。6.不能載入本地庫。7.不能將this作為變數和返回。8.不能迴圈調用。 remote介面和home介面主要作用remote介面定義了業務方法,用於EJB用戶端調用業務方法。home介面是EJB工廠用於建立和移除尋找EJB執行個體。 bean執行個體的生命週期對於Stateless Session Bean、Entity Bean、Message Driven Bean一般存在緩衝池管理,而對於Entity Bean和Statefull Session Bean存在Cache管理,通常包含建立執行個體,設定上下文、建立EJBObject(create)、業務方法調用、remove等過程,對於存在緩衝池管理的Bean,在create之後執行個體並不從記憶體清除,而是採用緩衝池調度機制不斷重用執行個體,而對於存在Cache管理的Bean則通過啟用和去啟用機制保持Bean的狀態並限制記憶體中執行個體數量。 EJB的啟用機制以Stateful Session Bean為例:其Cache大小決定了記憶體中可以同時存在的Bean執行個體的數量,根據MRU或NRU演算法,執行個體在啟用和去啟用狀態之間遷移,啟用機制是當用戶端調用某個EJB執行個體業務方法時,如果對應EJBObject發現自己沒有綁定對應的Bean執行個體則從其去啟用Bean儲存中(通過序列化機制儲存執行個體)回複(啟用)此執行個體。狀態變遷前會調用對應的EJBActive和EJBPassivate方法。 EJB的幾種類型Session Bean,Entity Bean和Message Driven Bean。Session Bean又可分為Stateless Session Bean和Stateful Session Bean。Entity Bean又可分為Bean管理持久性(BMP)和容器管理的持久性(CMP)。 客服端調用EJB對象的幾個基本步驟設定JNDI服務工廠以及JNDI服務地址系統屬性,尋找Home介面,從Home介面調用create方法建立Remote介面,通過Remote介面調用其業務方法。RDBMS&SQL:3張表student學生表(學號,姓名,性別,年齡,組織部門)、course課程表(編號,課程名稱)、sc選課表(學號,課程編號,成績)。寫一個SQL語句,查詢選修了“電腦原理”的學生學號和姓名。寫一個SQL語句,查詢“周星馳”同學選修的課程名稱。寫一個SQL語句,查詢選修了5門課程的學生學號和姓名。寫一個SQL語句,查詢選修了所有課程的學生學號和姓名。(1)SELECT sno,sname FROM student stu WHERE stu.sno IN (SELECT sc.sno FROM sc WHERE sc.cno = (SELECT course.cno FROM course WHERE cname LIKE ‘電腦原理’));(2)SELECT cname FROM course cou WHERE cou.cno IN (SELECT sc.cno FROM sc WHERE sc.sno IN (SELECT student.sno FROM student WHERE sname like ‘周星馳’));(3)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=5);(4)SELECT student.sno,sname FROM student WHERE student.sno IN (SELECT sc.sno FROM sc GROUP BY sc.sno HAVING count(*)=(SELECT count(*) FROM course)); 有一張表EMP,表中欄位為(empno,ename,mgr,age),寫出語句查詢所有僱員年齡大於其領導的人員名單。SELECT worker.ename FROM emp worker WHERE worker.age>(SELECT manager.age FROM emp manager WHERE manager.empno = worker.mgr); 有兩張表分別代表的省和市的資訊,其中省資訊表中欄位為(stateno,statename),市資訊表中欄位為(cityno,cityname,stateno),省資訊表中有廣東,江蘇,遼寧,黑龍江,市資訊表中有上海,廣州,北京,南京。現在需要查詢出所有市資訊及相關省資訊,請寫出查詢語句。SELECT cityname,cityno,s.stateno,s.statename FROM city c,state s WHERE c.stateno = s.stateno(+);Base Web:Javascript一個動態下拉式清單,如何在每一次點擊後顯示出所有被選中的值?<script type="text/javascript"> function choose(sel){ alert(sel.options[sel.selectedIndex].innerHTML); }</script><select onchange=”choose(this)”> <option>1</option> <option>2</option> <option>3</option></select>封裝一個類,包含屬性name和sex,在設定其值後再取出 function myObject(){var innerClass = new Object();innerClass.name=‘undefined‘;innerClass.sex=‘undefined‘;innerClass.setName = function (n){ name = n;}innerClass.setSex = function (s){sex = s;}innerClass.getName = function (){return name;}innerClass.getSex = function (){return sex;}return innerClass;}
java各種概念 Core Java總結