일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- JAVA8
- backend
- 카카오 화재
- springboot
- java
- 리팩터링
- 제네릭
- 부하테스트
- 트랜잭션
- Redis
- JPA
- nonclustered index
- Ehcache
- 동시성
- Metaspace
- lazyloading
- Spring Data Redis
- Jenkins
- 공변
- 지연로딩
- B+TREE
- JDK14
- ci/cd
- 주문
- 재고 시스템
- CaffeineCache
- GithubActions
- 상태패턴
- 웹캐시
- method area
- Today
- Total
목록분류 전체보기 (31)
NDM
https://ndm-tech.tistory.com/90 에서 상태 패턴(State Pattern)으로 SortType을 제어문 없이, 변경 지점을 줄이며 구현하였습니다. 하지만 저는 다음과 같은 문제가 있다고 생각했습니다. 갈수록 늘어나는 구현체 Class 결국 그 하위 구현체는 Dto를 알고있을 수 밖에 없는데, 그렇게 되면 결국 수정 시 관리포인트만 늘어나는 것 아닌가? 때문에 저는 Enum에서 DTO를 아는 것은 결국 막을 수 없는 것이고, 막을 수 없다면 변경 지점을 하나로 모아야 한다고 생각하였으며 정렬방법이 늘어날 때 유사한 코드가 늘어나는 것을 대비하여 switch나 if문을 최대한 제거하였고, 단순 문자열인 정렬방법 과 코드상의 반환값인 Comparator가 연관이 있다는 것을 알려주고자..
상태패턴을 알아보고, 어떤 경우에 사용했는지 간략하게 소개하려 한다. 실제로 나는 상태패턴을 꽤 사용하고 있으며, Enum, Collection과 함께 사용하는 것을 좋아한다. 왜 Enum / Collection과 함께 사용하는지는 이후 예시에서 소개하겠다. ## 논의의 시작 @Transactional(readOnly = true) public List getExampleList( // 각종 파라미터, TestSortType sortBy) { Comparator comparing; if(sortBy.equals(TestSortType.DISTANCE)) comparing = Comparator.comparing(ExampleDto::getDistance); else if(sortBy.equals(Test..
코드 리뷰 도중 record 클래스에 대해 알게되었습니다 항상 Java 11버전만 사용해서 몰랐던 내용이므로, 한번 정리하고 넘어가려 합니다 코드리뷰는 역시 몰랐던 것을 알게되고, 간과했던 부분을 잡는다는 점에서 매우 효율적인것 같습니다 ## 개념설명 JDK 14에서 preview로 등장했고, JDK16부터 정식 스펙으로 결정되었습니다. 불변 클래스를 쉽게 생성할 수 있도록 도와주는 클래스입니다. public class Person { private final String name; private final int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { re..
동시성을 해결하기 위해 Redis를 선택하게 된 생각의 과정은 앞선 포스팅에서 정리하였습니다. https://ndm-tech.tistory.com/34 4. 재고 처리 로직 동시성 이슈 해결 일지 배달 어플을 구현하는 SlowDelivery 프로젝트에서 재고를 처리하는데 동시성 이슈가 있었습니다 더보기 하지만 사실 재고 도메인은 필요가 없었는지도 모릅니다. 일반적인 쇼핑몰과 다르게 배달 ndm-tech.tistory.com 이번 포스팅에서는 Redis를 어떻게 사용하여 동시성을 해결하였는지 알아보겠습니다. # Redis Transaction Redis 트랜잭션은 다른 DB와 달리 Rollback 개념이 없으며, 기본적으로 SpringBoot + Redis를 사용하였을 경우, Redis는 @Transact..