자바 32

[디자인 패턴] 생성패턴 - 팩토리 메소드 패턴이란 (Factory Method patterns)

(인프런) 코딩으로 학습하는 GoF의 디자인 패턴 - 백기선, 강의를 보고 정리한 글입니다. 코드는 GitHub 에 있습니다 #1. 객체 생성 관련 패턴 #2. 구조 관련 패턴 #3. 행동 관련 패턴 싱글톤 패턴 팩토리 메소드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 어댑터 패턴 브릿지 패턴 컴포짓 패턴 데코레이터 패턴 퍼사드 패턴 플라이웨이트 패턴 프록시 패턴 책임 연쇄 패턴 커맨드 패턴 인터프리터 패턴 이터레이터 패턴 중재자 패턴 메멘토 패턴 옵저버 패턴 상태 패턴 전략 패턴 템플릿 메소드 패턴 방문자 패턴 ✔️ 팩토리 메소드 패턴 구체적으로 어떤 인스턴스를 만들지를 서브 클래스가 정하는 패턴을 말합니다. 팩토리 메소드 패턴은, 기능혹은 역할에 따른 다양한 구현체가(Product) 가 존재하..

Java/Design Pattern 2023.02.08

[디자인 패턴] 생성패턴 - 싱글톤 패턴이란 (Singleton patterns)

(인프런) 코딩으로 학습하는 GoF의 디자인 패턴 - 백기선, 강의를 보고 정리한 글입니다. 코드는 GitHub 에 있습니다 #1. 객체 생성 관련 패턴 #2. 구조 관련 패턴 #3. 행동 관련 패턴 싱글톤 패턴 팩토리 메소드 패턴 추상 팩토리 패턴 빌더 패턴 프로토타입 패턴 어댑터 패턴 브릿지 패턴 컴포짓 패턴 데코레이터 패턴 퍼사드 패턴 플라이웨이트 패턴 프록시 패턴 책임 연쇄 패턴 커맨드 패턴 인터프리터 패턴 이터레이터 패턴 중재자 패턴 메멘토 패턴 옵저버 패턴 상태 패턴 전략 패턴 템플릿 메소드 패턴 방문자 패턴 ✔️ 싱글톤 패턴 인스턴스를 오직 한개만 제공하는 클래스 ✔️ 싱글톤 패턴을 사용하는 이유 시스템 런타임, 환경 세팅에 대한 정보 등, 인스턴스가 여러 개 일 때 문제가 생길 수 있는 객..

Java/Design Pattern 2023.02.08

[JAVA] 그 날의 주차 구하기 (week of day)

