'분류 전체보기' 카테고리의 글 목록 (5 Page)
본문 바로가기

분류 전체보기

(243)
[PS] 백준 영화감독 숌 java 풀이 1436번: 영화감독 숌 (acmicpc.net)처음 문제 접근15면 15666인데 16이면 16660이라고??이를 어떻게 구현하지??for 문을 n까지 돌리면서... 6이 나오면.. 자릿수를 바꾸고 거기서 다시 1을 더하는건가..정답보고 문제 이해666을 저장하는 변수를 하나 만들고1씩 더하면서 666을 포함하면 count + 1 count가 N과 같아지면 break나는 15666 을 어떻게 한 번에 16660 을 만드나를 해서 막혔는데..그냥 브루트포스로 15667, 15668,..., 16659,16660 이 때 + 1이런식으로 하는거였구나...한 번에 하지 말고 브루트 포스 방법을 잘 익혀야겠다고 느꼈다..코드import java.io.BufferedReader;import java.io.IOEx..
[Reflection] [우아콘2020] 수십억건에서 QUERYDSL 사용하기 [우아콘 2020] 수십억 건에서 QUERYDSL 사용하기 - YouTube위 동영상에서 일괄 Update 최적화 부분에 대해 느낀 점을 작성합니다.일괄 Update 최적화아래 코드는 우리가 일반적으로 Jpa을 사용해서 user 정보를 update 하는 코드이다.@Transactional public void updateUserNames(List userIds, String newName) { for (Long userId : userIds) { User user = entityManager.find(User.class, userId); // 각 엔티티 조회 user.setName(newName); // 엔티티 값 변경 (더티 체킹) // 트랜잭션 종료 시점에 변경된 모든 엔티티가 자동으로 업데이트아래는..
[Reflection] [우아콘2020] 수십억건에서 QUERYDSL 사용하기 - Select 컬럼에 Entity 자제 [2019] Spring JPA의 사실과 오해 (youtube.com) 이 글에서는 위 동영상에서, Entity 보다는 Dto를 우선이라는 챕터에 대해 느낀 점을 작성합니다. Entity 보다는 Dto를 우선우리가 ORM을 사용하면서 Entity를 조회하는 경우가 많다. Entity를 통째로 가져온다면, N + 1 문제라던가, 불필요한 칼럼까지 가져오는 문제가 발생할 수 있다. 이는 성능 이슈의 요소를 포함한다.따라서 우리는 Entity를 조회할 필요가 있는지 따져볼 필요가 있다.Entity를 수정해야 하는가?단지 데이터의 조회만 필요하는가?조회칼럼 최소화 하기QueryDSL에서는 as 표현식으로 만약 이미 알고있는 정보가 있다면 이를 제거할 수 있다.Select 컬럼에 Entity 자제Entity 자체..
[PS] 프로그래머스 스타 수열 java 풀이 코딩테스트 연습 - 스타 수열 | 프로그래머스 스쿨 (programmers.co.kr) 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr초기 문제 접근부분 수열이니까 백트래킹..?length가 6이면 2, 4, 6 으로 길이를 따져서 배열에 모든 조합의 수를 만들고..만들어진 조합으로 스타 수열인지 판별하는 메서드를 구현하면..? 현재 작성된 코드에서는 백트래킹을 사용하여 모든 가능한 부분 수열을 생성하려고 시도합니다. 그러나 이 방법은 매우 비효율적입니다. 특히 배열의 길이가 최대 500,000인 경우, 모든 부분 수열을 생성하고 확인하는 것은 시간 복잡도가 ..
[PS] 백준 문자열 폭발 java 풀이 9935번: 문자열 폭발 (acmicpc.net)문제 접근문자열 길이가 1,000,000보다 작으니..nlogN 미만의 시간복잡도를 가지는 풀이를 해야하는 것인가? 문자열을 스택에 넣다가 폭발 문자열과 겹치기 시작하면 넣지말고?완전 일치하면 그 만큼 스택에서 빼고?그런데 빼고나서 다시 폭발 문자열이랑 일치하면 어떻게 검사하지? 다시 처음부터 검사하면 시간 복잡도가 늘어날텐데.. 문제 해결문자열을 하나하나 StringBuilder(sb)에 넣으면서sb의 크기가 폭발 문자열 길이보다 같거나 커지면sb 끝에서 폭발 문자열 길이만큼 뺀 인덱스부터 검사 시작모두 같으면 그 부분만큼 delete다시 1번부터 반복하면, 끝에서부터 폭발 문자열 길이만큼 되돌아가서 검사하기 때문에 중간에 문자열이 삭제되도 다시 검사하게..
[Diary][Spring Security] UserDetails를 어떻게 캐싱할까? 문제 상황public class UserDetailsImpl implements UserDetails { private final User user; public UserDetailsImpl(User user) { this.user = user; } @Override public Collection getAuthorities() { return user.getRoles().stream() .map(role -> new SimpleGrantedAuthority(role.getRoleName())) .collect(Collectors.toList()); } @Override public ..
[Diary] Spring ORM에서는 N + 1을 항상 신경쓰자. 프로젝트를 진행하다가 드디어 N + 1을 마주치는 상황이 생겼습니다. 사실 이 문제가 정확히 언제 발생할 수 있는지 이해가 안 되었는데, 이렇게 쉽게 마주쳐서 기뻤습니다 후후문제 상황여기 장바구니 엔티티가 있다.장바구니는 User, Store, Product를 @ManyToOne으로 가지고 있다.여기서 FetchType을 명시하지 않았으므로, 자동으로 LAZY가 설정된다.아래는 이제 Response DTO를 만들기 위해서 만든 메서드이다.여기서 Cart와 연관된 Product, Store를 get 한다.이제 여기서 N + 1 문제가 발생한다. 대략 아래 log는, 위 메서드가 실행되면서 만들어지는 쿼리이다.2024-08-30T22:52:07.102+09:00 INFO 5292 --- [nio-8080-..
[TIL] DTO, Entity에서 Wrapper 클래스를 사용하는 이유 직렬화 및 역직렬화Primitive 타입의 한계: Java의 기본형(primitive type)은 null 값을 가질 수 없다. 예를 들어, int, long, boolean 같은 타입은 null이 될 수 없으므로, 직렬화 시 null을 표현해야 할 경우 문제가 발생할 수 있다.Wrapper 클래스의 유연성: 기본형에 대응하는 Wrapper 클래스(Integer, Long, Boolean 등)를 사용하면, null 값도 가질 수 있기 때문에 직렬화/역직렬화 과정에서 발생할 수 있는 문제를 방지할 수 있다. 이는 데이터베이스에서의 NULL 값을 표현하거나, JSON 직렬화 시 값이 없음을 표현할 때 유용하다.DTO와 Entity의 설계DTO의 표현 유연성: DTO는 주로 데이터 전송을 위한 객체로, 클라이..