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

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

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

    2008年12月6日

    1.       書目

    精通RMI——Java與EJB企業級應用開發

    Java™ RemoteMethodInvocation Specification

    Java tutorial- RMI

    2.       基礎知識

    2.1 網絡通信協議

    網絡通信層是分布式計算環境中使用客戶/服務器結構的一個核心技術,而網絡編程中大體有兩種通信模式,無連接和面向連接的協議。

                 UDP

    UDP (universal datagram protocol)是一種用于無連接通信的標準化協議,其建立在IP協議之上,而IP協議是internet使用的基本數據傳輸協議。UDP協議的主要作用是將網絡數據流量壓縮成數據報文的形式。一個典型的數據報文就是一個二進制數據的傳輸單位。每一個數據報的前8個字節用來包含報頭信息,剩余字節則用來包含具體的傳輸數據。UDP協議并不提供數據傳送的保證機制。如果在從發送方到接收方的傳遞過程中出現數據報的丟失,協議本身并不能做出任何檢測或提示。因此,通常人們把UDP協議稱為不可靠的傳輸協議。一般用來傳輸少量數據,它資源消耗小,處理速度快。

     TCP

    TCP(transport control protocol)傳輸控制協議,標準化的面向連接的通信協議。在使用TCP協議中發送者和接收者必須在通信之前建立連接,連接建立之后被看成是一個數據流,發送者將數據發到該數據流上,接收者從該數據流上讀取數據。如果接收者也同時是發送者則連接是雙向的。通信完成后任何一方都可以關閉連接,之后的讀寫操作都會失敗。TCP協議提供了可靠的面向對象的數據流傳輸服務的規則和約定。簡單的說在TCP模式中,對方發一個數據包給你,你要發一個確認數據包給對方。Java提供的類庫都將TCP/IP協議的使用借助套接字(Socket)進行了抽象。套接字包含了建立與遠程主機的連接,與主機進行通信以及關閉連接所需要的所有操作,而這些操作實際上還是由TCP/IP來執行的。

    編組

    在應用復雜尤其是面向對象的時候,一方面會遇到處理數據或者對象的結構的問題。另一方面還會遇到面向流的用來發送字節或字符塊的網絡連接問題。此時需要將對象轉換成連接可以處理的格式,從而使自定義的對象可以通過連接管道。

    編組(marshalling)是一個將負責對象轉換成字節流的過程,然后在使用反過程----反編組將字節流轉換成對象。Java中編組的實現方式是序列化(serialization)。


        代理

    代理是一個實現給定接口的對象,但是不直接執行一些代碼計算結果,而是代表其他一些對象執行實際計算的對象。


        
        代理可以代表其他的庫或者某種類似的可以代替它執行網絡通信的東西。這就是RMI工作的原理,代理在RMI也即存根(Stub)。

    引用位于服務器中的對象的代理是如何構造的?客戶端不能有一個真的Java引用,因為Java引用只在對象位于同一個JVM時才能正常工作。構造的基本思想是為服務器對象分配一個唯一的標識序號,該序號由代理保存,此外還有對象所在的主機名。



        客戶如何請求代理

    在獲取代理時我們需要一個間接層把所有細節抽象,通過使用名字去獲得對應對象的思想就是命名。命名的一個主要作用是通過使用對象的名字,簡化獲得對象的任務。

    對于RMI來說,最通用的命名實現時RMI注冊,它具有bind和lookup操作,對于命名服務來說,客戶端其實存在一個它的代理。

    命名使用示例圖

    posted @ 2009-05-19 21:37 遲來的兵 閱讀(468) | 評論 (0)編輯 收藏

    一.String對象的比較,+操作和intern方法
    這里從一個問題入手來看看。

    package testPackage;
       public class Test {
            
    public static void main(String[] args) {
                String hello 
    = "Hello", lo = "lo";
                System.out.print((hello 
    == "Hello"+ " ");
                System.out.print((Other.hello 
    == hello) + " ");
                System.out.print((other.Other.hello 
    == hello) + " ");
                System.out.print((hello 
    == ("Hel" + "lo")) + " ");
                System.out.print((hello 
    == ("Hel" + lo)) + " ");
                System.out.println(hello 
    == ("Hel" + lo).intern());
            }

        }
        class Other {
            
    static String hello = "Hello";
        }


    package other;
        public class Other {
            
    static String hello = "Hello";
        }

    正確答案:true true true true false true
    主要要點有:
    1.所有內容相同的String指向同一個內存塊。但String對象不能是通過new操作創建出來。主要原因是JVM對String做了優化,String加載之后會持有一個常量池,
    只要在常量池中找到內容相同的String就會把其引用返回。而new操作是直接在內存中分配新空間。



    2.Java中有兩種綁定,靜態和動態。如果+操作的兩邊是常量表達式那么會在采用靜態綁定,也就是說編譯之后值已經定下來了。而如果有一邊是通過new操作創建出
    來的那么會采用動態綁定,只有在運行的時候才知道其具體的值。
    3.String的intern方法會到常量池里面找是否有相同內容的String,如果有則返回其引用。如果沒有則把這個String對象添加到常量池之中并放回其引用。額外說
    下,intern在英文中有保留區的意思,這樣好理解其作用。intern方法還是native的。
    二.String中的正則表達式使用

    String中有些方法是需要正則表達式作為參數的。這個時候就要主要不要傳錯參數。最典型的例子就是replaceAll(String regex, String replacement)。第一個
    參數是需要正則表達式的,而第二參數是普通的字符串。
            String ss = "???";
            ss 
    = ss.replaceAll("?""=");//運行到這里會拋出PatternSyntaxException,因為“?”在正則表達式里面是特殊符號,需要轉義。
            ss = ss.replaceAll("[?]""=");//正確,我個人比較傾向于這種寫法。
            ss = ss.replaceAll("\\?""=");//正確,對“?”做轉義。

    因此在使用split,replaceAll,replaceFirst等方法時要特別注意是不是需要轉義.

    posted @ 2008-12-06 19:39 遲來的兵 閱讀(239) | 評論 (0)編輯 收藏


    posts - 6, comments - 8, trackbacks - 0, articles - 1

    Copyright © 遲來的兵

    主站蜘蛛池模板: 两个人日本WWW免费版| 校园亚洲春色另类小说合集| 欧美男同gv免费网站观看| 亚洲色精品vr一区二区三区| 国产黄色片免费看| 国产AV无码专区亚洲AV漫画 | 最近更新免费中文字幕大全 | 亚洲国产天堂久久综合网站 | 亚洲爆乳无码精品AAA片蜜桃| 久久精品a一国产成人免费网站| 中文日韩亚洲欧美制服| 成人免费男女视频网站慢动作| 亚洲色偷偷偷综合网| 国产一区二区三区在线免费观看| 亚洲精品高清国产一线久久| 日本黄色动图免费在线观看| 亚洲国产精品成人精品小说| 思思99re66在线精品免费观看| 亚洲精品无码久久久久牙蜜区| 四虎影视精品永久免费| 波霸在线精品视频免费观看| 亚洲国产高清人在线| 曰批全过程免费视频在线观看| 免费在线观看亚洲| 亚洲av中文无码乱人伦在线播放 | 亚洲视频在线不卡| 成年女人18级毛片毛片免费| 黄色三级三级免费看| 亚洲精品高清国产一线久久| A在线观看免费网站大全| 特a级免费高清黄色片| 亚洲∧v久久久无码精品| 成人毛片18女人毛片免费视频未| 又粗又长又爽又长黄免费视频| 久久亚洲精品成人综合| 在线观看视频免费国语| 99久久99这里只有免费的精品| 亚洲一区二区三区国产精品无码| AV在线亚洲男人的天堂| 在线精品一卡乱码免费| 一级免费黄色大片|