當前位置:首頁 » 編程語言 » java序列化框架

java序列化框架

發布時間: 2022-03-15 15:47:39

java 中的序列化是什麼意思

對象要想在網路中傳輸,或者存放的本地磁碟時,需要對其序列化。
最常見的就是視頻流文件的讀取(網路傳輸) 和 ORM框架(存儲資料庫

㈡ java 為什麼序列化多個對象在一個文件里,卻反序列化可以讀取多個對象

readObject返回值為Object對象,從表面看我們只能讀取一個序列化對象,但是數組也是Object對象,所以我們可以把序列化對象數組讀取出來(List等集合框架也是好的選擇),這樣就可以實現讀取多個對象。

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;

public class Test {

public Test() {
// 創建序列化的對象數組
MyData [] myDatas = new MyData[10];
// 通過循環構造每一個對象
for(int i = 0; i < myDatas.length; i++){
myDatas[i] = new MyData("數據:" + (i + 1));
}
// 對象將要保存的文件
File file = new File("C:/mydata.dat");
// 對象輸出流
ObjectOutputStream out = null;
// 對象輸入流
ObjectInputStream in = null;
try {
// 將數組對象寫入文件
out = new ObjectOutputStream(new FileOutputStream(file));
out.writeObject(myDatas);
out.flush();
out.close();

// 將數組對象從文件中讀取
in = new ObjectInputStream(new FileInputStream(file));
MyData [] datas = (MyData[]) in.readObject();
for (MyData myData : datas) {
System.out.println(myData);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}

public static void main(String[] args) {
new Test();
}

}

/**
* 序列化數據
*/
class MyData implements Serializable {
private String text = null;

public MyData(String text) {
this.text = text;
}

public String toString() {
return text;
}

public String getText() {
return text;
}

public void setText(String text) {
this.text = text;
}

}

㈢ java頁面表單序列化怎麼在後台取到序列化的值

一:取決於你使用的框架的傳值方式

二:io流好像不能直接通過http協議傳輸,要轉換吧 requset.getParameter("fieldName") 一樣的取,ajax 是讓瀏覽器非同步發請求,不影響服務端的取值方式。

㈣ JAVA的multipartfile明明實現了serializable介面,為什麼不能序列化

對multipartfile,顯示指定一下serialVersionUID試試
private static final long serialVersionUID = 1L;

㈤ java 開發分布式項目使用bbo框架,遇到序列化問題,請大神解答,不勝感激!!

沒有影響的,甚至序列化可以自己自定義實現,跟jdk版本沒關系。

順便分享下資料。

37套精品Java架構師高並發高性能高可用分布式集群電商緩存

㈥ java中,什麼時候不能用Serializable

舉個例子,你編寫了一款游戲,保存記錄時把所有狀態一一保存非常麻煩,這時就可以使用Serializable(序列化介面),它的作用是可以將一個對象實例序列化,序列化後你可以選擇將它保存在你需要的位置。相對的,讀取後生成的對象所有屬性(除了設置為瞬時值的屬性)將和原對象的屬性相同(只是內存地址不同)。這樣可以方便的將一個java對象寫入到磁碟中,保存該對象的所有狀態!值得注意的是序列化的對象中包含的屬性和其他對象都需要實現序列化介面,不然無法正常序列化!在hibernate里,並非所有的實體類必須實現序列化介面,因為在hibernate中我們通常是將基本類型的數值映射為資料庫中的欄位。而基礎類型都實現了序列化介面(String也實現了)。所以,只有在想將一個對象完整存進資料庫(存儲為二進制碼),而不是將對象的屬性分別存進資料庫,讀取時再重新構建的話,就可以不用實現序列化介面。

㈦ 如何:向/自二進制流對對象進行序列化和反序列化(實體框架)

當將對象序列化為二進制流時,也將對當前載入到對象上下文中的所有相關對象進行序列化。有關更多信息,請參見序列化對象(實體框架)。本主題中的示例基於 Adventure Works 銷售模型。若要運行本示例中的代碼,必須已將 AdventureWorks 銷售模型添加到您的項目中,並將項目配置為使用實體框架。為此,請完成如何:手動配置實體框架項目和如何:手動定義模型和映射文件(實體框架) 中的過程。C#VBpublicstaticvoid ReadFromBinaryStream() { BinaryFormatter formatter = new BinaryFormatter(); using (AdventureWorksEntities context = new AdventureWorksEntities()) { try { // Get the object graph for the selected customer// as a binary stream. MemoryStream stream = SerializeToBinaryStream(@"Adams"); // Read from the begining of the stream. stream.Seek(0, SeekOrigin.Begin); // Deserialize the customer graph from the binary stream// and attach to an ObjectContext. Contact contact = (Contact)formatter.Deserialize(stream); context.Attach(contact); // Display information for each item // in the orders that belong to the first contact.foreach (SalesOrderHeader order in contact.SalesOrderHeaders) { Console.WriteLine(String.Format("PO Number: {0}", order.PurchaseOrderNumber)); Console.WriteLine(String.Format("Order Date: {0}", order.OrderDate.ToString())); Console.WriteLine("Order items:"); foreach (SalesOrderDetail item in order.SalesOrderDetails) { Console.WriteLine(String.Format("Proct: {0} " + "Quantity: {1}", item.ProctID.ToString(), item.OrderQty.ToString())); } } } catch (SerializationException ex) { Console.WriteLine("The object graph could not be deserialized from " + "the binary stream because of the following error:"); Console.WriteLine(ex.ToString()); } } } privatestatic MemoryStream SerializeToBinaryStream(string lastName) { BinaryFormatter formatter = new BinaryFormatter(); MemoryStream stream = new MemoryStream(); using (AdventureWorksEntities context = new AdventureWorksEntities()) { // Specify a timeout for queries in this context, in seconds. context.CommandTimeout = 120; // Define a customer contact. Contact customer; // Create a Contact query with a path that returns // orders and items for a contact. ObjectQuery query = context.Contacts.Include("SalesOrderHeaders.SalesOrderDetails"); try { // Return the first contact with the specified last name// along with its related orders and items. customer = query.Where("it.LastName = @lastname", new ObjectParameter("lastname", lastName)).First(); // Serialize the customer object graph. formatter.Serialize(stream, customer); } catch (EntitySqlException ex) { thrownew InvalidOperationException("The object query failed", ex); } catch ( ex) { thrownew InvalidOperationException("The object query failed", ex); } catch (SerializationException ex) { thrownew InvalidOperationException("The object graph could not be serialized", ex); } // Return the streamed object graph.return stream; } } 另請參見概念使用對象(實體框架)

㈧ java怎麼把bytebuffer反序列化

public static Object getObject(ByteBuffer byteBuffer) throws ClassNotFoundException, IOException {
// 需要mina框架的IoBuffer
IoBuffer buffer = IoBuffer.allocate(byteBuffer.capacity()).setAutoExpand(true); // 自動展開
for (int i = 0; i < byteBuffer.capacity(); i++) {
byteBuffer.position(i);
buffer.put(byteBuffer.get());
}
buffer.position(0);
InputStream input = buffer.asInputStream();
ObjectInputStream oi = new ObjectInputStream(input);
Object obj = oi.readObject();
input.close();
oi.close();
return obj;
}

㈨ 為啥平時java代碼都沒有實現序列化

因為我們平時寫的代碼都是在本地跑的,不需要和別的系統進行通訊。
如果和其他的系統進行通訊,比如現在的分布式框架,A系統調用B系統裡面的方法,就要用到http協議等通訊,這時候A系統裡面的一些代碼,java bean就要實現序列化,通過http傳輸過去,B接受到之後再反序列化。
現在的rpc框架,廣泛的應用這個。
一點淺薄的見解,希望能幫到你。

㈩ java序列化框架有哪些

把對象轉換為位元組序列的過程稱為對象的序列化。 把位元組序列恢復為對象的過程稱為對象的反序列化。

熱點內容
掛機伺服器的搭建 發布:2025-01-16 12:34:07 瀏覽:414
安卓怎麼刪除信任憑證 發布:2025-01-16 12:22:06 瀏覽:335
代理編譯 發布:2025-01-16 12:07:59 瀏覽:793
伺服器為什麼老是無響應 發布:2025-01-16 12:07:59 瀏覽:891
安卓怎麼傳軟體到蘋果 發布:2025-01-16 12:01:28 瀏覽:952
pythonforzip 發布:2025-01-16 11:59:46 瀏覽:909
磁感密碼鎖有多少鑰匙 發布:2025-01-16 11:41:12 瀏覽:117
酷睿電腦配置怎麼查看 發布:2025-01-16 11:27:26 瀏覽:563
怎麼看安卓手機應用程序 發布:2025-01-16 11:19:36 瀏覽:109
ftp密碼為空怎麼處理 發布:2025-01-16 11:19:34 瀏覽:803