這篇文章主要介紹“Java序列化的機制介紹”,在日常操作中,相信很多人在Java序列化的機制介紹問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Java序列化的機制介紹”的疑惑有所幫助!接下來,請跟著小編一起來學(xué)習(xí)吧!
為四方臺等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及四方臺網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)、四方臺網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
Java 序列化
Java 提供了一種對象序列化的機制,該機制中,一個對象可以被表示為一個字節(jié)序列,該字節(jié)序列包括該對象的數(shù)據(jù)、有關(guān)對象的類型的信息和存儲在對象中數(shù)據(jù)的類型。
將序列化對象寫入文件之后,可以從文件中讀取出來,并且對它進行反序列化,也就是說,對象的類型信息、對象的數(shù)據(jù),還有對象中的數(shù)據(jù)類型可以用來在內(nèi)存中新建對象。
整個過程都是Java虛擬機(JVM)獨立的,也就是說,在一個平臺上序列化的對象可以在另一個完全不同的平臺上反序列化該對象。
類ObjectInputStream 和ObjectOutputStream是高層次的數(shù)據(jù)流,它們包含序列化和反序列化對象的方法。
ObjectOutputStream 類包含很多寫方法來寫各種數(shù)據(jù)類型,但是一個特別的方法例外:public final void writeObject(Object x) throws IOException
上面的方法序列化一個對象,并將它發(fā)送到輸出流。相似的ObjectInputStream 類包含如下反序列化一個對象的方法:
public final Object readObject() throws IOException,
ClassNotFoundException
請注意,一個類的對象要想序列化成功,必須滿足兩個條件:
1. 該類必須實現(xiàn) java.io.Serializable 對象。
2. 該類的所有屬性必須是可序列化的。如果有一個屬性不是可序列化的,則該屬性必須注明是短暫的。
http://www.iis7.com/b/wzjk/
如果你想知道一個Java標(biāo)準(zhǔn)類是否是可序列化的,請查看該類的文檔。檢驗一個類的實例是否能序列化十分簡單, 只需要查看該類有沒有實現(xiàn)java.io.Serializable接口。
。。。
序列化對象
ObjectOutputStream 類用來序列化一個對象,如下的SerializeDemo例子實例化了一個Employee對象,并將該對象序列化到一個文件中。
該程序執(zhí)行后,就創(chuàng)建了一個名為employee.ser文件。該程序沒有任何輸出,但是你可以通過代碼研讀來理解程序的作用。
注意: 當(dāng)序列化一個對象到文件時, 按照J(rèn)ava的標(biāo)準(zhǔn)約定是給文件一個.ser擴展名。
。。。
反序列化對象
這里要注意以下要點:
readObject() 方法中的try/catch代碼塊嘗試捕獲 ClassNotFoundException異常。對于JVM可以反序列化對象,它必須是能夠找到字節(jié)碼的類。如果JVM在反序列化對象的過程中找不到該類,則拋出一個 ClassNotFoundException異常。
注意,readObject()方法的返回值被轉(zhuǎn)化成Employee引用。
當(dāng)對象被序列化時,屬性SSN的值為111222333,但是因為該屬性是短暫的,該值沒有被發(fā)送到輸出流。所以反序列化后Employee對象的SSN屬性為0。
::::::::::::::::::::::::::::::::::::::::::::::
Java 網(wǎng)絡(luò)編程
網(wǎng)絡(luò)編程是指編寫運行在多個設(shè)備(計算機)的程序,這些設(shè)備都通過網(wǎng)絡(luò)連接起來。
java.net包中J2SE的API包含有類和接口,它們提供低層次的通信細(xì)節(jié)。你可以直接使用這些類和接口,來專注于解決問題,而不用關(guān)注通信細(xì)節(jié)。
java.net包中提供了兩種常見的網(wǎng)絡(luò)協(xié)議的支持:
-TCP: TCP是傳輸控制協(xié)議的縮寫,它保障了兩個應(yīng)用程序之間的可靠通信。通常用于互聯(lián)網(wǎng)協(xié)議,被稱TCP / IP。
-UDP:UDP是用戶數(shù)據(jù)報協(xié)議的縮寫,一個無連接的協(xié)議。提供了應(yīng)用程序之間要發(fā)送的數(shù)據(jù)的數(shù)據(jù)包。
現(xiàn)在我們主要講解以下兩個主題。
-Socket 編程: 這是使用最廣泛的網(wǎng)絡(luò)概念,它已被解釋地非常詳細(xì)
-URL 處理: 這部分會在另外的篇幅里講,點擊這里更詳細(xì)地了解在Java語言中的URL處理。
。。。
Socket 編程
套接字使用TCP提供了兩臺計算機之間的通信機制。 客戶端程序創(chuàng)建一個套接字,并嘗試連接服務(wù)器的套接字。
當(dāng)連接建立時,服務(wù)器會創(chuàng)建一個Socket對象??蛻舳撕头?wù)器現(xiàn)在可以通過對Socket對象的寫入和讀取來進行進行通信。
java.net.Socket類代表一個套接字,并且java.net.ServerSocket類為服務(wù)器程序提供了一種來監(jiān)聽客戶端,并與他們建立連接的機制。
以下步驟在兩臺計算機之間使用套接字建立TCP連接時會出現(xiàn):
-服務(wù)器實例化一個ServerSocket對象,表示通過服務(wù)器上的端口通信。
-服務(wù)器調(diào)用 ServerSocket類 的accept()方法,該方法將一直等待,直到客戶端連接到服務(wù)器上給定的端口。
-服務(wù)器正在等待時,一個客戶端實例化一個Socket對象,指定服務(wù)器名稱和端口號來請求連接。
-Socket類的構(gòu)造函數(shù)試圖將客戶端連接到指定的服務(wù)器和端口號。如果通信被建立,則在客戶端創(chuàng)建一個Socket對象能夠與服務(wù)器進行通信。
-在服務(wù)器端,accept()方法返回服務(wù)器上一個新的socket引用,該socket連接到客戶端的socket。
連接建立后,通過使用I/O流在進行通信。每一個socket都有一個輸出流和一個輸入流??蛻舳说妮敵隽鬟B接到服務(wù)器端的輸入流,而客戶端的輸入流連接到服務(wù)器端的輸出流。
TCP是一個雙向的通信協(xié)議,因此數(shù)據(jù)可以通過兩個數(shù)據(jù)流在同一時間發(fā)送.以下是一些類提供的一套完整的有用的方法來實現(xiàn)sockets。
到此,關(guān)于“Java序列化的機制介紹”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識,請繼續(xù)關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編會繼續(xù)努力為大家?guī)砀鄬嵱玫奈恼拢?/p>
本文名稱:Java序列化的機制介紹
文章轉(zhuǎn)載:http://aaarwkj.com/article10/jesjdo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站改版、網(wǎng)站內(nèi)鏈、網(wǎng)站設(shè)計、軟件開發(fā)、建站公司、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)