Computer Science

Computer Science/Algorithm

[Algorithm] 시간복잡도와 공간복잡도

시간 복잡도란? 시간 복잡도(Time Complexity)는 알고리즘의 절대적인 실행 시간을 나타내는 것이 아닌 알고리즘을 수행하는 데 연산들이 몇 번 이루어지는 지를 숫자로 표기한다. 알고리즘의 성능 평가 Case 최선의 경우 (Best Case) 최적의 입력을 한 상태에서, 작업을 완료하는 데 가장 연산 횟수가 적은 경우 최악의 경우 (Worst Case) 최악의 입력을 한 상태에서, 작업을 완료하는 데 가장 연산 횟수가 많은 경우 평균의 경우 (Average Case) 여러 경우의 수를 고려하여, 총 연산 횟수를 계산하고 시행 횟수로 나눈 경우 알고리즘 분석 시 평균의 경우와 최악의 경우가 가장 많이 활용되며, 알고리즘이 복잡해질수록 평균을 구하기 어려워져 최악의 경우로 알고리즘 성능을 파악한다. ..

Computer Science/DataBase

[DataBase] 정규화(1NF, 2NF, 3NF, BCNF)

정규화(Normalization) 정규화란 이상현상이 있는 릴레이션을 분해하여 이상현상을 없애는 과정이다. 이상현상이 존재하는 릴레이션을 분해하여 여러 개의 릴레이션을 생성하게 된다. 이를 구분하여 정규형이 높아질수록 이상현상은 줄어들게 된다. 즉, 쉽게말하면 테이블 간에 중복된 데이터를 허용하지 않는다는 것이다. 중복된 데이터를 허용하지 않음으로써 무결성(Integrity)를 유지할 수 있으며, DB의 저장 용량 역시 줄일 수 있다. 이러한 테이블을 분해하는 정규화 단계가 정의 되어 있다. 정규화의 장단점 정규화의 장점 데이터베이스 변경 시 이상 현상(Anomaly)을 제거할 수 있다. 정규화된 데이터베이스 구조에서는 새로운 데이터 형의 추가로 인한 확장 시, 그 구조를 변경하지 않아도 되거나 일부만 ..

Computer Science/DataBase

[DataBase] RDBMS와 NoSQL의 차이점

DB 컴퓨터 시스템에 전자 방식으로 저장되어 있는 구조화된 정보 또는 데이터의 체계적인 집합을 말한다. SQL Structed Query Language 관계형 데이터베이스 관리시스템(RDBMS)의 관리를 위해 제작된 언어로써, 자료의 검색과 재조합, 스키마 생성과 수정과 같은 데이터베이스 객체 조정 관리를 위해 사용되고 있다. DBMS 데이터베이스 관리 시스템으로 사용자와 데이터 사이에서 사용자의 요청에 의해 데이터의 생성 조회 등 데이터베이스를 관리해주는 역할을 한다. RDBMS란? Relational DataBase Management System의 약자로, 관계형 데이터베이스 관리 시스템을 의마한다. RDB를 관리하는 시스템이며 RDB는 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이..

Computer Science/DesignPattern

[DesignPattern] 객체지향 프로그래밍이란

객체지향 프로그래밍이란? 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법이다. 이 방식은 오늘날 가장 많이 사용한 대표적인 프로그래밍 방식이다. 대표적으로 Java, C#등이 대표적인 객체지향 프로그래밍 언어이다. 객체지향 프로그래밍 특징 그리고 장점, 단점 객체 지향 프로그래밍에서는 크게 추상화, 캡슐화, 상속, 다형성의 네 가지 특징을 가진다. 추상화 객체에서 공통된 속성과 행위를 추출하는 것 공통의 속성과 행위를 찾아서 타입을 정의하는 과정 추상화는 불필요한 정보는 숨기고 중요한..

Computer Science/OperatingSystem

[OS] 참조의 지역성과 참조 집합

