Java

·Framework/Spring
@Controller와 @RestController의 차이@Controller와 @RestController는 Spring Framework에서 웹 컨트롤러를 정의할 때 사용하는 애노테이션입니다. 이 두 애노테이션의 차이는 주로 응답 처리 방식에 있습니다.  @Controller@Controller는 MVC 패턴의 컨트롤러를 정의할 때 사용됩니다. 이 애노테이션은 일반적으로 HTML 뷰를 반환하는 메서드를 작성할 때 사용됩니다. @Controller는 기본적으로 JSP, Thymeleaf 같은 템플릿 엔진을 통해 뷰를 생성하는 데 사용됩니다. 예시:import org.springframework.stereotype.Controller;import org.springframework.ui.Model;imp..
깊은 복사(Deep Copy)와 얕은 복사(Shallow Copy)는 객체 복사의 두 가지 방식으로, 객체를 복사할 때 복사된 객체와 원본 객체 간의 관계를 정의합니다.얕은 복사 (Shallow Copy)얕은 복사는 객체의 가장 바깥쪽만 복사하고, 객체 내부의 가변 필드는 참조만 복사합니다. 즉, 원본 객체와 복사된 객체가 동일한 내부 객체를 참조하게 됩니다. 얕은 복사를 수행할 때는 다음과 같은 사항을 고려해야 합니다:간단한 구조: 얕은 복사는 기본적으로 Object.clone() 메서드를 사용하거나 수동으로 필드를 복사합니다.성능: 얕은 복사는 빠르게 수행되지만, 참조가 공유되기 때문에 원본 객체나 복사된 객체의 내부 상태가 변경될 수 있습니다.예시class Address { String cit..
커스텀 불변 클래스란?자바에서 불변 클래스(Immutable Class)를 만드는 것은 객체의 상태를 한 번 설정하면 변경할 수 없도록 하는 것을 의미합니다. 불변 클래스는 여러 가지 이점을 제공합니다. 예를 들어, 멀티스레드 환경에서 안전하게 사용할 수 있으며, 객체의 불변성 때문에 예상치 못한 부작용을 방지할 수 있습니다. 불변 클래스의 특징객체의 상태를 변경할 수 없다: 모든 필드는 final이어야 한다.객체를 확장할 수 없다: 클래스를 final로 선언하여 상속을 방지한다.모든 필드는 private이어야 한다: 직접 접근을 막기 위해.필드에 대한 setter 메서드를 제공하지 않는다.모든 가변 필드는 복사본을 제공한다: 깊은 복사(deep copy) 또는 불변성 확보를 위해.불변 클래스 만들기다음..
ThreadPoolExecutor란?ThreadPoolExecutor는 Java에서 스레드 풀을 관리하는 강력한 클래스로, 많은 양의 스레드를 효율적으로 관리하고 실행하는 데 사용됩니다. ThreadPoolExecutor는 java.util.concurrent 패키지에 포함되어 있으며, 다양한 설정 옵션을 제공하여 스레드 풀의 동작을 제어할 수 있습니다. 이를 통해 시스템 자원을 보다 효율적으로 사용하고, 성능을 최적화할 수 있습니다.ThreadPoolExecutor의 주요 기능스레드 풀 관리:ThreadPoolExecutor는 여러 스레드를 생성, 재사용, 종료하는 작업을 관리합니다.스레드가 작업을 완료하면 풀로 반환되어 다른 작업을 처리할 준비를 합니다.작업 큐 관리:스레드 풀이 바쁠 때 새 작업을 ..
가비지 컬렉션(Garbage Collection)이란?가비지 컬렉션(Garbage Collection)은 자바의 중요한 기능 중 하나로, 더 이상 사용되지 않는 메모리를 자동으로 회수하여 메모리 관리를 지원합니다. 여기서는 가비지 컬렉션의 기본 개념과 사용하는 알고리즘에 대해 설명하겠습니다.가비지 컬렉션 기본 개념자바의 가비지 컬렉션은 다음 원칙에 따라 동작합니다:객체 추적: 가비지 컬렉터는 각 객체가 참조되고 있는지 추적합니다. 메모리에 존재하는 객체 중에서 사용되지 않는 객체를 식별합니다.자동 회수: 사용되지 않는 객체(즉, 더 이상 참조되지 않는 객체)는 가비지 컬렉터에 의해 자동으로 회수됩니다. 이는 프로그래머가 직접 메모리를 해제하지 않아도 되는 장점을 제공합니다.가비지 컬렉션 알고리즘가비지 컬..
JVM이란?JVM은 Java Virtual Machine의 약자로, 자바 가상 머신을 의미합니다. JVM은 자바 프로그램을 실행하기 위한 가상화된 환경을 제공합니다. 자바 프로그램이 플랫폼 독립적으로 실행될 수 있도록 해주는 핵심 요소입니다. 자바의 메모리 관리는 JVM(Java Virtual Machine)이 담당하며, 여러 영역으로 나누어져 있습니다. 각 영역은 특정 목적에 따라 관리되며, JVM은 이를 통해 메모리 할당 및 해제를 관리합니다. 여기서는 주요한 메모리 영역과 객체, 메소드, 변수의 저장 방법에 대해 설명하겠습니다.자바의 메모리 영역메소드 영역(Method Area 또는 PermGen):클래스 파일에서 로드된 클래스의 정보(클래스 이름, 메소드 정보, 상수 풀 등)가 저장됩니다.JVM..
멀티스레드(Multi-threading) 란?멀티스레드는 하나의 프로세스 내에서 여러 개의 스레드가 동시에 실행되는 것을 말합니다. 각 스레드는 독립적으로 실행될 수 있는 최소 단위의 프로세스 실행 단위입니다. 멀티스레드를 사용하면 여러 작업을 동시에 처리하거나 동시성을 활용하여 프로그램의 성능을 향상시킬 수 있습니다.예시 1: 웹 서버에서의 요청 처리가정: 웹 서버가 동시에 여러 클라이언트 요청을 처리해야 하는 상황입니다.멀티스레드 사용 예시멀티스레드를 사용하여 각 클라이언트 요청마다 새로운 스레드를 생성하여 처리합니다.public class WebServer { public static void main(String[] args) { // 각 요청마다 새로운 스레드 생성 ..
예외처리(Exception) 란?예외처리(Exception handling)는 프로그램이 예상치 못한 상황(예외)을 처리하는 메커니즘입니다. 자바에서 예외는 런타임 오류(Runtime Error)로서 발생할 수 있으며, 이는 프로그램의 정상적인 흐름을 방해하거나 프로그램이 비정상적으로 종료될 수 있습니다. 예외 처리는 이러한 상황에 대응하여 프로그램의 안정성을 높이고, 오류 발생 시 적절히 대응할 수 있도록 합니다.예외의 종류Checked Exception (검사 예외):컴파일러가 강제하는 예외로, 반드시 예외 처리를 해야 합니다. 예를 들어, 파일 입출력에서 발생할 수 있는 IOException이나 네트워크 연결에서 발생할 수 있는 SQLException 등이 있습니다.Unchecked Exceptio..
컬렉션 프레임워크(Collection Framework) 란?컬렉션 프레임워크는 자바에서 데이터 그룹(컬렉션)을 저장, 관리, 조작하는 클래스와 인터페이스들의 집합입니다. 이 프레임워크는 데이터를 저장하는 자료구조를 표준화하여 제공하며, 각각의 자료구조는 특정 목적에 맞게 설계되어 있습니다. 주요 인터페이스로는 Collection, List, Set, Queue, Map 등이 있으며, 각 인터페이스를 구현한 다양한 클래스들이 제공됩니다.주요 인터페이스 및 클래스:Collection: 모든 컬렉션 클래스의 최상위 인터페이스로, 원소들의 집합을 나타냅니다.List: 순서가 있는 데이터의 집합을 나타내며, 중복 원소를 허용합니다. (ArrayList, LinkedList 등)Set: 순서가 없고 중복을 허용하..
직렬화(Serialization)란?직렬화(Serialization)는 객체를 데이터 스트림으로 변환하는 과정을 말합니다. 이 과정을 통해 객체는 파일에 저장하거나 네트워크를 통해 전송될 수 있습니다. 주로 Java에서 많이 사용되며, 객체의 상태를 영속적으로 저장하거나 다른 시스템 간에 객체를 전송할 때 유용하게 활용됩니다.사용 방법Java에서는 java.io.Serializable 인터페이스를 구현한 클래스만 직렬화할 수 있습니다. 이 인터페이스는 메소드를 가지지 않지만, 마킹 인터페이스로서 직렬화 가능하다는 표시를 합니다.import java.io.Serializable;public class Person implements Serializable { private String name; ..
베니코드
'Java' 태그의 글 목록