데이터베이스란? 데이터베이스는 데이터를 모아두는 창고이다. 더 정확히 말하면 데이터베이스는 공유 데이터(shared data), 통합 데이터(integrated data), 저장 데이터(stored data), 운영 데이터(operational data)의 집합이다. 공유 데이터 : 조직 내 여러 사용자들이 함께 사용하는 데이터 통합 데이터 : 조직 내 데이터가 여러 군데 흩어져있지 않고 한곳에 합쳐진 데이터 → 데이터 중복 최소화 저장 데이터 : 컴퓨터가 접근할 수 있는 매체에 저장된 데이터 운영 데이터 : 조직의 업무를 수행하는데 사용되어 데이터 데이터베이스의 특징 실시간 접근이 가능하다. 계속 변화한다. 동시 공유가 가능하다. 내용, 즉 값으로 참조한다. 데이터 유형 데이터베이스에 저장되는 데이터는..
전체 흐름 데이터 통신의 전체 흐름과 OSI 각 계층에서 무슨 일이 일어나는지 살펴보자. 이 글에서의 데이터통신은 표준 프로토콜인 OSI 7계층을 기반으로 하며 2계층에서는 Ethenet을 3계층에서는 IP를 4계층에서는 TCP를 사용한다고 생각한다. OSI 각 계층의 핵심 기능은 아래와 같다. 응용 계층(세션, 표현 계층 포함) : 응용 계층의 프로토콜 정의 전송 계층 : 종단 간 데이터 전송의 오류 제어, 흐름 제어 네트워크 계층 : 라우팅 데이터링크 계층 : 네트워크 장비 간의 오류 제어, 흐름 제어 물리 계층 : 비트 변환, 비트 전송 네트워크 구성도 아래의 네트워크가 있다. 총 세 개의 사설 네트워크 192.168.1.0/24, 192.168.10.0/24 ,172.168.0.0/16로 구성되어..
응용 계층 OSI 7계층인 응용 계층은 응용 프로그램 간의 프로토콜, 즉 응용 계층의 프로토콜을 정의하기 위한 계층이다. 응용 프로그램 간의 통신은 응용 계층의 프로토콜에 맞춰 이루어진다. 여기서의 응용 계층은 세션 계층과 표현 계층을 포함하는 것으로 생각하도록 하자. 응용 계층의 프로토콜 HTTP, HTTPS, FTP, SMTP, DNS 등의 프로토콜이 응용 계층의 프로토콜이다. HTTP, HTTP는 웹 서버와 웹 클라이언트 간의 프로토콜이며 FTP는 FTP 서버와 FTP 클라이언트 간의 프로토콜이다. 이렇듯 통신을 하는 응용 프로그램은 하나 이상의 응용 프로토콜을 정의하고 사용한다. 또한 OSI 1,2,3,4 계층은 보안 기능(암호화, 인증)을 제공하지 않기에 보통 응용 계층에서 보안 기능을 제공한다.
Binary Search 리스트의 탐색 범위를 반씩 줄여나가면서 타겟의 위치를 찾는 알고리즘. 탐색 시 O(log n) 성능을 보인다. 리스트가 먼저 정렬되어 있어야만 binary seach 알고리즘을 적용할 수 있으며 분할 정복 기법을 사용한다. 리스트에서 타겟의 인덱스를 빠르게 찾거나 해가 존재할 범위에서 해를 빠르게 찾는데 사용된다. Java의 binary search 자바의 Arrays, Collections 클래스는 binarySearch 정적 메서드를 제공한다. binarySearch 메서드의 리턴 값은 아래와 같다. 리스트에서 키를 찾았으면 키 인덱스 리턴 리스트에서 키를 찾지못하면 키가 삽입되어야할 인덱스 값인 insertion point 값을 구한 뒤 -(insertion point + ..
전송 계층 OSI 4계층인 전송 계층은 종단 간의 데이터 전송을 위한 계층이다. 네트워크 계층이 데이터를 최적의 경로로 다른 네트워크로 보내준다면 전송 계층은 종단 간의 데이터 전송이 원활하게 되도록 제어한다. 핵심 기능 : 종단 간 데이터 전송의 오류제어, 흐름제어오류 제어와 흐름 제어전송 계층의 핵심 기능은 종단 간 데이터 전송의 오류제어와 흐름제어이다. 오류제어와 흐름제어 덕분에 우리는 신뢰성 있는 통신을 할 수 있다. 그런데 2계층인 데이터링크 계층의 핵심 기능도 인접한 노드(네트워크 장비)간의 오류제어와 흐름제어다. 왜 비효율적으로 같은 작업을 반복할까? 예를 들어 아래의 상황이 발생하면 오류를 감지하고 오류 회복 기능이 수행되어야하지만 데이터링크 계층은 아래 상황 발생 시 어떠한 오류도 감지할..
DMZ (DeMilitarized Zone) 회사의 LAN(내부망, 사내망)은 보안을 위해 네트워크 내에 방화벽과 DMZ를 둔다. 방화벽은 미리 정의된 보안 규칙에 따라 패킷의 송수신을 결정하는 네트워크 보안 시스템이다. 그리고 DMZ는 외부망과 내부망 사이에 위치한 네트워크 영역(서브넷)이다. 외부, 내부에서 DMZ로 접근할 수 있다. 왜 DMZ를 둘까? 회사의 웹서버, 메일서버, DNS 서버등은 내부에서만 사용할 수도 있지만 외부에서의 접근이 필요할 수도 있다. 회사의 웹서버나 메일 서버를 외부에 공개할 때 필요하다. 하지만 내부망 전체를 외부에 공개해서는 안된다. 특히 파일 서버, DB 서버가 외부에 노출되어 서버의 제어권을 뺏기면 심각한 일이 일어난다. 그래서 외부에 공개할 서버는 DMZ에 두고 ..
투포인터, 슬라이딩 윈도우 리스트 완전 탐색 시 성능이 좋지 않을 때 적용할만한 알고리즘이다. 투포인터 : 리스트에서 두 개의 포인터를 조작하여 원하는 결과를 얻는 방식의 알고리즘. O(n)의 성능을 낸다. 슬라이딩 윈도우 : 고정 크기의 윈도우가 이동하면서 원하는 결과를 얻는 방식의 알고리즘. 처음 윈도우만 계산한 뒤 윈도우를 이동시킨다. 이동시킬때 이전 윈도우의 값을 조작한다. O(n)의 성능을 낸다. 투포인터 투포인터 관련 문제이다. https://www.acmicpc.net/problem/1806 1806번: 부분합 첫째 줄에 N (10 ≤ N < 100,000)과 S (0 < S ≤ 100,000,000)가 주어진다. 둘째 줄에는 수열이 주어진다. 수열의 각 원소는 공백으로 구분되어져 있으며, ..
사설망 (Private Network) 사설망은 사설 ip 주소를 사용하는 네트워크이다. 사설 ip 주소는 오직 사설망(내부망)에서만 사용이 가능하며 공인망(외부망)에서는 사용이 불가능하다. IPv4의 공인 ip 주소가 부족하니 오직 사설망에서만 사용가능한 주소인 사설 ip 주소를 사용하는 것이다. 공인 ip 주소가 전세계에서 유일해야한다면 사설 ip 주소는 사설망 안에서만 유일하면 된다. 사설 ip 주소 대역은 아래 표와 같이 정해져있다. NAT (Network Address Translation) IP 패킷의 ip 주소, 포트 번호를 변환시키면서 라우터를 통해 패킷을 주고받는 기술을 NAT이라 한다. 사설 ip 주소는 공인망에서 사용할수 없다. 그래서 NAT을 사용해 패킷이 공인망으로 나갈때 사설 i..