본문 바로가기
반응형

자바10

[아이템3] private 생성자나 열거 타입으로 싱글턴임을 보증하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 내용을 알아보기 전, 싱글턴에 대해서 알고 넘어가도록 하겠습니다. 싱글턴 인스턴스를 오직 하나만 생성할 수 있는 클래스를 말합니다. 싱글턴을 활용한 예로는 무상태 객체(stateless) 또는 설계상 유일해야 하는 시스템 컴포넌트 등 싱글톤의 단점 클래스를 싱글턴으로 만들면 이를 사용하는 클라이언트는 테스트하기가 어려워질 수 있다고 합니다. 좋은 객체 지향을 설계하기 위한 원칙 중에서 의존성을 인터페이스로 설계하면 실제 구현 클래스의 내용이 변경되어도 이를 사용한 코드는 영향을 받지 않게 됩니다. 하지만 싱글톤을 사용하는 경우 대부분 인터페이스가 아닌 구현 클래스의 객체를 미리 생성해놓고 정적 팩토리.. 2022. 8. 7.
[아이템1] 생성자 대신 정적 팩터리 메서드를 고려하라 이 내용은 이펙티브 자바 Effective Java 3/E 를 읽으면서 정리한 내용을 포함하고 있습니다. 객체를 생성하기 위해서는 객체의 생성자(public) 를 통해서 얻을 수 있습니다. 하지만 생성자 이외에도 객체를 생성하기 위해서 사용하는 방법이 하나 더 있는데, 그것은 정적 팩터리 메서드 입니다. 정적 팩토리 메소드란? 객체 생성의 역할을 하는 클래스 메서드입니다. 많이 사용하는 클래스를 통해서 살펴보도록 하겠습니다. 날짜를 이용하기 위해서LocalDateTime.class 객체를 사용합니다. 이 클래스를 생성하기 위해서는 아래 일부 예시와 같이 사용하고 있습니다. // LocalDateTieme.class ... // 정적 팩토리 메소드 사용 public static LocalDateTime o.. 2022. 8. 7.
[자료구조론] Queue 웹 개발자 일을 하면서 Queue 을 사용하는 경우를 겪어보지 못하였습니다. 대학교 2학년때 배웠던 데이터구조론에서 자료구조에서 배웠던 기억과 코딩 테스트를 준비하면서 배웠던 부분들을 제외하고는 실제 개발 환경에서는 사용해보았던 적이 없습니다. RabbitMq , Kafka 등 에서 사용되는 Queue의 모습을 볼 수 있지만, 사용해본적 역시 없습니다. 먼저 Queue에서 제공하는 개념을 확인하고 메소드를 정리해보려고 합니다. 궁극적으로는 RabbitMq 와 Kafka 를 이용한 실습예제까지 진행하는 것이 목표입니다. Queue 를 보고 가장 먼저 떠올린것은 롤러코스터에서 사람들이 줄을 스는 것이었습니다. (그림과는 무관합니다. 롤러코스터 안 타본지 엄청 오래되었네요.) 모든 소스 코드는 Github를 .. 2022. 4. 10.
[자료구조론] Stack 정리 웹 개발자 일을 하면서 Stack 을 사용하는 경우를 겪어보지 못하였습니다. 대학교 2학년때 배웠던 데이터구조론에서 자료구조에서 배웠던 기억과 코딩 테스트를 준비하면서 배웠던 부분들을 제외하고는 실제 개발 환경에서는 사용해보았던 적이 없습니다. Stack 의 자료구조는 마치 지금 내 책상위에 올려져 있는 책들과 비슷해보입니다. (물론 현재 제 책상은 아닙니다만…) 모든 소스 코드는 Github를 통해서 확인 가능합니다. - 소스바로가기 Stack이란? 이미지에서 보시는것처럼 Stack 은 쌓아올린다는 것을 의미합니다. Stack 특징 Stack 은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 구조(LIFO) 입니다. 자료를 넣거나 뺄 수 있는 것은 top 이라고 하며, 이 top 에는 가장 최근에 들.. 2022. 4. 10.
[Lombok] Constructor 정리 Lombok은 도메인 개발시 불필요한 코드의 사용을 줄여주고 강력한 기능을 제공하여 줍니다. 그만큼 잘 알고 써야 하는 것이 맞고 개인적으로는 잘 사용하지 못할것 같으면 사용을 하지 말고 직접 개발하는 것이 맞다고 생각합니다. 그래서 잘 사용하기 위해서 하나씩 정리해보려고 합니다. 자바로 개발을 진행하면서 생성자를 통하여 많은 내용을 진행하게 됩니다. Lombok 에서는 생성자를 생성하여 주는 기능 또한 제공하여 주는데 다음과 같은 어노테이션을 제공합니다. @NoArgsConstructor : 기본 생성자를 만드는데 사용합니다. @AllArgsConstructor : 모든 필드의 생성자를 만드는데 사용합니다. @RequiredArgsConstructor : 필수 생성자를 만드는데 사용합니다. 각각의 기본.. 2022. 2. 1.
[Item6] 불필요한 객체를 생성하지 마라 Effective Java의 Item6에서는 불필요한 객체를 생성하지 마라고 설명을 하고 있습니다. 그 내용 중 여기서는 오늘 생성 비용이 큰 객체의 재사용의 대해서 한 가지 알아보려고 합니다. 사실, 이 내용은 피드백을 통해서 알게된 내용입니다. 1주차 우테캠 Pro 3기 회고 [1주차] 우테캠 Pro 3기 회고 1주차 미션은 문자열 덧셈기와 로또를 구현하는 미션을 진행하였습니다. 진행해왔던 미션을 회고하면서 놓쳤던 부분들을 정리하려고 합니다. 문자열 덧셈기 기간 미션 진행 기간 : 2021.11.02 ~ 2021 lovethefeel.tistory.com 그렇다면 객체의 생성 비용이 크다면 과연 성능상 얼마나 큰 차이가 있을까 궁금하였습니다. 그래서 다음과 같이 실험을 하였습니다. 개발 환경 Java.. 2022. 1. 5.
반응형