일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 커링
- 스프링 스케쥴러
- 모던 자바 인 액션
- 루씬 인 액션
- 롬복 어노테이션
- 영속 자료구조
- Java
- 해시
- @EnableScheduling
- @Setter
- @configuration
- 정렬
- K번째수
- 알고리즘
- 프로그래머스
- 가장 큰 수
- @Data
- 완주하지 못한 선수
- 쿠버네티스
- 전화번호 목록
- 다리를 지나는 트럭
- H-index
- 기능개발
- 코딩 테스트
- 고차원 함수
- @Getter
- 검색 기능 확장
- 스택/큐
- 크론 표현식
- Today
- Total
목록JAVA & Spring (29)
Today I Learned
이 장에서 다루는 내용 관찰자 패턴 스프링 서버에서 보낸 이벤트를 구현한 발행-구독(publish-Subscribe) 구현 RxJava의 역사 및 기본 개념 마블(Marble) 다이어그램 리액티브 프로그래밍을 적용한 비즈니스 사례 리액티브 라이브러리의 현재 상황 리액티브를 위한 스프링 프레임워크의 초기 해법 관찰자(Observer) 패턴 관찰자 패턴은 관찰자라고 불리는 자손의 리스트를 가지고 있는 주체(Subject)를 필요로 한다. 주체는 일반적으로 자신의 메서드 중 하나를 호출해 관찰자에게 상태 변경을 알린다. 이 패턴은 이벤트 처리를 기반으로 시스템을 구현할 때 필수적이며, MVC 패턴의 중요한 부분이다. 관찰자 패턴을 사용하면 구성 요소 구현 세부 사항에 관계없이 런타임에 객체 사이에 일대다 의존..
이 장에서 다루는 내용 왜 반응성이 필요한가? 리액티브 시스템의 기본 원리 리액티브 시스템 설계에 완벽하게 일치하는 비즈니스 사례 리액티브 시스템에 좀 더 적합한 프로그래밍 기술 스프링 프레임워크가 리액티브로 전환하는 이유 왜 리액티브인가? 온라인 쇼핑몰을 만든다고 가정해보자. 웹 서버는 500개의 스레드로 톰캣 스레드 풀을 구성하였고, 사용자 요청에 대한 평균 응답시간은 250ms이다. 구성된 시스템은 초당 2,000명의 사용자 요청을 처리할 수 있고, 평균 사용자 요청건수는 초당 1,000건 정도였다. 이 웹사이트는 안정적으로 운영되어 왔으나, 블랙 프라이데이에 폭발적인 고객 증가가 발생하며 부하가 예상을 초과하기 시작한다. 결국 증가된 부하에 대한 응답 능력을 유지하지 못하면서 서비스가 중단되기에 ..
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..
이 장의 내용 일급 시민, 고차원 함수, 커링, 부분 적용 영속 자료구조 자바 스트림을 일반화하는 게으른 평가와 게으른 리스트 패턴 매칭, 자바에서 패턴 매칭을 흉내 내는 방법 참조 투명성과 캐싱 19.1 함수는 모든 곳에 존재한다 자바8에서는 ::연산자로 메서드 참조를 만들거나 람다 표현식으로 직접 함수값을 표현해서 메서드를 함수값으로 사용할 수 있다. 19.1.1 고차원 함수 Comparator.comparing처럼 다음 중 하나 이상의 동작을 수행하는 함수를 고차원 함수라 부른다. 하나 이상의 함수를 인수로 받음 함수를 결과로 반환 스트림 연산과 마찬가지로 고차원 함수를 구현 시, 인수로 전달된 함수가 부작용을 포함할 가능성을 염두에 두어야 한다. 19.1.2 커링 커링은 x와 y라는 두 인수를 받..