IntelliJ 외부 라이브러리 추가하여 배포
1. Project Structure 이동 File → Project Structure 2. Dependencies 확인 3. Libraries 확인 4. Artifacts 추가 JAR → From modules with dependencies 5. Create JAR from Modules Ma...
1. Project Structure 이동 File → Project Structure 2. Dependencies 확인 3. Libraries 확인 4. Artifacts 추가 JAR → From modules with dependencies 5. Create JAR from Modules Ma...
1. gRPC란 gRPC는 Google이 처음 개발한 고성능 오픈소스 RPC 프레임워크이다. 이는 상용구 코드를 제거하고 데이터 센터 내에서 다중 언어 서비스를 연결하는데 도움이 된다. 2. 개요 프레임워크는 원격 프로시저 호출의 클라이언트-서버 모델을 기반으로 한다. 클라이언트 애플리케이션은 마치 로컬 객체인 것처럼 서버 애플리케이션의 메서드를 직...
1. Identity, Accumulator 그리고 Combiner Identity - 축소 작업의 초기 값이자 스트림이 비어 있는 경우 기본 결과인 요소이다. Accumulator - 축소 작업의 부분 결과와 스트림의 다음 요소라는 두 가지 매개변수를 취하는 함수이다. Combiner - 축소가 ...
1. forEach() 내의 기존 if/else 로직 먼저 정수 목록을 만든 다음 정수 스트림 forEach() 메서드 내에서 기존 if/else 로직을 사용한다. List<Integer> ints = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10); ints.stream() .forEach(i -...
1. 스트림 API 사용 Stream API는 Object 클래스의 equals() 메서드를 기반으로 목록의 다양한 요소를 반환하는 Unique() 메서드를 제공한다. 그러나 특정 속성으로 필터링하려는 경우 유연성이 떨어진다. 대안 중 하나는 상태를 유지하는 필터를 작성하는 것이다. 1) 상태 저장 필터 사용 가능한 솔루션 중 하나는 상태 저장 조...
1. Intermediate 및 Terminal Operations 모든 스트림 작업은 중간 작업과 터미널 작업으로 구분되며 결합되어 스트림 파이프라인을 형성한다. 스트림 파이프라인은 소스(예: Collection, array, generator function, I/O 채널 또는 무한 시퀀스 생성기)로 구성된다. 0개 이상의 중간 작업과 터미널 작...
1. 원인 Java 8에서 각 Stream 클래스는 일회용 데이터 시퀀스를 나타내며 여러 I/O 작업을 지원한다. Stream은 한 번만 작동해야 한다(중간 또는 터미널 Stream 작업 호출). Stream 구현은 Stream이 재사용되고 있음을 감지하는 경우 IllegalStateException을 발생시킬 수 있다. Stream 개체에서 터미...
1. Iterable을 스트림 으로 변환 Iterable 인터페이스는 일반성을 염두에 두고 설계되었으며 자체적으로 stream() 메서드를 제공 하지 않는다. 간단히 말해서 이를 StreamSupport.stream() 메서드에 전달하고 지정된 Iterable 인스턴스에서 Stream을 가져올 수 있다. Iterable 인스턴스를 고려해 본다. ...
1. Stream API를 사용하여 문자열 결합 Stream API를 사용하여 String 배열을 쉼표로 구분된 String으로 결합하는 함수를 만들어 본다. public static String join(String[] arrayOfString){ return Arrays.asList(arrayOfString) .stream() ...
1. Optional의 Map과 Flatmap map() 메소드는 Optional과 잘 작동한다. 함수가 필요한 정확한 유형을 반환하는 경우이다. Optional<String> s = Optional.of("test"); assertEquals(Optional.of("TEST"), s.map(String::toUpperCase)); 그...