CS 4

[CS] 스택(Stack)이란 - 구조와 활용 예시

스택 자료구조가 뭐고, 어떤 원리로 동작하는지, 실제로 어디에 쓰이는지 자바 예시와 함께 정리했습니다. 스택이란데이터를 한쪽 끝(위)에서만 넣고 뺄 수 있는 자료구조입니다. 가장 나중에 넣은 데이터가 가장 먼저 나온다는 뜻에서 LIFO(Last In First Out) 구조라고 부릅니다. 책을 쌓아올렸다가, 맨 위에 있는 것부터 하나씩 빼는 모습을 떠올리면 됩니다. 기본 연산push: 맨 위에 데이터를 추가pop: 맨 위 데이터를 꺼내면서 제거peek: 맨 위 데이터를 제거하지 않고 확인만 javaimport java.util.Stack;Stack stack = new Stack();stack.push(1);stack.push(2);stack.push(3);System.out.println(stack.p..

DEV/cs 2026.09.21

[CS] Call By Value vs Call By Reference 차이

Call By Value와 Call By Reference의 차이, 그리고 자바가 왜 항상 Call By Value인지 코드로 정리했습니다. 개념 차이Call By Value: 함수(메서드)에 인자를 넘길 때 값을 복사해서 전달. 함수 안에서 그 값을 바꿔도 원본은 영향받지 않음Call By Reference: 함수에 인자를 넘길 때 원본 변수 자체(주소)를 전달. 함수 안에서 값을 바꾸면 원본도 같이 바뀜 기본형(primitive) 예시 - 원본이 안 바뀜 javapublic static void change(int x) { x = 100;}public static void main(String[] args) { int a = 10; change(a); System.out.prin..

DEV/cs 2026.09.19

[CS] TCP vs UDP 비교

TCP와 UDP의 차이, 3-way handshake가 뭔지, 각각 언제 쓰는지 간단히 정리했습니다.공통점둘 다 OSI 전송 계층(4계층) 프로토콜로, 데이터를 "어느 포트로 보낼지" 정해서 전달하는 역할을 합니다. 차이는 연결을 맺고 전달을 보장하느냐에 있습니다. TCP: 연결형, 신뢰성 보장데이터를 보내기 전에 먼저 "연결"을 맺고, 상대가 잘 받았는지 확인해가며 순서대로 전달합니다.연결 설정: 3-way handshake로 연결을 맺은 뒤에만 데이터 전송 시작신뢰성: 패킷이 유실되면 재전송, 순서가 바뀌면 재정렬속도: 확인 절차가 있어서 UDP보다 느림예시: 웹(HTTP), 이메일, 파일 전송처럼 데이터가 하나라도 빠지면 안 되는 경우 UDP: 비연결형, 속도 우선연결 설정 없이 바로 데이터를 보내..

DEV/cs 2026.09.18

[CS] 데드락(Deadlock)이란 - 발생 조건과 해결 방법

데드락이 뭐고 왜 생기는지, 발생하는 4가지 조건과 예방/해결 방법을 자바 예시와 함께 정리했습니다.데드락이란두 개 이상의 스레드(또는 프로세스)가 서로가 가진 자원을 기다리느라, 아무도 진행하지 못하고 영원히 멈춰버리는 상태입니다. java// 스레드 A: lock1을 잡고 lock2를 기다림synchronized (lock1) { synchronized (lock2) { ... }}// 스레드 B: lock2를 잡고 lock1을 기다림synchronized (lock2) { synchronized (lock1) { ... }}A가 lock1을 잡은 채 lock2를 기다리는데, 마침 B가 lock2를 잡은 채 lock1을 기다리고 있으면 둘 다 영원히 풀리지 않습니다. 이게 데드락입니다.발생..

DEV/cs 2026.09.17