💡 Null 탄생의 비하인드 스토리? 1965년 토니 호어라는 영국 컴퓨터 과학자가 힙에 할당되는 레코드를 사용하며, 형식을 갖는 최초의 프로그래밍 언어 중 하나인 알골을 설계하면서 처음 Null 참조가 등장하였다고 합니다. 토니 호어는 "구현하기 쉬웠기 때문에 Null을 도입했다" 라고 말했으며 컴파일러의 자동확인 기능으로 모든 참조를 안전하게 사용할 수 있을 것을 목표로 정했다고 합니다. 그 당시 Null 참조 및 예외로 같이 없는 상황을 가장 단순히 구현할 수 있다고 판단했고 그렇게 탄생을 하게 되었습니다. 후에 Null을 만든 결정을 십억 달러짜리의 실수라고 표현을 했다고 합니다. 값이 없는 상황을 어떻게 처리할까? 우선 사람은 차를 가질 수 있고 차는 브랜드를 가질 수 있습니다. @Getter ..
가독성과 유연성을 개선하는 리펙터링 💡 코드 가독성 개선 코드 가독성이란, 추상적인 표현이므로 이를 정확하게 정의하긴 어렵습니다. 일반적으로 코드 가독성이 좋다는 것은 어떤 코드를 다른 사람이 봐도 쉽게 이해할 수 있음을 의미합니다. 즉 코드 가독성을 개선한다는 것은 우리가 구현한 코드를 다른 사람이 쉽게 이해하고 유지보수할 수 있도록 만드는 것을 의미합니다. 코드 가독성를 높이기 위해서는 코드의 문서화와 표준 코딩 규칙을 준수해야 합니다. 💡 익명 클래스를 람다로 리펙터링하기 함수형 인터페이스를 구현한 익명 클래스는 람다 표현식으로 리펙터링할 수 있습니다. 그렇다고 모든 익명 클래스를 람다 표현식으로 변환할 수 있는것은 아닙니다. 익명 클래스를 람다 표현식으로 변환할 수 없는 경우 1) 익명 클래스에서..
컬렉션 팩토리 자바 9에서는 작은 컬렉션 객체를 쉽게 만들 수 있는 팩토리 메서드를 제공하고 있습니다. 💡 리스트 팩토리 Arrays.asList(), List.of()는 고정 크기의 리스트를 만들기 때문에 요소를 추가 및 삭제하려 하면 UnsupportedOperationException이 발생합니다. Arrays.asList, List.of는 컬렉션이 의도치 않게 변하는 것을 막을 수 있습니다. 하지만 객체의 요소가 변하는 것은 막을 수 없습니다. // 기존 방식 List stringList = new ArrayList(); stringList.add("A"); // 새로운 방식 Arrays.asList List stringList1 = Arrays.asList("A", "B"); stringList..
스트림은 데이터 집합을 처리하는게 게으른 반복자라고 말하고 있습니다. 게으른 반복자라는 명칭이 붙은 이유는 최종 연산이 있기 전까지 수행하지 않기 때문에입니다. 중간 연산은 스트림 파이프라인을 구성하며, 스트림의 요소를 소비하지 않습니다. 반면 최종 연산은 스트림의 요소를 소비해서 최종 결과를 도출합니다. 스트림에서 다양한 누적 방식은 Collector 인터페이스에 정의되어 있습니다. 컬렉터란 무엇인가? Collector는 java.util.stream에 있는 인터페이스입니다. Collector 인터페이스 구현은 스트림의 요소를 어떤 방법으로 출력할지 지정합니다. 인수로 전달한 Collectors.toList()등은 Collector 인터페이스의 구현체일까요? 답은 아닙니다. 입니다. 가능한 이유는 Co..
- Total
- Today
- Yesterday
- 트랜잭셔널 아웃박스 패턴 스프링 부트 예제
- space based architecture
- spring boot 엑셀 다운로드
- polling publisher spring boot
- 레이어드 아키텍처란
- spring boot excel download oom
- transactional outbox pattern
- spring boot poi excel download
- 트랜잭셔널 아웃박스 패턴 스프링부트
- spring boot redisson sorted set
- service based architecture
- 람다 표현식
- spring boot redis 대기열 구현
- @ControllerAdvice
- 자바 백엔드 개발자 추천 도서
- spring boot redisson 분산락 구현
- pipe and filter architecture
- redis 대기열 구현
- java ThreadLocal
- transactional outbox pattern spring boot
- java userThread와 DaemonThread
- 공간 기반 아키텍처
- redis sorted set으로 대기열 구현
- JDK Dynamic Proxy와 CGLIB의 차이
- redis sorted set
- pipeline architecture
- spring boot excel download paging
- spring boot redisson destributed lock
- microkernel architecture
- 서비스 기반 아키텍처
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |