1. collections.abc 모듈 1-1. 추상 기반 클래스(Abstract Base Class, ABC) 파이썬의 collections.abc 내장 모듈 안에는 컨테이너(container) 타입에 정의해야 하는 전형적인 메서드를 제공하는 추상 기반 클래스(abstract base class, ABC) 정의가 들어있다. 이러한 ABC는 인터...
[Python] 추상 기반 클래스(Abstract Base Class), collections.abc 모듈
[MySQL] 두 테이블의 Cartesian Product를 구하는 세 가지 방법
관련 문제: https://leetcode.com/problems/students-and-examinations/ 두 table의 데이터 조합에 대해 모든 경우의 수를 가지는 Cartesian Product를 구하는 방법에 대해 알아보자. Tables Students +------------+--------------+ | stu...
[OS] 5. CPU 스케줄링
단기 스케줄러(short term scheduler, CPU 스케줄러)가 프로세스를 스케줄링 하는 방법에 대해 알아보자. 1. CPU 스케줄링 개요 CPU란? CPU란 프로그램의 기계어 명령을 실제로 수행하는 중앙처리장치이다. 프로그램이 시작되어 메모리에 올라가면, 프로그램 카운터(PC)라는 레지스터가 현재 CPU에서 수행할 ...
[OS] 4. 프로세스 (Process)
프로세스에 관한 전반적인 내용을 다뤄보자. 1. Process 프로세스(process)란 실행 중인 프로그램을 뜻하며, 잡(job)이라고도 한다. 프로세스는 CPU를 획득해 코드를 수행하기도 하고, 때로는 CPU를 반환하고 I/O 작업을 수행하기도 한다. 구분 동작 ...
[OS] 3. 프로그램의 구조와 실행
프로그램은 어떻게 실행되는지, 인터럽트와 시스템 콜은 무엇인지 알아보자. 1. 프로그램의 구조와 인터럽트 프로그램의 주소 영역 프로그램이 CPU에서 명령을 수행하려면 해당 명령을 담은 프로그램의 주소 영역이 메모리에 올라가 있어야 한다. 구성 요소 설명 ...
[MySQL] FROM 절에 중첩 SELECT 문 사용하는 예제
관련 문제: https://leetcode.com/problems/delete-duplicate-emails/ GROUP BY 후 함수를 적용한 결과를 WHERE 조건으로 사용하고 싶다면 중첩 SELECT 문을 작성한다. DELETE FROM Person WHERE id NOT IN ( SELECT min_id FROM (...
[MySQL] SELECT 결과가 비어있을 때 NULL을 반환하는 방법
일반 SELECT를 사용하면 결과가 없는 경우는 아예 출력되지 않는다. 결과 값이 없는 경우에도 빈 테이블이 아닌 NULL을 반환하고 싶다면, 다음과 같이 SELECT 절 안에 subquery를 넣는 중첩 SELECT 문을 사용해야 한다. 관련 문제: https://leetcode.com/problems/biggest-single-numb...
[MySQL] GROUP BY 후 조건에 부합하는 값들의 개수 및 비율 구하기
관련 문제: https://leetcode.com/problems/queries-quality-and-percentage/ 다음과 같이 query_name 컬럼을 기준으로 GROUP BY 후, rating < 3이라는 특정 조건에 부합하는 값들의 비율을 poor_query_percentage 라는 컬럼으로 반환하려 한다. SELEC...
[OS] 2. 컴퓨터 시스템의 동작 원리
컴퓨터 시스템의 전반적인 구조부터 인터럽트와 입출력, 저장 장치, 그리고 보안에 대해서 다뤄보자. 1. 컴퓨터 시스템의 구조 컴퓨터 시스템은 크게 다음과 같이 나눌 수 있다. 구분 예시 내부 장치 CPU, 메모리 등 외...
[OS] 1. 운영체제 개요
운영체제란 무엇이고, 어떤 역할을 수행할까? 1. 운영체제 (Operating System) 운영체제란? 컴퓨터 하드웨어 바로 윗단에 설치되는 소프트웨어이다. 각종 하드웨어를 관리하고, 사용자에게는 편리한 인터페이스를 제공한다. 운영체제 중 항상 필요한 부분은 메모리에 상주하며, 이를 커널(kernel)이라고 한다. ...