전체 글 74

JWT(JSON Web Token) 인증 방식 개념

1. JWT란? JWT(JSON Web Token)는 웹 애플리케이션에서 사용자 인증 및 권한 부여를 위해 사용되는 토큰 기반 인증 방식이다. JWT는 서버에서 발급한 토큰을 클라이언트가 저장하고, 이후 요청 시 해당 토큰을 이용해 인증을 수행하는 방식으로 동작한다. 📌 JWT의 특징토큰 기반 인증 방식 → 서버가 세션을 저장할 필요 없음 (무상태성)JSON 형식 사용 → 가볍고, 웹에서 쉽게 활용 가능디지털 서명 포함 → 토큰이 변조되지 않도록 보안 강화다양한 환경에서 사용 가능 → 웹, 모바일, 마이크로서비스 등📌 JWT 인증 방식이 필요한 이유세션 기반 인증의 문제점 해결확장성 높은 인증 시스템 구축 가능REST API와 잘 어울리는 인증 방식2. JWT의 구조JWT는 **세 부분(헤더, 페이로..

컴퓨터공학 2025.03.18

REST API란? RESTful한 설계 원칙

1. REST API란? REST API(Representational State Transfer API)는 HTTP 프로토콜을 기반으로 클라이언트와 서버가 데이터를 주고받는 방식을 의미한다. REST는 웹의 아키텍처 스타일 중 하나로, 리소스(Resource) 중심으로 설계되어 있으며 간결하고 직관적인 URL과 HTTP 메서드를 활용하는 것이 특징이다. 📌 REST API의 주요 개념리소스(Resource) → URI(Uniform Resource Identifier)로 표현됨 (/users, /posts/1 등)행동(Method) → HTTP 메서드(GET, POST, PUT, DELETE 등) 사용표현(Representation) → JSON, XML 등의 형식으로 데이터를 주고받음📌 REST ..

컴퓨터공학 2025.03.17

객체지향 프로그래밍(OOP) 개념과 SOLID 원칙

1. 객체지향 프로그래밍(OOP)란? 객체지향 프로그래밍(Object-Oriented Programming, OOP)은 **객체(Object)**를 중심으로 프로그램을 구성하는 프로그래밍 패러다임이다. 객체란 데이터(속성, 상태)와 메서드(동작, 행동)를 포함하는 독립적인 모듈을 의미하며, 객체 간의 관계를 통해 프로그램이 동작한다. 📌 OOP의 핵심 개념 객체지향 프로그래밍은 다음과 같은 4가지 개념을 기반으로 한다.캡슐화(Encapsulation)객체의 데이터를 외부에서 직접 접근하지 못하도록 보호하고, 필요한 경우 메서드를 통해 접근을 제한하는 개념**정보 은닉(Information Hiding)**을 통해 유지보수성과 보안성을 높일 수 있음예제: private, protected 접근 제어자를 ..

컴퓨터공학 2025.03.17

동적 프로그래밍(Dynamic Programming)의 개념과 예제

1. 동적 프로그래밍(Dynamic Programming)이란? 동적 프로그래밍(DP, Dynamic Programming)은 복잡한 문제를 작은 하위 문제로 나누어 해결한 결과를 저장하여 동일한 계산을 반복하지 않도록 최적화하는 알고리즘 기법이다. 특히, 부분 문제의 결과를 재사용할 수 있는 경우(Overlapping Subproblems)와 최적 부분 구조(Optimal Substructure)를 만족하는 경우에 효과적이다. 📌 핵심 개념:동일한 연산을 반복하지 않도록 결과를 저장(Memoization)작은 문제를 해결한 후 이를 조합하여 큰 문제를 해결하는 방식재귀(Top-Down) 방식과 반복(Bottom-Up) 방식이 존재2. 동적 프로그래밍이 필요한 이유 일반적인 완전 탐색(Brute For..

컴퓨터공학 2025.03.17

그래프(Graph) 자료구조와 최단 경로 알고리즘 (다익스트라, 플로이드 워셜)

1. 그래프(Graph) 자료구조란? 그래프(Graph)는 정점(Vertex)과 간선(Edge)으로 구성된 자료구조로, 객체들 간의 관계를 표현하는 데 사용된다. 정점(Vertex, 노드): 데이터를 저장하는 개체 (예: 도시, 사람, 컴퓨터)간선(Edge): 정점 간의 연결 관계를 나타내는 요소 (예: 도로, 네트워크 링크)그래프는 소셜 네트워크 분석, 지도 네비게이션, 네트워크 라우팅, 인공지능(AI) 경로 탐색 등 다양한 분야에서 활용된다.2. 그래프의 종류2-1. 방향 그래프 vs 무방향 그래프무방향 그래프(Undirected Graph): 간선의 방향이 없으며, 양방향으로 이동 가능예) A—B (A에서 B로 갈 수도 있고, B에서 A로도 갈 수 있음)방향 그래프(Directed Graph, DA..

컴퓨터공학 2025.03.16

해시 테이블(Hash Table)의 구조와 활용 사례

1. 해시 테이블이란? 해시 테이블(Hash Table)은 키-값(Key-Value) 구조를 활용하여 데이터를 빠르게 저장하고 검색하는 자료구조이다. 해시 함수를 이용해 데이터를 특정한 위치에 저장하고, 필요한 값을 빠르게 찾을 수 있도록 한다. 해시 테이블은 **배열(Array)과 연결 리스트(Linked List)**를 조합하여 빠른 탐색, 삽입, 삭제가 가능한 자료구조이다.1-1. 해시 테이블의 기본 원리**해시 함수(Hash Function)**를 사용하여 키(Key)를 특정 인덱스(Index)로 변환한다.변환된 인덱스에 해당 데이터를 저장한다.검색할 때도 동일한 해시 함수를 사용하여 데이터를 빠르게 찾을 수 있다.2. 해시 테이블의 동작 과정2-1. 데이터 저장 과정키(Key)를 해시 함수(Ha..

컴퓨터공학 2025.03.16

탐색 알고리즘 개념 (이진 탐색, DFS, BFS)

1. 탐색(Search) 알고리즘이란?탐색 알고리즘은 원하는 데이터를 찾기 위한 방법론이다. 다양한 데이터 구조에서 탐색할 수 있으며, 효율적인 탐색을 위해 알고리즘을 적절히 선택하는 것이 중요하다. 대표적인 탐색 알고리즘에는 **이진 탐색(Binary Search), 깊이 우선 탐색(DFS), 너비 우선 탐색(BFS)**가 있다.2. 이진 탐색 (Binary Search)2-1. 이진 탐색 개념이진 탐색은 정렬된 배열에서 특정 값을 찾는 효율적인 알고리즘이다. 일반적인 선형 탐색(순차 탐색, O(n))보다 빠르게 동작하며, **시간 복잡도는 O(log n)**이다. 2-2. 이진 탐색 동작 원리배열의 중간 값을 확인한다.찾고자 하는 값이 중간 값보다 작으면 왼쪽 부분 배열을 탐색한다.찾고자 하는 값이 ..

컴퓨터공학 2025.03.16

정렬 알고리즘 비교 (버블 정렬, 퀵 정렬, 병합 정렬)

1. 정렬 알고리즘이란?정렬 알고리즘은 주어진 데이터 집합을 오름차순 또는 내림차순으로 정렬하는 방법을 의미한다. 정렬 방식에 따라 성능 차이가 크며, 상황에 따라 적합한 알고리즘을 선택하는 것이 중요하다. 정렬 알고리즘의 성능은 **시간 복잡도(Time Complexity)**와 **공간 복잡도(Space Complexity)**를 기준으로 평가된다. 시간 복잡도: 데이터 개수(n)에 따른 연산 횟수 (Best / Average / Worst Case 분석)공간 복잡도: 추가적으로 필요한 메모리 사용량2. 버블 정렬 (Bubble Sort) 버블 정렬은 가장 단순한 정렬 알고리즘 중 하나로, 인접한 두 개의 데이터를 비교하여 큰 값을 뒤로 보내는 방식을 반복한다. 즉, 가장 큰 값이 거품처럼 위로 올라..

컴퓨터공학 2025.03.15

파이프라이닝(Pipelining)과 성능 최적화

1. 파이프라이닝(Pipelining)이란? 파이프라이닝(Pipelining)은 CPU에서 여러 명령어를 동시에 처리하여 성능을 향상시키는 기술이다. 하나의 명령어가 완료될 때까지 기다리는 것이 아니라, 여러 개의 명령어를 겹쳐서 실행함으로써 CPU의 활용도를 극대화할 수 있다. ✅ 비유: 자동차 조립 라인전통적인 방식: 한 명이 자동차 한 대를 완성한 후 다음 차를 제작파이프라이닝 방식: 조립 공정을 나누어 여러 명이 동시에 여러 대를 제작📌 즉, 파이프라이닝은 각 단계별로 작업을 나누어 병렬로 처리하여 CPU 성능을 높이는 기법이다.2. 파이프라이닝의 기본 원리 파이프라이닝은 명령어 실행을 여러 단계로 나누어 처리하는 방식이다. 일반적으로 5단계 파이프라인이 사용된다. ✅ CPU의 5단계 파이프라인..

컴퓨터공학 2025.03.15

RISC vs CISC 아키텍처 비교

1. RISC와 CISC 개요 컴퓨터의 CPU(중앙처리장치)는 명령어 집합(Instruction Set Architecture, ISA)을 기반으로 동작한다. CPU의 명령어 집합 아키텍처는 크게 RISC(Reduced Instruction Set Computer, 축소 명령어 집합 컴퓨터) 와 CISC(Complex Instruction Set Computer, 복잡 명령어 집합 컴퓨터) 두 가지 방식으로 나뉜다.RISC: 단순한 명령어 집합을 사용하여 실행 속도를 높이는 방식CISC: 다양한 명령어를 제공하여 소프트웨어 개발을 쉽게 하는 방식📌 쉽게 이해하면, RISC는 간단한 명령어를 빠르게 실행하는 방식이고, CISC는 복잡한 명령어를 한 번에 처리하는 방식이다.2. RISC 아키텍처란? (Re..

컴퓨터공학 2025.03.14