250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
Tags
- node
- bcrypt
- 프로미스
- 스코프
- 트랜잭션
- Django
- on_delete
- Jest
- 장고초기세팅
- crud2
- CORS
- rebase
- javascript
- manytomanyfield
- 자바스크립트
- typescript
- docker
- OSI7계층
- TypeError: this.boardRepository.createBoard is not a function
- 노드
- wecode
- django westagram
- JWT
- 호이스팅
- nodeJS
- status code
- 실행 컨텍스트
- westagram
- pm2
- async/await
Archives
- Today
- Total
될때까지
버퍼와 스트림 본문
728x90
버퍼와 스트림
버퍼 : 일정한 크기로 모아두는 데이터
- 일정한 크기가 되면 한 번에 처리
- 버퍼링 : 버퍼에 데이터가 찰 때까지 모으는 작업
버퍼의 단점 : 용량이 100MB인 파일이라면 읽을때에도 메모리에 100MB의 버퍼를 만들어야한다. 이때 서버같이 여러명이 이용하는 환경에서는 메모리문제가 발생할 수 있음. 그리고 모든 내용의 버퍼를 다 쓴 후에야 다음 동작으로 넘어가기때문에 동작이 느리다.
스트림 : 데이터의 흐름
- 일정한 크기로 나눠서 여러번에 걸쳐서 처리
- 버퍼(또는 청크)의 크기를 작게 만들어서 주기적으로 데이터를 전달
- 스트리밍 : 일정한 크기의 데이터를 지속적으로 전달하는 작업
const fs = require("fs");
const readStream = fs.createReadStream('./readme3.txt');
const data = [];
readStream.on('data', (chunk) => {
data.push(chunk);
console.log('data', chunk, chunk.length);
})
readStream.on('end', () => {
console.log('end', Buffer.concat(data).toString());
})
readStream.on('error', (err) => {
console.log('error', err)
})
const fs = require('fs');
const writeStream = fs.createWriteStream('./writeme2.txt');
writeStream.on('finish', () => {
console.log('파일 쓰기 완료');
});
writeStream.write('이 글을 씁니다.');
writeStream.write('한번 더 씁니다.');
writeStream.write('마지막으로 씁니다.');
writeStream.end();
스트림의 장점 : 받을때도 조금씩 받기 떄문에 들어온 데이터를 받아 가공할 수 있다. 작은 용량의 버퍼들이 전달되면 흘러가는 흐름이 파이프의 물 흐르는 것과 같다하여 pipe라고 한다.
728x90
'학습 > Node.js' 카테고리의 다른 글
((TIL)) Node.js express로 인스타그램 구현하기1 (0) | 2022.09.13 |
---|---|
예외 처리하기 (0) | 2022.08.22 |
fs (0) | 2022.08.22 |
crypto와 util (0) | 2022.08.21 |
os와 path (0) | 2022.08.21 |