Computer Science 19

[네트워크] 3-Way Handshake

3-Way Handshake란?TCP가 통신을 시작하기 전(데이터를 주고 받기 전에)에 클라이언트와 서버 간의 연결이 잘 되어 있는지 확인하기 위해 세 번의 주고 받는 과정을 거치는 것TCP(Transmission Control Protocol, 전송 제어 프로토콜)는 데이터를 신뢰성 있게 전송하는 것이 목표이기 때문에 먼저 서로 통신 가능한 상태임을 확인해야 함과정1. SYN (Synchronize)"나 연결해도 돼?"클라이언트가 서버에 연결 요청 신호(SYN 패킷) 전송클라이언트는 자신이 어떤 순서번호(Sequence Number)로 데이터를 보낼지 알려줌예) 클라이언트 -> 서버: SYN = 1, Seq = 1002. SYN - ACK (Synchronize - Acknowledge)"좋아, 연결하..

Computer Science 2025.10.20

[OS] 멀티스레드 환경과 경쟁 상태(Race Condition)

1. 멀티 스레드 환경이란?하나의 프로세스 내에서 여러 개의 스레드가 동시에 작업을 수행하는 환경여러 작업을 동시에 처리해 시스템 성능 ↑ / UX ↑특징동시 작업 수행여러 스레드가 병렬적으로 동시에 실행되어 효율적인 작업 처리 가능자원 공유같은 메모리 공간을 공유하기 때문에 데이터 교환이 빠름데이터 공유에는 효율적이지만 동시에 접근할 때 문제 발생 가능안정성 문제하나의 스레드에 오류가 발생하면 전체 프로세스 종료하는 문제 발생 → 예외 처리 고도화 필요동기화 필요공유 자원에 동시에 접근하면 충돌이 생길 수 있어 제어 필요문제점동시성 문제여러 스레드가 공유 자원을 동시에 읽고 수정하면서 데이터 일관성이 깨지는 문제경쟁 상태(Race Condition): 여러 스레드가 공유 자원에 동시에 접근할 때, 실행..

Computer Science 2025.10.17

[Algorithm] 이진 탐색(Binary Search)

개념정렬된 리스트에서 특정 값을 빠르고 효율적으로 찾기 위한 알고리즘데이터의 중간 값을 비교하여 탐색 범위를 절반씩 줄여나가는 방식으로 작동하며, 이는 O(log N)의 시간복잡도를 가짐특징정렬 필수반드시 정렬된 데이터에서만 사용 가능빠른 속도매 단계마다 탐색할 범위가 절반으로 줄기 때문에 데이터의 양이 많아질수록 선형 탐색보다 훨씬 빠름작동 방식정렬된 리스트의 가운데 값을 기준으로 탐색 시작찾고자하는 값과 가운데 값 비교찾고자하는 값이 가운데 값보다 크면, 오른쪽 절반을 대상으로 다시 탐색찾고자하는 값이 가운데 값보다 작으면, 왼쪽 절반을 대상으로 다시 탐색찾고자 하는 값을 찾거나, 탐색 범위가 더 이상 줄어들지 않을 때까지 과정 반복Java 코드 예제package com.ajw.algorithm.ar..

Computer Science 2025.10.14

Saga 패턴

