분류 전체보기 139

Oracle offset (오라클 페이징 처리)

이번 프로젝트에서 SQL 튜닝 가이드를 받아 쿼리를 수정하면서 offset 키워드를 알게 되어 포스팅한다. 오라클은 12c 버전부터 offset과 limit가 추가되었다. Oracle 12c 이전 Oracle 12c 이전에는 ROW_NUM을 사용하여 페이징 처리를 했다. 단점은 쿼리를 view로 감싸므로 쿼리가 복잡해진다. SELECT * FROM ( SELECT a.*, ROWNUM AS "ROWNUM" FROM ( 사용자 정의 쿼리 QUERY ) a WHERE ROWNUM = start_number Oracle 12c 이후 Oracle 12c 이후부터는 행 제한(row limitng)을 이용하여 간단하게 페이징 처리할 수 있다. 오라클의 지저분한 페이징 처리를 간결하게 할 수 있는 장점이 있다. of..

Computer Science/DB 2022.10.05

2022년 2회차 정보처리기사 실기 합격 및 정리요약본 공유

2022년 9월, 정보처리기사 2회 차 실기를 합격했다. 필기에 이어 실기도 턱걸이로 붙어버리기.... 작고 소중한 내 60점🙈💗 공부 방법 2022년도 1회 차 필기에 붙고난 뒤 곧바로 1회 차 실기를 볼까 생각했지만, 도저히 바로 공부할 자신이 없어서 1회 차 실기는 건너뛰었다. 열심히 공부했으니 그만큼 쉬어줘야 된다고 생각했고, 그렇게 고삐 풀린 망아지처럼 놀고 애써 외면하다가 실기 2주 전쯤부터 본격적으로 공부를 한 것 같다...(하기 싫어 죽을뻔한 몸뚱아리와, 그를 이겨낸 정신력에 박수...) 나는 필기 때와 마찬가지로, 실기에도 서적에 돈을 쓰지 않았다. 그러다 보니 예상하지 못한 문제가 발생했는데, 필기는 문제은행만 열심히 풀면 됐지만 실기는 어떻게 공부를 해야 할지 감이 잡히질 않았다. 감..

My Note/자격증 2022.09.02

문자열은 불변한다(String is Immutable)

자바에서 문자열을 만들 때 아래처럼 2가지 방법을 이용할 수 있다. String str1 = "개발새발"; // ""을 이용하여 문자열 생성 (String literal) String str2 = new String("개발새발"); // new 연산자로 문자열 생성 (String Object) 위의 출력결과는 동일하며, 사람들은 흔히 첫번째 방법으로 많이 쓴다. 그런데 메모리에 저장되는 공간은 엄연히 다르다는 것을 알고 있는가? 첫번째 방식인 String literal으로 생성하면 문자열은 힙영역의 String Pool에 저장되어 문자열이 동일하면 저장소를 공유할 수 있다. 반면 두번째 방식인 new 연산자로 생성하면 문자열은 힙영역에 저장되어 문자열이 같더라도 저장소 공유가 불가능하다. 이 차이점을 기..

Backend/Java 2022.08.14

Lombok(롬복) 설치 및 활용법

Lombok(롬복)이란 Lombok(롬복)은 소스가 깔끔한 것을 선호하는 사람이 좋아할 법한 라이브러리이다. getter, setter와 같이 반복되는 형태의 코드를 줄여주는 역할을 한다. 예를 들어 @Getter, @Setter와 같이 어노테이션(Annotation)으로 선언만 하면 그 기능을 함축적으로 갖고 있게 된다. 1. Lombok 라이브러리 다운받기 Lombok 사이트에 들어가서 jar 파일을 직접 설치하자. 2022년 5월 기준으로 최신 버전은 1.18.24이다. 파일의 다운로드가 완료되었으면, 이클립스 또는 STS가 설치된 경로에 lombok.jar를 붙여넣은 후 해당 파일을 실행한다. 그러면 인스톨러 창이 실행이 될 것이다. 아래와 같이 내 PC에서 IDE를 찾을 수 없다는 경고창이 나오..

배치파일로 여러 프로그램 실행하기

배치파일(.bat)을 이용해서 여러가지 프로그램을 동시에 실행시키고 싶을 때가 있다. 예를 들어 배치를 실행하면 크롬, 엣지, 엑셀을 한번에 열리게끔 하고 싶다. 그리기 위해선 먼저 실행할 프로그램의 경로를 알면 되는데, 해당 아이콘을 마우스 우클릭후 '속성'을 누르면 대상 경로를 확인할 수 있다. 내가 실행하고 싶은 크롬, 엣지, 엑셀의 경로를 순서대로 적어놨다. C:\Program Files\Google\Chrome\Application\chrome.exe C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe C:\Program Files (x86)\Microsoft Office\root\Office16\EXCEL.EXE 이제 메모장을 열어 아래..

이클립스 에러 해결 Could not initialize class com.thoughtworks. xstream.converters.collections.PropertiesConverter

문제 발생 이클립스에서 STS 플러그인 설치후 'Spring Legacy Project'로 프로젝트를 새로 생성하려고 했다. 프로젝트 정보를 기입후 'Next'를 누르니 아래의 에러가 발생했다. An error has occurred. See error log for more details. Could not initialize class com.thoughtworks.xstream.converters.collections.PropertiesConverter 개발 환경은 JDK 8, 이클립스 2021.9 버전, STS 3 이다. 해결 방법 스프링 버전과 JDK 버전간의 호환 문제로 간주되어 JDK 11로 버전업하였고, 이에 맞게 이클립스에서 [Window] > [Properties[ > [Java] > ..

이클립스 에러 해결 The selected JRE does not support the current compiler compliance level of 16

문제 발생 이클립스에서 JDK1.8을 연결하려고 하니 아래와 같은 에러가 발생한다. (맨 끝자리의 숫자 16은 환경에 따라 바뀔 수 있다.) The selected JRE does not support the current compiler compliance level of 16 해결 방법 알아보니 컴파일러에 설정된 Java 버전과 달라서 나는 오류였다. [Java] > [Complier]를 보면 현재 "16"으로 설정되어 있다. JDK Compliance는 호환되는 JRE를 설치하고 활성화해야 한다. 즉, 설치된 JDK와 컴파일러 버전을 서로 일치시키면 된다. 내 경우 JDK 버전과 동일하게 1.8로 일치시키니 해당 오류 문구가 사라졌다.

윈도우 내 PC가 x86인지 x64인지 확인하는 방법

윈도우에서 설치 프로그램을 다운받을 때 간혹 x64인지 x86인지 묻는 경우가 있다. 보통 컴퓨터인 경우 대부분 x64에 해당한다. 내 PC는 어떤 비트일까? 32bit와 64bit 내 PC가 어떤 비트인지 알아보기 전에 기본적인 구분법을 알아보자. 컴퓨터에서 다루는 bit 단위는 CPU에서 처리하는 데이터의 최소 단위를 말한다. 일반적으로 CPU는 i3 보단 i7 사양이 더 좋다. 숫자가 높을 수록 고사양인 것처럼 32bit 보다는 64bit 가 좋다고 인식하면 된다. 비트가 클수록 한 번에 처리할 수 있는 데이터가 많아지기 때문이다. x86과 x64 윈도우에서 비트를 표기할 때 32비트는 x32, 64비트는 x64로 표기하면 인지하기 쉬울텐데 64비트는 x64로 표기되어 있으나, 32비트는 x32가 ..

자바의 데이터 타입(Primitive type, Reference type)

타입(Data type)이란 해당 데이터가 메모리에 어떻게 저장되고, 프로그램에서 어떻게 처리되어야 하는지를 명시적으로 알려주는 것이다. 자바에서 타입은 크게 기본형 타입과 참조형 타입이 있다. 기본형 타입(Primitive type) 기본형 타입은 아래 표와 같이 총 8개의 타입들이 존재한다. 자바에서 미리 형식을 정의하여 제공하고 있으며, 기본값이 존재하기 때문에 Null 개념이 존재하지 않으므로 만약 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스를 활용하면 된다. 기본형 타입은 실제 값을 저장하는 공간으로, 스택(Stack) 메모리에 저장된다. 주로 문법상의 에러(예를 들어 ;을 안붙였다든지)로 빨간 줄이 쳐지는 경우처럼 컴파일 시점에 담을 수 있는 크기를 벗어나면 에러를 발생시키는 컴파일 에러..

Backend/Java 2022.01.31