분류 전체보기 420

[자바 ORM 표준 JPA 프로그래밍] 10-4. 객체지향 쿼리 언어: QueryDSL (1)

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다. 1. QueryDSLJava에서 쿼리를 생성할 수 있게 해주는 프레임워크 (오픈소스) 특징타입 안전자바 코드 O (문자열 기반 X)컴파일 시점에 타입 체크 동적 쿼리 생성Fluenct API (Method Chaining)직관적인 쿼리 작성 방식 (Readable) 다양한 지원SQL, JPA, MongoDB, Lucense 2. 시작Q Classmetadata (entity field)entity-based(plugin) querydsl-apt  JPAQuery (or JPAQueryFactory)type-safe querydynamicallypublic class UserRepositoryCustomImpl implemen..

[Spring Data JPA] 3-1. Defining Query Methods (2)

4. Repository Methods Returning Collections or IterablesUsing Streamable as Query Method Return Typeinterface PersonRepository extends Repository { Streamable findByFirstnameContaining(String firstname); Streamable findByLastnameContaining(String lastname);}Streamable result = repository.findByFirstnameContaining("av") .and(repository.findByLastnameContaining("ea"));Streamable비병렬 스트림을 접근할 수 있..

[Spring Data JPA] 3-1. Defining Query Methods (1)

1. Query Lookup Strategies@EnableJpaRepositories (queryLookupStrategy)CREATE_IF_NOT_FOUND (default)선언된 쿼리 -> 쿼리 생성 (메서드 이름 기반) CREATE쿼리 생성메서드 이름 기반 (접두사 제외) USE_DECLARED_QUERY선언된 쿼리를 찾으려 시도 (어노테이션)찾을 수 없으면 예외 발생 (부트스트랩 시점) 2. Query CreationQuery Builder MechanismJPQL Query Creation from method nameinterface PersonRepository extends Repository { // 여러 조건을 사용한 쿼리 List findByEmailAddressAndLastna..

[Spring Data JPA] 3-7. Repository query keywords

1. Supported query method subject keywordsfind…Byread…Byget…Byquery…Bysearch…Bystream…ByGeneral query method - can be used in combination with additional keywordsReturn type: the repository type- Collection, Streamable subtype, result wrapper (Page, GeoResults, store-specific)exists…ByExists projectionReturn type: booleancount…ByCount projectionReturn type: booleandelete…Byremove…ByDelete que..

[고급 알고리즘] Dynamic Programming: Travelling salesman problem

1. Travelling salesman problem 여러 도시들이 있고 한 도시에서 다른 도시로 이동하는 비용이 모두 주어졌을 떄, 모든 도시들을 단 한 번만 방문하고 원래 시작점으로 돌아오는데 드는 최소 거리 구하기 그래프 이론 각 변에 가중치가 주어진 완전 그래프에서 가장 작은 가중치를 가진 해밀턴 순환 구하기 2. brute-force (permutation. NP) time complexity $O(n!)$ 3. dynamic programming (Held-Karp algorithm) 동작 원리 초기화 모든 도시를 1부터 n까지 번호 매기기 임의의 도시를 시작점으로 선택 상태 정의 $g(S, e)$ : 출발지에서 S에 포함된 모든 도시를 거쳐 e에 도달하는 최단 경로의 길이 최솟값 계산 (재..

Algorithm 2024.03.01

[고급 알고리즘] Dynamic Programming: String

1. Longest Common Subsequence (LCS. 최장 공통 수열)두 수열의 공통 부분 수열 중, 가장 긴 수열을 찾는 문제입니다. 부분 수열주어진 수열에서 몇 개의 원소를 선택해 만든 수열원소의 순서는 원래 수열에서의 순서를 유지해야 함 점화식${\displaystyle LCS\left(X_{i},Y_{j}\right)={\begin{cases}\emptyset &{\mbox{ if }}\ i=0{\mbox{ or }}j=0\\{\textrm {}}LCS\left(X_{i-1},Y_{j-1}\right)+1&{\mbox{ if }}x_{i}=y_{j}\\{\mbox{longest}}\left(LCS\left(X_{i},Y_{j-1}\right),LCS\left(X_{i-1},Y_{j}\r..

Algorithm 2024.03.01

[고급 알고리즘] Dynamic Programming: Knapsack Problem

1.  Knapsack Problem (배낭 문제)베낭에 담을 수 있는 최대 무게가 정해져 있고, 무게와 가치가 있는 짐들을 배낭에 넣을 때 가치의 합이 최대가 되도록 짐 채우기 0-1 Knapsack Problem각 짐을 한 번만 선택할 수 있음각 짐을 넣거나 넣지 않는 선택을 할 수 있음 점화식$m[0, w] = 0$$m[i, w] = m[i-1, w] \quad \text{if } w_{i} > w$$m[i, w] = \max(m[i-1, w], m[i-1, w-w_{i}] + v_{i}) \quad \text{if } w_{i} \leqslant w$ 2. 풀이코드costs = new int[N+1];volumes = new int[N+1];dp = new int[N+1][K+1];for (int..

Algorithm 2024.03.01