저는 일관성 있는 데이터를 저장하기위해서, 주 간 어떤날을 입력하든 그 주의 특정 요일 날짜를 반환하는 로직이 필요했습니다. 이에 대한 해답을 자바 8 이후로 나온 날짜및 시간 작업 라이브러리 중, TemporalAdjuster 와 DayOfWeek Enum 클래스를 사용하였습니다. Code public final class DateUtil { private final LocalDate date; public static DateUtil of(final LocalDate date) { return new DateUtil(date); } public int getCompareDayOfWeekNumber(final DayOfWeek dayOfWeek) { return dayOfWeek.getValue() -..

Java/Java 문법 2023.01.12

🚀 Spring Request DTO 추상클래스로 받아오기 (까지의 트러블 슈팅..😂)

이번 포스팅은 스프링에서 Client 에서 받는 Json 데이터를, 조건에 따라 다른 유효성 검사를 하기위한 과정에서의 트러블 슈팅 기록입니다.. ➡️ 상황 사내에서, 쿠폰 정책에 따라 각각의 쿠폰을 등록할 떄, 필요한 조건이 달라졌기 때문에 기존의 단일 유효성 검사에서, 어떤 쿠폰이냐에 따라서 Custom 한 Validation 을 적용해야하는 상황이였습니다. [문제 직면부터 시도과정] @RequestBody 로 받아오는 DTO 클래스 생성자에 throw Exception ➡️ 내가 던진 Exception 이 아닌 예상치 못한 `Json Parse Error : HttpMessgeException` 이 던져지고, `ClassCastException`이 터짐.. 문제 해결 후, 확장성을 고려하여 DTO ..

Spring/Spring Boot 2022.11.17

[Spring & Java] 🚀 재고시스템으로 알아보는 동시성이슈 해결방법

인프런 "재고시스템으로 알아보는 동시성 이슈 해결방법" 강의를 보고 정리한 글입니다. 📗 Spring & Java, Mysql, Redis 를 이용합니다 재고시스템을 활용해서, 멀티스레드 혹은 분산환경에서 가변데이터에 접근하는 동시성 문제를 해결하는 내용이 강의에 담겼습니다. 동시성 문제란, 동일한 하나의 데이터에 2 이상의 스레드, 혹은 세션에서 가변 데이터를 동시에 제어할 때 나타는 문제로, 하나의 세션이 데이터를 수정 중일때, 다른 세션에서 수정 전의 데이터를 조회해 로직을 처리함으로써 데이터의 정합성이 깨지는 문제를 말합니다. 📌 강의를 듣고 느낀 점은, 동시성 문제의 근본적인 해결 방법은 가변데이터에 순차적으로 접근할 수 있는 방법을 구상하는 것 이라고 생각했습니다 데이터베이스를 이용한 락 프레..

[모던자바인액션] chapter6. Stream Collect 메소드 최종연산에 대하여 - collector, collectors

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter6 에서는, 스트림 최종연산인 collect 사용방법에 대해서 이야기합니다. [목차] 컬렉터란 컬렉터 인터페이스 (Stream Collector Interfa..

추상클래스의 객체 생성 (추상클래스 인스턴스) - 추상클래스를 사용하는 이유

👏🏻 요약 더보기 객체생성을 하지 않아도 된다는 의도를 명확히 하기위해서 + 의도치않은 메모리 낭비를 막기위해 김영한님 강의를 보는 도중 상수 정보만을 가진 클래스를 만들었는데, 이 클래스가 상수 정보만을 담고있기때문에 객체생성을 막기위해 abstract class 로 선언을 하는 것을 보고 조금 의아해서 글을 남겨보고자 합니다. 김영한님 왈) 상수를 모아서 쓴거기 때문에 객체를 생성하면 안되겠죠? 그래서 abstract 로 객체 생성을 막아놓았습니다. //상수 데이터만 담은 class - 객체 생성하지 않기위해 추상클래스로 public abstract class ConnectionConst { public static final String URL = "jdbc:h2:tcp://localhost/~/t..

Java/Java 문법 2022.09.19

[Java] 스트림에서 오토박싱 (박싱, 언방식)이 일어나는 이유

스트림 병렬처리를 진행할 때, paraller Stream 이 순차적인 iterate(반복자) 보다 성능이 느리게 나오는 경우가 있습니다. ❓ 스트림 병렬처리의 성능이 낮게나오는 이유 중 하나로, 기본형(원시 타입) 특화되지 않은 스트림을 초러할 때 수반되는 오토박싱, 언방식 등의 오버헤드를 수반하기 때문이다. 라는 이유가 언급되었고, 그렇다면 스트림에서 왜 오토박싱이 일어나는지 잊어먹지 않기위해 정리합니다. 📗 요약 : 제네릭 때문에 자바 Stream 에서 내부적으로 오토박싱이(auto boxing) 일어나는 이유 📌 modern java in action 103 쪽을 보면 이유 1 👏🏻 함수형 인터페이스들에 제네릭 파라미터가 쓰여져있고, Java 에서 generice 은 참조형만 사용할 수 있다고 합..

Java/Java 문법 2022.09.16

[모던자바인액션] chapter 5. Stream 사용 가이드 - 스트림 활용

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter 5 에서는 스트림 활용 가이드를 제공합니다. 그냥 스트링 어떻게 잘 쓰는지에 대한 예시들? 을 제공해줍니다 1. 필터링 스트림에서 요소를 선택하는 필터링을 ..

[모던자바인액션] chapter 4. Stream 이란 - 자바 스트림 가이드

" Modern Java In Action - 모던 자바 인 액션, 전문가를 위한 자바 8, 9, 10 기법 가이드 " 독서 스터디 후, 책 내용을 정리한 글입니다. 1) Chapter 1. 자바 8, 9, 10, 11 : 무슨일이 일어나고 있는가? 2) Chapter 2. 동작 파라미터화 코드 전달하기 3) Chapter 3. 람다 표현식 4) Chapter 4. Stream 5) Chapter 5. Stream 활용 6) Chapter 6. Stream으로 데이터 수집하기 7) Chapter 7. Stream 병렬 데이터처리와 성능 Chapter4 에서는 java8 이후 생긴 Stream API 에 대해서 설명합니다. Stream 사용하는 방법 Stream 파이프라인을 구성하는 방법 Stream 활용..

반응형