最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java序列化常見的三個問題

 更新時間:2020年08月14日 10:51:43   作者:xcbeyond  
這篇文章主要介紹了Java序列化常見的三個問題,幫助大家更好的理解和學(xué)習(xí)JAVA,感興趣的朋友可以了解下

1、Java序列化與反序列化是什么?

Java序列化是指把Java對象轉(zhuǎn)換為字節(jié)序列的過程,而Java反序列化是指把字節(jié)序列恢復(fù)為Java對象的過程:

  • 序列化:對象序列化的最主要的用處就是在傳遞和保存對象的時候,保證對象的完整性和可傳遞性。序列化是把對象轉(zhuǎn)換成有序字節(jié)流,以便在網(wǎng)絡(luò)上傳輸或者保存在本地文件中。核心作用是對象狀態(tài)的保存與重建。
  • 反序列化:客戶端從文件中或網(wǎng)絡(luò)上獲得序列化后的對象字節(jié)流,根據(jù)字節(jié)流中所保存的對象狀態(tài)及描述信息,通過反序列化重建對象。

2、為什么需要序列化與反序列化?

為什么要序列化,那就是說一下序列化的好處嘍,序列化有什么什么優(yōu)點(diǎn),所以我們要序列化。

一:對象序列化可以實(shí)現(xiàn)分布式對象。

主要應(yīng)用例如:RMI(即遠(yuǎn)程調(diào)用Remote Method Invocation)要利用對象序列化運(yùn)行遠(yuǎn)程主機(jī)上的服務(wù),就像在本地機(jī)上運(yùn)行對象時一樣。

二:java對象序列化不僅保留一個對象的數(shù)據(jù),而且遞歸保存對象引用的每個對象的數(shù)據(jù)。

可以將整個對象層次寫入字節(jié)流中,可以保存在文件中或在網(wǎng)絡(luò)連接上傳遞。利用對象序列化可以進(jìn)行對象的"深復(fù)制",即復(fù)制對象本身及引用的對象本身。序列化一個對象可能得到整個對象序列。

三:序列化可以將內(nèi)存中的類寫入文件或數(shù)據(jù)庫中。

比如:將某個類序列化后存為文件,下次讀取時只需將文件中的數(shù)據(jù)反序列化就可以將原先的類還原到內(nèi)存中。也可以將類序列化為流數(shù)據(jù)進(jìn)行傳輸。

總的來說就是將一個已經(jīng)實(shí)例化的類轉(zhuǎn)成文件存儲,下次需要實(shí)例化的時候只要反序列化即可將類實(shí)例化到內(nèi)存中并保留序列化時類中的所有變量和狀態(tài)。

四:對象、文件、數(shù)據(jù),有許多不同的格式,很難統(tǒng)一傳輸和保存。

序列化以后就都是字節(jié)流了,無論原來是什么東西,都能變成一樣的東西,就可以進(jìn)行通用的格式傳輸或保存,傳輸結(jié)束以后,要再次使用,就進(jìn)行反序列化還原,這樣對象還是對象,文件還是文件。

3、如何實(shí)現(xiàn)Java序列化與反序列化

首先我們要把準(zhǔn)備要序列化類,實(shí)現(xiàn) Serializabel接口

例如:我們要Person類里的name和age都序列化

import java.io.Serializable;


public class Person implements Serializable { //本類可以序列化

  private String name;
  private int age;

  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }

  public String toString() {
    return "姓名:" + this.name + ",年齡" + this.age;
  }
}

然后:我們將name和age序列化(也就是把這2個對象轉(zhuǎn)為二進(jìn)制,理解為“打碎”)

package org.lxh.SerDemo;

import java.io.File;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;


public class ObjectOutputStreamDemo { //序列化
  public static void main(String[] args) throws Exception {
    //序列化后生成指定文件路徑
    File file = new File("D:" + File.separator + "person.ser");
    ObjectOutputStream oos = null;
    //裝飾流(流)
    oos = new ObjectOutputStream(new FileOutputStream(file));

    //實(shí)例化類
    Person per = new Person("張三", 30);
    oos.writeObject(per); //把類對象序列化
    oos.close();
  }
}

