posts - 20,  comments - 7,  trackbacks - 0
          http://www.jdon.com/idea/j2eebasic.htm

          J2EE容器分為WEB容器和EJB容器,Tomcat/Resin是Web容器;JBoss是EJB容器+Web容器等,其中Web容器直接使用Tomcat實現(xiàn)的。所以你開發(fā)的Web應(yīng)用程序可以在上面兩種容器運行,而你開發(fā)的Web+EJB應(yīng)用則只可以在JBoss服務(wù)器上運行,商業(yè)產(chǎn)品Websphere/Weblogic等和JBoss屬于同一種性質(zhì)。

          J2EE容器也稱為J2EE服務(wù)器,大部分時它們概念是一致的。

          http://www.douzhe.com/jerry/archive/archive1_cn.htm

          容器:充當(dāng)中間件的角色

          WEB容器:給處于其中的應(yīng)用程序組件(JSP,SERVLET)提供一個環(huán)境,使JSP,SERVLET直接更容器中的環(huán)境變量接口交互,不必關(guān)注其它系統(tǒng)問題。主要有WEB服務(wù)器來實現(xiàn)。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。該容器提供的接口嚴(yán)格遵守J2EE規(guī)范中的WEB APPLICATION 標(biāo)準(zhǔn)。我們把遵守以上標(biāo)準(zhǔn)的WEB服務(wù)器就叫做J2EE中的WEB容器。

          EJB容器:Enterprise Java bean 容器。更具有行業(yè)領(lǐng)域特色。他提供給運行在其中的組件EJB各種管理功能。只要滿足J2EE規(guī)范的EJB放入該容器,馬上就會被容器進(jìn)行高效率的管理。并且可以通過現(xiàn)成的接口來獲得系統(tǒng)級別的服務(wù)。例如郵件服務(wù)、事務(wù)管理。

          WEB容器和EJB容器在原理上是大體相同的,更多的區(qū)別是被隔離的外界環(huán)境。WEB容器更多的是跟基于HTTP的請求打交道。而EJB容器不是。它是更多的跟數(shù)據(jù)庫、其它服務(wù)打交道。但他們都是把與外界的交互實現(xiàn)從而減輕應(yīng)用程序的負(fù)擔(dān)。例如SERVLET不用關(guān)心HTTP的細(xì)節(jié),直接引用環(huán)境變量session,request,response就行、EJB不用關(guān)心數(shù)據(jù)庫連接速度、各種事務(wù)控制,直接由容器來完成。

          RMI/IIOP:遠(yuǎn)程方法調(diào)用/internet對象請求中介協(xié)議,他們主要用于通過遠(yuǎn)程調(diào)用服務(wù)。例如,遠(yuǎn)程有一臺計算機上運行一個程序,它提供股票分析服務(wù),我們可以在本地計算機上實現(xiàn)對其直接調(diào)用。當(dāng)然這是要通過一定的規(guī)范才能在異構(gòu)的系統(tǒng)之間進(jìn)行通信。RMI是Java特有的。

          JNDI:Java命名目錄服務(wù)。主要提供的功能是:提供一個目錄系統(tǒng),讓其它各地的應(yīng)用程序在其上面留下自己的索引,從而滿足快速查找和定位分布式應(yīng)用程序的功能。

          JMS:Java消息服務(wù)。主要實現(xiàn)各個應(yīng)用程序之間的通訊。包括點對點和廣播。

          JavaMAIL:Java郵件服務(wù)。提供郵件的存儲、傳輸功能。他是Java編程中實現(xiàn)郵件功能的核心。相當(dāng)MS中的EXCHANGE開發(fā)包。

          JTA:Java事務(wù)服務(wù)。提供各種分布式事務(wù)服務(wù)。應(yīng)用程序只需調(diào)用其提供的接口即可。

          JAF:Java安全認(rèn)證框架。提供一些安全控制方面的框架。讓開發(fā)者通過各種部署和自定義實現(xiàn)自己的個性安全控制策略。

          EAI:企業(yè)應(yīng)用集成。是一種概念,從而牽涉到好多技術(shù)。J2EE技術(shù)是一種很好的集成實現(xiàn)。


          EJB容器
            EJB容器用來容納業(yè)務(wù)邏輯,并為業(yè)務(wù)邏輯截取請求。EJB容器支持EJB訪問JMS、JAAS、JTA、JavaMail、JAXP、JDBC和連接器(Connector)。

          Web容器
            Web容器截取通過HTTP、FTP、SMTP或其他協(xié)議發(fā)送的請求。Web應(yīng)用容器為Servlet和JSP頁面提供的資源與EJB容器提供的資源相同。

          應(yīng)用客戶端容器
            客戶端應(yīng)用是獨立的Java應(yīng)用,它們在遠(yuǎn)程的獨立JVM上運行(與Web容器和EJB容器所運行的JVM不同)。應(yīng)用客戶端容器為這些應(yīng)用截取請求。
            運行在應(yīng)用客戶端容器上的程序非常類似于帶有main()方法的Java程序,不過,程序不再由JVM控制,而是由一個容器(也就是應(yīng)用客戶端容器)控制。
            在應(yīng)用客戶端容器內(nèi)運行的程序能夠訪問遠(yuǎn)程應(yīng)用服務(wù)器上的JAXP、JDBC、JMS和JAAS資源。

          Applet容器
            Applet容器是一個特殊的容器,它為在瀏覽器內(nèi)運行的Java程序截取請求。Applet容器不提供任何對其他資源(比如JDBC或JMS)的訪問。在Applet容器內(nèi)運行的Applet必須自己直接向應(yīng)用服務(wù)器請求資源(而不是把請求發(fā)送給容器,然后由容器發(fā)送請求給應(yīng)用服務(wù)器)。
            對于Applet如何與EJB容器進(jìn)行通信,EJB規(guī)范沒有作出任何規(guī)定,但J2EE規(guī)范有這方面的規(guī)定。對于那些想要直接使用EJB的Applet,J2EE規(guī)范要求它們使用HTTP隧道。許多應(yīng)用服務(wù)器提供某種形式的HTTP隧道,支持Applet直接使用EJB。

          posted @ 2006-10-18 10:05 Lizzie 閱讀(341) | 評論 (0)編輯 收藏
          [肥肥世家]Linux由于開放源碼衍生出大量的發(fā)行版,為用戶提供豐富選擇的同時又給初學(xué)者造成困惑,這么多發(fā)行版應(yīng)該選擇哪種才適合自已呢?下面這個網(wǎng)址會給出答案,它會向你提出一些有關(guān)Linux和你應(yīng)用環(huán)境的問題,你只要一步步回答,最后它就會根據(jù)你的回答為你選擇幾款最適合你的發(fā)行版。

          http://www.zegeniestudios.net/ldc/index.php?firsttime=true
          posted @ 2006-10-08 15:43 Lizzie 閱讀(447) | 評論 (1)編輯 收藏

          第一句話是:優(yōu)秀是一種習(xí)慣。
          這句話是古希臘哲學(xué)家亞里士多德說的。如果說優(yōu)秀是一種習(xí)慣,那么懶惰也是一種習(xí)慣。人出生的時候,除了脾氣會因為天性而有所不同,其他的東西基本都是后天形成的,是家庭影響和教育的結(jié)果。所以,我們的一言一行都是日積月累養(yǎng)成的習(xí)慣。我們有的人形成了很好的習(xí)慣,有的人形成了很壞的習(xí)慣。所以我們從現(xiàn)在起就要把優(yōu)秀變成一種習(xí)慣,使我們的優(yōu)秀行為習(xí)以為常,變成我們的第二天性。讓我們習(xí)慣性地去創(chuàng)造性思考,習(xí)慣性地去認(rèn)真做事情,習(xí)慣性地對別人友好,習(xí)慣性地欣賞大自然。

          注解:要會“裝”,要持續(xù)的、不間斷的“裝”,裝久了就成了真的了,就成了習(xí)慣了,比如準(zhǔn)時到會,每次都按時到會,你裝裝看,你裝30年看看,裝的時間長了就形成了習(xí)慣。:)

          第二句話是:生命是一種過程。
          事情的結(jié)果盡管重要,但是做事情的過程更加重要,因為結(jié)果好了我們會更加快樂,但過程使我們的生命充實。人的生命最后的結(jié)果一定是死亡,我們不能因此說我們的生命沒有意義。世界上很少有永恒。大學(xué)生談戀愛,每天都在信誓旦旦地說我會愛你一輩子,這實際上是不真實的。統(tǒng)計數(shù)據(jù)表明,大學(xué)生談戀愛的100對里有 90對最后會分手,最后結(jié)婚了的還有一半會離婚。你說愛情能永恒嗎?所以最真實的說法是:“我今天,此時此刻正在真心地愛著你。”明天也許你會失戀,失戀后我們會體驗到失戀的痛苦。這種體驗也是豐富你生命的一個過程。


          注解:生命本身其實是沒有任何意義的,只是你自己賦予你的生命一種你希望實現(xiàn)的意義,因此享受生命的過程就是一種意義所在。

          第三句話是:兩點之間最短的距離并不一定是直線。

          在人與人的關(guān)系以及做事情的過程中,我們很難直截了當(dāng)就把事情做好。我們有時需要等待,有時需要合作,有時需要技巧。我們做事情會碰到很多困難和障礙,有時候我們并不一定要硬挺、硬沖,我們可以選擇有困難繞過去,有障礙繞過去,也許這樣做事情更加順利。大家想一想,我們和別人說話還得想想哪句話更好聽呢。尤其在中國這個比較復(fù)雜的社會中,大家要學(xué)會想辦法諒解別人,要讓人覺得你這個人很成熟,很不錯,你才能把事情做成。


          注解:如果你在考數(shù)學(xué)試題,一定要答兩點之間直線段最短,如果你在走路,從A到B,明明可以直接過去,但所有人都不走,你最好別走,因為有陷阱。在中國辦事情,直線性思維在很多地方要碰壁,這是中國特色的中國處事方式。

          第四句話是:只有知道如何停止的人才知道如何加快速度。

          我在滑雪的時候,最大的體會就是停不下來。我剛開始學(xué)滑雪時沒有請教練,看著別人滑雪,覺得很容易,不就是從山頂滑到山下嗎?于是我穿上滑雪板,哧溜一下就滑下去了,結(jié)果我從山頂滑到山下,實際上是滾到山下,摔了很多個跟斗。我發(fā)現(xiàn)根本就不知道怎么停止、怎么保持平衡。最后我反復(fù)練習(xí)怎么在雪地上、斜坡上停下來。練了一個星期,我終于學(xué)會了在任何坡上停止、滑行、再停止。這個時候我就發(fā)現(xiàn)自己會滑雪了,就敢從山頂高速地往山坡下沖。因為我知道只要我想停,一轉(zhuǎn)身就能停下來。只要你能停下來,你就不會撞上樹、撞上石頭、撞上人,你就不會被撞死。因此,只有知道如何停止的人,才知道如何高速前進(jìn)。

          注解:用汽車來比喻,寶馬可以上200公里,奇瑞卻只能上120公里,為什么?發(fā)動機估計不相上下,差距在剎車系統(tǒng),上了200公里剎不了車,呵呵,我的天!


          第五句話是:放棄是一種智慧,缺陷是一種恩惠。

          當(dāng)你擁有六個蘋果的時候,千萬不要把它們都吃掉,因為你把六個蘋果全都吃掉,你也只吃到了六個蘋果,只吃到了一種味道,那就是蘋果的味道。如果你把六個蘋果中的五個拿出來給別人吃,盡管表面上你丟了五個蘋果,但實際上你卻得到了其他五個人的友情和好感。以后你還能得到更多,當(dāng)別人有了別的水果的時候,也一定會和你分享,你會從這個人手里得到一個橘子,那個人手里得到一個梨,最后你可能就得到了六種不同的水果,六種不同的味道,六種不同的顏色,六個人的友誼。人一定要學(xué)會用你擁有的東西去換取對你來說更加重要和豐富的東西。所以說,放棄是一種智慧。
          posted @ 2006-10-08 15:40 Lizzie 閱讀(185) | 評論 (0)編輯 收藏
          1、 羅密歐與朱麗葉效應(yīng)

            羅密歐與朱麗葉相愛,但由于雙方世仇,他們的愛情遭到了極力阻礙。但壓迫并沒有使他們分手,反而使他們愛得更深,直到殉情。這樣的現(xiàn)象我們叫它羅密歐與朱麗葉效應(yīng)。所謂羅密歐與朱麗葉效應(yīng),就是當(dāng)出現(xiàn)干擾戀愛雙方愛情關(guān)系的外在力量時,戀愛雙方的情感反而會加強,戀愛關(guān)系也因此更加牢固。

            2、 從眾現(xiàn)象

            一則笑話這樣說到:一日閑逛街頭,忽見一長隊綿延,趕緊站到隊后排隊,唯恐錯過什么購買緊缺必需品的機會。等到隊伍拐過墻角,發(fā)現(xiàn)大家原來是排隊上廁所,才不禁啞然失笑。這就是從眾鬧出的笑話。從眾指個人的觀念與行為由于群體的引導(dǎo)或壓力,而向與多數(shù)人一致的方向變化的現(xiàn)象。用通俗的話說,從眾就是“隨大流”。可以表現(xiàn)為在臨時的特定情境中對占優(yōu)勢的行為方式的采納,也可以表現(xiàn)為長期性的對占優(yōu)勢的觀念與行為方式的接受。

            3、 暈輪效應(yīng)

            許多青少年因崇拜某位明星的某些特征,比如長相啊,歌聲啊,于是就不顧一切模仿明星的行為,搜集他們用過的一切東西。這其實就是暈輪效應(yīng)在作怪。暈輪效應(yīng)就是一種以偏概全的傾向,即人們在對一個人的某種特征形成好的或壞的印象后,傾向于據(jù)此推論該人的其他方面的特征。平時說的“愛屋及烏”就是暈輪效應(yīng)的一個突出表現(xiàn)。

            4、 鲇魚效應(yīng)

            水池里養(yǎng)著一群魚,由于缺乏外界刺激,這些魚變得死氣沉沉,容易死亡。漁民偶然把幾條鲇魚放在這群魚里,卻發(fā)現(xiàn)一個奇怪的現(xiàn)象:由于鲇魚喜歡擠來擠去,整個水池里的魚都被帶動起來而顯得生機勃勃,所以漁民喜歡放幾條鲇魚在里面增加全體魚的活力與壽命。

            在經(jīng)濟(jì)、文化等活動中引入競爭機制,也會產(chǎn)生鲇魚效應(yīng)。

             5、 馬太效應(yīng)

            《圣經(jīng)·馬太福音》有這樣一則故事:一個富翁給他的三個仆人每人一錠銀子去做生意。一年后他召集仆人想知道他們各自賺了多少,其中第一個人賺了十錠,第二個人賺了五錠,最后一個人用手巾包了那錠銀子,捂了一年沒賺一個子兒,這位富翁就命令后者把那錠銀子交給賺錢最多者。該書第二十五章說:“凡有的,還要加給他叫他多余;沒有的,連他所有的也要奪過來。”1973年,美國科學(xué)史研究者莫頓用這句話概括了一種社會心理現(xiàn)象:“對已有相當(dāng)聲譽的科學(xué)家作出的科學(xué)貢獻(xiàn)給予的榮譽越來越多,而對那些未出名的科學(xué)家則不承認(rèn)他們的成績。”莫頓將這種社會心理現(xiàn)象命名為“馬太效應(yīng)”。

            6、 期望效應(yīng)(皮格馬利翁效應(yīng)、羅森塔爾效應(yīng))

            皮格馬利翁是古代塞浦路斯的一位善于雕刻的國王,由于他把全部熱情和希望放在自己雕刻的少女雕像身上,后來竟使這座雕像活了起來。心理學(xué)家羅森塔爾(R. Rosenthal)和雅各布森L. F. Jacobson)稱之為“皮格馬利翁效應(yīng)”。

            羅森塔爾及其同事,要求教師們對他們所教的小學(xué)生進(jìn)行智力測驗。他們告訴教師們說,班上有些學(xué)生屬于大器晚成(lateblooming) 者,并把這些學(xué)生的名字念給老師聽。羅森塔爾認(rèn)為,這些學(xué)生的學(xué)習(xí)成績可望得到改善。自從羅森塔爾宣布大器晚成者的名單之后,羅森塔爾就再也沒有和這些學(xué)生接觸過,老師們也再沒有提起過這件事。事實上所有大器晚成者的名單,是從一個班級的學(xué)生中隨機挑選出來的,他們與班上其他學(xué)生沒有顯著不同。可是當(dāng)學(xué)期之末,再次對這些學(xué)生進(jìn)行智力測驗時,他們的成績顯著優(yōu)于第一次測得的結(jié)果。這種結(jié)局是怎樣造成的呢?羅森塔爾認(rèn)為,這可能是因為老師們認(rèn)為這些晚器大成的學(xué)生,開始嶄露頭角,予以特別照顧和關(guān)懷,以致使他們的成績得以改善。

            皮格馬利翁效應(yīng)和羅森塔爾效應(yīng)都反映了期望的作用,所以又稱為期望效應(yīng)。

            7、 安慰劑效應(yīng)

            所謂安慰劑,是指既無藥效、又無毒副作用的中性物質(zhì)構(gòu)成的、形似藥的制劑。安慰劑多由葡萄糖、淀粉等無藥理作用的惰性物質(zhì)構(gòu)成。安慰劑對那些渴求治療、對醫(yī)務(wù)人員充分信任的病人能產(chǎn)生良好的積極反應(yīng),出現(xiàn)希望達(dá)到的藥效,這種反應(yīng)就稱為安慰劑效應(yīng)。

            使用安慰劑時容易出現(xiàn)相應(yīng)的心理和生理反應(yīng)的人,稱為“安慰劑反應(yīng)者”。這種人的特點是:好與人交往、有依賴性、易受暗示、自信心不足,經(jīng)常注意自身的各種生理變化和不適感,有疑病傾向和神經(jīng)質(zhì)。

            8、 首因效應(yīng)與近因效應(yīng)

            首因效應(yīng):人與人第一次交往中給人留下的印象,在對方的頭腦中形成并占據(jù)著主導(dǎo)地位,這種效應(yīng)即為首因效應(yīng)。

            近因效應(yīng):與首因效應(yīng)相反,是指交往中最后一次見面給人留下的印象,這個印象在對方的腦海中也會存留很長時間。在學(xué)習(xí)和人際交往中,這兩種現(xiàn)象很常見。

            9、 霍桑效應(yīng)

            為了調(diào)查研究各種工作條件對生產(chǎn)率的影響,美國西方電器公司霍桑工廠一個大車間的六名女工被選為實驗的被試者。實驗持續(xù)了一年多。這些女工的工作是裝配電話機中的繼電器。首先讓她們在一個一般的車間里工作兩星期,測出她們的正常生產(chǎn)率。然后把她們安排到一個特珠的測量室工作五星期,這里除了可以測量每個女工的生產(chǎn)情況外,其他條件都與一般車間相同,即工作條件沒有變化。接著進(jìn)入第三個時期,改變了對 女工們支付工資的方法。以前女工的薪水依賴于整個車間工人的生產(chǎn)量,現(xiàn)在只依賴于她們六個人的生產(chǎn)量。在第四個時期,在工作中安排女工上午、下午各一次5分鐘的工問休息。第五個時期,把工間休息延長為10分鐘。第六個時期,建立了六個5分鐘休息時間制度。第七個時期,公司為女工提供一頓簡單的午餐。在隨后的三個時期每天讓女工提前半小時下班。第十一個時期,建立了每周工作五天的制度。最后第十二個時期,原來的一切工作條件又全恢復(fù)了,重新回到第一個時期。老板是想通過這一實驗未尋找一種提高工人生產(chǎn)效率的生產(chǎn)方式。的確,工作效率會受工作條件的影響,然而,出乎意料的是不管條件怎么改變,如增加或減少工間休息,延長或縮短工作日,每一個實驗時期的生產(chǎn)率都比前一個時期要高,女工們的工作越來越努力,效率越來越高,根本就沒關(guān)注過生產(chǎn)條件的變化。

            之所以會這樣,一個重要的原因就是女工們感到自己是特殊人物,受到了格外好的待遇,她們引起了人們極大的注意,因而感到愉快,便遵照老板想要她們做的那樣去做。她們知道這樣做主要是為了測量她們的生產(chǎn)效率,這是人們關(guān)注的事情,因此,生產(chǎn)條件發(fā)生什么變化無關(guān)緊要,她們總把這些變化設(shè)想成為有利的,所以,她們工作越來越努力,每一次的改變都刺激著她們?nèi)ヌ岣呱a(chǎn)效率。

            通過操縱一個人的環(huán)境,讓他與眾人分離,特別密切地關(guān)注他,使他感到很特別,都會對他產(chǎn)生很大的壓力。如果他知道人們期望他干什么,只要沒有想要拒絕的特別理由,他會盡一切努力按人們的期望去干好每一件事。霍桑工廠的女工們知道自己正在被研究,盡管她們想到的并不是老板期望的,但她們會盡自己最大的努力產(chǎn)生適當(dāng)?shù)男ЧK詫€人施加壓力說服他去做某件事的最有效方法之一就是使他愉快,向他顯示出他正被關(guān)心著,被期待看做好某件事。這在心理學(xué)上被稱為霍桑效應(yīng)。

            霍桑試驗的研究結(jié)果否定了傳統(tǒng)管理理論對于人的假設(shè),表明了工人不是被動的、孤立的個體,他們的行為不僅僅受工資的刺激;影響生產(chǎn)效率的最重要因素不是待遇和工作條件,而是工作中的人際關(guān)系。
          posted @ 2006-09-22 12:40 Lizzie 閱讀(234) | 評論 (0)編輯 收藏
               摘要: J2EE/XML 開發(fā)者通常都是使用文檔對象模型 (DOM)API 或簡單的 API for XML(SAX) API 來分析 XML 文檔。然而,這些 API 都有其缺點。其中, DOM API 的缺點之一是消耗大量的內(nèi)存,因為在該 XML 文檔可以被導(dǎo)航之前,必須創(chuàng)...  閱讀全文
          posted @ 2006-09-17 22:24 Lizzie 閱讀(440) | 評論 (1)編輯 收藏

          All about JAXP

          http://www-128.ibm.com/developerworks/java/library/x-jaxp

          Brett McLaughlin

          ?

          Document Object Model (DOM)

          Simple API for XML (SAX)

          ?

          JDK1.4

          javax.xml.parsers
          javax.xml.transform
          javax.xml.transform.dom
          javax.xml.transform.sax
          javax.xml.transform.stream

          ?

          JDK5.0

          javax.xml
          javax.xml.datatype
          javax.xml.namespace
          javax.xml.parsers
          javax.xml.transform
          javax.xml.transform.dom
          javax.xml.transform.sax
          javax.xml.transform.stream
          javax.xml.validation
          javax.xml.xpath

          ?

          ?

          嚴(yán)格來說, JAXP 并沒有提供新的解析 XML 的方法,但是它使得我們更容易地使用 DOM 或者 SAX 來進(jìn)行解析任務(wù),更能以一種 vendor-neutral 的方式來使用 DOM SAX

          ?

          JAXP SAX, DOM, JDOM dom4j (這四個都可以解析 XML )沒有可比較性,它并沒有提供一個新的解析 XML 的方法。

          ?

          JAXP API, located in the javax.xml.parsers package. All of these classes sit on top of an existing parser. 其中的 6 個類都是建立在已有的解析上面的。

          ?

          JDOM dom4j 都提供不同的模型來接受來自 SAX/DOM 的數(shù)據(jù),他們從內(nèi)部來講都是使用了 SAX ,不過是做了些修改。

          ?

          此外, Java 1.5 Xerces 的包 org.apache.xerces 被放到了 com.sun.org.apache.xerces.internal

          ?

          First, com.sun.xml.tree.XMLDocument class is not part of JAXP. It is part of Sun's Crimson parser, packaged in earlier versions of JAXP.

          ?

          Second, a major purpose of JAXP is to provide vendor independence when dealing with parsers. With JAXP, you can use the same code with Sun's XML parser, Apache's Xerces XML parser, and Oracle's XML parser.

          ?

          先從 SAX 說起,我們只用繼承 DefaultHandler (org.xml.sax.helpers 包中 ) 就能獲得所有的 callbacks ,只用在需要的方法中加入實現(xiàn)的代碼。

          ?

          Here's the typical SAX routine:

          1 Create a SAXParser instance using a specific vendor's parser implementation.

          2 Register callback implementations (by using a class that extends DefaultHandler, for example).

          3 Start parsing and sit back as your callback implementations are fired off.

          ?

          SAX 必須 指定 XML 驅(qū)動(如 org.apache.xerces.parsers.SAXParser ),而 JAXP 提供了更好的選擇,只要我們提供什么 XML 驅(qū)動(在 classpath 中配置),它就調(diào)用什么驅(qū)動,不需要改動代碼。

          ? ?

          new SAXParserFactory.newSAXParser() 就返回 JAXP SAXParser 類,這個類包裝了 SAX parser (an instance of the SAX class org.xml.sax.XMLReader )

          ?

          In Listing 1, you can see that two JAXP-specific problems can occur in using the factory: the inability to obtain or configure a SAX factory, and the inability to configure a SAX parser.

          The first of these problems, represented by a FactoryConfigurationError, usually occurs when the parser specified in a JAXP implementation or system property cannot be obtained.

          The second problem, represented by a ParserConfigurationException, occurs when a requested feature is not available in the parser being used. Both are easy to deal with and shouldn't pose any difficulty when using JAXP.

          ?

          SAXParser parse 方法可以接受 SAX InputSource Java InputStream 或者 URL in String form

          ?

          可以通過 SAXParser getXMLReader() 方法來獲得底層的 SAX parser org.xml.sax.XMLReader 的實例),這樣就可以使用各個 SAXParser 方法。 [ 參照 Listing2]

          ?? ?

          ?

          使用 DOM??

          The only difference between DOM and SAX in this respect is that with DOM you substitute DocumentBuilderFactory for SAXParserFactory, and DocumentBuilder for SAXParser.

          ?

          The major difference is that variations of the parse() method do not take an instance of the SAX DefaultHandler class. Instead they return a DOM Document instance representing the XML document that was parsed. The only other difference is that two methods are provided for SAX-like functionality:

          • setErrorHandler(), which takes a SAX ErrorHandler implementation to handle problems that might arise in parsing
          • setEntityResolver(), which takes a SAX EntityResolver implementation to handle entity resolution

          JAXP 的使用

          1. Source for input

          The javax.xml.transform.Source interface is the basis for all input into JAXP and the transformation API. This interface defines only two methods -- getSystemId() and setSystemId(String systemId) .

          ?

          ?

          JAXP 提供了三個實現(xiàn) Source 接口的類:

          • javax.xml.transform.dom.DOMSource passes a DOM Node (and its children) into JAXP.
          • javax.xml.transform.sax.SAXSource passes the results of SAX callbacks (from an XMLReader ) into JAXP.
          • javax.xml.transform.stream.StreamSource passes XML wrapped in a File , InputStream , or Reader into JAXP.? ?

          2. Result for output

          ? javax.xml.transform.Result 也有兩個方法: getSystemId() setSystemId(String systemId) 同樣有三個實現(xiàn)類:

          • javax.xml.transform.dom.DOMResult passes transformed content into a DOM Node .
          • javax.xml.transform.sax.SAXResult passes the results of a transformation to a SAX ContentHandler .
          • javax.xml.transform.stream.StreamResult passes the transformed *ML into a File , OutputStream , or Writer .

          3. Performing transformations with JAXP

          1)Getting a Factory? ???

          2)Creating a Transformer? ?
          3)Performing the transformation?? ?
          4)Caching XSL stylesheets

          JAXP this way has two significant limitations:

          • The Transformer object processes the XSL stylesheet each and every time transform() is executed.
          • Instances of Transformer are not thread-safe. You can't use the same instances across multiple threads.

          Transformer 實例不是線程安全的,不能通過多線程去使用同一個 Transformer 實例。

          5)Loading a Template

          javax.xml.transform.Templates .

          ?

          The Templates interface is thread-safe (addressing the second limitation) and represents a compiled stylesheet (addressing the first limitation).

          Templates 實例是線程安全的,可以處理一堆 XSL ,解決了上述兩個限制。

          6)From Transformer to Templates

          如果只要對一個 stylesheet 進(jìn)行一個 transformation ,那么用 Transformer 比較快,沒有必要選擇 Templates 對象。但是考慮到線程安全問題,還是推薦使用 Templates

          7)Changing the XSL processor

          JAXP 默認(rèn)使用 Xalan-J ,如果要使用其它 parser ,可以通過 javax.xml.transform.TransformerFactory 修改。


          java -D javax.xml.transform.TransformerFactory=[transformer.impl.class] TestTransformations?
          simple.xml simple.xsl

          ?

          posted @ 2006-09-08 13:15 Lizzie 閱讀(553) | 評論 (1)編輯 收藏

          Document E09
          SourceForge.net: Subversion (Version Control for Source Code)

          ?

          http://sourceforge.net/docman/display_doc.php?docid=31070&group_id=1

          ?

          功能特性:

          Subversion 官方網(wǎng)站,查看 http://subversion.tigris.org/

          ?

          欣慰的是這里有個網(wǎng)站提供一本免費的、非常棒的 SVN 圖書,可以選擇在線查看或者下載 PDF SVN 使用者必讀。 http://svnbook.red-bean.com/

          ?

          各個版本控制系統(tǒng)功能比較的文章

          http://better-scm.berlios.de/comparison/comparison.html

          ?

          Subversion 使用手記 中文英文對照

          http://robinlet.bokee.com/2866408.html

          ?

          一篇文章介紹如何將 CVS Repository 轉(zhuǎn)換成 SNV

          http://up-u.com/?q=node/232

          轉(zhuǎn)換方法來自這個程序 http://cvs2svn.tigris.org/

          ?

          官方的那本書是最好的教程,網(wǎng)上還有大量的安裝和使用的文章可以借鑒,這里簡單羅列幾個 SVN 輔助的軟件:

          ?

          1 SubVersion ,從 http://subversion.tigris.org/

          下載,是實現(xiàn)服務(wù)系統(tǒng)的軟件,必裝的。

          ?

          2 TortoiseSVN ,從 http://tortoisesvn.tigris.org/

          下載,是很不錯的 SVN 客戶端程序,為 windows 外殼程序集成到 windows 資源管理器和文件管理系統(tǒng)的 Subversion 客戶端,用起來很方便。

          ?

          3 SVNService.exe ,從 http://dark.clansoft.dk/~mbn/svnservice/

          下載,是專為 SubVersion 開發(fā)的一個用來作為 Win32 服務(wù)掛接的入口程序。

          ?

          4 AnkhSVN ,從 http://ankhsvn.tigris.org/

          下載,這是一個專為 Visual Studio 提供 SVN 的插件。

          ?

          5 Subversive ,從 http://www.polarion.org/p_subversive.php

          下載,一個為 Eclipse 提供 SVN 的插件,據(jù)說已經(jīng)和 Eclipse 自帶的 CVS 功能有一拼。

          ?

          6 、還有很多很多 SVN 相關(guān)的工具以及使用 TIP 介紹,大家可以上官方的相關(guān)鏈接頁面中查看,地址: http://subversion.tigris.org/links.html

          posted @ 2006-08-28 12:07 Lizzie 閱讀(459) | 評論 (0)編輯 收藏

          Linux 下有一個功能強大的軟件安裝卸載工具,名為 RPM 。它可以用來建立、安裝、查詢、更新、卸載軟件。該工具是在命令行下使用的。在 Shell 的提示符后輸入 rpm ,就可獲得該命令的幫助信息。


          Linux
          下軟件的安裝主要有三種不同的形式。

          第一種安裝文件名為 xxx.tar.gz

          第二種安裝文件名為 xxx.i386.rpm

          還有一種是 xxx.src.rpm

          ?

          以第一種方式發(fā)行的軟件多為以源碼形式發(fā)送的;

          第二種方式則是直接以二進(jìn)制形式發(fā)送的;

          第三種是 rpm 格式發(fā)布的源碼。


          對于第一種 [xxx.tar.gz] ,安裝方法如下:
             1 . 首先,將安裝文件拷貝至你的目錄中。例如,如果你是以 root 身份登錄上的,就將軟件拷貝至 /root 中。
             #cp xxx.tar.gz /root
             2 . 由于該文件是被壓縮并打包的 , 應(yīng)對其解壓縮。命令為:
             #tar xvzf filename.tar.gz
             3. 執(zhí)行該命令后,安裝文件按路徑,解壓縮在當(dāng)前目錄下。用 ls 命令可以看到解壓縮后的文件。通常在解壓縮后產(chǎn)生的文件中,有 “Install” 的文件。該文件為純文本文件,詳細(xì)講述了該軟件包的安裝方法。
             4. 執(zhí)行解壓縮后產(chǎn)生的一個名為 configure 的可執(zhí)行腳本程序。它是用于檢查系統(tǒng)是否有編譯時所需的庫,以及庫的版本是否滿足編譯的需要等安裝所需要的系統(tǒng)信息。為隨后的編譯工作做準(zhǔn)備。命令為: #./configure
             5. 檢查通過后,將生成用于編譯的 MakeFile 文件。此時,可以開始進(jìn)行編譯了。編譯的過程視軟件的規(guī)模和計算機性能的不同,所耗費的時間也不同。命令為: #make
             6. 成功編譯后,鍵入如下的命令開始安裝:
             #make install
             7. 安裝完畢,應(yīng)清除編譯過程中產(chǎn)生的臨時文件和配置過程中產(chǎn)生的文件。鍵入如下命令:
             #make clean
             #make distclean
            至此,軟件的安裝結(jié)束。
            
          對于第二種 [xxx.i386.rpm] ,其安裝方法要簡單得多。
            同第一種方式一樣,將安裝文件拷貝至你的目錄中。然后使用 rpm 來安裝該文件。命令如下:
             #rpm -i filename.i386.rpm
             rpm 將自動將安裝文件解包,并將軟件安裝到缺省的目錄下。并將軟件的安裝信息注冊到 rpm 的數(shù)據(jù)庫中。參數(shù) i 的作用是使 rpm 進(jìn)入安裝模式。
            

          ?

          軟件的卸載
             1. 軟件的卸載主要是使用 rpm 來進(jìn)行的。卸載軟件首先要知道軟件包在系統(tǒng)中注冊的名稱。鍵入命令:
             #rpm -q -a
            即可查詢到當(dāng)前系統(tǒng)中安裝的所有的軟件包。


             2. 確定了要卸載的軟件的名稱,就可以開始實際卸載該軟件了。鍵入命令:
             #rpm -e [package name]
            即可卸載軟件。參數(shù) e 的作用是使 rpm 進(jìn)入卸載模式。對名為 [package name] 的軟件包進(jìn)行卸載。由于系統(tǒng)中各個軟件包之間相互有依賴關(guān)系。如果因存在依賴關(guān)系而不能卸載, rpm 將給予提示并停止卸載。你可以使用如下的命令來忽略依賴關(guān)系,直接開始卸載:
             #rpm -e [package name] -nodeps

          ?

          忽略依賴關(guān)系的卸載可能會導(dǎo)致系統(tǒng)中其它的一些軟件無法使用


          對于第三種 [xxx.src.rpm] ,安裝也很簡單
          拷貝到目標(biāo)目錄,然后執(zhí)行
          #rpmbuild --rebuild xxx.src.rpm
          編譯文件
          然后進(jìn)入 #cd /usr/src/redhat(or other)/RPMS/i386/
          執(zhí)行 #rpm -ivh xxxxx.rpm 安裝


          上面的方法是對 Redhat 8.0 以及 Mandrake9.0 來說的,如果是低于這個版本。應(yīng)該用
          #rpm --rebuild *.src.rpm

          posted @ 2006-08-23 16:57 Lizzie 閱讀(537) | 評論 (0)編輯 收藏
          x86是一個intel通用計算機系列的編號,也標(biāo)識一套通用的計算機指令集合。

          早期intel的CPU編號都是如8086,80286,由于這整個系列的CPU都是指令兼容的,所以都用X86來標(biāo)識所使用的指令集合。

          如今的奔騰,P2,P4,賽揚系列都是支持X86指令系統(tǒng)的,所以都屬于X86家族。

          x86 family 6 model 65意思是這個CPU屬于x86家族的第6代產(chǎn)品,采用65ns的工藝制造。

          AT/AT COMPATIBLE 這個的意思應(yīng)該是說兼容AT/AT指令。

          i386是指intel發(fā)布的通用處理器類型,適合386,486,586,686的CPU。有些rpm包還區(qū)分了這些類型。
          posted @ 2006-08-23 12:16 Lizzie 閱讀(4637) | 評論 (4)編輯 收藏
               摘要: 常用中國姓氏讀法 中 文 ? ? 日 文 ? ? ? ? ? ? ? 中 文 ? ? 日 文 ___...  閱讀全文
          posted @ 2006-08-22 21:15 Lizzie 閱讀(499) | 評論 (0)編輯 收藏
          僅列出標(biāo)題
          共2頁: 1 2 下一頁 

          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          常用鏈接

          留言簿(1)

          隨筆分類

          隨筆檔案

          文章分類

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 镇远县| 乐陵市| 凉城县| 新龙县| 仁怀市| 淳安县| 商城县| 甘洛县| 延川县| 镇巴县| 拉孜县| 琼结县| 临夏县| 大方县| 龙川县| 城固县| 神木县| 靖西县| 桐庐县| 尼勒克县| 中宁县| 公安县| 德化县| 司法| 绵阳市| 瓦房店市| 平湖市| 弥勒县| 鄂尔多斯市| 新邵县| 达日县| 海盐县| 宜昌市| 保山市| 浪卡子县| 石城县| 崇义县| 沁阳市| 渑池县| 新化县| 平舆县|