👨💻 Day 1. 운영체제 & 리눅스 기초 다지기
오늘은 컴퓨터 시스템의 근간이 되는 운영체제(OS) 개념과 리눅스 기초 명령어를 학습했다.
🔹 컴퓨터 구조 & OS
운영체제는 하드웨어와 소프트웨어 사이에서 자원을 관리해주는 프로그램이다.
중앙에는 커널이 있어 메모리, CPU, 파일 시스템 등을 제어한다.
프로그램은 디스크에 저장된 상태이고, 프로세스는 실행 중인 프로그램을 의미한다.
메모리는 크게 4영역으로 나뉜다: 코드, 데이터, 힙, 스택.
스택: 함수 호출/반환 시 사용
힙: 동적 할당 영역
🔹 쉘 & Git Bash & EC2
쉘은 사용자가 명령어를 입력할 수 있는 환경.
Git Bash는 윈도우에서 리눅스 명령어를 사용할 수 있게 해준다.
EC2는 AWS에서 제공하는 가상 서버. SSH를 통해 접속한다.
🔹 리눅스 명령어 맛보기
ls: 디렉토리 목록 보기
cd: 디렉토리 이동
mkdir: 폴더 생성
|, grep: 파이프와 검색
vim: 파일 편집기
🌐 Day 2. 네트워크 & 데이터베이스
🔹 OSI 7계층
네트워크 구조를 이해하기 위한 모델로, 각 계층은 특정 기능을 담당한다.
물리 계층: 전기적 신호 (ex: 허브)
데이터링크 계층: MAC 주소, 프레임, 스위치, 랜카드
네트워크 계층: IP 주소, 라우팅, ping, public/private IP
전송 계층: TCP(신뢰성), UDP(속도), 포트 번호
5~7. 응용 계층: HTTP, FTP, SSH 등 응용 서비스
🔹 데이터베이스 개요
RDB (관계형 데이터베이스) vs NoSQL
PostgreSQL을 사용해 데이터베이스 실습 진행
설치, DB 및 테이블 생성
외부 접속을 위한 pg_hba.conf와 postgresql.conf 설정 변경
📚 Day 3. 자료구조 & 알고리즘
🔹 자료구조
포인터: 메모리 주소를 가리키는 변수
인코딩: 데이터를 특정 방식으로 변환 (ex: UTF-8)
주요 자료구조
스택 (LIFO): push/pop, ex: 함수 호출
큐 (FIFO): enqueue/dequeue, ex: 작업 큐
트리: 계층 구조, ex: 폴더 구조
그래프: 정점+간선, ex: 지도
해시: 키-값 쌍 저장, 검색 빠름
🔹 알고리즘
탐색
선형 탐색: 순차적으로 찾음
이진 탐색: 정렬된 데이터에서 절반씩 줄여감
BFS (큐), DFS (스택)
정렬
버블 정렬: 인접한 두 값을 비교
병합 정렬: 분할 후 정렬하며 합침
퀵 정렬: 피벗 중심 분할 정렬
동적 계획법 (DP)
중복 계산을 피하기 위해 메모이제이션 활용
피보나치, 배낭 문제 등 최적화 문제에 강함