맨해튼 거리(Manhattan Distance)

코딩테스트를 프로그래밍언어나 SQL 구현 문제로 가끔씩 출제 되는 아래의 거리 측정 방법에 대해 알아보자.맨허튼 거리(Manhattan Distance)는 2차원 평면 공간에서 두 점 A와 B 사이의 거리를. 측정하는 방법 중 하나로, 두 점 사이의 수평 및 수직 이동

2023년 10월 2일
·
0개의 댓글
·

LIKE 키워드의 인덱스 사용

MySQL에서 like 연산자는 regexp 연산자 보다 단순하며 인덱스를 이용해 데이터를 조회할 수 있다.다들아시다 시피 like 연산자는 정규식을 사용하지않고 %과 \_ 와일드 카드를 사용해서 특정한 상수 문자열이 있는지 조회하는 연산자이다.우선 위에서 언급한 2

2023년 6월 29일
·
0개의 댓글
·

배포없이 실행중인 localhost 를 인터넷에 올리기

ngrok는 로컬 컴퓨터에서 실행되는 웹 서버를 외부에서 접근할 수 있게 해주는 터널링 프로그램이다. 일반적으로 로컬 컴퓨터에서 애플리케이션을 개발하고, 이를 외부에서 접근하기 위해서는 웹 서버를 구축해야 한다. 하지만, 로컬 컴퓨터에서 실행하는 웹 서버를 mgrok

2023년 4월 25일
·
0개의 댓글
·

H2 데이터베이스를 홈 디렉토리에 파일로 저장하기

H2는 자바로 작성된 관계형 데이터베이스 시스템이다. 이 데이터베이스는 인메모리, 임베디드, 서버 모드 총 3가지 작동 모드를 제공한다. 나는 주로 스터디용으로 인메모리나 임베디드용으로 하기때문에 각 모드에 대해 간락하게 알아본 다음 인메모리 모드용으로 설정까지 해보자

2023년 4월 25일
·
0개의 댓글
·

롬복 @All/NoArgsConstructor 제대로 알고 사용해보자.

문득 전 회사 레거시 코드를 생각하다가 @AllArgsConstructor, @NoArgsConstructor 등 여러 어노테이션이 한클래스에 같이 작성되어있는 것을 본적이있다.Lombok은 불필요한 코드와 작업을 줄여주는 좋은 라이브러리지만, 무분별하게 사용하면 코드

2023년 4월 20일
·
0개의 댓글
·

MySQL 에서 COUNT() 함수의 인자값 유형에 대해 알아보자.

MySQL 에서 COUNT() 함수는 주어진 조건에 해당하는 레코드의 수를 반환하는 함수다. COUNT() 함수는 아래와같이 사용할수있다. 별표(\*)컬럼명 숫자차이점이라면 별표(\*)와 숫자를 넣을경우 결과는 모든 행을 반환 하기 때문에 결과는 같다. 또한, 성능차이

2023년 4월 19일
·
0개의 댓글
·

Ubuntu Time Zone 변경하기

최근 간단한 사이드 프로젝트를 하면서 오랜만에 도커를 사용하여 서버를 올렸지만, 원하던 시간에 로그가 찍히질않아 확인하던중 Linux System은 기본적으로 UTC를 사용한다는걸 잊고 있었다.그래서 Command 명령어로 UTC 로 설정된 기본 시간을 KST 로 변경

2023년 4월 13일
·
0개의 댓글
·

개인정보 인증 시 사용 되는 CI, ID 란 무엇일까?

CI(Connecting Information) 연계정보라 한다. CI는 특정 개인의 식별을 위한 고유한 범용 Key값이다. 주민번호 기반으로 생성되기 때문에 유일성이 보장되고, 일방향 암호화를 이용하기때문에 복호화가 불가능하다. 즉, A, B, C 라는 각각 다른 사

2023년 3월 21일
·
0개의 댓글
·

MySQL의 격리 수준 종류와 특징

트랜잭션의 격리 수준(Isolation Level)이란 여러 트랜잭션이 동시에 처리될 때 특정 트랜잭션이 다른 트랜잭션에서 변경하거나 조회하는 데이터를 볼 수 있게 허용할지 말지를 결정하는 것이다.격리 수준은 크게 READ UNCOMMITTED, READ COMMITT

2023년 3월 6일
·
0개의 댓글
·

InnoDB 락(Lock) 에 대해 알아보자.

InnoDB는 일관성과 동시성을 보장하기 위해 레코드(Row) 수준의 잠금 방식을 사용하는 MySQL의 스토리지 엔진중 하나이다.InnoDB의 레코드 잠금 유형은 크게 공유 잠금(Shared Lock)과 배타적 잠금(Exclusive Lock)으로 나뉠 수 있다.공유

