스트림에서는 부작용 없는 함수를 사용하라 스트림은 그저 또 하나의 API가 아닌, 함수형 프로그래밍에 기초한 패러다임입니다. 스트림이 제공하는 표현력, 속도, 병렬성을 얻으려면 API는 말할 것도 없고 이 패러다임까지 함께 받아들여야 합니다. 스트림 패러다임의 핵심은 계산을 일련의 변환으로 재구성하는 부분입니다. 이때 각 변환 단꼐는 가능한 한 이전 단계의 결과를 받아 처리하는 순수 함수여야 합니다. 순수 함수란 오직 입력만이 결과에 영향을 주는 함수를 말합니다. 다른 가변 상태를 참조하지 않고, 함수 스스로도 다른 상태를 변경하지 않습니다. 따라서 스트림 연산에 건네는 함수 객체는 모두 부작용(side effect)이 없어야 합니다. 🧨 스트림 패러다임을 이해하지 못한 사용 forEach는 스트림 계산..
스트림은 주의해서 사용하라 스트림 API는 다량의 데이터 처리 작업(순차 또는 병렬)을 돕고자 자바 8에 추가되었습니다. 스트림 API가 제공하는 추상 개념 2가지 스트림은 데이터 원소의 유한 혹은 무한 시퀀스를 의미합니다. 스트림 파이프라인은 이 원소들로 수행하는 연산 단계를 표현하는 개념입니다. 스트림 안의 데이터 원소들은 객체 참조나 기본 타입값입니다. 기본 타입 값으로는 int, long, double을 지원하는데 기본 타입의 경우 IntStream, LongStream, DoubleStream과 같은 Stream을 사용하는게 성능상 좋습니다. Stream - 객체 참조에 대한 Stream IntStream - int 타입에 대한 Stream LongStream - long 타입에 대한 Strea..
표준 함수형 인터페이스를 사용하라 자바가 람다를 지원하면서 상위 클래스의 기본 메서드를 재정의 후 원하는 동작을 구현하는 템플릿 메서드 패턴의 매력이 크게 줄었습니다. 이를 대체하는 현대적인 해법은 같은 효과의 함수 객체를 받는 정적 팩토리나 생성자를 제공하는 것입니다. 위 말을 조금 풀어서 설명하자면, 함수 객체를 매개변수로 받는 생성자와 메서드를 더 많이 만들어야하며, 이때 함수형 매개변수 타입을 올바르게 선택해야 합니다. 💡 함수형 인터페이스 아래 함수형 인터페이스는 잘 동작하지만 굳이 사용할 필요가 없습니다. 자바 표준 라이브러리에는 이미 같은 모양의 인터페이스가 준비되어 있기 때문입니다. java.util.function 패키지에는 다양한 용도의 표준 함수형 인터페이스가 있습니다. @Functi..
람다보다는 메서드 참조를 사용하라 람다가 익명 클래스보다 나은 점 중에서 가장 큰 특징은 간결함입니다. 그런데 자바에는 람다보다도 더 간결하게 만드는 방법이 있습니다. 바로 메서드 참조(Method Reference)입니다. 💡 기본적인 코드 public class Example { public static void main(String[] args) { List foods = Arrays.asList( new Food("햄버거"), new Food("피자"), new Food("치킨") ); for (Food food : foods) { System.out.println(food); } } } 💡 람다식을 이용한 코드 public class Example { public static void main(..
- Total
- Today
- Yesterday
- pipe and filter architecture
- JDK Dynamic Proxy와 CGLIB의 차이
- service based architecture
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot 엑셀 다운로드
- spring boot excel download oom
- spring boot redisson 분산락 구현
- java ThreadLocal
- spring boot redisson destributed lock
- 레이어드 아키텍처란
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- space based architecture
- 자바 백엔드 개발자 추천 도서
- redis sorted set으로 대기열 구현
- java userThread와 DaemonThread
- @ControllerAdvice
- pipeline architecture
- spring boot excel download paging
- microkernel architecture
- spring boot poi excel download
- 공간 기반 아키텍처
- redis 대기열 구현
- spring boot redis 대기열 구현
- 람다 표현식
- transactional outbox pattern
- spring boot redisson sorted set
- transactional outbox pattern spring boot
- redis sorted set
- 서비스 기반 아키텍처
- polling publisher spring boot
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |