반응형

전체 글 388

동일한 테이블을 여러 번 조인하는 방법과 서브쿼리를 사용하는 방법의 차이

동일한 테이블을 여러 번 조인하는 방법과 서브쿼리를 사용하는 방법의 차이(서브 쿼리가 느린 이유) 해당 포스팅은 동일한 테이블을 여러 번 조인하는 쿼리를 보면서 다른 방법은 없는지? 성능적 이슈는 없는지? 하는 의문에서 시작하였으며, 조인을 사용하는 방식과 서브쿼리를 사용하는 방식 각각의 이론적* 장단점을 정리해 본 내용입니다. /*실무에서의 쿼리는 대부분 아래 예시의 쿼리보다 복잡할 뿐만 아니라 다양한 케이스가 존재할 수 있으며, 데이터 양이나 인덱스 등의 변수로 인해서도 쿼리의 성능이 다르게 나올 수 있기 때문에 어떤 것이 정답이다 라고는 할 수 없습니다.때문에 아래 내용은 이론에 기초한 장단점이며, 이론을 참고하되 성능적 부분은 실제 사용되는 쿼리의 실행 계획 등을 통해 확인할 필요가 있습니다.*/..

Zero Width Space란? ZWSP 때문에 발생한 문제 (동일한 문자열이 다르다고 판별될 때)

동일하게 보이는 문자열이 다르다고 판단되는 경우 Zero Width Space가 원인일 수도 'Zero Width Space(ZWSP)'란 단어 그대로 '폭이 없는 공백'을 뜻하는데요.해당 포스팅에서는 zero width space로 인해 발생한 문제를 해결하는 과정에서 해당 개념과 더불어 whitespace characters에 대한 개념 및 정규식을 통한 whitespace character 제거 방법에 대해서도 정리하였습니다. Zero Width Space 발견 시스템 로직을 통해 중복된 값이 들어가지 않도록 처리한 문자열 컬럼이 있었는데요.관련된 데이터 쪽 문제가 있어 확인하던 중 해당 컬럼에 다음과 같이 중복된(사실은 중복이 아니라 동일한 것처럼 보이는) 값이 들어가 있는 것을 볼 수 있었습니다..

IT Info 2024.09.28

eclipse 이클립스 자주 사용되는 단축키 정리

