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

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

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

    posts - 122,  comments - 25,  trackbacks - 0

    1、什么是java序列化

    Java 序列化 API 提供一種處理對(duì)象序列化的標(biāo)準(zhǔn)機(jī)制。序列化Serialization是指將java對(duì)象用一連串字節(jié)描述的一個(gè)過(guò)程;反序列化deserialization是一種將這一串字節(jié)構(gòu)建成一個(gè)對(duì)象的過(guò)程。


    2、序列化的作用(必要性)

    Java中,一切都是對(duì)象,在分布式環(huán)境中經(jīng)常需要將對(duì)象從這一端網(wǎng)絡(luò)或設(shè)備傳遞到另一端。Java 序列化機(jī)制就是一種解決在網(wǎng)絡(luò)兩端傳輸數(shù)據(jù)的問(wèn)題而產(chǎn)生的協(xié)議。下圖表示客戶(hù)端/服務(wù)器之間通信,一個(gè)對(duì)象是從客戶(hù)端傳送到服務(wù)器通過(guò)序列化的視圖。


    3、如何序列化一個(gè)對(duì)象

    為序列化一個(gè)對(duì)象,你需確保對(duì)象類(lèi)實(shí)現(xiàn)Serializable接口。Serializable接口沒(méi)有方法,只要實(shí)現(xiàn)了序列化接口,Class 就能被序列化機(jī)制處理。

    示例代碼,需序列化的java對(duì)象:

    1 import java.io.Serializable;
    2 
    3 public class TestClassSerial implements Serializable  {
    4     public byte version = 100;
    5     public byte count = 0;  
    6 }

    示例代碼,TestClassSerial對(duì)照象輸出成 Byte 流,存儲(chǔ)到 temp.out 文件里:
     1     public static void main(String args[]) throws IOException {
     2         FileOutputStream fos = null;
     3         ObjectOutputStream oos = null;
     4         try {
     5             fos = new FileOutputStream("c:/temp.out");
     6             oos = new ObjectOutputStream(fos);
     7             TestClassSerial tcs = new TestClassSerial();
     8             oos.writeObject(tcs);
     9             oos.flush();
    10         }
    11         finally {
    12             if(oos != null) {
    13                 oos.close();
    14             }
    15             if(fos != null) {
    16                 fos.close();
    17             }
    18         }
    19     }

    示例代碼,從持久的文件中讀取 Bytes 重建對(duì)象
     1     public static void main1(String args[]) throws IOException {
     2         FileInputStream fis = null
     3         ObjectInputStream oin = null;
     4         try {
     5             fis = new FileInputStream("c:/temp.out");
     6             oin = new ObjectInputStream(fis);
     7             TestClassSerial tcs = (TestClassSerial) oin.readObject();
     8             System.out.println("version="+tcs.version);
     9         }
    10         finally {
    11             if(fis != null) {
    12                 fis.close();
    13             }
    14             if(oin != null) {
    15                 oin.close();
    16             }
    17         }
    18     }

    執(zhí)行結(jié)果為:100.


    4、對(duì)象的序列化格式

    TestClassSerial對(duì)象序列化輸出的 temp.out 文件,以 16 進(jìn)制方式顯示,內(nèi)容如下:

    AC ED 00 05 73 72 00 0A 53 65 72 69 61 6C 54 65
    73 74 A0 0C 34 00 FE B1 DD F9 02 00 02 42 00 05
    63 6F 75 6E 74 42 00 07 76 65 72 73 69 6F 6E 78
    70 00 64

    這些二進(jìn)制字節(jié)就是用來(lái)描述序列化以后的TestClassSerial對(duì)象的,我們注意到 TestSerial 類(lèi)中只有兩個(gè)域:

    1 public  byte version = 100;
    2 public byte count = 0;

    都是 byte 型,理論上存儲(chǔ)這兩個(gè)域只需要 2 個(gè) byte ,但是實(shí)際上 temp.out 占據(jù)空間為 51bytes ,也就是說(shuō)除了數(shù)據(jù)以外,還包括了對(duì)序列化對(duì)象的其他描述。


    5、Java 的序列化算法

    序列化算法一般會(huì)按步驟做如下事情:

    1、將對(duì)象實(shí)例相關(guān)的類(lèi)的元數(shù)據(jù)輸出;
    2、
    遞歸地輸出類(lèi)的超類(lèi)元數(shù)據(jù)描述直到不再有超類(lèi);
    3、
    類(lèi)元數(shù)據(jù)完了以后,開(kāi)始從最頂層的超類(lèi)開(kāi)始輸出對(duì)象實(shí)例的實(shí)際數(shù)據(jù)值;
    4、
    從上至下遞歸輸出實(shí)例的數(shù)據(jù);


    更多序例化事例及二進(jìn)制字節(jié)含義參考文檔:http://my.oschina.net/god/blog/1291

    posted on 2010-12-16 14:52 josson 閱讀(825) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): java 開(kāi)發(fā)
    <2010年12月>
    2829301234
    567891011
    12131415161718
    19202122232425
    2627282930311
    2345678

    常用鏈接

    留言簿(3)

    隨筆分類(lèi)

    隨筆檔案

    收藏夾

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 免费A级毛片无码A∨ | 亚洲欧洲一区二区| 无限动漫网在线观看免费| 国产免费播放一区二区| 亚洲欧美综合精品成人导航| 亚洲国产精久久久久久久 | 黄色a级片免费看| 亚洲成a人片在线观看精品| 国产亚洲精品福利在线无卡一| 最近高清国语中文在线观看免费| 久久成人a毛片免费观看网站| 一级特黄aaa大片免费看| 亚洲Av永久无码精品一区二区| 亚洲国产精品成人精品小说| 亚洲av综合色区| 亚洲色WWW成人永久网址| 亚洲国产天堂久久综合| 国产免费av片在线播放| 天天天欲色欲色WWW免费| 日韩免费一区二区三区在线 | 亚洲色精品88色婷婷七月丁香| 亚洲国产精品一区二区第一页免| 精品亚洲一区二区三区在线播放| 黄色免费在线网站| 久久国产精品免费一区二区三区 | 国产yw855.c免费视频| 国内外成人免费视频| 猫咪社区免费资源在线观看| 91手机看片国产永久免费| 亚洲av无码偷拍在线观看| 亚洲最大av资源站无码av网址| 亚洲伊人久久大香线焦| 亚洲一级毛片免费看| 亚洲人成影院午夜网站| 亚洲一区二区三区免费在线观看| 亚洲成人免费网站| 亚洲五月综合网色九月色| 亚洲中文字幕无码爆乳app| 亚洲精品美女久久7777777| 亚洲精品av无码喷奶水糖心| 亚洲精品无码久久久久久|