zoukankan      html  css  js  c++  java
  • 序列化

      所谓对象序列化就是将对象的状态转换成字节流,保存在文件中,以后可以通过读取文件再生成相同状态的对象。

      序列化:将数据分解成字节流,以便存储在文件(xx.dat)中或在网络上传输。

    对象输出流Object  OutputStream

      反序列化:就是打开字节流并重构对象。

    对象输入流Object  InputStream


    java序列化比较简单,只需实现java.io.Serializable接口的类对象就可以转换成字节流或从字节流恢复。

    把一个类序列化

    SerialVersion UID: 1.默认  2.设置

    Java序列化机制是通过在运行时判断类的SerialVersion UID来验证版本一致性的。

    在进行反序列化时,JVM会把传来的字节流中的SerialVersionUID与本地相应实体的SerialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一样的异常InvalidCastException。

    不想序列化的内容**

    在属性前面加上关键字 :  transient

    Users.java

     1 import java.io.Serializable;
     2 import java.util.Date;
     3 
     4 public class Users implements Serializable {
     5 
     6     private static final long serialVersionUID = 1L;
     7     //序列化版本ID
     8     
     9     private String username;
    10     transient private String password;//说明一个属性是临时的,不会被序列化
    11     private int experience;
    12     private double money;
    13     private Date regTime;
    14 
    15     @Override
    16     public String toString() {
    17         return "Users [username=" + username + ", password=" + password + ", experience=" + experience + ", money="
    18                 + money + ", regTime=" + regTime + "]";
    19     }
    20 
    21     public Users() {
    22         super();
    23         // TODO Auto-generated constructor stub
    24     }
    25 
    26     public Users(String username, String password, int experience, double money, Date regTime) {
    27         super();
    28         this.username = username;
    29         this.password = password;
    30         this.experience = experience;
    31         this.money = money;
    32         this.regTime = regTime;
    33     }
    34 
    35     public String getUsername() {
    36         return username;
    37     }
    38 
    39     public void setUsername(String username) {
    40         this.username = username;
    41     }
    42 
    43     public String getPassword() {
    44         return password;
    45     }
    46 
    47     public void setPassword(String password) {
    48         this.password = password;
    49     }
    50 
    51     public int getExperience() {
    52         return experience;
    53     }
    54 
    55     public void setExperience(int experience) {
    56         this.experience = experience;
    57     }
    58 
    59     public double getMoney() {
    60         return money;
    61     }
    62 
    63     public void setMoney(double money) {
    64         this.money = money;
    65     }
    66 
    67     public Date getRegTime() {
    68         return regTime;
    69     }
    70 
    71     public void setRegTime(Date regTime) {
    72         this.regTime = regTime;
    73     }
    74 }

    测试:

     1 import java.io.File;
     2 import java.io.FileInputStream;
     3 import java.io.FileOutputStream;
     4 import java.io.IOException;
     5 import java.io.ObjectInputStream;
     6 import java.io.ObjectOutputStream;
     7 import java.util.Date;
     8 
     9 public class SerializableDemo {
    10 
    11     public static void main(String[] args) {
    12         //两个类的对象
    13         ObjectInputStream in=null;
    14         ObjectOutputStream out=null;
    15         String fileName="g:"+File.separator+"Users.dat";
    16         //要序列化的对象
    17         Users user=new Users("张三丰","1234",1000,500.00,new Date());
    18         
    19         try
    20         {
    21             out=new ObjectOutputStream(new FileOutputStream(new File(fileName)));
    22             in=new ObjectInputStream(new FileInputStream(new File(fileName)));
    23             //通过序列化写入对象
    24             out.writeObject(user);
    25             //通过反序列化读对象
    26             Users temp=(Users)in.readObject();
    27             System.out.println(temp);
    28         }
    29         catch(Exception ex)
    30         {
    31             ex.printStackTrace();
    32         }
    33         finally
    34         {
    35             
    36             try {
    37                 out.close();
    38                 in.close();
    39             } catch (IOException e) {
    40                 // TODO Auto-generated catch block
    41                 e.printStackTrace();
    42             }
    43         }
    44     }
    45 }

    结果:

    Users [username=张三丰, password=null, experience=1000, money=500.0, regTime=Wed Apr 17 20:52:34 GMT+08:00 2019]

    文件.dat只是一种扩展名---不会的时候就看一下它的百度百科。

  • 相关阅读:
    Discovery Scanning
    Openvas
    Common Vulnerability Scoring System CVSS
    NIagara Workbench ( 温度控制)
    Nikto and whatweb
    Jace Config
    Active information gathering-services enumeration
    Intsall The Nessus in you kali linux
    Source Code Review
    Niagara workbench (Basic )
  • 原文地址:https://www.cnblogs.com/xjs1874704478/p/10726155.html
Copyright © 2011-2022 走看看