일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 롬복 어노테이션
- 정렬
- 가장 큰 수
- 프로그래머스
- 커링
- kubenetes
- @EnableScheduling
- @Setter
- @configuration
- Java
- 알고리즘
- 다리를 지나는 트럭
- 크론 표현식
- 영속 자료구조
- 루씬 인 액션
- @Getter
- 검색 기능 확장
- 해시
- 쿠버네티스
- 고차원 함수
- 스택/큐
- 기능개발
- 코딩 테스트
- 전화번호 목록
- 스프링 스케쥴러
- K번째수
- H-index
- 완주하지 못한 선수
- @Data
- 모던 자바 인 액션
- Today
- Total
목록전체 글 (134)
Today I Learned
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/paish/btrnQ3fenez/YTyJWiGw5V38yNkDJGgOn0/img.jpg)
19.3 스트림과 게으른 평가 스트림은 한 번만 소비할 수 있다는 제약이 있어서 재귀적으로 정의할 수 없다. 이 제약 때문에 발생하는 문제들을 살펴보자. 19.3.1 자기 정의 스트림 다음은 소수를 생성하는 예제 코드이다. public static Stream primes(int n) { return Stream iterate(2, i -> i + 1) .filter(MyMathUtil::isPrime) .limit(n); } public static boolean isPrime(int candidate) { int candidateRoot = (int) Math.sqrt((double) candidate); return IntStream.rangeClosed(2, candidateRoot) .noneM..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/d2beim/btrnrkpPn1I/5cSBCxR9Jr6wJODO26QKe1/img.jpg)
모든 객체에는 생명주기가 있다. MODEL-DRIVEN DESIGN에서는 이러한 객체들을 관리하는것이 중요하다. 도메인 객체의 관리와 관련된 문제는 두 가지 범주로 나뉜다. 생명주기 동안의 무결성 유지하기 생명주기 관리의 복잡성으로 모델이 난해해지는 것을 방지하기 AGGREGATE, FACTORY, REPOSITORY 세 가지 패턴을 사용해서 문제를 해결한다. AGGREGATE (집합체) 데이터 변경의 단위로 다루는 연관 객체의 묶음 경계 : AGGREATE에 무엇이 포함되고 포함되지 않는지를 정의 루트 : 하나만 존재하며, AGGREGATE에 포함된 특정 ENTITY를 가리킴 경계 안의 객체는 서로 참조할 수 있지만, 경계 바깥의 객체는 루트만 참조할 수 있다. AGGREGATE 적용 규칙 루트 ENT..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0DkT9/btrndmAjNMm/47u3uzZZFjETqXbKsfKia1/img.jpg)
이 장의 내용 일급 시민, 고차원 함수, 커링, 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 19.1 함수는 모든 곳에 존재한다 자바8에서는 ::연산자로 메서드 참조를 만들거나 람다 표현식으로 직접 함수값을 표현해서 메서드를 함수값으로 사용할 수 있다. 19.1.1 고차원 함수 Comparator.comparing처럼 다음 중 하나 이상의 동작을 수행하는 함수를 고차원 함수라 부른다. 하나 이상의 함수를 인수로 받음 함수를 결과로 반환 스트림 연산과 마찬가지로 고차원 함수를 구현 시, 인수로 전달된 함수가 부작용을 포함할 가능성을 염두에 두어야 한다. 19.1.2 커링 커링은 x와 y라는 두 인수를 받..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/M37bi/btrmCBFa9ua/0U7ymgR3evyjECvMul5Ta0/img.jpg)
18.1 시스템 구현과 유지보수 함수형 프로그래밍이 제공하는 부작용 없음(no side effect)과 불변성(immutability)이라는 개념은 시스템의 유지보수에 큰 도움을 준다. 18.1.1 공유된 가변 데이터 공유된 가변 데이터 구조로 인해 변수가 예상하지 못한 값을 갖게 되고 데이터 갱신 사실을 추척하기 어려워진다. 클래스 또는 객체의 상태를 바꾸지 않으며 return 문을 통해서만 자신의 결과를 반환하는 메서드를 순수(pure) 메서드 또는 부작용 없는(no side effect) 메서드라고 부른다. 여기서 부작용은 함수 내에 포함되지 못한 기능을 의미한다. 자료구조를 고치거나 필드에 값을 할당(setter 메서드 같은 생성자 이외의 초기화 동작) 예외 발생 파일에 쓰기 등의 I/O 동작 수..