<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 73,  comments - 55,  trackbacks - 0

    EJB 方面

    94 EJB2.0 有哪些內(nèi)容 ? 分別用在什么場(chǎng)合 ? EJB2.0 EJB1.1 的區(qū)別 ?
    答: 規(guī)范內(nèi)容包括 Bean 提供者,應(yīng)用程序裝配者, EJB 容器, EJB 配置工具, EJB 服務(wù)提供者,系統(tǒng)管理員。這里面, EJB 容器是 EJB 之所以能夠運(yùn)行的核心。 EJB 容器管理著 EJB 的創(chuàng)建,撤消,激活,去活,與數(shù)據(jù)庫(kù)的連接等等重要的核心工作。 JSP,Servlet,EJB,JNDI,JDBC,JMS.....
    95
    EJB JAVA BEAN 的區(qū)別?

    答: Java Bean 是可復(fù)用的組件,對(duì) Java Bean 并沒(méi)有嚴(yán)格的規(guī)范,理論上講,任何一個(gè) Java 類都可以是一個(gè) Bean 。但通常情況下,由于 Java Bean 是被容器所創(chuàng)建(如 Tomcat) 的,所以 Java Bean 應(yīng)具有一個(gè)無(wú)參的構(gòu)造器,另外,通常 Java Bean 還要實(shí)現(xiàn) Serializable 接口用于實(shí)現(xiàn) Bean 的持久性。 Java Bean 實(shí)際上相當(dāng)于微軟 COM 模型中的本地進(jìn)程內(nèi) COM 組件,它是不能被跨進(jìn)程訪問(wèn)的。 Enterprise Java Bean 相當(dāng)于 DCOM ,即分布式組件。它是基于 Java 的遠(yuǎn)程方法調(diào)用( RMI )技術(shù)的,所以 EJB 可以被遠(yuǎn)程訪問(wèn)(跨進(jìn)程、跨計(jì)算機(jī))。但 EJB 必須被布署在諸如 Webspere WebLogic 這樣的容器中, EJB 客戶從不直接訪問(wèn)真正的 EJB 組件,而是通過(guò)其容器訪問(wèn)。 EJB 容器是 EJB 組件的代理, EJB 組件由容器所創(chuàng)建和管理。客戶通過(guò)容器來(lái)訪問(wèn)真正的 EJB 組件。
    96
    EJB 是基于哪些技術(shù)實(shí)現(xiàn)的?并說(shuō)出 SessionBean EntityBean 的區(qū)別, StatefulBean StatelessBean 的區(qū)別。
    ?
    答: EJB 包括 Session?Bean Entity?Bean Message?Driven?Bean ,基于 JNDI RMI JAT 等技術(shù)實(shí)現(xiàn)。
    SessionBean
    J2EE 應(yīng)用程序中被用來(lái)完成一些服務(wù)器端的業(yè)務(wù)操作,例如訪問(wèn)數(shù)據(jù)庫(kù)、調(diào)用其他 EJB 組件。 EntityBean 被用來(lái)代表應(yīng)用系統(tǒng)中用到的數(shù)據(jù)。
    對(duì)于客戶機(jī), SessionBean 是一種非持久性對(duì)象,它實(shí)現(xiàn)某些在服務(wù)器上運(yùn)行的業(yè)務(wù)邏輯。
    對(duì)于客戶機(jī), EntityBean 是一種持久性對(duì)象,它代表一個(gè)存儲(chǔ)在持久性存儲(chǔ)器中的實(shí)體的對(duì)象視圖,或是一個(gè)由現(xiàn)有企業(yè)應(yīng)用程序?qū)崿F(xiàn)的實(shí)體。
    Session?Bean?
    還可以再細(xì)分為 ?Stateful?Session?Bean? ?Stateless?Session?Bean? ,這兩種的 ?Session?Bean 都可以將系統(tǒng)邏輯放在 ?method 之中執(zhí)行,不同的是 ?Stateful?Session?Bean? 可以記錄呼叫者的狀態(tài),因此通常來(lái)說(shuō),一個(gè)使用者會(huì)有一個(gè)相對(duì)應(yīng)的 ?Stateful?Session?Bean? 的實(shí)體。 Stateless?Session?Bean? 雖然也是邏輯組件,但是他卻不負(fù)責(zé)記錄使用者狀態(tài),也就是說(shuō)當(dāng)使用者呼叫 ?Stateless?Session?Bean? 的時(shí)候, EJB?Container? 并不會(huì)找尋特定的 ?Stateless?Session?Bean? 的實(shí)體來(lái)執(zhí)行這個(gè) ?method 。換言之,很可能數(shù)個(gè)使用者在執(zhí)行某個(gè) ?Stateless?Session?Bean? ?methods? 時(shí),會(huì)是同一個(gè) ?Bean? ?Instance? 在執(zhí)行。從內(nèi)存方面來(lái)看, ?Stateful?Session?Bean? ?Stateless?Session?Bean? 比較, ?Stateful?Session?Bean? 會(huì)消耗 ?J2EE?Server? 較多的內(nèi)存,然而 ?Stateful?Session?Bean? 的優(yōu)勢(shì)卻在于他可以維持使用者的狀態(tài)。
    97 EJB JAVA?BEAN 的區(qū)別?
    答: Java?Bean? 是可復(fù)用的組件,對(duì) Java?Bean 并沒(méi)有嚴(yán)格的規(guī)范,理論上講,任何一個(gè) Java 類都可以是一個(gè) Bean 。但通常情況下,由于 Java?Bean 是被容器所創(chuàng)建(如 Tomcat )的,所以 Java?Bean 應(yīng)具有一個(gè)無(wú)參的構(gòu)造器,另外,通常 Java?Bean 還要實(shí)現(xiàn) Serializable 接口用于實(shí)現(xiàn) Bean 的持久性。 Java?Bean 實(shí)際上相當(dāng)于微軟 COM 模型中的本地進(jìn)程內(nèi) COM 組件,它是不能被跨進(jìn)程訪問(wèn)的。 Enterprise?Java?Bean? 相當(dāng)于 DCOM ,即分布式組件。它是基于 Java 的遠(yuǎn)程方法調(diào)用( RMI )技術(shù)的,所以 EJB 可以被遠(yuǎn)程訪問(wèn)(跨進(jìn)程、跨計(jì)算機(jī))。但 EJB 必須被布署在諸如 Webspere WebLogic 這樣的容器中, EJB 客戶從不直接訪問(wèn)真正的 EJB 組件,而是通過(guò)其容器訪問(wèn)。 EJB 容器是 EJB 組件的代理, EJB 組件由容器所創(chuàng)建和管理。客戶通過(guò)容器來(lái)訪問(wèn)真正的 EJB 組件。
    EJB 包括( SessionBean,EntityBean )說(shuō)出他們的生命周期,及如何管理事務(wù)的?
    SessionBean
    Stateless?Session?Bean? 的生命周期是由容器決定的,當(dāng)客戶機(jī)發(fā)出請(qǐng)求要建立一個(gè) Bean 的實(shí)例時(shí), EJB 容器不一定要?jiǎng)?chuàng)建一個(gè)新的 Bean 的實(shí)例供客戶機(jī)調(diào)用,而是隨便找一個(gè)現(xiàn)有的實(shí)例提供給客戶機(jī)。當(dāng)客戶機(jī)第一次調(diào)用一個(gè) Stateful?Session?Bean? 時(shí),容器必須立即在服務(wù)器中創(chuàng)建一個(gè)新的 Bean 實(shí)例,并關(guān)聯(lián)到客戶機(jī)上,以后此客戶機(jī)調(diào)用 Stateful?Session?Bean? 的方法時(shí)容器會(huì)把調(diào)用分派到與此客戶機(jī)相關(guān)聯(lián)的 Bean 實(shí)例。
    EntityBean
    Entity?Beans 能存活相對(duì)較長(zhǎng)的時(shí)間,并且狀態(tài)是持續(xù)的。只要數(shù)據(jù)庫(kù)中的數(shù)據(jù)存在, Entity?beans 就一直存活。而不是按照應(yīng)用程序或者服務(wù)進(jìn)程來(lái)說(shuō)的。即使 EJB 容器崩潰了, Entity?beans 也是存活的。 Entity?Beans 生命周期能夠被容器或者 ?Beans 自己管理。
    EJB
    通過(guò)以下技術(shù)管理實(shí)務(wù):對(duì)象管理組織( OMG )的對(duì)象實(shí)務(wù)服務(wù)( OTS ), Sun?Microsystems Transaction?Service JTS )、 Java?Transaction?API JTA ),開(kāi)發(fā)組( X/Open )的 XA 接口。
    98
    EJB 的角色和三個(gè)對(duì)象
    答: 一個(gè)完整的基于 EJB 的分布式計(jì)算結(jié)構(gòu)由六個(gè)角色組成,這六個(gè)角色可以由不同的開(kāi)發(fā)商提供,每個(gè)角色所作的工作必須遵循 Sun 公司提供的 EJB 規(guī)范,以保證彼此之間的兼容性。這六個(gè)角色分別是 EJB 組件開(kāi)發(fā)者( Enterprise?Bean?Provider ? 、應(yīng)用組合者( Application?Assembler )、部署者( Deployer )、 EJB? 服務(wù)器提供者( EJB?Server?Provider )、 EJB? 容器提供者( EJB?Container?Provider )、系統(tǒng)管理員( System?Administrator
    三個(gè)對(duì)象是 Remote Local )接口、 Home LocalHome )接口, Bean
    99
    EJB 容器提供的服務(wù)
    答: 主要提供聲明周期管理、代碼產(chǎn)生、持續(xù)性管理、安全、事務(wù)管理、鎖和并發(fā)行管理等服務(wù)。
    100
    EJB 規(guī)范規(guī)定 EJB 中禁止的操作有哪些? ?
    ? 答: 1. 不能操作線程和線程 API( 線程 API 指非線程對(duì)象的方法如 notify,wait ) 2. 不能操作 awt 3. 不能實(shí)現(xiàn)服務(wù)器功能, 4. 不能對(duì)靜態(tài)屬生存取, 5. 不能使用 IO 操作直接存取文件系統(tǒng), 6. 不能加載本地庫(kù) . 7. 不能將 this 作為變量和返回, 8. 不能循環(huán)調(diào)用。

    101
    remote 接口和 home 接口主要作用
    答: remote 接口定義了業(yè)務(wù)方法,用于 EJB 客戶端調(diào)用業(yè)務(wù)方法。
    home
    接口是 EJB 工廠用于創(chuàng)建和移除查找 EJB 實(shí)例
    102
    bean? 實(shí)例的生命周期
    答: 對(duì)于 Stateless?Session?Bean Entity?Bean Message?Driven?Bean 一般存在緩沖池管理,而對(duì)于 Entity?Bean Statefull?Session?Bean 存在 Cache 管理,通常包含創(chuàng)建實(shí)例,設(shè)置上下文、創(chuàng)建 EJB?Object create )、業(yè)務(wù)方法調(diào)用、 remove 等過(guò)程,對(duì)于存在緩沖池管理的 Bean ,在 create 之后實(shí)例并不從內(nèi)存清除,而是采用緩沖池調(diào)度機(jī)制不斷重用實(shí)例,而對(duì)于存在 Cache 管理的 Bean 則通過(guò)激活和去激活機(jī)制保持 Bean 的狀態(tài)并限制內(nèi)存中實(shí)例數(shù)量。
    103
    EJB 的激活機(jī)制
    答: Stateful?Session?Bean? 為例:其 Cache 大小決定了內(nèi)存中可以同時(shí)存在的 Bean 實(shí)例的數(shù)量,根據(jù) MRU NRU 算法,實(shí)例在激活和去激活狀態(tài)之間遷移,激活機(jī)制是當(dāng)客戶端調(diào)用某個(gè) EJB 實(shí)例業(yè)務(wù)方法時(shí),如果對(duì)應(yīng) EJB?Object 發(fā)現(xiàn)自己沒(méi)有綁定對(duì)應(yīng)的 Bean 實(shí)例則從其去激活 Bean 存儲(chǔ)中(通過(guò)序列化機(jī)制存儲(chǔ)實(shí)例)回復(fù)(激活)此實(shí)例。狀態(tài)變遷前會(huì)調(diào)用對(duì)應(yīng)的 ejbActive ejbPassivate 方法。
    104
    EJB 的幾種類型
    答: 會(huì)話( Session Bean? ,實(shí)體( Entity Bean? 消息驅(qū)動(dòng)的( Message?Driven Bean
    會(huì)話 Bean 又可分為有狀態(tài)( Stateful )和無(wú)狀態(tài)( Stateless )兩種

    實(shí)體 Bean 可分為 Bean 管理的持續(xù)性( BMP )和容器管理的持續(xù)性( CMP )兩種
    105
    、客服端調(diào)用 EJB 對(duì)象的幾個(gè)基本步驟
    答: 設(shè)置 JNDI 服務(wù)工廠以及 JNDI 服務(wù)地址系統(tǒng)屬性,查找 Home 接口,從 Home 接口調(diào)用 Create 方法創(chuàng)建 Remote 接口,通過(guò) Remote 接口調(diào)用其業(yè)務(wù)方法。

    應(yīng)用服務(wù)器方面

    106 、如何給 weblogic 指定大小的內(nèi)存 ??
    答: 在啟動(dòng) Weblogic 的腳本中(位于所在 Domian 對(duì)應(yīng)服務(wù)器目錄下的 startServerName ),增加 set?MEM_ARGS=-Xms32m?-Xmx200m ,可以調(diào)整最小內(nèi)存為 32M ,最大
    200M
    EJB
    需直接實(shí)現(xiàn)它的業(yè)務(wù)接口或 Home 接口嗎,請(qǐng)簡(jiǎn)述理由。

    遠(yuǎn)程接口和 Home 接口不需要直接實(shí)現(xiàn),他們的實(shí)現(xiàn)代碼是由服務(wù)器產(chǎn)生的,程序運(yùn)行中對(duì)應(yīng)實(shí)現(xiàn)類會(huì)作為對(duì)應(yīng)接口類型的實(shí)例被使用。
    107 、應(yīng)用服務(wù)器有那些?
    答: BEA?WebLogic?Server IBM?WebSphere?Application?Server Oracle9i?Application?Server jBoss Tomcat
    108
    、如何設(shè)定的 weblogic 的熱啟動(dòng)模式 ( 開(kāi)發(fā)模式 ) 與產(chǎn)品發(fā)布模式
    ?
    答: 可以在管理控制臺(tái)中修改對(duì)應(yīng)服務(wù)器的啟動(dòng)模式為開(kāi)發(fā)或產(chǎn)品模式之一。或者修改服務(wù)的啟動(dòng)文件或者 commenv 文件,增加 set?PRODUCTION_MODE=true

    109
    、如何啟動(dòng)時(shí)不需輸入用戶名與密碼 ?
    答: 修改服務(wù)啟動(dòng)文件,增加 ?WLS_USER WLS_PW 項(xiàng)。也可以在 boot.properties 文件中增加加密過(guò)的用戶名和密碼
    .
    110
    、在 weblogic 管理制臺(tái)中對(duì)一個(gè)應(yīng)用域 ( 或者說(shuō)是一個(gè)網(wǎng)站 ,Domain) 進(jìn)行 jms ejb 或連接池等相關(guān)信息進(jìn)行配置后 , 實(shí)際保存在什么文件中 ?

    答: 保存在此 Domain config.xml 文件中,它是服務(wù)器的核心配置文件。
    111
    、說(shuō)說(shuō) weblogic 中一個(gè) Domain 的缺省目錄結(jié)構(gòu) ? 比如要將一個(gè)簡(jiǎn)單的 helloWorld.jsp 放入何目錄下 , 然的在瀏覽器上就可打入 http:// 主機(jī) : 端口號(hào) //helloword.jsp 就可以看到運(yùn)行結(jié)果了 ? ? 又比如這其中用到了一個(gè)自己寫的 javaBean 該如何辦 ?
    答: Domain 目錄服務(wù)器目錄 applications ,將應(yīng)用目錄放在此目錄下將可以作為應(yīng)用訪問(wèn),如果是 Web 應(yīng)用,應(yīng)用目錄需要滿足 Web 應(yīng)用目錄要求, jsp 文件可以直接放在應(yīng)用目錄中, Javabean 需要放在應(yīng)用目錄的 WEB-INF 目錄的 classes 目錄中,設(shè)置服務(wù)器的缺省應(yīng)用將可以實(shí)現(xiàn)在瀏覽器上無(wú)需輸入應(yīng)用名。

    112
    、在 weblogic 中發(fā)布 ejb 需涉及到哪些配置文件
    答: 不同類型的 EJB 涉及的配置文件不同,都涉及到的配置文件包括 ejb-jar.xml,weblogic-ejb-jar.xmlCMP 實(shí)體 Bean 一般還需要 weblogic-cmp-rdbms-jar.xml?
    86
    、如何在 weblogic 中進(jìn)行 ssl 配置與客戶端的認(rèn)證配置或說(shuō)說(shuō) j2ee( 標(biāo)準(zhǔn) ) 進(jìn)行 ssl 的配置

    缺省安裝中使用 DemoIdentity.jks DemoTrust.jks??KeyStore 實(shí)現(xiàn) SSL ,需要配置服務(wù)器使用 Enable?SSL ,配置其端口,在產(chǎn)品模式下需要從 CA 獲取私有密鑰和數(shù)字證書,創(chuàng)建 identity trust?keystore ,裝載獲得的密鑰和數(shù)字證書。可以配置此 SSL 連接是單向還是雙向的。
    113
    、如何查看在 weblogic 中已經(jīng)發(fā)布的 EJB?
    答: 可以使用管理控制臺(tái),在它的 Deployment 中可以查看所有已發(fā)布的
    EJB
    說(shuō)說(shuō)在 weblogic 中開(kāi)發(fā)消息 Bean 時(shí)的 persistent non-persisten 的差別

    persistent
    方式的 MDB 可以保證消息傳遞的可靠性 , 也就是如果 EJB 容器出現(xiàn)問(wèn)題而 JMS 服務(wù)器依然會(huì)將消息在此 MDB 可用的時(shí)候發(fā)送過(guò)來(lái),而 non persistent 方式的消息將被丟棄。

    J2EE,MVC 方面

    114 MVC 的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn) ? 如何實(shí)現(xiàn) ?
    答: MVC Model View Controller 的簡(jiǎn)寫。 "Model" 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò) JavaBean EJB 組件實(shí)現(xiàn)), "View" 是應(yīng)用的表示面(由 JSP 頁(yè)面產(chǎn)生), "Controller" 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè) Servlet ),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。
    115
    J2EE 是什么?
    答: Je22 Sun 公司提出的多層 (multi-diered), 分布式 (distributed), 基于組件 (component-base) 的企業(yè)級(jí)應(yīng)用模型 (enterpriese application model). 在這樣的一個(gè)應(yīng)用系統(tǒng)中,可按照功能劃分為不同的組件,這些組件又可在不同計(jì)算機(jī)上,并且處于相應(yīng)的層次 (tier) 中。所屬層次包括客戶層 (clietn tier) 組件 ,web 層和組件 ,Business 層和組件 , 企業(yè)信息系統(tǒng) (EIS) 層。
    116
    WEB SERVICE 名詞解釋。 JSWDL 開(kāi)發(fā)包的介紹。 JAXP JAXM 的解釋。 SOAP UDDI,WSDL 解釋。
    答: Web Service 描述語(yǔ)言 WSDL
    SOAP
    即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (Simple Object Access Protocol) ,它是用于交換 XML 編碼信息的輕量級(jí)協(xié)議。

    UDDI
    的目的是為電子商務(wù)建立標(biāo)準(zhǔn); UDDI 是一套基于 Web 的、分布式的、為 Web Service 提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的 Web Service 注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問(wèn)協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。
    117
    J2EE 是技術(shù)還是平臺(tái)還是框架?
    答: J2EE 本身是一個(gè)標(biāo)準(zhǔn),一個(gè)為企業(yè)分布式應(yīng)用的開(kāi)發(fā)提供的標(biāo)準(zhǔn)平臺(tái)。
    ?J2EE
    也是一個(gè)框架,包括 JDBC JNDI RMI JMS EJB JTA 等技術(shù)。
    118 STRUTS 的應(yīng)用 ( STRUTS 架構(gòu) )
    答: Struts 是采用 Java Servlet/JavaServer Pages 技術(shù),開(kāi)發(fā) Web 應(yīng)用程序的開(kāi)放源碼的 framework 采用 Struts 能開(kāi)發(fā)出基于 MVC(Model-View-Controller) 設(shè)計(jì)模式的應(yīng)用構(gòu)架。 Struts 有如下的主要功能:
    . 包含一個(gè) controller servlet ,能將用戶的請(qǐng)求發(fā)送到相應(yīng)的 Action 對(duì)象。

    .JSP 自由 tag 庫(kù),并且在 controller servlet 中提供關(guān)聯(lián)支持,幫助開(kāi)發(fā)員創(chuàng)建交互式表單應(yīng)用。

    . 提供了一系列實(shí)用對(duì)象: XML 處理、通過(guò) Java reflection APIs 自動(dòng)處理 JavaBeans 屬性、國(guó)際化的提示和消息。

    119 WEB?SERVICE 名詞解釋。 JSWDL 開(kāi)發(fā)包的介紹。 JAXP JAXM 的解釋。 SOAP UDDI,WSDL 解釋。 ?
    答: Web?ServiceWeb?Service 是基于網(wǎng)絡(luò)的、分布式的模塊化組件,它執(zhí)行特定的任務(wù),遵守具體的技術(shù)規(guī)范,這些規(guī)范使得 Web?Service 能與其他兼容的組件進(jìn)行互操作。

    JAXP(Java?API?for?XML?Parsing)?
    定義了在 Java 中使用 DOM,?SAX,?XSLT 的通用的接口。這樣在你的程序中你只要使用這些通用的接口,當(dāng)你需要改變具體的實(shí)現(xiàn)時(shí)候也不需要修改代碼。
    JAXM(Java?API?for?XML?Messaging)?
    是為 SOAP 通信提供訪問(wèn)方法和傳輸機(jī)制的 API
    WSDL
    是一種 ?XML? 格式,用于將網(wǎng)絡(luò)服務(wù)描述為一組端點(diǎn),這些端點(diǎn)對(duì)包含面向文檔信息或面向過(guò)程信息的消息進(jìn)行操作。這種格式首先對(duì)操作和消息進(jìn)行抽象描述,然后將其綁定到具體的網(wǎng)絡(luò)協(xié)議和消息格式上以定義端點(diǎn)。相關(guān)的具體端點(diǎn)即組合成為抽象端點(diǎn)(服務(wù))。
    SOAP
    即簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議 (Simple?Object?Access?Protocol) ,它是用于交換 XML 編碼信息的輕量級(jí)協(xié)議。 ?
    UDDI?
    的目的是為電子商務(wù)建立標(biāo)準(zhǔn); UDDI 是一套基于 Web 的、分布式的、為 Web?Service 提供的、信息注冊(cè)中心的實(shí)現(xiàn)標(biāo)準(zhǔn)規(guī)范,同時(shí)也包含一組使企業(yè)能將自身提供的 Web?Service 注冊(cè),以使別的企業(yè)能夠發(fā)現(xiàn)的訪問(wèn)協(xié)議的實(shí)現(xiàn)標(biāo)準(zhǔn)。

    120
    C/S? ?B/S? 區(qū)別:
    答:
    有如下八個(gè)方面的不同:
    1.硬件環(huán)境不同 :?
       C/S? 一般建立在專用的網(wǎng)絡(luò)上 ,? 小范圍里的網(wǎng)絡(luò)環(huán)境 ,? 局域網(wǎng)之間再通過(guò)專門服務(wù)器提供連接和數(shù)據(jù)交換服務(wù)
    .
       B/S? 建立在廣域網(wǎng)之上的 ,? 不必是專門的網(wǎng)絡(luò)硬件環(huán)境 , 例與電話上網(wǎng) ,? 租用設(shè)備 .? 信息自己管理 .? 有比 C/S 更強(qiáng)的適應(yīng)范圍 ,? 一般只要有操作系統(tǒng)和瀏覽器就行
    ?
    2.對(duì)安全要求不同
    ?
       C/S? 一般面向相對(duì)固定的用戶群 ,? 對(duì)信息安全的控制能力很強(qiáng) .? 一般高度機(jī)密的信息系統(tǒng)采用 C/S? 結(jié)構(gòu)適宜 .? 可以通過(guò) B/S 發(fā)布部分可公開(kāi)信息
    .
       B/S? 建立在廣域網(wǎng)之上 ,? 對(duì)安全的控制能力相對(duì)弱 ,? 可能面向不可知的用戶。

    3.對(duì)程序架構(gòu)不同 ?
       C/S? 程序可以更加注重流程 ,? 可以對(duì)權(quán)限多層次校驗(yàn) ,? 對(duì)系統(tǒng)運(yùn)行速度可以較少考慮
    .
       B/S? 對(duì)安全以及訪問(wèn)速度的多重的考慮 ,? 建立在需要更加優(yōu)化的基礎(chǔ)之上 .? C/S 有更高的要求 ?B/S 結(jié)構(gòu)的程序架構(gòu)是發(fā)展的趨勢(shì) ,? MS .Net 系列的 BizTalk?2000?Exchange?2000 ,? 全面支持網(wǎng)絡(luò)的構(gòu)件搭建的系統(tǒng) .?SUN? IBM 推的 JavaBean? 構(gòu)件技術(shù)等 , 使 ?B/S 更加成熟
    .?
    4.軟件重用不同
    ?
       C/S? 程序可以不可避免的整體性考慮 ,? 構(gòu)件的重用性不如在 B/S 要求下的構(gòu)件的重用性好
    .
       B/S? 對(duì)的多重結(jié)構(gòu) , 要求構(gòu)件相對(duì)獨(dú)立的功能 .? 能夠相對(duì)較好的重用 . 就入買來(lái)的餐桌可以再利用 , 而不是做在墻上的石頭桌子
    ?
    5.系統(tǒng)維護(hù)不同
    ??
       C/S? 程序由于整體性 ,? 必須整體考察 ,? 處理出現(xiàn)的問(wèn)題以及系統(tǒng)升級(jí) .? 升級(jí)難 .? 可能是再做一個(gè)全新的系統(tǒng)

       B/S? 構(gòu)件組成 , 方面構(gòu)件個(gè)別的更換 , 實(shí)現(xiàn)系統(tǒng)的無(wú)縫升級(jí) .? 系統(tǒng)維護(hù)開(kāi)銷減到最小 . 用戶從網(wǎng)上自己下載安裝就可以實(shí)現(xiàn)升級(jí) .?
    6.處理問(wèn)題不同
    ?
       C/S? 程序可以處理用戶面固定 ,? 并且在相同區(qū)域 ,? 安全要求高需求 ,? 與操作系統(tǒng)相關(guān) .? 應(yīng)該都是相同的系統(tǒng)

       B/S? 建立在廣域網(wǎng)上 ,? 面向不同的用戶群 ,? 分散地域 ,? 這是 C/S 無(wú)法作到的 .? 與操作系統(tǒng)平臺(tái)關(guān)系最小 .?
    7.用戶接口不同
    ?
       C/S? 多是建立的 Window 平臺(tái)上 , 表現(xiàn)方法有限 , 對(duì)程序員普遍要求較高

       B/S? 建立在瀏覽器上 ,? 有更加豐富和生動(dòng)的表現(xiàn)方式與用戶交流 .? 并且大部分難度減低 , 減低開(kāi)發(fā)成本 .?
    8.信息流不同
    ?
       C/S? 程序一般是典型的中央集權(quán)的機(jī)械式處理 ,? 交互性相對(duì)低

       B/S? 信息流向可變化 ,?B-B?B-C?B-G 等信息、流向的變化 ,? 更像交易中心。
    121 、什么是 web 容器
    答:
    給處于其中的應(yīng)用程序組件( JSP SERVLET )提供一個(gè)環(huán)境,使 JSP,SERVLET 直接更容器中的環(huán)境變量接 ** 互,不必關(guān)注其它系統(tǒng)問(wèn)題。主要有 WEB 服務(wù)器來(lái)實(shí)現(xiàn)。例如: TOMCAT,WEBLOGIC,WEBSPHERE 等。該容器提供的接口嚴(yán)格遵守 J2EE 規(guī)范中的 WEB?APPLICATION? 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的 WEB 服務(wù)器就叫做 J2EE 中的 WEB 容器。 122 、什么是 EJB 容器
    答:
    Enterprise?java?bean? 容器。更具有行業(yè)領(lǐng)域特色。他提供給運(yùn)行在其中的組件 EJB 各種管理功能。只要滿足 J2EE 規(guī)范的 EJB 放入該容器,馬上就會(huì)被容器進(jìn)行高效率的管理。并且可以通過(guò)現(xiàn)成的接口來(lái)獲得系統(tǒng)級(jí)別的服務(wù)。例如郵件服務(wù)、事務(wù)管理
    123 什么是 JNDI
    答:
    Java?Naming?&?Directory?Interface JAVA 命名目錄服務(wù)。主要提供的功能是:提供一個(gè)目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。
    124 、什么是 JMS
    答:
    Java?Message?Service JAVA 消息服務(wù)。主要實(shí)現(xiàn)各個(gè)應(yīng)用程序之間的通訊。包括點(diǎn)對(duì)點(diǎn)和廣播。
    125 、什么是 JTA
    答:
    Java?Transaction?API JAVA 事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。
    126 、什么是 JAF
    答:
    Java?Action?FrameWork JAVA 安全認(rèn)證框架。提供一些安全控制方面的框架。讓開(kāi)發(fā)者通過(guò)各種部署和自定義實(shí)現(xiàn)自己的個(gè)性安全控制策略。
    RMI/IIOP:
    Remote?Method?Invocation?/internet 對(duì)象請(qǐng)求中介協(xié)議)他們主要用于通過(guò)遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺(tái)計(jì)算機(jī)上運(yùn)行一個(gè)程序,它提供股票分析服務(wù),我們可以在本地計(jì)算機(jī)上實(shí)現(xiàn)對(duì)其直接調(diào)用。當(dāng)然這是要通過(guò)一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。 RMI JAVA 特有的。
    127 MVC 的各個(gè)部分都有那些技術(shù)來(lái)實(shí)現(xiàn) ? 如何實(shí)現(xiàn) ??
    答:
    MVC Model View Controller 的簡(jiǎn)寫。 "Model"? 代表的是應(yīng)用的業(yè)務(wù)邏輯(通過(guò) JavaBean EJB 組件實(shí)現(xiàn)), ?"View"? 是應(yīng)用的表示面(由 JSP 頁(yè)面產(chǎn)生), "Controller"? 是提供應(yīng)用的處理過(guò)程控制(一般是一個(gè) Servlet ),通過(guò)這種設(shè)計(jì)模型把應(yīng)用邏輯,處理過(guò)程和顯示邏輯分成不同的組件實(shí)現(xiàn)。這些組件可以進(jìn)行交互和重用。

    設(shè)計(jì)模式方面

    128 、開(kāi)發(fā)中都用到了那些設(shè)計(jì)模式 ? 用在什么場(chǎng)合 ?
    答: 每個(gè)模式都描述了一個(gè)在我們的環(huán)境中不斷出現(xiàn)的問(wèn)題,然后描述了該問(wèn)題的解決方案的核心。通過(guò)這種方式,你可以無(wú)數(shù)次地使用那些已有的解決方案,無(wú)需在重復(fù)相同的工作。主要用到了 MVC 的設(shè)計(jì)模式。用來(lái)開(kāi)發(fā) JSP/Servlet 或者 J2EE 的相關(guān)應(yīng)用。簡(jiǎn)單工廠模式等。
    129 、說(shuō)說(shuō)你所熟悉或聽(tīng)說(shuō)過(guò)的 j2ee 中的幾種常用模式 ? 及對(duì)設(shè)計(jì)模式的一些看法
    答: Session?Facade?Pattern :使用 SessionBean 訪問(wèn) EntityBean
    Message?Facade?Pattern
    :實(shí)現(xiàn)異步調(diào)用

    EJB?Command?Pattern
    :使用 Command?JavaBeans 取代 SessionBean ,實(shí)現(xiàn)輕量級(jí)訪問(wèn)
    Data?Transfer?Object?Factory
    :通過(guò) DTO?Factory 簡(jiǎn)化 EntityBean 數(shù)據(jù)提供特性
    Generic?Attribute?Access
    :通過(guò) AttibuteAccess 接口簡(jiǎn)化 EntityBean 數(shù)據(jù)提供特性
    Business?Interface
    :通過(guò)遠(yuǎn)程(本地)接口和 Bean 類實(shí)現(xiàn)相同接口規(guī)范業(yè)務(wù)邏輯一致性
    EJB架構(gòu)的設(shè)計(jì)好壞將直接影響系統(tǒng)的性能、可擴(kuò)展性、可維護(hù)性、組件可重用性及開(kāi)發(fā)效率。項(xiàng)目越復(fù)雜,項(xiàng)目隊(duì)伍越龐大則越能體現(xiàn)良好設(shè)計(jì)的重要性。
    130 j2ee 常用的設(shè)計(jì)模式?說(shuō)明工廠模式。
    ? 答: Java 中的 23 種設(shè)計(jì)模式:
    Factory
    (工廠模式), ??????Builder (建造模式), ???????Factory?Method (工廠方法模式),
    Prototype
    (原始模型模式), Singleton (單例模式), ????Facade (門面模式),
    Adapter
    (適配器模式), ????Bridge (橋梁模式), ????????Composite (合成模式),
    Decorator
    (裝飾模式), ????Flyweight (享元模式), ?????Proxy (代理模式),
    Command
    (命令模式), ??????Interpreter (解釋器模式), ?Visitor (訪問(wèn)者模式),
    Iterator
    (迭代子模式), ???Mediator (調(diào)停者模式), ????Memento (備忘錄模式),
    Observer
    (觀察者模式), ???State (狀態(tài)模式), ?????????Strategy (策略模式),
    Template?Method
    (模板方法模式), ?Chain?Of?Responsibleity (責(zé)任鏈模式)
    工 廠模式:工廠模式是一種經(jīng)常被使用到的模式,根據(jù)工廠模式實(shí)現(xiàn)的類可以根據(jù)提供的數(shù)據(jù)生成一組類中某一個(gè)類的實(shí)例,通常這一組類有一個(gè)公共的抽象父類并且 實(shí)現(xiàn)了相同的方法,但是這些方法針對(duì)不同的數(shù)據(jù)進(jìn)行了不同的操作。首先需要定義一個(gè)基類,該類的子類通過(guò)不同的方法實(shí)現(xiàn)了基類中的方法。然后需要定義一個(gè) 工廠類,工廠類可以根據(jù)條件生成不同的子類實(shí)例。當(dāng)?shù)玫阶宇惖膶?shí)例后,開(kāi)發(fā)人員可以調(diào)用基類中的方法而不必考慮到底返回的是哪一個(gè)子類的實(shí)例。
    131 UML 方面
    答: 標(biāo)準(zhǔn)建模語(yǔ)言 UML 。用例圖 , 靜態(tài)圖 ( 包括類圖、對(duì)象圖和包圖 ), 行為圖 , 交互圖 ( 順序圖 , 合作圖 ), 實(shí)現(xiàn)圖 ,
    UML 方面 ?

    CORBA 方面

    132 CORBA 是什么 ? 用途是什么 ?
    答: CORBA 標(biāo)準(zhǔn)是公共對(duì)象請(qǐng)求代理結(jié)構(gòu) (Common Object Request Broker Architecture) ,由對(duì)象管理組織 (Object Management Group ,縮寫為 OMG) 標(biāo)準(zhǔn)化。它的組成是接口定義語(yǔ)言 (IDL), 語(yǔ)言綁定 (binding: 也譯為聯(lián)編 ) 和允許應(yīng)用程序間互操作的協(xié)議。 其目的為:
    用不同的程序設(shè)計(jì)語(yǔ)言書寫
    在不同的進(jìn)程中運(yùn)行

    為不同的操作系統(tǒng)開(kāi)發(fā)

    LINUX 方面

    133 LINUX 下線程, GDI 類的解釋。
    答: LINUX實(shí)現(xiàn)的就是基于核心輕量級(jí)進(jìn)程的"一對(duì)一"線程模型,一個(gè)線程實(shí)體對(duì)應(yīng)一個(gè)核心輕量級(jí)進(jìn)程,而線程之間的管理在核外函數(shù)庫(kù)中實(shí)現(xiàn)。
    GDI類為圖像設(shè)備編程接口類庫(kù)。
    134 LINUX 下線程, GDI 類的解釋。

    LINUX 實(shí)現(xiàn)的就是基于核心輕量級(jí)進(jìn)程的 " 一對(duì)一 " 線程模型,一個(gè)線程實(shí)體對(duì)應(yīng)一個(gè)核心輕量級(jí)進(jìn)程,而線程之間的管理在核外函數(shù)庫(kù)中實(shí)現(xiàn)。 ?
    GDI
    類為圖像設(shè)備編程接口類庫(kù)。

    代碼與編程題
    135
    、寫一個(gè) Singleton 出來(lái)
    Singleton 模式主要作用是保證在 Java 應(yīng)用程序中,一個(gè)類 Class 只有一個(gè)實(shí)例存在。
    一般 Singleton 模式通常有幾種種形式 :
    第一種形式 :? 定義一個(gè)類,它的構(gòu)造函數(shù)為 private 的,它有一個(gè) static private 的該類變量,在類初始化時(shí)實(shí)例話,通過(guò)一個(gè) public getInstance 方法獲取對(duì)它的引用 , 繼而調(diào)用其中的方法。

    public?class?Singleton?{
    private?Singleton(){}
       ????// 在自己內(nèi)部定義自己一個(gè)實(shí)例,是不是很奇怪?
       ????// 注意這是 private? 只供內(nèi)部調(diào)用
       ????private?static?Singleton?instance?=?new?Singleton();
       ????// 這里提供了一個(gè)供外部訪問(wèn)本 class 的靜態(tài)方法,可以直接訪問(wèn)  

       ????public?static?Singleton?getInstance()?{
         ????return?instance;?   

       ????}?
    ????}?
    ????
    第二種形式
    :?
    public?class?Singleton?{?
      
    private?static?Singleton?instance?=?null;
      
    public?static?synchronized?Singleton?getInstance()?{
       // 這個(gè)方法比上面有所改進(jìn),不用每次都進(jìn)行生成對(duì)象,只是第一次    ?  

       // 使用時(shí)生成實(shí)例,提高了效率!
       if?(instance==null)
         instance
    new?Singleton();
    return?instance;?
      
    }?
    }?
    其他形式
    :
    定義一個(gè)類,它的構(gòu)造函數(shù)為 private 的,所有方法為 static 的。

    一般認(rèn)為第一種形式要更加安全些 ?
    136 、繼承時(shí)候類的執(zhí)行順序問(wèn)題 , 一般都是選擇題 , 問(wèn)你將會(huì)打印出什么 ?
    : 父類:
    package test;
    public class? FatherClass
    {
    ??? public FatherClass()
    ?{
    ??System.out.println("FatherClass Create");
    ?}
    }
    子類 :
    package test;
    import test.FatherClass;
    public class? ChildClass extends FatherClass
    {
    ?public ChildClass()
    ?{
    ??System.out.println("ChildClass Create");
    ?}
    ?public static void main(String[] args)
    ?{
    ??FatherClass fc = new FatherClass();
    ??ChildClass cc = new ChildClass();
    ?}
    }
    輸出結(jié)果:

    C:\>java test.ChildClass
    FatherClass Create
    FatherClass Create
    ChildClass Create

    137 、內(nèi)部類的實(shí)現(xiàn)方式 ?
    答: 示例代碼如下:
    package test;
    public class? OuterClass
    {
    ?private class InterClass
    ?{
    ??public InterClass()
    ??{
    ???System.out.println("InterClass Create");
    ??}
    ?}
    ?public OuterClass()
    ?{
    ??InterClass ic = new InterClass();
    ??System.out.println("OuterClass Create");
    ?}
    ?public static void main(String[] args)
    ?{
    ??OuterClass oc = new OuterClass();
    ?}
    }
    輸出結(jié)果 :
    C:\>java test/OuterClass
    InterClass Create
    OuterClass Create
    再一個(gè)例題:

    public class OuterClass {
    ? private double d1 = 1.0;
    ??? //insert code here
    }
    You need to insert an inner class declaration at line 3. Which two inner class declarations are

    valid?(Choose two.)
    A. class InnerOne{
    ???? public static double methoda() {return d1;}
    ?? }
    B. public class InnerOne{
    ???? static double methoda() {return d1;}
    ?? }
    C. private class InnerOne{
    ???? double methoda() {return d1;}
    ?? }
    D. static class InnerOne{
    ???? protected double methoda() {return d1;}
    ?? }
    E. abstract class InnerOne{
    ???? public abstract double methoda();
    ?? }
    說(shuō)明如下:

    . 靜態(tài)內(nèi)部類可以有靜態(tài)成員,而非靜態(tài)內(nèi)部類則不能有靜態(tài)成員。 A B 錯(cuò)
    . 靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的靜態(tài)變量,而不可訪問(wèn)外部類的非靜態(tài)變量; return d1 出錯(cuò)。

    D 錯(cuò)
    . 非靜態(tài)內(nèi)部類的非靜態(tài)成員可以訪問(wèn)外部類的非靜態(tài)變量。 C 正確
    . 答案為 C E

    138 Java 的通信編程,編程題 ( 或問(wèn)答 ) ,用 JAVA SOCKET 編程,讀服務(wù)器幾個(gè)字符,再寫入本地顯示?
    : Server 端程序 :
    package test;
    import java.net.*;
    import java.io.*;

    public class Server
    {
    ?private ServerSocket ss;
    ?private Socket socket;
    ?private BufferedReader in;
    ?private PrintWriter out;
    ?public Server()
    ?{
    ??try
    ??{
    ???ss=new ServerSocket(10000);
    ???while(true)
    ???{
    ????socket = ss.accept();
    ????String RemoteIP = socket.getInetAddress().getHostAddress();
    ????String RemotePort = ":"+socket.getLocalPort();
    ????System.out.println("A client come in!IP:"+RemoteIP+RemotePort);
    ????in = new BufferedReader(new

    InputStreamReader(socket.getInputStream()));
    ????String line = in.readLine();
    ????System.out.println("Cleint send is :" + line);
    ????out = new PrintWriter(socket.getOutputStream(),true);
    ????out.println("Your Message Received!");
    ????out.close();
    ????in.close();
    ????socket.close();
    ???}
    ??}catch (IOException e)
    ??{
    ???out.println("wrong");
    ??}
    ?}
    ?public static void main(String[] args)
    ?{
    ??new Server();
    ?}
    };
    Client
    端程序
    :
    package test;
    import java.io.*;
    import java.net.*;

    public class Client
    {
    ?Socket socket;
    ?BufferedReader in;
    ?PrintWriter out;
    ?public Client()
    ?{
    ??try
    ??{
    ???System.out.println("Try to Connect to 127.0.0.1:10000");
    ???socket = new Socket("127.0.0.1",10000);
    ???System.out.println("The Server Connected!");
    ???System.out.println("Please enter some Character:");
    ???BufferedReader line = new BufferedReader(new

    InputStreamReader(System.in));
    ???out = new PrintWriter(socket.getOutputStream(),true);
    ???out.println(line.readLine());
    ???in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
    ???System.out.println(in.readLine());
    ???out.close();
    ???in.close();
    ???socket.close();
    ??}catch(IOException e)
    ??{
    ???out.println("Wrong");
    ??}
    ?}
    ?public static void main(String[] args)
    ?{
    ??new Client();
    ?}
    };

    139 、用 JAVA 實(shí)現(xiàn)一種排序, JAVA 類實(shí)現(xiàn)序列化的方法 ( 二種 ) 如在 COLLECTION 框架中,實(shí)現(xiàn)比較要實(shí)現(xiàn)什么樣的接口?
    : 用插入法進(jìn)行排序代碼如下
    package test;
    import java.util.*;
    class? InsertSort
    {
    ?ArrayList al;
    ?public InsertSort(int num,int mod)
    ?{
    ??al = new ArrayList(num);
    ??Random rand = new Random();
    ??System.out.println("The ArrayList Sort Before:");
    ??for (int i=0;i<num ;i++ )
    ??{
    ???al.add(new Integer(Math.abs(rand.nextInt()) % mod + 1));
    ???System.out.println("al["+i+"]="+al.get(i));
    ??}
    ?}
    ?public void SortIt()
    ?{
    ??Integer tempInt;
    ??int MaxSize=1;
    ??for(int i=1;i<al.size();i++)
    ??{
    ?????? tempInt = (Integer)al.remove(i);
    ????if(tempInt.intValue()>=((Integer)al.get(MaxSize-1)).intValue())
    ????{
    ?????al.add(MaxSize,tempInt);
    ?????MaxSize++;
    ?????System.out.println(al.toString());
    ????} else {
    ?????for (int j=0;j<MaxSize ;j++ )
    ?????{
    ??????if

    (((Integer)al.get(j)).intValue()>=tempInt.intValue())
    ??????{
    ???????al.add(j,tempInt);
    ???????MaxSize++;
    ???????System.out.println(al.toString());
    ???????break;
    ??????}
    ?????}
    ????}
    ??}
    ??System.out.println("The ArrayList Sort After:");
    ??for(int i=0;i<al.size();i++)
    ??{
    ???System.out.println("al["+i+"]="+al.get(i));
    ??}
    ?}
    ?public static void main(String[] args)
    ?{
    ??InsertSort is = new InsertSort(10,100);
    ??is.SortIt();
    ?}
    }
    140
    、編程:編寫一個(gè)截取字符串的函數(shù),輸入為一個(gè)字符串和字節(jié)數(shù),輸出為按字節(jié)截取的字符串。 但是要保證漢字不被截半個(gè),如 ABC”4 ,應(yīng)該截為 AB” ,輸入 ABC DEF” 6 ,應(yīng)該輸出為 ABC” 而不是 ABC+ 漢的半個(gè)

    答: 代碼如下:
    package test;

    class? SplitString
    {
    ?String SplitStr;
    ?int SplitByte;
    ?public SplitString(String str,int bytes)
    ?{
    ??SplitStr=str;
    ??SplitByte=bytes;
    ??System.out.println("The String is:'"+SplitStr+"';SplitBytes="+SplitByte);
    ?}
    ?public void SplitIt()
    ?{
    ??int loopCount;
    ??

    loopCount=(SplitStr.length()%SplitByte==0)?(SplitStr.length()/SplitByte):(SplitStr.length()/ Split

    Byte+1);
    ??System.out.println("Will Split into "+loopCount);
    ??for (int i=1;i<=loopCount ;i++ )
    ??{
    ???if (i==loopCount){
    ????

    System.out.println(SplitStr.substring((i-1)*SplitByte,SplitStr.length()));
    ???} else {
    ????

    System.out.println(SplitStr.substring((i-1)*SplitByte,(i*SplitByte)));
    ???}
    ??}
    ?}
    ?public static void main(String[] args)
    ?{
    ??SplitString ss = new SplitString("test
    dd dsaf 中男大 3443n 中國(guó) 43 中國(guó)人

    0ewldfls=103",4);
    ??ss.SplitIt();
    ?}
    }

    141 JAVA 多線程編程。 JAVA 寫一個(gè)多線程程序,如寫四個(gè)線程,二個(gè)加 1 ,二個(gè)對(duì)一個(gè)變量減一,輸出。
    希望大家補(bǔ)上,謝謝

    142 、可能會(huì)讓你寫一段 Jdbc Oracle 的程序 , 并實(shí)現(xiàn)數(shù)據(jù)查詢 .
    : 程序如下:
    package hello.ant;
    import java.sql.*;
    public class? jdbc
    {
    ?String dbUrl="jdbc:oracle:thin:@127.0.0.1:1521:orcl";
    ?String theUser="admin";
    ?String thePw="manager";
    ?Connection c=null;
    ?Statement conn;
    ?ResultSet rs=null;
    ?public jdbc()
    ?{
    ??try{
    ??? Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
    ????????? c = DriverManager.getConnection(dbUrl,theUser,thePw);
    ??? conn=c.createStatement();
    ??}catch(Exception e){
    ???e.printStackTrace();
    ??}
    ?}
    ?public boolean executeUpdate(String sql)
    ?{
    ???try
    ???{
    ?????conn.executeUpdate(sql);
    ?????return true;
    ???}
    ???catch (SQLException e)
    ???{
    ?????e.printStackTrace();
    ?????return false;
    ???}
    ?}
    ?public ResultSet executeQuery(String sql)
    ?{
    ???rs=null;
    ???try
    ???{
    ?????rs=conn.executeQuery(sql);
    ???}
    ???catch (SQLException e)
    ???{
    ?????e.printStackTrace();
    ???}
    ???return rs;
    ?}
    ?public void close()
    ?{
    ???try
    ???{
    ?????conn.close();
    ?????c.close();
    ???}
    ???catch (Exception e)
    ???{
    ?????e.printStackTrace();
    ???}
    ?}
    ?public static void main(String[] args)
    ?{
    ??ResultSet rs;
    ??jdbc conn = new jdbc();
    ??rs=conn.executeQuery("select * from test");
    ??try{
    ??while (rs.next())
    ??{
    ???System.out.println(rs.getString("id"));
    ???System.out.println(rs.getString("name"));
    ??}
    ??}catch(Exception e)
    ??{
    ???e.printStackTrace();
    ??}
    ?}
    }

    143 ORACLE 大數(shù)據(jù)量下的分頁(yè)解決方法。一般用截取 ID 方法,還有是三層嵌套方法。
    : 一種分頁(yè)方法
    <%
    ? int i=1;
    ? int numPages=14;
    ? String pages = request.getParameter("page") ;
    ? int currentPage = 1;
    ? currentPage=(pages==null)?(1):{Integer.parseInt(pages)}
    ? sql = "select count(*) from tables";
    ? ResultSet rs = DBLink.executeQuery(sql) ;
    ? while(rs.next()) i = rs.getInt(1) ;
    ? int intPageCount=1;
    ? intPageCount=(i%numPages==0)?(i/numPages):(i/numPages+1);
    ? int nextPage ;
    ? int upPage;
    ? nextPage = currentPage+1;
    ? if (nextPage>=intPageCount) nextPage=intPageCount;
    ? upPage = currentPage-1;
    ? if (upPage<=1) upPage=1;
    ? rs.close();
    ? sql="select * from tables";
    ? rs=DBLink.executeQuery(sql);
    ? i=0;
    ? while((i<numPages*(currentPage-1))&&rs.next()){i++;}
    %>
    //
    輸出內(nèi)容
    //
    輸出翻頁(yè)連接
    合計(jì) :<%=currentPage%>/<%=intPageCount%><a href="List.jsp?page=1"> 第一頁(yè) </a><a

    href="List.jsp?page=<%=upPage%>"> 上一頁(yè) </a>
    <%
    ? for(int j=1;j<=intPageCount;j++){
    ? if(currentPage!=j){
    %>
    ? <a href="list.jsp?page=<%=j%>">[<%=j%>]</a>
    <%
    ? }else{
    ? out.println(j);
    ? }
    ? }
    %>
    <a href="List.jsp?page=<%=nextPage%>">
    下一頁(yè) </a><a href="List.jsp?page=<%=intPageCount%>"> 最后頁(yè)

    </a>

    144 、用 jdom 解析 xml 文件時(shí)如何解決中文問(wèn)題 ? 如何解析 ?
    : 看如下代碼 , 用編碼方式加以解決
    package test;
    import java.io.*;
    public class DOMTest
    {
    ?private String inFile = "c:\\people.xml";
    ?private String outFile = "c:\\people.xml";?
    ?public static void main(String args[])
    ?{
    ??? ?new DOMTest();
    ??? }
    ?public DOMTest()
    ?{
    ??try
    ???? {?
    ???? ?javax.xml.parsers.DocumentBuilder builder =
    ???? ??

    javax.xml.parsers.DocumentBuilderFactory.newInstance().newDocumentBuilder();
    ???? ?org.w3c.dom.Document doc = builder.newDocument();
    ???? ?org.w3c.dom.Element root = doc.createElement("
    老師
    ");
    ???? ?org.w3c.dom.Element wang = doc.createElement("
    ");
    ???org.w3c.dom.Element liu = doc.createElement("
    ");
    ???? ?wang.appendChild(doc.createTextNode("
    我是王老師
    "));
    ???? ?root.appendChild(wang);
    ???? ?doc.appendChild(root);
    ???? ?javax.xml.transform.Transformer transformer =
    ???? ??javax.xml.transform.TransformerFactory.newInstance().newTransformer();
    ???? ?transformer.setOutputProperty(javax.xml.transform.OutputKeys.ENCODING, "gb2312");
    ???? ?transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes");??

    ? ?
    ???? ?transformer.transform(new javax.xml.transform.dom.DOMSource(doc),
    ???? ???????new

    javax.xml.transform.stream.StreamResult(outFile));
    ???? }
    ???? catch (Exception e)
    ???? {
    ???? ?System.out.println (e.getMessage());
    ???? }
    ??? }
    }

    145 、編程用 JAVA 解析 XML 的方式 .
    : SAX 方式解析 XML XML 文件如下:
    <?xml version="1.0" encoding="gb2312"?>
    <person>
    ? <name>
    王小明 </name>
    ? <college>
    信息學(xué)院
    </college>??
    ? <telephone>6258113</telephone>
    ? <notes>
    ,1955 年生 , 博士, 95 年調(diào)入海南大學(xué)
    </notes>
    ?</person>
    ?
    事件回調(diào)類
    SAXHandler.java
    ?import java.io.*;
    import java.util.Hashtable;
    import org.xml.sax.*;
    public class SAXHandler extends HandlerBase
    ? {
    ? private Hashtable table = new Hashtable();
    ? private String currentElement = null;
    ? private String currentValue = null;
    ? public void setTable(Hashtable table)
    ??? {
    ??? this.table = table;
    ??? }
    ? public Hashtable getTable()
    ??? {
    ??? return table;
    ??? }
    ? public void startElement(String tag, AttributeList attrs)
    ? throws SAXException
    ??? {
    ??? currentElement = tag;
    ??? }
    ? public void characters(char[] ch, int start, int length)
    ? throws SAXException
    ??? {
    ??? currentValue = new String(ch, start, length);
    ??? }
    ? public void endElement(String name) throws SAXException
    ??? {
    ??? if (currentElement.equals(name))
    ????? table.put(currentElement, currentValue);
    ??? }
    ? }
    JSP
    內(nèi)容顯示源碼
    ,SaxXml.jsp:
    <HTML>
    <HEAD>
    <TITLE>
    剖析 XML 文件
    people.xml</TITLE>
    </HEAD>
    <BODY>
    <%@ page errorPage="ErrPage.jsp"
    contentType="text/html;charset=GB2312" %>
    <%@ page import="java.io.*" %>
    <%@ page import="java.util.Hashtable" %>
    <%@ page import="org.w3c.dom.*" %>
    <%@ page import="org.xml.sax.*" %>
    <%@ page import="javax.xml.parsers.SAXParserFactory" %>
    <%@ page import="javax.xml.parsers.SAXParser" %>
    <%@ page import="SAXHandler" %>
    <%
    File file = new File("c:\\people.xml");
    FileReader reader = new FileReader(file);
    Parser parser;
    SAXParserFactory spf = SAXParserFactory.newInstance();
    SAXParser sp = spf.newSAXParser();
    SAXHandler handler = new SAXHandler();
    sp.parse(new InputSource(reader), handler);
    Hashtable hashTable = handler.getTable();
    out.println("<TABLE BORDER=2><CAPTION>
    教師信息表
    </CAPTION>");
    out.println("<TR><TD>
    姓名
    </TD>" + "<TD>" +
    ? (String)hashTable.get(new String("name")) + "</TD></TR>");
    out.println("<TR><TD>
    學(xué)院
    </TD>" + "<TD>" +
    ? (String)hashTable.get(new String("college"))+"</TD></TR>");
    out.println("<TR><TD>
    電話
    </TD>" + "<TD>" +
    ? (String)hashTable.get(new String("telephone")) + "</TD></TR>");
    out.println("<TR><TD>
    備注
    </TD>" + "<TD>" +
    ? (String)hashTable.get(new String("notes")) + "</TD></TR>");
    out.println("</TABLE>");
    %>
    </BODY>
    </HTML>

    146 EJB 的基本架構(gòu)
    : 一個(gè) EJB 包括三個(gè)部分 :
    ? Remote Interface
    接口的代碼

    ? package Beans;
    ? import javax.ejb.EJBObject;
    ? import java.rmi.RemoteException;
    ? public interface Add extends EJBObject
    ? {
    ?? //some method declare
    ? }
    ? Home Interface
    接口的代碼
    ? package Beans;
    ? import java.rmi.RemoteException;
    ? import jaax.ejb.CreateException;
    ? import javax.ejb.EJBHome;
    ? public interface AddHome extends EJBHome
    ? {
    ??? //some method declare
    ? }
    ? EJB
    類的代碼
    ? package Beans;
    ? import java.rmi.RemoteException;
    ? import javax.ejb.SessionBean;
    ? import javx.ejb.SessionContext;
    ? public class AddBean Implements SessionBean
    ? {
    ??? //some method declare
    ? }?

    147 、如何校驗(yàn)數(shù)字型 ?
    var re=/^\d{1,8}$|\.\d{1,2}$/;
    var str=document.form1.all(i).value;
    var r=str.match(re);
    if (r==null)
    {
    ?? sign=-4;
    ?? break;
    }
    else{
    ?? document.form1.all(i).value=parseFloat(str);
    }

    148 將一個(gè)鍵盤輸入的數(shù)字轉(zhuǎn)化成中文輸出
    (例如:輸入:1234567?????輸出:一百二拾三萬(wàn)四千五百六拾七)
    用java語(yǔ)言實(shí)現(xiàn),,請(qǐng)編一段程序?qū)崿F(xiàn)!
    ?public?class?Reader?{
    ??private?String?strNum;
    ??private?String?strNumChFormat;
    ??private?String?strNumTemp;
    ??private?int?intNumLen;
    ??private?String?strBegin;
    ??public?Reader(String?strNum)?{
    ????this.strNum?=?strNum;
    ??}
    ??public?boolean?check(String?strNum)?{
    ????boolean?valid?=?false;
    ????
    ????if?(strNum.substring(0,1).equals("0")){
    ?????this.strNum?=?strNum.substring(1);
    ????}
    ????try?{
    ??????new?Double(strNum);
    ??????valid?=?true;
    ????}
    ????catch?(NumberFormatException?ex)?{
    ??????System.out.println("Bad?number?format!");
    ????}
    ????return?valid;
    ??}
    ??public?void?init()?{
    ????strNumChFormat?=?"";
    ????intNumLen?=?strNum.length();
    ????strNumTemp?=?strNum;
    ????strNumTemp?=?strNumTemp.replace('1',?'一');
    ????strNumTemp?=?strNumTemp.replace('2',?'二');
    ????strNumTemp?=?strNumTemp.replace('3',?'三');
    ????strNumTemp?=?strNumTemp.replace('4',?'四');
    ????strNumTemp?=?strNumTemp.replace('5',?'五');
    ????strNumTemp?=?strNumTemp.replace('6',?'六');
    ????strNumTemp?=?strNumTemp.replace('7',?'七');
    ????strNumTemp?=?strNumTemp.replace('8',?'八');
    ????strNumTemp?=?strNumTemp.replace('9',?'九');
    ????strNumTemp?=?strNumTemp.replace('0',?'零');
    ????strNumTemp?=?strNumTemp.replace('.',?'點(diǎn)');
    ????strBegin?=?strNumTemp.substring(0,?1);
    ??}
    ??public?String?readNum()?{
    ????if?(check(strNum))?{
    ??????init();
    ??????try?{
    ????????for?(int?i?=?1,?j?=?1,?k?=?1;?i?<?intNumLen;?i++)?{
    ? ?????????if?(strNumTemp.charAt (intNumLen?-?1)?==?'零'?&&?i?= =?1)?{
    ????????????strNumChFormat?=?"位";
    ??????????}
    ? ?????????else?if?(strNumTemp.charAt (intNumLen?-?i)?==?'零'?&&?j?= =?1)?{
    ????????? ???strNumChFormat?=?"位"?+? strNumChFormat;
    ??????????}
    ? ?????????else?if?(strNumTemp.charAt (intNumLen?-?i)?==?'點(diǎn)')?{
    ????????????j?=?1;
    ????????????k?=?1;
    ????????????strNumChFormat?=?strNumTemp.charAt(intNumLen?-?i)?+?strNumChFormat;
    ????????????continue;
    ??????????}
    ??????????else?{
    ????????????strNumChFormat?=?strNumTemp.charAt(intNumLen?-?i)?+?strNumChFormat;
    ??????????}
    ? ?????????if?(strNumTemp.charAt (intNumLen?-?i?-?1)?!=?'位'?&&
    ? ????????????? strNumTemp.charAt(intNumLen?-?i?-?1)?!=?'零 ')?{
    ????????????if?(j?==?1?&&?i?<?intNumLen)?{
    ? ????????????? strNumChFormat?=?'拾'?+?strNumChFormat;
    ????????????}
    ????????????else?if?(j?==?2?&&?i?<?intNumLen)?{
    ? ????????????? strNumChFormat?=?'百'?+?strNumChFormat;
    ????????????}
    ????????????else?if?(j?==?3?&&?i?<?intNumLen)?{
    ? ????????????? strNumChFormat?=?'千'?+?strNumChFormat;
    ????????????}
    ??????????}
    ??????????if?(j?==?4?&&?i?<?intNumLen)?{
    ????????????j?=?0;
    ??????????}
    ??????????if?(k?==?4?&&?i?<?intNumLen)?{
    ? ???????????strNumChFormat? =?'萬(wàn)'?+?strNumChFormat;
    ??????????}
    ??????????else?if?(k?==?8?&&?i?<?intNumLen)?{
    ????????????k?=?0;
    ? ???????????strNumChFormat? =?'億'?+?strNumChFormat;
    ??????????}
    ??????????j++;
    ??????????k++;
    ????????}
    ????????while?(strNumChFormat.indexOf("位")?!=?-1)?{
    ? ?????????strNumChFormat? =?strNumChFormat.replaceAll("位",?"?");
    ????????}
    ????????if?(strNumChFormat.substring(0,?2)?==?"一拾")?{
    ??????????strNumChFormat?=?strNumChFormat.substring(1,?strNumChFormat.length());
    ????????}
    ????????if?(strNumChFormat.indexOf("點(diǎn)")?>=?0)?{
    ??????????String?rebegin?=?strNumChFormat.substring(0,
    ??????????????strNumChFormat.indexOf("點(diǎn)"));
    ? ?????????String?relast? =?strNumChFormat.substring(strNumChFormat.indexOf("點(diǎn)"),
    ??????????????strNumChFormat.length());
    ??????????for?(int?i?=?1;?i?<=?relast.length();?i++)?{
    ????????????relast?=?relast.replaceAll("拾",?"");
    ????????????relast?=?relast.replaceAll("百",?"");
    ????????????relast?=?relast.replaceAll("千",?"");
    ????????????relast?=?relast.replaceAll("萬(wàn)",?"");
    ????????????relast?=?relast.replaceAll("億",?"");
    ??????????}
    ??????????strNumChFormat?=?rebegin?+?relast;
    ????????}
    ??????}
    ??????catch?(ArrayIndexOutOfBoundsException?ex)?{
    ????????ex.printStackTrace();
    ??????}
    ??????catch?(Exception?ex)?{
    ????????ex.printStackTrace();
    ??????}
    ??????int?off?=?strNumChFormat.indexOf("點(diǎn)");
    ??????strNumChFormat?=?strBegin?+?strNumChFormat.substring(0);
    ????}
    ????else?{
    ??????strNumChFormat?=?"";
    ????}
    ????return?strNumChFormat;
    ??}
    ??public?static?void?main(String?args[])?{
    ????try?{
    ??????String?number?=?args[0].toString();
    ??????System.out.println("The?number?is:?"?+?number);
    ??????Reader?reader?=?new?Reader(number);
    ??????System.out.println("Output?String:?"?+?reader.readNum());
    ????}
    ????catch?(Exception?ex)?{
    ??????System.out.println("Please?input?like?that:?javac?Reader?<number>");
    ????}
    ??}
    }

    149 JAVA 代碼查錯(cuò)
    1.
    abstract?class?Name?{
    ???private?String?name;
    ???public?abstract?boolean?isStupidName(String?name)?{}
    }
    大俠們,這有何錯(cuò)誤
    ?
    答案 :? 錯(cuò)。 abstract?method 必須以分號(hào)結(jié)尾,且不帶花括號(hào)。

    2.
    public?class?Something?{
    ???void?doSomething?()?{
    ???????private?String?s?=?"";
    ???????int?l?=?s.length();
    ???}
    }
    有錯(cuò)嗎 ?
    答案 :? 錯(cuò)。局部變量前不能放置任何訪問(wèn)修飾符 ?(private public ,和 protected) final 可以用來(lái)修飾局部變量

    (final
    如同 abstract strictfp ,都是非訪問(wèn)修飾符, strictfp 只能修飾 class method 而非 variable)
    3.
    abstract?class?Something?{
    ???private?abstract?String?doSomething?();
    }
    這好像沒(méi)什么錯(cuò)吧 ?
    答案 :? 錯(cuò)。 abstract methods 不能以 private 修飾。 abstract methods 就是讓子類 implement( 實(shí)現(xiàn) ) 具體細(xì)節(jié)的,怎么可以用 private
    abstract
    method
    封鎖起來(lái)呢 ??( 同理, abstract?method 前不能加 final)

    4.
    public?class?Something?{
    ???public?int?addOne(final?int?x)?{
    ???????return?++x;
    ???}
    }
    這個(gè)比較明顯。
    答案 :? 錯(cuò)。 int?x 被修飾成 final ,意味著 x 不能在 addOne?method 中被修改。
    5.
    public?class?Something?{
    ???public?static?void?main(String[]?args)?{
    ???????Other?o?=?new?Other();
    ???????new?Something().addOne(o);
    ???}
    ???public?void?addOne(final?Other?o)?{
    ???????o.i++;
    ???}
    }
    class?Other?{
    ???public?int?i;
    }
    和上面的很相似,都是關(guān)于 final 的問(wèn)題,這有錯(cuò)嗎 ?
    答案 :? 正確。在 addOne?method 中,參數(shù) o 被修飾成 final 。如果在 addOne?method 里我們修改了 o
    reference
    (
    比如 :?o?=?new?Other();) ,那么如同上例這題也是錯(cuò)的。但這里修改的是 o
    member?vairable
    (
    成員變量 ) ,而 o reference 并沒(méi)有改變。

    6.
    class?Something?{
    ????int?i;
    ????public?void?doSomething()?{
    ????????System.out.println("i?=?"?+?i);
    ????}
    }?
    有什么錯(cuò)呢 ?? 看不出來(lái)啊。
    答案 :? 正確。輸出的是 "i?=?0" int?i 屬於 instant?variable?( 實(shí)例變量,或叫成員變量 ) instant?variable default?value int default?value 0
    7.
    class?Something?{
    ????final?int?i;
    ????public?void?doSomething()?{
    ????????System.out.println("i?=?"?+?i);
    ????}
    }
    和上面一題只有一個(gè)地方不同,就是多了一個(gè) final 。這難道就錯(cuò)了嗎 ?
    答案 :? 錯(cuò)。 final?int?i 是個(gè) final instant?variable?( 實(shí)例變量,或叫成員變量 ) final instant?variable 沒(méi)有 default?value ,必須在 constructor?( 構(gòu)造器 ) 結(jié)束之前被賦予一個(gè)明確的值。可以修改為 "final?int?i?=?0;"

    8.
    public?class?Something?{
    ?????public?static?void?main(String[]?args)?{
    ????????Something?s?=?new?Something();
    ????????System.out.println("s.doSomething()?returns?"?+?doSomething());
    ????}
    ????public?String?doSomething()?{
    ????????return?"Do?something?...";
    ????}
    }
    ?
    看上去很完美。
    答案 :? 錯(cuò)。看上去在 main call?doSomething 沒(méi)有什么問(wèn)題,畢竟兩個(gè) methods 都在同一個(gè) class 里。但仔細(xì)看, main static 的。 static?method 不能直接 call?non-static?methods 。可改成 "System.out.println("s.doSomething()?returns?"?+?s.doSomething());" 。同理, static?method 不能訪問(wèn) non-static?instant?variable
    9.
    此處, Something 類的文件名叫 OtherThing.java
    class?Something?{
    ????private?static?void?main(String[]?something_to_do)?{????????
    ????????System.out.println("Do?something?...");
    ????}
    }
    ?
    這個(gè)好像很明顯。

    答案 :? 正確。從來(lái)沒(méi)有人說(shuō)過(guò) Java Class 名字必須和其文件名相同。但 public?class 的名字必須和文件名相同。
    10

    interface??A{
    ???int?x?=?0;
    }
    class?B{
    ???int?x?=1;
    }
    class?C?extends?B?implements?A?{
    ???public?void?pX(){
    ??????System.out.println(x);
    ???}
    ???public?static?void?main(String[]?args)?{
    ??????new?C().pX();
    ???}
    }
    答案:錯(cuò)誤。在編譯時(shí)會(huì)發(fā)生錯(cuò)誤 ( 錯(cuò)誤描述不同的 JVM 有不同的信息,意思就是未明確的 x 調(diào)用,兩個(gè) x 都匹配(就象在同時(shí) import?java.util java.sql 兩個(gè)包時(shí)直接聲明 Date 一樣)。對(duì)于父類的變量 , 可以用 super.x 來(lái)明確,而接口的屬性默認(rèn)隱含為 ?public?static?final. 所以可以通過(guò) A.x 來(lái)明確。
    11.
    interface?Playable?{
    ????void?play();
    }
    interface?Bounceable?{
    ????void?play();
    }
    interface?Rollable?extends?Playable,?Bounceable?{
    ????Ball?ball?=?new?Ball("PingPang");
    }
    class?Ball?implements?Rollable?{
    ????private?String?name;
    ????public?String?getName()?{
    ????????return?name;
    ????}
    ????public?Ball(String?name)?{
    ????????this.name?=?name;????????
    ????}
    ???public?void?play()?{
    ????????ball?=?new?Ball("Football");
    ????????System.out.println(ball.getName());
    ????}
    }
    這個(gè)錯(cuò)誤不容易發(fā)現(xiàn)。
    答案 :? 錯(cuò)。 "interface?Rollable?extends?Playable,?Bounceable" 沒(méi)有問(wèn)題。 interface 可繼承多個(gè) interfaces ,所以這里沒(méi)錯(cuò)。問(wèn)題出在 interface?Rollable 里的 "Ball?ball?=?new?Ball("PingPang");" 。任何在 interface 里聲明的 interface?variable?( 接口變量,也可稱成員變量 ) ,默認(rèn)為 public?static?final 。也就是說(shuō) "Ball?ball?=?new?Ball("PingPang");" 實(shí)際上是 "public?static?final?Ball?ball?=?new?Ball("PingPang");" 。在 Ball 類的 Play() 方法中, "ball?=?new?Ball("Football");" 改變了 ball reference ,而這里的 ball 來(lái)自 Rollable?interface Rollable?interface 里的 ball public?static?final 的, final object 是不能被改變 reference 的。因此編譯器將在 "ball?=?new?Ball("Football");" 這里顯示有錯(cuò)。
    28 、設(shè)計(jì) 4 個(gè)線程,其中兩個(gè)線程每次對(duì) j 增加 1 ,另外兩個(gè)線程對(duì) j 每次減少 1 。寫出程序。
    以下程序使用內(nèi)部類實(shí)現(xiàn)線程,對(duì) j 增減的時(shí)候沒(méi)有考慮順序問(wèn)題。
    public?class?ThreadTest1{
    ??private?int?j;
    ??public?static?void?main(String?args[]){
    ThreadTest1?tt=new?ThreadTest1();
    Inc?inc=tt.new?Inc();
    Dec?dec=tt.new?Dec();
    for(int?i=0;i<2;i++){
    Thread?t=new?Thread(inc);
    t.start();
    t=new?Thread(dec);
    t.start();
    }
    }
    ??private?synchronized?void?inc(){
    j++;
    System.out.println(Thread.currentThread().getName()+"-inc:"+j);
    ??}
    ??private?synchronized?void?dec(){
    j--;
    System.out.println(Thread.currentThread().getName()+"-dec:"+j);
    ??}
    ??class?Inc?implements?Runnable{
    public?void?run(){
    for(int?i=0;i<100;i++){
    inc();
    }
    }
    ??}
    ??class?Dec?implements?Runnable{
    public?void?run(){
    for(int?i=0;i<100;i++){
    dec();
    }
    ?}
    ??}
    }


    ?

    posted on 2006-08-16 10:09 保爾任 閱讀(169) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    <2025年7月>
    293012345
    6789101112
    13141516171819
    20212223242526
    272829303112
    3456789

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲春色在线观看| 亚洲国产精品尤物yw在线| 免费黄色电影在线观看| 亚洲a一级免费视频| 成人免费黄色网址| 天堂在线免费观看中文版| 国产免费小视频在线观看| 亚洲国产一成人久久精品| 亚洲国产综合自在线另类| 69影院毛片免费观看视频在线| 日本不卡免费新一二三区| 无码乱人伦一区二区亚洲| 亚洲AV日韩AV永久无码色欲| 在线观看免费无码专区| 日韩激情无码免费毛片| 亚洲AV无码专区在线厂| 99国产精品免费视频观看| 亚洲国模精品一区| 亚洲Av高清一区二区三区| 日批视频网址免费观看| 妞干网在线免费视频| 国产天堂亚洲精品| 男女免费观看在线爽爽爽视频 | 在线a亚洲v天堂网2018| 亚洲A∨无码无在线观看| 8x成人永久免费视频| 亚洲乱码国产乱码精品精| 热re99久久6国产精品免费| 456亚洲人成在线播放网站| 8x8x华人永久免费视频| 2019亚洲午夜无码天堂| 亚洲人成影院在线无码观看| 久久亚洲精品成人无码| 国产亚洲日韩在线三区| 免费人成网上在线观看| 成人免费无毒在线观看网站 | 日韩吃奶摸下AA片免费观看| 亚洲国产精品免费视频| 国产VA免费精品高清在线| 免费在线黄色网址| 久久亚洲色WWW成人欧美|