dev-seonho 님의 블로그

고정 헤더 영역

글 제목

메뉴 레이어

dev-seonho 님의 블로그

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (76)
    • JAVA (22)
    • Spring (17)
    • 면접 준비 (0)
    • 일기 (0)
    • 프로젝트 (0)
    • DB (12)

검색 레이어

dev-seonho 님의 블로그

검색 영역

컨텐츠 검색

전체 글

  • @Cacheable 사용해서 속도 개선

    2025.12.11 by dev-seonho

  • 토큰 기반 인증 정리 — Access, Refresh, JWT, Bearer

    2025.07.22 by dev-seonho

  • Entity ID 타입, long vs Long - 무엇을 써야할까?

    2025.04.27 by dev-seonho

  • GC(Garbage Collection)

    2025.04.23 by dev-seonho

  • 끝난 PermGen, 시작된 Metaspace: 자바 메타데이터 관리의 진화

    2025.04.22 by dev-seonho

  • 복합 인덱스 정리

    2025.04.21 by dev-seonho

  • 실행계획이란? 옵티마이저 작동 원리부터 힌트까지 정리

    2025.04.21 by dev-seonho

  • B-Tree vs B+ Tree 정리

    2025.04.20 by dev-seonho

@Cacheable 사용해서 속도 개선

영업일 조회할 때 날짜 하나씩 테이블을 거쳐가서 확인하기 때문에 속도가 확인해야할 데이터가 많을 수록 날짜 확인이 많아지기 때문에 속도가 너무 느렸다. 캐싱 적용 전 25,887ms캐싱 적용 후 6,834ms74% 성능 개선 확인 @Cacheable 사용해 캐싱한 적은 처음이라.. 시행착오가 있었다. 1. 역직렬화 문제redis에 저장은 잘 되었는데 값을 꺼낼 때 타입을 제대로 판단하지 못해 오류가 났었다.Unexpected token (START_OBJECT), expected VALUE_STRING:need String, Number or Boolean that contains type id...class java.util.LinkedHashMap cannot be cast to HolidayCac..

카테고리 없음 2025. 12. 11. 14:49

토큰 기반 인증 정리 — Access, Refresh, JWT, Bearer

1. 토큰이란?서버와 클라이언트를 오고 가면서 사용자 인증을 해주는 문자열이다.-> 사용자가 로그인에 성공하면 사용자에게 토큰을 발급하고-> 클라이언트는 이후 api 요청마다 이 토큰을 함께 보내면서 사용자 인증을 한다. 2. Access Token vs Refresh Tokenaccess 토큰은 유효기간이 짧다. 5~10분으로 localStorage나 memory 등에 저장한다. refresh 토큰은 유효기간이 길다. 보통 7일에서 30일까지 저장하고 javascript가 읽지 못하게 하기 위해 httpOnly Cookie에 저장하다. access 토큰이 만료되면 refresh 토큰을 서버에 보내 access 토큰을 발급 받는 용도로 사용한다. 3. JWT(JSON WEB TOKEN)토큰의 종류로 하나..

카테고리 없음 2025. 7. 22. 16:50

Entity ID 타입, long vs Long - 무엇을 써야할까?

JPA로 엔티티를 설계할 때 ID 타입에 long을 쓸지 Long을 쓸지 고민한적이 있나요?Entity ID는 Long(Wrapper 타입)을 사용하는 것이 표준이고 가장 안전한 방법입니다. 1. JPA는 id == null 상태를 가정합니다.JPA에서는 엔티티를 저장할 때 id가 비어있는 null 상태를 기준으로 새 엔티티인지 판단합니다.만약 id 필드가 primitive long 타입이라면 기본값은 0이 자동으로 들어갑니다.private long id; // 기본값은 0 이 경우, 아직 저장되지 않은 엔티티이지만 저장된 엔티티인지 JPA가 헷갈릴 수도 있습니다.반면 Long 타입은 기본값이 null 입니다.private Long id; // 기본값은 null 따라서 id가 null이면 아직 저장되지 ..

카테고리 없음 2025. 4. 27. 22:47

GC(Garbage Collection)

1. GC란?GC는 JVM이 더이상 사용되지 않는 객체를 자동으로 탐지해서 메모리에서 제거하는 기능이다.자바는 명시적으로 메모리 해제를 하지 않아도 되며 GC가 이를 대신 처리해 메모리 누수와 시스템 불안정을 방지한다. 주로 Heap 메모리 대상으로 동작한다. 자바는 GC 메모리 정리를 해주시기 때문에 메모리를 직접 해제하지 않아도 되는 언어이다.개발자는 new로 객체를 생성만 하면되고 제거는 GC가 알아서 처리해준다.2. GC의 목적더이상 사용되지 않는 객체를 제거해서 메모리 회수메모리 누수 방지앱의 안전성 보장3. GC 동작 방식1) Minor GCYong Generation만 대상으로 수행빠르고 자주 일어남대부분의 객체는 이때 제거된다.2) Major GC(Full GC)Old Generation ..