참조의 지역성이란? CPU가 프로그램을 실행하는 동안 짧은 시간 범위 내에 일정 구간의 메모리 영역을 반복 참조(액세스)하는 경향이 있는데 이것이 참조의 지역성이라고 한다. 참조의 지역성 특성 참조의 지역성은 프로그램이 가지는 기본적인 실행 특성이다. 프로세스의 실행동안 메모리가 균일하게 참조되지 않고 특정 부분이 집중 참조된다. 참조의 지역성은 지역성(locality), 지역성의 원리(principle of locality)라고도 부른다. 프로세스는 최근에 참조한 데이터와 코드를 다시 참조하는 경향이 있다. 프로세스가 실행되는 동안 메모리 영역을 옮겨 다니면서 참조의 지역성이 나타난다. 경험적 관찰에서 발견한 90/10 규칙은 "프로그램 코드의 10%가 프로그램 전체 실행 시간의 90%를 소비한다"는 ..

Computer Science/OperatingSystem

[OS] 가상 메모리(Virtual Memory System) 란?

가상 메모리(Virtual Memory System) 란? 메모리가 실제 메모리보다 많아 보이게 하는 기술로, 어떤 프로세스가 실행될 때 메모리에 해당 프로세스 전체가 올라가지 않더라도 실행이 가능하다는 점에 착안하여 고안된 메모리 기법이다. 왜 가상 메모리를 사용하는가? 물리 메모리는 컴퓨터에 장착된 실제 메모리로서 최대 크기는 CPU에 의해 제한된다. 그렇다면 운영체제는 물리메모리보다 큰 프로세스를 실행시킬 수 없는 것인가? 또한 운영체제는 여러 프로세스를 합쳐 물리 메모리보다 클 때 이들을 동시에 실행 시킬 수 없는 것인가? 이에 대한 해답으로 가상메모리 기법이 등장하게되었다. 결국에 가상 메모리는 물리 메모리보다 큰 프로세스나 여러 개의 작은 프로세스를 동시에 실행시켜, 사용자나 응용프로그램에게 ..

Computer Science/Web

[Web] 'www.google.com'을 주소창에서 입력하면 일어나는 일

오늘은 웹 브라우저 즉, 주소창에 주소를 입력하면 무슨일이 일어나는지에 대해서 전반적으로 정리를 해보자. 1. 사용자가 웹브라우저 검색창에 www.goolgle.com 입력한다. 2. 웹브라우저는 캐싱된 DNS기록들을 통해 해당 도메인 주소와 대응하는 IP주소를 확인한다. 이 단계에서 캐싱된 기록에 없을 경우, 다음 단계로 넘어간다. 3. 웹브라우저가 HTTP를 사용하여 DNS에게 입력된 도메인 주소를 요청한다. 4. DNS가 웹브라우저에게 찾는 사이트의 IP주소를 응답한다. ISP(Internet Service Provider)의 DNS 서버가 호스팅하고 있는 서버의 IP주소를 찾기위해 DNS query를 날린다. DNS query의 목적 : DNS 서버들을 검색해서 해당 사이트의 IP주소를 찾는데에 ..

Computer Science/Computer Architecture

[CA] 중앙처리장치(CPU) 작동 원리 간단 정리

오늘은 CPU (Central Processing Unit) 즉, 중앙처리장치에 대해서 공부해보자. CPU란 컴퓨터 시스템을 통제하고 프로그램의 연산 실행 및 처리하는 가장 핵심적인 컴퓨터의 제어장치, 혹은 그 기능을 내장한 칩이다. CPU는 컴퓨터에서 가장 핵심적인 역할을 수행하는 부분이다. CPU는 컴퓨터에서 인간의 두뇌 역할을 하는데 크게 3가지의 기능을 수행한다. 1. 연산 : 덧셈, 뺄셈, 곱셈 등의 산술 연산과 논리곱, 논리합, 부정 등의 논리 연산을 수행한다. 두 가지 연간을 모두 수행하기에 산술 논리 연산 장치라고도 불린다. 연산장치는 연산에 필요한 데이터를 레지스터에서 가져오고, 연산 결과를 다시 레지스터로 보내 저장한다. 2. 제어 : 명령어를 순서대로 실행할 수 있도록하는 제어장치이다..

Tenacity_Dev
'Computer Science' 카테고리의 글 목록 (7 Page)