반응형

Stream

    모던 자바 인 액션 내용 정리

    포킹 자바 8에서 추가된 스트림 api에서 데이터를 필터링, 추출, 그룹화 등의 기능을 진행할 수 있다. 이러한 동작들을 병렬화 할 수 있어 여러 cpu에서 작업을 분산해서 처리할 수 있다. 이런 작업을 포킹 단계라고 한다. 함수형 인터페이스 - 하나의 추상메서드를 가지고 있는 함수형 인터페이스지만 상속을 받은 인터페이스는 추상메서드를 하나만 가지고 있다고 하여도 함수형 인터페이스가 아니다. - 디폴트 메소드가 아무리 많아도 추상 메소드가 하나이면 함수형 인터페이스이다. - @FunctionalInterfeace 애노테이션을 붙이면 함수형 인터페이스가 아닌 경우 컴파일 에러를 발생 시킬 수 있다. 람다에서 지역변수를 final로 제약하는 이유 람다에서 지역변수가 final로 사용되는지 궁금한데 이는 인터..

    node js에서 stream pipe 사용시 에러 처리 방법

    node js에서 데이터를 stream을 사용하여 처리하고 pipe를 사용해서 계속해서 stream을 가지고 작업을 이어나갈 수 있다. 그런데 pipe를 통해서 작업을 진행하다 보니까 중간에 오류가 발생했을 때 try / catch 로는 정상적으로 처리하지 못하는 경우가 발생했다. 나에 경우에는 에러가 발생했을 때 try / catch에서 잡히지 않아서 프로그램이 Unhandled Promise Rejections를 출력 하며 죽어버렸다. 그 예는 다음과 같이 request를 통해서 받은 이미지를 sharp 라이브러리를 통해서 이미지 크기를 변경하려고 할 때 발생했다.1try { await request('https://image.toast.com/aaaaab/ticketlink/TKL_3/ion_mai..

    스프링 웹플럭스(spring webflux)를 활용한 간단한 리액티브 마이크로 서비스

    자바 리액티브 프로그래밍은 리액티브 스트림 명세를 바탕으로 하고 있다. 리액티브 스트림 명세에는 컴포넌트 사이의 비동기 스트림 처리나 이벤트 흐름을 Non Blocking 방식으로 처리하기 위한 문법을 정의한다. 일반적인 옵저버 패턴과 달리 리액티브 스트림에는 시퀀스의 처리, 완료 알림, 실패시 backpressure 적용 등이 추가된다. backpressure는 받는 컴포넌트에서 보내는 컴포넌트에게 얼마만큼의 데이터를 소화할 수 있다고 알려줄 수 있다. 그래서 받는 컴포넌트에서 처리될 준비가 됐을 때만 데이터를 받을 수 있다. 그래서 서로 속도가 다른 컴포넌트 사이의 통신을 할 때 유리하다. 스프링 프레임워크 5 web flux는 Reactor 리액티브 스트림 명세를 기반으로 되어있다. 간단한 Spri..

    Java8 스트림을 이용한 데이터 추출

    스트림에 있는 데이터를 List, String, Set등 다양한 형태로 변경하여 추출 할 수 있다. toArray Stream.toArray는 Object[]를 리턴한다. 올바른 타입의 배열을 원하는 경우 다음과 같이 배열 생성자를 전달한다. String[] result = words.toArray(String[]::new); Collect 메소드 - Collect : 종료 작업으로 인자로 받은 형태의 데이터 타입으로 결과물을 생성한다. - Collect는 병렬화를 지원한다. 또한 공급자, 누산자, 결합자를 기본적인 파라미터로 받으며 이는 Collectors라는 클래스를 통해 간편하게 정의하여 사용할 수 있다. 1) List, set, String 1234567Stream data = Stream.of(..

    Java8 스트림(Stream) API

    Java8의 람다식, 인터페이스의 변화에 이어서 더 좋은 기능이 바로 스트림이다. 스트림(Stream) 정의 - 스트림이란 리눅스에서 사용되는 파이프 라인 처럼 한번에 한 개 씩 만들어지는 연속적인 데이터 항목들의 모임이다. Ex) ps -ef | grep pnp | grep -v drop 조금 더 자세히 설명하면, 집계 연산을 지원하는 요소의 순서(a sequence of elements from a source that supports aggregate operations) 라고 소개 되어 있다. - Stream은 정의된 엘리먼트의 속성에 따라서 처리할 수 있는 인터페이스를 제공하지만 실제 엘리먼트들을 저장하지 않고 계산하는 데만 쓰인다. - 스트림은 컬렉션, 배열, I/O 리소스 등에서 제공받은 데..

    Java File클래스를 이용한 파일입출력 사용

    123456789101112131415161718192021import java.io.File; File fileff = new File("파일경로"); boolean is_file = fileff.isFile(); // 파일인지 검사 boolean is_dir = fileff.isDirectory(); //디렉토리 인지 검사 boolean is_hiddenFile = fileff.isHidden(); // 숨김파일인지 검사 str = fileff.getAbsolutePath(); // 절대 경로 추출 strf = fileff.exists(); // 존재여부 str = fileff.getName(); //이름 출력 str = fileff.getParent(); // 처음부터 / 까지 리턴cs 요새는 NI..

반응형