2024/12 49

JWT(JSON Web Token) 란?

JWT란 무엇인가요?JWT(JSON Web Token)는 웹 표준 RFC 7519에 정의된 JSON 기반의 토큰으로, 주로 사용자 인증 및 정보 교환에 사용됩니다. JWT를 사용하는 이유안전한 정보 교환: JWT는 디지털 서명이 포함되어 있어 데이터의 무결성을 검증할 수 있습니다.세션 관리의 효율성: 서버에 상태를 저장하지 않고, 클라이언트 측에서 토큰을 관리합니다.확장성: 다양한 플랫폼 간의 인증에 사용 가능하며 RESTful API에서 특히 유용합니다.JWT의 구조JWT는 크게 세 부분으로 나뉩니다:Header (헤더) alg: 서명에 사용할 알고리즘 (예: HMAC SHA256)typ: 토큰의 유형 (항상 "JWT"){ "alg": "HS256", "typ": "JWT" }Payload (페이로드)..

Web 2024.12.05

데이터베이스(DB) 옵티마이저 란?

1. 데이터베이스 옵티마이저란? 옵티마이저(Optimizer)는 데이터베이스에서 최적의 실행 계획을 선택하는 역할을 합니다. 실행 계획이란 쿼리를 어떻게 처리할지 결정하는 로드맵 같은 것입니다.옵티마이저의 주요 역할통계 정보 기반 분석: 테이블의 데이터 분포와 크기 등을 고려다양한 실행 경로 비교: 여러 접근 방법(Index Scan, Full Table Scan 등)을 비교비용 기반 최적화: 가장 비용이 적은 경로 선택예를 들어, 아래와 같은 쿼리가 있다고 가정해봅시다:SELECT *FROM ordersWHERE order_date = '2023-12-01';옵티마이저는 다음과 같은 질문을 스스로 던집니다:해당 테이블에 인덱스가 있나요?데이터가 얼마나 많을까요?인덱스를 사용하는 것이 더 빠를까요, 아니..

DataBase 2024.12.04

인덱스(INDEX)란?

