일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MongoDB
- macos
- wireshark
- Crawling
- linux
- AWS
- HTML
- DATABASE
- docker
- React
- Scheduling
- mongoose
- Android
- algorithm
- sequelize
- python
- Express
- node.js
- TypeScript
- S3
- OS
- css
- Network
- postman
- mysql
- ubuntu
- typeorm
- OOAD
- Util
- Kotlin
- Today
- Total
목록
반응형
분류 전체보기 (144)
Seongwon Lim
서론 이번 글에서는 페이지 교체 알고리즘 중 가장 단순한 알고리즘인 FIFO(First In First Out) 알고리즘의 동작 원리를 알아보고자 한다. FIFO(First In First Out) Algorithm 페이지 교체 알고리즘에서 FIFO는 가장 먼저 메모리에 적재된 페이지를 먼저 내보내는 방식의 알고리즘이다. FIFO 알고리즘이 가지는 특징은 다음과 같다. 단순하며 구현하기가 쉽다. 지역성(Locality)을 고려하지 않는다. 사용 패턴 분석을 하는 것이 아니라 단순히 오래된 것을 교체한다. 메모리를 늘렸을 때 성능이 안좋아질 수 있다. 들어온 시간 혹은 순서를 Queue에 저장함으로써 구현할 수 있다. 예제를 통해서 FIFO 알고리즘을 이해해보자. 페이지 프레임은 3개로 구성되어 있으며 초..
서론 이번 글에서는 트랜잭션의 4가지 특성인 원자성, 일관성, 고립성, 영속성에 대한 개념을 간단하게 알아보고자 한다. 트랜잭션 (Transaction) 트랜잭션이란 데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산들을 의미한다. 데이터베이스 시스템에서 트랜잭션이 가지는 특징은 다음과 같다. 트랜잭션은 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용된다. 또한, 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의 작업 단위로도 사용된다. 상태 변환이란, 데이터 조작어(DML)의 SELECT, INSERT, UPDATE, DELETE 등의 명령어를 통해 데이터베이..
서론 이번 글에서는 파이썬에서 제공하는 itertools 라이브러리를 이용하여 리스트 내에 있는 데이터들의 순열, 조합, 데카르트 곱을 구하는 방법을 간단하게 알아보고자 한다. 순열 (permutations) 구하기 리스트 내에 있는 데이터 중에서 원소가 n개인 순열을 추출하기 위해서는 다음과 같이 코드를 구성할 수 있다. from itertools import permutations data = [1, 2, 3, 4, 5, 6] flag = 0 # 2번째 인자에는 추출할 원소 개수를 정의한다. for p in permutations(data, 2): print(p, end=' ') if flag == 6: print('\n') flag = 0 출력 결과는 다음과 같다. flag 변수는 결과를 보기 좋게..
선택 정렬(Selection Sort) 선택 정렬은 n개의 레코드 중에서 최소값을 찾아 첫 번째 위치에 놓고, 나머지 (n-1)개 중에서 다시 최소값을 찾아 두 번째 레코드 위치에 놓는 방식을 반복하여 정렬하는 알고리즘이다. 선택 정렬의 특징은 다음과 같다. 평균과 최악 모두 수행 시간 복잡도는 O(n^2) 이다. 회전을 수행할 때마다 가장 작은 값의 레코드가 맨 앞으로 이동하므로 다음 회전에서는 맨 앞에 있는 레코드는 정렬하지 않는다. 예를 들어 [8, 5, 6, 2, 4] 라는 5의 길이를 가지고 있는 배열이 있다고 가정해보면 1회전이 끝나면 2라는 값은 맨 앞으로 정렬된다. 따라서 2회전 때에는 2번째 부터 정렬 알고리즘을 수행하면 된다. 예제를 통해서 선택 정렬을 이해해보자. 선택 정렬 예제 초기..
버블 정렬 (Bubble Sort) 버블 정렬은 주어진 파일에서 인접한 두 개의 레코드 키 값을 비교하여 그 크기에 따라 레코드 위치를 서로 교환하는 정렬 방식이다. 버블 정렬의 특징은 다음과 같다. 계속 정렬 여부를 플래그 비트(f)로 결정한다. 평균과 최악 모두 수행 시간 복잡도는 O(n^2) 이다. 회전을 수행할 때마다 가장 큰 값의 레코드가 맨 뒤로 이동하므로 다음 회전에서는 맨 끝에 있는 레코드는 정렬하지 않는다. 예를 들어 [8, 5, 6, 2, 4] 라는 5의 길이를 가지고 있는 배열이 있다고 가정해보면 1회전이 끝나면 8이라는 값은 맨 뒤로 정렬된다. 따라서 2회전 때에는 길이 5를 n 이라고 했을 때 n-1 번째 까지만 정렬 알고리즘을 수행하면 된다. i 번째와 i+1 번째를 비교했을 ..
삽입 정렬 (Insertion Sort) 삽입 정렬이란 이미 순서화된 파일에 새로운 하나의 레코드를 순서에 맞게 삽입시켜 정렬하는 알고리즘이다. 삽입 정렬의 특징은 다음과 같다. 두 번째 키와 첫 번째 키를 비교하여 순서대로 나열(1회전)하고, 이어서 세 번째 키를 1,2 번째 키와 비교하여 순서대로 나열(2회전)하고, 계속해서 n번째 키를 앞의 n-1개의 키와 비교하여 알맞은 순서에 삽입하여 정렬하는 알고리즘이다. 평균과 최악 모두 수행 시간 복잡도는 O(n^2) 이다. 예제를 통해서 삽입 정렬을 이해해보자. 삽입 정렬 예제 초기 상태 : [8, 5, 6, 2, 4] 1회전 두 번째 레코드 5를 Key로 지정하여 이전 자료들과 비교한다. Key(5)가 첫 번째 레코드인 8 보다 작으므로, 8을 Key..
서론 이번 글에서는 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용되는 데이터 제어어(DCL)에 대한 개념과 유형을 알아보고자 한다. 데이터 정의어(DDL), 데이터 조작어(DML)에 대한 개념 이해가 필요한 분들은 아래 글을 참고하면 좋을 것 같다. [DB] 데이터 정의어 (DDL) 이란? [DB] 데이터 조작어 (DML) 이란? DCL(Data Control Language, 데이터 제어어) 데이터 조작어는 데이터베이스 관리자(DBA)가 데이터 관리를 목적으로 사용하는 명령어로 서론에서 언급한 데이터 보안 및 제어에 대한 역할을 담당한다. 데이터 제어어에 속한 유형은 다음과 같다. 명령어 기능 COMMIT 명령에 의해 수행된 결과를 실제 물리적 디스크로 저장하고, 데이터베이스 ..
서론 이번 글에서는 운영체제의 프로세스 스케줄링 기법 중 하나인 HRN 스케줄링에 대하여 살펴본다. HRN 스케줄링을 이해하기 위해서는 선수 지식으로 SJF(Shortest Job First) 스케줄링 기법에 대한 개념이 필요하다. SJF 스케줄링에 대한 이해가 부족한 분들은 아래 글을 참고하면 좋을 것 같다. [OS] 최단 작업 우선 스케줄링(SJF) 이란? [OS] 최단 작업 우선 스케줄링(SJF) 이란? SJF(Shortest Job First) Scheduling ? 최단 작업 우선 스케줄링(Shortest Job First Scheduling)은 평균 대기 시간을 최소화하기 위해 CPU 점유 시간이 가장 짧은 프로세스에 CPU를 먼저 할당하는 방식이며, CPU.. limsw.tistory.com..
서론 이번 글에서는 MySQL을 사용할 때 조건문의 종류와 사용하는 방법을 간단하게 다뤄보고자 한다. MySQL 조건문을 살펴볼 내용들은 다음과 같다. CASE WHEN IF IFNULL NULLIF CASE WHEN CASE WHEN [CONDITION] THEN [TRUE] ELSE [FALSE] END CASE WHEN 구문을 사용할 때에는 CASE WHEN, THEN, ELSE, END 명령어가 필수로 들어간다는 것을 기억하자. CONDITION : 제약 사항을 정의하기 위한 조건이 들어간다. THEN 다음에는 조건이 참일 경우에 실행될 명령어가 들어간다. ELSE 다음에는 조건이 거짓일 경우에 실행될 명령어가 들어간다. 예시를 통해 살펴보자. 위 그림은 WHEN 절에 1=1 이라는 제약 사항이 ..
서론 소프트웨어 공학에서 모듈을 설계할 때에는 모듈의 독립성을 높은 수준으로 구현하여야 한다. 모듈(Module) : 시스템의 독자적인 기능으로 소프트웨어 성능 향상 및 재사용성을 높이기 위해 기능 단위로 분해한 것 모듈의 독립성을 높여야 하는 이유는 모듈의 정의와 같이 성능, 재사용성, 수정 용이성 등을 보장하기 위함이다. 또한, 모듈을 설계할 때에는 모듈 간 의존성과 모듈 내부 기능들이 기능적으로 잘 뭉쳐져 있는 지를 확인하며 설계할 필요가 있으며 해당 내용들을 만족하여야 독립성 있는 모듈을 구현할 수 있다. 그래서 이번 글에서는 위에서 언급한 2가지 내용인 모듈 설계 시 필요한 결합도(Coupling), 응집도(Cohesion)의 개념과 종류를 간단하게 살펴보고자 한다. 결합도 (Coupling)..