中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當前位置: 首頁 > news >正文

小白學做網(wǎng)站買什么書哪里能搜索引擎優(yōu)化

小白學做網(wǎng)站買什么書,哪里能搜索引擎優(yōu)化,遼寧建設(shè)廳查詢網(wǎng)站,廣州網(wǎng)站建設(shè)開發(fā)一.概念 Serialization(序列化)是一種將對象以一連串的字節(jié)描述的過程;反序列化deserialization是一種將這些字節(jié)重建成一個對象的過程。將程序中的對象,放入文件中保存就是序列化,將文件中的字節(jié)碼重新轉(zhuǎn)成對象就是反…

一.概念

Serialization(序列化)是一種將對象以一連串的字節(jié)描述的過程;反序列化deserialization是一種將這些字節(jié)重建成一個對象的過程。將程序中的對象,放入文件中保存就是序列化,將文件中的字節(jié)碼重新轉(zhuǎn)成對象就是反序列化

二.要求

只有實現(xiàn)了Serializable或Externalizable接口的類的對象才能被序列化,并且序列化對象的所有屬性都需是可序列化的。

三.實現(xiàn)

serializable接口

1.1方法

序列化:創(chuàng)建一個ObjectOutputStream輸出流,調(diào)用 ObjectOutputStream 對象的 writeObject() 輸出可序列化對象

? ?反序列化:創(chuàng)建一個ObjectInputStream輸出流,調(diào)用 ObjectInputStream 對象的 readObject()得到反序列化的對象

1.2代碼

import java.io.*;
import java.lang.reflect.Method;class User implements Serializable{private String name;private int age;@Overridepublic String toString(){return "User{" + "name=" +name + ", age="+age+"}";}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}
}
public class Main {public static void main(String[] args) throws Exception {ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("E:\\tao.txt"));//創(chuàng)建一個ObjectOutputStream流,將序列化對象輸出到tao.txtUser user=new User();user.setName("tao");user.setAge(20);//實例化Userout.writeObject(user);ObjectInputStream in=new ObjectInputStream(new FileInputStream("E:\\tao.txt"));// 創(chuàng)建一個 ObjectOutputStream 輸出流User tao=(User)in.readObject();//將readObject反序列化的結(jié)果轉(zhuǎn)化成User類,實例成taoSystem.out.println(tao);}
}

User{name=tao, age=20}

1.3注意

①如果實現(xiàn) Serializable 接口的類有父類,則父類也必須可以序列化,若父類沒有實現(xiàn)序列化接口,則父類必須有無參構(gòu)造函數(shù),否則會拋異常 java.io.InvalidClassException。因為在父類沒有實現(xiàn) Serializable 接口時,虛擬機是不會序列化父對象的,而一個 Java 對象的構(gòu)造必須先有父對象,才有子對象,反序列化也不例外。所以反序列化時,為了構(gòu)造父對象,只能調(diào)用父類的無參構(gòu)造函數(shù)作為默認的父對象。因此當我們?nèi)「笇ο蟮淖兞恐禃r,它的值是調(diào)用父類無參構(gòu)造函數(shù)后的值。如果沒有在父類無參構(gòu)造函數(shù)中對父類變量進行初始化的話,父類變量值都是默認聲明的值,如 int 型的默認是 0,string 型的默認是 null。

②序列化不保存靜態(tài)變量,因為序列化保存的是對象的狀態(tài)而不是類的狀態(tài),靜態(tài)變量是類的狀態(tài)

③ 使用transient 關(guān)鍵字可以選擇不需要序列化的字段

如:

private transient String name;
private transient int age;

進行序列化的時候,name和age都不會被保存

Externalizable接口

2.1注意

①Externalizable接口繼承Serializable 接口

②writeExternal()和readExternal()對應(yīng)writeObject()和readObject()兩個方法

③Externalizable序列化沒有屬性限制,靜態(tài)變量以及transient 關(guān)鍵字修飾的屬性都能被序列化

④必須提供public的無參構(gòu)造方法,因為在反序列化實現(xiàn) Externalizabale 接口的類的時需要通過反射創(chuàng)建對象。如果沒有無參數(shù)的構(gòu)造方法,在運行時會拋出異常:java.io.InvalidClassException

2.2代碼

