반응형

전체 글 174

Scoped Values

Java Scoped Values (ScopedValue)개요ScopedValue는 Java 21에서 Preview로 도입되고 Java 25에서 정식(Final)이 된 기능으로, 메서드 간에 데이터를 안전하게 공유하기 위한 메커니즘입니다. 기존 ThreadLocal의 대안으로 설계되었으며, 특히 Virtual Thread 환경에서 더 효율적으로 동작합니다.ThreadLocal의 문제점ScopedValue가 등장한 배경을 이해하려면 ThreadLocal의 한계를 알아야 합니다:문제설명변경 가능(Mutable)어디서든 set()으로 값을 바꿀 수 있어 추적이 어려움무제한 수명remove()를 명시적으로 호출하지 않으면 메모리 누수 발생상속 비용InheritableThreadLocal은 자식 스레드 생성 시 ..

Java/동시성 2026.08.09

Java 25

주요 신규 기능1. 🚀 Instance Main Methods & Compact Source Files (JEP 512)기존의 public static void main(String[] args) 보일러플레이트 없이 간단하게 프로그램을 작성할 수 있습니다.// 기존 방식public class HelloWorld { public static void main(String[] args) { System.out.println("Hello!"); }}// Java 25 - 간소화된 방식void main() { println("Hello!");}2. 📦 Module Import Declarations (JEP 511, Preview)import module 구문으로 모듈 전체를 한..

Java/Version 2026.07.27

모노토닉 덱 알고리즘

