직렬화 란 무엇입니까?

컴퓨터 프로그래밍에서 "직렬화"는 로컬 메모리에 저장된 데이터 구조를 가져 와서 네트워크를 통해 전송하거나 디스크에 저장하여 다른 프로그램에서 다시 사용할 수있는 ‬ 바이트 스트림으로 변환하는 프로세스입니다. 직렬화를 사용하면 객체의 상태를 저장하여 동일한 프로그램에서 나중에 다시로드 할 수도 있습니다 .‭이 기능의보다 복잡한 사용은 원격 프로 시저 호출을 호출하는 것입니다 (‬RPC‭) ‬ 네트워크를 통해 다른 컴퓨터에서 효과적으로 프로 시저를 실행할 수 있습니다.이 메커니즘을 사용하면 대규모 네트워크 시스템을 통해 데이터 개체를 배포 할 수도 있습니다.

거의 모든 현대 컴퓨터 언어는 직렬화를 기본적으로 지원하거나이 기능을 추가 할 수있는 라이브러리를 가지고 있습니다 .‭ ‬ 개체가 직렬화 될 때, object 개체의 모든 필드가 평탄화됩니다 .‭ ‬이 과정은 수축이라고도합니다 ‬ 또는 ‬ 마샬링 ‭ ‬ 데이터가 모든 출력 스트림에 기록 될 수있는 1 차원 바이트 행으로 변환됩니다. stream 출력 스트림 유형은 중요하지 않으며 file 파일 또는 네트워크 소켓 일 수 있습니다.

데이터가 직렬화되고 최종 위치로 전송되면 ser 직렬화 해제 프로세스가 시작됩니다. stream 바이트 스트림을 읽는 프로그램은 모든 정보를 복원하고 원래 개체의 새로운 인스턴스에 배치하여 정확한 사본. ‭ holding 대상이 보유한 데이터 만 only 마샬링됨을 이해하는 것이 중요합니다. 객체와 그 메소드 및 기타 구현 데이터는 그렇지 않습니다. 이것은 데이터를 직렬화 해제하는 프로그램이 원래 원래 직렬화되었던 클래스의 인스턴스를 작성할 수 있어야 함을 의미합니다.

데이터 구조 직렬화는 다양한 목적으로 사용될 수 있습니다 .‭ ‬ 개체 정보는 실제 미디어에 저장 될 수 있으므로 모든 개체의 정확한 상태를 프로그램 실행이 중지 된 시점으로 복원 할 수 있습니다. 원격 절차를 실행할 수있는 메시지를 다른 컴퓨터로 전송합니다.

객체 직렬화를 사용하기 전에, 어떤 제한을 이해하는 것이 중요합니다 .‭ 가장 중요한 것은 객체를 바이트 스트림으로 변환하는 과정을 통해 개인으로 선언 된 필드가 노출된다는 것입니다. .‭ 스트림 전송 중에이 데이터를 캡처 및 디코딩하여 보안 허점을 제시 할 수 있습니다. 대부분의 언어는 데이터 직렬화 형식의 외부화를 허용하므로 독점적으로 인코딩이 가능합니다. 이 위험을 완화하는 데 도움이됩니다.

명심해야 할 또 다른 요소는 직렬화가 일반적으로 serial ‬ 직렬화 된 객체와 정확히 동일한 객체에서만 작동한다는 것입니다 .‭ ‬ 만약 새로운 필드 나 메소드가 객체에 추가 ‭ 개체의 서명이 변경됩니다. 이것은 저장된 개체가 예외를 발생시키고 원래의 수정되지 않은 개체의 인스턴스가 개체를 복원하려고 시도 할 때까지 데이터를 복구 할 수 없게됨을 의미합니다.

다른 언어

이 문서가 도움이 되었나요? 피드백 감사드립니다 피드백 감사드립니다

어떻게 도와 드릴까요? 어떻게 도와 드릴까요?