본문 바로가기

분류 전체보기

(68)
Java Collection Framework-1 자바 공식 Collection Framework 튜토리얼 Trail: Collections (The Java™ Tutorials) The Java Tutorials have been written for JDK 8. Examples and practices described in this page don't take advantage of improvements introduced in later releases and might use technology no longer available. See Java Language Changes for a summary of updated docs.oracle.com https://en.wikipedia.org/wiki/Java_collections_frame..
Functional Interface 함수형 인터페이스 함수형 인터페이스(Functional Interface)는 자바 8에서 소개된 개념으로, 오직 하나의 추상 메소드만 가지는 인터페이스를 말합니다. 이러한 함수형 인터페이스는 람다 표현식(Lambda Expressions)와 메소드 참조(Method References) 등과 함께 사용됩니다. Java 8에서는 java.util.function 패키지를 통해 많은 표준 함수형 인터페이스를 제공하고 있습니다. 이들 중 몇 가지를 예로 들면: 1. Predicate: T 타입의 객체를 인자로 받아 boolean을 반환하는 함수입니다. `test(T t)`라는 메소드를 가집니다. 2. Consumer: T 타입의 객체를 인자로 받아 결과를 반환하지 않는 함수입니다. `accept(T t)`라는..
자바 예외 처리 Linux Exception Handling CPU에서 발생하는 대부분의 예외는 Linux에서 오류 조건[error conditions]으로 해석됩니다. 그 중 하나가 발생하면 커널은 예외를 발생시킨 프로세스에 비정상적인 조건을 알리는 신호를 보냅니다. 예를 들어 프로세스가 0으로 나누기를 수행하면 CPU는 "나누기 오류"를 발생시킵니다." 예외가 발생하고 해당 예외 처리기가 현재 프로세스에 SIGFPE 시그널를 보낸 다음 복구 또는 (해당 신호에 대해 시그널 핸들러가 설정되지 않은 경우) 중단하는 데 필요한 단계를 수행합니다. ※ Linux Signal # kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8..
Callable & ExecutorService Callable 자바에서 Callable 인터페이스는 멀티스레드 프로그래밍에서 비동기적으로 실행할 작업을 나타내는데 사용됩니다. Runnable 인터페이스와 유사하게 작동하지만, Callable은 작업 실행 후 결과를 반환할 수 있으며, 실행 중에 예외를 던질 수 있다는 점에서 차이가 있습니다. 기본 구조 Callable 인터페이스는 java.util.concurrent 패키지에 정의되어 있으며, 다음과 같은 단일 메서드를 가지고 있습니다: public interface Callable { V call() throws Exception; } 여기서 V는 메서드가 반환할 결과의 타입입니다. 사용 방법 Callable 인터페이스를 구현하는 클래스는 call() 메서드를 구현해야 하며, 이 메서드는 비동기적으..
Generics 4 Type Erasure 제네릭은 컴파일 타임에 더 엄격한 타입 체크를 제공하고 제네릭 프로그래밍을 지원하기 위해 Java 언어에 도입되었습니다. 제네릭을 구현하기 위해 Java 컴파일러는 타입 소거(Type Erasure)를 다음에 적용합니다: 제네릭 타입의 모든 타입 파라미터를 Bounds로 바꾸거나 타입 파라미터가 제한되지 않은 경우 Object로 바꿉니다. 따라서 생성된 바이트코드에는 일반 클래스, 인터페이스 및 메서드만 포함됩니다. 타입 안전을 유지하기 위해 필요한 경우 타입 캐스트를 삽입하십시오. 확장된 제네릭 타입에서 다형성을 유지하기 위해 브리지 메서드를 생성합니다. 타입 소거는 파라미터화된 타입에 대해 새 클래스가 생성되지 않도록 합니다. 결과적으로 제네릭은 런타임 오버헤드를 발생시키지 않..
Jenerics 3 Wildcards 일반 코드에서 와일드카드라고 하는 물음표(?)는 알 수 없는 타입을 나타냅니다. 와일드카드는 다양한 상황에서 사용할 수 있습니다. 때로는 리턴 타입으로 사용됩니다(좀 더 구체적으로 프로그래밍하는 것이 더 나은 방법이긴 하지만). 와일드카드는 제네릭 메서드 호출, 제네릭 클래스 인스턴스 생성 또는 상위 타입에 대한 타입 아규먼트로 사용되지 않습니다. 다음 섹션에서는 상한 와일드카드(Upper Bounded Wildcards) 하한 와일드카드(Lower Bounded Wildcards) 와일드카드 캡처(Wildcards Capture) 를 포함하여 와일드카드에 대해 자세히 설명합니다. Upper Bounded Wildcards Upper Bounded Wildcards를 사용하여 변수에 대..
Jenerics 2 Type Inference 타입 유추는 메서드 호출에 적용할 수 있는 타입 아규먼트(또는 아규먼트)를 결정하기 위해 해당 메소드 호출 및 해당 메서드 선언을 살펴보는 Java 컴파일러의 기능입니다. 추론 알고리즘은 타입 아규먼트의 타입과 (가능한 경우)리턴되는 타입을 결정합니다. 마지막으로 추론 알고리즘은 모든 아규먼트와 함께 작동하는 특정 타입을 찾으려고 시도합니다. 이 마지막 요점을 설명하기 위해 다음 예제에서 타입 추론은 pick 메서드에 전달되는 두 번째 아규먼트가 Serializable 유형임을 확인합니다. static T pick(T a1, T a2) { return a2; } Serializable s = pick("d", new ArrayList()); Type Inference and G..
Jenerics 1 자바 공식 Jenerics 튜토리얼 Why Use Generics? 간단히 말해서, 제네릭은 클래스, 인터페이스 및 메서드를 정의할 때 타입(클래스 및 인터페이스)을 파라미터로 사용할 수 있습니다. 메소드 선언에 사용되는 더 친숙한 formal 파라미터와 마찬가지로, 타입 파라미터는 다른 입력으로 동일한 코드를 재사용할 수 있는 방법을 제공합니다. 차이점은 formal 파라미터에 대한 입력은 값인 반면, 타입 파라미터에 대한 입력은 타입이라는 것입니다. 제네릭을 사용하는 코드는 제네릭이 아닌 코드에 비해 많은 이점이 있습니다: 컴파일 시간에 더 강력한 타입 검사. 자바 컴파일러는 제너릭 코드에 강력한 타입 검사를 적용하고 코드가 타입 안전을 위반하는 경우 오류를 발행합니다. 컴파일 타임 오류를 수정하는 ..
The IoC Container 공식 문서 Introduction to the Spring IoC Container and Beans 이 장에서는 Spring Framework가 제어의 역전(IoC) 원칙을 구현하는 방법에 대해 다룹니다. IoC는 종속성 주입(DI)으로도 알려져 있습니다. 이것은 객체가 자신의 의존성(즉, 그들이 함께 작업하는 다른 객체들)을 오직 생성자 인자, 팩토리 메소드로 전달된 인자, 또는 객체가 생성되거나 팩토리 메소드에서 리턴된 후에 객체 인스턴스에 설정된 속성을 통해서만 정의하는 과정입니다. 그런 다음 컨테이너는 빈을 생성할 때 그 의존성을 주입합니다. 이 과정은 근본적으로 빈이 클래스의 직접 생성 또는 서비스 로케이터 패턴과 같은 메커니즘을 사용하여 자신의 의존성의 인스턴스화나 위치를 제어하는 것의 반대..
토비의 스프링 1.5 스프링의 IoC 참조 스프링 프레임워크의 핵심 구성 요소는 빈 팩토리(Bean Factory)와 애플리케이션 컨텍스트(Application Context)입니다. 이 두 구성 요소는 이전에 설계한 DaoFactory의 개념을 훨씬 더 발전시킨 형태로 이해할 수 있습니다. 빈 팩토리는 스프링의 IoC 컨테이너의 기본 기능을 제공하는 핵심 인터페이스로, 애플리케이션 내의 객체(빈) 생성 및 관리를 담당합니다. 이는 객체의 생명주기와 의존성 관리를 중앙집중적으로 처리하여, 객체 간의 결합도를 낮추고 코드의 재사용성과 유지보수성을 향상시킵니다. 빈 팩토리는 필요에 따라 객체(빈)를 생성하고, 이들 간의 의존성을 주입하여 애플리케이션을 구성합니다. 애플리케이션 컨텍스트는 빈 팩토리에 더 많은 엔터프라이즈 특화 기..