2023년 3월 5일
·
0개의 댓글
·
post-thumbnail

데이터 암호화

데이터 암호화는 MySQL 5.7 버전부터 지원하며, MySQL 8.0 버전 부터는 리두 로그, 언두 로그, 복제를 위한 바이터리 로그 등도 모두 암호화 기능을 지원한다.MySQL 암호화 기능은 데이터베이스 서버와 디스크 사이의 데이터를 읽고 쓰기 지점에서 암호화 또는

2022년 8월 2일
·
0개의 댓글
·
post-thumbnail

MySQL 아키텍처

MySQL 서버는 크게 MySQL 엔진과 스토리지 엔진으로 구분해서 볼 수 있다.

2022년 7월 4일
·
0개의 댓글
·

Spring Boot 에서AbstractRoutingDatasource 사용한 Read, Write 분리

보통 서비스의 규모가 작은 경우에 한개의 DataBase 에서 Read 와 Write 작업을 모두 수행 하도록 구현된다. 하지만, 점차 서비스 규모가 커짐에 따라 한 곳에서 모든 작업을 처리하기엔 병목 현상이 발생할 위험이 높아진다.이를 예방하기 위해 Replicati

2022년 5월 29일
·
0개의 댓글
·
post-thumbnail

UNION 사용에 대해서

최근 회사에서 코드 리팩토링을 하는 도중 의아 했던 적이 있었다.한 사용자의 올해 누적 송금액을 가져오는 부분이었는데 현재 송금 진행 중인건과, 송금 완료된 건의 각각 SELECT 구문을 UNION 으로 합쳐서 가져오고 있었다.기본적으로 이러한 방법은 생각하기 쉽게 쿼

2022년 4월 12일
·
0개의 댓글
·
post-thumbnail

선택정렬(Selection Sort)

5년전 대학생 때 자료구족 과목을 수강하면서 정렬기법에 대하여 공부한적이 있다. 그때 공부했던 내용을 다시 되새기며 이 블로그에 기록하고자 한다.선택정렬(Selection Sort)은 기준이되는 원소를 정한 후 전체 원소중 가장 작은 원소를 찾아 자리를 교환하는 방식이

2022년 3월 21일
·
0개의 댓글
·
post-thumbnail

세미 조인 서브. 쿼리 - Duplicate Weedout 최적화

Duplicate Weedout 은 세미 조인 서브 쿼리를 일반적인 INNER JOIN 쿼리로 바꿔서 실행하고 마지막에 중복된 레코드를 제거하는 방법으로 처리되는 최적화 알고리즘이다.아래의 salaries 테이블의 Parimary key 가 (emp_no + from_

2022년 2월 21일
·
0개의 댓글
·

Select tables optimized away

MIN() 또는 MAX() 만 SELECT 절에 사용되거나 또는 GROUP BY 로 MIN(), MAX()를 조회하는 쿼리가 적절한 인덱스를 사용할 수 없을때 인덱스를 오름차순 또는 내림차순으로 1건만 읽는 형태의 최적화이다.paimary key(emp_no)paima

2022년 2월 21일
·
0개의 댓글
·
post-thumbnail

임시테이블(Using temporary)

MySQL 또는 MaraiDB 엔진이 스토리지 엔진으로부터 받은 레코드를 정렬하거나 그룹핑할 때는 내부적인 임시테이블을 사용하게 된다.일반 적으로 MariaDB 엔진이 사용하는 임시 테이블은 처음에는 메모리에 생성됐다가 테이블의 크기가 커지만 디스크로 옮겨진다.ORDE

2022년 1월 24일
·
0개의 댓글
·
post-thumbnail

SQL 정렬 처리 방식

쿼리에 ORDER BY를 사용하면 다음의 3가지 처리 방식중 하나로 정렬된다.인덱스 정렬ORDER BY에 명시된 컬럼이 제일 먼저 읽은 테이블(드라이빙)에 속하고 ORDER BY 순서대로 생성된 인덱스가 있어야 한다. 또한 WHERE절에 첫 번째 읽은 테이블의 컬럼에

2022년 1월 20일
·
0개의 댓글
·
post-thumbnail

ORDER BY절과 LIMIT 최적화

MySQL과 MariaDB 에서는 ORDER BY 절을 가진 쿼리가 인덱스를 사용하지 못할때, 실시간 정렬(Using filesort)를 수행한다.이때에는 조건절에 일치하는 모든 레코드를 가져와서 퀵(Quick sort) 알고리즘을 수행한다.정렬할 레코드 건이 많을 경

2022년 1월 19일
·
0개의 댓글
·