디자인 패턴
프로그래밍 패러다임 프로그래머에게 프로그래밍의 관점을 갖게 해주는 역할을 하는 개발 방법론 종류 선언형 함수형 명령형 객체지향형 절차지향형 선언형 프로그래밍 선언형 프로그래밍 (declarative programming) '무엇을' 풀어내는가에 집중하는 패러다임 "프로그램은 함수로 이루어진 것이다." 함수형 프로그래밍 (functional progr...
처리량과 지연 시간 좋은 네트워크: 많은 처리량을 처리할 수 있으며 지연 시간이 짧고 장애 빈도가 적으며 좋은 보안을 갖춘 네트워크 처리량 (throughput) 링크 내에서 성공적으로 전달된 데이터의 양 얼만큼의 트래픽을 처리했는지를 의미 단위: bps(bits per second) 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 ...
계층 구조 인터넷 프로토콜 스위트: 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 프로토콜의 집합 -> TCP/IP 4계층 모델, OSI 7계층 모델 특정 계층이 변경되었을 때 다른 계층이 영향을 받지 않도록 설계됨 TCP/IP 4계층을 대표하는 스택 애플리케이션 계층 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층 응용 프로...
네트워크 기기의 처리 범위 애플리케이션 계층: L7 스위치 인터넷 계층: 라우터, L3 스위치 데이터 링크 계층: L2 스위치, 브리지 물리 계층: NIC, 리피터, AP 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만, 그 반대는 불가 애플리케이션 계층을 처리하는 기기 L7 스위치 스위치: 여러 장비를 연결하고 데이터 통신을 중재하며 목적지...
ARP 컴퓨터와 컴퓨터 간의 통신은 IP 주소에서 ARP를 통해 MAC 주소를 찾아 MAC 주소를 기반으로 이루어짐 ARP(Address Resolution Protocol): IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환 RARP: 실제 주소인 MAC 주소...
HTTP: 전송 계층 위에 있는 애플리케이션 계층으로서 웹 서비스 통신에 사용됨 HTTP/1.0 한 연결당 하나의 요청을 처리하도록 설계됨 단점: RTT 증가 RTT 증가 RTT: 패킷 왕복 시간. 패킷이 목적지에 도달하고 나서 다시 출발지로 돌아오기까지 걸리는 시간 서버로부터 파일을 가져올 때마다 TCP의 3-웨이 핸드셰이크를 계속해서 열어야 하므로...
운영체제: 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스 한정된 메모리나 시스템 자원을 효율적으로 분배 하드웨어와 소프트웨어를 관리 cf) 펌웨어: 운영체제와 유사하지만 소프트웨어를 추가로 설치할 수 없는 것 컴퓨터: CPU, 메모리 등으로 이루어짐 운영체제의 역할과 구조 운영체제의 역할 CPU 스케줄링과 프로세스 관리: CPU 소유권을 어떤 프로세스...
메모리 계층 레지스터, 캐시, 메모리, 저장장치로 구성 레지스터: CPU 안에 있는 작은 메모리. 휘발성, 가장 빠른 속도, 가장 적은 기억 용량 캐시: L1, L2 캐시를 지칭. 휘발성, 빠른 속도, 적은 기억 용량 (L3 캐시도 있음) 주기억장치: RAM 지칭. 휘발성, 보통 속도, 보통 기억 용량 보조기억장치: HDD, SSD 지칭. 비휘발성, 낮은...
프로세스 vs 스레드 프로세스 컴퓨터에서 실행되고 있는 프로그램 CPU 스케줄링의 대상이 되는 작업(task) 프로그램이 메모리에 올라가 인스턴스화된 것 스레드 프로세스 내 작업의 흐름 프로그램이 메모리에 올라가면 프로세스가 되고, 운영체제의 CPU 스케줄러에 따라 CPU가 프로세스를 실행함 컴파일 과정 C 언어 기반 프로그램 기준: 컴파일러가 컴파일...
프로세스가 스스로 CPU 소유권을 포기하는 방식으로, 강제로 프로세스를 중지하지 않아 컨텍스트 스위칭으로 인한 부하가 적음First Come, First Served: 가장 먼저 온 것을 가장 먼저 처리길게 수행되는 프로세스 때문에 준비 큐에서 오래 기다리는 현상이 발
데이터베이스: 일정한 규칙을 통해 구조화되어 저장되는 데이터의 모음DBMS: 데이터베이스를 제어 및 관리하는 통합 시스템여러 개의 속성을 지닌 명사약한 엔터티: 혼자서는 존재하지 못하고, 다른 엔터티의 존재 여부에 종속적강한 엔터티: 약한 엔터티가 종속되는 엔터티데이터
ERD(Entity Relationship Diagram): 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계를 정의함ERD는 시스템의 요구 사항을 기반으로 작성되며, 이 ERD를 기반으로 데이터베이스를 구축함데이터베이스를 구축한 후 디버깅
트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위 여러 개의 쿼리를 하나로 묶는 단위 특징: ACID - 원자성, 일관성, 독립성, 지속성 원자성 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았음을 보장함 커밋과 롤백을 통해 데이터의 무결성 보장 커밋 여러 쿼리가 성공적으로 처리되었다고 확정하는 명령어 트랜잭션 단위로 수행됨...
관계형 데이터베이스 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스 SQL을 사용해서 조작함 ex) MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등 MySQL 대부분의 운영체제와 호환되며, 현재 가장 많이 사용하는 데이터베이스 장점 스토리지 엔진이 모듈식 아키텍처로 구성되어 쉽게 스토리지 엔진을 바꿀 수 있...
인덱스의 필요성 데이터를 빠르게 찾을 수 있게 해줌 인덱스는 보통 B-트리라는 자료 구조로 이루어져 있음 B-트리 루트 노드, 리프 노드, 그 사이에 있는 브랜치 노드로 나뉨 트리 탐색은 정렬된 값을 기반으로 맨 위 루트 노드부터, 브랜치 노드를 거쳐, 리프 노드까지 내려오며 이루어짐 마지막 리프 노드에 도달해서 57이 가리키는 데이터 포인터를 통해 ...
조인 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것 MongoDB는 조인 연산(lookup)에 대해 관계형 데이터베이스보다 성능이 떨어지므로 여러 테이블을 조인하는 작업이 많을 경우 관계형 데이터베이스가 적합함 내부 조인 inner join 두 테이블 간의 교집합 왼쪽 테이블과 오른쪽 테이블의 두 행이 모두 일치하는 행...
중첩 루프 조인 중첩 For문과 같은 원리로 조건에 맞는 조인을 하는 방법 랜덤 접근에 대한 비용이 많이 증가하므로 대용량의 테이블에서는 사용하지 않음 예를 들어 "t1, t2 테이블을 조인한다" 라고 했을 때, 첫 번째 테이블에서 행을 한 번에 하나씩 읽고, 그다음 테이블에서도 행을 하나씩 읽어 조건에 맞는 레코드를 찾아 결과값을 반환함 정렬 병합 조...