Java 37

[자료구조] (1) ArrayList와 LinkedList의 차이

Java CollectionJava는 개발자들이 다양한 자료구조를 사용하게 할 수 있도록 Collection 프레임워크를 지원한다. 이 프레임워크는 데이터를 저장하고 다루는 방식을 추상화하여, 상황에 맞는 자료구조를 손쉽게 선택할 수 있도록 도와준다. 그 중에서도 List는 순서가 있는 데이터 저장에 적합하며, 실무에서 가장 자주 사용되는 컬렉션 중 하나다.Java에서는 대표적으로 ArrayList와 LinkedList가 List 인터페이스를 구현하고 있으며, 기능은 유사하지만 내부 구조와 성능 특성은 크게 다르다. ArrayList란?ArrayList는 List 인터페이스를 상속받은 클래스이다. int[], string[] 같이 정적 배열과는 다르게 크기가 변할 수 있다. 내부적으로 Object[] 배..

자료구조 2025.04.22

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

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

Interview Question 2025.04.15

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

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

Interview Question 2025.04.05

[SQL] JPA란 무엇인가?

JPA란 무엇인가?JPA(Java Persistence API)는 자바 진영의 ORM 기술 표준이다. JPA는 애플리케이션과 JDBC사이에서 동작한다.   ORM이란 무엇인가?ORM(Object-Relational Mapping)은 이름 그대로 객체와 관계형 데이터베이스를 매핑한다는 뜻이다. ORM 프레임워크는 객체와 테이블을 매핑해서 패러다임의 불일치 문제를 개발자 대신 해결해준다. 예를 들어 ORM 프레임워크를 사용하면 객체를 데이터베이스에 저장할 때 INSERT SQL을 직접 작성하는 것이 아니라 객체를 마치 자바 컬렉션에 저장하듯이 ORM 프레임워크에 저장하면 된다. 그러면 ORM 프레임워크가 적절한 INSERT SQL을 생성해서 데이터베이스에 객체를 저장해준다. 따라서 ORM 프레임워크는 객체 ..

DATABASE 2025.02.12

[Spring Boot] 스프링(Spring) vs 스프링 부트(Spring Boot)

1. Spring FrameworkSpring은 Java 애플리케이션 개발을 위한 오픈소스 프레임워크로, 좀 더 가벼운 애플리케이션 개발을 목적으로 설계되었다. Spring 프레임워크를 사용했을 때, 장점은 다음과 같다.유연성 : Spring은 여러 기술과 잘 통합되며, 다양한 아키텍처 패턴을 선택할 수 있다. XML, Java Config, 애노테이션 기반 설정을 모두 지원하여 개발자의 선호에 따라서 유연하게 선택가능하다.DI(Dependency Injection) : 객체 간의 의존성을 외부에서 관리하여 유연하고 테스트 가능한 코드를 작성할 수 있다.AOP(Aspect-Oriented Programming) : 로깅, 트랜잭션 관리 등 공통 관심사를 분리하여 코드의 가독성과 유지보수성을 높인다.다양한..

SPRING 2024.12.23

[JAVA] 예외클래스와 예외처리

1. 예외(Exception)와 예외 클래스예외란? 사용자의 잘못된 조작 또는 개발자의 잘못된 코딩으로 인해 발생하는 프로그램 오류를 말한다. 예외가 발생되면 프로그램은 곧바로 종료된다는 점과 에러와 비슷하다. 하지만 예외 처리(Exception Handling)을 통해 프로그램을 종료하지 않고 정상 실행 상태가 유지되도록 할 수 있다. 예외에는 두 가지 종류가 있다.일반 예외와 실행 예외일반 예외는 프로그램 실행시 발생할 가능성이 높기 때문에 컴파일 하는 과정에서 해당 예외 처리 코드가 있는지 검사한다. 만약 예외 처리 코드가 없다면 컴파일 오류가 발생한다. 실행 예외는 실행 시 예측할 수 없이 갑자기 발생하기 때문에 컴파일하는 과정에서 예외 처리 코드가 있는지 검사하지 않는다.  자바에서는 예외를 클..

