Spring MVC와 Front Controller Spring MVC에서 Front Controller 패턴은 DispatcherServelt이 그 역할을 하고 있습니다. 각 클라이언트 필요한 정보에 따라 컨트롤러에 요청하는 방식을 Front Controller가 받아서 전달을 하는 구조로 하면은 어떤 컨트롤러에서 HTTP 요청 한건지 확인을하여 해당 컨트롤러를 호출한다. IoC / DI 에 대해 간략하게 설명 DI(의존성 주입) 모듈 간의 결합도를 낮추고 응집도를 높힙니다. 객체를 직접 생성하는게 아니라 외부에서 생성 후 주입 IoC(제어의 역전) 의존성을 역전시켜 객체 간 결합도를 낮추고 응집도를 높힙니다. 모든 제어 권한을 다른 대상에게 위임 데이터베이스의 외래키(foreign kley)에 대해 ..
항해99

기술매니저님 코드리뷰 변수명 (entity, dto) 제대로 작성 너무 신경 안썼음 / seq는 id로 쓰자 Optional은 리소스가 커서 null에 대해 중요할때 조치 하는게 좋다. 근데 jpa에서는 반환 할 때 Optional이 이미 붙어있긴하다. 매개변수에 final은 안넣어도 된다. Objects.isNull 구지? 안써도 된다. 속도면이나 가독성이나 안써도된다. 보통 board 생성자에 dto를 넣는다. 빌더는 해도되긴한데 케이스 바이 케이스 JPA에서 조회 했는데 없으면 orElseThrow 쓰면 될듯? 김다보미님 코드리뷰
RestController vs Controller Controller: 뷰 템플릿로 응답을 한다. (content-type: text/html) RestController: 객체로 보낼경우 application/json으로 자동으로 보낸다 content-type 종류 https://www.iana.org/assignments/media-types/media-types.xhtml Media Types www.iana.org 데이터 핸들링 jdbcTemplate에서 JPA로 발전을 한 형태 JPA는 ORM으로 객체로 데이터를 핸들링 한다. HTTP 응답코드 말그대로 통신이 성공적으로 받아왔는지 실패했으면 왜 실패한지 약속한 코드들이다. HTTP 메소드 컨트롤러 메소드에 어노테이션으로 GetMapping, ..

문제 접근 🤔 책을 먼저 보고 후에 봐서 방향성과 코드는 알았다. 총 떡의 길이를 자른 값이 n보다 크면 더 큰 수로 빼야해서 오른쪽 (큰쪽으로 이동) 총 떡의 길이를 자른 값이 n보다 작으면 더 작은 수로 빼야해서 왼쪽 (작은쪽으로 이동) 놓쳤던 부분 😅 이진 탐색은 응용이 어렵다. 안보고 했으면 불가능했었다. 코드 😁 첫 번째 코드 # 201 Page n, m = map(int, input().split()) k = list(map(int, input().split())) start = 1 end = max(k) # 떡 중의 최대 길이 while start m: start = mid + 1 else: end = mid - 1 2512번: 예산 2512번: 예산 첫째 줄에는 지방의 수를 의미하는 정수 ..

문제 접근 🤔 책에서 이진 탐색에 대해 알려줘서 이진 탐색을 그대로 적용 했다. 놓쳤던 부분 😅 파이썬 라이브러리 bisect를 사용하면 더욱 단축 시킬 수 있다. 코드 😁 첫번 째 코드 # 197P import sys def component_search(array, target_array, low, high): result = [] for target in target_array: find_check = False low = 0 high = len(array) - 1 while low target: high = mid - 1 elif array[mid] < target: low = mid + 1 if find_check: result.append("yes") else: result.append("no..

버블정렬 # 옆에 있는 값 끼리 계속 비교하면서 # 큰 값을 뒤로 보낸다 (오름차순) def bubble_sort(ary): # 마지막은 마지막전이랑 비교 하니 빼준다. ary_max = len(ary) - 1 # 정렬 해야 할 횟수만큼 반복 for i in range(ary_max): # 버블정렬 후 i 만큼 뺀다, 뒤에는 정렬이 된 값이 있기때문 # 첫 정렬할때 4번, 그 다음은 3번.. 진행 cnt = ary_max - i for y in range(cnt): # 제일 큰 값을 뒤로 보낸다. # y, y+1이면은 밑에 처럼 작동된다. # 0 1 # 1 2 # 2 3 # 3 4 if ary[y] > ary[y + 1]: ary[y], ary[y + 1] = ary[y + 1], ary[y] retur..
최대 힙 자료구조 삭제를 한번 더 하면은 루트값이 정상이 아니였다. 조건문 추가 해주니까 정상적으로 작동 하는 것 같다. 왼쪽 오른쪽도 비교해서 제일 큰값이랑 스왑을 해야지 삭제 처리가 제대로 된다 # 최대 힙 class Heap: def __init__(self, nums=[]): self.nums = [None] + nums def heap_up_sort(self): # 현재 위치 cur = len(self.nums) - 1 # 부모노드 위치 parent = cur // 2 while parent > 0: # 현재값이 부모보다 클 경우, 스왑 if self.nums[cur] > self.nums[parent]: self.nums[cur], self.nums[parent] = self.nums[pare..