profile
일상

reids

Spring Boot 게시글 조회수 및 좋아요 동시성 문제와 성능 개선 (Redis 도입기)🚨 문제 인식 (Troubleshooting)현재 개발 중인 커뮤니티 플랫폼에서 게시글 상세 조회와 좋아요 기능을 구현했습니다. 기능적으로는 정상 작동하는 MVP(Minimum

2일 전
·
0개의 댓글
·

Spring Security + JWT 로그인

JWT 인증이란?JWT(JSON Web Token)는 로그인 후 서버가 사용자에게 발급하는 인증 토큰이다.기존 Session 방식은 서버가 로그인 정보를 저장하지만,JWT 방식은 사용자 정보와 권한을 토큰에 담아 클라이언트가 보관한다.이후 요청마다 토큰을 보내면 서버는

2026년 7월 14일
·
0개의 댓글
·

Builder 패턴

Builder Pattern은 객체를 단계적으로 생성하는 디자인 패턴이다.Spring Boot와 JPA에서는 엔티티(Entity)나 DTO 객체를 생성할 때 가장 많이 사용하는 패턴 중 하나이다.객체의 필드가 많아질수록 생성자(Constructor)나 Setter를 사

2026년 7월 14일
·
0개의 댓글
·

JPA Entity 생명주기(Entity Lifecycle)

JPA는 엔티티(Entity)를 영속성 컨텍스트(Persistence Context) 를 통해 관리한다.엔티티는 생성부터 삭제까지 다음과 같은 4가지 상태를 가진다.비영속 상태는 영속성 컨텍스트가 관리하지 않는 새로운 객체이다.이 객체는 단순히 JVM 메모리에만 존재하

2026년 7월 14일
·
0개의 댓글
·

JPA 영속성 컨텍스트(Persistence Context) 정리

영속성 컨텍스트(Persistence Context)는 JPA가 엔티티(Entity)를 관리하는 메모리 공간이다.개발자가 엔티티를 조회하거나 저장하면 DB와 바로 통신하는 것이 아니라, 먼저 영속성 컨텍스트에서 엔티티를 관리한 후 필요할 때 DB와 동기화한다.영속성 컨

2026년 7월 14일
·
0개의 댓글
·

JPA N+1 문제와 Fetch Join

JPA에서 연관 엔티티를 언제 조회할지 결정하는 옵션이다.연관 엔티티를 실제로 사용할 때 조회한다.예를 들어 상품을 조회하면 상품만 가져오고,이 시점에는 Seller를 조회하지 않는다.하지만을 호출하는 순간 판매자를 조회하는 SQL이 실행된다.장점필요한 데이터만 조회하

2026년 7월 14일
·
0개의 댓글
·

Java -260703(ArrayList)

ArrayList는 Java에서 가장 많이 사용하는 컬렉션(Collection) 중 하나로, 크기가 자동으로 늘어나고 줄어드는 동적 배열(Dynamic Array) 이다.일반 배열(Array)은 크기를 한 번 정하면 변경할 수 없지만, ArrayList는 데이터를 추가

2026년 7월 2일
·
0개의 댓글
·

Java - 260702

문자열을 저장하는 객체문자열을 수정하면 새로운 객체가 생성됨기존 문자열이 수정되는 것이 아니라 새로운 String 객체가 만들어진다.문자열 길이 반환시간복잡도 : O(1)특정 위치 문자 반환시간복잡도 : O(1)문자열 자르기시작 포함끝 미포함문자의 위치 찾기없으면 -1

2026년 7월 2일
·
0개의 댓글
·

Spring MVC에서 Form 객체를 템플릿(Thymeleaf)으로 전달하는 방법

1. 자동 바인딩 방식 2. 수동 바인딩 방식 (Model 이용) 3. 명시적 @ModelAttribute 방식

2025년 4월 22일
·
0개의 댓글
·

유효성 검사(@Valid)

도메인 지식 같은 경우 -> Domain(Entity)에 유효성 검사를 해야한다.도메인 지식과 무관하게 데이터 그 자체가 유효한가에 대한 검사 -> DTO에서 해야한다.@Size를 추가하여 유효성 검사를 추가했다.입력 폼에 대한 @NotEmpty @NotNull을 이용

2025년 4월 2일
·
0개의 댓글
·

SpringBoot - DTO

DTO

2025년 3월 18일
·
0개의 댓글
·

식품 유통기한 리스트

일하면서 짜증나서 만든 식품 유통기한 체크리스트를 만들기로 했다.

2025년 1월 27일
·
0개의 댓글
·

스프링 컨테이너와 스프링 빈

ApplicationContext -> 스프링 컨테이너이자 인터페이스스프링 컨테이너 xml기반,Annotation을 기반으로 자바 설정 클래스로 만들 수 있다.스프링 컨테이너 생성 스프링 컨테이너에 (key : 빈이름(메소드명),value : 빈 객체(메소드 반환명 i

2024년 10월 21일
·
0개의 댓글
·

자료구조 - Sort(합병 정렬)

시간 복잡도는 O(nlogn)\-> 배열의 크기를 n이라 할때, 분할 할때 마다 배열의 크기가 n/2씩 감소. 이때 분할하는데 걸리는 시간은 O(log n)\-> 정복(합병)할때 마다 두 배열을 비교하면서 작은 요소부터 차례로 결과 배열에 추가.이 과정에서 최대 (n)

2024년 10월 13일
·
0개의 댓글
·

자료구조 - Sort (Quick Sort)

시간 복잡도최악: O(n^2)평균: O(n\*logn)java에서 Arrays.sort()로 사용한다.배열을 두 부분으로 나눈다.i) 배열 내 기준 요소보다 작으면 앞부분 배열에 위치, 크면 뒷부분 배열에 위치한다.각 분할된 부분을 재귀적으로 정렬한다.

2024년 10월 12일
·
0개의 댓글
·

자료구조 - Sort(Insertion Sort)

정렬된 부분 (A0), 정렬 되지 않은 부분 (A1 ... An-1)으로 구분하여 정렬.시간복잡도 : O(n^2)

2024년 10월 12일
·
0개의 댓글
·

자료구조 - sort (Selection Sort)

시간 복잡도 : O(n^2)

2024년 10월 12일
·
0개의 댓글
·

자료구조 - sort (Bubble Sort)

시간복잡도 O(n^2)대규모 데이터에는 부적합 -> 퀵 정렬, 병합 정렬을 주 사용.첫번째 항목부터 마지막 항목까지 순차적으로 이동하면서 인접한 항목을 비교한다.인접한 두 항목을 비교하면서 왼쪽항목(Aj) 이 오른쪽 항목 보다(Aj+1) 크면 위치를 바꾼다.위의 과정을

2024년 10월 12일
·
0개의 댓글
·

자료구조 - Graph

비선형 자료구조점 : 노드(Node),정점(Vertex)선 : link,edge(간선)degree : 정점(vertex)에 부속된 간선(edge) 수무방향 그래프 : 두 정점을 연결하는데 간선에 방향이 없는 그래프방향 그래프 : 두 정점을 연결하는데 간선에 방향이 있는

2024년 10월 9일
·
0개의 댓글
·

자료구조 - Heap

완전 이진 트리 일종.힙(Heap)은 삽입 및 삭제 연산에 있어서 뛰어난 성능최대힙,최소힙 => 최대,최소를 찾을때 좋음삽입: O(log n)삭제(최대 또는 최소): O(log n)접근(최대 또는 최소): O(1)

2024년 10월 6일
·
0개의 댓글
·