Javase의 객체 시리얼화

11231 단어
Java 객체 시리얼화: 객체 지속성 솔루션 제공
원리: 메모리 대상의 데이터를 바이트 흐름으로 분해하고, 반서열화는 바이트 흐름을 열어 재구성하는 대상이다
필요 장면: 메모리 대상은 파일이나 데이터베이스에 저장하고 Socket 네트워크를 통해 대상을 전송하며 RMI를 통해 대상을 전송한다.
구현 방법: 클래스 구현 Java.io.serializable 인터페이스 주의사항: 서열화는 대상 데이터만 보존하고 방법과 구조 함수는 서열화되지 않습니다. (따라서 반서열화할 때 복구 대상의 유형을 지정해야 합니다.) static와transient의 변수는 서열화될 수 없습니다.
응용 예: 많은 응용 프로그램에서 일부 대상을 서열화하여 메모리 공간을 떠나 물리 하드디스크에 입주시켜 장기적으로 보존하도록 해야 한다.예를 들어 가장 흔히 볼 수 있는 것은 웹 서버의 세션 대상이다. 10만 명의 사용자가 동시에 방문하면 10만 개의 세션 대상이 나타날 수 있고 메모리가 견딜 수 없기 때문에 웹 용기는 일부seesion를 먼저 하드디스크에 서열화하고 사용하려면 하드디스크에 저장된 대상을 메모리로 복원한다.두 프로세스가 원격 통신을 할 때 서로 다양한 유형의 데이터를 보낼 수 있다.어떤 유형의 데이터든 이진 서열로 네트워크에 전송된다.송신자는 이 자바 대상을 바이트 시퀀스로 변환해야만 네트워크에서 전송할 수 있다.수신자는 바이트 서열을 다시 자바 대상으로 복원해야 한다.객체 시리얼/역시리얼 구현 코드:
class Person implements Serializable
{
     private String name;
     private int age;
     private String sex;
     public Person(String name,int age,String sex)
     {
    	 this.name=name;
    	 this.age=age;
    	 this.sex=sex;
     }
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}   
}
public class Test {
	public static void main(String[] args) throws IOException, ClassNotFoundException
	{
		SerializePerson();	//       
		Person p1=DeSerializePerson();//        
		System.out.println(p1.getName()+":"+p1.getAge()+":"+p1.getSex());
	}
	private static Person DeSerializePerson() throws FileNotFoundException, IOException, ClassNotFoundException {
		//ObjectInputStream     ,  "D://1.txt"                
		ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D://1.txt"));
		Person p1=(Person) ois.readObject();
		System.out.println("        ");
		ois.close();
		return p1;
	}
	private static void SerializePerson() throws  IOException {
		Person p = new Person("zhou",21," ");
		//ObjectOutputStream     , person     "D://1.txt"           
		ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D://1.txt"));
		oos.writeObject(p);
		System.out.println("       ");
		oos.close();
	}
}

좋은 웹페이지 즐겨찾기