0%

CPU스케줄러

프로세스가 구동하려면 다양한 시스템 자원이 필요합니다. 대표적으로 CPU(중앙처리장치)와 입출력장치가 있는데, 최고의 성능을 내기 위해서 자원을 어떤 프로세스에 얼마나 할당하는지 정책을 만드는것을 CPU스케줄링이라고 합니다.

음식을 만들때를 예시로 말씀드리겠습니다. 찌개를 끓이기 위해서 물을 받아서 가스레인지에 올립니다. 그리고 물을 데피는 동안 각종 채소, 재료들을 손질하듯이 기다리면서 다른 일을 합니다. 이처럼 프로세스도 작업을 완료할때까지 다양한 상태가 됩니다.CPU스케쥴러에서 주목해야할 부분은 ‘Waiting’입니다.

Read more »

SQL ORM(Object Relational Mapping)

image

ORM이란?

객체지향언어에서 db에 접근하거나 사용할때 그 객체지향언어처럼 코드를 짜고 db에 직접적으로 적용할 수 있게끔 매핑해주는 것입니다.

객체 지향 프로그래밍언어(OOP)는 클래스라는 개념이 있고, RDBMS에는 테이블이라는 개념이 있습니다.

Read more »

Crontab

오늘은 간단하게 crontab을 사용하는 법에 대해서 간략하게 정리하려고 합니다.

  1. 원하는 위치에 로그가 담길 파일을 작성합니다.

image-20200811214344692

  1. 별도로 작성할 내용은 없으니 esc를 누른 후 다음과 같이 파일을 쓰고 종류해줍니다.

image-20200811214331518

Read more »

Django mail 보내기

개인이나 기업이 SMTP서버를 설치해서 이를 통해 메일을 발송할 수 있습니다.

하지만 요즘은 구글, 마이크로소프트 등의 기업에서 SMTP 서버를 오픈하기 때문에 이를 통해서 메일을 전송할 수 있습니다. 오늘은 GMail의 SMTP 서버를 이용해서 메일을 전송해보겠습니다.

Read more »

AWS RDS(Amazon Relational Database Service)

  • 클라우드에서 관계형 데이터베이스를 더 쉽게 설치, 운영 및 확장할 수 있는 웹 서비스
  • 데이터베이스를 안정적으로 관리해주고 규모가 커져쓸 때 쉽게 관리해주는 서비스

기능

  • 백업, 소프트웨어 패치, 자동 장애 감지 및 복구를 관리함

  • MySQL, MariaDB, PostgreSQL, Oracle 및 MS SQL 같은 DB제품을 사용할 수 있음

Read more »

Docker명령어

이전 포스팅에서 도커, 이미지, 컨테이너 등의 개념들에 대해서 정리해봤습니다.이어서 docker의 명령어를 간단하게 사용 해 보려고 합니다.

다운로드

먼저 이곳을 클릭해서 다운로드를 해주세요!(Mac, Windows, Linux / 본인의 운영체제에 맞게 설치해주시면 됩니다.)

설치가 완료되면 상단에 Docker가 나타납니다. 이 후 docker 명령어를 사용할 수 있게 됩니다.

image

Read more »

Docker란 무엇인가?

도커

가상의 환경에서 미리 정해져있는 필요한 프로그램들의 리스트를 통째로 설치하고 실행한 뒤 가상의 환경을 종료시킴으로써 내 컴퓨터는 깔끔하게 아무 영향을 받지 않도록 도와주는 프로그램

Image, Docker engine, Container

image는 가상환경에 대한 설정과 설치해야할 Dependencies(패키지를 실행하기 위해 필요한 패키지 목록), 수행할 작업등을 적어놓은 설정이고 docker build라는 명령어를 통해 생성할 수 있습니다.

Read more »

그리디(Greedy) 알고리즘

그리디 알고리즘은 뜻 그대로 탐욕알고리즘이라고도 불립니다. 이 알고리즘은 그때그때 상황에 맞게 최선을 선택하며 문제를 해결해나가는 알고리즘입니다. 그렇기에 최종적으로는 그 선택이 최적이라고 확신할 수는 없습니다.

예를 들어, “지금 당장 라면을 먹을 수 있지만, 한시간을 참은 후엔 랍스타를 먹을 수 있다.”라고 가정한다면 그리드알고리즘의 경우 라면을 먹어버린다고 생각하시면 됩니다.

Read more »

동적계획법(Dynamic Programming, DP)

동적 계획법은 알고리즘 설계 기법의 하나로서 동적계획법 풀이는 단순하게 말하면 점화식의 연속입니다. 그리고 이런 점화식을 진행하는 방식에 따라 풀이를 다음과 같이 나눌 수 있습니다.

  • 탑다운:(Top-Down): 최종 상태를 구하기 위해 아래 상태를 재귀적으로 구하는 방법
  • 바텀업(Bottom-Up): 가장 작은 상태에서부터 쌓아나가는 방법

보통 Python의 재귀 속도 문제로 Python에서는 Bottom-Up 방식으로 코드를 짜는 것을 추천합니다.

DP와 분할정복의 특징

이 두 개념은 “”큰 문제를 작은 문제로 나눠서 푼다.”라는 공통점을 갖고 있습니다. 다만 분할 정복은 동적계획법과 달리 계산한 부분문제를 한번만 쓰고 더 이상 쓰지 않기 때문에 메모이제이션이 필요하지 않습니다. 분할 정복과 동적 계획법의 근본적인 차이입니다.

Read more »

병합 정렬(Merge Sort)

병합 정렬은 분할 정복기법과 재귀 알고리즘을 이용한 정렬 알고리즘입니다. 주어진 배열을 원소가 하나 밖에 남지 않을 때까지 게속 둘로 쪼갠 후에 다시 크기 순으로 재배열하면서 원래 크기의 배열로 합칩니다. 이해를 돕기위해 아래의 개념을 보시면 좋을 것 같습니다!

개념

먼저 다음과 같이 1부터 8까지 총 9개의 숫자가 들어가 있는 배열이 있다고 가정해보겠습니다.

[2, 4, 6, 5, 7, 1, 3, 8]

하나의 배열을 두개로 나눕니다.

[2, 4, 6, 5] [7, 1, 3, 8]

그리고 다시 두개의 배열을 네개로 나눕니다.

[2, 4] [6, 5] [7, 1] [3, 8]

Read more »