MSA각 마이크로서비스에 전용 데이터베이스 할당함. 이때의 장점은 다음과 같음.각 서비스는 자체 데이터를 캡슐화함각 서비스는 특정 요구 사항에 가장 적합한 DB와 스키마 사용 가능각 서비스의 DB는 독립적으로 확장 가능한 서비스 장애는 다른 서비스와 분리됨하지만 서비스 간 데이터 일관성을 복잡하게 만든다는 단점이 있음. 따라서 Saga 패턴 혹은 Outbox 패턴 등 사용Saga PatternSaga 패턴여러 서비스 간의 트랜잭션을 조정해서 MSA 환경에서 데이터 일관성을 유지하는데 도움을 줌여러 서비스(혹은 데이터베이스)가 참여하는 복잡한 비즈니스 작업을 여러 '작은(로컬) 프로세서'로 쪼개서 처리실패 시 처리흐름: 여행 예약 서비스, '항공권 예약 → 호텔 예약 → 그냥 예약'만약 한 단계(예: 예외..

Computer Science 2025.10.11

JWT(JSON Web Token)

JWT란?데이터를 안전하고 간결하게 전송하기 위해 고안된 인터넷 표준 인증 방식토큰 기반 인증에서 범용적으로 사용됨JWT 구조다음과 같이 세 부분으로 나뉘고, 각각은 .으로 구분됨Header (헤더) : 어떤 알고리즘으로 서명했는지, 어떤 타입의 토큰인지 정의Payload (페이로드) : 사용자 정보와 클레임(Claim) 데이터가 담김Signature (서명) : 헤더와 페이로드가 변조되지 않았음을 검증JWT 동작 흐름Access Token / Refresh Token구분Access TokenRefresh Token목적API 요청 시 인증/인가Access Token 재발급유효 기간짧음 (분~시간 단위)김 (일~주 단위)보관 위치보통 메모리/스토리지안전하게 보관 필요Access 토큰 → 실제 API 요청에..

Computer Science 2025.09.29

세션 기반 인증 / 토큰 기반 인증

세션 기반 인증과 토큰 기반 인증의 차이점과 각각의 보안 고려사항에 대해 설명하세요.세션 기반 인증동작 방식사용자가 로그인하면 서버가 세션 ID를 발급하고 서버의 세션 저장소(메모리, DB, Redis 등)에 사용자 상태를 기록.클라이언트는 세션 ID를 쿠키에 담아 요청 시마다 서버에 전달.서버는 세션 저장소에서 세션 ID를 확인해 사용자 인증 여부를 판단.장점서버가 상태(Session State)를 가지고 있어 로그아웃, 세션 만료, 강제 무효화 처리가 용이.보안 사고 발생 시 서버에서 해당 세션을 삭제하면 즉시 차단 가능.보안 고려사항세션 ID 탈취(세션 하이재킹) 방지 → HTTPS 사용, HttpOnly/Secure 쿠키 설정.세션 고정 공격(Session Fixation) 방지 → 로그인 시 세..

Computer Science 2025.09.24

[Algorithm] 시간 초과(TLE) 해결 방법

1. 입출력 최소화sys.stdin.readline 사용불필요한 출력 최소화출력 모아서 한 번에 출력2. 시간 복잡도 줄이기O(n^2) -> O(nlog n) 또는 O(n)으로 줄이기중복 연산 제거수학적 공식이나 패턴 활용3. 자료구조 변경리스트 대신 set, dict 사용메모리 낭비 줄이기4. 문제 특화 최적화큰 수 직접 계산 피하기(팩토리얼, 거듭 제곱 등)소인수분해, 모듈러 연산 등 수학적 성질 활용

Computer Science 2025.08.10

[Algorithm] 자료구조(Data Struct)와 알고리즘(Algorithm)

1. 자료(Data)와 자료구조(Data Structure)자료(data): 저장 공간(memory)에 저장되어, 읽기·쓰기·삽입·삭제·탐색 같은 연산이 가능한 값자료구조(data structure): 자료를 효율적으로 저장하고 관리하기 위한 구조와 연산 방법의 집합(1) 변수 (variable)a = 5 # 쓰기 연산 (write)print(a) # 읽기 연산 (read)(2) 배열(Array) / 리스트(List)A = [3, -1, 5, 7] # 초기화# 접근(Access)print(A[2]) # index 2의 원소 읽기# 쓰기(Write)A[0] = 10# 삽입(Insert)A.append(9)A.insert(1, 20)# 삭제(Delete)A.pop() # 마지..

Computer Science 2025.08.09

트랜잭션 격리수준: 데이터 정합성과 성능 사이의 균형

트랜잭션의 ACID 속성 중 격리성(Isolation)이 보장되지 않을 때 발생할 수 있는 문제점들을 설명하고, 이를 해결하기 위한 트랜잭션 격리 수준들을 설명하세요.트랜잭션 속성: ACID속성의미 목적실무 포인트AAtomicity (원자성)모두 성공 또는 모두 실패(All or Nothing)작업 단위 보호CConsistency (일관성)트랜잭션 전후 데이터 일관성(무결성) 유지데이터 오염 방지IIsolation (격리성)동시에 실행되는 트랜잭션 독립성 유지동시성 이슈 방지DDurability (지속성)성공된 작업은 영구 보존장애 발생 시 복구 보장격리성이 보장되지 않을 때의 주요 문제점1. Dirty Read커밋되지 않은 데이터를 다른 트랜잭션이 읽는 현상2. Non-repeatable Read부정합..

Computer Science 2025.07.24
728x90