분류 전체보기
-
Java - ReflectionLanguage/Java 2022. 4. 5. 17:33
Reflection Reflection이란? 리플렉션은 Heap 영역에 로드된 Class 타입의 객체를 통해, 원하는 클래스의 인스턴스를 생성할 수 있도록 지원하고, 인스턴스의 필드와 메서드를 접근 제어자와 상관없이 사용할 수 있도록 지원하는 API이다. 여기서 로드된 클래스라고 하면, JVM의 Class Loader에서 클래스 파일에 대한 로딩을 완료한 후, 해당 클래스의 정보를 담은 Class 타입의 객체를 생성하여 메모리의 Heap 영역에 저장해 둔 것을 의미한다. new 키워드를 통해 만드는 객체와는 다른 것임을 유의해야 한다. Reflection 사용 방법 리플렉션을 사용하기에 앞서, Heap 영역에 로드된 클래스 타입의 객체를 가져와야 한다. 클래스 타입의 객체를 가져오기 위한 방법에는 크게 ..
-
Java - hashCode() & equals()Language/Java 2022. 4. 5. 15:34
hashCode() hashCode()란? hashCode()는 두 객체가 같은 객체인지 확인한다. hashCode() 메서드는 '=='과 같은 동일 비교 기능을 하며, 반환 값으로 런타임 중 객체의 유일한 정수 값을 반환한다. 일반적으로 Heap에 저장된 객체의 메모리 주소를 반환한다. 해시란? 해시는 임의의 크기를 가진 데이터(key)를 고정된 크기의 데이터(value)로 변화시켜 저장하는 것이다. key에 대한 해시값을 구하는 과정을 해싱이라고 하며, 이때 사용하는 함수를 해시함수라고 한다. equals() equals()란? equals()는 두 개의 객체가 동일한지 검사하기 위해 사용되는 메서드이다. equals()가 객체를 비교하는 방법은 두 개의 객체가 참조하는 것이 동일한지를 확인하는 것이..
-
Oracle - MySQL의 LIMIT & Oracle의 ROWNUMDatabase/Oracle 2022. 4. 4. 18:02
MySQL의 LIMIT & Oracle의 ROWNUM LIMIT과 ROWNUM MySQL이나 PostgreSQL에서 사용하는 LIMIT 절을 Oracle에서 사용하고 싶은 경우가 있다. 하지만, Oracle에서는 LIMIT 절을 사용할 수 없다. Oracle에서는 LIMIT 대신 ROWNUM을 사용할 수 있는데, LIMIT과 ROWNUM은 사용법과 용도가 다르기 때문에 사용 시 주의해야 한다. LIMIT은 쿼리가 ORDER BY 절까지 모두 실행이 된 후 해당 쿼리에서 원하는 행의 데이터를 가져오는 반면에, ROWNUM은 쿼리가 완전히 수행되지 않은 원 데이터의 정렬순서대로 번호를 매기기 때문에 전혀 다른 결과가 출력된다. 처음 구간에서부터의 행 출력 1. MySQL의 LIMIT SELECT * FROM..
-
AWS - Ubuntu 환경에서 Tomcat 서버 설치하기DevOps/AWS 2022. 4. 3. 01:21
APT Ubuntu의 소프트웨어 관리 방법 Ubuntu는 입문자 친화적인 Linux 버전으로 널리 알려져 있으며, 응용 프로그램을 설치하기 위한 GUI 기반의 많은 방법들이 존재한다. 하지만, 커맨드 라인을 통해 소프트웨어를 관리하는 것이 시간을 절약할 수 있고 빠른 방법이다. Ubuntu 또는 Linx Mint와 같이 Ubuntu 기반의 Linux 배포판을 사용하기 시작했다면, apt-get 명령어를 사용해야 할 것이다. APT란? Ubuntu는 Debian Linux에 의존하며 dpkg 패키징 시스템을 사용한다. 패키징 시스템은 단순히 설치를 위한 프로그램과 응용 프로그램을 제공한다. APT(Advanced Package Tool)는 dpkg 패키징 시스템과 쉽게 상호 작용하는 데 사용되는 커맨드 라..
-
Java - ThreadLanguage/Java 2022. 3. 28. 14:19
메인 스레드 메인 스레드의 동작 public static void main(String[] args) { String data = null; if (...) { } while (...) { } } Java 애플리케이션에서 메인 스레드는 main() 메서드가 실행될 때 시작되며, main() 메서드에서 마지막 코드를 실행하거나 return 문을 만나게 되면 종료된다. 메인 스레드는 필요에 따라 작업 스레드를 만들어서 위 사진과 같이 병렬로 코드를 실행할 수 있다. 싱글 스레드 애플리케이션에서는 메인 스레드가 종료하면 프로세스도 종료되지만, 멀티 스레드 애플리케이션에서는 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않는다. 특히, 메인 스레드가 작업 스레드보다 먼저 종료되어도 작업 스레드가 실행 ..
-
MyBatis - 대소문자 구분 없이 데이터 조회하기Database/MyBatis 2022. 3. 24. 17:06
대소문자 구분 없이 데이터 조회 기존의 코드 SELECT FROM TBL_XBR_IDX_CALC WHERE (INDX_NM LIKE '%' || #{indexNameKeyword} || '%' ${searchType} TRGT_ELMT_ID LIKE '%' || #{elementIdKeyword} || '%') ORDER BY INDX_SEQ, CACL_ORD 사용자로부터 검색어를 입력받아 해당 검색어를 포함하고 있는 데이터를 출력하는 쿼리문이다. 테스트 결과 대소문자를 구분하여 데이터를 조회한다는 문제점을 파악하고, 위 쿼리문을 대소문자 구분 없이 데이터를 조회할 수 있는 쿼리문으로 변경하기 위한 작업을 시작했다. lower, upper의 이용 LOWER(column_name) LIKE ('%' || ..