목록분류 전체보기 (288)
개발자는 기록이 답이다

UtilityClass는 lombok v1.16.2에서 실험적인 기능으로 도입되었다. @UtilityClass를 사용하면, 컴파일 시점에 생성자 private 으로 만들어 주고, 모든 메서드를 static으로 만들어 준다. package com.devkuma.tutorial.lombok; import lombok.experimental.UtilityClass; @UtilityClass public class UtilityClassTutorial { public int plus(int a, int b) { return a + b; } } 위 코드는 @UtilityClass로 인해 아래와 같이 변경된다. package com.devkuma.tutorial.lombok; public final class Ut..

InnoDB는 MySQL에서 사용할 수 있는 스토리지 엔진 중 거의 유일하게 레코드 기반의 잠금을 제공한다. 그 때문에 높은 동시성 처리가 가능하고 안정적이며 성능이 뛰어나다. 1. 프라이머리 키(PK)에 의한 클러스터링 엔진 InnoDB MyISAM 클러스터링 키 지원 지원 미지원 물리적 주소 사용 프라이머리 키 값 레코드의 주소 값 InnoDB 스토리지 엔진 모든 테이블은 기본적으로 프라이머리 키를 기준으로 클러스터링되어 저장된다. 즉, 프라이머리 키 값의 순서대로 디스크에 저장된다는 뜻이다. 모든 세컨더리 인덱스는 레코드의 주소 대신 프라이머리 키의 값을 논리적인 주소로 사용한다. 프라이머리 키가 클러스터링 인덱스이기 때문에 프라이머리 키를 이용한 레인지 스캔은 상당히 빨리 처리 될 수 있다. 결과..

1. 쿼리파서 사용자 요청으로 들오온 쿼리 문장을 토큰(MySQL이 인식할 수 있는 최소 단위의 어휘나 기호)으로 분리해 트리 형태의 구조로 만들어내는 작업. 쿼리 문장의 기본 문법 오류는 이 과정에서 발견되고 사용자에게 오류 메세지를 전달한다. 2. 전처리기 파서과정에서 만들어진 파서 트리를 기반으로 쿼리 문장에서 구조적인 문제점이 있는지 확인한다. 각 토큰을 테이블 이름이나 칼럼 이름, 또는 내장 함수와 같은 개체를 매핑해 해당 객체의 존재 여부와 객체의 접근권한 등을 확인하는 작업을 수행한다 실제 존재하지 않거나 권한 상 사용할 수 없는 개체의 토큰은 이 단계에서 걸러진다. 3. 옵티마이저 사용자의 요청으로 드러온 쿼리 문장을 저렴한 비용으로 가장 빠르게 처리할지 결정하는 역할 DBMS의 두뇌에 해..

테스트 코드도 코드이기 때문에 중복되는 코드를 리팩토링을 하려고 합니다. 리팩토링하면서 발견한 점과 리마인드해야할 사항에 대해서 정리하고자 합니다 테스트 클래스에 @어노테이션은 1개만 존재할 수 있습니다. 상속을 단순히 재사용하기 위해 사용하면 많은 문제가 발생합니다. 현재 프로젝트에서 SecurityTest랑 MemberRepositoryTest에서 각 단일 테스트 전에 @BeforeEach어노테이션을 사용하여 Member를 데이터베이스에 저장하는 코드가 중복되어 사용되고 있습니다. 이 코드는 유저 중복을 확인하거나 로그인이나 로그인 실패 테스트를 위해서 사용하기 위해 작성되었습니다. 다른 테스트코드에서도 중복되는 부분을 별도의 상위 클래스를 상속 받도록 구현했기 때문에, 이번 상황도 SetupMemb..