We will find a way, we always have.

-interstellar

Computer Science 47

[데이터베이스] 정규화 (이상현상, 함수적 종속성, 1NF, 2NF, 3NF, BCNF)

DB 정규화 (Normalization) 데이터 중복과 삽입, 수정, 이상 현상을 최소화하기 위해 일련의 정규형에 따라 관계형 DB를 구성하는 과정 제일 처음 초기 테이블이 있고 순차적으로 정규형을 만족시키도록 테이블 구조를 조정하는 과정 정규형(normal form, NF)이란 정규화 되기 위해 준수해야하는 규칙 1NF 부터 BCNF 까지는 함수적 종속성과 키(Key)만으로 정의되는 정규화 일반적으로 3NF까지 도달하면 정규화 성립 이상현상 (Anomaly) 이상현상이란 데이터 중복으로 인한 부작용을 말한다. 삽입 이상 (Insertion Anomaly): 데이터를 삽입하는데 불필요한 속성도 함께 추가해야하는 경우 기본키가 {Student_id, Course_id} 인 경우 Course를 수강하지 않는..

[네트워크] TCP와 UDP

TCP와 UDPTCP와 UDP는 OSI 7계층 중 전송 계층에서 사용되는 프로토콜로 포트 번호로 패킷을 전달하는 애플리케이션을 식별한다. TCPTCP(Transmission Control Protocol)는 데이터를 세그먼트(Segment) 단위로 쪼개어 신뢰성을 기반한 통신을 제공한다. TCP의 헤더TCP의 헤더 크기는 최저 20바이트로, 송수신지의 번호 뿐만 아니라 데이터 검증 및 순서 확인을 위한 정보등을 포함하고 있다. 송신지/수신지 포트 번호 UDP의 포트 번호와 마찬가지로 애플리케이션의 식별에 사용되는 숫자이다. 시퀀스 번호 시퀀스 번호는 TCP 세그먼트를 올바른 순서로 정렬하기 위해 사용되는 필드이다. 송신 측 단말은 애플리케이션에서 받은 데이터의 각 바이트에 대해 초기 시퀀스 번호(ISN,..

[OS] Introduction to Oprerating Systems

운영체제 Operating System 운영체제는 H/W 위에 설치되어 사용자 혹은 S/W 와 연결시켜주는 역할을 한다. OS의 역할 프로세서, 기억장치, I/O 등을 효율적으로 관리 사용자 및 OS 자신의 보호 프로세스, 파일, 메시지 관리 OS의 주 역할은 자원을 효율적으로 관리하는 것이다. 이때 효율적이란 형평성을 고려하고 성능을 최적화 한다는 의미이다. OS의 분류 동시 작업 가능 여부 단일 작업 (Single Tasking): 하나의 프로그램(프로세스)만 실행이 가능하고, 하나가 끝날 때까지 다른 작업은 wait 상태에 있다. ex) MS-DOS 다중 작업 (Multi Tasking): 동시에 두 개 이상의 프로그램(프로세스) 실행이 가능하고, 명령이 끝나기 전에 다른 명령 수행이 가능하다. e..

[네트워크] 네트워크 구성

네트워크 형태 (LAN, MAN, WAN) 네트워크는 거리와 크기에 따라 통신망을 구분한다. LAN(Local Area Network) (근거리 네트워크)은 범위가 건물 안이나 특정 지역인 네트워크로 유선 케이블, 적외선 링크, 무선 송수신기등을 이용하여 통신한다. 집이나 빌딩 안에 있는 사무실 등 지리적으로 제한된 곳에서 컴퓨터와 프린터, 스캐너 등을 연결할 수 있는 네트워크가 LAN이다. MAN(Metropolitan Area Network) 은 LAN보다는 더 넓은 범위의 네트워크이다. 도시와 도시를 연결해주고 ISP(인터넷 서비스 제공 업체) 역할을 수행할 수 있다. 한국의 ISP는 SK telecom, LG U+, KT 가 있다. WAN(World Area Network) (광역 네트워크)는 L..

[네트워크] What is Network?

네트워크란? 네트워크의 사전적 정의는 '모뎀이나 LAN, 케이블, 무선 매체 등 통신 설비를 갖춘 컴퓨터로 서로 연결하는 조직이나 체계, 통신망'이다. 즉 통신 설비로 두 대 이상의 컴퓨터를 서로 연결한 것을 말한다. 조금 추상화 해보면 네트워크란 노드(Node)와 링크(Link)가 서로 연결되어 있으며 서로 정보나 데이터를 공유하는 집합을 말하는 것이다. 여기서 노드는 서버, 라우터, 스위치 등과 같은 네트워크 장치이고, 이들을 연결시키는 것은 유무선 링크이다. 그럼 컴퓨터들은 어떻게 정보나 데이터를 주고 받을까? 컴퓨터간 데이터를 주고 받을 때는 데이터를 패킷(Packet)단위로 쪼개서 주고 받는다. 큰 그림을 퍼즐조각처럼 쪼개서 옮기는 것처럼 용량이 큰 데이터들을 패킷으로 분할하여 전송한다. 만약 ..

