CS 8

SSE (Server-Sent Events)

**SSE(Server-Sent Events)**는 서버가 클라이언트에게 실시간으로 데이터를 푸시(Push)하는 기술임.클라이언트는 HTTP 연결을 유지하면서 서버로부터 지속적인 이벤트를 받을 수 있음. SSE는 WebSocket과 비슷하지만 단방향(서버 → 클라이언트) 통신에 최적화된 기술임. 📌 1. SSE(Server-Sent Events)란?✅ SSE의 정의  “SSE는 서버에서 클라이언트로 실시간 이벤트를 전송하는 단방향 통신 기술이다.”“HTTP 연결을 유지하면서 서버가 지속적으로 데이터를 보낼 수 있다.” ✅ SSE의 특징 • 서버 → 클라이언트 단방향 통신 (클라이언트 → 서버는 요청만 가능) • HTTP 기반 연결 (일반적인 HTTP 요청처럼 동작) • 자동 재연결 지원 (연결이 끊어지..

CS 2025.02.19

락(Lock)과 동시성

멀티스레드 환경에서 데이터 일관성을 유지하고 동시성을 제어하기 위해 **락(Lock)**을 사용함.락을 적용하는 방식에는 크게 **비관적 락(Pessimistic Lock)**과 **낙관적 락(Optimistic Lock)**이 있음. 📌 1. 동시성(Concurrency) 문제란?여러 개의 스레드(또는 프로세스)가 같은 데이터를 동시에 접근할 때, 데이터 일관성이 깨지는 문제를 의미함.예를 들어, 은행 계좌에서 잔액을 조회하고 동시에 출금하는 경우를 생각해보자. ✅ 예제 (동시성 문제) 1. 스레드 A: 계좌 잔액 조회 → 100,000원 2. 스레드 B: 계좌 잔액 조회 → 100,000원 3. 스레드 A: 50,000원 출금 → 50,000원 남음 4. 스레드 B: 30,000원 출금 → 70,0..

CS 2025.02.18

OCP 원칙 (Open-Closed Principle)

**OCP(Open-Closed Principle, 개방-폐쇄 원칙)**은 SOLID 원칙 중 하나로,**“확장에는 열려 있고, 변경에는 닫혀 있어야 한다.”**라는 개념을 의미함. 즉, 새로운 기능을 추가할 때 기존 코드를 수정하지 않고 확장할 수 있어야 함.이 원칙을 잘 지키면 코드의 유지보수성과 확장성이 증가하고, 버그 발생 가능성이 줄어듦.📌 1. OCP 원칙이란?✅ OCP(Open-Closed Principle)의 정의  “소프트웨어 요소(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하지만, 변경에는 닫혀 있어야 한다.”  • 확장(Open) → 새로운 기능 추가 가능해야 함. • 변경(Closed) → 기존 코드 수정 없이 기능을 추가해야 함. ✅ 왜 OCP가 중요할까? • 기존 코드를..

CS 2025.02.17

다형성

**다형성(Polymorphism)**은 같은 인터페이스나 부모 클래스를 공유하는 객체들이 각기 다른 방식으로 동작할 수 있는 성질을 의미함.즉, 하나의 객체가 여러 형태를 가질 수 있는 능력을 말함.📌 1. 다형성의 개념다형성은 **객체지향 프로그래밍(OOP)**의 중요한 개념 중 하나로, 상속(Inheritance)과 인터페이스(Interface)를 활용하여 구현됨. ✅ 다형성의 핵심 1. 하나의 부모 클래스 또는 인터페이스를 기반으로 여러 자식 클래스가 서로 다른 동작을 가질 수 있음. 2. 컴파일 시점(정적 바인딩)과 실행 시점(동적 바인딩)에서 객체의 타입이 달라질 수 있음. 3. 코드를 유연하게 작성할 수 있으며, 유지보수성과 확장성이 증가함.📌 2. 다형성의 종류다형성은 크게 **“컴파일..

CS 2025.02.16

DFS, BFS

DFS(깊이 우선 탐색) & BFS(너비 우선 탐색)1. DFS(Depth-First Search, 깊이 우선 탐색)개념DFS(Depth-First Search)는 그래프 탐색 알고리즘 중 하나로, 최대한 깊이 내려간 후, 더 이상 갈 곳이 없으면 되돌아오는 방식으로 탐색함.동작 과정시작 노드를 방문하고 스택에 넣음.현재 노드에서 방문하지 않은 인접 노드가 있으면 해당 노드를 방문하고 스택에 넣음.방문할 수 있는 모든 노드를 방문하면, 스택에서 노드를 하나씩 꺼내면서 탐색을 계속 진행함.스택이 비면 탐색이 종료됨.구현 방법스택(Stack) 또는 재귀(Recursion) 를 사용하여 구현할 수 있음.코드 (Java)import java.util.*;public class DFSSample { stat..

CS 2025.02.14

HTTP 메서드

클라이언트(브라우저)가 서버와 통신할때 요청의 목적을 명확히 하기 위해 사용주요 HTTP 메서드와 목적메서드설명주요 목적GET서버에서 데이터를 조회데이터를 가져올 때 사용POST서버에 데이터를 전송 및 생성데이터를 생성하거나 제출할때 사용PUT서버의 데이터를 전체 수정데이터를 수정하거나 업데이트할때 사용PATCH서버의 데이터를 부분 수정데이터의 일부를 업데이트 할때 사용DELETE서버의 데이터를 삭제데이터를 삭제할때 사용OPTIONS서버에서 허용하는 메서드 조회요청 가능한 메서드 목록 확인HEAD요청에 대한 헤더만 반환응답 데이터 없이 헤더 정보만 확인1. GET목적 : 서버에서 데이터를 요청하고 받아오는데 사용특징 :데이터를 요청할때 URL에 쿼리 문자열로 전달요청한 데이터만 서버가 반환하며, 서버 상..

CS 2024.12.28

[CS] TDD

TDD (Test Driven Development, 테스트 주도 개발)개발 프로세스에서 테스트를 먼저 작성한 후 그 테스트를 통과하는 코드를 작성하는 방식 기본 개념다음 3단계의 사이클을 반복한다1. Red (실패)실패하는 테스트 코드를 작성한다새로운 기능이나 요구사항이 반영되지 않은 상태에서 테스트가 실패해야 한다2. Green (성공)테스트를 통과할 최소한의 코드를 작성한다구현은 간단해야 하며, 테스트를 통과하는 것에만 집중한다3. Refactor (리팩토링)테스트를 통과한 코드를 리팩토링하여 품질을 개선중복코드 제거, 성능 최적화, 가독성 향상 등 코드의 구조를 개선한다테스트가 다시 실패하지 않음을 확인TDD의 목표코드 품질을 높이고 버그 발생 가능성 줄이기작고 검증 가능한 단계로 개발하여 복잡한..

CS 2024.12.13

[CS] 프로세스와 스레드

CPU명령어를 실행하는 연산장치 메모리 (메인메모리)프로세스가 CPU에서 실행되기 위해 대기하는곳 I/O (input / output)파일을 읽고 쓰거나 네트워크 어딘가와 데이터를 주고 받는것입출력장치와 데이터를 주거나 받는것 프로세스실행중인 프로그램각각의 프로세스는 독립된 메모리 공간을 할당 받음명령어와 데이터를 가짐단일 프로세스는 하나의 프로그램만 동작되어서 비효율적임 멀티프로그래밍여러개의 프로그램을 동시에 번갈아가며 실행하지만 하나의 프로그램이 오래 실행되면 다른 프로그램의 대기시간이 길어짐 멀티태스킹멀티프로그래밍의 단점을 보완프로세스를 아주 짧은 시간(quantum)만 실행프로세스의 응답시간을 최소화 하는데 목적하나의 프로세스가 동시에 여러 작업 수행은 못함컨텍스트 스위칭(프로세스에서 다른프로세스..

CS 2024.12.08