[java] 직렬화 란 무엇입니까?

OOP (Object-Oriented Programming)를 시작하고 OOP 용어에서 직렬화의 의미가 무엇인지 알고 싶습니다.



답변

직렬화는 메모리의 객체를 바이트 스트림으로 변환하여 디스크에 저장하거나 네트워크를 통해 전송하는 것과 같은 작업을 수행하는 프로세스입니다.

역 직렬화는 리버스 프로세스입니다. 바이트 스트림을 메모리의 객체로 변환합니다.


답변

간단히 말해서 직렬화 는 네트워크를 통해 전송되거나 영구 저장소에 저장 될 수 있도록 객체를 바이트 스트림으로 변환하는 프로세스입니다.

역 직렬화는 정반대입니다. 네트워크 또는 지속성 저장소에서 바이트 스트림을 가져와 동일한 상태 의 Object 다시 변환합니다 .

이해해야 할 것은 바이트 스트림이 해석되거나 조작되어 정확히 동일한 객체 / 동일한 상태를 얻는 방법입니다. 이를 달성하기위한 다양한 방법이 있습니다. 그들 중 일부는-

  1. XML : Object를 XML로 변환하거나 네트워크를 통해 전송하거나 파일 / DB에 저장합니다. 그것을 검색하고 같은 상태의 객체로 다시 변환하십시오. Java에서는 JAXB (Java binding for Java binding) 라이브러리를 사용합니다 (java 6부터 JDK와 번들로 제공).
  2. JSON : Object를 JSON (JavaScript Object notation) 으로 변환하여 동일하게 수행 할 수 있습니다 . 다시 사용할 수있는 GSON 라이브러리가 있습니다.
  3. 또는 OOP 언어 자체에서 제공하는 직렬화를 사용할 수 있습니다. 예를 들어 Java에서는 구현 Serializable interface하고 객체 스트림에 쓰도록 객체를 직렬화 할 수 있습니다 .

답변

그림을 통한 간단한 설명 :

내 개 렉스가 연재된다!

유추에 의한 설명 :

내가 전화로 내 친구와 이야기하고 있고 새 강아지에 대해 이야기한다고 가정 해 봅시다.

여기 내 문제가 있습니다 : 강아지는 살아 숨쉬는 포유류입니다. 전화선을 통해 강아지를 어떻게 전해야합니까? 강아지를 전화 수신기에 물리적으로 넣을 수 없습니다.

대신, 전화로 강아지의 표현을 전달해야합니다. 다시 말해, 나는 내 개 렉스를 직렬화하고 전화선을 통해 직렬화 된 버전의 Rex를 보냅니다.

{ "name":"Rex", "age":5, "favourite_food": pedigree_choice_cuts, "favourite_game": fetch_ball, "favourite_hobby": wagging_tail }

내 강아지의 직렬화-그것은 완벽한 표현입니다.

요약:

직렬화는 기본적으로 내 개 렉스를 다른 객체 (JSON 객체)로 변환 한 다음 전화선을 통해 일련의 1과 0으로 전송할 수 있습니다. NYC의 내 친구는 그 1과 0을 다시 JSON 객체로 변환하여 내 개 렉스를 완벽하게 표현할 수 있습니다.


답변

이것을 확인하십시오, 이것은 당신에게 좋은 설명을 줄 것입니다 :

http://en.wikipedia.org/wiki/Serialization

직렬화라는 용어의 가장 일반적인 사용은 이진 객체를 XML (또는 다른 문자열) 표현으로 변환하여 데이터베이스 / 파일에 저장하거나 웹 서비스 호출에서 네트워크를 통해 보낼 수 있다고 생각합니다. 역 직렬화는 XML / 문자열을 다시 개체로 변환하는 역 프로세스입니다.

편집 : 또 다른 용어는 마샬링 / 비 마샬링입니다. 마샬링은 기본적으로 직렬화와 동일한 개념이며 비 정렬 화는 직렬화 해제와 동일합니다.


답변

직렬화는 객체를 바이트 스트림으로 변환하여 객체를 저장하거나 메모리, 데이터베이스 또는 파일로 전송 하는 프로세스입니다 . 주요 목적은 필요할 때 다시 만들 수 있도록 객체의 상태를 저장하는 것입니다. 역 프로세스를 역 직렬화라고합니다.

이 그림은 전체 직렬화 프로세스를 보여줍니다.

직렬화의 전체 프로세스

직렬화를 통해 개발자는 웹 서비스를 통해 원격 애플리케이션으로 오브젝트를 전송하거나 한 도메인에서 다른 도메인으로 오브젝트를 전달하거나 XML 문자열로 방화벽을 통해 오브젝트를 전달하거나 보안 또는 사용자 별 유지 보수와 같은 조치를 수행 할 수 있습니다. 응용 프로그램 간 정보

에서 https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/serialization/

(강조 광산)


답변

직렬화 는 순서없는 데이터 (예 : 개체)를 일련 의 토큰 으로 변환하여 나중에 원본 데이터를 재구성하는 데 사용할 수있는 프로세스입니다 . 직렬화 된 양식은 대부분 텍스트 문자열이지만 반드시 그럴 필요는 없습니다.


답변

직렬화는 객체를 저장 가능한 비트 시퀀스로 변환합니다.

이 시퀀스를 파일, db 또는 네트워크를 통해 전송하여 저장할 수 있습니다.

나중에 실제 객체에 직렬화를 해제하고 필요할 때마다 재사용 할 수 있습니다.

웹 서비스AJAX 가 가장 일반적인 직렬화 예입니다. 클라이언트에 응답을 보내기 전에 개체가 직렬화되었습니다.