본문 바로가기
728x90

Develop/Javascript24

[Node.js] 싱글스레드 싱글 스레드란? 스레드가 하나라는 것을 의미합니다. ⇒ 우리가 작성한 자바스크립트 코드가 동시에 실행될 수 없는 이유가 된다. 스레드를 이해하기 위한 프로세스와 스레드의 차이 프로세스: 운영체제에서 할당하는 작업 단위(노드나 웹 브라우저 같은 프로그램). 프로세스 간에는 메모리 등의 자원을 공유하지 않는다. 스레드: 프로세스 내에서 실행되는 흐름의 단위. 프로세스는 스레드를 여러 개 생성해 여러 작업을 동시에 처리할 수 있다. 스레드들은 부모 프로세스의 자원을 공유한다. 같은 주소의 메모리에 접근 가능하므로 데이터를 공유할 수 있습니다. “노드는 싱글 스레드 입니다?!” 하지만 엄밀히 말하면 싱글 스레드로 동작하지는 않습니다. 노드를 실행하면 먼저 프로세스가 하나 생성됩니다. 그리고 그 프로세스에서도 스.. 2022. 12. 23.
[Node.js] 논블로킹 I/O 이벤트 루프(https://bellsilver7.tistory.com/315)를 잘 활용하면 오래 걸리는 작업을 효율적으로 처리할 수 있습니다. 우리가 작성한 자바스크립트 코드는 동시에 실행될 수 없습니다. 하지만 파일 시스템 접근(파일 읽기, 쓰기, 생성 등)이나 네트워크 요청 같은 I/O(입출력) 작업은 동시에 처리될 수 있습니다. 이런 작업은 논블로킹 방식으로 처리하는 방법을 제공합니다. 논블로킹이란? 이전 작업이 완료될 때까지 대기하지 않고 실행함을 뜻합니다. 블로킹과 논블로킹 const fs = require('fs'); const data = fs.readFileSync('/file.md'); // 파일을 읽을 때까지 여기서 블로킹됩니다. console.log(data); moreWork();.. 2022. 12. 22.
[Node.js] 이벤트 기반 "이벤트 기반이란? 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 말합니다." 이벤트 리스너에는 콜백(callback) 함수를 등록합니다. 그리고 시스템에서 이벤트가 발생할 때 콜백 함수를 호출하게 됩니다. 이벤트가 완료되면 다음 이벤트가 발생할 때까지 대기하게 됩니다. 여러 이벤트가 동시에 발생하면 어떤 순서로 콜백 함수를 호출할지 이벤트 루프에서 결정합니다. function first() { second(); console.log('첫 번째'); } function second() { third(); console.log('두 번째'); } function third() { console.log('세 번째'); } first(); 위 예제 코드를 실행하면 아래와 같이 함수들이 호출 스택에 .. 2022. 12. 20.
[node.js] Chat with WebSocket WebSocket 채팅 만들기 웹 소켓은 사용자의 브라우저와 서버 사이의 인터액티브 통신 세션을 설정할 수 있게 하는 고급 기술입니다. 개발자는 웹 소켓 API를 통해 서버로 메시지를 보내고 서버의 응답을 위해 서버를 폴링하지 않고도 이벤트 중심 응답을 받는 것이 가능합니다. 참고 환경구축 웹소켓을 express와 함께 사용할 것이기에 아래와 같이 설치합니다. npm i express ws 채팅 만들기 웹소켓 서버 만들기 // server.js import WebSocket from "ws"; import express from "express"; const app = express(); const server = http.createServer(app); // 웹서버 생성 const wss = new .. 2022. 7. 26.
자바스크립트 자료형 #2 객체와 배열 자바스크립트 자료형 #1 기본 자료형 String (문자열) : 보통의 텍스트를 말하며 ""(쌍따옴표) 사이에 입력합니다. const str1 = "Hello"; const str2 = "12345"; Boolean(true/false) : 논리 자료형이라고도 하며, 참과 거짓을 나타내는 데 쓰입니다.. bellsilver7.tistory.com Array(배열) : [] 안에 담는다. const fruits = ["banana", "apple", "orange", "strawberry"]; console.log(fruits[1]); 결과 : apple 여러가지 자료형을 담을 수 있을까요? 아래와 같이 배열에는 서로 다른 자료형을 담아서 사용할 수도 있습니다. const fruits = ["banana".. 2020. 3. 17.
자바스크립트 자료형 #1 기본 자료형 String (문자열) : 보통의 텍스트를 말하며 ""(쌍따옴표) 사이에 입력합니다. const str1 = "Hello"; const str2 = "12345"; Boolean(true/false) : 논리 자료형이라고도 하며, 참과 거짓을 나타내는 데 쓰입니다. const bool1 = true; const bool2 = false; Number(숫자) const num = 314; Float(소숫점) const flot = 3.14; 자바스크립트 자료형 #2 객체와 배열 Array(배열) : [] 안에 담는다. const fruits = ["banana", "apple", "orange", "strawberry"]; console.log(fruits[1]); 결과 : apple 여러가지 자료형을 담.. 2020. 3. 17.
728x90