본문 바로가기

개발 언어13

Java 8 Stream API 주요 메서드와 사용 예제 Java 8 Stream API 주요 메서드와 사용 예제 Java 8 Stream API란?Java 8에서 도입된 Stream API는 데이터 컬렉션(예: List, Set, Map)을 보다 쉽고 효율적으로 처리할 수 있도록 설계된 기능입니다. 함수형 프로그래밍 스타일을 지원하며, 데이터를 필터링, 변환, 정렬, 집계하는 작업을 간결하게 표현할 수 있습니다. 이 글에서는 Stream API의 주요 메서드와 그 활용법을 예제를 통해 알아봅니다. Stream API의 주요 특징함수형 프로그래밍 지원: 반복문 없이 선언형 코드 작성 가능.체이닝 가능: 데이터 처리 과정을 간결하게 연결.지연 연산: 최종 연산이 호출될 때만 실행.병렬 처리 지원: 대용량 데이터 처리 시 성능 최적화 가능. Stream API의 .. 2024. 11. 20.
Java 시간 클래스 차이 LocalDateTime OffsetDateTime Java 시간 클래스 차이: LocalDateTime vs OffsetDateTime Java에서는 시간을 다룰 때, 여러 종류의 클래스가 존재합니다. 그중에서도 LocalDateTime과 OffsetDateTime은 날짜와 시간을 나타내기 위한 대표적인 클래스입니다. 이 두 클래스는 날짜와 시간을 저장한다는 점에서는 유사하지만, 시간대와 오프셋 처리 방식에서 중요한 차이점이 있습니다. 이 글에서는 LocalDateTime과 OffsetDateTime의 차이점과 함께 두 객체를 서로 변환하는 방법을 설명합니다. LocalDateTime이란?LocalDateTime은 타임존 정보가 없는 날짜와 시간을 나타내는 클래스입니다. 예를 들어, "2023-10-14T10:15:30"과 같은 형식으로.. 2024. 11. 14.
Java 리액티브 StepVerifier 설명 예제 [Java] 리액티브 프로그래밍 StepVerifier StepVerifier란? StepVerifier는 Reactive Streams API를 사용하는 테스트를 위한 유틸리티 클래스입니다. Mono, Flux와 같은 Reactive Publisher를 테스트하는데 사용됩니다. Java 리액티브 Mono & Flux 참고글 주요 기능 데이터 검증: 예상되는 데이터와 실제 발행되는 데이터를 비교 에러 검증: 예상되는 에러가 발생하는지 검증 완료 검증: Publisher가 완료되었는지 검증 시퀀스 조작: 데이터 발행 순서를 조작하거나 특정 데이터를 건너뛸 수 있습니다. 백프레셔 시뮬레이션: 백프레셔 상황을 시뮬레이션하여 테스트를 수행합니다. 백프레셔란 Publisher에서 생산되는 데이터들의 양이 Subs.. 2024. 2. 20.
Java 리액티브 Mono Flux 설명 예제 [Java] 리액티브 프로그래밍 Flux & Mono 리액티브 프로그래밍 리액티브 프로그래밍은 변화하는 데이터 스트림과 이벤트에 대한 반응을 표현하는 프로그래밍 패러다임입니다. 기본적으로 비동기 방식으로 작동하여 데이터 흐름을 기반으로 코드를 작성하고 데이터 변화에 자동으로 반응하도록 설계되었습니다. 특징 비동기 처리: 스레드와 락에 의존하지 않고 비동기 방식으로 데이터를 처리합니다. 시스템 성능을 향상시키고 콜백 지옥(callback hell)을 방지하는 데 도움이 됩니다. 데이터 흐름 기반 프로그래밍: 데이터 스트림을 기반으로 코드를 작성하여 데이터 변화에 자동으로 반응하도록 설계되어서 코드를 보다 간결하고 유지 관리하기 쉽게 만들어줍니다. 반응형 시스템 구현: 외부 요청에 신속하게 반응하고 빠른 응.. 2024. 2. 6.
Java8 함수형 인터페이스 Function, Consumer, Predicate, Supplier Java8 함수형 인터페이스 Function, Consumer, Predicate, Supplier 예제 바로 가기 함수형 인터페이스 개념 Function Consumer Predicate Supplier 함수형 인터페이스 개념 주요 특징 단 하나의 추상메서드(SAM: Single Abstract Method)만 가지는데 이 메서드가 함수형 인터페이스의 주요 동작을 결정합니다. 람다 표현식으로 표현 가능합니다. Java8에서 추가된 함수형 인터페이스에는 기본적으로 제공하는 함수형 인터페이스인 Function, Consumer, Predicate, Supplier 등이 있습니다. 각 함수형 인터페이스의 역할은 다음과 같습니다. Consumer: T 타입의 인수를 받아 아무것도 반환하지 않습니다. Funct.. 2023. 11. 15.
Java8 Functional Interface 간단한 예제로 알아보기 Java8 특징과 추가된 개념들, 간단한 예제 Java8의 주요 개념 java8에서 추가된 주요 개념들은 아래와 같은데 각 개념에 대해 자세하게 알아보기 전에 간단한 예제들로 java8 문법 맛보기를 해보겠습니다. 람다 표현식 함수형 인터페이스 스트림 API 병렬 스트림 기본 메서드 목표 1~10 숫자를 모두 문자열 형태로 연결하고 각 숫자 사이에는 " : " 콜론으로 이어지게 한다. 1. java8 문법 미사용 public static void main(String[] args) { final List numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); final StringBuilder stringBuilder = new StringBuilder(); .. 2023. 6. 4.
[Python] 파이썬 가상환경 생성하기 (env, anaconda) [Python] 파이썬 가상환경 만들기 (venv, anaconda) 파이썬의 가상환경 파이썬에서 가상환경은 프로젝트 개발시 사용되는 독립적인 환경입니다. 파이썬으로 개발을 하게되면 여러가지 라이브러리들을 사용하게 되는 경우가 많은데 가상환경을 사용하지 않고 모든 라이브러리를 동일한 환경에 설치하게 되면 각각의 프로젝트에서 사용되는 라이브러리와 패키지의 종류와 버전이 다를 경우 충돌이 발생할수 있습니다. 가상환경을 만들게 되면 해당 가상환경에서 사용할 파이썬 버전부터 시작해서 적용할 라이브러리, 패키지를 설치하여 프로젝트 개발시 특정 가상환경을 지정하여 개발할수있게 되어 서로 다른 프로젝트간 라이브러리로 인한 충돌을 방지할수 있습니다. 가상환경 생성 방법은 파이썬 공식 배포판 버전과 데이터 과학, 머신러.. 2023. 3. 6.
Java String 자르기, 분리, 합치기 (substring, split, join) [Java] String 문자열 자르기/분리/합치기 substring, split, join 문자열 데이터를 사용하다보면 String 원형 그대로 사용하기보다는 특정 구분자로 문자열을 나누거나 인덱스를 기준값으로 사용하여 문자열을 여러 단위로 구분하여 사용할일이 많이 있습니다. 일반적으로 문자열의 인덱스 값을 기준으로 문자열을 자를땐 substring 을 사용하고 특정 문자로 문자열을 분리할때는 split 을 사용합니다. substring(int beginIndex, int endIndex) substring은 기본적으로 두개의 인자를 받는 String 반환형 메서드입니다. 첫번째 인자는 시작 인덱스로 전체 문자열에서 추출할 문자열의 시작위치를 나타내고 두번째 인자는 종료 인덱스로 추출할 문자열의 끝 위.. 2023. 2. 10.