백엔드 15

디자인 패턴 : 싱글톤 패턴(Singleton Pattern)

소프트웨어를 설계할 때 하나의 인스턴스만 존재해야 하는 객체가 필요할 때가 있습니다. 예를 들어 설정값을 저장하는 Config 객체, 로그 시스템, 데이터베이스 연결 등은 여러 개의 인스턴스를 만들기보다 전역에서 하나만 존재해야 더 효율적입니다.이런 요구를 만족시키기 위해 사용되는 디자인 패턴이 바로 싱글톤 패턴(Singleton Pattern) 입니다.🔍 싱글톤 패턴이란?싱글톤 패턴은 클래스의 인스턴스를 오직 하나만 생성하고, 어디서든 그 인스턴스에 접근할 수 있는 전역적인 접근 지점을 제공하는 생성 패턴입니다.쉽게 말해, 프로그램 전체에서 단 하나만 존재해야 하는 객체를 보장하는 패턴입니다.📦 언제 사용하나요?설정 정보(Config)나 환경값을 어디서나 접근해야 할 때로깅 시스템, 캐시, 데이터베..

백엔드 2025.05.08

디자인 패턴 : 어댑터 패턴(Adapter Pattern)

프로그래밍을 하다 보면 이미 만들어진 코드(라이브러리, 시스템, 클래스 등) 와 새로운 코드 사이에 인터페이스가 맞지 않아 바로 사용할 수 없는 경우가 자주 생깁니다. 이럴 때 유용하게 사용할 수 있는 디자인 패턴이 바로 어댑터 패턴(Adapter Pattern) 입니다.🔧 어댑터 패턴이란?어댑터 패턴(Adapter Pattern) 은 서로 다른 인터페이스를 가진 클래스들이 같은 방식으로 동작할 수 있도록 중간에 어댑터(Adapter)를 끼워 맞추는 구조적 디자인 패턴입니다.쉽게 말해, 전원 콘센트 어댑터처럼 두 시스템 간의 호환성을 맞춰주는 역할을 합니다.👨‍💻 언제 사용하나요?기존 클래스를 변경하지 않고 새 시스템에 맞춰 사용해야 할 때라이브러리나 외부 API와 내부 로직 간 인터페이스가 다를 ..

백엔드 2025.05.06

트랜잭션이란 무엇이고, ACID는 무엇인가요?

데이터베이스나 분산 시스템을 다루는 개발자라면 한 번쯤은 들어봤을 용어가 있습니다. 바로 트랜잭션(Transaction)과 ACID입니다. 이 글에서는 트랜잭션이 무엇인지, 그리고 트랜잭션을 안전하게 처리하기 위해 데이터베이스가 지켜야 할 ACID 특성에 대해 알아보겠습니다.💡 트랜잭션(Transaction)이란?트랜잭션은 하나의 작업 단위(Unit of Work)입니다. 여러 개의 작업을 하나로 묶어서 모두 성공하거나, 모두 실패해야만 하는 연산 단위를 의미합니다.예를 들어 은행에서 A 계좌에서 B 계좌로 돈을 이체할 때,A 계좌의 잔액을 감소시키고B 계좌의 잔액을 증가시키는이 두 작업은 하나의 트랜잭션입니다. 하나만 성공하고 다른 하나가 실패하면 데이터 일관성이 깨지기 때문이죠.즉, 트랜잭션은 다음..

백엔드 2025.05.06

메모리 누수: Memory Leak

