-
컬렉션 조회 최적화(oneToMany)Working/jpa 성능 최적화 2021. 3. 2. 19:01
- v1 : Entity 직접 노출 Order -> List -> item별 name (lazy loading 초기화) - v2 : DTO로 변환 리턴 DTO 안에 Entity가 Wrapping 되어있다. OrderItem 도 DTO로 바꿔야 됨 결과 List 안에 또 List가 있으면 N^2으로 쿼리가 늘어남 컬렉션 경우에도 Fetch Join으로 최적화 가능 - v3 : Fetch Join 원하지 않게 join이 많이 됨 distinct o 추가로 사용하면 유니크하게 나옴 sql 쿼리는 1번만 요청한다. 단점 - 페이징 불가능 - v3.1 : 컬렉션을 페치조인 하면 페이징 불가 1:N 조인 -> 데이터가 N개가 된다, 데이터는 N을 기준으로 페이징이 됨 -> 1을 기준으로 하고싶다. 1. xToOne..
-
지연 로딩과 조회 성능 최적화Working/jpa 성능 최적화 2021. 3. 2. 18:08
xToOne(ManyToOne, OneToOne) Order Order -> Member Order -> Delivery 양방향 연관관계가 걸리는 컬럼들 -> @JsonIgnore 옵션을 한곳에 주어야 한다. @ManyToOne(fetch=LAZY) -> ByteBuddyInterceptor() 가짜 프록시 객체를 넣어둠 -> 접근 할때 db 실제 조회 Jackson DataType Hibernate5 - 지연 로딩 -> null(옵션 조절 해서 조회 하게도 가능) - 불필요 엔티티 외부 노출 X - 이 모듈을 따로 사용하기 보다는 DTO로 변경해서 반환하는게 best Lazy-Loading - 너무 많은 테이블을 조회 해야 하는 경우 중요한 성능 문제 ORDER -> SQL 1번 -> 결과 row 2개..
-
807. Max Increase to Keep City SkylineAlgorithm/python tip 2021. 3. 2. 11:31
leetcode.com/problems/max-increase-to-keep-city-skyline/ Max Increase to Keep City Skyline - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com class Solution(object): def maxIncreaseKeepingSkyline(self, grid): v_max = [] for i in range(0, len(grid)): v_max.append(max(grid[i])) s_max ..
-
1046. Last Stone WeightAlgorithm/python tip 2021. 3. 2. 11:08
leetcode.com/problems/last-stone-weight/ Last Stone Weight - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com class Solution(object): def lastStoneWeight(self, stones): while len(stones) > 1: stones.sort(reverse=True) stones.append(abs(stones[0] - stones[1])) stones.pop(0) stones.po..
-
[programmers] 스택/큐 - 기능개발Algorithm/python tip 2021. 3. 2. 00:52
programmers.co.kr/learn/courses/30/lessons/42586 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr def solution(progresses, speeds): working = 0 cnt = 0 ans = [] # 처음 배포해야할 작업이 완료 될때까지 작업 진행 while working < len(progresses): while progresses[working] < 100: for i in range(working, len(progresses)): if prog..
-
1588. Sum of All Odd Length SubarraysAlgorithm/python tip 2021. 3. 1. 20:13
leetcode.com/problems/sum-of-all-odd-length-subarrays/ Sum of All Odd Length Subarrays - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com # 가능한 홀수 갯수 sublist class Solution(object): def sumOddLengthSubarrays(self, arr): ans = 0 for i in range(1, len(arr) + 1, 2): for j in range(0, l..
-
1732. Find the Highest AltitudeAlgorithm/python tip 2021. 3. 1. 19:58
leetcode.com/problems/find-the-highest-altitude/ Find the Highest Altitude - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com class Solution(object): def largestAltitude(self, gain): result = [0] for i in range(0, len(gain)): result.append(result[i] + gain[i]) return max(result) """..