[DB] MYSQL EXPLAIN(실행계획) 보는법
·
DATABASE
EXPLAIN (실행계획) DB가 데이터를 찾아가는 과정을 알아보기 쉽게 DB 결과 셋으로 보여주는 것 사용방법 : EXPLAN [EXTENDED] SELECT ... FROM ... WHERE ... EXPLAIN(실행계획) 정보 요약 실행계획 정보 설명 id select문에 대한 순차 식별자, id 순서대로 select문이 실행됨 select_type select문의 유형 table 참조되는 테이블을 말함 type 어떤식으로 테이블들을 조인하는지 나타내는 항목, 타입을 분석함으로써 어떤 인덱스가 사용되고 있는지 확인하고, 이를 통해 쿼리를 어떻게 튜닝해야되는지에 대한 insight를 제공함 possible_keys 테이블에서 row를 매핑시키기 위해 사용 가능한 키를 보여줌 key 실제적으로 쿼리 실..
[AWS] MFA (멀티팩터인증) 설정
·
AWS
MFA Multi-Factor Authentication의 약자, 계정 탈취를 방지를 위한 2단계 인증 MFA 설정 1. 보안자격증명 우측 상단에서 보안자격증명 클릭 내 보안 자격증명 페이지로 접근 멀티팩터 인증에서 MFA 디바이스 할당 클릭 2. MFA 디바이스 관리 사전에 사용하는 모바일 디바이스에 Google Authenticator를 설치해야함 가상 MFA 디바이스 선택 (Google Authenticator로 진행할 것이라, MFA 디바이스로 선택) 3. 가상 MFA 디바이스 설정 QR코드 표시를 클릭 Google Authenticator을 실행하여 해당 QR코드 스캔 MFA코드에서 OTP번호를 입력함, 처음에 생성된 OTP를 MFA코드1에 입력, 그다음생성 OTP를 MFA 코드2 입력 MFA ..
[OTHER] Semantic Versioning
·
OTHER
Semantic Versioning 정의 버전 관리가 제각각의 방식으로 관리가 되지 않기 위해 규칙을 정해서 관리하기 위해 Github 공동창업자인 Tom Preston-Werner가 제안한 방식 Major Version : API 변경이 있을 경우 버전업 Minor Version : 기존버전과 호환되면서 새로운 기능이 추가되는 경우 버전업 Patch Version : 기존버전과 호환되면서 버그 수정되는 경우 버전업 Semantic Versioning 규칙 버전명은 반드시 X.Y.Z 형태의 정수여야함 (ex. Major.Minor.Patch) Major버전이 올라가면 Minor와 Patch버전은 0으로 초기화되고, Minor 버전이 올라가면 Patch버전은 0으로 초기화됨 버전 1.0.0을 공개 API로..
[IntelliJ] Untrusted Server's Certificate 해결 방법
·
IDE
Untrusted Server's Certificate가 계속 발생하는 경우 해결 방법 보통 SSL 통신 시도할 경우 방화벽 문제로 인해서 발생한다고 함 해당 알람이 발생할 경우 Settings에서 Server Certificates에서 인증서 관련 옵션을 체크하면됨 위에 언급한 설정 진행 (Settings -> Server Certificates -> Accept non-trusted certificates automatically 체크)
[JAVA] 어댑터 패턴
·
JAVA
어댑터 패턴 정의 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환시키는 패턴 인터페이스가 호환성이 맞지않는 클래스의 연관관계를 맺어주게 하는 패턴 어댑터 패턴 특징 기존 클래스의 수정을 전혀 하지 않고 타겟 인터페이스를 통하여 동작할 수 있게 해줌 기존 코드의 변경이 없기 때문에 재사용성이 높음 구성요소를 위해 클래스를 추가시켜야하기 때문에 복잡도가 높아질 수 있음 어댑터 패턴 용도 유지 보수 진행시 기존 로직 변경이 없이 새로운 부분을 추가하는 경우 어댑터 패턴 예시 public interface CardService { void pay(); void payCancel(); } public class CardAdapter { private final CardService cardServi..
[SPRING] Bean 생명주기 콜백 (PostConstruct / PreDestory)
·
SPRING
Bean 생명주기 콜백 스프링 빈이 생성된 후 의존관계 주입이 완료되거나 죽기 직전에 스프링 빈안에 있는 메서드를 호출해주는 기능 스프링은 3가지 방법으로 빈 생명주기 콜백을 지원함 인터페이스 (InitializingBean, DisposableBean), 설정정보 초기화 메서드 종료 메서드 지정, 어노테이션 사용 (PostConstruct, PreDestroy) Bean의 이벤트 라이프사이클 컨테이너 생성 -> 빈생성 -> 의존관계 주입 -> 초기화 콜백 -> 사용 -> 소멸전 콜백 -> 스프링 종료 스프링은 의존관계 주입이 완료되면 스프링 빈에게 콜백 메서드를 통해서 초기화 시점을 알려주는 다양한 기능을 제공하며 또한 컨테이너가 종료되기 직전에 소멸 콜백을 줌, 해당 과정을 통하여 안전하게 종료작업을..
[ELK] index [.async-search] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block] 발생시 처리
·
ELK
index [.async-search] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block] 발생 증상 기존에 개발계 테스트용도로 설치된 키바나 대시보드에서 조회가 안되고 해당 문구가 발생하며 조회가 안됨 엘라스틱서치 로그를 통해 high disk watermark[90%] exceeded .. free: 1.3gb[5.3%], shards will be relocated away from thie node; 해당 내용이 확인됨 발생원인 노드 디스크가 90%이상 사용중이면 해당 마스터노드에서는 모든 인덱스를 read-only로 만들어버림 (확인 시 디..
[JAVA] 비트연산자
·
JAVA
비트연산자 비트(bit) 단위로 논리 연산을 할때 사용하는 연산자 기본적으로 컴퓨터는 8bit의 공간 기준으로 사용함 8bit == 1byte 실수형을 제외한 모든 기본형에서 사용이 가능함 비트 연산자 설명 & 대응되는 비트가 모두 1이면 1을 반환함 (AND연산) | 대응되는 비트중에서 하나라도 1이면 1을 반환 (OR연산) ^ 대응되는 비트가 서로 다르면 1을 반환 (XOR연산) ~ 비트를 1이면 0으로, 0이면 1로 반전 (NOT연산) 부호를 유지하면서 지정한수 만큼 전부 오른쪽으로 이동시킴 (RIGHT SHIFT연산) Bit연산 관련 메소드 Integer.toBinaryString 10진수나 16진수의 정수를 비트 단위의 문자열로 간단하게 바꿀수 있게 해주는 메소드 Integer.toBinaryS..
[JAVA] PriorityQueue
·
JAVA
PriorityQueue 우선순위를 먼저 결정하고 우선순위가 높은 데이터가 먼저 나가는 자료구조 PriorityQueue 특징 우선순위가 높은 요소를 먼저 꺼내서 처리하는 구조 내부요소는 Heap으로 구성되어있는 이진트리 구조 내부구조가 Heap으로 구성되어있어 추가 / 삭제시 시간복잡도는 O(NLogN) 값을 비교하기 때문에 NULL 허용이 안됨 PriorityQueue 우선순위 설정 //오름차순 PriorityQueue priorityQueue = new PriorityQueue(); //내림차순 PriorityQueue priorityQueue = new PriorityQueue(Collections.reverseOrder()); 우선수위를 정하는 기준은 Java 정렬기준과 동일 (낮은숫자부터 큰숫..