[백준] Java - 1929번 : 소수 구하기
·
Java & Spring/코딩테스트
- 알고리즘 : 에라토스테네스의 체- 전체코드코드 보기import java.io.*;import java.util.ArrayList;import java.util.List;public class Main { public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { String[] input = br.readLine..
[백준] Java - 1018번 : 체스판 다시 칠하기
·
Java & Spring/코딩테스트
- 알고리즘 : 브루트 포스- 전체 코드더보기import java.io.*;public class Main { public static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); public static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); public static void main(String[] args) throws IOException { String[] input = br.readLine().split(" "); int N = Integer.parseInt(input[0..
자료구조 - R트리(R-Tree)
·
이론공부/개념
□ R-Tree 개념R-Tree는 점, 선, 면과 같은 2차원 이상의 공간 정보를 효율적으로 저장하기위한 자료구조로 위치기반 데이터에서 자주 사용된다. □ R-Tree 구조R-Tree는 여러개의 노드에 MBR(최소 경계 사각형)을 저장하여 그안에 포함되는 객체들의 공간을 나타낸다.□ MBR(최소 경계 사각형)각 객체에 사각형으로 경계를 만들고 묶어서 표현하면 아래와 같다.  위 MBR을 트리로 나타내면 아래와 같다. 부모 노드(Parent Node): 한 노드에 대해 바로 위에 연결된 노드.자식 노드(Child Node): 한 노드에 대해 바로 아래에 연결된 노드.리프 노드(Leaf Node): 자식이 없는 노드. 트리의 끝을 나타냄.형제 노드(Sibling Node): 같은 부모 노드를 공유하는 노드들..
MySQL 공간 인덱스(Spatial Index) 적용 - 체육관 검색
·
Java & Spring/고도화
※ MySQL 공간 함수 공식 문서□ 전체 QueryDsl 코드- MySQL의 공간인덱스를 사용하기 위해 Point타입을 사용R-Tree자료구조 @Override public Page search(String name, String address, GymType gymType, Point userLocation, Double requestDistance, Pageable pageable) { BooleanExpression condition = buildSearchCondition( name, address, gymType, userLocation, requestDistance); NumberTe..
DB 인덱싱(Database Indexing)
·
이론공부/개념
DB 인덱싱(Database Indexing)은 데이터베이스에서 데이터를 더 빠르게 검색하기 위해 사용하는 기술데이터베이스에서 대량의 데이터를 검색할 때, 인덱스를 사용하면 특정 데이터를 빠르게 찾아낼 수 있어 성능을 크게 향상시킬 수 있다.1. 인덱스의 개념책의 목차와 유사하게, 인덱스는 데이터베이스 테이블의 특정 열(column)에 대한 검색용 정보를 미리 저장해둔 자료 구조인덱스를 사용하면 테이블의 모든 행을 하나씩 탐색하지 않아도 되므로, 검색 속도가 크게 향상된다.2. 인덱스의 작동 방식인덱스는 일반적으로 'B-트리(Balanced Tree)'나 '해시(Hash)'와 같은 자료 구조로 저장인덱스는 특정 열의 값을 기준으로 정렬하여 저장하므로, 데이터 검색 시 이진 탐색(Binary Search)..
csv파일으로 더미데이터 생성하기
·
Java & Spring/Java
- build.gradleimplementation 'com.opencsv:opencsv:5.6' - 전체 코드package com.play.hiclear.domain.gym.service;import com.opencsv.CSVReader;import com.opencsv.exceptions.CsvValidationException;import com.play.hiclear.common.enums.Ranks;import com.play.hiclear.domain.gym.entity.Gym;import com.play.hiclear.domain.gym.enums.GymType;import com.play.hiclear.domain.gym.repository.GymRepository;import com.p..
[TIL](2024)10.14 ~ 10.18
·
Java & Spring/TIL
WIL회고이번 팀 프로젝트에서 AOP, QueryDsl을 사용해볼수있어서 좋았다.필수 기능 구현 부분이 이전 과제들보다 어려워 도전 기능(AWS, Redis, Docker)등을 사용해보지 못한게 아쉬웠다.10월 14일 (월)- 오늘 한 일팀 프로젝트 시작, 회의 진행ERD 설계API 설계와이어프레임 작성코드 및 Git 컨벤션10월 15일 (화)- 오늘 한 일Card기능 초기 구현팀 프로젝트 1차 병합10월 16일 (수)- 오늘 한 일Card기능 CRUD 구현10월 17일 (목)- 오늘 한 일Card Activity를 AOP를 활용하여 구현Card 조회 QueryDsl을 사용하여 구현10월 18일 (금)- 오늘 한 일최종 병합 및 리펙토링프로젝트 발표 담당
@Transactional(propagation = Propagation.REQUIRES_NEW)
·
Java & Spring/트러블슈팅
주요 특징:새로운 트랜잭션 생성: 메소드가 호출될 때 기존 트랜잭션이 있더라도 그것을 무시하고 항상 새로운 트랜잭션을 생성한다.독립적인 트랜잭션: 이 새로운 트랜잭션은 기존 트랜잭션과 완전히 독립적으로, 새로 시작된 트랜잭션이 커밋되거나 롤백되더라도, 기존 트랜잭션에는 영향을 미치지 않는다.원래 트랜잭션 중단: 새로운 트랜잭션이 끝날 때까지 기존 트랜잭션은 중단된다. 새로운 트랜잭션이 완료된 후에 기존 트랜잭션이 다시 이어진다.부분 커밋: 메소드 실행 중에 새로운 트랜잭션이 성공적으로 커밋되면, 그 결과는 전체 트랜잭션의 성공 여부와 상관없이 데이터베이스에 영구적으로 반영된다. 즉, 새 트랜잭션이 커밋되면 그 변경 사항은 롤백되지 않는다.□ 문제사항 @Transactional public Ma..
MultipleBagFetchException(두개의 Fetch Join)
·
Java & Spring/트러블슈팅
- 문제상황 List results = jpaQueryFactory .selectFrom(todo) .leftJoin(todo.managers).fetchJoin() .leftJoin(todo.comments).fetchJoin() .where(condition) .offset(pageable.getOffset()) .limit(pageable.getPageSize()) .fetch();todo조회 시 manager와 comment의 개수를 출력하면서 N+1문제를 해결하기 위해 Fetch Join을 연속으로..
[TIL](2024)10.07 ~ 10.11
·
Java & Spring/TIL
10월 07일 (월)- 오늘 한 일Spring Security 학습 10월 08일 (화)- 오늘 한 일개인과제 진행 QueryDsl작성MultipleBagFetchException 공부10월 10일 (목)- 오늘 한 일개인과제 마무리트랜젝션 전파 학습모의면접 진행10월 11일 (금)- 오늘 한 일AWS강의 수강