java 10

메모리 누수: 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

[자바/JAVA] Null Pointer Exception (NPE)

Java 개발을 하면서 가장 흔히 접하는 예외 중 하나가 바로 **Null Pointer Exception (NPE)**입니다. 이번 글에서는 NPE의 개념, 원인, 예제, 해결 방법, 그리고 방지하는 방법까지 자세히 살펴보겠습니다.1. Null Pointer Exception이란?**Null Pointer Exception (NPE)**은 Java에서 null 값을 참조하려고 할 때 발생하는 런타임 예외입니다. 즉, null인 객체에 대해 메서드를 호출하거나 필드에 접근하려고 하면 NullPointerException이 발생합니다.NPE는 java.lang.NullPointerException 클래스를 통해 제공되며, 체크 예외(Checked Exception)가 아닌 **런타임 예외(Runtime E..

백엔드 2025.02.08

[자바/JAVA] 자바 스프링 AOP(Aspect-Oriented Programming) 이해하기

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영입니다!1. AOP란?AOP(Aspect-Oriented Programming, 관점 지향 프로그래밍)는 공통 관심 사항(cross-cutting concerns) 을 분리하여 모듈화하는 프로그래밍 기법입니다. 스프링 AOP는 주로 로그, 트랜잭션, 보안, 예외 처리 같은 공통적인 기능을 분리하여 관리할 때 사용됩니다.기존의 객체지향 프로그래밍(OOP)에서는 관심사(비즈니스 로직) 와 공통 기능(로깅, 보안 등) 이 뒤섞이기 쉬운데, AOP를 사용하면 핵심 로직과 공통 기능을 분리할 수 있습니다.2. AOP 핵심 개념🎯 Aspect(애스펙트)공통 기능을 정의하는 모듈입니다.예를 들어, 로깅 기능을 @Aspect로 ..

백엔드 2025.02.08

[자바/JAVA] JPA N+1 문제란?

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영입니다! JPA에 이어시 JPA 사용시 발생할 수 있는 N+1 문제에 대해서 정리했습니다.N+1 문제는 JPA에서 연관된 엔티티를 조회할 때 발생하는 불필요한 추가 쿼리 문제를 의미합니다.즉, 하나의 메인 엔티티(1)를 조회할 때, 연관된 N개의 엔티티를 각각 추가로 조회하면서 총 N+1개의 쿼리가 발생하는 문제입니다. 📌 N+1 문제 발생 예시예를 들어, User와 Order가 1:N 관계를 가지고 있다고 가정해봅시다.@Entitypublic class User { @Id @GeneratedValue private Long id; private String name; @OneToMany(ma..

백엔드 2025.02.05

[자바/JAVA] JPA(Java Persistence API) 개념 정리🚀

안녕하세요. 새내기 개발자입니다. 공부하면서 정리하는 글로 틀린 부분은 언제나 댓글로 환영입니다!📌 JPA란 무엇인가?**JPA(Java Persistence API)**는 자바 애플리케이션에서 관계형 데이터베이스(RDB)를 객체 지향적으로 다룰 수 있도록 지원하는 ORM(Object-Relational Mapping) 기술입니다. SQL을 직접 작성하는 대신, 자바 객체(Entity)와 데이터베이스 테이블 간의 매핑을 통해 데이터 저장 및 조회를 수행할 수 있습니다.1️⃣ JPA의 핵심 개념🔹 1.1 ORM(Object-Relational Mapping) 이란?JPA는 ORM(Object-Relational Mapping) 기술의 한 종류입니다.✅ ORM이란? 객체(Object)와 관계형 데이터베이..

백엔드 2025.02.02