책정리/Modern Java In Action
-
[책 정리]Modern Java In Action 15장책정리/Modern Java In Action 2020. 6. 17. 00:44
CompletableFuture와 리액티브 프로그래밍 컨셉의 기초 Thread, Future, 자바가 풍부한 동시성 API를 제공하도록 강요하는 진화의 힘 비동기 API 동시 컴퓨팅의 박스와 채널 뷰 CompletableFuture 콤비네이터로 박스를 동적으로 연결 리액티브 프로그래밍용 자바 9플로 API의 기초를 이루는 발행 구독 프로토콜 리액티브 프로그래밍과 리액티브 시스템 15.1 동시성을 구현하는 자바 지원의 진화 멀티코어 CPI에서 효과적으로 프로그래밍을 실행할 필요성이 커지면서 이후 자바 버젼에서는 개선된 동시성 지원이 추가됨. 자바는 Future를 조합하는 기능을 추가하면서 동시성을 강화 15.1.2 Executor와 스레드 풀 자바5는 Executor 프레임워크와 스레드 풀을 통해 스레드의..
-
[책 정리]Modern Java In Action 13장책정리/Modern Java In Action 2020. 6. 7. 17:19
디폴트 메서드 자바8은 기본 구현을 포함하는 인터페이스를 정의하는 두 가지 방법을 제공한다. 정적 메서드(static method) 인터페이스 내부에 정적 메서드 사용 디폴트 메서드(default method) 인터페이스의 기본 구현을 제공할 수 있도록 디폴트 메서드 사용 즉, 자바8 에서는 메서드 구현을 포함하는 인터페이스를 정의할 수 있다. 인터페이스를 구현하는 클래스는 자동으로 인터페이스에 추가된 새로운 메서드의 디폴트 메서드를 상속받게 된다. 이렇게 하면 기존의 코드 구현을 바꾸도록 강요하지 않으면서도 인터페이스를 바꿀 수 있다. 디폴트 메서드는 다중 상속 동작 이라는 유연성을 제공하면서 프로그램 구성에도 도움을 준다. 디폴트 메소드를 이용하면 자바 API의 호환성을 유지하면서 라이브러리를 바꿀 ..
-
[책 정리]Modern Java In Action 2장책정리/Modern Java In Action 2020. 5. 18. 00:34
동작 파라미터화 코드 전달하기 소비자의 요구사항은 항상 바뀌기 마련입니다. 이런 변화하는 요구사항에 대해 효과적으로 대응하기 위해서 동작 파라미터화(behavior parameterization) 을 이용하면됩니다. 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블록을 의미합니다. 코드 블록은 나중에 프로그램에서 호출한다. 즉, 코드 블록의 실행은 나중으로 미뤄진다. EXAMPLE 기존의 농장 재고목록 애플리케이션에 리스트에서 녹색(green) 사과만 필터링하는 기능을 추가한다고 가정하자. 첫 번째 시도 : 녹색사과 필터링 사과 색을 정의하는 ENUM 클래스 enum Color { RED, GREEN } 첫 번째 시도 public static List filterGreenApples(..
-
[책 정리]Modern Java In Action 1장책정리/Modern Java In Action 2020. 5. 18. 00:34
자바 8, 9, 10, 11 무슨 일이 일어나고 있는가? 자바 역사를 통틀어 가장 큰 변화가 자바 8에서 일어났다. 자바 8에서 제공하는 새로운 기술 스트림 API 메서드에 코드를 전달하는 방법 인터페이스의 디폴트 메서드 스트림을 이용하면 에러를 자주 일으키며, 멀티코어 CPU를 이용하는 것보다 비용이 훨씬 비싼 키워드 synchronized를 사용하지 않아도 된다. 자바 8에 추가된 스트림 API 덕분에 다른 두 가지 기능, 즉 메서드에 코드를 전달하는 기법(메서드 참조와 람다)과 인터페이스의 디폴트 메서드가 존재 할 수 있음을 알 수 있다. 하지만 스트림 API 때문에 메서드에 코드를 전달하는 기법이 생긴것은 아니다. 메서드에 코드를 전달하는 기법을 사용하면 동작 파라미터화(behavior param..
-
[책 정리]Modern Java In Action 6장책정리/Modern Java In Action 2020. 5. 18. 00:32
스트림으로 데이터 수집 Collectors 클래스로 컬렉션 만들고 사용하기 하나의 값으로 데이터 스트림 리듀스 하기 특별한 리듀싱 요약 연산 데이터 그룹화와 분할 자신만의 커스텀 컬렉터 개발 컬렉션(Collection), 컬렉터(Collector), collect는 서로 다르다. 6.1 컬렉터란 무엇인가? Collector 인터페이스 구현은 스트림의 요소를 어떤 식으로 도출할지 지정한다. 6.1.1 고급 리듀싱 기능을 수행하는 컬렉터 스트림에 collect를 호출하면 스트림의 요소에(컬렉터로 파라미터화된) 리듀싱 연산이 수행된다. 즉, 내부적으로 리듀싱 연산이 일어난다. 장점 : collect 로 결과를 수집하는과정을 간단하면서도 유연한 방식으로 정의할 수 있다. 예제 6.1 그림 6.1 6.1.2 미리..
-
[책 정리]Modern Java In Action 시작책정리/Modern Java In Action 2020. 5. 18. 00:10
https://www.hanbit.co.kr/support/supplement_survey.html?pcode=B4926602499 한빛출판네트워크 출판사, IT전문서, 대학교재, 경제경영, 어린이/유아, MAKE, 실용/여행, 전자책, 인터넷 강의 www.hanbit.co.kr 예제 소스 파일 https://fliphtml5.com/hkuy/hoja 모던 자바 인 액션 : 람다, 스트림, 함수형, 리액티브 프로그래밍으로 새로워진 자바 마스터하기 Related x fliphtml5.com 영어 PDF https://livebook.manning.com/book/modern-java-in-action/about-this-book/ About this book · Modern Java in Action: L..
-
[책 정리]Modern Java In Action 5장책정리/Modern Java In Action 2020. 5. 18. 00:07
Modern Java In Action 정리 Modern Java In Action을 읽고 내용을 정리해본다. 5장 스트림 활용 필터링 filter() 메서드는 Predicate를 인자로 일치하는 모든 요소를 포함하는 스트림을 반환한다. @Test public void 스트림_filter(){ List numbers = Arrays.asList(1, 2, 3, 1, 2, 4); numbers.stream() .filter(i -> i % 2 == 0) // 짝수만 필터링 .distinct() // 중복요소 제거, hashCode와 equals로 결정된다. .forEach(System.out::println); // 출력 } distinct(), skip(n), limit(n) 와 같이 사용되어 스트림을 ..
-
[책 정리]Modern Java In Action 4장책정리/Modern Java In Action 2020. 5. 18. 00:04
Modern Java In Action 정리 Modern Java In Action을 읽고 내용을 정리해본다. 4장 스트림 소개 스트림(Stream) 데이터 처리 연산을 지원하도록 소스에서 추출된 연속된 요소 자바8에 추가된 기능으로 스트림을 이용하면 선언형으로 코드를 구현하여 컬렉션 데이터를 처리할 수 있다. 선언형으로 구현한다는 것은 for 루프나 if 조건문 등의 제어 블록을 사용하지 않고 동작을 지정하는 것이다. → 실제 구현은 신경쓰지 않고 사용하는 SQL를 생각하자. 스트림에서 제공하는 filter, sorted, map, collect 같은 메서드들은 특정 스레딩 모델에 제한되지 않고 스레드와 락을 걱정할 필요없이 편리하게 데이터 병렬처리를 가능하게 해준다. 스트림 기본 구현 기본구현에 사용..