[알고리즘] 서로소 집합 알고리즘 (Union-Find)

서로소 집합 (Disjoint Sets) 서로소 집합은 공통 원소가 없는 두 집합을 의미한다. A = {1, 2} 와 B = {3, 4} 가 있다면 두 집합은 서로소 관계이다. 서로소 집합 자료구조란 서로소 부분들로 나누어진 원소들의 데이터를 처리하기 위한 자료구조다. 서로소인지 판별하려면 union과 find 연산이 필요하다. union연산은 두 집합을 하나의 집합으로 합치는 연산이고 find 연산은 어떤 원소가 주어졌을 때 이 원소가 속한 집합의 대표를 찾는 연산이다. 즉 find 를 통해 주어진 두 집합의 대표를 비교하여 서로 서로소인지 확인이 가능 한 것이다. 때문에 서로소 집합 자료구조는 유니온파인드(Union-Find)라고도 불리운다. 집합 {1, 2, 3, 4, 5, 6}이 있고 여기에 un..

[알고리즘] 플로이드 워셜

플로이드 워셜 알고리즘 (Floyd-Warshall Algorithm) 플로이드 워셜 알고리즘은 플로이드와 워셜이 개발한 알고리즘으로 그래프의 모든 노드에서 다른 모든 노드까지의 최단 경로를 모두 계산한다. 데이크스트라 알고리즘과 비슷하게 단계별로 거쳐 가는 노드를 기준으로 최소값을 갱신하지만, 데이크스트라 알고리즘은 매 단계마다 방문하지 않은 노드 중에 최단 거리를 갖는 노드를 찾아서 방문하였다면 이 플로이드 워셜 알고리즘은 아묻따 모든 노드를 탐색한다. 인접 행렬 형태의 2차원 테이블을 만들어 최단 거리 정보를 저장한다. 이전에 한번 한 연산은 다시 반복하지 않는다는 점에서 다이나믹 프로그래밍 유형에 속한다. 이 알고리즘은 각 단계마다 특정한 노드 k를 거쳐 가는 경우를 확인하여 갱신해준다. a에서 ..

[알고리즘] 데이크스트라 최단 경로 알고리즘

데이크스트라 알고리즘 (Dijkstra Algorithm) 최단 경로 알고리즘은 주어진 그래프에서 가장 빨리 도달할 수 있는 길을 찾는 알고리즘이다. 노드를 연결하는 간선에 비용 있어 간선의 갯수가 같다고 하여도 실제 이동시간은 다를 수 있기에 그런 것들을 잘 체크해주어야 한다. 데이크스트라 알고리즘은 음의 간선이 없을 때 정상적으로 작동한다. 음의 간선이란 0보다 작은 값을 가지는 간선을 의미하는데, 현실 세계에서 음의 간선이란 존재할 수 없다. 때문에 GPS 소프트웨어의 기본 알고리즘으로 채택되기도 한다. 데이크스트라 알고리즘의 동작 원리는 인접한 노드중에 가장 비용이 적은 노드를 선택하여 움직이기에 그리디 알고리즘으로 분류된다. 출발 노드를 설정한다. 최단 거리 테이블을 초기화 한다. 방문하지 않은..

[알고리즘] 다이나믹 프로그래밍

다이나믹 프로그래밍 (Dynamic Programming) 다이나믹 프로그램은 동적 계획법이라고도 불리운다. 다이나믹 프로그램의 기본 모토는 중복되는 연산을 줄이는 것이다. 한번 실행한 연산들은 DP 테이블(리스트)에 저장해두고 그 연산이 필요할 때마다, 연산을 하지 않고 그 DP 테이블에서 연산데이터를 호출하는 방식이다. 이런 기법은 메모제이션 기법이다. 다이나믹 프로그래밍의 대표적인 예제로 피보나치 수열이 있다. 피보나치 수열의 점화식은 a(n) = a(n-1) + a(n-2), a(1) = 1, a(2) = 1 이다. 즉 이전 데이터와 전전 데이터를 더하여 현재 데이터가 된다. 피보나치 수열을 재귀적으로 구현한 코드는 다음과 같다. # 피보나치 함수(Fibonacci Function)을 재귀함수로 ..