목록전체 글 (163)
꿈꾸는 개발자의 블로그
자바스크립트 엔진은 하나의 메인 스레드로 구성된다. 콜 스택(Call stack)이라는 자료구조를 이용해서 명령문을 실행하며, 하나의 메인 스레드에서 하나의 콜 스택으로 모든 명령문을 순차적으로 실행하기 때문에 싱글스레드 언어라고 할 수 있다. 즉, 한 번에 하나의 일(작업)을 한다. JavaScript는 싱글스레드 언어이지만 실제로는 어떻게 멀티스레드처럼 사용할까? 비동기 함수 등의 문법으로 언어적 차원에서 병렬처리가 가능하다. 즉, Web API(setTimeout, XMLHttpRequest), Callback Queue, Event Loop로 인하여 멀티스레드처럼 보이는 것이다. 그렇다면 Event Loop는 무엇일까? 이벤트 루프(Event Loop)란? 자바스크립트 엔진이 아닌, 런타임(bro..
VSCode 터미널에 Git Bash 설정 settings.json 파일 열기 내용 수정하기 1. settings.json 파일 여는 2가지 방법 f1 혹은 ctrl+shift+p (명령팔레트) > 'settings' 입력 > Preferences: Open Settings (JSON) 클릭 File - Preperences - Settings 혹은 ctrl+, (설정) > 'terminal.integrated.shell' 입력 > 파일 클릭 2. 내용 수정하기 수정하여 추가된 코드 { "terminal.integrated.profiles.windows": { "GitBash": { "path": ["C:\\Git\\bin\\bash.exe"], }, }, "terminal.integrated.defau..
this this가 가리키는 것은 환경에 따라 변할 수 있지만(dynamic binding(동적 바인딩) : this가 환경에 따라 바뀌는 것), 객체의 메서드인 경우에는 해당 객체를 가리키게 된다. 이 때, 객체의 메서드가 화살표 함수 () => {}로 호출된다면 this는 함수가 생성된 환경을 가리키고, 일반함수 function() {}는 this가 함수를 호출한 환경을 가리키게 된다. 아래 코드를 보면 test1()는 실행될 때 새로운 컨텍스트를 생성하기 때문에 this가 global을 가리킨다. 반면, test2()는 함수 컨텍스트를 생성하며 this는 자신을 호출한 환경인 부모 o를 가리키게 되는 것이다. let o = { name: "An", test1: () => { console.log(t..
TCP 연결관리 연결을 성립하고 해제하는 과정을 말한다. 2 way handshake 2-way handshaking은 서버와 클라이언트가 서로의 상황을 모른다는 점에서 문제가 있다. 클라이언트가 서버에 연결 요청 서버가 클라이언트에 응답 3 way handshake TCP는 정확한 전송을 보장해야 한다. 따라서 통신하기에 앞서, 논리적인 접속을 성립하기 위해 3 way handshake 과정을 진행한다. 클라이언트가 서버에 연결 요청 : SYN 보냄 (SYN=1, Seq#=client initial seq#) 서버가 요청을 받고, 클라이언트에게 잘 받았다는 신호로 응답 : SYN 받고, SYNACK 보냄 클라이언트는 서버가 준 응답을 잘 받았음을 서버에 응답 : SYNACK 받고, ACK 보냄 4-wa..
OSI 7계층 통신이 일어나는 과정을 단계별로 알 수 있고, 특정한 곳에 이상이 생기면 그 단계만 수정할 수 있기 때문에 7계층으로 나눈다. Layer 1. 전기신호를 사용하여 비트 스트림을 전송 Layer 2. 물리적인 네트워크 사이에 데이터 전송을 담당, 전송 오류 감지 (MAC 주소로 통신) Layer 3. 주소(IP)를 정하고, 경로(Route) 선택, 패킷을 전달 (데이터를 목적지까지 경로를 찾아 전송) Layer 4. 데이터 전송, 속도 조절 등 Layer 5. TCP/IP 세션을 만들고 유지, 종료, 복구 기능 ex. OS Layer 6. 인코딩 및 디코딩 암호화, Layer 7에서 데이터를 이해할 수 있게 변환, 포맷 구분 Layer 7. 사용자(어플리케이션)를 위한 인터페이스 지원, 네트..