import java.io.*;
import java.lang.reflect.Method;class User implements Externalizable{private String name;private int age;public User(){}//加上public無參構(gòu)造器@Overridepublic String toString(){return "User{" + "name=" +name + ", age="+age+"}";}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}@Override//重寫writeExternal()方法public void writeExternal(ObjectOutput out) throws IOException{out.writeObject(name);}@Override//重寫wreadExternal()方法public void readExternal(ObjectInput in) throws IOException,ClassNotFoundException{name=(String)in.readObject();}}
public class Main {public static void main(String[] args) throws Exception {ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("E:\\tao.txt"));//創(chuàng)建一個ObjectOutputStream流,將序列化對象輸出到tao.txtUser user=new User();user.setName("tao");user.setAge(20);//實例化Userout.writeObject(user);ObjectInputStream in=new ObjectInputStream(new FileInputStream("E:\\tao.txt"));// 創(chuàng)建一個 ObjectOutputStream 輸出流User tao=(User)in.readObject();//將readObject反序列化的結(jié)果轉(zhuǎn)化成User類,實例成taoSystem.out.println(tao);}
}

result

User{name=tao, age=0}

age變成了0

因為使用Externalizable接口,需要重寫writeExternal() 與 readExternal() 方法,我只寫了name的實現(xiàn),沒有寫age,int型默認值為0

四.安全

java反序列化會自動觸發(fā)readObject()方法,類似于php反序列化的__destruct()函數(shù)

java支持自定義writeObject()和readObject()方法

如果某個類中自定義了readObject()方法,當對其的一個實例化對象進行反序列化,就會調(diào)用readObject()方法

import java.io.*;
import java.lang.reflect.Method;class User implements Serializable{private String name;private int age;@Overridepublic String toString(){return "User{" + "name=" +name + ", age="+age+"}";}public void setName(String name) {this.name = name;}public void setAge(int age) {this.age = age;}private void readObject(ObjectInputStream in){System.out.println("這是新的readObject!");}
}
public class Main {public static void main(String[] args) throws Exception {ObjectOutputStream out=new ObjectOutputStream(new FileOutputStream("E:\\tao.txt"));//創(chuàng)建一個ObjectOutputStream流,將序列化對象輸出到tao.txtUser user=new User();user.setName("tao");user.setAge(20);//實例化Userout.writeObject(user);ObjectInputStream in=new ObjectInputStream(new FileInputStream("E:\\tao.txt"));// 創(chuàng)建一個 ObjectOutputStream 輸出流User tao=(User)in.readObject();//將readObject反序列化的結(jié)果轉(zhuǎn)化成User類,實例成taoSystem.out.println(tao);}
}

結(jié)果

這是新的readObject!
User{name=null, age=0}

可見在反序列化的時候?qū)崿F(xiàn)了新的readObject()

那么就可以命令執(zhí)行了

 private void readObject(ObjectInputStream in) throws IOException{Runtime.getRuntime().exec("calc");}

彈計算器了!

這里初步了解java序列化與反序列話,后續(xù)構(gòu)造鏈會繼續(xù)學習。

參考博客

java基礎(chǔ)知識點2:序列化與反序列化詳解_java序列化和反序列化-CSDN博客

javasec/2.java序列化與反序列化.md at master · Maskhe/javasec (github.com)

http://www.risenshineclean.com/news/36451.html

相關(guān)文章:

  • 利用html做博客網(wǎng)站做百度推廣多少錢
  • 網(wǎng)站建設(shè)方案書 備案百度排名查詢
  • 網(wǎng)站建設(shè)要考慮哪些企業(yè)如何進行網(wǎng)絡(luò)營銷
  • 做圖網(wǎng)站有哪些東西嗎建網(wǎng)站用什么軟件
  • 用java做視頻網(wǎng)站app投放渠道有哪些
  • django做的網(wǎng)站舉例資源網(wǎng)站優(yōu)化排名軟件
  • 跨越速運在黑龍江黑河網(wǎng)點網(wǎng)絡(luò)優(yōu)化工程師主要做什么
  • 望牛墩做網(wǎng)站每日軍事新聞
  • 廣西中國建設(shè)銀行網(wǎng)站首頁百度網(wǎng)站收錄提交
  • 做網(wǎng)站指導seo流量工具
  • 菲律賓 做菠菜網(wǎng)站視頻外鏈在線生成
  • jquery 素材的網(wǎng)站seo基本概念
  • 長沙專門做網(wǎng)站建設(shè)的公司2024年1月新冠高峰期
  • 企業(yè)網(wǎng)站建立流程百度站長平臺鏈接
  • 2345電視劇網(wǎng)站免費鄭州seo服務(wù)公司
  • sae wordpress 圖片北京網(wǎng)站優(yōu)化站優(yōu)化
  • 學做蛋糕網(wǎng)站如何讓自己網(wǎng)站排名提高
  • 針對網(wǎng)站做搜索引擎做優(yōu)化網(wǎng)盤資源共享網(wǎng)站
  • 微交易網(wǎng)站建設(shè)實時積分榜
  • 溫州龍灣做網(wǎng)站2022年最好用的搜索引擎
  • wordpress搜索產(chǎn)品偽靜態(tài)博客seo優(yōu)化技術(shù)
  • 政府門戶網(wǎng)站建設(shè)的意義電腦培訓學校
  • 無錫知名網(wǎng)站制作百度網(wǎng)站打不開
  • 網(wǎng)站設(shè)計過程中需要注意的問題網(wǎng)站網(wǎng)頁的優(yōu)化方法
  • 網(wǎng)站開發(fā)的作用建站之星
  • 做論壇網(wǎng)站需要什么備案網(wǎng)站友鏈交換平臺
  • 做網(wǎng)站網(wǎng)絡(luò)營銷策略有哪幾種
  • 福永網(wǎng)站設(shè)計多少錢seo入門免費教程
  • 北京自助模板建站黑馬程序員培訓機構(gòu)在哪
  • 學生做的網(wǎng)站成品網(wǎng)絡(luò)客服