자 93번째 키워드인 '데이터 통신과 전송 방법'에 관해서 어떤 것이 있는지 알아 볼 것이다.
태그에 나와있듯, 바이트 스트림과 폴링에 대해서 알아보았다.
바이트 스트림은 데이터를 바이트 단위로 순차적으로 전송하는 방식이다.
바이트 스트림을 통해 데이터는 일련의 바이트로 변환되어 전송되며, 이 방식은 파일 I/O나 네트워크 통신에서 자주 사용된다.
바이트 스트림을 사용하면 데이터를 연속적으로 전송할 수 있어, 매우 큰 파일이나 멀티미디어 데이터도 문제없이 다룰 수 있다.
순차적 전송: 데이터가 한 바이트씩 순차적으로 전송되므로 데이터의 순서가 중요할 때 유용하다.
다양한 매체 지원: 파일, 네트워크, 메모리 등 다양한 매체 간에 데이터 전송이 가능하다.
파일 전송: 대용량 파일을 서버로 전송할 때 바이트 스트림을 통해 데이터를 순차적으로 보내기 때문에 메모리 과부하를 방지할 수 있다.
네트워크 통신: TCP 프로토콜을 사용하는 네트워크 통신은 바이트 스트림을 통해 데이터를 전송한다. 이를 통해 대용량 데이터를 안정적으로 전송할 수 있다.
효율적 메모리 사용: 데이터를 한 번에 전부 로드하지 않고, 필요한 만큼만 읽어 메모리를 절약할 수 있다.
대용량 데이터 처리 가능: 데이터를 순차적으로 처리하기 때문에, 파일이나 스트리밍 서비스처럼 대용량 데이터에도 유리하다.
복잡한 구조의 데이터 처리 어려움: 바이트 단위로 데이터를 다루기 때문에 구조화된 데이터(예: JSON, XML 등)를 처리하려면 추가적인 파싱 과정이 필요하다.
전송 순서 유지 필수: 바이트 단위로 순차 전송이기 때문에 데이터 순서가 틀어지면 정보가 깨질 위험이 있다.
폴링은 이벤트가 발생했는지 확인하기 위해 일정 간격으로 상태를 점검하는 방식다.
폴링은 주기적으로 특정 자원의 상태를 확인하여 변화가 있으면 작업을 수행한다.
주기적 확인: 정해진 시간 간격으로 반복적으로 상태를 확인한다.
응답성 지연 가능성: 폴링 간격이 길 경우 이벤트가 발생했더라도 다음 폴링 주기까지 응답하지 못할 수 있다.
CPU 사용 증가 가능성: 폴링을 자주 실행하면 CPU 자원이 많이 소모될 수 있다.
네트워크 연결 상태 확인: 네트워크 연결이 활성 상태인지 주기적으로 확인하여 연결 상태가 변경되면 프로그램이 적절한 조치를 취한다.
입력 장치 상태 확인: 게임에서 입력 장치(키보드, 마우스 등)가 특정 버튼을 눌렀는지 확인할 때 폴링이 사용될 수 있이다.
큐 모니터링: 메시지 큐에서 새로운 메시지가 있는지 확인하는 데 폴링을 사용할 수 있다.
간단한 구현: 상대적으로 단순한 코드로 주기적인 상태 확인을 구현할 수 있다.
비동기 이벤트 지원 없는 환경에서 유용: 일부 시스템이나 네트워크 장비가 이벤트 기반 기능을 제공하지 않는 경우, 폴링을 통해 상태를 확인할 수 있다.
CPU 자원 낭비: 폴링 간격이 짧을 경우 CPU를 과도하게 사용해 성능 저하를 초래할 수 있다.
응답 지연: 폴링 간격이 길 경우, 중요한 이벤트에 빠르게 반응하지 못할 수 있다.