728x90

Java 177

[Spring] Jar & SpringBoot Jar

Jar (Java Archive)Java 프로그램 및 관련 리소스를 패키징 하는 데 사용되는 파일 형식Main-Class가 정의된 경우 실행 가능일반 Jar 구조OriginalJar.jar│├── META-INF│ └── MANIFEST.MF│├── com│ └── example│ ├── MainClass.class│ ├── HelperClass.class│ └── resources│ └── config.properties│└── images └── logo.png Jar 단점내부에 jar 파일을 포함할 수 없음 -> 라이브러리 포함 불가능포함시킨다 해도 인식 불가내장 Tomcat 라이브러리를 가지고 빌드하여도 사용 불가능FatJar (übe..

백엔드/Spring 2024.09.28

[백준] 카잉 달력 JAVA

[백준] 카잉 달력 - SILVER I 6064번접근수학적(?) 브루트 포스풀이카잉 제국의 특이한 달력체계를 따라 입력받는 년도는 몇 번째 해인지 구하는 문제이다. 예상치 못하게 생각보다 어려웠던 문제로 문제 이해부터 시간을 소요했었다. 카잉 제국은 두 개의 자연수 x,y를 가지고 형식으로 해를 표시했다고 한다. 다음 해가 될 때마다 x와 y값이 1씩 증가하고 추가로 입력받는 M과 N의 값을 기준으로 값이 달라진다. x는 M의 값을 기준으로 M이 10일 경우 x는 10까지 증가한 후에 11이 되지 않고 다시 1로 변하게 된다. y는 N의 값을 기준으로 N이 12일 경우 y는 12까지 증가한 후 13이 되지 않고 다시 1로 변하게 된다. 우리 달력체계를 볼 때 12월이 지나면 다시 1월이 되는과 비슷한 ..

[Spring] Querydsl DTO & 동적 쿼리

Querydsl DTO 조회Querydsl 사용하여 결과로 DTO를 반환할 때 사용하는 방법프로퍼티 접근JPAQueryFactory를 사용하여 쿼리를 실행한 후 select 절에서 DTO의 getter 메서드를 호출Projections.bean()를 select절에 사용하여 Getter 호출을 위한 프로퍼티 작성DTO에 Getter와 Setter가 존재해야 함 필드명과 Getter, Setter 명이 같아야 함 //프로퍼티 접근List users = queryFactory .select(Projections.bean(UserDTO.class, QUser.user.name, QUser.user.age)) .from(QUser.user) .fetch(); 필드 접..

백엔드/Spring 2024.09.26

[Spring] Spring Data Jpa 확장 기능

Spring Data Jpa 확장 기능Spring Data Jpa는 여러 가지 확장된 기능들을 제공사용자 정의 Repository스프링 데이터 JPA가 제공하는 인터페이스를 직접 구현하려면 구현해야 하는 기능이 너무 많음개발자가 직접 구현한 메서드를 추가하여 사용하기 위한 방법사용 방법사용자 정의 메서드를 선언하는 인터페이스 생성사용자 정의 인터페이스를 상속받는 구현체 생성구현체 내 직접 필요한 메서드를 구현JpaRepository를 상속받아 Spring Data Jpa를 사용하는 Repository 클래스에서 추가로 사용자 정의 인터페이스를 상속Spring Data Jpa가 상속받은 인터페이스 이름 + Impl 조건으로 구현체를 검색해 빈으로 등록리포지토리 인터페이스 이름 + Impl 또는 사용자 정의..

백엔드/Spring 2024.09.24

[백준] 좌표 압축 JAVA

[백준] 좌표 압축 - SILVER II 18870번접근정렬 & Map풀이백준 실버 2 난이도의 좌표 압축 문제로 입력받은 좌표를 기준에 따라 압축하여 출력하는 문제이다. 좌표 압축이 무엇을 뜻하는지 어떤 동작을 하라는 건지 잘 모른다면 설명만 보고 이해가 조금 힘들 수 있다. 문제 자체는 굉장히 간단한 문제로 입력받은 좌표값을 순서대로 하나씩 압축하면 되는 것으로 압축 방법은 그냥 압축할 좌표보다 작은 값의 좌표가 몇 개인지 구하기만 하면 끝이다. 아래 예제 1번의 예시를 보면 바로 이해할 수 있을 것이다.예제 1번 좌표 배열 : [2 4 -10 4 -9]순서대로 압축 시작i = 0, arr[0] = 2 -> 배열 내 2 보다 작은 값 -10, -9 -> 압축 결과 2i = 1, arr[1..

[Programmers] 두 큐 합 같게 만들기 Java

[Programmers] 두 큐의 합 같게 만들기 - LV 2접근구현풀이양 쪽 큐의 원소를 옮겨가며  총원소의 합이 같게 만들어야 하는 문제이다. 큐 1의 원소를 큐 2로 삽입하는 것까지의 과정이 1번의 연산으로 같게 만들 수 없는 경우 -1을 출력한다. Queue q1 = new LinkedList(); Queue q2 = new LinkedList(); long sum1 = 0; long sum2 = 0;일단 큐에 넣어줘야 연산을 진행할 수 있으니 배열로 된 값들을 큐에 넣어주는데 이 문제에서 큐의 길이도 상당히 크지만 원소의 최댓값도 말도 안 되게 크기 때문에 무조건 long 타입을 사용해 주어야 오버플로우가 나지 않는다. for (int num : queue1..

[Spring] 쿼리 메서드

쿼리 메서드데이터베이스 쿼리를 생성하기 위해 메서드 이름을 사용하여 간편하게 구현할 수 있는 기능개발자가 쿼리를 작성할 때 SQL을 직접 작성하는 대신 메서드 이름을 기반으로 JPA가 자동으로 쿼리를 생성JpaRepository를 상속받는 인터페이스에 구현기본 구조접두어를 사용한 메서드 이름으로 조건을 선택조회: find…By , read…By , query…By get…By,... 에 주로 식별하기 위한 이름이나 설명이 들어가거나 생략 가능//예시: 둘 다 username을 통해 조회하는 메서드List findByUsername(String username)List findUserByUsername(String username)COUNT: count…By,  count를 반환하는 메서드 -> 반환 타입..

백엔드/Spring 2024.09.23

[백준] IOIOI JAVA

[백준] IOIOI - SILVER I 5525번 접근KMP (Knuth-Morris-Pratt)LPS (Longest Prefix Suffix) 풀이오랜만의 백준에서의 문제풀이로 문자열 내 특정한 패턴이 몇 번 등장하는지 체크하는 IOIOI 문제이다. 해당 문제는 서브태스크가 존재하는 문제로 문제에서 주어진 N과 M의 범위는1 ≤ N ≤ 1,000,0002N+1 ≤ M ≤ 1,000,000으로 매우 큰 범위의 값을 가지지만 서브 태스크 1번의 경우 N ≤ 100, M ≤ 10,000로 어떻게 풀어도 50점은 맞을 수 있는 문제라는 것이다. 문제에서 주의할 점은 IOI 형태의 패턴 등장 횟수를 구해야 하는데 처음과 마지막이 같은 I로 겹치는 상황이기 때문에 그 부분만 처리를 주의해주면 된다. 우선 내가 ..

[Programmers] 이모티콘 할인행사 JAVA

[Programmers] 이모티콘 할인행사 2023 KAKAO BLIND RECRUITMENT - LV2접근완전 탐색 (Brute Force)풀이카카오 이모티콘 할인행사에서 이모티콘의 할인율이 어떨 때 최고 실적을 낼 수 있는지 구하는 문제이다. 사용자는 각자의 할인율 기준과 비교해 기준에 해당하는 이모티콘은 모두 구입할 때 일정 금액이 넘어가면 이모티콘을 구매하는 대신 이모티콘 플러스를 구독하게 된다. 이모티콘 플러스 구독자 수를 늘리는걸 첫 번째 목표로 잡고 구독을 시킬 수 없다면 판매 수익이 최대인 경우를 구한다. 문제에서 주의할 점은 각 이모티콘은 각각 개별의 할인율을 가지고 있고 할인율은 10, 20, 30, 40으로 4가지만 존재한다. 문제를 제대로 읽지 않아 할인율이 0~100까지에 이모티콘..

[Spring] JPA 지연 로딩 & 조회 성능 최적화

JPA 지연 로딩데이터베이스에서 객체를 가져오는 방식으로 필요한 시점에만 데이터를 로드지연 로딩이 설정된 관계(예: @OneToMany, @ManyToMany)에서는 JPA가 프록시 객체를 생성프록시 객체는 데이터의 위치 정보를 가짐지연 로딩 설정 시 조회 -  엔티티를 노출하는 경우지연 로딩 설정 시 엔티티를 직접 노출할 경우 지연 로딩으로 객체와 연결된 다른 객체의 데이터는 가져오지 않음연관된 객체는 실제 엔티티가 아닌 프록시 객체로 Jackson 라이브러리는 이 프록시 객체를 JSON으로 변경 불가하여 에러  발생 -> Hibernate5JakartaModule을 사용할 경우 프록시 객체를 처리 가능DTO를 사용한 조회엔티티를 조회한 뒤 DTO를 사용하여 변환하여 사용하는 방법엔티티를 조회하여 DT..

백엔드/Spring 2024.09.20
728x90