전체 글 109

[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

[CS] 객체지향과 절차지향 프로그래밍이란, 비교

절차지향과 객체지향 프로그래밍이 뭐가 다른지, 같은 예제를 두 방식으로 짜보면서 비교했습니다. 절차지향(Procedural)이란"데이터"와 "그 데이터를 처리하는 함수"를 분리해서, 위에서 아래로 순서대로 실행되는 절차(함수 호출) 중심으로 프로그램을 짜는 방식입니다.C언어가 대표적입니다.// 절차지향 스타일: 데이터(구조체 느낌)와 함수가 분리됨class Account { int balance;}class AccountService { static void withdraw(Account account, int amount) { if (account.balance Account는 데이터만 가지고 있고, withdraw라는 함수가 그 데이터를 밖에서 조작합니다. 데이터와 로직이 따로..

DEV/cs 2026.09.14

[SQL] NoSQL이란 - RDBMS와 비교 + 예시

NoSQL이 뭔지, RDBMS와 뭐가 다른지, 4가지 종류와 각 예시(Redis, MongoDB 등)를 간단히 정리했습니다.NoSQL이란"Not Only SQL"의 줄임말로, 관계형 데이터베이스(RDBMS)처럼 정해진 테이블/행-열 구조를 따르지 않는 데이터베이스를 통틀어 부르는 말입니다. RDBMS와 NoSQL 비교 - RDBMS (예: MySQL) - 스키마 고정, 테이블 형태로 저장id - name - order_id 1철수1001 - NoSQL (예: MongoDB, 문서형) - 스키마 자유, 필드가 문서마다 달라도 됨.* 아래는 이해를 돕기 위해 JSON으로 표현한 것일 뿐, 실제 저장 형식은 DB마다 다릅니다(MongoDB는 내부적으로 BSON이라는 이진 포맷 사용). json{ "id": ..

DEV/SQL 2026.09.13

[AI] LLM, RAG, MCP 정리

LLM, RAG, MCP가 각각 무엇인지 간단하게 정리해보겠습니다. LLM (Large Language Model) Large → 대규모Language → 언어Model → 모델 LLM은 대량의 텍스트 데이터를 학습한 언어 모델입니다.사용자의 질문을 이해하고, 학습한 내용을 바탕으로 다음에 올 단어나 문장을 예측하면서 답변을 생성합니다. 예를 들어 사용자가 "자바에서 인터페이스란?"이라고 질문하면, LLM은 학습한 프로그래밍 지식을 바탕으로 답변을 만들어냅니다. 하지만 학습에 포함되지 않은 최신 정보나 특정 회사의 내부 문서처럼 모델이 직접 알 수 없는 정보는 답변에 활용할 수 없습니다.RAG (Retrieval-Augmented Generation) Retrieval → 검색, 가져오기Augmented..

DEV/AI 2026.09.12