분류 전체보기 128

@Async

How does @Async work? @Async를 지금까지 잘 못 쓰고 있었습니다(@Async 사용할 때 주의해야 할 것, 사용법) (tistory.com) [Spring] @Async 비동기 멀티스레드 사용법 (tistory.com) Spring 에서 async 처리 (@Async) (tistory.com) 스프링에서 @Async로 비동기처리하기 :: 스프링부트는 사랑입니다 (tistory.com) 비동기란? 비동기란 다른 쓰레드에서 병렬로 동작시키면서 응답을 기다리지 않고 처리할 수 있는 기술이며, 요청이 몰리거나 오래걸리는 작업을 처리할 때 사용하여 어플리케이션의 성능 향상을 위해 사용된다 @Acync 어노테이션 사용 시 주의 사항 @Async어노테이션의 사용법에 관한 주의사항이 있습니다. @A..

JPA fetch 전략 - 왜 LAZY가 성능상 이점인지?

JPA에서는 엔티티를 가져오는 방식에 대해 fetch 전략을 설정할 수 있습니다. Fetch 전략은 엔티티와 관련된 연관 관계의 데이터를 어떤 시점에 가져올지를 결정하는 것입니다. JPA에서는 기본적으로 두 가지 fetch 전략을 제공합니다. EAGER Fetch 전략 EAGER fetch 전략은 엔티티를 조회할 때 연관된 엔티티도 함께 조회합니다. 즉, 엔티티와 연관된 엔티티들이 모두 로딩됩니다. 이 방식은 필요한 모든 데이터를 한 번에 가져올 수 있어서 편리하지만, 불필요한 데이터를 가져오게 되면 성능 이슈가 발생할 수 있습니다. LAZY Fetch 전략 LAZY fetch 전략은 엔티티를 조회할 때 연관된 엔티티를 로딩하지 않고, 실제로 사용될 때 로딩합니다. 이 방식은 필요한 데이터만 가져오기 때..

JPA - N+1 문제에 대해서

서론 JPA에서 대표적으로 겪는 이슈로 N+1 현상이 있다고 한다. 토이 프로젝트로 만들었던 곳에서도 이 현상이 일어나는지 확인해보고 수정을 해보고자 한다. [10분 테코톡] 수달의 JPA N+1 문제 - YouTube 에서 설명한 내용이 이해하기에 좋은 것 같아서 정리해보고 내 프로젝트에 관련된 내용을 추가로 정리한다음 적용해보자. 본론 N+1 이란? 요청이 한개의 쿼리만 실행하기를 기대했는데, N개의 쿼리가 추가로 발생하는 현상 따라서 1+N이라고 생각하면 쉽다. @OneToOne, @oneToMany, @ManyToOne 등 여러 상황에서 발생할 수 있다. @OneToMany 지연로딩일 때 1. findAll()로 크루 목록을 조회 참고) JPQL Java Persistence Query La..

토이 프로젝트에 적용할 기능, 기술에 대한 기록 - 알림 기능, 요청에 대한 이력 적재 기능, maven -> gradle

두서 없이 작성 중. 아직 정리가 안 되어 있는 상태. 작성 배경 프로젝트에 적용할 기능, 기술에 대한 기록용 정리 하면서 작성하는게 아니라 일단 기록하기 위해 작성 기능목록 1. 알림 기능 2. 요청에 대한 이력 적재 기능 3. Maven vs Gradle 4. jpa n+1 문제 해결 프로젝트 주소 jeoningu/Springboot-JPA-Blog (github.com) 서론 - 알림 기능을 구현해보려 하는데, 어떻게 구현해야 할지 정리가 필요하고 관련된 내용들도 추가적으로 학습해서 정리해보려 한다. - Runnable, BlockingQueue로 구현된 기능에 대해서 작업한 적이 있는데, 알림 개발시에 참고할 수 있을 거 같아서 우선 이것들을 학습해보려고 한다. 학습하기 위해 참고할 블로그 목록을..

Project & Issu 2023.03.27

MySQL - index, 복합 인덱스 주의 사항, 스칼라 서브 쿼리 vs left join, index 실행 계획

