java 8 정리
추상 메소드를 딱 하나만 가지고 있는 인터페이스SAM (Single Abstract Method) 인터페이스@FuncationInterface 애노테이션을 가지고 있는 인터페이스함수형 인터페이스의 인스턴스를 만드는 방법으로 사용이 가능하다코드를 줄일 수 있다메소드 매개
Function<T, R> - 인자 T 자료형, 반환값 R 자료형여기서는 Integer로 설정후 진행Function 한개의 인자와 한개의 반환값을 가지는 인터페이스UnaryOperator 한개의 인자와 한개의 반환값을 가지는 인터페이스 (단, 2개의 타입이 모두
(인자 리스트) -> {바디}인자가 없을 때 : ()인자가 한개 일 때 : i or (i)인자가 여러개 일 때 : (i, j)인자의 타입은 생략 가능, 컴파일러가 추론 / 명시도 가능화살 오른쪽에 함수 본문을 정의여러줄일 경우에 {}를 사용해서 묶는다한줄일 경우 {},
람다가 하는일이 기존 메소드 또는 생성자르 호출하는 것이라면 메소드 레퍼런스를 사용해서 매우 간결하게 표현 할 수 있다생성자 참조 -> 타입::new스태틱 메소드 참조 -> 타입::스태틱 메소드특정 객체의 인스턴스 메소드 참조 -> 객체 레퍼런스::인스턴스 메소드임의
인터페이스에 메소드 선언이 아니라 구현체를 바로 제공하는 방법해당 인터페이스를 구현한 클래스를 깨트리지 않고 새기능을 추가할 수 있다기본 메서드는 구현체가 모르게 추가된 기능으로 그만큼 리스크가 있다런타임에러가 발생할 수 있다반드시 문서화 해야한다 (impleSpec
Iterator와 비슷한데 쪼갤수 있는 기능이 있다마찬가지로 순환이 가능하다람다식으로 조건을 넣어서 삭제가 가능하다정렬에 대해 자유로운 활용이 가능하다문자열 순서로 정렬 \_ String::compareToIgnoreCase반대로 정렬 \_ reversed()추가적인
sequence of elements supporting sequential and parallel aggregate operations연속적이고 병렬적인 집계 연산을 지원하는 순서가 있는 요소데이터를 담고 있는 저장소(컬렉션)이 아니다스트림이 처리하는 데이터 소스를
ex) 이름이 3글자 이상인 데이터만 새로운 스트림으로ex) 각각의 Post 인스턴스에서 String title만 새로운 스트림으로ex) List<Stream<String>>을 String의 스트림으로ex) 최대 5개의 요소가 담긴 스트림을 리턴한다ex) 앞
오직 값 한개가 들어있을 수도 없을 수도 있는 컨테이너자바 프로그래밍에서 NullPointerException을 종종 보게 되는데, null을 리턴하거나 null protection을 깜박한 경우이다. 이를 방지하기 위해서 Optional을 리턴할 수 있다클라이언트 코
단순한 get() 메서드 사용요소가 없는 경우를 대비한 코드혹은, 다양한 Optional API를 활용해서 get()대신 다양한 메서드를 이용해서 처리할 수 있다옵셔널에는 다양한 api가 존재참고로 stream()에서의 flatMap에서의 기능과는 다르다 -> stre
자바 8에 오면서 새로운 날짜, 시간 API가 생겼다기존 클래스의 불편점JSR-310 스펙의 구현체를 제공디자인 철학Clear, Fluent, Immutalbe, Extensible참고주요 API기계용 시간(machin time)과 인류용 시간(human time)으로
지금 이순간을 기계 시간으로 표현하는 방법Instant.now()현재 UTC(GMT)를 리턴현재 시스템 Zone에 해당하는(로컬) 일시를 리턴한다localDateTime.now()가 서버에 올라가게 되면 서버의 ZoneId()를 참고해서 시간을 리턴한다, 만약 서버가
동시에 여러 작업을 할 수 있는 소프트웨어프로그래밍을 하면서 동영상 강의듣기 등멀티 프로세싱멀티 스레드Thread / Runnable순서상 Thread가 나오고 Hello가 나올거같지만 간혹 순서가 바뀌어서 나오기도한다 (순서 보장x) 람다식으로 전환sleep()을 이
쓰레드를 만들고 관리하는 작업을 애플리케이션에서 분리그런 기능을 executors에게 위임쓰레드 만들기 : 애플리케이션이 사용할 쓰레드 풀을 만들어서 관리한다(개수 등)쓰레드 관리 : 쓰레드의 생명주기를 관리한다작업 처리 및 실행 : 쓰레드로 실행할 작업을 제공할 수
Runnable과 비슷하지만 반환형이 void인 Runnable과 다르게 반환값이 존재한다작업의 결과를 받을수 있다비동기적인 작업의 현재 상태를 조회하거나 결과를 가져올 수 있다작업이 완료될 때까지 기다렸다가(블로킹되었다가) 최종 결과를 얻는데 사용Futrue객체를 지
자바에서 비동기(Asynchronous) 프로그래밍을 가능하게 하는 인터페이스Future를 사용해도 가능하지만 역부족했다Future에서는 블로킹 코드(get())을 사용하지 않는이상 작업이 끝났을 때, 콜백을 실행할 수 없었다여러개의 Future를 조합할수 있게 되었다
Future만 가지고는 비동기적인 작업을 이어서 작업하는 것이 어려웠다 -> 콜백을 줄 수가 없었으므로두 작업이 서로 이어서 실행하도록 조합두 작업을 독립적으로 실행하고 둘 다 종료했을 때 콜백 실행여러 작업을 모두 실행하고 모든 작업 결과에 콜백 실행여러 작업중 가장
기본적인 구성 : @Entity@ : Annotation(애노테이션)이라고 지칭한다Entity : 해당 애노테이션의 이름이다자바 애노테이션은 값을 세팅할 수 있는 요소들을 가질수 있는데 속성이나 매개변수 정도라고 볼수 있다@Entity(tableName = "vehic
애노테이션을 나타내주는 가장 좋은 단어는 메타데이터(자신의 정보를 담고있는 데이터)로 자바 애노테이션은 코드메타데이터이다애노테이션은 코드 그 자신에 대한 정보를 담고 있다. 애노테이션은 패키지, 클래스, 메소드, 변수, 매개변수 등에서 사용될 수 있으며 자바8부터는 코
자바 8부터애노테이션을 타입 선언부에서도 사용할 수 있게되었다애노테이션을 중복해서 사용할 수 있게 되었다추가된 @Target(ElementType)TYPE_PARAMETERTYPE_USE타입 변수에만 사용할 수 있다예시타입 변수를 포함해서 모든 타입 선언부에 사용할 수
Fork/Join 프레임워크를 사용해서 배열을 병렬로 정렬하는 기능을 제공한다배열 정렬 알고리즘배열을 둘로 계속 쪼갠다합치면서 정렬한다MergeSort와 같은 형태
자바 8의 변화JVM의 여러 메모리 영역 중에 PermGen 메모리 영역이 없어지고 Metaspace 영역이 생겼다permanent generation 클래스의 Meta, 메소드의 Meta, Static변수와 상수 정보들을 담는 곳이다Heap영역에 속한다JVM, JIT