전체 글 112

[CS] OSI 7계층이란 - 각 계층 역할 정리

OSI 7계층이 뭐고 각 계층이 무슨 역할을 하는지, 웹 요청 예시와 함께 간단히 정리했습니다. OSI 7계층이란네트워크 통신 과정을 7단계로 나눠서 정리한 표준 모델입니다. 데이터가 컴퓨터를 떠나 상대방에게 도착하기까지, 어떤 단계를 거치는지 계층별로 역할을 나눠놓은 것이라고 보면 됩니다.계층 - 이름 - 역할 - 예시 7응용(Application)사용자가 직접 접하는 서비스HTTP, FTP6표현(Presentation)데이터 형식 변환, 암호화SSL/TLS, 인코딩5세션(Session)연결 유지, 세션 관리로그인 세션4전송(Transport)신뢰성 있는 전달, 포트 구분TCP, UDP3네트워크(Network)목적지까지 경로 찾기IP, 라우터2데이터링크(Data Link)같은 네트워크 내 전달MAC 주..

DEV/cs 2026.09.25

[CS] 큐(Queue)란 - 구조와 활용 예시

큐 자료구조가 뭐고, 스택과 뭐가 다른지, 실제로 어디에 쓰이는지 자바 예시와 함께 정리했습니다. 큐란한쪽 끝(뒤)에서 데이터를 넣고, 반대쪽 끝(앞)에서 데이터를 꺼내는 자료구조입니다. 가장 먼저 넣은 데이터가 가장 먼저 나온다는 뜻에서 FIFO(First In First Out) 구조라고 부릅니다. 놀이공원 줄서기를 떠올리면 됩니다. 먼저 줄 선 사람이 먼저 입장합니다.기본 연산offer(또는 enqueue): 뒤쪽에 데이터를 추가poll(또는 dequeue): 앞쪽 데이터를 꺼내면서 제거peek: 앞쪽 데이터를 제거하지 않고 확인만 javaimport java.util.Queue;import java.util.LinkedList;Queue queue = new LinkedList();queue.of..

DEV/cs 2026.09.24

[CS] RESTful API란 - REST의 의미부터 쉽게

REST가 무슨 뜻인지, RESTful API가 어떤 규칙을 지키는지 간단한 코드와 함께 정리했습니다. REST란REpresentational State Transfer의 줄임말로, "자원(사용자, 게시글 등)의 상태를 표현해서 주고받는다"는 뜻입니다.2000년 로이 필딩이 제안한 개념으로, 지금은 웹 API 설계의 표준 방식입니다.핵심 규칙: 주소는 자원, 메서드는 행동 ❌ GET /getUsers❌ POST /deleteUser/1✅ GET /users - 조회✅ POST /users - 생성✅ PUT /users/1 - 수정✅ DELETE /users/1 - 삭제주소에 동사를 넣지 않고, 같은 /users 주소를 GET/POST/PUT/DELETE로만 구분합니다...

DEV/cs 2026.09.23

[CS] Axios 사용법 정리 - 설치부터 인터셉터까지

자바스크립트 HTTP 클라이언트 axios의 기본 사용법을 GET/POST부터 인스턴스, 인터셉터까지 예시와 함께 정리했습니다. axios란브라우저와 Node.js 양쪽에서 쓸 수 있는 HTTP 클라이언트 라이브러리입니다. Promise 기반이라 .then()이나 async/await로 자연스럽게 다룰 수 있고, JSON 자동 파싱·에러 처리·인터셉터 같은 편의 기능이 내장되어 있어서 실무에서 많이 씁니다. 설치 bashnpm install axios javascriptimport axios from "axios"; 기본 사용법: GET, POST, PUT, DELETE javascript// GET - 데이터 조회const res = await axios.get("/api/users");console...

DEV/cs 2026.09.22

[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

[CS] JAVA 가비지 컬렉션(GC)이란

자바 가비지 컬렉션이 뭐고 왜 필요한지, Young/Old 영역 구조와 동작 원리를 간단히 정리했습니다.가비지 컬렉션이란더 이상 사용하지 않는 객체를 JVM이 자동으로 찾아서 메모리에서 해제해주는 기능입니다. C/C++처럼 개발자가 직접 free()를 호출해 메모리를 해제할 필요 없이, JVM이 "누구도 참조하지 않는 객체"를 판단해서 알아서 치워줍니다. javaObject obj = new Object(); // 힙에 객체 생성, obj가 참조obj = null; // 참조를 끊음 → 이 객체는 이제 아무도 참조하지 않음(가비지)// GC가 실행되면 이 객체가 메모리에서 회수됨가비지인지 어떻게 판단하나간단히 말하면, 아무 변수도 가리키고 있지 않은 객체가 가비지입니다. 위 예시처럼 obj = null을..

DEV/cs 2026.09.16

[CS] JAVA 인터페이스 vs 추상클래스, 뭐가 다른가

인터페이스와 추상클래스의 차이를, 코드 예시와 함께 간단히 정리했습니다.인터페이스와 추상클래스는 모두 객체지향 프로그래밍에서 공통된 규칙이나 기능을 정의하기 위해 사용합니다.하지만 가장 큰 차이는 “무엇을 위한 것인가?”입니다.인터페이스 → 클래스가 어떤 기능을 해야 하는지 규격을 정하는 것추상클래스 → 여러 클래스가 공통으로 사용하는 기능을 물려주는 것인터페이스(Interface)인터페이스는 클래스가 어떤 동작을 반드시 제공해야 하는지 규격(계약)을 정의합니다.interface Flyable { void fly();}interface Swimmable { void swim();}Flyable은 "날 수 있어야 한다"는 규격을 정의하고,Swimmable은 "헤엄칠 수 있어야 한다"는 규격을 정..

DEV/cs 2026.09.15