index 인덱스와 카디널리티 (velog.io) [SQL] 인덱스(INDEX) (tistory.com) 인덱스 컬럼의 분포도 및 순서(오라클 인덱스) (tistory.com) DB Index 동작원리를 알아보자 | Eric's DevLog (데브로그) (kyungyeon.dev) 3장 인덱스 튜닝 - 그래서 어쩌라고? (velog.io) 인덱스 튜닝 – DATA ON-AIR (dataonair.or.kr) [mysql] 인덱스 정리 및 팁 (tistory.com) MySQL Index 특징 및 유의사항 정리 :: 뱀귤 블로그 (tistory.com) index란 데이터베이스에서 검색을 할 때 더 빠르게 검색하기 위한 기술입니다. index는 Clustered index와 Non Clustered Ind..

알고리즘

Array 배열 기초개념? 10분안에 정리해줌! - YouTube 검색 알고리즘? 기초개념 잡아드림. 10분 순삭. - YouTube 배열 1. 배열은 연결된 메모리 공간을 사용함. 2. 따라서, 배열은 빈칸이 없도록 데이터를 유지해야 . 3. 따라서, 연결된 순서값인 index를 가지고 특정위치값을 읽는 'Read'는 쉽지만, 무엇이 들었는지 모르는 중에서 찾아야 하는 'Search'와 공간을 옮겨갸 하는 'Add', 'Delete'는 시간이 많이 걸림. 탐색 1. 선형 탐색 (Linear Search) - 순서대로 탐색하는 것 2. 이진탐색 (Binary Search) - 정렬된 배열의 중간값부터 탐색하는 것 이진 탐색의 전제조건은 정렬된 리스트-이진탐색이다. 만약, 리스트가 정렬되지 않은 상태라면 ..

java 코딩 테스트 팁

작성 배경 코딩테스트 문제를 풀면서 사용되는 로직 중 몰랐던 부분이나 추가로 공부한 내용을 기록해두려고 합니다. 전체 소스는 개인 github에 올려두었습니다. jeoningu/AlgorithemTest: 알고리즘/코딩테스트 (github.com) 본론 코딩테스트 연습 - 크기가 작은 부분 문자열 | 프로그래머스 스쿨 (programmers.co.kr) -숫자 길이가 10자리를 넘으면 int의 표현범위(약 21억, 10자리)를 넘어서기 때문에 long을 사용해야한다. 코딩테스트 연습 - 개인정보 수집 유효기간 | 프로그래머스 스쿨 (programmers.co.kr) - 날짜 계산 시에 날짜 값을 만들어서 계산하면 편하다. // 모든 달은 28일까지 있다고 가정합니다. private int calculat..

키워드 정리

코딩테스트 SQL (MySQL) (tistory.com) [MYSQL]코딩테스트용 문법 정리 :: 빈둥벤둥 IT logging (tistory.com) [MYSQL]코딩테스트용 문법 정리 📝 코딩테스트에서 자주 나오는 SQL 문법 정리 📌 요즘 코딩테스트에 SQL문제가 포함된 경우를 자주 만나고 있다. 📌 그럴 때마다 프로그래머스의 SQL문제를 다시한번 쭉 풀어보고 있으며 프로 moonsbeen.tistory.com Mysql 문자열 자르기와 나누기 함수 (tistory.com) Mysql 문자열 자르기와 나누기 함수 1. 왼쪽에서 문자열 자르기 left(컬럼명 또는 문자열, 왼쪽에서 잘라낼 문자열의 길이) 사용예 : SELECT left("https://abbo.tistory.com", 5) 결과 : ..

CORS와 쿠키(Same-Site, Secure, httpOnly), CSRF와 XSS

출처 이해하기 쉬운 웹 보안 모델 이야기 1 (SOP, CORS) :: Stay hungry, Stay foolish. (zairo.kr) [WEB] 동일 출처 정책(SOP)과 교차 출처 리소스 공유(CORS)란? (tistory.com) CORS와 쿠키(Same-Site, Secure, httpOnly) (velog.io) [WEB] 📚 악명 높은 CORS 개념 & 해결법 - 정리 끝판왕 👏 (tistory.com) [Web] CORS (Cross Origin Resource Sharing) 이해하기 (tistory.com) [Web] XSS와 CSRF (Cross Site Scripting and Cross Site Request Forgery) (tistory.com) XSS와 CSRF 차이점 (t..