>Java >java지도 시간 >직렬화란 무엇입니까? 직렬화에 대한 자세한 소개

직렬화란 무엇입니까? 직렬화에 대한 자세한 소개

PHP中文网
PHP中文网원래의
2017-06-20 14:25:493095검색

一 직렬화

1. 직렬화란?

메모리에 있는 개체를 하드 디스크에 쓰는 것은 직렬화이며, 이는 출력 데이터가 일반 텍스트가 아닌 개체라는 점을 제외하면 일반 출력과 다르지 않습니다.

2. 직렬화의 역할

메모리에 데이터를 저장하는 것은 일시적이기 때문에 객체를 장기간 저장해야 할 경우 객체를 하드 디스크에 기록해야 하므로 직렬화가 발생합니다. .

3. 직렬화 조건

객체가 직렬화되려면 해당 객체가 속한 클래스가 직렬화 가능 인터페이스를 구현해야 합니다. 이 인터페이스는 필드와 추상 메소드가 없는 상징적인 인터페이스입니다. 이 인터페이스는 클래스에 직렬화된 버전 번호를 할당합니다.

4. 객체가 직렬화되고, 개인형 변수를 포함한 객체의 전역 변수가 하드 디스크에 기록됩니다.

5. 직렬화할 수 없는 필드:

  1. 정적 필드는 직렬화할 수 없습니다. 정적 변수의 값은 직렬화 중에 설정된 값이 아니라 현재 JVM의 값입니다.

  2. transient에 의해 수정된 필드는 직렬화할 수 없습니다.

6. 직렬화 작업:

OutputStream ops=new FileOuptStream(path);
ObjectOuptStream oos=new ObjectOutputStream(ops);
Object obj=new Ojbect();
oos.writeObject(obj);

2. 직렬화 해제

1 역직렬화란? 하드디스크에 있는 데이터를 메모리에 쓰고, 파일에 저장된 객체입니다.

2. 역직렬화 작업 요구 사항

역직렬화 순서는 직렬화 순서와 일치해야 합니다.

3. 직렬화 버전 번호

⑴ 직렬화 중에 직렬화 버전 번호라고 하는 긴 번호가 생성되고 직렬화 파일과 클래스 파일에 동시에 저장되며 역직렬화 중에 두 개가 비교됩니다.

숫자, 동일하면 직렬화에 성공하고, 동일하지 않으면 역직렬화를 수행할 수 없습니다.

⑵ 직렬화된 버전 번호는 엔터티 클래스의 버전을 표시하는 데 사용됩니다. 엔터티 클래스가 수정되면 직렬화된 버전 번호를 명시적으로 지정하지 않으면 시스템에서 자동으로 새 버전 번호를 생성하므로 두 버전이 숫자가 달라서 직렬화할 수 없습니다.

일반적으로 직렬화 버전 번호는 직렬화해야 하는 엔터티 클래스에 명시적으로 설정됩니다.

⑶ 다시 컴파일하지 않아도 반드시 새로운 일련화된 버전 번호가 생성되는 것은 아닙니다. 엔터티 클래스가 변경될 때만 새로운 일련화된 버전 번호가 생성됩니다.

⑷파싱 프로세스

먼저 직렬화된 파일의 직렬화된 버전 번호와 클래스 파일이 동일한지 비교합니다. 동일하다면 직렬화된 파일이 현재

에 의해 생성되었음을 의미합니다. 클래스 파일입니다. 역직렬화할 수 있습니다. 파일이 다르다면 현재 클래스 파일에서 생성되지 않고 버전이 일치하지 않으며 역직렬화할 수 없다는 뜻입니다.

⑸ 역순 연산:

InputStream is=new FileInputStream(path);
ObjectInputStream ois=new ObjectIputStream(is);
Object obj=ois.readObject();

위 내용은 직렬화란 무엇입니까? 직렬화에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.