전체 글

전체 글

    [NodeJS] 싱글 스레드와 이벤트 루프

    NodeJS의 주요 특징은 다음과 같다. 싱글 스레드 Event Driven Non-blocking I/O NodeJS는 싱글 스레드 기반으로 작동하는데 어떻게 Non-blocking이 가능한 것일까? 1️⃣ NodeJS의 구조 NodeJS의 공식문서에 따라 NodeJS의 구조를 그림으로 나타내면 다음과 같다. NodeJS는 JS엔진(V8)과 함께 다양한 기능들이 함께 존재하는 것을 볼 수 있다. 여기서 싱글 스레드 기반의 NodeJS에서 비동기 처리가 가능하게 해주는 역할을 담당하는 것이 libuv이다. JS엔진(V8)은 구글에 의해 개발된 JS엔진으로 메모리 할당, 콜 스택 실행, GC 등의 기능을 수행한다. libuv는 비동기 I/O를 지원하는 C언어 기반의 라이브러리로 커널의 비동기 API로 할 ..

    [JavaScript] 싱글 스레드와 비동기

    function test1() { console.log(1); } function test2() { console.log(2); } function test3() { console.log(3); } function test4() { console.log(4); } test1() Promise.resolve().then(test2); setTimeout(test3, 0); test4() 위 코드의 실행 결과는 어떻게 될까? setTimeout에서 타이머가 0이니까 1, 2, 3, 4로 출력될까? 1️⃣ 싱글 스레드 JS는 한 번에 하나의 작업만 실행할 수 있다. 다시 말해 단 하나의 실행 컨텍스트 스택을 갖는다. 이러한 JS의 특징은 JS가 "싱글 스레드" 방식이라는 것이다. 한 함수의 처리에 시간이 오래..

    [네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 2주차 회고

    내용에 문제가 있는 경우 삭제 또는 수정하겠습니다. 네이버 부스트캠프 챌린지 2주차가 끝났다. 이번주는 저번주와 다르게 시간이 빠르게 흘러갔다. 이제는 부스트캠프 챌린지에 적응하고 있는 것 같다. ✨ 좋았던 점 (잘한 점) 이번주는 저번주와 다른 방향으로 미션을 수행했다. 저번주는 미션에 대한 압박감 때문에 과제 제출에 집중하고 과제를 완성하는 것에 급했다. 하지만, 이번주는 저번주와 다르게 "학습과 설계"에 초점을 맞췄다. 과제를 진행하기 앞서 어떤 개념이 필요하고 내가 모르는 부분이 무엇인지 스스로 판단한 뒤 개념을 먼저 학습했다. 개념을 학습하며 새롭게 알게된 점이나 미션 수행에 필요할 것으로 판단되는 개념들은 README에 함께 정리해두고 나중에 학습정리에도 작성했다. 개념을 학습하고 난 뒤 문제..

    [네이버 부스트캠프] 네이버 부스트캠프 웹・모바일 8기 챌린지 1주차 회고

    내용에 문제가 있는 경우 삭제 또는 수정 하겠습니다. 이번에 네이버 부스트캠프 웹・모바일 8기에 합격해서 열심히 부스트캠프 챌린지에 참여 중이다. 이번주가 어떻게 지나갔는지도 모를 만큼 바쁘고 정신 없는 일주일이 되었다. (5일 동안 하루도 빠짐없이 모니터만 14시간 씩 보게 되었고 인공눈물을 엄청 넣게 되었다...) 🤷‍♂️ 네이버 부스트캠프 부스트캠프 챌린지에서는 매일 미션을 수행하고 다음날 피어세션을 통해 서로의 미션 수행을 점검한다. 나는 1주차에서 피어세션을 어떻게 하면 잘 할 수 있을까 라는 생각으로 임하게 되었다. 내가 부스트캠프에 합격하고 세운 나만의 원칙은 "다음날에 지장이 없도록"이었다. 아무리 아쉬워도 새벽까지 한다면 다음날 반드시 지장이 있기 때문에, 더 좋은 피드백을 할 수 없기 ..