Home

모던 자바 인 액션 - 스트림으로 데이터 수집

Chapter6: 스트림으로 데이터 수집 이 장에서는 다음 항목을 설명한다. Collectors 클래스로 컬렉션을 만들고 사용하기 하나의 값으로 데이터 스트림 리듀스하기 특별한 리듀싱 요약 연산 데이터 그룹화와 분할 자신만의 커스텀 컬렉터 개발 collect 메서드에 Collecter 파라미터를 사용하여 원하는 연산을 간결하게 구현할 수 있다! 예제) 통화별로 트랜잭션을 그룹화한 코드 // 스트림이 아닐 때 Map<Currency, List<Transaction>> transactionsByCurrencies = new HashMap<>(); for ...

Read more

모던 자바 인 액션 - 스트림 활용

Chapter5: 스트림 활용 이 장에서는 다음 항목을 설명한다. 필터링, 슬라이싱, 매칭 검색, 매칭, 리듀싱 특정 범위의 숫자와 같은 숫자 스트림 사용하기 무한 스트림 이 장에서는 스트림 API가 지원하는 다양한 연산을 살펴본다. 1. 필터링 프레디케이트로 필터링 filter 메서드는 프레디케이트를 인수로 받아서 프레디케이트와 일치하는 모든 요소를 포함하는 스트림을 반환한다. ex) 모든 채식요리를 필터링해서 채식 메뉴를 만든다. List<Dish> vegetarianMenu = menu.stream() .fil...

Read more

모던 자바 인 액션 - 스트림

Chapter4: 스트림 이 장에서는 다음 항목을 설명한다. 스트림이란 무엇인가? 컬렉션과 스트림 내부 반복과 외부 반복 중간 연산과 최종 연산 1. 스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능이다. 스트림을 이용하면 선언형으로 데이터를 처리할 수 있다. 스트림의 새로운 기능이 소프트웨어공학적으로 다음의 다양한 이득을 준다. 선언형으로 코드를 구현할 수 있다. 즉, 루프와 if 조건문 등의 제어 블록을 사용해서 어떻게 동작을 구현할지 지정할 필요 없다. 선언형 코드와 동작 파라미터화를 활용하면 변화하는 요구사항에 쉽게 대응할 수 있다. filter, sor...

Read more

모던 자바 인 액션 - 람다

Chapter3: 람다 이 장에서는 다음 항목을 설명한다. 람다 표현식을 어떻게 만드는가 어떻게 사용하는가 어떻게 코드를 간결하게 만들 수 있는가 자바 8 API에서 추가된 중요한 인터페이스와 형식 추론 등의 기능 람다 표현식과 함께 위력을 발휘하는 메서드 참조 1. 람다란 무엇인가? 람다 표현식 은 메서드로 전달할 수 있는 익명 함수를 단순화한 것 람다의 특징 익명 보통의 메서드와 달리 이름이 없으므로 익명이라 표현한다. 함수 메서드처럼 특정 클래스에 종속되지 않으므로 함수라고 한다. 하지만 메서드처럼 파라미터 리스트, 바디, 반환 형식, 가능한 예외 리스트를 포함한다. ...

Read more

모던 자바 인 액션 - 동작파라미터화

Chapter2: 동작 파라미터화 코드 동작파라미터화(behavior parameterization) 을 사용하면 자주 바뀌는 요구사항에 효과적으로 대응할 수 있다. 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블럭을 의미하며, 나중에 프로그램이 호출한다. 메서드의 인수로 동작파라미터화 코드 블럭를 전달하면 메서드의 동작이 파라미터화 된다. 같은 메서드에서 수행 가능한 동작들 리스트의 모든 요소에 대해서 ‘어떤 동작’을 수행할 수 있다. 리스트 관련 작업을 끝낸 다음에 ‘어떤 다른 동작을’ 수행할 수 있음 에러가 발생하면 ‘정해진 어떤 다른 동작’을 수행...

Read more

인텔리제이 단축키 모음

인텔리제이 스타트 - 유용한 단축키 모음 인프런: Intellij 가이드 강의를 보고 정리한 내용입니다. 인텔리제이 mac 용 단축키 모음입니다. 코드 Edit 파일 생성 파일을 생성 할 프로젝트 폴더에 커서를 위치하고 command + N 메인 메서드 생성 클래스에서 단축어 **psvm or main ** 메인 메서드 실행 현 위치에서 실행 ctrl + shift + R 이전 실행 ctrl + R 라인 복사 command + D 라인 삭제 command + 백스페이스 라인 삭제 + 복사 command + X 라인 합치기 ctr...

Read more

effective java 3/E - 12장. 직렬화

12장 직렬화 12장에서 배울 내용 객체 직렬화란 자바가 객체를 바이트 스트림으로 인코딩하고(직렬화) 그 바이트 스트림으로부터 다시 객체를 재구성하는(역직렬화) 메커니즘이다. 직렬화된 객체는 다른 VM에 전송하거나 디스크에 저장한 후 나중에 역 직렬화할 수 있다. 직렬화가 품고 있는 위험과 그 위험을 최소화하는 방법에 집중한다. 아이템 85: 자바 직렬화의 대안을 찾으라 자바에 직렬화가 처음 도입된 후 어렵지 않게 분산 객체를 만들 수 있다는 것은 매력적이었지만, 보이지 않는 생성자, API와 구현 사이의 모호해진 경계, 잠재적인 정확성 문제, 성능 보안, 유지보수성 등 문제에 대한 대가가...

Read more

effective java 3/E - 11장. 동시성

11장 동시성 11장에서 배울 내용 스레드는 여러 활동을 동시에 수행할 수 있게 해준다. 하지만 동시성 프로그래밍은 단일 스레드 프로그래밍보다 어렵다. 동시성 프로그램을 명확하고 정확하게 만들고 문서화하는 데 도움이 되는 조언들을 담았다. 아이템 78: 공유 중인 가변 데이터는 동기화해 사용하라 synchronized 키워드는 해당 메서드나 블록을 한번에 한 스레드씩 수행하도록 보장한다. 동기화의 용도 배타적 실행, 즉 한 스레드가 변경하는 중이라서 상태가 일관되지 않은 순간의 객체를 다른 스레드가 보지 못하게 막는 용도 ...

Read more