싱글톤 패턴이란? 싱글톤 패턴은 하나의 클래스에 오직 하나의 인스턴스만 가지는 패턴입니다. 싱글톤 패턴의 장점 비용이 적게든다. 싱글톤 패턴의 단점
팩토리 패턴
전략 패턴은 정책(policy) 패턴이라고도 하며, 객체의 행위를 바꾸고 싶은 경우 '직접' 수정하지 않고 전략이라고 부르는 '캡슐화한 알고리즘'을 컨텍스트 안에서 바꿔주면서 상호 교체가 가능하게 만드는 패턴입니다. 우리가 어떤 아이템을 살 때 LUNACard로 사는
옵저버(observer) 패턴이란? > 옵저버 패턴은 주체가 어떤 객체(subject)의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴입니다. 여기서 말하는 주체란 객체의 상태 변화를 보
프록시(proxy) 패턴이란? > 프록시(proxy) 패턴은 대상 객체(subject)에 접근하기 전 그 접근에 대한 흐름을 가로채 대상 객체 앞단의 인터페이스 역할을 하는 디자인 패턴입니다. 프록시 패턴을 통해 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증,
이터레이터(iterator) 패턴은 이터레이터(iterator)를 사용하여 컬렉션(collection - list, tuple, dictionary 등)의 요소들에 접근하는 디자인 패턴입니다. 이를 통해 여러가지 자료형의 구조와는 상관없이 이터레이터라는 하나의 인터페이
노출모듈(revealing module) 패턴이란? > 즉시 실행 함수를 통해 private, public 같은 접근 제어자를 만드는 패턴을 말합니다.
MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴입니다. 모델
MVP 패턴 MVP 패턴은 Model, View, Presenter 로 이루어진 디자인패턴으로 MVC 패턴에서 Controller가 Presenter로 교체된 패턴입니다. Presenter View에서 요청한 정보로 Model을 가공하여 View에 전달해 주는 부분입
선언형 프로그래밍(declarative programming) > 선언형 프로그래밍이란 '무엇을' 풀어내는가에 집중하는 패러다임이며, "프로그램은 함수로 이루어진 것이다." 라는 명제가 담겨잇는 패러다임이기도 합니다. 함수형 프로그래밍(functional progra
객체지향 프로그래밍(OOP, Object-Oriented Programming) > 객체지향 프로그래밍은 객체들의 집합으로 프로그램의 상호 작용을 표현하며 데이터를 객체로 취급하여 객체 내부에 선언된 메서드를 활용하는 방식을 말합니다. 객체지향 프로그래밍의 특징 추상
절차형 프로그래밍 절차적 프로그래밍이란 물이 위에서 아래로 흐르는 것처럼 순차적인 처리가 중요시 되며 프로그램 전체가 유기적으로 연결되도록 만드는 프로그래밍 기법입니다. 이는 컴퓨터의 작업 처리 방식과 유사하기 때문에 객체지향 언어를 사용하는 것에 비해 더 빨리 처리되
네트워크란? > 노드(node)와 링크(link)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미합니다. 여기서 노드란 서버, 라우터, 스위치 등 네트워크 장치를 의미하고 링크는 유선 또는 무선을 의미합니다. 처리량
네트워크 토폴로지(network topology)는 노드와 링크가 어떻게 배치되어 있는지에 대한 방식이자 연결 형태를 의미합니다. 트리(tree) 토폴로지는 계층형 토폴로지라고 하며 트리 형태로 배치한 네트워크 구성을 말합니다. 장점 : 노드의 추가, 삭제가 쉽다. 단
네트워크는 규모를 기반으로 분류할 수 있습니다. LAN은 근거리 통신망을 의미하며 같은 건물이나 캠퍼스 같은 좁은 공간에서 운영됩니다. 전송 속도가 빠르고 혼잡하지 않습니다. MAN은 대도시 지역 네트워크를 나타내며 도시같은 넓은 지역에서 운영됩니다. 전송 속도는 평균
네트워크 병목 현상의 주된 원인은 다음과 같습니다. 네트워크 대역폭네트워크 토폴로지서버 CPU, 메모리 사용량 비효율적인 네트워크 구성 이때는 네트워크 관련 테스트와 네트워크와 무관한 테스트를 통해 '네트워크로부터 발생한 문제점'인 것을 확인한 후 네트워크 성능 분석을
네트워크 프로토콜이란 다른 장치들끼리 데이터를 주고받기 위해 설정된 공통된 인터페이스를 말합니다. 이러한 프로토콜은 기업이나 개인이 발표해서 정하는 것이 아니라 IEEE 또는 IETF라는 표준화 단체가 이를 정합니다. 다양한 장비를 망에서 사용 가능표준화 설계 방식으로
계층 구조 TCP/IP 계층은 네 개의 계층을 가지고 있으며 OSI 7계층과 많이 비교합니다. 이 계층들은 특정 계층이 변경되었을 때 다른 계층이 영향 받지 않도록 설계되었습니다. 애플리케이션 계층 > 애플리케이션(application) 계층은 FTP, HTTP,
네트워크 기기의 처리 범위 네트워크 기기는 계층별로 처리 범위를 나눌 수 있습니다. 상위 계층을 처리하는 기기는 하위 계층을 처리할 수 있지만 그 반대는 불가합니다. 애플리케이션 계층 : L7 스위치 인터넷 계층 : L3 스위치 데이터 링크 계층 : L2 스위치,
ARP > ARP(Address Resolution Protocol)란 IP 주소로부터 MAC 주소를 구하는 IP와 MAC 주소의 다리 역할을 하는 프로토콜입니다. 위 그림과 같이 ARP를 통해 가상 주소인 IP 주소를 실제 주소인 MAC 주소로 변환합니다. 반대로
HTTP란? > HTTP(HyperText Transfer Protocol)란 텍스트 기반의 통신 규약으로 인터넷에서 데이터를 주고받을 수 있는 프로토콜이다. HTTP/1.0 HTTP/1.0은 한 연결당 하나의 요청을 처리하도록 설계되었는데 이는 RTT 증가를 불러
데이터베이스(DB, DataBase)는 일정한 규칙, 혹은 규약을 통해 구조화되어 저장되는 데이터의 모음입니다. 해당 데이터베이스를 제어, 관리하는 통합 시스템을 DBMS(DataBase Management System)라고 하며, 데이터베이스 안에 있는 데이터들은 특
트랜잭션 > 트랜잭션은 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위를 말합니다. 이 때 말하는 논리적 기능이란 질의어(SQL : SELECT, INSERT, DELETE, UPDATE)를 통해 데이터베이스에 접근하는 것을 의미합니다. 즉, 여러 개의
관계형 데이터베이스 > 관계형 데이터베이스(RDBMS)는 행과 열을 가지는 표 형식 데이터를 저장하는 형태의 데이터베이스를 가리킵니다. SQL이라는 언어를 써서 조작하며 MySQL, PostgreSQL, 오라클, SQL Server, MSSQL 등이 있습니다. MyS
인덱스란? 인덱스는 추가적인 쓰기 작업과 저장 공간을 활용하여 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조입니다. B-트리 인덱스는 보통 B-트리라는 자료구조로 이루어져 있습니다. 인덱스 만드는 방법 인덱스를 만드는 방법은 데이터베이스마다 다르며 My
조인(join)이란? > 조인(join)이란 하나의 테이블이 아닌 두 개 이상의 테이블을 묶어서 하나의 결과물을 만드는 것을 말합니다.
중첩 루프 조인(NLJ, Nested Loop Join)은 중첩 for문과 같은 원리로 조건에 맞는 조인을 사용하는 방법이며, 랜덤 접근에 대한 비용이 많이 증가하므로 대용량 테이블에서는 사용하지 않습니다. 또한 두 테이블 중 작은 테이블을 선행 테이블로 정하는 것이
시간 복잡도 공간 복잡도
선형 자료 구조란 요소가 일렬로 나열되어 있는 자료 구조를 말합니다. 연결 리스트 연결 리스트는 데이터를 감싼 노드를 포인터로 연결해서 공간적인 효율성을 극대화시킨 자료 구조입니다. 삽입과 삭제가 O(1), 탐색에는 O(n)이 걸립니다. 싱글(단순) 연결 리스트 :
비선형 자료 구조란 일렬로 나열하지 않고 자료 순서나 관계가 복잡한 구조를 말하며 일반적으로 트리나 그래프를 말합니다. 그래프는 정점과 간선으로 이루어진 자료 구조를 말합니다. 가중치는 간선과 정점 사이에 드는 비용을 뜻합니다. 위 그림에서 노드 A에서 노드 B까지의
운영체제(OS, Operating System)는 사용자가 컴퓨터를 쉽게 다루게 해주는 인터페이스입니다. 운영체제의 역할과 구조 운영체제의 역할 CPU 스케줄링과 프로세스 관리 : 메모리 관리 디스크 파일 관리 I/O 디바이스 관리 운영체제의 구조 컴퓨터의 요소
메모리 계층 메모리 계층은 레지스터, 캐시, 메모리, 저장장치로 구성되어 있습니다. 레지스터 : CPU 안에 있는 작은 메모리, 휘발성 캐시 : L1, L2 캐시를 지칭, 휘발성 주기억장치 : RAM을 가리킴, 휘발성 보조기억장치 : HDD, SSD를 일컬음, 비휘
메모리 관리 가상 메모리 가상 메모리(virtual memory)는 메모리 관리 기법의 하나로 컴퓨터가 실제로 이용 가능한 메모리 자원을 추상화하여 이를 사용하는 사용자들에게 매우 큰 메모리로 보이게 하는 것을 말합니다. 이때 가상적으로 주어진 주소를 가상 주소(l
프로세스(process)는 컴퓨터에서 실행되고 있는 프로그램을 말하며 CPU 스케줄링의 대상이 되는 작업(task)이라는 용어와 거의 같은 의미로 쓰입니다. 스레드는 프로세스 내 작업의 흐름을 지칭합니다. 프로그램이 메모리에 올라가면 프로세스가 되는 인스턴스화가 일어
멀티프로세싱 멀티프로세싱은 여러 개의 프로세스, 즉 멀티프로세스를 통해 동시에 두 가지 이상의 일을 수행할 수 있는 것을 말합니다. 이를 통해 하나 이상의 일을 병렬로 처리할 수 있으며 특정 프로세스의 메모리, 프로세스 중 일부에 문제가 발생되더라도 다른 프로세스를 이
CPU 스케줄러는 CPU 스케줄링 알고리즘에 따라 프로세스에서 해야 하는 일을 스레드 단위로 CPU에 할당합니다. 프로그램이 실행될 때는 CPU 스케줄링 알고리즘이 어떤 프로그램에 CPU 소유권을 줄 것인지 결정합니다. 이 알고리즘은 CPU 이용률은 높게, 주어진 시