본문 바로가기

전체 글

(15)
피보나치 수열 with 재귀(메모이제이션) 피보나치 수열의 총 항을 입력받아 피보나치 수열을 출력한다. 예를들어 5를 입력 받으면 1, 1, 2, 3, 5를 출력한다. 재귀함수를 사용해 구현을 할 계획인데 우선 재귀의 기본 형태부터 구현하여 원리를 이해해 본다. public static void main(String[] args) { System.out.println(DFS(5)); } public static int DFS(int n) { if(n == 1) return 1; else if(n == 2) return 1; else return DFS(n - 2) + DFS(n - 1); } 우선 위 코드는 피보나치 수열의 n번째 항을 구하기 위해 이전전항(n-2)와 이전항(n-1)의 항을 재귀하며 값을 구하고 최종 합산하여 결과를 출력한다. 대..
Spring MVC에 WebClient 사용해보기 개인적인 생각이지만 아직 국내의 일반적인 시스템은 WebFlux를 사용하여 전체 모든 구간을 Asynchronous Non-blocking I/O로 처리하기 어려울것 같다. Reactive 프로그래밍에 대한 난이도도 높을 뿐더러 R2DBC가 나오긴 했지만 아직은 기존 기능에 비해 기술 성숙도가 부족하기 때문이다. 또한, 무엇보다 아직은 서블릿 기반의 멀티 스레드 처리가 빠르다...(아직 부족을 못느끼고 있음) 아무튼, 여러가지 이유로 아직은 Spring-boot-starter-web를 이용한 Web MVC를 사용하지만, WebClient는 학습해봐야 할것 같아 간단한 테스트를 하며 정리한 내용을 포스팅 하려 한다. WebClient에 대한 기본적인 설명은 생략한다. 우선 간단한 테스트 환경을 구성하기 위..
주문하기 (1) 먼저 주문쪽 Entity를 조금 수정했다. Order와 OrderDetail 관계는 일반적인 업무 로직이 Order를 중심으로 OrderDetail이 생성되거나 수정되기 때문에 ManyToOne 보다는 OneToMany로 변경하였고 이를 효율적으로 관리하기 위해 양방향 연관관계를 통해 mappedBy를 통해 FK를 OrderDetail로 내렸다. (이렇게 하지 않으면 OneToMany로 동시 Insert 시 불필요한 Update 쿼리가 날라갈 수 있음) 추가로 Order Entity 내에 addOrderDetail()와 createOrder() 를 통한 도메인 로직을 추가하였고, orderStatusCode는 Enum Class를 활용하였다. @Entity @Table(name = "TB_ORDER") ..