본문 바로가기

IT-백엔드

node.js basic module3-Buffer 모듈1

Buffer 모듈이란?

- Buffer 모듈은 기억공간을 동적으로 만들 때 사용합니다.

- JavaScript는 자료형이 따로 존재하지 않으며 브라우저에 의해 탄력적으로 관리됩니다.

- 만약 개발자가 원하는 사이즈의 메모리 공간을 사용하고자 한다면 Buffer 모듈을 이용해 동적으로 기억공간을 만들어 사용하면 됩니다.

- Buffer 모듈을 모듈 생성 없이 사용합니다.

- Buffer 모듈은 데이터를 1 바이트씩 분리해 저장합니다.

 

Buffer 모듈 내장 함수들

 

- alloc: 지정된 바이트만큼 기억공간이 만들어지고 0으로 초기화 된다.

- allocUnsafe: 지정된 바이트만큼 기억공간이 만들어지고 0으로 초기화 되지 않는다. alloc에 비해 속도가 빠르다.

- byteLength: 버퍼의 용량(바이트)을 반환한다.

- length: 버퍼의 용량(바이트)을 반환한다.

- from: 지정된 값을 관리하는 기억공간이 만들어진다.

- compare: 두 기억 공간을 비교한다.(같으면 0, 첫 번째 버퍼가 값이 크면 1 작으면 -1을 반환한다)

- concat: 배열안에 있는 모든 버퍼를 하나로 합쳐 새로운 버퍼를 만든다.

 

alloc

alloc을 통해서 10바이트짜리 기억 공간을 만든 것이다.

그리고 console.log을 통해서 buf1 안에 어떤 값들이 들어있는 확인을 할 수 있다.

그리고 값들이 1바이트씩 16진수로 들어가게 됩니다.

 

allocUnsafe

여러분이 기억 공간을 만들어 주신 다음에 바로 어떤 값으로 채워주겠다하면 alloc보다는 allocUnsafe를 쓰시는게 속도 부분에서 좀더 유리하게 됩니다.

위 alloc이랑 차이점을 보시면 alloc을 통해서 기억 공간을 만들어 줄 때는 0으로 초기화가 되므로 console.log을 통해서 화면에 찍어줄 때는 0만 출력 되는데 하지만, allocUnSafe을 통해서 출력을 해줄 때는 0으로 초기화를 안 시켜줘서 0 말고 다른 값으로 출력하게 됩니다.

 

 

byteLength

결과

정상적으로 버퍼의 용량을 반환하는 것을 볼 수 있습니다.

 

 

length

결과

이것도 마찬가지로, 정상적으로 버퍼의 용량을 반환하는 것을 볼 수 있습니다.

서로 결과를 보면, byteLength랑 length 둘다 똑같은 기능을 하는 것을 볼 수 있습니다.

 

 

 

from

결과

결과를 보면 지정된 값을 각각 관리하는 기억공간을 만드는 것을 볼 수 있습니다.

 

 

compare

결과

버퍼의 크기가 같으면 0, 첫 번째 버퍼가 값이 크면 1, 작으면 -1을 반환한다

 

concat

결과

배열안에 있는 모든 버퍼를 하나로 합쳐 새로운 버퍼를 만든 것을 볼 수 있습니다.