그래프탐색 - DFS와 BFS
·
Java & Spring/알고리즘
□ DFS와 BFS에 대한 개념 강의 영상https://www.youtube.com/watch?v=_hxFgg7TLZQ&t=624s  □ 실행 코드코드 보기import java.io.*;import java.util.LinkedList;import java.util.Queue;import java.util.StringTokenizer;public class Main { static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); static int N, M, ..
[백준] 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..
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..
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강의 수강
Spring - Spring Security
·
Java & Spring/Spring
□ Spring Security란?Spring 서버에 필요한 인증 및 인가를 위해 많은 기능을 제공 □ Spring Security 적용하기1. 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-security'2. FillterConfig -> SecurityConfig로 변경(PasswordEncoder는 Security에 포함되어있어 별도 구현 불필요)코드 보기import lombok.RequiredArgsConstructor;import org.example.statelessspringsecurity.enums.UserRole;import org.springframework.context.annotation.Bean;impor..