1. 스트림(Stream)이란?
(명사) 1. 개울, 시내 2.(액체, 기체의) 줄기
(동사) 1. 줄줄[계속] 흐르다 2. 줄을 지어[줄줄이] 이어지다.
오늘 말하고자 하는 스트림(Stream)은 2번째 동사 의미에 가깝다.
즉, '일련의 연속성을 갖는 흐름'을 의미한다.
스트림 동작 방식
일반적으로 유튜브의 영상 파일이나 이미지 파일을 사용자의 컴퓨터에서 볼 때
서버에서 파일 통째로 보낸다면 사용자는 파일이 모두 보내질 때까지 그저 까만 화면만 봐야할 것이다.
이러한 상황을 해결하고자 파일을 잘게 쪼개 연속적으로 줄지어 우리 컴퓨터로 보내게 되는데
이렇게 하면 사용자는 먼저 도착한 영상 파일 조각을 통해 기다림 없이 바로 영상을 볼 수 있게 된다.
2. 언어 별 스트림
C/C++
표준 스트림(Standard Stream)
컴퓨터 프로그램과 그 환경(단말기) 사이에 미리 연결된 입출력 통로
프로그램이 입력 장치(키보드 등)를 통해 입력을 받고
프로그램에서 계산 후, 결과값을 출력 장치(모니터 등)에 출력하는 그 통로
Java
1. 입력/출력 스트림(Input/Output Stream)
표준 스트림(Standard Stream)과 비슷한 개념으로 출발지 or 도착지에 따라 스트림의 종류를 결정
- 입력 스트림 : 프로그램이 데이터를 입력 받을 때 이용
- 출력 스트림 : 프로그램이 데이터를 보낼 때 이용
오로지 문자만 주고 받을 수 있는 문자 단위 입출력 스트림이 존재
2. 반복자 스트림
Java8부터 추가된 반복자
컬렉션, 배열 등의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 기능
Java 이전 버전에서 for, for-each 등의 반복문을 통해 각각의 원소에 접근 및 가공했다면
스트림의 경우 특정 타입의 스트림을 선언하여 필요한 형태로 가공하여 반환
NodeJS
스트림 모듈
스트리밍 데이터로 작업하기 위한 추상적인 인터페이스
Java의 입/출력 스트림과 유사하게 목적에 따라 스트림이 존재
- 입력 스트림 : Readable 스트림
- 출력 스트림 : Writable 스트림
정말 많은 부분에 사용
- 파일 접근
- HTTP 요청으로 데이터 읽기
언어에 따라 사용 방식 및 다루는 데이터 타입, 사용 목적이 다를 수 있으나
공통적으로 프로그램을 드나드는 데이터
, 파일
등을 바이트의 흐름으로 나타낸 것입니다.