전체 글 126

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..

Docker, Container, VM

Docker, Container, VM - 애플리케이션에 필요한 것들을 컨테이너라는 공간에 담아서 여기저기에 배포하기 쉽게 도와주는 플랫폼입니다. - 컨테이너 이미지를 통해서 컨테이너를 생성하여 배포합니다. - 한 hostOS에서 여러 어플리케이션을 동작시키고 싶을 때 사용하는 것이 가상화 기술인데, VM과 컨테이너가 대표적입니다. - 두 방식의 가장 대표적인 차이점은 OS를 공유하느냐, 그렇지 않느냐 입니다. VM은 OS를 공유하지 않기 떄문에 Host machine 위에서 Guest machine을 분리시킬 때 Guest machine에 운영체제를 포함시킵니다. 그래서 각 Guest machine은 용량이 매우 큽니다. 반면에 Container 방식은 모든 어플리케이션이 같은 OS를 공유해서 동작합니..

JWT 연습

Json Web Token 스프링 시큐리티 공부 18 - JWT (Json Web Token) (tistory.com) JWT 자바 가이드. 이 글은 OAuth와 JSON Web Token과 같은 토큰 기반의… | by Out of Bedlam | Medium server: port: 8080 servlet: context-path: / encoding: charset: UTF-8 enabled: true force: true spring: datasource: # h2 연결용 DB 정보 driver-class-name: org.h2.Driver # Database를 H2로 사용하겠다. # url: jdbc:h2:~/test # H2 접속 정보 # url: jdbc:h2:tcp://localhost/~/..

Project & Issu 2023.02.10