버블정렬 (Bubble Sort)
·
CS 공부/알고리즘
버블 정렬(bubble sort) 의 개념 요약 서로 인접한 두 원소를 비교하여 크기가 순서대로 되어 있지 않으면 서로 교환하며 정렬해나가는 알고리즘이다. 구체적인 개념 버블 정렬은 첫 번째 원소와 두 번째 원소를, 두 번째 원소와 세 번째 원소를, 세 번째와 네 번째를, … 이런 식으로 (마지막-1)번째 원소와 마지막 원소를 비교하여 교환하면서 정렬한다. 1회전을 수행하고 나면 가장 큰 원소가 맨 뒤로 이동하므로 2회전에서는 맨 끝에 있는 원소는 정렬에서 제외되고, 2회전을 수행하고 나면 끝에서 두 번째 원소까지는 정렬에서 제외된다. 이렇게 정렬을 1회전 수행할 때마다 정렬에서 제외되는 데이터가 하나씩 늘어난다. 예제 → 배열에 7, 4, 5, 1, 3이 저장되어 있다고 가정하고 오름차순으로 정렬해 보..
프로세스 주소공간(Process Address Space)
·
CS 공부/운영체제
프로세스의 주소 공간이란? 프로그램이 CPU에 의해 실행되면 프로세스가 생성된다. 프로세스가 메모리를 할당 받으면, 자신만의 방법으로 메모리를 관리하기 위해 이 공간들을 어떤 구조로 관리하는데, 우리는 이를 프로세스 주소 공간이라고 부른다. 즉, 메모리에 프로세스의 주소 공간이 할당된다. 프로세스 주소 공간은 코드, 데이터, 스택 영역으로 이루어져 있다. 프로세스 주소 공간을 Code, Data, Stack 으로 구역을 나눈 이유 ? 최대한 데이터를 공유하여 메모리 사용량을 줄이기 위해서이다. Code 부분 존재 이유 코드는 프로그램이 만들어지고 나서는 바뀌지 않기 때문에 Read Only이다. 같은 프로그램이라면 여러 프로세스가 실행되더라도 코드 부분은 모두 같다. 따라서 같은 프로그램의 프로세스인 경..
레디스(Redis) 란?
·
CS 공부/데이터베이스
Redis란 무엇일까? -> Redis(REmote Dictionary Server) 보통 데이터베이스는 데이터를 하드 디스크나 SSD에 저장한다. 하지만 Redis는 데이터를 메모리(RAM)에 저장하는 인메모리 데이터베이스(In-Memory)로서 디스크 스캐닝이 필요없어 매우 빠른 장점이 존재한다. 이 말만 들으면 Redis의 가장 큰 특징이 모든 데이터를 메모리에 저장하는 빠른 DB가 다라고 생각할지도 모른다. 하지만, 빠른 성능은 Redis의 특징 중 일부분이고, 다른 인메모리 데이터베이스들과의 가장 큰 차이점은 "다양한 자료구조" 이다. 데이터 구조는 key/value 값으로 이루어져있다. Value가 될 수 있는 데이터의 형식은 5가지이다. String (text, binary data) - 5..
운영체제(OS : Operating System) 란?
·
CS 공부/운영체제
운영체제란? 컴퓨터 시스템은 대개 네 가지 구성요소인 하드웨어, 운영체제, 응용 프로그램 및 사용자로 구분할 수 있다. 하드웨어는 중앙 처리장치(CPU), 메모리 및 입출력(I/O) 장치로 구성되어, 기본 계산용 자원을 제공한다. 응용 프로그램인 워드 프로세서, 스프레드시트, 컴파일러, 웹 브라우저 등은 사용자의 계산 문제를 해결하기 위해 이들 자원이 어떻게 사용될지를 정의한다. 운영체제는 다양한 사용자를 위해 다양한 응용 프로그램 간의 하드웨어 사용을 제어하고 조정한다. 즉,하드웨어를 관리하고 컴퓨터시스템의 자원들을 효율적으로 관리하며, 응용프로그램과 하드웨어간의 인터페이스로써 다른 응용 프로그램이 유용한 작업을 할 수 있도록 환경을 제공해준다. 운영체제의 종류 운영체제의 종류에는 WIndows 98,..
이상현상 (Anomaly)
·
CS 공부/데이터베이스
이상현상 (Anomaly) 이란? 데이터베이스에서 정규화를 수행하지 않으면, 데이터의 중복이 발생하고 전체적인 무결성이 저하된다. 이러한 원인은 데이터 이상 현상(Anomaly)에 의해 발생하며, 이상 현상으로 인해 현실세계의 실제 값과 데이터베이스에 저장된 값이 일치하지 않는 문제가 발생한다. 데이터 이상은 삽입 이상, 삭제 이상, 업데이트 이상이라는 세 가지 유형이 존재한다. 다음은 이상 현상을 설명할 대학교 테이블이다. 학번 학생명 학과 코드 학과명 학과장 코드 학과장명 1 도우너 101 경영학과 1000 워런 버핏 2 고길동 101 경영학과 1000 워런 버핏 3 또치 102 물리학과 2000 아인슈타인 4 마이콜 102 물리학과 2000 아인슈타인 5 둘리 103 컴퓨터공학과 3000 빌 게이츠..
SQL과 NOSQL의 차이
·
CS 공부/데이터베이스
웹/앱 개발을 할 때 데이터베이스를 선택하게 된다. MySQL과 같은 SQL을 사용할까? 아니면 MongoDB와 같은 NoSQL을 사용할까? 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용한다. 하지만 그냥 단순히 프레임워크에 따라 결정하는 것이 아니다. 적합한 데이터베이스를 택해야 한다. 차이점을 알아보자. SQL (관계형 DB) SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있다. ※ RDBMS(Relational DataBase Management System) - 관계형 데이터베이스 관리 시스템 - 대표적으로 오라클, MySQL, Access, MsSql 등이 있다. - 데이터를 테이블 형태('스키마'라고 부른다)로 관리..