언어
-
[Node.js] 동기와 비동기, 블로킹과 논블로킹언어/Node.js 2020. 4. 1. 17:19
Blocking I/O VS NonBlocking I/O 호출되는 함수가 바로 리턴하느냐 마느냐의 차이 Blocking I/O 호출된 함수가 자신의 작업을 모두 마칠 때까지 호출한 함수에게 제어권을 넘겨주지 않고 대기하게 만든다. NonBlocking I/O 호출된 함수가 바로 리턴해서 호출한 함수에게 제어권을 넘겨주고, 호출한 함수가 다른 일을 할 수 있는 기회를 줄 수 있다. 동기(Synchronous) / 비동기(Asynchronous) Synchronous/Asynchronous는 호출되는 함수의 작업 완료 여부를 누가 신경쓰냐의 차이 동기(Sync) 호출하는 함수가 호출되는 함수의 작업 완료 후 리턴을 기다리거나, 또는 호출되는 함수로부터 바로 리턴 받더라도 작업 완료 여부를 호출하는 함수 스스..
-
[Node.js] 구조 및 동작 원리언어/Node.js 2020. 4. 1. 16:29
Node.js의 구조 및 동작 원리 Node API가 처리할 요청과 비동기 작업을 이벤트 큐에 넣는다. 단일 스레드가 이벤트 루프를 돌면서 우선순위가 높은 이벤트를 이벤트 큐에서 꺼내어 수행한다. (요청 완료 시간이 짧을수록 우선순위가 높다.) 이벤트에 블로킹 I/O가 있다면, 백그라운드에 있는 스레드 풀에서 스레드를 꺼내 이곳에서 별도로 처리된다. 그외는 꺼낸 이벤트(요청)을 실행한 후 콜백함수를 이벤트 큐에 추가한다. 이벤트 루프 or 그외 스레드에서 콜백함수가 실행되면 다음 동작 중 하나를 수행한다. 응답 보내기 다른 이벤트 스케줄링 종료 이 과정은 이벤트 큐에 있는 이벤트가 모두 처리될 때까지 진행된다.
-
[Node.js] 특징 및 장단점언어/Node.js 2020. 4. 1. 16:20
Node.js 특징 Node.js는 Single-Thread의 non-blocking I/O 이벤트 기반 비동식 방식으로 작동한다. JavsScript 엔진(V8 Engine)으로 빌드 된 JavaScript 런타임이다. 따라서, 사용자의 요청은 한 곳에서 받지만 작업은 실질적으로 멀티쓰레드로 운영하여 결과를 구현한다. 예를들어, 푸드코트의 경우 주문은 한 곳에서 받지만 음식은 각 입점된 식당에서 만든다. 음식이 완성된 순서대로 각 식당에서 호출벨을 통해 손님을 부르고 손님은 음식을 픽업하게 된다. 여기서, 계산을 담당하는 직업은 싱글스레드이고, 각 요리를 완성해 벨을 호출하는 식당들은 비동기 방식이다. 입력은 하나의 스레드에서 받지만 순서대로 처리 하지 않고 먼저 처리된 결과 값을 이벤트로 반환해주는 ..
-
[C++] 2차원 벡터 초기화언어/C++ 2020. 1. 28. 16:18
초간단한 벡터 초기화 비정형 데이터로 초기화하거나 프로그래머스 문제 컴파일 할 때 써먹자! // 1차원 vector 초기화 (C++ 11 이상 지원) vector arr( {100, 200} ); // n+1개를 true로 초기화 vector arr(n+1, true); // 2차원 vector 초기화 (C++ 11 이상 지원) vector travel({ vector( {500, 200, 200, 100} ), vector( {800, 370, 300, 120} ), vector( {700, 250, 300, 90} ) });