eclipse 자주 사용되는 단축키 정리 최근 이클립스 환경에서 주로 작업을 하게 되면서 업무 효율성을 위해 자주 사용되는 단축키를 정리하였습니다.Eclipse에 설정된 단축키는 'Preferences' -> 'General' -> 'Keys'를 통해 확인 및 변경이 가능합니다. 1. 프로젝트 내에서 파일명 검색첫 번째는 프로젝트 내에서 특정 파일을 검색할 때 사용되는 단축키입니다.파일명을 알고 있다면 굳이 Project Explorer 영역에서 마우스로 해당 파일을 찾을 필요 없이 검색을 통해 파일을 열 수 있습니다.windows 환경에서는 'Ctrl + Shift + R' 단축키가 사용되고 mac 환경에서는 'Command + Shift + R' 단축키가 사용됩니다.   2. 세로 편집 모드(열 편집..

IT Info 2024.09.18

LISTAGG 함수 사용 방법 및 예시(여러 행의 값을 하나의 문자열로 결합할 때)

Oracle 여러 행의 값을 하나의 문자열로 결합할 때 사용하는 LISTAGG 함수 사용 방법 및 예시 해당 포스팅은 'LISTAGG' 함수의 사용 방법 및 예시에 대해 정리한 내용입니다. LISTAGG 함수는 오라클 데이터베이스에서 그룹별 여러 행의 데이터를 구분자로 연결하여 하나의 문자열로 표현할 때 유용하게 사용되며, 때문에 대부분의 경우 'GROUP BY' 또는 'PARTITION BY' 절과 함께 사용됩니다.(Oracle 10g ~ Oracle 11g R1 버전에서는 여러 행의 값을 하나의 문자열로 결합할 때 'WM_CONCAT' 함수를 사용하였으나, 11g R2 버전부터는 WM_CONCAT 대신 'LISTAGG' 함수가 공식적으로 도입되었습니다.) * 아래 예시는 Oracle 19c 버전에서 ..

Programming/Oracle 2024.09.15

(network) 서브넷 마스크 개념 정리 및 문제 풀이

서브넷 마스크(+ 서브넷팅) 개념 정리 및 문제 풀이해당 포스팅은 네트워크 영역에서 헷갈릴 수 있는 부분인 '서브넷 마스크'에 대한 개념적 이해를 돕기 위해 정리한 내용입니다.서브넷 마스크 문제는 정보처리기사, 리눅스 마스터 등 자격증 시험에도 출제되는 개념이기 때문에 한번 잘 이해해 두면 도움이 될 것이라고 생각합니다.(아래 내용은 IPv4 주소 체계 및 IP 주소 클래스에 대한 기본적인 이해가 우선적으로 필요합니다.) 1. IP 주소의 '네트워크 영역'과 '호스트 영역' 네트워크 영역IP 주소는 '네트워크 영역'과 '호스트 영역'으로 나눠서 볼 수 있는데요.'네트워크 영역'의 경우 IP 주소 앞부분에 위치하며, 특정 네트워크를 식별하는 데 사용됩니다.네트워크 영역은 동일한 네트워크에 있는 모든 장치들..

맥북 유니코드(UTF-8) 텍스트 인코딩이 적용되지 않습니다. 해결 방법

문서를 열 수 없습니다. 유니코드(UTF-8) 텍스트 인코딩이 적용되지 않습니다. 문제 해결 방법 해당 포스팅은 macOS 환경에서 텍스트 파일을 열 때 다음과 같이 '문서를 열 수 없습니다. 유니코드(UTF-8) 텍스트 인코딩이 적용되지 않습니다.' 문제가 발생하였을 때의 해결 방안에 대해 정리한 내용입니다. 먼저 텍스트 파일을 열 때 이러한 문제가 발생하는 이유는 열고자 하는 텍스트 파일의 인코딩 설정이 macOS의 기본 인코딩 설정인 'UTF-8'과 다르기 때문에 발생하는 것인데요.(특히 한글 인코딩 방식인 'EUC-KR' 또는 'CP949'로 저장된 텍스트 파일을 맥 환경에서 열 때 발생할 수 있습니다.) 이러한 인코딩 문제를 해결할 수 있는 방법으로는 아래와 같은 방법이 있으며, 자세한 내용은 ..

Programming/MacOS 2024.08.29

(spring project) log4j2 로그 파일 분리하기

spring 프로젝트 log4j2 로그 파일 분리하기 해당 포스팅은 log4j2를 사용하는 스프링 프로젝트에서 특정 용도의 로그에 대한 로그 파일을 별도로 분리하는 방법을 정리한 내용입니다.혹시나 log4j2가 아니라 logback을 쓰시더라도 java 코드단의 적용 방식은 같기 때문에 로그 설정 xml 파일의 작성 방법만 logback에 맞춰서 적용하시면 됩니다. 1. 로그 파일을 분리하려는 이유먼저 로그 파일의 분리를 고려하게 된 가장 큰 이유는 결국 잘 관리된 로그를 통해 서비스 유지보수 및 운영을 더 효율적으로 하기 위함인데요. 기본적으로 서비스의 전체 로그는 RollingFile의 'TimeBasedTriggeringPolicy' 및 'SizeBasedTriggeringPolicy'를 통해 날짜..

Programming/Spring 2024.08.25

(linux) /etc/profile ~/.bash_profile /etc/bashrc ~/.bashrc 환경 파일 내용 정리

(Linux) /etc/profile ~/.bash_profile /etc/bashrc ~/.bashrc 환경 파일 내용 정리   해당 포스팅은 리눅스를 공부하는 과정에서 '/etc/profile', '~/.bash_profile', '/etc/bashrc', '~/.bashrc' 각 환경 설정 파일의 역할과 차이점, 어떤 순서로 동작하는지에 대해 정리한 내용입니다.(아래 내용은 bash shell이 사용된다는 가정하에 내용으로 다른 쉘을 사용하는 경우 적용되는 파일 명이 조금씩 다를 수 있습니다.) 각 파일의 역할과 세부적인 내용* 내용 중 등장하는 로그인 쉘(login shell)과 비로그인 쉘(non-login shell)에 대해서는 아래에 추가로 정리해 놓았으니 아래 내용을 먼저 보고 해당 내용을..

Programming/Linux 2024.08.21

리눅스 vim(vi) 편집기 문자열 치환 명령어 정리

linux vim(vi) 편집기 문자열 치환 명령어 정리 linux vim(및 vi) 편집기에서는 문자열 치환이 필요한 경우 다음과 같은 형식의 명령어를 사용하여 문자열을 치환할 수 있는데요.아래 내용을 통해 해당 명령어를 사용하는 여러 옵션 및 예시들을 살펴보겠습니다.(문자열 치환은 편집기의 ex 모드에서 진행됩니다.)  1. 기본 치환 명령어#기본 형식: s/검색할문자열/바꿀문자열/#현재 커서 라인에서 첫 번째로 발견되는 'hello' 문자열을 'world'로 치환: s/hello/world/ 기본적인 치환 명령어는 's/검색할문자열/바꿀문자열/' 형식이며, 해당 명령어는 현재 커서가 위치한 라인에서 첫 번째로 일치하는 '검색할문자열'을 '바꿀문자열'으로 치환합니다.  2. 현재 라인에 대해 일치하는..

Programming/Linux 2024.08.18

CLOB, BLOB 데이터 타입과 mybatis에서 CLOB, BLOB 사용 방법

CLOB, BLOB 데이터 타입과 mybatis에서 CLOB, BLOB insert 및 select 사용 방법 LOB(Large Object)LOB은 단어 뜻처럼 대용량의 객체(데이터)를 저장하기 위한 데이터 타입들을 지칭하는 용어입니다.LOB은 텍스트 문서나 이미지, 오디오, 동영상 파일과 같은 데이터베이스 테이블에 저장되는 일반적인 데이터 타입보다 훨씬 큰 데이터를 관리할 때 사용되며, 주로 'CLOB(Character Large Object)'과 'BLOB(Binary Large Object)' 두 가지 유형으로 나뉩니다. Oracle 관점에서 VARCHAR2가 최대 4000byte까지 지원하기 때문에 4000byte 이상의 데이터 저장에는 CLOB 또는 BLOB이 사용됩니다.또한 LONG 타입의 ..

Programming/Oracle 2024.08.15

Could not load JDBC driver class [org.h2.Driver] 발생 원인과 해결 방법

Could not load JDBC driver class [org.h2.Driver] 발생 원인과 해결 방법org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]: Error setting property values; nested exception is org.springframework.beans.PropertyBatchUpdateException; nested PropertyAccessExceptions (1) are:PropertyAccessExcep..

