스트림이란 무엇인가? 스트림은 자바 8 API에 새로 추가된 기능입니다. stream은 물류 창고와 비슷합니다. 물류 창고에서 물류를 포장하고(map), 지역별로 정리하고(filter), 배송합니다. 💡 자바 8 이전, 이후 비교 다음 예제는 저칼로리의 음식을 반환하고, 칼로리를 기준으로 정렬하는 예제입니다. 자바 8이전에는 "낮은_칼로리_음식_목록" 이라는 가비지 변수가 사용하여 데이터를 저장하고 저장한 데이터를 기준으로 정렬을 하고 있습니다. 하지만 자바 8 이후에서는 stream에서 내부 반복을 통해 처리할 수 있습니다. 또한 stream에서는 filter, sorted, map, collect와 같은 파이프라인을 연결해 가독성과 명확성을 유지할 수 있습니다. public class Main { p..
람다 표현식 💡 람다란 무엇인가? 람다 표현식은 메서드로 전달할 수 있는 익명 함수를 단순화한 것이라고 할 수 있습니다. 람다 표현식은 이름은 없지만 매개변수, 구현부, 반환 타입, 예외 종류를 가질 수 있습니다. 특징 익명 - 보통의 메서드와 달리 이름이 없으므로 익명이라 표현합니다. 이름이 없으므로 네이밍 걱정이 줄어들 수 있습니다. 함수 - 람다는 메서드처럼 클래스에 종속되지 않으므로 함수라고 부릅니다. 전달 - 람다 표현식을 메서드 인수로 전달하거나 변수에 저장할 수 있습니다. 간결성 - 익명 클래스처럼 구구절절하게 코드를 구현할 필요가 없습니다. 💡 예제 아래 예제코드를 보면 익명 클래스를 사용하면 구구절절한 코드가 있지만 람다를 사용하게 되면 간결한 방식으로 처리할 수 있습니다. public ..
동작 파라미터화 코드 전달하기 동작 파라미터화란 아직은 어떻게 실행할 것인지 결정하지 않은 코드 블럭을 의미합니다. 다른 말로는 행위 매개변수화 코드라고도 합니다. 💡 변하는 부분과 변하지 않는 부분을 분리 소프트웨어 주요 설계 원칙 중 하나는 변하는 부분과 변하지 않는 부분을 잘 캐치하여 분리하는 것입니다. 동작 파라미터화를 사용하면 변하는 부분과 변하지 않는 부분을 분리함으로써 유동적인 요구사항에 대해 효과적으로 대처할 수 있습니다. 💡 변화하는 요구사항 - 빨간 사과 필터링 첫번째 요구사항에서 사과 목록 중 빨간색 사과만 필터링하는 기능을 요구한 경우는 아래처럼 하면 가능하지만 추후 요구사항이 변경되어 녹색 사과만 필터링 해달라는 요청이 들어오게 된다면 또 다른 메서드를 구현해야 합니다. publi..
직렬화된 인스턴스 대신 직렬화 프록시 사용을 검토하라 Serializable 인터페이스를 구현하는 순간 생성자와는 별개로 readObject 메서드로 인해 바이트 스트림을 매개변수로 받는 또 하나의 생성자가 생긴다고 하였습니다. 이러한 방법으로 인해 버그와 보안 문제가 발생할 수 있습니다. 하지만 직렬화 프록시 패턴을 사용하여 어느정도 위험을 해소할 수 있습니다. 💡 직렬화 프록시 패턴 바깥 클래스의 논리적 상태를 정밀하게 표현하는 중첩 클래스를 설계해 private static 으로 선언하는 중접 클래스를 만드는데 이 클래스가 바깥 클래스의 직렬화 프록시를 수행합니다. 특징 중첩 클래스의 생성자는 단 하나여야 합니다. 생성자는 바깥 클래스를 매개변수로 받아야 합니다. 생성자의 역할은 단순히 인수로 넘어..
- Total
- Today
- Yesterday
- spring boot poi excel download
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot redisson sorted set
- spring boot excel download oom
- service based architecture
- 공간 기반 아키텍처
- redis sorted set으로 대기열 구현
- 서비스 기반 아키텍처
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- spring boot 엑셀 다운로드
- spring boot excel download paging
- @ControllerAdvice
- 자바 백엔드 개발자 추천 도서
- transactional outbox pattern spring boot
- transactional outbox pattern
- microkernel architecture
- spring boot redis 대기열 구현
- 람다 표현식
- space based architecture
- JDK Dynamic Proxy와 CGLIB의 차이
- java ThreadLocal
- polling publisher spring boot
- 레이어드 아키텍처란
- spring boot redisson 분산락 구현
- redis 대기열 구현
- pipe and filter architecture
- pipeline architecture
- java userThread와 DaemonThread
- spring boot redisson destributed lock
- redis sorted set
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |