반응형

java 10

[Java] CompletableFuture 클래스 사용 방법

CompletableFuture 클래스란? Java 8부터 도입된 클래스로, 비동기적인 작업을 처리하고 결과를 다루는 데 사용된다. 1. 비동기 실행 방법 1-1) runAsync 비동기로 작업을 실행하고 결과를 반환하지 않고, Runnable 인터페이스를 구현한 람다 표현식으로 정의된다. CompletableFuture future = CompletableFuture.runAsync(() -> { // 비동기로 실행될 작업 }); 1-2) supplyAsync 비동기로 작업을 실행하고 결과를 제공하는 CompletableFuture를 반환한다. Supplier 인터페이스를 구현한 람다 표현식으로 정의된다. CompletableFuture future = CompletableFuture.supplyAsy..

Java 2023.06.02

[Java] 데이터 전달 Map과 DTO 장단점

데이터를 전달, 저장하기 위해서 Map나 DTO를 사용하게 된다. 1. Map의 장단점 1-1) 장점 유연성: Map은 동적으로 필드를 추가하거나 제거할 수 있기 때문에 데이터 구조가 유연합니다. 필요한 데이터만을 담을 수 있어서 데이터 모델이 유동적인 경우에 유용합니다. 간결성: 데이터를 키-값 쌍으로 저장하기 때문에 구조가 간단하고 직관적입니다. 작은 규모의 데이터를 다룰 때 간편하게 사용할 수 있습니다. 빠른 프로토타이핑: Map을 사용하면 데이터를 빠르게 구성할 수 있어 프로토타이핑 과정에서 효과적입니다. 1-2) 단점 타입 안정성 부족: Map은 동적으로 필드를 추가하거나 제거할 수 있어서 컴파일 시점에 타입 검사가 이루어지지 않습니다. 따라서, 잘못된 키나 타입을 사용할 수 있어 런타임 오류의..

CS 2023.06.01

[Java] Optional 클래스 개념 및 사용 방법

Optional 클래스란? Java 8에서 추가된 기능으로 값이 존재하지 않는 경우(Null)를 다루는 데 사용된다. 이 클래스는 값이 있을 수도 있고 없을 수도 있는 상황을 나타내는 컨테이너 역할을 하며, NullPointerException과 같은 예외를 방지한다. 1. Optional 클래스 주요 메서드 메서드 설명 Optional Optional 객체를 생성하기 위한 제네릭 타입입니다. T는 값의 타입을 나타냅니다. Optional.of(value) 지정된 값을 갖는 Optional 객체를 생성합니다. 값이 null이 아닌지 확인하고, null이면 NullPointerException이 발생합니다. Optional.ofNullable(value) 지정된 값을 갖는 Optional 객체를 생성합니다..

Java 2023.05.31

[Java] 날짜 및 시간 API (Date and Time API) 사용 방법

Java 8에서는 java.time 패키지가 추가되어 날짜와 시간을 다루는 API를 제공한다. 이 API는 이전의 java.util.Date 및 java.util.Calendar 클래스보다 사용하기 쉽고, 더 정확하고 기능을 제공하고있다. 1. java.time 제공 클래스 클래스 설명 LocalDate 날짜를 표현하는 클래스로, 연, 월, 일 정보만 포함 LocalTime 시간을 표현하는 클래스로, 시, 분, 초, 밀리초 정보만 포함 LocalDateTime 날짜와 시간을 모두 포함하는 클래스로, LocalDate와 LocalTime의 조합 Instant 기계적인 시간의 흐름을 나타내는 클래스로, 에포크부터 경과한 시간 표현 Duration 두 시간 간의 지속 시간을 나타내는 클래스로, 시간 기반의 간..

Java 2023.05.30

[Java] 함수형 인터페이스 종류 및 사용 방법

함수형 인터페이스란? Java 8에서 추가된 기능으로 단 하나의 추상 메서드를 가지며, 람다 표현식이나 메서드 참조로 이를 구현할 수 있다. 람다 표현식과 스트림(Stream) API가 도입되면서 함수형 프로그래밍 스타일이 훨씬 더 쉽고 강력해졌으며, 함수형 인터페이스는 이를 지원하기 위한 핵심 요소입니다. 1. 함수형 인터페이스 1-1) 종류 인터페이스 설명 추상 메서드 Supplier 매개변수 없이 값을 제공하는 함수형 인터페이스 T get() Consumer 매개변수를 받아서 값을 소비하는 함수형 인터페이스 void accept(T t) BiConsumer 두 개의 매개변수를 받아서 값을 소비하는 함수형 인터페이스 void accept(T t, U u) Predicate 매개변수를 받아서 논리적인 ..

