Serialize vs Deserialize
스트리밍 관련해서 궁금해서 한 번 정리해보았습니다.
스트림(Stream)
스트림은 버퍼를 이용해 흘러 들어오는 배열이나 문자열 같은 데이터를 운반하는데 사용되는 연결통로입니다.
단방향 통신이며 입출력을 동시에 수행하려면 2개의 스트림(입력 스트림, 출력 스트림)이 필요합니다.
버퍼(Buffer)
입력속도에 비해 출력속도가 느린 경우 입력과 출력을 성능을 보완하기 위해 데이터를 임시 저장하는 공간을 말하며, 임시저장장치라고도 합니다.
binary 형태의 데이터를 저장하며, 스트림 데이터를 조금씩 읽고, 저장하고, 처리하고, 비우기를 반복하는 메모리 공간입니다.
버퍼가 작동하는 방식을 버퍼링(Buffering)이라고 합니다.
버퍼의 장점
데이터를 하나씩 전달하는 것이 아닌 묶어서 한 번에 전달하므로, 전송시간이 적게 걸려 성능이 향상됩니다.
사용자가 문자를 잘못 입력했을 경우 수정을 할 수 있습니다.
스트림과 버퍼의 관계
버퍼는 스트림을 위해 데이터를 데이터 처리 단위(chunk) 단위로 쪼개어 임시 저장해두는 역할을 합니다.
용량이 큰 데이터를 받을 때 버퍼의 크기 만큼 데이터를 담습니다. (버퍼링)
버퍼의 데이터가 꽉차면 해당 데이터를 프로그램으로 전송합니다. (스트리밍)
Buffer And Stream
- 대용량 데이터
- 데이터의 일부가 버퍼로 전달(입력 스트림)
- 데이터가 버퍼에 저장
- 버퍼에 데이터 처리단위만큼 데이터가 채워짐
- 버퍼에 있는 데이터 일부를 프로그램에 전송(출력 스트림)
- 프로그램에서 일부의 데이터를 사용(스트리밍)