以上就是Java序列化常見的三個問題的詳細(xì)內(nèi)容,更多關(guān)于Java序列化 的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Springboot創(chuàng)建子父工程過程圖解

    Springboot創(chuàng)建子父工程過程圖解

    這篇文章主要介紹了Springboot創(chuàng)建子父工程過程圖解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Java中ExecutorService和ThreadPoolExecutor運(yùn)行原理

    Java中ExecutorService和ThreadPoolExecutor運(yùn)行原理

    本文主要介紹了Java中ExecutorService和ThreadPoolExecutor運(yùn)行原理,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • java實(shí)現(xiàn)簡單的五子棋游戲

    java實(shí)現(xiàn)簡單的五子棋游戲

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單的五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Java Object定義三個點(diǎn)實(shí)現(xiàn)代碼

    Java Object定義三個點(diǎn)實(shí)現(xiàn)代碼

    這篇文章主要介紹了Java Object定義三個點(diǎn)實(shí)現(xiàn)代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-09-09
  • SpringBoot停止啟動時測試檢查rabbitmq操作

    SpringBoot停止啟動時測試檢查rabbitmq操作

    這篇文章主要介紹了SpringBoot停止啟動時測試檢查rabbitmq操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java8中Optional操作的實(shí)際應(yīng)用

    Java8中Optional操作的實(shí)際應(yīng)用

    Optional類是一個可以為null的容器對象,如果值存在則isPresent()方法會返回true,調(diào)用get()方法會返回該對象,下面這篇文章主要給大家介紹了關(guān)于Java8中Optional操作實(shí)際應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • Maven項(xiàng)目在new module后,pom文件顯示為Ignored pom.xml問題

    Maven項(xiàng)目在new module后,pom文件顯示為Ignored pom.xml問題

    在Maven項(xiàng)目中,若創(chuàng)建過同名module后刪除,再次創(chuàng)建時可能導(dǎo)致pom.xml文件被IDEA忽略,原因是IDEA保留了之前module的痕跡,導(dǎo)致重建時將其視為已刪除的module,解決方法是進(jìn)入IDEA設(shè)置,找到Maven的Ignored Files設(shè)置
    2024-09-09
  • SpringBoot+VUE實(shí)現(xiàn)前后端分離的實(shí)戰(zhàn)記錄

    SpringBoot+VUE實(shí)現(xiàn)前后端分離的實(shí)戰(zhàn)記錄

    這篇文章主要介紹了SpringBoot+VUE實(shí)現(xiàn)前后端分離的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • 使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制

    使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制

    在現(xiàn)代 Web 應(yīng)用中,安全認(rèn)證和授權(quán)是保障數(shù)據(jù)安全和用戶隱私的核心機(jī)制,Spring Security 是 Spring 框架下專為安全設(shè)計的模塊,具有高度的可配置性和擴(kuò)展性,而 JWT則是當(dāng)前流行的認(rèn)證解決方案,所以本文介紹了如何使用Spring Security和JWT實(shí)現(xiàn)安全認(rèn)證機(jī)制
    2024-11-11
  • Java基礎(chǔ)入門之switch怎么使用枚舉

    Java基礎(chǔ)入門之switch怎么使用枚舉

    在Java開發(fā)中,switch語句是一種常用的流控制語句,而當(dāng)使用枚舉類型作為條件時,我們常常會遇到報錯問題,那么該如何解決呢,下面就來詳細(xì)講講
    2023-06-06

最新評論

城步| 平原县| 宝应县| 西丰县| 秦安县| 新田县| 泾源县| 柳河县| 东山县| 黑河市| 霸州市| 左贡县| 达州市| 珠海市| 徐闻县| 密山市| 云林县| 株洲县| 太谷县| 沅陵县| 万全县| 崇信县| 济南市| 嘉义县| 卢湾区| 梁平县| 万全县| 东至县| 理塘县| 嘉兴市| 阿坝| 桂阳县| 根河市| 自治县| 兴国县| 百色市| 景东| 平阳县| 南阳市| 慈利县| 黑山县|