Java 2023.05.26

[Java] 기본 메서드(Default Methods) 개념 및 사용 방법

기본 메서드란? Java 8에서 추가된 기능으로 인터페이스에 새로운 메서드를 추가하기 위한 방법이다. 이전의 Java 버전에서는 인터페이스에 메서드를 선언하면 해당 인터페이스를 구현하는 모든 클래스에서 해당 메서드를 구현해야 했지만, 기본 메서드를 사용하면 인터페이스에 기본 구현을 제공할 수 있으며, 구현 클래스에서 해당 메서드를 오버라이드하지 않아도 된다. 1. default 메서드 구문 public interface MyInterface { // 추상 메서드 void abstractMethod(); // default 메서드 default void defaultMethod() { // 구현 코드 } } default 키워드를 사용하여 메서드를 선언 중괄호 내부에 메서드의 구현 코드를 작성 defaul..

Java 2023.05.25

[Java] 메서드 참조 사용 방법

메서드 참조 (method reference)란? Java 8에서 추가된 기능으로 메서드를 참조하여 람다식을 더 간결하게 표현할 수 있는 방법이다. 메서드 참조는 함수형 인터페이스를 사용하는 람다 표현식의 축약된 형태로 볼 수 있습니다. 1. 사용방법 1-1) 정적 메서드 참조 클래스이름::정적메서드이름 class StringUtils { public static boolean isNotEmpty(String str) { return str != null && !str.isEmpty(); } } public class MethodReferenceExample { public static void main(String[] args) { List strings = Arrays.asList("Alice", "..

Java 2023.05.24

[Java] 스트림(Stream) API 사용 방법

스트림 API(Stream API)란? Java 8부터 도입된 기능으로, 컬렉션 데이터를 처리하고 변환하는 작업을 간단하게 할 수 있는 API이다. 스트림을 사용하면 데이터 처리를 파이프라인 형식으로 연결하여 선언적으로 표현할 수 있다. 1. Stream API 구문 import java.util.Arrays; import java.util.List; public class StreamExample { public static void main(String[] args) { List numbers = Arrays.asList(1, 2, 3, 4, 5); // 스트림 생성 numbers.stream() // 중개 연산: 짝수만 필터링 .filter(n -> n % 2 == 0) // 중개 연산: 제곱값으로..

Java 2023.05.23

[Java] 람다 표현식 사용 방법

람다 표현식(Lambda Expressions)이란? Java 8에서 도입된 함수형 프로그래밍의 핵심 기능으로 람다 표현식은 익명 함수(Anonymous Functions)를 간결하게 표현하는 방법이다. 함수를 변수에 할당하거나 다른 함수에 전달하는 등의 작업을 수행할 수 있다. 1. 람다 표현식 구문 (parameter) -> { expression } parameter : 매개변수를 정의하고, 매개변수를 받지 않는 경우 빈 괄호 '()'를 사용 expression : 실행할 함수를 정의한다. 식(expression)이 하나인 경우 중 괄호 '{}'를 생략할 수 있다. 1-1) 익명함수와 람다 표현식 비교 // 익명 함수 Function anonymousFunction = new Function() {..

Java 2023.05.22

옵저버(Observer ) 패턴 개념 및 구현 방법(Java, JavaScript)

Observer Pattern 옵저버 패턴(Observer Pattern)이란? 주체가 어떤 객체의 상태 변화를 관찰하다가 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 여기서 주체란 객체 상태 변화를 보고 있는 관찰자이며, 옵저버들이란 이 객체의 상태 변화에 따라 전달되는 메서드 등을 기반으로 ‘추가 변화 사항’이 생기는 객체들을 의미한다. 1. 옵저버 패턴 구조 1-1) 객체와 주체가 분리 1-1) 객체와 주체가 합쳐짐 2. 옵저버 패턴의 사용 예 2-1) 옵저버 패턴을 활용한 서비스로는 트위터가 있다. 내가 어떤 사람인 주체를 ‘팔로우’했다면, 주체가 포스팅을 올리게 되면 알림이 ‘팔로워’에게 간다. 2-2) 옵저버 패턴은 주로 이벤트 ..

CS 2023.01.10
반응형