전체 글
Key, Value 로 데이터를 저장하는 자료구조 빠르게 데이터를 검색할 수 있는 자료구조이다. 빠른 검색속도를 제공하는 이유는 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 때문이다. 해시 테이블의 평균 시간복잡도는 O(1) 해시 테이블은 각각의 Key 값에 해시 함수를 적용해 배열의 고유한 index를 생성하고, 이 index를 활용하여 값을 저장하거나 검색하게 된다. 자바스크립트 HashTable 구현하기 class HashTable { table = new Array(16); constructor() {} // key와 value를 받아 해시 테이블에 저장한다. setItem = (key, value) => { table[key] = value; }; // key를 통해 value를 가져온다..
Key와 Value가 한 쌍으로 이루어진 자료구조 리스트나 배열처럼 순차적으로 해당 요소 값을 구하지 않고 Key를 통하여 Value를 얻는다. Value 는 중복될 수 있지만, Key는 고유한 값을 가져야한다. Map은 저장 순서를 유지할 필요가 없고, Key를 통하여 Value를 얻어내기 때문에 Key는 중복을 허용하지 않는다. 자바스크립트 Map 객체 생성 const map1 = new Map(); // 방법 1. 비어있는 Map 객체 생성 const mockData = [['key1','value1'],['key2','value2'],['key3','value3']]; const map2 = new Map(mockData); // 방법 2. Map 객체에 초기값 할당하여 생성 console.log..
트랜잭션이란 데이터베이스의 상태를 변화시키기 위해 수행하는 작업의 논리적 단위 데이터베이스의 상태를 변화시킨다는 말은 SELECT, INSERT, UPDATE, DELETE 등과 같은 쿼리를 사용하는 행동을 의미 의미 1. 트랜잭션은 데이터베이스에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위 3. 하나의 트랜잭션은 Commit 되거나 Rollback 된다. 특징 트랜잭션의 4 가지 특징 원자성( Atomicity ), 일관성( Consitency ), 독립성( Isolation ), 지속성( Durability ) => ACID 1. 원자성 (Atomicity) 트랜잭션의 작업이 부분적으로 실행..
프로세스 제어 블록(PCB)은 특정한 프로세스를 관리할 필요가 있는 정보(메타데이터)를 포함하는 운영체제 커널의 자료 구조 운영체제가 프로세스 스케줄링을 위해 프로세스에 관한 모든 정보를 가지고 있는 데이터베이스를 의미 프로그램이 실행되어 메모리에 적대되었을 때 프로세스가 생기고, 프로세스 주소 공간에 코드, 데이터, 스택 공간이 생선된다. 프로세스 고유 ID PID -> 프로세스의 고유 번호 프로세스 스케줄링 상태 생성(new), 준비(ready), 실행(running), 대기(waiting), 종료(terminated)를 저장 프로세스 우선순위 스케줄링 및 프로세스 우선 순위 계정 정보 CPU 사용 시간, 실제 사용된 시간 프로그램 카운터 프로세스를 위해 실행될 다음 명령어의 주소를 포함하는 카운터 ..
프로세스란? 컴퓨터에서 연속적으로 실행되고 있는 프로그램 메모리에 올라와 실행되고 있는 프로그램의 인스턴스 (독립적인 개체) 운영체제로부터 시스템 자원을 할당받는 작업의 단위 프로세스 내부에는 최소 하나의 스레드를 가지고 있고, 스레드 단위로 스케줄링한다. 프로그램을 실행하면, 실행을 위해서 메모리 할당이 이루어지고, 할당된 메모리 공간으로 바이너리 코드가 올라가는데 이 순간 부터 프로세스라고 부른다. 스레드란? 프로세스 내에서 실행되는 여러 흐름의 단위 프로세스의 특정한 수행 경로 프로세스에서 할당 받은 자원을 이용하는 실행 흐름의 단위 스레드는 OS의 스케줄러에 의해 독립적으로 관리될 수 있는 프로그래밍된 명령어의 가장 작은 시퀀스, 하나의 프로세스는 하나 이상의 스레드를 갖는다. 스레드가 독립적으로..
프로세스 컴파일 과정 컴파일(Compile) 이란? 인간이 이해할 수 있는 언어로 작성된 "소스 코드"를 CPU가 이해할 수 있는 언어로 번역(변환)하는 작업을 의미한다. (컴퓨터는 0, 1로 이루어진 기계어만 이해할 수 있기 때문) 과정 전처리 - 컴파일 과정 - 어셈블리 과정 - 링킹 과정 으로 4 가지 단계로 나누어진다. 전처리 (Pre-Processing) 과정 소스 코드 파일을 전처리된 소스 파일로 변환하는 과정 이 과정에서 아래 세 가지 작업 수행 1. 주석 제거 👉 소스 코드에서 주석을 전부 제거 (주석은 사람이 알아보기 위해 작성한 것이므로 컴퓨터한테는 필요없다.) 2. 헤더 파일 삽입 👉 헤더 파일을 찾아 헤더 파일에 있는 모든 내용을 복사해서 소스 코드에 삽입한다. 헤더 파일에 선언된 ..
IP 주소를 통해 통신하는 과정 여러 서브 네트워크 속에서 라우터에 있는 라우팅 테이블의 IP를 기반으로 패킷을 전달하고 또 전달핸가며 라우팅을 수행하며 최종 목적까지 패킷을 전달한다. 통신 장치에 있는 라우팅 테이블의 IP를 통해 시작 주소부터 시작하여 다음 IP로 계속 이동하는 라우팅 과정을 거쳐 패킷이 최종 목적까지 도달하는 통신을 의미 한 단계씩 건너뛰는 것을 홈바이홉 라우팅이라고 부르고, 이 때 인접한 라우터 Next Hop이라 부른다. 넥스트 홉 지정 방식 다음 라우터의 IP를 지정하는 방법 (Next홉 IP 주소) 라우터에서 나가는 인터페이스 지정 라우터에서 나가는 인터페이스와 다름 라우터의 IP를 동시에 지정하는 방법 라우터 동작 호스트로부터 패킷을 수신 수신처 IP 주소로부터 수신처 네트..
서버 / 클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜 (애플리케이션 계층으로 웹 서비스 통신에 사용된다.) 인터넷에서 하이퍼 텍스트를 교환하기 위한 통신 규약으로 80 번 포트를 사용하고 있다. HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP 구조 HTTP는 애플리케이션 계층으로 TCP / IP 위에서 동작한다. 상태를 가지고 있지 않는 Stateless 프로토콜이며, Method, Path, Version, Headers, Body 등으로 구성된다. 💡 Stateless 상태를 가지지 않는 의미, HTTP로 클라이언트와 서버가 통신을 주고 받는 과정에서 HTTP가 클라이언트나 서버의 상태를 확인하지 않는다. HTTP / 1...
애플리케이션 계층을 처리하는 기기 스위치 컴퓨터 네트워크에서 데이터를 전송하고 연결하는 장비 OSI 모델의 2계층인 데이터 링크 계층에서 동작하며, 주로 이더넷(Ethernet) 네트워크에서 사용된다. 스위치는 여러 개의 네트워크 장치 (컴퓨터, 서버, 프린터 등)을 연결하고 이들 간에 데이터 패킷을 전송하며 데이터의 흐름을 제어한다. (주로 MAC 주소를 사용해 연결된 장치들을 식별하고 데이터를 전달한다.) 로드밸런서 (Load Balancer) 네트워크나 서버에 분산된 작업 부하를 공평하게 분배하는 장치 여러 대의 서버나 네트워크 장치에 들어오는 요청을 받아 해당 요청을 처리할 수 있는 서버로 전달하는 역할을 한다. 로드밸런서는 주로 웹 서버, 애플리케이션 서버, 데이터베이스 서버 등과 같은 서버 그..