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

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

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

    呆羊在曬太陽(yáng)  
    公告
    • Y:哦,是你呀。
      X:我現(xiàn)在正在忙。
      Y:忙什么?
      X:呵呵,今天出太陽(yáng)了,我把錢(qián)搬出來(lái)曬一曬。
      ***********************
      abc
      小叉
      很高興能結(jié)識(shí)大家!
      ***********************
    日歷
    <2005年12月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567
    統(tǒng)計(jì)
    • 隨筆 - 164
    • 文章 - 2
    • 評(píng)論 - 196
    • 引用 - 0

    導(dǎo)航

    常用鏈接

    留言簿(7)

    隨筆分類(158)

    文章分類(2)

    相冊(cè)

    log

    搜索

    •  

    積分與排名

    • 積分 - 70719
    • 排名 - 781

    最新評(píng)論

    閱讀排行榜

     

    chris 發(fā)表于2003-07-17 評(píng)價(jià):0/0 評(píng)論數(shù):0 點(diǎn)擊數(shù):1745 [收藏]

    摘要:



    本文Matrix永久鏡像:http://www.matrix.org.cn/resource/article/0/378.html
    說(shuō)明:本文可能由Matrix原創(chuàng),也可能由Matrix的會(huì)員整理,或者由
    Matrix的Crawler在全球知名Java或者其他技術(shù)相關(guān)站點(diǎn)抓取并永久
    保留鏡像,Matrix會(huì)保留所有原來(lái)的出處URL,并在顯著地方作出說(shuō)明,
    如果你發(fā)覺(jué)出處URL有誤,請(qǐng)聯(lián)系Matrix改正.
    出自:csdn bootcool
    壓縮數(shù)據(jù)
    怎樣壓縮不以文件為基礎(chǔ)的數(shù)據(jù)


    12月7日, 2002

    Q: 本周,我回答了兩個(gè)使用Java進(jìn)行數(shù)據(jù)壓縮的問(wèn)題.

    第一個(gè)問(wèn)題是: 我怎樣才能壓縮那些不在文件中的數(shù)據(jù).

    第二個(gè)問(wèn)題是: 我以極大的熱情閱讀了Todd Sundsted的"壓縮你的數(shù)據(jù),從而提高你的網(wǎng)絡(luò)應(yīng)用程序的性能",但是讀完后我卻有點(diǎn)失望.當(dāng)我讀到文章標(biāo)題時(shí)我很高興.我想我總算找到了解決問(wèn)題的辦法了.

    在我們的公司,我們?cè)噲D提高一個(gè)組織數(shù)據(jù)的RMI應(yīng)用程序的性能.服務(wù)器端進(jìn)行了絕大部分的處理和優(yōu)化.我們花了一年半的時(shí)間去提高性能,但是現(xiàn)在看來(lái)瓶頸在于數(shù)據(jù)的傳輸上.在一天的任何時(shí)間內(nèi),我們都有可能在客戶和服務(wù)器之間傳送成千上萬(wàn)的數(shù)據(jù).

    一種可能的解決辦法,我建議我們能夠在把數(shù)據(jù)返回給客戶端時(shí)先壓縮這些數(shù)據(jù),這在Todd的文章中已經(jīng)說(shuō)得很清楚了.但是,文章中的例子卻是壓縮文件,而不是我們所需要的----對(duì)數(shù)據(jù)進(jìn)行壓縮.

    在RMI中的實(shí)現(xiàn)中,我們先從數(shù)據(jù)庫(kù)取得數(shù)據(jù),再把數(shù)據(jù)放入一個(gè)列表中,接著把這個(gè)列表返回給客戶端,最后再把它們插入JTable中.我想在把數(shù)據(jù)返回給客戶時(shí),首先把列表中的數(shù)據(jù)壓縮,然后在客戶端解壓縮,最后把數(shù)據(jù)插入到表格中.

    這樣的想法可行嗎?

    A:最近我收到了一些關(guān)于Todd的文章的疑問(wèn).很多讀者看起來(lái)對(duì)文章中的舉例很疑惑.因?yàn)槲恼轮械睦邮且晕募嚎s為核心的.

    首先回答第一個(gè)問(wèn)題,當(dāng)你使用ZipInputStream 和 ZipOutputStream 并沒(méi)有強(qiáng)制你必須使用文件.唯一要注意的是你必須把數(shù)據(jù)轉(zhuǎn)換為字節(jié)數(shù)組的形式.

    第二個(gè)問(wèn)題比較棘手.在網(wǎng)絡(luò)中,以RMI方式通信就需要作一些調(diào)整了.為了在傳送數(shù)據(jù)之前就讓RMI進(jìn)行數(shù)據(jù)壓縮,你必須創(chuàng)建一個(gè)能夠壓縮數(shù)據(jù)的新的套接字.然后,當(dāng)你創(chuàng)建了一個(gè)套接字后,你得告訴RMI使用這一套接字.

    以下是創(chuàng)建一個(gè)RMI形式的套接字的簡(jiǎn)要步驟:

    1:選擇或者創(chuàng)建一個(gè)新的套接字.(可以參看SUN'S的"創(chuàng)建一個(gè)典型的套接字").

    2:創(chuàng)建一個(gè)服務(wù)器端的套接字.

    3:創(chuàng)建一個(gè)RMIClientSocketFactory

    4:創(chuàng)建一個(gè)RMIServerSocketFactory

    5:創(chuàng)建一個(gè)繼承了UnicastRemoteObjec的遠(yuǎn)程對(duì)象,從而使用新的factories.

    根據(jù)這一大致的想法,我們來(lái)看每一步如何具體的實(shí)現(xiàn).

    步驟1: 創(chuàng)建ZipSocket

    由于要進(jìn)行Zip壓縮,我們重新創(chuàng)建這樣的套接字

    mport java.io.InputStream;

    import java.io.OutputStream;

    import java.util.zip.ZipInputStream;

    import java.util.zip.ZipOutputStream;

    import java.net.Socket;

    public class ZipSocket extends Socket {



    private InputStream in;

    private OutputStream out;



    public ZipSocket() { super(); }



    public ZipSocket(String host, int port)

    throws IOException {

    super(host, port);

    }



    public InputStream getInputStream()

    throws IOException {

    if (in == null) {

    in = new ZipInputStream(super.getInputStream());

    }

    return in;

    }



    public OutputStream getOutputStream()

    throws IOException {

    if (out == null) {

    out = new ZipOutputStream(super.getOutputStream());

    }

    return out;

    }



    public synchronized void close() throws IOException {

    OutputStream o = getOutputStream();

    o.flush();

    super.close();

    }

    }





    步驟2: 創(chuàng)建ZipServerSocket



    import java.net.ServerSocket;

    import java.net.Socket;

    import java.io.IOException;



    public class ZipServerSocket extends ServerSocket

    {

    public ZipServerSocket(int port) throws IOException {

    super(port);

    }



    public Socket accept() throws IOException {

    Socket socket = new ZipSocket();

    implAccept(socket);

    return socket;

    }

    }





    步驟3:創(chuàng)建ZipClientSocketFactory

    客戶端的factory的創(chuàng)建必須遵循以下的形式:



    import java.io.IOException;

    import java.io.Serializable;

    import java.net.Socket;

    import java.rmi.server.RMIClientSocketFactory;



    public class ZipClientSocketFactory

    implements RMIClientSocketFactory, Serializable {

    public Socket createSocket(String host, int port)

    throws IOException {

    ZipSocket socket = new ZipSocket(host, port);

    return socket;

    }

    }



    步驟4:創(chuàng)建ZipServerSocketFactory



    import java.io.IOException;

    import java.io.Serializable;

    import java.net.ServerSocket;

    import java.rmi.server.RMIServerSocketFactory;



    public class ZipServerSocketFactory

    implements RMIServerSocketFactory, Serializable {



    public ServerSocket createServerSocket(int port)

    throws IOException {

    ZipServerSocket server = new ZipServerSocket(port);

    return server;

    }

    }



    步驟5: 創(chuàng)建一個(gè)繼承了UnicastRemoteObjec的遠(yuǎn)程對(duì)象,從而使用新的factories.

    public class YourRMIObject extends UnicastRemoteObject {



    public YourRemoteObject( int port ) {

    super( port, new ZipClientSocketFactory(), new ZipServerSocketFactory() );

    }



    // 剩下的是你自己的程序?qū)崿F(xiàn)



    }



    現(xiàn)在你的通信數(shù)據(jù)得到了壓縮.





    關(guān)于作者:

    Tony Sintes 是一個(gè)獨(dú)立咨詢?nèi)?同時(shí)也是First Class Consulting, Inc. 的創(chuàng)始人.這一咨詢公司主要致力與對(duì)各個(gè)不同的企業(yè)系統(tǒng)進(jìn)行量身定制和培訓(xùn) . 業(yè)余時(shí)間,Tony 是一個(gè)積極的自由作家,同時(shí)也是Sams出版的<<21天學(xué)通面向?qū)ο缶幊?gt;>的作者 (Sams, 2001; ISBN: 0672321092).



    資源:

    To download the source code that accompanies this article, go to:

    http://www.javaworld.com/javaworld/javaqa/2001-12/ziprmi/01-qa-1207-ziprmi.zip



    "Zip Your Data and Improve the Performance of Your Network-Based Applications,"
    Todd Sundsted (JavaWorld, November 1998):

    http://www.javaworld.com/javaworld/jw-11-1998/jw-11-howto.html



    "Creating a Custom RMI Socket Factory," (Sun Microsystems, 1999):

    http://java.sun.com/products/jdk/1.2/docs/guide/rmi/rmisocketfactory.doc.html



    "Creating a Custom Socket Type," (Sun Microsystems, 1999):

    http://java.sun.com/products/jdk/1.2/docs/guide/rmi/sockettype.doc.html



    Be sure to check out Tony's suggested reading list at:

    http://www.firstclassconsulting.net/reading.html



    For more RMI stories, visit the RMI / RMI-IIOP section of JavaWorld's Topical Index:

    http://www.javaworld.com/channel_content/jw-rmi-index.shtml



    Want more? See the Java Q&A Index for the full Q&A catalog:

    http://www.javaworld.com/columns/jw-qna-index.shtml



    For over 100 insightful Java tips from some of the best minds in the business,
    visit JavaWorld's Java Tips Index:

    http://www.javaworld.com/columns/jw-tips-index.shtml



    Learn the basics of client-side Java in our Java Beginner discussion.
    Core topics include the Java language, the Java Virtual Machine, APIs, and development tools:

    http://forums.idg.net/webx?50@@.ee6b804



    Sign up for JavaWorld's free Applied Java newsletter:

    http://www.idg.net/jw-subscribe



    You'll find a wealth of IT-related articles from our sister publications at IDG.net

    譯者:我覺(jué)得這篇文章很有實(shí)用性,并且告訴了我們一種在網(wǎng)絡(luò)通信時(shí)進(jìn)行數(shù)據(jù)壓縮的一個(gè)可行的解決辦法.所以把它翻譯出來(lái),希望大家都能學(xué)到這一方法.這篇文章翻譯起來(lái)比較簡(jiǎn)單.但是由于水平有限,如果不對(duì)的地方懇請(qǐng)大家指正. bootcool@263.net.
    posted on 2005-12-09 14:59 小叉 閱讀(242) 評(píng)論(0)  編輯  收藏 所屬分類: 轉(zhuǎn)載
     
    Copyright © 小叉 Powered by: 博客園 模板提供:滬江博客
    主站蜘蛛池模板: 91麻豆国产自产在线观看亚洲| 免费国产污网站在线观看| 亚洲国产成人久久综合一| 免费一级毛片一级毛片aa| 国产无人区码卡二卡三卡免费 | 成人免费在线看片| 在线观看黄片免费入口不卡| 另类图片亚洲校园小说区| 亚洲校园春色另类激情| 337p日本欧洲亚洲大胆精品555588| 亚洲人午夜射精精品日韩| 免费在线观看日韩| 永久免费毛片手机版在线看| 99视频全部免费精品全部四虎 | 亚洲av激情无码专区在线播放| 亚洲av无码专区在线观看素人| 免费无码AV片在线观看软件| 又大又硬又爽又粗又快的视频免费| 野花香高清在线观看视频播放免费| 女人裸身j部免费视频无遮挡| 久久亚洲AV成人无码国产最大| 亚洲人成色777777老人头| 亚洲看片无码在线视频| 亚洲精品综合久久中文字幕| 亚洲国产精品久久久久婷婷老年 | 成人自慰女黄网站免费大全| 人成电影网在线观看免费| 黄色毛片免费网站| 国产精品亚洲专一区二区三区| 久久久久久亚洲av无码蜜芽| 亚洲人成小说网站色| 学生妹亚洲一区二区| 亚洲色成人网站WWW永久四虎 | 成人啪精品视频免费网站| 成年美女黄网站18禁免费| 成人影片麻豆国产影片免费观看 | 亚洲视频一区调教| 亚洲色偷偷av男人的天堂| 亚洲美女视频一区二区三区| 亚洲国产模特在线播放| 亚洲а∨天堂久久精品9966|