1. 버퍼(buffer)
메모리에 저장되는 일부 공간
바이트 단위로 저장되며 integer 형태의 배열
- 버퍼(Buffer)
< js >
const buf=Buffer.from('Hi');
console.log(buf); // <Buffer 48 69>
console.log(buf.length); // 2
console.log(buf[0]); // 72
console.log(buf[1]); //105 * 아스키 코드로 바이트 값이 저장됨
console.log(buf.toString()); // 문자열로 변환
</js >
<Buffer 48 69> 2 72 105 Hi |
- 문자열 출력_1
< js >
const buf2=Buffer.alloc(2); //2개의 공간확보 할당
buf2[0]=72;
buf2[1]=105;
console.log(buf2.toString());
</js >
Hi |
- 문자열 출력_2
< js >
// 아스키코드 확인
const buf3=Buffer.from('nodejs');
console.log(buf3[0]);
console.log(buf3[1]);
console.log(buf3[2]);
console.log(buf3[3]);
console.log(buf3[4]);
console.log(buf3[5]);
console.log('-----------------------------')
// 아스키코드로 해당 문자열 만들기
const nodejs=Buffer.alloc(6);
(nodejs[0])=110;
(nodejs[1])=111;
(nodejs[2])=100;
(nodejs[3])=101;
(nodejs[4])=106;
(nodejs[5])=115;
console.log(nodejs.toString());
</js >
110 111 100 101 106 115 ----------------------------- nodejs |
- 이어붙여보기
< js >
const newBuf=Buffer.concat([buf,buf2,nodejs]);
console.log(newBuf.toString());
</js >
HiHinodejs |
2. 스트림(Steam)
데이터의 흐름을 나타내며 데이터를 읽는 스트림, 데이터를 쓰는 스트림, 데이터를 읽고 쓰는 스트림 등이 있음
일반적으로 데이터를 효율적으로 처리하고 메모리 사용량을 최적화하기 위해 사용
< js >
const fs=require('fs');
// 메모리 사용량을 알아보기
// rss: 메모리 사용량을 알아와서 변수에 저장까지 해줌
const beforeMem = process.memoryUsage().rss;
console.log(beforeMem);
</js >
24383488 |
< js >
// 대충 lorem을 복붙한 커다란 html 파일(test.html)을 만듦
// fs.인코딩방법,(path,콜백함수(error,data))
fs.readFile('./test.html',(_, data) => {
fs.writeFile('./file.txt',data,()=>{
console.log('파일 저장 완료!')
});
const afterMem=process.memoryUsage().rss;
const diff = afterMem-beforeMem // 파일의 용량
const result = diff / 1024 / 1024; // 파일 단위 바꾸기
//바이트 단위를 MB 단위로 바꾸기
//const consumed=(afterMem-beforeMem)/(1024*1024);
console.log(diff); //1507328
console.log(`메모리 사용:${result}MB`); //메모리 사용:1.4375MB
});
</js >
1507328 메모리 사용:1.4375MB 파일 저장 완료! |
-
pipe()
: 스트림을 연결하고 데이터를 한 스트림에서 다른 스트림으로 자동으로 전달하는 메소드.
데이터를 효율적으로 처리, 복사하지 않고도 한 스트림에서 다른 스트림으로 데이터 전달 가능
< js >
const fs=require('fs');
const zlib=require('zlib');
const readStream = fs.createReadStream('./file.txt'); //파일 가져오기
const zlibStream = zlib.createGzip(); //압축 스트림생성
const writeStream = fs.createWriteStream('./file2.txt.gz'); //읽어오는 스트림생성
/ /뒤에 압축파일명도 붙여주기!
//읽어와서 압축해서 파일로 만들기
const piping = readStream.pipe(zlibStream).pipe(writeStream);
//이벤트 연결 모든 스트림의 결과가 다 끝났다면 '끝'출력
piping.on('finish',()=>{console.log('끝!');});
</js >
'Web > Node.js' 카테고리의 다른 글
08. Express 웹 프레임워크, route, morgan (0) | 2024.04.25 |
---|---|
07. http 모듈, 템플릿 엔진 (0) | 2024.04.24 |
05. Console, This, file (0) | 2024.04.23 |
04. JSON (0) | 2024.04.23 |
03. timeout, promise, async (0) | 2024.04.23 |