[Interview] Hoisting에 대해서 설명해주세요
·
Develop Diary/Interview
Hoisting : 끌어올리다● Javascript 엔진이 코드 실행 전에 변수와 함수의 선언을 해당 스코프의 최상단으로   끌어올리는 내부 동작입니다.  - 코드 내에서 실제 선언 위치와 관계없이, 변수와 함수 선언은 코드 실행 전에 이미 메모리에    등록되어 있기 때문에, 선언 이후나 이전에 참조가 가능해 보이는 효과를 줍니다.console.log(x); // undefinedvar x = 5;  - 위의 순서로 변수 x를 선언한다면, 호이스팅되지만, x에 할당한 5는 호이스팅되지 않기 때문에    첫 번째 console.log에서는 undefined로 출력됩니다. ● 함수선언문 Hoisiting의 경우var num; // 변수 선언이 최상단으로 호이스팅됨console.log(n..
[OS] Operating System
·
IT/OS
Operating System, 운영체제● Operating : 운영중인 + System : 체계 =  운영체제 ● 컴퓨터의 기동과 함께 커널(Kernel)이 주기억 장치에 올려져 컴퓨터를 작동시키고 운영을 관리하여   응용 프로그램이 효율적으로 실행될 수 있는 환경을 제공하는 기본 소프트웨어 ● 운영체제는 왜 있어야 할까?  - 운영체제의 주 목적은 컴퓨터의 하드웨어를 관리하는 것.  - 컴퓨터를 효율적으로 사용하기 위해 필요하다.  - 운영체제의 성능 = 컴퓨터의 성능  - 사용자의 편의를 제공하기 위해 존재한다.     └ 만약, 운영체제가 없다면 지금 사용하는 컴퓨터가 있을 수 있었을까? 즉, 운영체제는 컴퓨터의 성능(Performance)를 높이고 사용자에게 편의성(Convenience)를 제공..
[Server] 게임 서버 아키텍처 종류
·
IT/Server
Host, Client, Server● Host : 네트워크 내에서 다른 장치나 사용자에게 자원(Resource)이나 서비스를             제공하는 컴퓨터 시스템이나 장치             예) 스팀 멀티 게임할 때, '내가 방 팔게!' = Host ● Client : 서비스를 이용하는 사용자 혹은 사용자의 단말기               → Server에 요청(Request)를 하는 것             예) 게임 방 좀 만들어줘, 참가할게! ● Server : 네트워크를 통해 Client로부터 요청받은 데이터를 찾아서 넘겨주는 시스템 or 장치              → Client가 요청한 데이터를 보내주는(Response) 것             예) Server야 Host가 방..
[OS] Virtual Memory
·
IT/Hardware
가상 메모리 (Virtual Memory)● 컴퓨터 시스템에서 물리적 메모리(RAM)의 크기보다 더 큰 메모리 공간을 사용할 수 있게 하는   메모리 관리 기법 ● 물리적으로 용량을 늘리면 되는데 왜 필요할까?  - 초기 컴퓨터 시스템에서는 프로그램이 RAM에 직접 적재되어야 했다.  - 최근에야 RAM에 용량이 높아졌고 비용적인 부분도 효율적으로 변했지만, 초기에는 그렇지 못함.  - 메모리 용량이 부족할 경우 프로그램 실행이 제한되거나, 여러 프로그램을 동시에 실행하지 못함.→ 물리적 메모리보다 큰 주소 공간을 제공하고, 여러 프로그램을 동시 실행할 수 있도록 만들어준다. ● 작동 원리  - 실제 물리적 메모리 주소 대신 가상 주소(Virtual Address)를 사용하여 데이터를 읽고 쓴다.  - ..
[Hardware] Memory
·
IT/Hardware
Memory, 메모리● 컴퓨터에서 데이터를 저장하고 처리하는 데 필수적인 장치, 기억장치  ● 메모리가 왜 있어야 할까?  - 프로그램 실행 중 필요한 명령어와 데이터를 저장하고,      CPU가 이를 빠르게 접근해야 할 곳이 필요하기 때문에 ● 주소 공간 (Address Space)  - 실행 중인 프로그램이 사용할 수 있는 모든 메모리 상태  - Code, Data, Stack, Heap   ○ 물리 주소 (Physical Address) :     - 실제 메모리(RAM 등) 하드웨어 상의 주소    - MMU(Memory Management Unit)을 통해 물리 주소로 변환    - Base register : 프로그램의 가장 작은 물리 주소(프로그램의 첫 물리 주소)를 저장한다.    - 논..
[OS] Thread & Process - 2
·
IT/OS
프로세스 & 스레드의 생명 주기● 각각의 생명 주기를 가지고 있으며, 운영체제(OS)는 이러한 생명 주기를 관리하고, 프로세스와 스레드를   조정하여 시스템 자원을 효율적으로 사용 ● 프로세스 스케줄링 (Process Scheduling)  - 운영체제에서 CPU를 사용할 수 있는 프로세스를 선택하고, CPU를 할당하는 작업  - 프로세스의 우선순위, 작업량 등을 고려하여 효율적으로 배치   → 운영체제가 CPU를 효율적으로 사용하며 시스템 전반적인 성능을 향상    ○ 스케줄링(Scheduling)    - 운영채제의 특징과 시스템 요구사항에 따라 알고리즘이 다름    - 알고리즘 종류 :        FCFS(First-Come, First-Served)       SJF(Shortest-Job-Fi..
[OS] Thread & Process - 1
·
IT/OS
Thread (스레드)● 프로세스(process) 내에서 실행되는 실질적인 작업 단위● 모든 프로세스는 최소 하나의 스레드(메인 스레드)를 가지고 있다. ● 프로세스의 자원을 이용하여 실제 작업을 수행● 같은 프로세스 내의 다른 스레드들과 자원을 공유프로세스(process)란?- 프로그램을 실행 시켜 작동하지 않던 것을 작동하도록 변화시키는 것- ex) 바탕화면에 Chrome.exe를 더블 클릭 → process! - 컴퓨터가 작업 중인 프로그램 ● 프로그램(Program)과 프로세스(Process)의 차이프로그램프로세스- 어떤 작업을 하기 위해 실행할 수 있는 파일- 실행되어 작업중인 컴퓨터 프로그램- 파일이 저장 장치에 있지만 메모리에는 올라가 있지 않은정적인(Static) 상태- 메모리에 적재되고 ..
[JavaScript] Infinity
·
Programming Language/Javascript 공부기록
코드 문제를 풀다가 Infinity에 대해 궁금한 점Q1. Infinity는 무한대를 나타내는 숫자 값으로 알고 있는데, 이를 사용했을 때 실행 속도면에서       더 느리게 나오는 게 아닌가? ● Infinity에 대한 설명 :   - 전역 객체의 속성이며 전역 범위의 변수이다.  - 다른 어떤 수보다 더 크다.  - 숫자 데이터 타입으로 분류된다. ● 언제 사용하는가?  ○ 최솟값 및 최댓값 계산 :     - 'Infinity' or '-Infinity'를 초기값으로 설정하여 배열이나 데이터 구조에서 가장 큰 값 또는 작은 값을        효율적으로 찾을 수 있다.   ○ 조건 비교 :     - 특정 조건에서 임의의 큰 숫자를 대체할 수 있다.       → Math.min(), Math.ma..
[Network] Load Balancing
·
IT/Network
로드 밸런싱 (Load Balancing) ● 로드밸런서(Load Balancer)는 서버에 가해지는 부하(=Load)를 분산(=Balancing) 해주는 장치 또는 기술을 통칭 ● 클라이언트와 서버풀(Server Pool, 분산 네트워크를 구성하는 서버들의 그룹) 사이에 위치 ● 한 대의 서버로 부하가 집중되지 않도록 트래픽을 관리해 각각의 서버가 최적의 상태를 유지 Q1. 로드밸런싱은 모든 경우에 항상 필요한가? - 로드밸런싱 = 여러 대의 서버를 두고 서비스를 제공하는 분산 처리 시스템에서 필요한 기술 - 서비스 제공 초기 단계에서는 적은 수의 클라이언트만 접속하기에 적은 서버로 응답이 가능 - 클라이언트 접속 수가 많아지면 적은 서버만으로는 정상적인 서비스가 불가능한 시점에 사용 ● Scale-u..
[Server] TCP Server - Buffer
·
IT/Server
JavaScript에서 Buffer란?● Node.js에서 이진 데이터를 다루기 위한 특별한 객체 ● JavaScript 문자열 = UTF-16 형식으로 인코딩 되어 있어 이진 데이터를 효율적 처리가 어렵다.더보기UTF-16?- 유니코드 문자를 16bit(2byte) 단위로 인코딩하는 방식- 대부분의 일반적인 문자는 하나의 16bit 단위로 표현되지만, 일부 문자(보조 평면의 문자 등)는  두 개의 16비트 단위(서로게이트 페어)로 표현된다.● Buffer 객체(object)는 원시적인 이진 데이터를 저장하고 조작하는데 최적화되어 있다.  그래서 Buffer 객체를 쓰면 좋은 점?● 이진 데이터를 다루기 위해 고안된 객체이기에 UTF-16의 비효율성을 해결  ○ 고정 길이 : 고정된 크기의 바이트 배열이..