모노토닉 덱 (Monotonic Deque) 알고리즘개념모노토닉 덱은 덱(Deque, Double-Ended Queue) 내부의 원소들이 항상 단조 증가 또는 단조 감소 순서를 유지하도록 관리하는 자료구조/기법입니다.핵심 아이디어: 새로운 원소를 삽입할 때, 단조성을 깨뜨리는 기존 원소들을 제거한 후 삽입한다.왜 필요한가?가장 대표적인 활용 사례는 슬라이딩 윈도우 최솟값/최댓값 문제입니다.크기 $k$인 윈도우가 배열 위를 슬라이딩할 때, 각 위치에서의 최댓값(또는 최솟값)을 구하라.브루트포스: 매 윈도우마다 $O(k)$ 탐색 → 전체 $O(nk)$모노토닉 덱: 각 원소가 덱에 최대 한 번 삽입·삭제 → 전체 $O(n)$동작 원리 (단조 감소 덱 — 최댓값 구하기)배열: [1, 3, -1, -3, 5, 3..

B-Tree Index

B-Tree 인덱스개요B-Tree(Balanced Tree)는 데이터베이스에서 가장 널리 사용되는 인덱스 자료구조입니다. MySQL(InnoDB), PostgreSQL, Oracle, SQL Server 등 대부분의 RDBMS에서 기본 인덱스 타입으로 사용됩니다.구조B-Tree는 루트 노드, 내부(브랜치) 노드, 리프 노드의 3단계 계층으로 구성됩니다. [30 | 60] ← 루트 노드 / | \ [10|20] [40|50] [70|80] ← 브랜치 노드 / | \ / | \ / | \ [L] [L] [L][L][L][L][L][L][L] ← 리프 노드 (실제 데이터 포인터)..

Database/Index 2026.07.16

B+Tree Index

B+Tree 인덱스개념B+Tree(B+ 나무)는 데이터베이스와 파일 시스템에서 가장 널리 사용되는 인덱스 자료구조입니다. B-Tree의 변형으로, 모든 실제 데이터(레코드 포인터)를 리프 노드(Leaf Node)에만 저장하고, 내부 노드(Internal Node)는 탐색을 위한 키(Key)만 보관합니다.구조 [30 | 70] ← 루트 노드 (Internal) / | \ [10|20] [40|60] [80|90] ← 내부 노드 (Internal) / | \ | \ | \ [10][20][30][40][60][70][80][90] ..

Database/Index 2026.07.02

Hash Index

Hash Index 설명Hash Index는 데이터베이스에서 정확한 값 검색(equality search)에 최적화된 인덱스 자료구조입니다.🔧 기본 원리Key → Hash Function → Bucket → DataHash Function 적용: 키 값을 해시 함수에 넣어 버킷 번호(bucket number)를 계산Bucket 접근: 계산된 버킷으로 바로 이동데이터 조회: 버킷 안에서 실제 레코드 위치(pointer)를 찾아 반환⚡ 특징항목내용검색 시간복잡도O(1) — 평균적으로 상수 시간최적 쿼리WHERE col = 'value' (등가 비교)비적합 쿼리범위 검색 (>, , BETWEEN), 정렬 (ORDER BY)인덱스 구조B-Tree처럼 정렬된 구조가 아님🚫 한계범위 검색 불가: 해시 값은 정렬..

Database/Index 2026.06.29

Clusterd Index & Non-Clustered Index

Clustered Index vs Non-Clustered Index🔵 Clustered Index (클러스터드 인덱스)개념테이블의 데이터 자체를 인덱스 순서대로 물리적으로 정렬하여 저장테이블 당 오직 1개만 생성 가능보통 Primary Key가 자동으로 Clustered Index가 됨구조리프 노드(Leaf Node) = 실제 데이터 페이지 [50] / \ [25] [75] / \ / \[10] [30] [60] [90] ← 실제 데이터 행(Row)이 여기에 저장됨특징항목내용물리적 정렬✅ 데이터가 인덱스 순서로 저장됨개수 제한테이블당 1개조회 속도매우 빠름 (범위 검색에 유리)삽입/수정 속도상대적으로 느림 (재정렬 발생 가능)저장 공간추가 공간 ..

Database/Index 2026.06.26

Next.js 랜더링 프로세스

1. 전체 아키텍처브라우저 ──▶ Nginx ──▶ Next.js 서버 ──▶ Backend 서버 ──▶ DBNext.js는 단순 프레임워크가 아닌 Node.js 기반 웹서버Spring Boot에 내장 Tomcat이 있듯, Next.js에는 내장 Node.js 서버가 있음2. 페이지 요청 ~ 브라우저 렌더링 흐름1단계: 브라우저 요청브라우저 ──▶ Nginx (SSL처리, 보안, 트래픽 제어) └─▶ Next.js 서버2단계: Next.js 서버에서 데이터 조회 + HTML 생성Next.js 서버├── 라우팅 처리 (파일 기반 자동 라우팅)├── 서버 컴포넌트(RSC) 실행│ └─ DB 직접 조회 or Backend API 호출│ └─ 데이터 fetch└── Re..

Web/Next&React 2026.06.20

React UseEffect 사용 이유

useEffect를 사용하는 이유useEffect는 React 함수형 컴포넌트에서 사이드 이펙트(Side Effect)를 처리하기 위해 사용합니다.사이드 이펙트란?렌더링 자체와는 관계없지만, 컴포넌트 동작에 필요한 외부 작업들을 말합니다.종류예시데이터 패칭API 호출, fetch/axiosDOM 직접 조작document.title 변경구독/이벤트 등록addEventListener, WebSocket타이머setTimeout, setInterval외부 라이브러리 연동지도, 차트 초기화 등핵심 이유 3가지1. 렌더링과 사이드 이펙트를 분리하기 위해React의 렌더링은 순수 함수여야 합니다. 렌더링 중 API 호출 등의 부수 효과를 직접 실행하면 예측 불가능한 동작이 발생할 수 있습니다.// ❌ 잘못된 방법 -..

Web/Next&React 2026.06.15

R2DBC

1. R2DBC란?관계형 데이터베이스를 논블로킹/비동기 방식으로 접근하기 위한 명세입니다.JDBC → 블로킹, ThreadLocal, 스레드 = 트랜잭션R2DBC → 논블로킹, Reactor Context, 구독 파이프라인 = 트랜잭션2. 동작 구조 — Netty 이벤트 루프R2DBC 자체가 이벤트 루프를 구현하는 게 아니라 Netty 이벤트 루프 위에서 동작합니다.┌─────────────────────────────────────────────┐│ Spring WebFlux │├─────────────────────────────────────────────┤│ Spring Data R2DBC │├──..

Database/일반 2026.06.08
반응형