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

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

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

    posts - 32, comments - 153, trackbacks - 0, articles - 0
      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Java基礎(chǔ)知識,打好基礎(chǔ)才能更好地學(xué)習(xí)!
    原帖地址:http://www.linuxmine.com/44702.html
    對象引用應(yīng)用程序設(shè)計接口是JDKTM1.2中新定義的。該應(yīng)用程序設(shè)計接口允許應(yīng)用程序以對象引用的方式與JVM的內(nèi)存管理器進(jìn)行交互。當(dāng)應(yīng)用程序需管理大量內(nèi)存對象或者在新的Java對象創(chuàng)建之前需刪除原有對象時,Java對象引用應(yīng)用程序設(shè)計接口具有相當(dāng)大的用途,例如:
      
      ● 基于Web的應(yīng)用程序常常要求顯示大量圖片,當(dāng)用戶離開某一Web頁時,往往不能確定是否能夠順利的返回。在這種程序中,應(yīng)用Java對象引用API可以創(chuàng)建這樣一個環(huán)境,即當(dāng)堆內(nèi)存以最小程度運行時,內(nèi)存管理器創(chuàng)建對象。當(dāng)用戶返回時,應(yīng)用程序就會重新載入已經(jīng)創(chuàng)建的圖片。
      
      ● 應(yīng)用對象引用隊列可以創(chuàng)建這樣一個環(huán)境,當(dāng)通過對象引用獲得某一對象時,應(yīng)用程序得到通知。然后,應(yīng)用程序就可以對相關(guān)對象進(jìn)行清除操作,同時使這些對象在內(nèi)存管理器中合法化。
      
      內(nèi)存管理器的工作機(jī)制
      
      下面將首先介紹未嵌入引用對象時內(nèi)存管理器的工作機(jī)制,然后討論引用對象加入之后Java堆發(fā)生的變化。
      
      內(nèi)存管理器的作用就是識別程序中不再使用的對象,并且回收其內(nèi)存。
      
      一個Java應(yīng)用程序由一系列線程組成,每個線程執(zhí)行一系列方法,而每個方法通過參數(shù)或局部變量來引用對象。這些引用屬于引用集合中的一部分,直接進(jìn)入應(yīng)用程序。另外,引用集合中還包括類庫中定義的靜態(tài)引用變量,以及通過Java本地接口(JNI)API獲得的引用。引用集合中的所有引用對象都可以被當(dāng)前應(yīng)用程序獲取,而不必被回收。同樣地,這些對象可能包含對其它對象的引用,也可以被應(yīng)用程序獲取,依此類推。Java堆中的其它對象視為不可獲取的,而所有這些不可獲取的對象在內(nèi)存管理中也是合法的。如果一個不可獲取的對象使用finalize()方法,任務(wù)就交給了對象所調(diào)用的收尾器(finalizer)。在內(nèi)存回收期間,不具有收尾器的不可獲取對象和已經(jīng)調(diào)用收尾器的對象被簡單回收。
      
      內(nèi)存回收的算法是不斷變化的,共性的方面是從引用集合中識別可獲取的對象以及回收被其它對象占據(jù)的內(nèi)存空間。
      
      加入引用對象之后的引用與常規(guī)引用的區(qū)別在于,引用對象中的引用專門由內(nèi)存管理器來處理。引用對象封裝了其它一些對象的引用,我們稱之為指示對象。在引用對象創(chuàng)建的同時,也就定義了該引用對象的指示對象。
      
      Java對象引用
      
      圖1所示為對象引用應(yīng)用程序設(shè)計接口中定義的類層次。其中SoftReference類、WeakReference類和PhantomReference類中分別定義了三種引用對象以及相應(yīng)的三種獲取對象的能力。因此按照由強(qiáng)到弱,對象可獲取程度可劃分為如下五種類型:強(qiáng)獲取(strongly reachable)、次獲取(softly reachable)、弱獲取(weakly reachable)、虛獲取(phantomly reachable)和不可獲取(unreachable)。
       
      圖1 對象應(yīng)用類層次
      
      根據(jù)應(yīng)用程序要求,對象可以是強(qiáng)引用(strong references)、次引用(soft references)、弱引用(weak references)、虛引用(phantom references)的任意組合。為了確定對象的可獲取程度,JVM內(nèi)存管理器從引用集合出發(fā)遍尋堆中所有到對象的路徑。當(dāng)?shù)竭_(dá)某對象的任意路徑都不含有引用對象時,則稱該對象具有強(qiáng)獲取能力;當(dāng)路徑中含有一個或幾個引用對象時,根據(jù)內(nèi)存管理器所查詢的引用對象的類型分別歸為次獲取、弱獲取、虛獲取。
      
      另外,對象引用API中還定義了引用對象隊列(java.lang.ref.ReferenceQueue),這是內(nèi)存管理器對引用對象進(jìn)行管理的一種簡單數(shù)據(jù)結(jié)構(gòu)。值得注意的是,在進(jìn)行引用對象定義時,要求phantom reference對象必須產(chǎn)生于一個引用對象隊列,而soft reference和weak reference對象則無此限制,如:
      
      

    ReferenceQueue?queue? = ? new ?ReferenceQueue();
      PhantomReference?pr?
    = ? new ?PhantomReference(object,?queue);

      Soft References 應(yīng)用實例
      
      下面以在基于web的應(yīng)用程序中使用soft references為例,來說明Java對象引用與JVM的內(nèi)存管理器進(jìn)行交互的原理。
      
      當(dāng)用戶打開某一web頁時,applet代碼獲得圖片并且得到顯示。如果在代碼中同時創(chuàng)建了該圖片對象的soft references,那么當(dāng)用戶離開該web頁時,內(nèi)存管理器對圖片所分配的內(nèi)存是否回收做出選擇。當(dāng)用戶返回該web頁時,在applet代碼中使用SoftReference.get方法就會得到圖片才內(nèi)存中是否仍存在的消息。如果在內(nèi)存管理器中未創(chuàng)建該圖片,在web頁上會很快得到顯示;否則,applet代碼就會重新獲取。
      
      下面是Example.java的完整源代碼。
      
      

    import ?java.awt.Graphics;
      
    import ?java.awt.Image;
      
    import ?java.applet.Applet;
      
    import ?java.lang.ref.SoftReference;
      
    public ? class ?Example? extends ?Applet? {
        SoftReference?sr?
    = ? null ;
        
    public ? void ?init()? {
          System.out.println(
    " Initializing " );
        }

        
    public ? void ?paint(Graphics?g)? {
          Image?im?
    = ?(sr? == ? null )? ? ? null ?:?(Image)(sr.get());
          
    if ?(im? == ? null )? {
            System.out.println(
    " Fetching?image " );
            im?
    = ?getImage(getCodeBase(), " yundong.gif " );
            sr?
    = ? new ?SoftReference(im);
         ?}

         ?System.out.println(
    " Painting " );
         ?g.drawImage(im,?
    25 ,? 25 ,? this );
         ?g.drawString(
    " 運動之美 " , 20 , 20 );?
         im?
    = ? null ; 
        
    /* ?Clear?the?strong?reference?to?the?image? */
        }

      
        
    public ? void ?start()? {
          System.out.println(
    " Starting " );
        }

      
        
    public ? void ?stop()? {
          System.out.println(
    " Stopping " );
        }

      }


      
      在上面的代碼中,對象image是一個圖片對象,傳遞給一個SoftReference對象sr。其中image對象是sr的指示對象,sr中的引用域是從次引用(soft reference)到 image。
      
      Weak References分析
      
      對于一個穩(wěn)定的對象,比如說線程類對象,當(dāng)需要獲取外部數(shù)據(jù)時,在程序中應(yīng)用weak references是非常理想的。如果利用引用隊列創(chuàng)建了某一線程的weak reference,那么當(dāng)線程不再具有強(qiáng)獲取能力時,應(yīng)用程序得到通知,根據(jù)此通知,應(yīng)用程序才能執(zhí)行相關(guān)數(shù)據(jù)對象的清除工作。
      
      當(dāng)內(nèi)存管理器未發(fā)現(xiàn)strong references 和 soft references 時,我們稱對象具有弱獲取能力,即在到達(dá)該對象的路徑中至少包含一個weak reference。程序中weak references被清除一段時間后,弱獲取對象被收尾器收集。由此也可以看出,soft reference和weak reference之間的區(qū)別在于,應(yīng)用soft reference時,內(nèi)存管理器利用算法決定是否創(chuàng)建弱獲取對象,而應(yīng)用weak reference時,內(nèi)存管理器必須創(chuàng)建次獲取對象。
      
      引用對象鏈
      
      當(dāng)?shù)竭_(dá)某一對象的路徑中含有多個引用對象時,就構(gòu)成了引用對象鏈。內(nèi)存管理器按照由強(qiáng)到弱的順序處理引用對象,具體處理步驟包括:Soft references、 Weak references、Finalization、Phantom references和創(chuàng)建對象五個部分。
      
      當(dāng)內(nèi)存管理器未發(fā)現(xiàn)前三種對象引用時,我們稱對象具有虛獲取能力,即在到達(dá)該對象的路徑中至少包含一個phantom reference。虛引用對象直接被收尾器收集,而不被重新創(chuàng)建。當(dāng)內(nèi)存管理器發(fā)現(xiàn)只有phantom references時,對象就將處于等候phantom reference狀態(tài),應(yīng)用程序向引用隊列發(fā)出通知,然后對虛引用對象調(diào)用clear()方法,將其引用域設(shè)置為null,最后對不可獲取對象執(zhí)行收集清除處理任務(wù)。
      
      通常,對象所具有的獲取能力與引用對象集合直接路徑中的最弱連接者相同。據(jù)此可以看出:
      
      圖2(a)中,虛引用對象具有強(qiáng)獲取能力,其它對象均具虛獲取能力;
      
      (b)中虛引用對象和弱引用對象均具強(qiáng)獲取能力,故次引用對象和對象集合具有若獲取能力;
      
      (c)中虛引用對象、弱引用對象和次引用對象均具強(qiáng)獲取能力,那么對象集合則具次獲取能力。
       
      圖2 引用對象鏈
      小結(jié)
      ● 引用對象API是Java2平臺中的特色之一。
      
      ● 在程序中使用引用對象API不但可以在一定程度上控制內(nèi)存管理器,實現(xiàn)內(nèi)存自動管理,還可以提高程序的穩(wěn)定性和安全性。
      
      ● 引用對象鏈中各個對象的獲取能力與整個鏈相關(guān)。

    posted @ 2006-11-29 14:08 Zou Ang 閱讀(453) | 評論 (0)編輯 收藏

    今天在宿舍,用Axis來弄了個最簡單的Web Service.先來講下怎么安裝和部署.
    首先,去Apache的網(wǎng)站下載Axis,我沒有下載Axis2,因為據(jù)說Axis2和Axis有比較多的不同,所以還是覺得先用以前的吧.
    下載好了以后,把a(bǔ)xis下的webapp文件夾中的axis放到tomcat的webapp目錄下,然后啟動tomcat,輸入:http://localhost:8080/axis/,如果成功會看到歡迎頁面.
    然后寫一個Java類:
    import?java.util.HashMap;
    import?java.util.Map;

    /**
    ?*?2006-11-28
    ?*?
    @author?Zou?Ang
    ?*?Contact?<a?href?="mailto:richardeee@gmail.com">Zou?Ang</a>
    ?
    */

    public?class?BookTitleService?{

    ????Map
    <String,String>?books;
    ????
    public?BookTitleService(){
    ????????books?
    =?new?HashMap<String,String>();
    ????????
    ????????books.put(
    "0130895601","Advanced?Java?2?Platform?How?to?Program");
    ????????books.put(
    "0430895717","C++?How?to?Program,Third?edition");
    ????????books.put(
    "0430293636","Visual?Basic.?NET?How?to?Program");
    ????????books.put(
    "0130923613","Python?How?to?Program");
    ????}

    ????
    ????
    public?String?getBookTitle(String?ISBN){
    ????????
    return?books.get(ISBN);
    ????}

    }
    然后把BookTitleService.java更名為BookTitleService.jws,把更改后的文件放到%CATALINA_HOME%/webapps/axis/%包結(jié)構(gòu)(比如org/apache/..)/目錄下
    ,我的是D:\apache-tomcat-5.5.17\apache-tomcat-5.5.17\webapps\axis\org\zsu\zouang\BookTitleService.jws,注意,這樣放好了jws文件后,把java類中的包名要刪除,做完了以后重新啟動tomcat,在地址欄輸入http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws,如果Web服務(wù)部署成功就會有頁面顯示的了,點Click to See WSDL后,可以看到:
    ?<?xml?version="1.0"?encoding="UTF-8"??>?
    -?
    <wsdl:definitions?targetNamespace="http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws"?xmlns:apachesoap="http://xml.apache.org/xml-soap"?xmlns:impl="http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws"?xmlns:intf="http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws"?xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"?xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"?xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/"?xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    -?
    <!--?
    WSDL?created?by?Apache?Axis?version:?1.4
    Built?on?Apr?22,?2006?(06:55:48?PDT)

    ??
    -->?
    -?
    <wsdl:message?name="getBookTitleRequest">
    ??
    <wsdl:part?name="ISBN"?type="xsd:string"?/>?
    ??
    </wsdl:message>
    -?
    <wsdl:message?name="getBookTitleResponse">
    ??
    <wsdl:part?name="getBookTitleReturn"?type="xsd:string"?/>?
    ??
    </wsdl:message>
    -?
    <wsdl:portType?name="BookTitleService">
    -?
    <wsdl:operation?name="getBookTitle"?parameterOrder="ISBN">
    ??
    <wsdl:input?message="impl:getBookTitleRequest"?name="getBookTitleRequest"?/>?
    ??
    <wsdl:output?message="impl:getBookTitleResponse"?name="getBookTitleResponse"?/>?
    ??
    </wsdl:operation>
    ??
    </wsdl:portType>
    -?
    <wsdl:binding?name="BookTitleServiceSoapBinding"?type="impl:BookTitleService">
    ??
    <wsdlsoap:binding?style="rpc"?transport="http://schemas.xmlsoap.org/soap/http"?/>?
    -?
    <wsdl:operation?name="getBookTitle">
    ??
    <wsdlsoap:operation?soapAction=""?/>?
    -?
    <wsdl:input?name="getBookTitleRequest">
    ??
    <wsdlsoap:body?encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"?namespace="http://DefaultNamespace"?use="encoded"?/>?
    ??
    </wsdl:input>
    -?
    <wsdl:output?name="getBookTitleResponse">
    ??
    <wsdlsoap:body?encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"?namespace="http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws"?use="encoded"?/>?
    ??
    </wsdl:output>
    ??
    </wsdl:operation>
    ??
    </wsdl:binding>
    -?
    <wsdl:service?name="BookTitleServiceService">
    -?
    <wsdl:port?binding="impl:BookTitleServiceSoapBinding"?name="BookTitleService">
    ??
    <wsdlsoap:address?location="http://localhost:8080/axis/org/zsu/zouang/BookTitleService.jws"?/>?
    ??
    </wsdl:port>
    ??
    </wsdl:service>
    ??
    </wsdl:definitions>
    這樣,一個最最簡單的Web Service就部署成功了.

    posted @ 2006-11-28 21:00 Zou Ang 閱讀(755) | 評論 (1)編輯 收藏

         摘要: Lazy Initialization and the DAO pattern with Hibernate and Spring的翻譯,照顧些不喜歡讀英文的朋友,請指導(dǎo)  閱讀全文

    posted @ 2006-11-27 20:03 Zou Ang 閱讀(2166) | 評論 (2)編輯 收藏

         摘要: 由于要求在項目中使用泛型的DAO,所以上網(wǎng)Google了一下,找到了IBM的一篇文章。文章講得不錯,但是有些地方不清楚,如果完全按照那篇文章可能還會遇到一些困難。所以寫了這篇文章,解釋如何在項目中加入泛型的DAO實現(xiàn)。 首先是總的類關(guān)系的UML圖:然后是在配置文件中的關(guān)系圖:??其中,IStaffDao是我們自己定義的接口,這個接口類似: publ...  閱讀全文

    posted @ 2006-11-26 21:08 Zou Ang 閱讀(5441) | 評論 (8)編輯 收藏

    測試-通過Word 2007發(fā)布Blog

    ?

    聽說可以用Word 2007發(fā)布Blog,測試一下,不過不知道有沒有代碼顯示的功能了.

    Microsoft Office Word 2007?Beta 2新增了Blog發(fā)布功能,這個一直讓人期待的功能終于可以體驗一下了。

    經(jīng)過今天的努力,博客園現(xiàn)在已經(jīng)支持通過Microsoft Office Word 2007發(fā)布Blog。

    該文章就是通過Word 2007發(fā)布。

    具體配置方法如下:

    1. 點擊選擇左上角的按鈕,選擇Publish>Blog。
    2. 點擊Manage Accounts,在Blog Accounts窗口中點擊New,
    3. 在BlogHost中選擇Other。
    4. 在API中選擇MetaWeblog。
    5. 在UserName與Password中輸入你的Blog帳戶與密碼。
    6. 在Blog Post Url地址中輸入MetaWeblog訪問地址(在Options ? Configure 頁面中可以查到),格式為:你的Blog主頁地址/services/metaweblog.aspx。

    配置完成后,你可以體驗從Word 2007發(fā)布Blog的感覺。

    以后就不用被Web編輯器排版和提交失敗的問題所困擾了。

    不過不能上傳圖片

    posted @ 2006-11-25 21:59 Zou Ang 閱讀(358) | 評論 (2)編輯 收藏

    本來沒問題的代碼,一整合就出錯了,煩

    posted @ 2006-11-25 20:10 Zou Ang 閱讀(196) | 評論 (0)編輯 收藏

    以前很喜歡在Eclipse中使用CTRL+ALT+F來進(jìn)行自動排版.不過今天發(fā)現(xiàn)以后要絕對慎用這項功能,尤其是在xml和html中,盡量不要使用..因為今天發(fā)現(xiàn),本來運行得很好的配置文件,只要一自動排版,就會報出一些莫名其妙的錯誤,而且這種錯誤是你檢查配置檢查不出來的,因為配置看起來根本就沒變!!
    猜測是由于在xml的entity中加了空格或者換行符的緣故.

    posted @ 2006-11-25 13:52 Zou Ang 閱讀(2356) | 評論 (1)編輯 收藏

         摘要: 趨向采用 SOA

      軟件開發(fā)領(lǐng)域的主要發(fā)展趨勢是從傳統(tǒng)軟件體系結(jié)構(gòu)過渡到面向服務(wù)的體系結(jié)構(gòu) (SOA)。在傳統(tǒng)軟件體系結(jié)構(gòu)中,將項目視為單個新應(yīng)用程序的交付。在SOA中,將項目視為集成服務(wù)的交付——一些是新建的,一些是現(xiàn)有的。無論其規(guī)模和預(yù)算如何,幾乎所有信息技術(shù)(Information Technology,IT)部門當(dāng)前都在進(jìn)行過渡到SOA的工作。您可能已經(jīng)讀過多篇關(guān)于SOA采用、成熟度模型和實現(xiàn)的文章了。本文將描述在組織采用SOA或過渡到更高的SOA成熟度水平的過程中,您的IT團(tuán)隊成員中所需的一組新角色及其各自的職責(zé)。

      在形成SOA團(tuán)隊時,最大的范式轉(zhuǎn)換是從組合應(yīng)用程序交付過渡到服務(wù)交付。傳統(tǒng)軟件開發(fā)人員通常構(gòu)建應(yīng)用程序中的一個模塊,或典型的三層體系結(jié)構(gòu)中的單個層的一部分。開發(fā)人員的一個例子就是在模型-視圖-控制器(Model-View-Controller,MVC)體系結(jié)構(gòu)中負(fù)責(zé)控制器或模型層的人員。在SOA環(huán)境中,這些開發(fā)人員現(xiàn)在負(fù)責(zé)服務(wù)實現(xiàn)。他們并不需要知道何時、如何或為什么調(diào)用服務(wù)以及誰調(diào)用服務(wù)。他們所關(guān)心的就是,服務(wù)進(jìn)行什么  閱讀全文

    posted @ 2006-11-25 09:09 Zou Ang 閱讀(239) | 評論 (0)編輯 收藏

         摘要: 嘗試使用JDOM  閱讀全文

    posted @ 2006-11-24 21:10 Zou Ang 閱讀(232) | 評論 (0)編輯 收藏

         摘要: 下午嘗試使用Rico,實現(xiàn)了漸變和拖拽.主要是比較在意它的效果功能..沒太多了解對Ajax的支持.下面是漸變的代碼
    Open Rico:OpenRico.org  閱讀全文

    posted @ 2006-11-24 16:17 Zou Ang 閱讀(364) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共4頁: 上一頁 1 2 3 4 下一頁 
    主站蜘蛛池模板: 免费看男女下面日出水来| 色网站在线免费观看| 中国精品一级毛片免费播放| 国产在线观看免费不卡| 国产亚洲精品bv在线观看| 无码一区二区三区AV免费| 亚洲日本在线观看网址| 99久久免费观看| 亚洲人成电影在线观看青青| 国产h肉在线视频免费观看| 亚洲国产人成在线观看| 免费AA片少妇人AA片直播| 亚洲欧美成人综合久久久| 免费无码又爽又刺激高潮的视频 | 亚洲国产成人精品无码区花野真一 | 亚洲AV无码成人专区片在线观看| 日韩免费高清播放器| 亚洲欧洲国产精品你懂的| 最近中文字幕大全免费视频| 亚洲国产美女福利直播秀一区二区| 在线观看的免费网站| 爱情岛亚洲论坛在线观看| 亚洲国产主播精品极品网红| 国产日韩一区二区三免费高清| 国产亚洲一区二区精品| 国内精品免费麻豆网站91麻豆| 亚洲欧美日韩综合俺去了| avtt亚洲天堂| 蜜桃视频在线观看免费视频网站WWW| 亚洲国产超清无码专区| 国产一级高清视频免费看| 精品乱子伦一区二区三区高清免费播放 | 亚洲乱亚洲乱妇24p| 亚洲狠狠爱综合影院婷婷| 久久免费精彩视频| 亚洲精品无码久久| 国产成A人亚洲精V品无码性色| 在线观看日本免费a∨视频| 青青久久精品国产免费看| 久久精品国产亚洲AV无码麻豆| 四虎国产精品免费久久影院|