CS 164

🔄 [1일 1CS] 컴퓨터가 여러 일을 동시에 하는 척하는 마술: 컨텍스트 스위칭

1. 찰떡 비유: 책 3권 동시에 읽기 📖여러분이 내일 시험을 앞두고 역사, 수학, 영어 책을 동시에 공부해야 한다고 상상해 보세요.눈은 한 번에 한 권만 볼 수 있으니 이렇게 합니다:역사책 10페이지를 읽는다."아, 여기까지 읽었지" 하고 책갈피를 꽂아둔다.수학책을 펴서 책갈피 위치부터 5문제를 푼다.다시 책갈피를 꽂고 덮는다.영어책을 펴서 단어를 외운다...이 과정을 0.01초 단위로 미친 듯이 반복하면, 옆에서 보는 사람은 “와, 세 과목을 동시에 공부하고 있네!”라고 착각합니다.컴퓨터가 여러 프로그램을 동시에 돌리는 것처럼 보이는 원리, 바로 컨텍스트 스위칭입니다.2. Context(문맥)란 무엇인가?컨텍스트는 쉽게 말해 책갈피입니다.프로세스가 지금까지 뭘 하고 있었는지에 대한 현재 상태 정보죠..

📚 [1일 1CS] DB가 1억 개의 데이터에서 0.1초 만에 찾는 비결: B-Tree (인덱스)

📚 [1일 1CS] DB가 1억 개의 데이터에서 0.1초 만에 찾는 비결: B-Tree (인덱스)1. BST의 실패: "너무 키가 크면 힘들다"지난 시간에 배운 이진 탐색 트리(BST)는 자식을 최대 2개만 가질 수 있죠. 그런데 데이터가 수백만, 수천만 개가 되면 트리의 높이가 엄청나게 커집니다.문제점: 컴퓨터에서 트리의 노드 하나를 읽는다는 건, 사실상 하드디스크(Disk)를 한 번 읽는 것과 같습니다.비유: 도서관 100층 꼭대기까지 계단으로 올라가서 책을 찾아야 하는 상황. 디스크 I/O가 너무 많이 발생하는 셈입니다.2. 해결사: B-Tree (Balanced Tree)그래서 컴퓨터 과학자들은 이렇게 생각했습니다."층수를 낮추자! 대신 한 층에 책을 더 많이 꽂자!"B-Tree는 하나의 노드에..

🌳 [1일 1CS] 폴더 정리의 기술: 트리(Tree)와 이진 탐색 트리(BST)

🌳 [1일 1CS] 폴더 정리의 기술: 트리(Tree)와 이진 탐색 트리(BST)1. 트리(Tree)란 무엇인가?트리라는 이름 그대로, 나무를 뒤집어 놓은 모양을 떠올리면 됩니다. 가장 위의 뿌리(Root)에서 시작해서 가지(Branch)를 치며 아래로 뻗어 나가는 구조죠.가장 완벽한 예시는 여러분 컴퓨터의 파일 탐색기(폴더 구조)입니다.C드라이브 (뿌리)Program Files (가지)Users (가지)Documents (잎)Downloads (잎)이처럼 트리는 계층 구조를 표현하는 데 아주 적합합니다.🌿 핵심 용어 정리루트(Root): 가장 꼭대기에 있는 시작점 노드 (예: C드라이브)노드(Node): 트리를 구성하는 각각의 데이터 알갱이 (폴더 하나하나)간선(Edge): 노드와 노드를 연결하는 ..

📝 [1일1CS] 이진 탐색(Binary Search) & Big-O 정리

