2024/04 13

[Effective Java : Item 83] 지연 초기화는 신중히 사용하라

지연 초기화(lazy initialization) 지연 초기화란?- 필드의 값이 처음 필요할 때까지 초기화를 늦추는 기법- 정적 필드와 인스턴스 필드 모두 사용 가능- 주로 최적화 용도로 사용, 초기화 시 발생하는 위험한 순환 문제를 해결하는 효과도 존재 지연 초기화의 양면성지연 초기화는 무조건 좋은 것이 아니라 경우에 따라 다른 양면성이 존재한다. - 클래스 혹은 인스턴스 생성 시의 초기화 비용 감소- 반면 지연 초기화하는 필드에 접근하는 비용은 증가- 필드를 초기화하는 비용, 횟수 등에 따라 지연 초기화 시 오히려 성능이 감소하는 경우도 있다. 즉, 인스턴스가 해당 필드를 잘 사용하지 않지만, 초기화 비용이 큰 경우에는 지연 초기화 도입을 고려할 필요성이 있다. 또한 멀티스레드 환경에서는 지연 초기화..

Backend/Java 2024.04.09

[Lv.3 / 프로그래머스 / SQL] 대장균들의 자식의 수 구하기

프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 PARENT_ID가 자신의 ID와 일치하는 행의 개수를 세 CHILD_COUNT 컬럼과 함께 출력해야 한다. 자식이 없어서 Null로 나타난 경우, IFNULL 구문 등을 사용하여 0으로 대체하여 출력해야 한다. SELECT ID, IFNULL( ( SELECT COUNT(*) FROM ECOLI_DATA GROUP BY PARENT_ID HAVING PARENT_ID = ID ), 0 ) AS CHILD_COUNT FROM ECOLI_DATA ORDER BY ID

[Effective Java : Item 77] 예외를 무시하지 말라

개요 검사 예외 및 비검사 예외에 동일하게 적용되는 원칙이다. 아주 자명한 사실이지만, 사람들이 자주 어기고 있는 원칙 중 하나라고 한다. API 설계자가 메서드 선언에 예외를 명시하는 이유는, 그 메서드를 사용할 때 발생할 수 있는 문제에 대해 적절한 조치를 취해달라고 말하는 것이다. 다음의 코드와 같이 예외를 무시하는 방법은 아주 간단하다. try-catch 문으로 코드를 묶고, catch에 아무런 조치를 하지 않으면 된다. try { ... } catch (SomeException e) { } 문제 상황에 잘 대처하기 위해 예외가 존재하는데, 위처럼 catch 블록을 비워두면 예외가 존재할 이유가 없어진다. 예외를 무시해도 되는 경우 예외를 무시해도 괜찮을 경우도 있다. 예를 들어, FileInpu..

Backend/Java 2024.04.01
반응형