LUNA's Archive

고정 헤더 영역

글 제목

메뉴 레이어

LUNA's Archive

메뉴 리스트

  • 홈
  • 태그
  • 방명록
  • 분류 전체보기 (102)
    • C (2)
    • C++ (1)
    • Data Structure & Algorithm (12)
    • RDBMS (19)
    • Spring Framework (12)
    • HTTP (9)
    • Spring Webflux (2)
    • Java (18)
    • System Design (12)
    • Spring Data JDBC (5)
    • Spring Security (5)
    • JPA (0)
    • Spring Batch (0)
    • Infra (3)
    • MSA (2)

검색 레이어

LUNA's Archive

검색 영역

컨텐츠 검색

전체 글

  • DataGrip로 Supabase 연결하기

    2026.07.20 by Wanderer Kim

  • Spring Boot의 @ControllerAdvice와 @RestControllerAdvice 정리

    2026.01.03 by Wanderer Kim

  • CQRS 패턴

    2025.12.29 by Wanderer Kim

  • Binary Search 알고리즘

    2025.12.23 by Wanderer Kim

  • Fast and Slow pointer pattern in Linked list

    2025.12.21 by Wanderer Kim

  • Linked List(연결 리스트)

    2025.12.20 by Wanderer Kim

  • Saga pattern

    2025.12.19 by Wanderer Kim

  • HTTP 멱등성(Idempotency) 개념 정리

    2025.12.18 by Wanderer Kim

DataGrip로 Supabase 연결하기

최근에 사이드프로젝트를 진행하면서 무료 클라우드 postgresql 서비스를 제공하는 supabase를 사용하게 되었는데, DataGrip으로 supabase로 연결하면서 시행착오를 거쳐서 기록으로 남기기 위해 글을 쓴다.우선 supabase 프로젝트를 만들면 아래와 같은 화면을 보게 된다. DataGrip으로 database에 연결하기 위해서는 연결 정보가 필요한데, 필요한 연결 정보를 얻기 위해서 위 화면에서 Connect 버튼을 클릭한다.Connect 버튼을 클릭하면 아래와 같은 화면이 보일 것이다.위 화면은 연결 방법과 그에따른 연결 정보를 보여주는 화면이다. 여기에서 우리는 Direct를 선택하고, Transaction pooler방법을 선택한다. Transaction pooler를 선택하면 위..

Infra 2026. 7. 20. 23:32

Spring Boot의 @ControllerAdvice와 @RestControllerAdvice 정리

왜 ControllerAdvice가 필요한가?Controller에서 직접 try-catch 하는 경우@GetMapping("/orders/{id}")public OrderResponse getOrder(@PathVariable Long id) { try { return orderService.findById(id); } catch (Exception e) { throw new RuntimeException(e); }}이 방식의 문제점:Controller 코드가 더러워짐예외 처리 정책이 흩어짐응답 포맷 통일 불가전역 예외 처리의 필요성Spring은 이를 위해 전역 예외 처리 메커니즘을 제공한다. 그 핵심이 바로 @ControllerAdvice와 @RestContro..

Spring Framework 2026. 1. 3. 19:33

CQRS 패턴

CQRS란?“상태를 변경하는 책임(Command)과데이터를 조회하는 책임(Query)을서로 다른 모델로 분리하자.”핵심은 **분리(Segregation)**다.우리가 흔히 쓰는 CRUD 구조의 한계대부분의 Spring Boot 애플리케이션은 이런 구조로 시작한다.Controller → Service → Repository → Entity하나의 Entity, 하나의 Repository로 저장,수정,삭제,조회 모든 걸 처리한다.그런데 서비스가 커지면 문제가 생긴다① 조회가 압도적으로 많다읽기 80~90%쓰기 10~20%→ 조회 성능 튜닝이 전체 구조에 영향을 준다.② 조회 모델과 저장 모델이 다르다저장: 비즈니스 규칙, 상태 변경조회: 화면용 데이터, 조인, 통계→ 하나의 Entity로는 둘 다 ..

MSA 2025. 12. 29. 23:32

Binary Search 알고리즘