JAVA 2025. 4. 23. 11:00

끝난 PermGen, 시작된 Metaspace: 자바 메타데이터 관리의 진화

1. PermGen의 한계PermGen은 자바7까지 JVM에 메서드 영역을 구현한 방식으로 JVM 프로세스 내부 메모리 공간을 사용했고 JVM 시작 시 ‑XX:MaxPermSize로 크기를 미리 정해야했다.크기가 고정되어 Spring 같은 프레임워크가 클래스를 동적으로 많이 로드하면 공간이 고갈돼 OutOfMemoryError가 자주 발생했다.GC 알고리즘마다 PermGen을 별도로 처리해야하는 코드가 필요해서 구현이 복잡해지고GC 대상을 알기 위한 Permgen 수집 때문에 Stop-The-World 동안 처리해야해서 정지 시간이 길어지는 문제가 있었다. *정지시간이 길어지는 이유 : Full GC가 되면 프로그램을 전부 멈추고 PermGen을 검사, 정리해야했기 떄문이다.*PermGen에서의 GC는?..

카테고리 없음 2025. 4. 22. 20:21

복합 인덱스 정리

1. 복합 인덱스란?두개 이상의 컬럼으로 구성된 단일 인덱스이다.예: CREATE INDEX idx_user_created ON orders(user_id, created_at); 복합인덱스는 두 컬럼을 묶어서 하나의 정렬 기준으로 관리한다.내부적으로 B+Tree 구조에 따라 왼쪽 컬럼 부터 오름차순 -> 두번째 컬럼은 동일한 첫번재 컬럼 내에서 오름차순으로 저장된다. 2. 복합 인덱스 사용 목적여러 컬럼을 조건에서 사용하는 WHERE, JOIN, ORDER BY, GROUP BY에서 성능이 향상된다.다중 조건을 하나의 인덱스로 처리해 디스크 접근 횟수를 줄인다.단일 인덱스보다 커버 범위가 넓고 효율적이다. 3. 내부 구조 - B+Tree 기반 정렬 방식복합 인덱스도 내부적으로 B+Tree 구조를 사용해..

카테고리 없음 2025. 4. 21. 18:22

실행계획이란? 옵티마이저 작동 원리부터 힌트까지 정리

1. 실행계획(Execution Plan)이란?SQL을 실행할 때 DBMS가 데이터를 어떤 순서와 방식으로 읽고 처리할지 결정한 실행 로드맵이다.우리가 SELECT,JOIN, WHERE, ORDER BY 등 SQL을 작성하면 DB는 내부적으로 여러 가지 실행 전략을 시물레이션한다.그 중 가장 효율적인 실행 경로(plan)을 선택하는데선택된 결과가 실행 계획이다. 실행계획은 단 하나만 선택되며 옵티마이저는 가능한 여러 계획을 시물레이션해 예상 비용이 가장 낮은 경로를 선택한다.예상 비용은 디스크 I/O, CPU 사용량, 네트워크 비용 등을 기반으로 계산된다. 쿼리를 날리면 DB는1. 어떤 인덱스를 읽을지?2. 어떤 테이블을 먼저 읽을지?3. 조인은 어떤 방식을 사용할지?이런 실행 전략을 옵티마이저가 정하고..

DB 2025. 4. 21. 17:49

B-Tree vs B+ Tree 정리

1. B TREE 알고리즘(Balanced Tree)균형잡힌 M-ary(엠에어리) 트리구조이다.한 노드에 여러개의 key와 자식 노드를 가질 수 있다.모든 리프 노드는 같은 깊이에 위치한다.(균형 트리)데이터(key+value)는 모든 노드에 저장된다. [30] / \ [10, 20] [40, 50]중간 노드(30)도 데이터를 가지고 있고자식 노드(10, 20), (40, 50)도 데이터를 가진다.*M-ary 트리구조 : 하나의 노드가 최대 M개의 자식 노드를 가질 수 있는 트리구조다. M은 자식 노드의 최대 개수, ary는 다진트리(n-ary)라는 말에서 왔다.B-Tree가 이 트리구조인 이유는 한 노드로 여러 key를 저장할 수 있어야 효율적이고 장점단일 key 탐색이..

DB 2025. 4. 20. 00:12

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 ··· 10
다음
TISTORY
dev-seonho 님의 블로그 © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바