JAVA 2024.12.08

[JAVA] Heap 메모리 구조와 Garbage Collection

자바 프로그램이 실행되면 JVM은 OS로부터 메모리를 할당받고, 그 메모리를 용도에 따라서 여러 영역으로 나누어 관리하한다. JVM의 메모리 공간은 크게 Static 영역, Stack영역, Heap 영역으로 구분되는데 Heap영역에 대해서 자세히 알아보도록 하자.1. Heap 영역JVM이 관리하는 프로그램 상에서 데이터를 저장하기 위해 런타임 시 동적으로 할당하여 사용하는 영역이다.참조형 데이터 타입을 갖는다 : 값이 저장되어 있는 곳의 주소값을 저장하는 공간이다.클래스인터페이스배열열거Heap 영역은 Stack 영역과 다르게 보관되는 메모리가 호출이 끝나더라도 삭제되지 않고 유지된다.stack은 스레드 갯수마다 각각 생성되지만, heap은 몇개의 스레드가 존재하든 상관없이 단 하나의 Heap 영역만 존재..

JAVA 2024.12.08

[JAVA] 중첩클래스, 중첩인터페이스

1. 중첩 클래스(Nested Class)중첩 클래스는 한 클래스 내부에서 정의한 클래스를 말한다. 중첩 클래스를 사용하면 두 클래스의 멤버들을 서로 쉽게 접근할 수 있고, 외부에는 불필요한 관계 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다.인스턴스 멤버 클래스(inner class)static 키워드 없이 중첩 선언된 클래스를 말한다. 인스턴스 멤버 클래스는 인스턴스 필드와 메소드만 선언이 가능하고 정적 필드와 메소드는 선언할 수 없다.class OuterClass { // 인스턴스 멤버 클래스 class InnerClass { InnerClass {} // 생성자 int field1; // 인스턴스 필드 void method1() { // 인스턴스 메소..

JAVA 2024.12.03

[JAVA] 디자인패턴 - 데코레이터 패턴(Decorator Pattern)을 알아보자

1. 데코레이터 패턴(Decorator Pattern)데코레이션 패턴은 구조 패턴 중 하나로, 객체의 동작을 확장할 수 있도록 해주는 패턴이다. 기본 기능을 구현한 후 추가할 수 있는 기능의 종류가 많은 경우, Decorator 클래스로 정의 한 뒤 Decorator 객체를 조합함으로써 추가 기능을 덧붙인다.  데코레이터 패턴을 왜 사용하는가?데코레이터 패턴을 사용하면 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있다. 상속보다는 구성(Composition)을 활용하여 객체의 유연성과 재사용성을 높인다.구성(Composition)이란? 객체의 재사용과 확장을 위해 사용하는 설계 기법 중 하나로 클래스간의 "포함(has a ~)" 관계를 표현한다. 객체를 상속하는게 아닌 다른 객체를 멤버 변수로 포..

JAVA 2024.12.03

[JAVA] 디자인패턴 - 전략 패턴(Strategy Pattern)을 알아보자

1. 전략 패턴(Strategy Pattern)전략 패턴은 행위패턴에 속하는 패턴이다. 기능은 같지만 다른 전략을 가진 클래스들을 캡슐화하여 서로 교환이 가능하도록 하는 패턴이다. 어떤 목적을 달성하기 위하여 일을 수행하는 방식인 알고리즘을 여기서 전략이라고 한다.전략 패턴을 왜 사용하는가?전략 패턴을 사용하면 유지보수가 용이하다. 객체들이 공통으로 할 수 있는 행위들을 캡슐화 하는 인터페이스를 정의하여, 객체의 행위를 동적으로 바꾸고 싶은 경우 직접 각각의 클래스에서 행위를 수정하는 것이 아닌 전략을 바꿔주기만 함으로써 행위를 유연하게 확장할 수 있다.public interface Moveable { public void move();}public class Train implements { ..

JAVA 2024.12.02