분류 전체보기 132

[CS] 비선형 자료 구조

일렬로 나열하지 않고, 자료 순서나 관계가 복잡한 구조 일반적으로 트리, 그래프를 의미함배열/리스트처럼 “앞뒤 순서”보다, “연결 관계·계층·우선순위”가 중요한 경우에 사용됨 1. 그래프정점과 간선으로 이루어진 자료 구조💭 예: 보니가 회사까지 출근함 → 보니와 회사는 '정점', 회사까지 가는 길은 '간선'노드 간 경로가 여러 개일 수 있음 → 정점으로 나가는 간선을 outdegree, 들어오는 간선을 indegree가중치: 간선과 정점 사이에 드는 비용그래프는 방향성 여부에 따라 나뉨방향 그래프: 간선에 방향 있음 (A → B)무방향 그래프: 방향 없음 (A — B)가중치 그래프는 “비용/거리/시간” 같은 현실 문제 모델링에 적합💭 예: 최단 경로, 추천 시스템, 의존성 분석사이클이 존재할 수 있음..

What I Learned/etc. 2026.01.05

[CS] 복잡도

복잡도란?입력 데이터의 크기(N)가 커질 때, 알고리즘이 얼마나 오래 걸리고(시간), 얼마나 많은 메모리를 쓰는지(공간)를 수치로 표현한 것→ “이 코드, 데이터 많아지면 버틸 수 있어?”를 판단하는 기준 1. 시간복잡도입력 크기 N에 따라 어떠한 알고리즘이 실행되는 데 걸리는 시간주요 로직의 반복 횟수를 중점으로 측정컴퓨터 성능과 무관하게 알고리즘 자체의 효율을 비교 가능 → 효율적은 코드로 개선하는데 쓰이는 척도서버, 대용량 데이터, 실시간 처리에서 필수Big-O 표기법 코드보통 Big-O 표기법으로 나타냄표기의미예시O(1)항상 일정배열 첫 값 접근 / 엘리베이터 버튼 한 번 누르기O(log N)절반씩 줄어듦이진 탐색O(N)N에 비례한 번 순회 / 사람 한 명씩 줄 세우기O(N log N)효율적 정렬..

What I Learned/etc. 2026.01.05

[CS] 인덱스

1. 인덱스의 필요성인덱스란 데이터를 빠르게 찾을 수 있는 하나의 장치인덱스를 설정하면 테이블에서 찾고자하는 데이터를 빠르게 검색 가능2. B-트리보통 B-트리 자료 구조로 구성루트 노드 - 브랜치 노드 - 리프노드로 나뉨인덱스는 1) 효율적인 단계를 거쳐 모든 요소에 접근할 수 있는 균형 잡힌 트리 구조 2) 트리 깊이의 대수확장성 때문에 효율적대수확장성트리 깊이가 리프 노드 수에 비해 매우 느리게 성장하는 것인덱스가 한 깊이씩 증가할 때마다 최대 인덱스 항목의 수는 4배씩 증가3. 인덱스를 만드는 방법인덱스를 만드는 방법은 DB마다 다르다.1) MySQL클러스터형 인덱스테이블당 하나만 설정 가능PK 옵션으로 기본키를 만들면 클러스터형 인덱스 생성 가능세컨더리 인덱스보조 인덱스 → 여러 개의 필드 값을..

What I Learned/etc. 2025.12.31

[CS] ERD와 정규화 과정

1. ERD데이터 베이스를 만들기 전에 데이터 구조와 관계를 시각적으로 정리하는 단계릴레이션 간의 관계들을 정의한 것시스템의 요구 사항을 기반으로 작성됨디버깅 또는 재설계가 필요한 경우에도 설계도 역할 담당관계형 구조로 표현할 수 있는 데이터를 구성하는 데 유용But, 비정형 데이터는 충분히 표현할 수 없음🌱 비정형 데이터: 미리 정의된 데이터 모델이나 정의된 방식이 없는 정보 2. 정규화 과정릴레이션 간의 잘못된 종속 관계로 인해 데이터베이스 이상 현상이 일어나서, 이를 해결하거나 저장 공간을 효율적으로 사용하기 위해 릴레이션을 여러 개로 분리하는 과정데이터베이스 이상 현상삽입 이상 : 불필요한 정보를 함께 저장하지 않으면 어떤 정보를 저장하는 것이 불가능하다.갱신 이상 : 반복된 데이터 중에 일부..

What I Learned/etc. 2025.12.30

[CS] CPU 스케줄링 알고리즘

여러 프로세스 중 어떤 프로세스에게 CPU를 할당할지 결정하는 정책CPU 스케줄링의 목표CPU 이용률 ↑ 하드웨어 효율 관점CPU가 놀고 있지 않도록주어진 시간에 많은 일을 하게시스템 성능 관점처리량 ↑준비 큐에 있는 프로세스는 ↓ 자원 공정성 관점불필요한 대기 ↓📝준비큐가 길다는 것은? 실행할 준비는 됐지만 CPU를 못받아 대기중이라는 뜻.응답시간 ↓ 사용자 체감 UX 관점사용자가 '멈췄다'고 느끼지 않도록CPU 스케줄링의 4가지 목표는CPU를 놀리지 않으면서,많은 일을 공정하게 처리하고,사용자가 빠르다고 느끼게 만들기 위해 존재한다.1. 비선점형 방식운영체제 초창기에는 단일 작업 위주, 사용자 입력 즉시 반응 X, 시스템 구조 단순함이 중요했기때문에 구현이 단순하고, 컨텍스트 스위칭을 최소화하며,..