이진 탐색(Binary Search)란?이진 탐색(Binary Search)은 정렬된 데이터에서 원하는 값을 매우 빠르게 찾아내는 알고리즘입니다. 일상생활에서 전화번호부나 사전에서 단어를 찾을 때 중간쯤을 펼쳐보는 것과 같은 원리라고 생각하면 이해하기 쉽습니다.핵심 원리: "반씩 버리기"이진 탐색의 가장 중요한 전제 조건은 데이터가 반드시 오름차순이나 내림차순으로 정렬되어 있어야 한다는 것입니다.작동 방식은 다음과 같습니다:데이터의 중간값을 선택합니다.중간값과 내가 찾으려는 값을 비교합니다.값이 같다면? 탐색 종료!중간값보다 크다면? 중간값 기준 오른쪽(큰 쪽)만 남기고 왼쪽은 버립니다.중간값보다 작다면? 중간값 기준 왼쪽(작은 쪽)만 남기고 오른쪽은 버립니다.값을 찾을 때까지 이 과정을 반복합니다.예시..

Data Structure & Algorithm 2025. 12. 23. 19:09

Fast and Slow pointer pattern in Linked list

이번에는 알고리즘 공부하다 배우게 된 Fast and Slow pointer 알고리즘에 대해 알아보려 한다.이 알고리즘은 주로 연결 리스트(Linked List)에서 두 개의 포인터를 서로 다른 속도로 이동시키며 문제를 해결하는 기법이다. 공간 복잡도를 $O(1)$로 유지하면서 강력한 효율성을 보여주는 것이 특징이다.핵심 개념두 개의 포인터를 정의합니다:Slow Pointer (거북이): 한 번에 한 칸씩 이동합니다.Fast Pointer (토끼): 한 번에 두 칸씩 이동합니다.이 속도 차이를 이용하면 데이터 구조 내에서 특정 패턴이나 지점을 매우 효율적으로 찾아낼 수 있습니다.주요 활용 사례Middle of the Linked list원리: fast가 리스트의 끝에 도달했을 때, slow는 정확히 리스..

Data Structure & Algorithm 2025. 12. 21. 04:13

Linked List(연결 리스트)

Linked List란?Linked List(연결 리스트) 는데이터와 다음 노드의 주소(참조) 를 함께 저장하는 노드(Node) 들이연결된 선형 자료구조입니다.[Data | Next] -> [Data | Next] -> [Data | Next] -> null 각 노드는 자기 자신 + 다음 노드를 가리키는 참조메모리 상에서 연속적으로 저장될 필요가 없음첫 번째 노드를 Head, 마지막 노드를 Tail 이라고 부름Array vs Linked List구분ArrayLinked List메모리연속적비연속적인덱스 접근O(1)O(n)중간 삽입/삭제O(n)O(1)*크기 변경어려움쉬움캐시 친화성좋음나쁨 핵심 차이Array는 접근이 빠름Linked List는 삽입/삭제가 유리기본 연산1. 탐색(Search)Head부터 시작..

Data Structure & Algorithm 2025. 12. 20. 20:06

Saga pattern

Saga 패턴이 등장한 배경모놀리식 아키텍처에서는 하나의 데이터베이스 트랜잭션으로 모든 작업을 묶을 수 있다.@Transactionalpublic void placeOrder() { orderRepository.save(order); paymentRepository.pay(order); deliveryRepository.schedule(order);}하지만 마이크로서비스 아키텍처(MSA)에서는 상황이 완전히 달라진다.서비스마다 독립적인 DB네트워크 호출은 언제든 실패 가능@Transactional은 서비스 경계를 넘지 못함이때 전통적인 분산 트랜잭션(2PC, XA)은 성능·확장성·운영 측면에서 사실상 사용 불가하다.이 문제를 해결하기 위해 등장한 패턴이 Saga 패턴이다.Saga 패턴이란..

MSA 2025. 12. 19. 18:48

HTTP 멱등성(Idempotency) 개념 정리

멱등성(Idempotency)이란?멱등성(Idempotency)은 수학에서 유래된 용어로, 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다.HTTP 통신에서의 정의는 다음과 같습니다."동일한 요청을 한 번 보내는 것과 여러 번 연속으로 보내는 것이 서버의 상태(State)에 미치는 영향이 동일하다."즉, 멱등성이 보장된 API라면 네트워크 오류 시 안심하고 재시도(Retry)를 할 수 있습니다. 반면, 멱등하지 않다면 중복 처리가 발생하지 않도록 별도의 조치가 필요합니다.HTTP Method별 멱등성 분석HTTP 스펙(RFC 7231)에 따르면 각 메서드는 멱등성 여부가 정의되어 있습니다. 이를 표로 정리하면 다음과 같습니다.Method멱등성안전성역할GETYesYes리소스 조회PUTY..

HTTP 2025. 12. 18. 01:47

추가 정보

인기글

최신글

페이징

이전
1 2 3 4 ··· 13
다음
TISTORY
LUNA's Archive © Magazine Lab
페이스북 트위터 인스타그램 유투브 메일

티스토리툴바