버퍼
: 임시 데이터를 저장하는 물리적인 메모리 공간

- 파일을 읽어 올 때, 전체 내용을 한꺼번에 가져오지 않고, 한번에 버퍼 하나의 크기만큼 가져오고, 버퍼가 가득 차면 그 내용을 전달
💡 노드의 버퍼 크기는 고정되어있다 !
✔ 버퍼 예시코드
const fs = require("fs"); fs.readFile("example.txt", (err, data) => { if (err) { console.log(err); } else { console.log(data); // 이진 데이터 표시 console.log(data.toString()); // 문자열로 변환해서 표시 } });위 코드의 console 값.
스트림
: 한 곳에서 다른 곳으로 데이터가 이동하는 것 → 데이터 흐름

- 스트리밍 서비스 : 사용자가 화면을 보는 동안 또 다른 파일이 버퍼에 다운로드되고, 버퍼가 가득 차면 다시 화면에서 재생
→ 실제 영화를 볼 때에도, 영화 파일을 조금씩 나눠서 내려받으면서 화면에서 재생됨 (영화보다 로딩이 생기는 이유 ! ) - 서버에서 클라이언트로, 클라이언트에서 서버로 데이터를 보낼 때 사용하는 방식
- 장점 : 시간 절약, 메모리 사용 최소화 → 프로그램 성능 향상
📌 스트림 종류
리더블 스크림 데이터를 읽기 위한 스트림 → 서버에서 용량이 큰 데이터를 가져올 때 사용 라이터블 스트림 데이터를 쓰기 위한 스트림 듀플렉스 스트림 읽기와 쓰기 모두 가능한 스트림 → 실시간 양방향 통신 가능
- 청크(chunk)란? 데이터를 읽어오는 작은 단위
✔ 리더블 스크림 예시코드
const fs = require("fs") const readStream = fs.createReadStream("./readMe.txt"); readStream.on("data", (chunk) => { console.log("new chunk received:"); console.log(chunk); }); readStream.on("end", () => { console.log("finished reading data"); }); readStream.on("error", (err) => { console.log(`Error reading the file: ${err}`); });
💡 버퍼는 데이터를 메모리에 저장하고 직접 다룰 때 사용
스트림은 버퍼를 사용해 데이터를 처리하거나 전달 !
참조: Do it! Node.js 프로그래밍 입문
'[NodeJS] 노드' 카테고리의 다른 글
| [NodeJS] 비밀번호 암호화하기-bcrypt 모듈 (0) | 2024.06.03 |
|---|---|
| [Express] express-async-handler (0) | 2024.06.03 |
| RESTful API (0) | 2024.05.28 |
| 블로킹과 논블로킹 (0) | 2024.05.27 |
| [Javascript] let과 const 그리고 var (0) | 2024.05.27 |

