sagecode 58

[JAVA] 팩토리 패턴(Factory Pattern)이란?

팩토리 패턴이란?객체를 사용하는 코드에서 객체 생성 부분을 떼어내 추상화한 패턴이자 상속 관계에 있는 두 클래스에서 상위 클래스가 중요한 뼈대를 결정하고, 하위 클래스에서 객체 생성에 관한 구체적인 내용을 결정하는 패턴이다. 팩토리 패턴 구현enum PhoneType { APPLE, SAMSUNG}abstract class Phone { String name; public String Phone() { return name; }}class ApplePhone extends Phone { public ApplePhone() { name = "apple"; }}class SamsungPhone extends Phone { public SamsungP..

JAVA 2025.05.22

[JAVA] 싱글톤 패턴(Singleton Pattern)이란?

싱글톤 패턴이란?싱글톤 패턴(Singleton Pattern)은 디자인 패턴 중 생성 패턴으로 하나의 클래스에 오직 하나의 인스턴스만 가지도록 하는 패턴이다. 하나의 클래스를 기반으로 여러가지 인스턴스를 만들 수 있지만, 그렇게 하지 않고 단 하나의 인스턴스를 만들어 이를 기반으로 로직을 만든다. 싱글톤 패턴 구현public class Singleton { private static Singleton singletonInstance; // 생성자를 외부에서 접근하지 못하도록 private 접근제어 private Singleton() {} public static Singleton getInstance() { if (singletonInstance == nul..

JAVA 2025.05.20

[자료구조] (4) Stack 두 개로 Queue 구현하기

2개의 Stack으로 Queue 구현해보기큐는 FIFO(First In, First Out) 방식으로 작동하는 대표적인 자료구조다. 반면 스택은 LIFO(Last In, First Out) 구조다. 얼핏 보면 정반대의 구조처럼 보이지만, 두 개의 스택을 적절히 조합하면 큐와 같은 동작을 흉내 낼 수 있다. Stack이란?스택은 데이터를 "쌓는" 방식으로 관리하는 자료구조다. 가장 마지막에 들어온 데이터가 가장 먼저 나가는 LIFO(Last In, First Out) 구조로 작동한다. 마치 책을 한 권씩 쌓아 올리고, 맨 위에 있는 책부터 꺼내는 방식과 같다. → 연산스택에서 지원하는 기본 연산은 다음과 같다.push(item) : 스택의 맨 위에 데이터를 추가한다.pop() : 스택의 맨 위 데이터를 제..

자료구조 2025.04.25

[자료구조] (3) 해시테이블(Hash Table)이란?

해시테이블(Hash Table)해시 테이블은 (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠르게 데이터를 검색할 수 있는 자료구조이다. 해시테이블은 내부적으로 키를 해시 함수(Hash Function)에 통과시켜 인덱스로 변환하고, 이 인덱스에 데이터를 저장한다.Key('apple') → [Hash Function] → Index(5) → 배열에 저장예를 들어 "apple"라는 문자열을 해시 함수에 넣으면 5라는 인덱스가 나오고, 배열의 5번째 칸에 저장하는 방식이다.왜 해시테이블인가?배열이나 리스트는 인덱스를 통해 값을 찾을 수는 있지만, 특정 값을 찾으려면 결국 선형 탐색을 해야 한다.그에 반해, 해시테이블은 키(Key)를 이용해서 거의 O(1) 시간에 값을 찾아낼 수 있다. 해시함..

자료구조 2025.04.25

[자료구조] (2) 레드블랙 트리(Red-Black Tree)와 이진 트리(Binary Tree)의 차이점

데이터를 효율적으로 저장하고 검색하기 위해 다양한 트리 자료구조(Tree Structure)가 사용된다. 그중에서도 이진 트리와 레드블랙 트리는 많은 프로그래밍 환경에서 자주 등장한다. Java Collection에서 트리 맵(Tree Map), 트리 셋(Tree Set)의 경우 레드블랙 트리를 사용한다. 그럼 이진트리와 레드블랙 트리는 어떤점이 다를까? 이진 트리(Binary Tree)란?이진 트리는 모든 노드가 최대 두 개의 자식 노드(left, right)를 가지는 트리 구조이다. 10 / \ 5 15노드 : 트리 구조의 기본 단위로, 값(data)을 저장하고 다른 노드와의 연결을 가짐루트(Root) 노드 : 트리의 제일 위에 있는 시작 노드자식 노드 : 어떤 노드의 아래에 연결된..

자료구조 2025.04.24

[백엔드 면접 질문 준비] (7) RDB에서 페이징 쿼리의 필요성

페이징 쿼리(Paging Query)란?페이징 쿼리(Paging Query) 는 전체 데이터를 부분적으로 나누어 데이터를 조회하거나 처리할 때 사용됩니다. 데이터를 상대적으로 작은 단위로 나누어 처리하기 때문에 데이터베이스나 애플리케이션의 리소스 사용 효율이 증가하며, 로직 처리 시간을 단축 시킬 수 있습니다. MySQL에서 페이징 쿼리는 일반적으로 LIMIT, OFFSET 구문을 사용하여 작성합니다. 페이징 쿼리를 왜 사용할까?1. 데이터의 물리적 양실제 서비스에서는 수천, 수만, 수십만 개의 데이터가 존재할 수 있습니다.한 번에 모든 데이터 조회시 발생하는 이슈DB에 과부하 발생네트워크 전송량 증가사용자 브라우저에서도 렌더링 부담2. 사용자 경험 측면사용자는 한 번에 모든 상품을 보기 힘듬일반적으로 ..

Interview Question 2025.04.15

[Spring] Custom AutoConfiguration 만들어보기

AutoConfiguration이란?Spring Legacy와 Spring Boot의 가장 큰 차이점 중 하나는 설정 방식입니다.  기존의 Spring에서는 XML이나 Java Config를 통해 직접 모든 Bean을 등록해야 했지만,  Spring Boot는 AutoConfiguration을 통해 필요한 Bean을 상황에 맞게 자동으로 등록해줍니다.  Auto-configuration을 사용하고 싶다면 @EnableAutoConfiguration 또는 @SpringBootApplication 어노테이션을 @Configuration 클래스 중 하나에 추가하면 됩니다. 간단한 AutoConfiguration 만들기실제로 나만의 AutoConfiguration 클래스를 만들어보겠습니다. 한국말로 "안녕하세요..

SPRING 2025.04.10

[Spring] MSA(MicroService Architecture) 구현

왜 마이크로서비스를 구현하게 되었는가?기존에는 하나의 Spring Boot 프로젝트 안에 결제, 주문, 인증.인가 등의 기능을 모두 넣는 방식으로 개발을 해왔지만, 실제 서비스에서는 각 도메인을 독립적으로 분리해서 관리하는 방식이 더 일반적이다. 왜 단일 프로젝트가 아닌 마이크로서비스로 구성했는가?단일 모놀리식(Monolithic) 아키텍처는 개발 초기에는 구조가 간단하고 빠르게 구축할 수 있다는 장점이 있다. 하지만 기능이 많아질수록 다음과 같은 문제들이 생긴다:코드베이스가 커져 유지보수가 어려움빌드/배포 시 전체 시스템이 영향을 받음도메인마다 다른 팀이 협업하기 힘듦특정 기능 하나가 문제가 생기면 전체 서비스에 영향을 줄 수 있음반면 마이크로서비스 아키텍처는 각 기능(예: 결제, 주문, 인증.인가 등..

SPRING 2025.04.09

[백엔드 면접 질문 준비] (6) JVM이란 무엇인가?

JVM이란?JVM(Java Virtual Machine)은 자바 프로그램을 실행하기 위한 가상 머신(Virtual Machine)입니다. 이름 그대로 물리적인 컴퓨터가 아니라, 프로그램 위에서 동작하는 소프트웨어 기반의 컴퓨터라고 이해할 수 있습니다. 자바로 작성된 코드는 .java 파일로 저장된 뒤, 자바 컴파일러(javac)를 통해 바이트코드(.class)로 변환됩니다. 이 바이트코드는 OS나 하드웨어와 무관한 중간 형태의 코드이며, JVM이 이 바이트코드를 해석하거나 실행합니다. 즉, JVM은 자바 바이트코드를 받아서 실제로 프로그램이 동작하도록 만들어주는 역할을 합니다. 왜 JVM이 필요한가?JVM의 가장 큰 특징은 운영체제(OS)에 독립적이라는 점입니다. 자바는 "한 번 작성하면, 어디서나 실행..

Interview Question 2025.04.05

[백엔드 면접 질문 준비] (5) 프로세스와 스레드의 차이는 무엇인가요?

프로그램 → 프로세스 → 스레드 : 실행 단위의 흐름프로그램 : 아직 실행되지 않은 정적인 파일 (예: .exe, .jar 등)프로세스 : 프로그램이 실행되어 운영체제로부터 자원을 할당받은 단위스레드 : 프로세스가 할당받은 자원을 사용하여 실제로 작업을 수행하는 실행 흐름의 단위코드 덩어리인 프로그램이 실행되면 프로세스가 되고, 그 안에서 작업을 수행하는 흐름이 스레드입니다. 프로세스(Process)란?실행 중인 프로그램으로, OS로부터 독립된 메모리 공간을 할당받음각 프로세스는 Code, Data, Heap, Stack 등의 메모리 공간을 독립적으로 가짐하나의 프로세스는 다른 프로세스에 직접 접근할 수 없음 (보안상 격리됨)예시: 크롬과 카카오톡을 동시에 실행하면 각각 독립적인 프로세스입니다.스레드(T..

Interview Question 2025.04.04