What I Learned/etc. 2025.12.24

[CS] 메모리 관리

2-1. 가상 메모리가상 메모리: 물리 메모리 크기보다 큰 주소 공간을 제공하는 메모리 관리 기법각 프로세스에 독립적인 가상 주소 공간 제공물리 메모리와의 매핑은 운영체제가 관리메모리 보호 및 효율적 사용 목적(1) 스와핑스와핑: 프로세스 단위로 메모리를 보조 저장장치로 이동시키는 기법메모리 부족 시 비활성 프로세스 디스크 이동필요 시 다시 메모리로 적재컨텍스트 스위칭 비용 증가 요인(2) 페이지 폴트페이지 폴트: 접근한 페이지가 물리 메모리에 존재하지 않는 상황가상 주소 접근 시 발생디스크에서 해당 페이지 적재페이지 테이블 갱신 후 명령 재실행성능 저하 주요 원인2-2. 스레싱스레싱: 페이지 교체 작업 과다로 인한 시스템 성능 급락 상태CPU 사용률 급감실행 시간 대부분을 페이지 교체에 소비메모리 부족..

What I Learned/etc. 2025.12.23

[CS] 운영체제와 컴퓨터

1. 운영체제의 역할과 구조1) 운영체제의 역할- 운영체제란 하드웨어 자원과 사용자 프로그램 사이의 중재 시스템- 응용 프로그램이 CPU, 메모리, 디바이스를 직접 제어하지 못하도록 제한하고, 운영체제가 정해진 규칙에 따라 자원을 분배·관리하는 구조프로세스 관리다중 프로그램 실행 환경 제공, 프로세스 생성·종료·상태 관리, CPU 스케줄링여러 프로그램이 동시에 실행되는 것처럼 보이도록 관리각 프로세스의 실행 상태를 추적하며 CPU 사용 순서 결정하나의 프로세스가 CPU를 독점하지 못하도록 제어메모리 관리프로세스별 독립 주소 공간 제공, 가상 메모리 기반 효율적 메모리 사용, 메모리 보호각 프로세스가 자신만의 메모리를 사용하는 것처럼 보이게 구성실제 물리 메모리는 운영체제가 매핑 관리잘못된 메모리 접근으로..

What I Learned/etc. 2025.12.23

[CS] IP주소

브라우저 요청이 네트워크를 통해 전달되는 방식브라우저에서 발생하는 모든 요청(fetch, axios, 이미지 로딩 등)은결국 IP 주소 기반의 네트워크 통신 위에서 동작한다.1. ARP (Address Resolution Protocol)IP 주소는 논리적인 주소이고,실제 네트워크에서 데이터 전송은 물리적인 주소(MAC 주소)를 기준으로 이루어진다.ARP는 이 두 주소를 연결해주는 프로토콜이다. 즉, ARP는 가상 주소인 IP 주소를 실제 물리적 주소(MAC 주소)로 변환해주는 역할을 한다. 🔎 MAC 주소를 IP 주소로 변환하는 프로토콜은 RARP이며, 현재는 거의 사용되지 않는다.✅ 실제 통신 과정에서의 ARP브라우저가 서버의 IP 주소로 요청을 보낸다같은 네트워크(LAN) 내에 있다면→ ARP 요..

What I Learned/etc. 2025.12.18

[CS] 네트워크의 기초

네트워크란 노드(서버, 라우터, 스위치 등 네트워크 장치)와 링크(유선 혹은 무선)가 서로 연결되어 있으며 리소스를 공유하는 집합을 의미.1. 처리량과 지연시간1. 처리량 얼마나 많이단위 시간당 링크 내에서 얼마나 많은 데이터를 성공적으로 전달 할 수 있는가단위는 bps (초당 전송 또는 수신 되는 비트수)“많은 트래픽을 처리한다” = “많은 처리량을 가진다”처리량은 사용자들이 많이 접속할 때마다 커지는 트래픽, 네트워크 장치 간의 대역폭, 네트워크 중간에 발생하는 에러, 장치의 하드웨어 스펙에 영향을 받음트래픽이란 특정 시점에 링크 내에 흐르는 데이터의 양.2. 지연 시간 얼마나 빨리요청을 보낸 뒤 응답까지 걸리는 시간. 어떤 메시지가 두 장치 사이를 왕복하는 데 걸린 시간.링크 타입, 패킷 크기, 라..

카테고리 없음 2025.12.15

디자인 패턴의 종류: MVC, MVP, MVVM

MVC 패턴(Model–View–Controller)MVC는 프로그램을 Model, View, Controller 세 역할로 나눠서 화면 로직과 비즈니스 로직을 분리하는 구조.유지보수성과 확장성을 높이기 위해 사용.MVC 구성 요소1) Model데이터와 비즈니스 로직 담당DB 접근, 상태 관리, 규칙 처리 등 핵심 로직 포함View와 직접 연결되지 않음// playlistModel.jsclass PlaylistModel { async getSongs(userId) { return db.query("SELECT * FROM Songs WHERE userId = ?", [userId]); } async addSong(userId, song) { return db.insert("Songs", ..

카테고리 없음 2025.12.09