Programming/Error 2024.08.11

(Jeus) The server adminServer initialization failed because of a stream closed error.

The server adminServer initialization failed because of a stream closed error.해당 문제는 ubnutu(20.04.6 LTS) 환경에서 jeus(8.5)를 설치하여 adminServer를 실행하는 과정에서 발생한 문제입니다. 먼저 jeus가 설치된 디렉터리 하위 /bin 디렉터리에서 './startDomainAdminServer -u administrator -p 패스워드' command를 통해 adminServer를 실행하였습니다.(이때 실행 명령어 중 -u, -p 에서 사용되는 아이디 및 패스워드는 jeus 설치 시 설정한 값을 사용합니다.)  그리고 다음과 같은 Exception이 발생하며 adminServer 실행에 실패했는데요. Exc..

Programming/Error 2024.08.05

ubuntu jdk tar.gz 설치 방법 (+ update-alternatives란)

Ubuntu JDK tar.gz 설치 방법 (+ update-alternatives란)ubuntu에 jdk tar.gz 설치 방법을 찾아보던 중 'update-alternatives'를 활용하는 간단한 방법을 찾아 공유하면서 update-alternatives 커맨드 툴에 대해서도 함께 정리한 내용입니다. jdk tar.gz 설치 방법#Login as rootsudo su#create jdk directorymkdir /opt/jdk#uncompress, change to your file nametar -zxf jdk-8u202-linux-x64.tar.gz -C /opt/jdk#check if files are therels /opt/jdk#update alternatives so the comman..

Programming/Linux 2024.07.24

맥북 가상머신 환경(UTM)에 Linux 설치하기

맥북 가상머신 환경(UTM)에 Linux 설치하기해당 포스팅은 '맥북(macOS)에서 UTM을 통한 가상머신 환경 위에 Linux(Ubuntu)를 설치하는 과정'을 정리한 내용입니다. UTM 외에도 VirtualBox, VMWare, Parallels 등 맥에서 사용할 수 있는 가상화 소프트웨어가 있으며 유무료 여부, 호환성, 성능, 사용자 인터페이스 등의 차이가 있는데 해당 예시에서는 쉽게 무료로 사용할 수 있는 오픈 소스인 UTM을 사용하였습니다. 작업 환경은 인텔 맥 환경에서 진행되었으며, 전체 설치 과정은 크게 아래 순서에 따라 진행됩니다. 1. UTM 설치2. Ubuntu Image 다운로드3. UTM 가상머신 환경에 Linux 설치 1. UTM 설치 UTMSecurely run operatin..

Programming/MacOS 2024.07.22

ROW_NUMBER OVER PARTITION BY 그룹 내 순위를 반환하는 함수

그룹 내 순위를 반환하는 함수 ROW_NUMBER OVER PARTITION BY /* PARTITION BY, ORDER BY 절 모두 여러 개의 컬럼을 기준으로 설정할 수 있습니다. */ROW_NUMBER() OVER(PARTITION BY [그룹핑할 컬럼] ORDER BY [정렬할 컬럼]) 그룹 내 순위를 조회하는 함수 패턴인 'ROW_NUMBER OVER PARTITION BY'는 다음과 같은 문법으로 사용되는데요.문법의 각 부분에 대해서 살펴보면 다음과 같습니다.   ROW_NUMBER()먼저 'ROW_NUMBER()'는 윈도우 함수(ANSI/ISO SQL 표준 WINDOW FUNCTION) 중 순위를 반환하기 위해 사용되는 함수로 각 행에 고유한 번호를 부여합니다. (이때 번호는 1부터 시작하..

반응형