메모리 누수(Memory Leak)란 프로그램이 동적으로 할당한 메모리를 해제하지 않아서, 사용하지 않는 메모리가 계속해서 점유되는 현상을 의미합니다. 메모리 누수가 발생하면 시스템의 가용 메모리가 줄어들고, 성능 저하 및 심각한 경우 프로그램이 크래시할 수도 있습니다.1. 메모리 누수의 원인메모리 누수는 주로 다음과 같은 이유로 발생합니다.(1) 동적 메모리 할당 후 해제하지 않는 경우C, C++ 같은 언어에서는 malloc(), new 등을 사용하여 동적으로 할당한 메모리를 free(), delete로 해제해야 합니다. 그러나 개발자가 실수로 해제하지 않으면 메모리 누수가 발생합니다.void memoryLeak() { int* ptr = new int[10]; // 동적 메모리 할당 //..

백엔드 2025.02.23

객체지향 설계 원칙 (SOLID) 개념과 적용 방법

객체지향 프로그래밍(Object-Oriented Programming, OOP)은 유지보수성과 확장성이 뛰어난 소프트웨어를 개발하는 데 중요한 패러다임입니다. 이를 효과적으로 활용하기 위해서는 객체지향 설계 원칙(SOLID) 을 이해하고 적용하는 것이 필수적입니다.이번 글에서는 객체지향 설계 원칙의 핵심 개념과 실제 프로젝트에서 이를 적용하는 방법을 알아보겠습니다.1. 객체지향 설계 원칙이란?객체지향 설계 원칙은 소프트웨어를 설계할 때 결합도(Coupling)를 낮추고 응집도(Cohesion)를 높여 유지보수성과 확장성을 개선하는 것을 목표로 합니다. 대표적인 원칙으로 SOLID 원칙이 있으며, 이는 다섯 가지의 핵심 원칙으로 구성됩니다.SOLID 원칙SOLID는 다섯 가지 객체지향 설계 원칙의 약어입니..

백엔드 2025.02.17

Java의 Error와 Exception 차이점

Java에서 Error와 Exception은 모두 실행 중 발생할 수 있는 문제지만, 그 개념과 처리 방식이 다릅니다.이번 글에서는 Error와 Exception의 차이점과 예제 코드를 통해 이를 자세히 살펴보겠습니다. 1. Error와 Exception 개념Java에서 발생하는 실행 오류는 크게 두 가지로 나뉩니다.Error : 시스템 레벨에서 발생하는 치명적인 오류 (프로그램 복구 불가능)Exception : 프로그램 실행 중 발생하는 예외 상황 (개발자가 처리 가능)이 둘은 모두 Throwable 클래스를 상속받습니다.🔹 Throwable 클래스 계층 구조java.lang.Throwable ├── java.lang.Error (복구 불가능) └── java.lang.Exception ..

백엔드 2025.02.15

Java 메모리 영역과 동작 원리

Java는 메모리 관리를 자동으로 수행하는 가비지 컬렉터(Garbage Collector, GC) 를 제공하여 개발자가 직접 메모리를 해제하지 않아도 됩니다. 하지만 효율적인 Java 애플리케이션을 개발하기 위해서는 Java의 메모리 구조를 이해하는 것이 중요합니다.이번 글에서는 Java의 메모리 영역과 그 동작 방식을 자세히 살펴보겠습니다.1. Java 메모리 구조 개요Java 애플리케이션이 실행될 때, JVM(Java Virtual Machine) 은 여러 개의 메모리 영역을 관리합니다. JVM 메모리는 크게 Method Area, Heap, Stack, PC Register, Native Method Stack 으로 나뉩니다.🔹 Java 메모리 영역 구성메모리 영역설명Method Area (메서드..

백엔드 2025.02.14

[자바/JAVA] 객체는 뭐로 만들어? Class, Interface, Record?

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영합니다! Java에서 DTO(Data Transfer Object)는 데이터 전송을 위해 사용되는 객체로, 일반적으로 여러 계층(Controller → Service → Repository) 간 데이터를 주고받을 때 활용됩니다.DTO를 만들 때 사용할 수 있는 방법으로 class, record, interface 등이 있으며, 이 글에서는 각 방식의 차이점과 장단점을 살펴본 후, DTO에 자주 사용하는 어노테이션까지 정리해 보겠습니다.1. class를 이용한 DTO🔹 특징일반적인 클래스를 사용하여 DTO를 정의필드, 생성자, getter/setter, toString(), equals(), hashCode() 등을..

백엔드 2025.02.12

[자바/JAVA] DAO, DTO, VO, Entity의 차이점과 역할

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영입니다! Java에서 데이터 관리를 위해 자주 사용되는 개념으로 DAO(Data Access Object), DTO(Data Transfer Object), VO(Value Object), Entity가 있습니다. 각각의 개념이 무엇이며 어떤 역할을 하는지, 그리고 실무에서 어떻게 활용되는지를 정리해 보겠습니다.1. DAO (Data Access Object)📌 정의DAO는 데이터베이스와 직접적으로 상호 작용하는 객체입니다. 주로 SQL 쿼리를 실행하고, 데이터를 조회·삽입·수정·삭제하는 역할을 합니다.📌 역할데이터베이스와 애플리케이션 간의 데이터 전달을 담당SQL 실행 및 트랜잭션 관리데이터베이스 연결 및 자원..

백엔드 2025.02.11

[DB] 관계형(RDB) vs 비관계형(NoSQL) 데이터베이스 비교

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영입니다! 데이터베이스는 시스템의 핵심 요소로, 데이터의 저장 및 관리를 담당합니다. 데이터베이스는 크게 관계형 데이터베이스(Relational Database, RDB) 와 비관계형 데이터베이스(Non-Relational Database, NoSQL) 로 나뉩니다. 이 글에서는 두 개념의 차이점과 각각의 장단점을 비교해 보겠습니다.1. 관계형 데이터베이스 (RDB)관계형 데이터베이스(Relational Database, RDB) 는 데이터를 테이블(table) 기반의 정형화된 구조 로 저장하는 방식입니다. 데이터는 행(row)과 열(column)으로 구성된 테이블 에 저장되며, SQL(Structured Query ..

백엔드 2025.02.10