(옮긴글 - 2022.10.12작성)NEXT STEP 의 ‘TDD with Java’ 를 수강할 때 코드리뷰로 디자인 패턴을 적용해보라는 피드백을 받았었다. 그 당시 추천 받은 디자인 패턴은 ‘전략 패턴’인데 3년 동안 전혀 들어본 적 없는 디자인 패턴이었다. 검색하면서 이미 많은 개발자들이 흔히 사용하고 알고 있는 디자인 패턴이라는 것을 알 수 있었다. 그 만큼 디자인 패턴에 대해 알고 있는 것이 없었다. 추가로 Java, Spring 의 코드 곳곳에 디자인 패턴들이 녹여져있다는데 도저히 내 눈엔 보이지 않는 것이다. 그래서 디자인 패턴을 공부해보고자 결심했다.목표디자인 패턴과 친해지고 싶다. 유명하다고 하는 GoF 디자인 패턴 14가지가 각각 어떤 디자인 패턴인지 학습해보고싶다.공부 방법이 책은 친한..
사용자가 버튼을 실수로 두 번 누르게 될 수 있다. (따닥!하고 더블 클릭한다고 하여 개발자들이 따닥이라고 부른다고 한다.)일반적으로는 front에서 중복방지를 위한 처리를 해주지만 서버 입장에서는 들어오는 요청이 올바르게 들어오길 기대만 하고 있을 수는 없다. 그 어떤 요청에 대해서 원하는 결과가 나오도록 하는게 서버의 역할이기 때문이다.따닥 시 발생하는 일사용자가 결제요청 시 임시주문이 등록되는 처리 flow 를 통해 확인해보겠다.임시주문 등록 flow사용자가 ‘결제하기’를 누르면 기존에 생성되어있던 주문시트 정보를 기반으로 임시주문이 등록된다.임시주문은 결제가 완료될 때 주문, 결제 등의 정보를 RDB 에 저장할 때 사용할 데이터다. 또한 결제서버가 별도로 있는 프로젝트의 경우 결제서버에게 주문 관..
💡 가변객체로 시작해서 단계적으로 불변객체를 만들어보자.문제 1) 객체의 변수가 public인 경우문제: 외부에서 값을 변경해버릴 수 있다.변경 전 코드public class Person { public String name; public int age; public Person(String name, int age) { this.name = name; this.age = age; }}public class ImmutableMain { public static void main(String[] args) { Person person = new Person("길동이", 20); person.age = 21; }} 해결 1)..
💡 Cache 알고리즘 중 가장 유명하다고 하는 LRU 알고리즘을 LinkedHashMap을 활용하여 공부해보았다. LRU (Least Recently Used) LRU 알고리즘은 운영체제의 페이지 교체 알고리즘 중 하나이다. Cache 알고리즘 중 가장 유명한 알고리즘 이기도 하다. LRU 알고리즘은 가장 오랫동안 참조되지 않은 항목을 교체 하는 알고리즘이다. LinkedHashMap 으로 구현하기 LinkedHashMap 의 다음 생성자를 활용하였다. accessOrder 속성 public LinkedHashMap(int initialCapacity, float loadFactor, boolean accessOrder) { super(initialCapacity, loadFactor); this.ac..
💡 제네릭을 직접 적용해보며 훈련합니다. 다음의 예시처럼 특정 숫자가 정해진 숫자 범위 안의 숫자에 해당하는지 확인하는 조건문이 있다. if (age >= 10 && age = 10 && age of(N start, N end) { return new Range(start, end); } public boolean contain(N target) { return start.doubleValue()