📝 이진 탐색(Binary Search) & Big-O 정리1. 탐색 방법선형 탐색 (Linear Search)데이터 N개를 하나씩 확인 → 최악의 경우 O(N)예: 정렬되지 않은 책장에서 원하는 책 찾기이진 탐색 (Binary Search)정렬된 데이터에서 반씩 줄여가며 탐색 → O(log N)예: 업다운 게임처럼 중간값을 기준으로 범위를 절반씩 줄여감2. Big-O 표기법 (시간 복잡도)데이터가 많아질 때 실행 시간이 얼마나 늘어나는지 나타내는 척도. 표기법이름설명예시O(1)상수 시간데이터 크기와 무관배열 첫 값 가져오기O(log N)로그 시간반씩 줄여가며 탐색이진 탐색O(N)선형 시간데이터 개수만큼 확인for문 한 번 돌기O(N log N)선형 로그N × log N효율적 정렬 (Quick Sort..

🧹 [1일 1CS] 다 먹은 그릇은 누가 치우나? 가비지 컬렉션(GC)

🧹 [1일 1CS] 다 먹은 그릇은 누가 치우나? 가비지 컬렉션(GC)안녕하세요! 오늘은 프로그래밍에서 꼭 알아야 할 개념, 가비지 컬렉션(Garbage Collection, GC) 이야기를 해보려 합니다.밥을 먹고 난 뒤 그릇은 누가 치울까요? 바로 GC가 그 역할을 합니다.1. 메모리 관리의 두 가지 방식우리가 코드를 짤 때 변수를 선언하거나 객체를 만들면(new Object()), 컴퓨터의 메모리(RAM) 공간을 차지하게 됩니다. 그런데 이 공간은 무한하지 않죠. 다 쓰고 나면 반드시 비워줘야 합니다.① 수동 관리 (C, C++) : "자급자족 시스템"방식: 개발자가 malloc()으로 메모리를 빌리고, 다 쓰면 free()로 직접 반납해야 합니다.비유: 식당에서 밥을 먹고 손님이 직접 설거지까지..

🚪[1일1CS] IP 주소가 아파트라면, 포트(Port)는 '몇 호'일까요?

🚪 IP 주소가 아파트라면, 포트(Port)는 '몇 호'일까요?네트워크를 처음 배우는 분들이라면 IP와 포트 개념이 헷갈리기 쉽습니다. 오늘은 이를 아파트와 택배 비유로 풀어보겠습니다.1. 택배 배송 비유 📦컴퓨터 네트워크는 택배 시스템과 아주 닮아 있습니다.IP 주소 = 아파트 주소 (건물 위치)예: "서울시 강남구 테헤란로 123번지"건물 앞까지는 찾아갈 수 있지만, 어느 집으로 가야 할지는 모릅니다.포트(Port) = 호수 (집 번호)예: "101호"건물에 도착한 뒤, 누구에게 물건을 줄지 결정하는 번호입니다.👉 만약 "123번지 아파트(IP)"까지만 적고 "몇 호(Port)"를 안 적었다면?경비실(운영체제)은 이 택배를 101호(웹 서버)에 줄지, 202호(게임 서버)에 줄지 몰라서 반송해 ..

🚦 [1일 1CS] 컴퓨터가 멈췄어요! 서로 양보 안 하는 '데드락(Deadlock)'

1. 데드락이란?데드락(Deadlock), 우리말로는 교착 상태라고 부릅니다.두 개 이상의 프로세스나 스레드가 서로 상대방이 가진 자원을 내놓기만을 기다리다가, 결국 아무도 앞으로 나아가지 못하고 시스템이 멈춰버리는 상황을 말합니다.📝 쉬운 비유: "너 먼저 끊어" (펜과 종이)철수와 영희가 그림을 그리려면 펜과 종이가 모두 필요합니다.철수는 펜을 먼저 집고 종이를 기다립니다.영희는 종이를 먼저 집고 펜을 기다립니다.철수: "영희야, 종이 좀 줘. 다 그리고 줄게."영희: "싫어, 네가 펜을 줘. 내가 먼저 그리고 줄게."결과: 둘 다 끝없이 대기… 그림은 시작조차 못 합니다.이게 바로 데드락입니다.2. 데드락 발생 조건 (4가지)컴퓨터 과학에서는 데드락이 발생하려면 아래 4가지 조건이 동시에 성립해야..

🎫 [1일 1CS] 여권 하나만 보여주세요: JWT (JSON Web Token)

웹 개발을 하다 보면 로그인 상태 관리가 늘 고민거리입니다. 예전에는 세션(Session) 방식이 주류였지만, 요즘은 JWT(JSON Web Token)이라는 녀석이 많이 쓰이고 있죠. 오늘은 JWT를 여권(Passport) 비유로 풀어보겠습니다.1. 세션 vs JWT: 장부와 여권의 차이세션 방식: 서버가 "철수 로그인했음"이라고 장부(메모리)에 기록합니다.→ 사용자가 100만 명이 되면 장부가 터져버리겠죠?JWT 방식: 서버는 장부를 적지 않고, 사용자에게 인증 도장이 찍힌 증명서(JWT)를 발급합니다.→ 사용자는 이 증명서를 들고 다니며 서버에 보여주기만 하면 됩니다.즉, "나에 대한 정보가 토큰 안에 다 들어있고, 서버는 위조 여부만 검사한다"는 것이 핵심입니다.2. JWT의 구조: 점(.)으로 ..

🏗️ [1일 1CS] 도서관으로 이해하는 메모리 계층 구조

컴퓨터의 저장 공간에는 아주 중요한 법칙이 있습니다. 👉 “빠를수록 비싸고 작다.”그래서 컴퓨터는 속도와 용량이 다른 여러 저장 장치를 계층 구조로 나누어 사용합니다.이를 가장 쉽게 이해할 수 있는 비유는 바로 시험 공부하는 학생입니다.📚 1. 메모리의 피라미드 구조컴퓨터의 저장 장치는 피라미드처럼 층을 이루고 있습니다.위로 갈수록 속도는 빛의 속도에 가까워지지만, 가격은 비싸지고 용량은 작아집니다.① 레지스터 & 캐시 (Registers / Cache) → 책상 위위치: CPU 내부 초고속 저장 공간비유: 책상 위에 펼쳐둔 노트와 필기구특징:고개를 돌릴 필요 없이 바로 사용할 수 있음가장 빠르지만 공간이 매우 좁음 (책상 크기 제한)L1, L2, L3 캐시로 나뉨② 주기억장치 (RAM, Memory..

🗣️ [1일 1CS] 프론트와 백엔드의 대화법: REST API란?

백엔드 개발자의 핵심 업무 중 하나는 API 설계입니다. 데이터베이스(DB)에 잘 저장된 정보를 프론트엔드가 활용할 수 있도록 꺼내주는 창구가 바로 API죠. 그런데 이때 "말하는 규칙"을 잘 정하지 않으면 서로 오해가 생깁니다.그 규칙이 바로 REST API입니다.1. REST의 핵심: 언어의 문법과 같다REST는 쉽게 말해 "자원(명사)과 행동(동사)을 명확하게 구분해서 말하자"는 약속입니다.자원(Resource): URI로 표현 (명사)행동(Verb): HTTP Method로 표현 (동사)❌ 잘못된 예시 (동사가 URL에 들어감)GET /getUsersPOST /createUserPOST /deleteUser⭕ 올바른 예시 (RESTful)GET /users → 유저 목록 조회POST /users ..