freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java軟件開發(fā)工程師面試題集-資料下載頁

2024-10-14 08:42本頁面

【導(dǎo)讀】抽象并不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節(jié)。括兩個方面,一是過程抽象,二是數(shù)據(jù)抽象。對象的一個新類可以從現(xiàn)有的類中派生,這個過程稱為類繼承。性,新類稱為原始類的派生類(子類),而原始類稱為新類的基類(父類)。的基類那里繼承方法和實例變量,并且類可以修改或增加新的方法使之更適合特殊的需要。封裝是把過程和數(shù)據(jù)包圍起來,對數(shù)據(jù)的訪問只能通過已定義的界面。面向?qū)ο笥嬎闶加谶@。保護的接口訪問其他對象。多態(tài)性是指允許不同類的對象對同一消息作出響應(yīng)。多態(tài)性包括參數(shù)化多態(tài)性和包含多態(tài)?;緮?shù)據(jù)類型包括byte、int、char、long、float、double、boolean和short。型,Integer是java為int提供的封裝類。的字符串進行修改。java編譯器要求方法必須聲明拋出可能發(fā)生的非運行時。異常,但是并不要求必須聲明拋出未被捕獲的運行時異常。Servlet被服務(wù)器實例化后,容器運行其init方法,請求到達時運行其service方法,service

  