인덱스란?인덱스는 테이블의 컬럼 값과 해당 행(Row)의 위치(RID, Row ID)를 매핑해 놓은 구조입니다.조회 속도를 높여주는 대신, 추가적인 저장 공간과 쓰기 성능의 저하가 발생할 수 있습니다.📌 요약: 읽기는 빨라지지만, 쓰기(INSERT/UPDATE/DELETE)는 느려진다.인덱스가 필요한 이유예를 들어 아래와 같은 CUSTOMER 테이블이 있다고 합시다.SELECT * FROM CUSTOMER WHERE CUST_NAME = '홍길동';인덱스가 없다면?테이블 처음부터 끝까지 CUST_NAME 을 하나하나 확인 → "풀 테이블 스캔(Full Table Scan)"인덱스가 있다면?CUST_NAME 컬럼에 대한 인덱스를 타고 빠르게 위치를 찾아 조회 → 성능 수십~수천 배 개선인덱스의 구조 (O..

카테고리 없음 2024.12.04

데이터베이스 DDL, DML, DCL 정리

데이터베이스를 다루는 데 있어 중요한 세 가지 분류인 DDL (Data Definition Language), DML (Data Manipulation Language), **DCL (Data Control Language)**에 대해 알아보겠습니다.1️⃣ DDL: 데이터 정의 언어DDL은 데이터베이스의 구조를 정의하거나 변경할 때 사용하는 언어입니다.주요 명령어:CREATE: 새로운 데이터베이스 객체(테이블, 인덱스 등)를 생성ALTER: 기존 객체의 구조를 변경DROP: 객체를 삭제TRUNCATE: 테이블의 데이터를 초기화예시-- 테이블 생성CREATE TABLE Employees ( EmployeeID NUMBER PRIMARY KEY, Name VARCHAR2(50), Positi..

DataBase 2024.12.04

자바스크립트(JavaScript) 디바운스와 쓰로틀링 이란?

디바운스(Debounce)와 쓰로틀링(Throttling)은 JavaScript에서 이벤트 발생 빈도를 제어하기 위한 기술입니다. 많은 이벤트가 동시에 발생하는 것을 방지하여 성능을 최적화할 수 있습니다.디바운스(Debounce)디바운스는 이벤트가 연속적으로 발생할 때, 특정 시간 동안 추가적인 이벤트가 발생하지 않으면 한 번만 실행되도록 합니다.주요 특징:이벤트 호출을 지연시키며, 마지막 이벤트 발생 후 지정된 시간이 지나야 실행됩니다.사용 사례: 검색 입력창, 창 크기 조정 이벤트 등.예시: 검색 입력창function debounce(func, delay) { let timer; return function (...args) { clearTimeout(timer); timer = set..

Front-End 2024.12.03

자바에서 동적 바인딩과 정적 바인딩

**바인딩(Binding)**은 메서드 호출이 코드와 연결되는 시점을 의미합니다. 자바에서는 크게 **정적 바인딩(Static Binding)**과 **동적 바인딩(Dynamic Binding)**이 있으며, 이 두 개념은 객체 지향 프로그래밍에서 매우 중요합니다. 🚀1️⃣ 정적 바인딩 (Static Binding) ✨정적 바인딩은 컴파일 타임에 메서드 호출이 결정되는 방식입니다. 자바에서는 private, static, final 메서드가 여기에 해당합니다.특징컴파일러가 호출할 메서드를 미리 결정!성능이 빠름 (런타임에 추가 처리가 필요 없음).다형성(Polymorphism)이 적용되지 않음.✏️ 예제: 정적 바인딩class Animal { static void sound() { S..

Back_End/Java 2024.12.03

Feign Client란?

Feign Client는 Spring Cloud에서 제공하는 HTTP 클라이언트 라이브러리로, RESTful API 호출을 더욱 간결하고 선언적으로 처리할 수 있게 도와줍니다. Java 코드로 API 호출을 마치 인터페이스 메서드를 호출하듯 작성할 수 있어 생산성과 가독성이 높아집니다.Feign Client의 주요 특징인터페이스 기반: API를 호출할 때 복잡한 코드를 작성할 필요 없이 인터페이스와 어노테이션만으로 구현할 수 있습니다.내장형 로드 밸런싱: Spring Cloud LoadBalancer와 연동하여 클라이언트 부하 분산을 자동으로 처리합니다.확장 가능: 커스터마이징을 통해 로깅, 요청/응답 변환기 등을 손쉽게 추가할 수 있습니다.타사 라이브러리 통합: OkHttp, Apache HttpCli..

Back_End/Java 2024.12.03

오라클 데이터베이스 기초 문법

2️⃣ 오라클의 주요 데이터 타입 오라클에서는 데이터를 저장할 때 적절한 데이터 타입을 지정해야 합니다. 주요 데이터 타입은 다음과 같습니다: 데이터 타입 예시 VARCHAR2가변 길이 문자열'Hello'NUMBER숫자(정수, 실수 포함)123, 45.67DATE날짜와 시간2024-12-01CLOB대용량 텍스트100MB 텍스트BLOB바이너리 대용량 데이터이미지 파일 3️⃣ 기본 SQL 문법3.1 테이블 생성하기테이블은 데이터를 저장하는 기본 단위입니다.CREATE TABLE employees ( emp_id NUMBER(5) PRIMARY KEY, -- 사원 ID emp_name VARCHAR2(50), -- 사원 이름 hire_date DATE, -- ..

Oracle 2024.12.02

스프링(Spring) 필드 주입과 생성자 주입 – 무엇이 더 나은 선택일까?

Spring에서 의존성을 주입하는 방식은 여러 가지가 있지만, 대표적으로 **필드 주입(Field Injection)**과 **생성자 주입(Constructor Injection)**이 있습니다. 각각의 방식이 어떤 차이를 가지며, 어떤 방식이 더 적절한지 비교해 보겠습니다.1. 필드 주입 (Field Injection)필드 주입은 클래스의 필드에 직접적으로 @Autowired를 사용하여 의존성을 주입하는 방식입니다.🔍 장점✅ 코드가 간결하여 구현이 쉽습니다.✅ 초기에 빠르게 작성할 수 있으며, 학습하기 쉽습니다.⚠️ 단점❌ 테스트가 어렵습니다.필드가 private이므로, 테스트 시 Mockito 등을 활용하여 주입하려면 Reflection이 필요하거나 Spring 컨테이너를 사용해야 합니다.❌ 객체의..

Back_End/Java 2024.12.02