Mysql 쿼리 동작 순서 1. 쿼리 파서 동작 select id from team where team_name = '드림팀'; 처럼 sql 문을 실행하면 쿼리 파서가 각 단어를 토큰으로 분리한 뒤 문법적 오류를 체크합니다. 2. 파서 트리 구성 문법적 오류가 없을 경우 파서 트리 형태로 구성합니다. 3. 전처리기 동작 이 또한 오류를 체크합니다. team 이라는 테이블이 존재하는지, 사용자가 team 테이블에 접근이 가능한지를 파악합니다. 4. 옵티마이저 동작 옵티마이저는 최적화된 실행계획을 실행하는데 도움을 줍니다. 기본적으로 풀스캔을 하게 되지만 인덱싱을 주어 실행계획을 변경할 수 있습니다. Mysql 엔진의 목적 Mysql 엔진의 목적은 요청 쿼리에 대해서 어떻게 실행할지 결정하는 ..
대칭키 대칭키는 암호화하는 키와 복호화하는 키가 동일한 경우를 말합니다. 영수가 자전거 자물쇠를 A키로 잠궜습니다. 영수가 철수에게 A키를 택배로 전달했습니다. 철수가 자전거 자물쇠를 A키로 풀었습니다. 이와 같은 경우가 대칭키입니다. 대칭키의 문제점 영수가 철수에게 A키를 전달해야 영수는 자물쇠를 풀 수 있습니다. 이때 중간에 누가 키를 가로채면 아무나 자전거(정보)를 훔칠 수 있습니다. 이런 문제를 보완한 방식이 비대칭키입니다. 비대칭키 비대칭키는 암호화하는 키와 복호화하는 키가 다른 경우를 말합니다. 개인만 알고 있어야 하는 개인키(private key)와 모든 이에게 공개되는 공개키(public key)가 사용됩니다. 개인키를 암호화 하면 공개키로 복호화하고, 공개키로 암호화를 하면 개인키로 복호..
Optional Optional 은 Java8 부터 도입된 기능이고, NullPointerException 을 방지하도록 도와줍니다. String 변수가 null 인 상황, DB에서 데이터를 조회를 했지만 결과값이 없는 상황에서 원하는 다음 처리(메서드)를 실행할 경우 NPE를 경험할 수 있습니다. package java.util; public final class Optional { private final T value; private Optional(T value) { this.value = value; } public boolean isPresent() { return value != null; } public boolean isEmpty() { return value == null; } ... ..
Slf4j(Simple Logging Facade For Java) java.util.logging, logback 및 log4j와 같은 다양한 로깅 프레임 워크에 대한 추상화(인터페이스) 역할을 하는 라이브러리 입니다. 인터페이스를 사용하여 로깅을 사용하기 때문에 추후에 로깅 라이브러리를 변경하더라도 코드를 변경하지 않아도 됩니다. 추상화 로깅 라이브러리이기 때문에 단독으로는 사용할 수 업습니다. 배포 시에 개발자가 로깅 프레임워크를 선택해서 연결해줘야 사용할 수 있습니다. Facade Pattern f에 해당하는 Facade 가 무슨 뜻인지 궁금했습니다. 퍼사드 패턴은 객체 지향 프로그래밍에서 자주 사용되는 소프트웨어 디자인 패턴입니다. facade는 내부적으로 혹은 구조적으로 더 복잡한 코드를 가려..