【正文】 。 Java 中的 23 種設(shè)計模式: Factory(工廠模式), Builder(建造模式), Factory Method(工廠方法模式), Prototype(原始模型模式), Singleton(單例模式), Facade(門面模式), Adapter(適配器模式), Bridge(橋梁模式), Composite(合成模式), Decorator(裝飾模式), Flyweight(享元模式), Proxy(代理模式), Command(命令模式), Interpreter(解釋器模式), Visitor(訪問者模式), Iterator(迭代子模式), Mediator(調(diào)停者模式), Memento(備忘錄模式), Observer(觀察者模式), State(狀態(tài)模式), Strategy(策略模式), Template Method(模板方法模式), Chain Of Responsibleity(責任鏈模式) 工廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個類的實例,通常這一組類有一個公共的抽象父類并且實現(xiàn)了相同的方法,但是這些方法針對不同的數(shù)據(jù)進行了不同的操作。首先需要定義一個基類,該類的子類通過不同的方法 實現(xiàn)了基類中的方法。然后需要定義一個工廠類,工廠類可以根據(jù)條件生成不同的子類實例。當?shù)玫阶宇惖膶嵗?,開發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個子類的實例。 9 EJB需直接實現(xiàn)它的業(yè)務(wù)接口或 Home 接口嗎,請簡述理由。 遠程接口和 Home 接口不需要直接實現(xiàn),他們的實現(xiàn)代碼是由服務(wù)器產(chǎn)生的,程序運行中對應(yīng)實現(xiàn)類會作為對應(yīng)接口類型的實例被使用。 其實一直都不是很明白 EJB的 remote 接口, home 接口, Bean 類究竟是如何使用的,或許應(yīng)該進一步了解 EJB的原理吧,查到了一個原創(chuàng)文章, 那就說說 EJB調(diào)用的原理吧。其實在這個問題上,最需要理解的是 RMI 機制原理。 一個遠程對象至少要包括 4 個 class 文件:遠程對象、遠程對象接口、實現(xiàn)遠程接口的對象的 stub、對象的 skeleton。 而在 EJB中則至少要包括 10 個 class: Bean 類,特定 App Server 的 Bean 實現(xiàn)類 Bean 的 remote 接口,特定 App Server 的 remote 接口實現(xiàn)類,特定 App Server 的 remote 接口的實現(xiàn)類的 stub 類和 skeleton 類。 Bean 的 home 接口,特定 App Server 的 home 接口實現(xiàn)類,特定 App Server 的 home 接口的實現(xiàn)類的 stub 類和 skeleton 類。 和 RMI 不同的是, EJB中這 10 個 class 真正需要用戶寫的只有 3 個, Bean 類, remote 接口,home 接口,其它的 7 個究竟怎么生成,被打包在哪里,是否需要更多的類文件,否根據(jù)不同的 App Server 表現(xiàn)出較大的差異。 Weblogic: home 接口和 remote 接口的 weblogic 的實現(xiàn)類的 stub 類和 skeleton 類是在 EJB 被部署到weblogic 的時候,由 weblogic 動態(tài)生成 stub 類和 skeleton 類的字節(jié)碼,所以看不到這 4 個類文件。 對于一次客戶端遠程調(diào)用 EJB,要經(jīng)過兩個遠程對象的多次 RMI 循環(huán)。首先是通過 JNDI查找 Home 接口,獲得 Home 接口的實現(xiàn)類,這個過程其實相當復(fù)雜,首先是找到 Home 接口的 Weblogic 實現(xiàn)類,然后創(chuàng)建一個 Home 接口的 Weblogic 實現(xiàn)類的 stub 類的對象實例,將它序列化傳送給客戶端(注意 stub 類的實例是在第 1 次 RMI 循環(huán)中,由服務(wù)器動態(tài)發(fā)送給客戶端的,因此不需要客戶端保存 Home 接口的 Weblogic 實現(xiàn)類的 stub 類 ),最后客戶端獲得該 stub 類的對象實例(普通的 RMI 需要在客戶端保存 stub 類,而 EJB不需要,因為服務(wù)器會把 stub 類的對象實例發(fā)送給客戶端)。 客戶端拿到服務(wù)器給它的 Home 接口的 Weblogic 實現(xiàn)類的 stub 類對象實例以后,調(diào)用 stub類的 create方法, (在代碼上就是 (),但是后臺要做很多事情 ),于是經(jīng)過第 2 次 RMI循環(huán),在服務(wù)器端, Home 接口的 Weblogic 實現(xiàn)類的 skeleton 類收到 stub 類的調(diào)用信息后,由它再去調(diào)用 Home 接口的 Weblogic 實現(xiàn)類的 create 方法。 在服務(wù)端, Home 接口的 Weblogic 實現(xiàn)類的 create 方法再去調(diào)用 Bean 類的 Weblogic 實現(xiàn)類的 ejbCreate 方法,在服務(wù)端創(chuàng)建或者分配一個 EJB實例,然后將這個 EJB實例的遠程接口的 Weblogic 實現(xiàn)類的 stub 類對象實例序列化發(fā)送給客戶端。 客戶端收到 remote 接口的 Weblogic 實現(xiàn)類的 stub 類的對象實例,對該對象實例的方法調(diào)用(在客戶端代碼中實際上就是對 remote 接口的調(diào)用),將傳送給服務(wù)器端 remote 接口的Weblogic 實現(xiàn)類的 skeleton 類 對象,而 skeleton 類對象再調(diào)用相應(yīng)的 remote接口的 Weblogic實現(xiàn)類,然后 remote 接口的 Weblogic 實現(xiàn)類再去調(diào)用 Bean 類的 Weblogic 實現(xiàn)類,如此就完成一次 EJB對象的遠程調(diào)用。 先拿普通 RMI 來說,有 4 個 class,分別是遠程對象,對象的接口,對象的 stub 類和 skeleton類。而對象本身和對象的 stub 類同時都實現(xiàn)了接口類。而我們在客戶端代碼調(diào)用遠程對象的時候,雖然在代碼中操縱接口,實質(zhì)上是在操縱 stub 類,例如:接口類: Hello 遠程對象: Hello_Server stub 類: Hello_Stub skeleton 類: Hello_Skeleton 客戶端代碼要這樣寫: Hello h = new Hello_Stub()。 ()。 我們不會這些寫: Hello_Stub h = new Hello_Stub()。 ()。 因為使用接口適用性更廣,就算更換了接口實現(xiàn)類,也不需要更改代碼。因此客戶端需要 和 這兩個文件。但是對于 EJB來說, 就不需要 ,因為服務(wù)器會發(fā)送給它,但是 文件客戶端是省不了的,必須有。表面上我們的客戶端代碼在操縱 Hello,但別忘記了 Hello只是一個接口,抽象的,實質(zhì)上是在操縱 Hello_Stub。 拿 Weblogic 上的 EJB舉例子, 10 個 class 分別是: Bean 類: HelloBean (用戶編寫) Bean 類的 Weblogic 實現(xiàn)類: HelloBean_Impl ( EJBC 生成) Home 接口: HelloHome (用戶編寫) Home 接口的 Weblogic 實現(xiàn)類 HelloBean_HomeImpl( EJBC 生成) Home 接口的 Weblogic 實現(xiàn)類的 stub 類 HelloBean_HomeImpl_WLStub(部署的時候動態(tài)生成字節(jié)碼) Home 接口的 Weblogic 實現(xiàn)類的 skeleton 類 HelloBean_HomeImpl_WLSkeleton(部署的時候動態(tài)生成字節(jié)碼) Remote 接口: Hello (用戶編寫) Remote 接口的 Weblogic 實現(xiàn)類 HelloBean_EOImpl( EJBC 生成) Remote 接口的 Weblogic 實現(xiàn)類的 stub 類 HelloBean_EOImpl_WLStub(部署的時候動態(tài)生成字節(jié)碼) Remote 接口的 Weblogic 實現(xiàn)類的 skeleton 類 HelloBean_EOImpl_WLSkeleton(部署的時候動態(tài)生成字節(jié)碼) 客戶端只需要 和 這兩個文件。 HelloHome home = (Home) ((Hello), )。 這一行代碼是從 JNDI 獲得 Home 接口,但是請記?。〗涌谑浅橄蟮?,那么 home 這個對象到底是什么類的對象實例呢?很簡單,用 toString()輸出看一下就明白了,下面一行是輸出結(jié)果: HelloBean_HomeImpl_WLStub@18c458 這表明 home 這 個通過 從服 務(wù)器的 JNDI 樹上查 找獲 得的對 象實 際上是HelloBean_HomeImpl_WLStub 類的一個實例。 接下來客戶端代碼: Hello h = () 同樣 Hello 只是一個抽象的接口,那么 h 對象是什么東西呢?打印一下: HelloBean_EOImpl_WLStub@8fa0d1 原來是 HelloBean_EOImpl_WLStub 的一個對象實例。 用這個例子來簡述一遍 EJB調(diào)用過程: 首先客戶端 JNDI 查詢,服務(wù)端 JNDI 樹上 Hello 這個名字實際上綁定的對象是HelloBean_HomeImpl_WLStub,所以服務(wù)端將創(chuàng)建 HelloBean_HomeImpl_WLStub 的一個對象實例,序列化返回給客戶端。 于是客戶端得到 home 對象,表面上是得到 HelloHome 接口的實例,實際上是進行了一次遠程調(diào)用得到了 HelloBean_HomeImpl_WLStub 類的對象實例,別忘記了HelloBean_HomeImpl_WLStub 也實現(xiàn)了 HelloHome 接口。 然后 ()實質(zhì)上就是 (),該方法將發(fā)送信息給HelloBean_HomeImpl_WLSkeleton,而 HelloBean_HomeImpl_WLSkeleton 接受到信息后, 再去調(diào)用 HelloBean_HomeImpl 的 create 方法,至此完成第 1 次完整的 RMI 循環(huán)。 注意在這次 RMI 循環(huán)過程中,遠程對象是 HelloBean_HomeImpl,遠程對象的接口是HelloHome ,對象的 stub 是 HelloBean_HomeImpl_WLStub ,對象的 skeleton 是HelloBean_HomeImpl_WLSkeleton。 然后 HelloBean_HomeImpl 再去調(diào)用 HelloBean_Impl 的 ejbCreate 方法,而 HelloBean_Impl的 ejbCreate 方法將負責創(chuàng)建或者分配一個 Bean 實例,并且創(chuàng)建一個HelloBean_EOImpl_WLStub 的對象實例。 這一步比較有趣的是,在前一步 RMI 循環(huán)中,遠程對象 HelloBean_HomeImpl 在客戶端有一個代理類 HelloBean_HomeImpl_WLStub,但在這一步, HelloBean_HomeImpl 自己卻充當了HelloBean_Impl 的代理類,只不過 HelloBean_HomeImpl 不在客戶端,而是在服務(wù)端,因此不進行 RMI。 然后 HelloBean_EOImpl_WLStub 的對象實例序列化返回給客戶端,這一步也很有趣,上次RMI 過程,主角是 HelloBean_HomeImpl 和它的代理類 HelloBean_HomeImpl_WLStub,但這這一次換成了 HelloBean_EOImpl 和它的代理類 HelloBean_EOImpl_WLStub 來玩了。 Hello h = ()。()。 假設(shè) Hello 接口有一個 helloWorld 遠程方法,那么表面上是在調(diào)用 Hello 接口的 helloWorld方法,實際上是在調(diào) 用 HelloBean_EOImpl_WLStub 的 helloWorld 方法。 然后 HelloBean_EOImpl_WLStub 的 helloWorld 方法將 發(fā)送信 息給服務(wù) 器上的HelloBean_EOImpl_WLSkeleton,而 HelloBean_EOImpl_WLSkeleton 收到信息以后,再去調(diào)用 HelloBean_EOImpl 的 helloWorld 方法。至此,完成第 2 次完整的 RMI 循環(huán)過程。在剛才HelloBean_EOImpl 是作為遠程對象被調(diào)用的,它的代理類是 HelloBean_EOImpl_WLStub,但現(xiàn)在 HelloBean_EOImpl 要作為 HelloBean_Impl 的代理類了。現(xiàn)在 HelloBean_EOImpl 去調(diào)用 HelloBean_Impl 的 helloWorld 方法。注意!
點擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1