+ 24

Spring Interceptor

✅ Request가 들어올 때 거치는 순서 Filter: 요청이 DispatcherServlet에 도달하기 전에 실행Interceptor: DispatcherServlet이 실행된 후 컨트롤러(핸들러)가 실행되기 전/후에 실행AOP: 메서드 호출 전/후에 적용  ✅ Filter와의 차이Filter는 스프링 내부 기능과 관계없이 Web Container 단계에서 작동하므로 컨트롤러로부터 독립적Interceptor는 Spring Container 단계에서 작동하므로 스프링과 연계되어 실행됨  ✅ Interceptor를 쓰는 이유공통 코드 사용으로 코드의 재사용성 증가메모리 낭비, 서버 부하 감소코드 누락에 대한 위험성 감소        예를 들어,       모든 요청에 대해 JWT 검증을 해야하는 경우  ..

+/Spring 2024.05.17

STS4에서 STS3 플러그인 설치 오류 (Spring Legacy Project 생성)

Spring Legacy Project 생성은 STS4 버전에서는 불가능하기 때문에 STS3 버전을 사용하거나 직접 플러그인을 설치해서 사용해야 한다. 현재 STS4 버전을 사용중이라File > New > Other 경로로 들어가면 Spring Legacy Project 생성 탭이 뜨지 않는 것을 볼 수 있다.        💡 설치 방법Help > Eclipse Marketplace > Spring Tool 3 Add-On for Spring Tools 설치         💡 설치 오류 - eclipse 버전 관련(mylyn) ▶ 오류 로그더보기An error occurred while collecting items to be installedsession context was:(profile=Def..

+/Spring 2024.05.16

Spring Lombok @Data @Getter @Setter 인식 인식 오류 해결

pom.xml 파일에 lombok dependency를 추가해줬음에도 불구하고 인식이 되지 않아 필요한 dto에서 getter를 사용하지 못하는 오류가 있었다.  의존성 추가가 잘 됐나 보니 lombok만 jar 파일이 생성되지 않았다.따라서 수동으로 추가하여 설정해주어야 한다.   1. Lombok jar파일 설치설치할 때 필요한 버전에 맞게 설치해야 한다. older versions projectlombok.org      2. Lombok Installer 실행cmd 창을 열어 위에서 설치한 lombok.jar 파일 경로로 가서 java -jar .\lombok.jar 와 같이 명령어를 입력하여 installer를 실행한다.      3. STS에 lombok.jar 파일 설치Installer 실행..

+/Spring 2024.05.13

쿼리 최적화 및 성능 향상 기법 - 인덱스(데이터 스캔 방식)

쿼리 최적화 및 성능 향상 기법 - 인덱스의 개념과 종류인덱싱이란? 목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.   인덱스 생성 및 삭제 방법(MS-SQL 기준)/* 인덱스 생writtenbyrla.tistory.com 지난 글에서 인덱스의 개념과 종류에 대해서 알아보았다.오늘은 데이터 스캔 방식에 대해 알아보고자 한다.     1. Table Scan인덱스가 없이 데이터가 무작위로 저장되어 있는 상태에서 테이블 전체를 읽어서 조회하는 방식   2. Clustered Index Scan 클러스터형 인덱스의 키로 지정된 열을 탐색의 조건으로 사용할 수 없는 경우에 모든 행을 읽어내면서 조회하는 방식인덱스 키가 Birth일 때, ..

+/Database 2024.05.08

쿼리 최적화 및 성능 향상 기법 - 인덱스의 개념과 종류

인덱싱이란? 목차와 같은 개념으로 데이터 조회 시 인덱스 범위 내에서 데이터를 먼저 찾음으로써 데이터를 빠르게 조회할 수 있도록 한다.   인덱스 생성 및 삭제 방법(MS-SQL 기준)/* 인덱스 생성 */CREATE INDEX emp_idx ON dbo.emp (hiredate)/* 인덱스 삭제 */DROP INDEX emp_idx ON dbo.emp   인덱스 종류1. Clustered Index(클러스터 인덱스) 인덱스를 통해 해당 페이지로 바로 이동인덱스 컬럼을 기준으로 데이터가 물리적으로 정렬검색 속도가 빠름기본키(Primary Key)를 생성하면 자동으로 클러스터 인덱스를 생성하며 테이블 당 한 개만 생성할 수 있음         → 테이블 생성 시 PK를 생성하면 클러스터형 인덱스가 자동으로..

+/Database 2024.05.02

[MS-SQL] 쿼리 성능 측정 방법

[성능 측정]SET STATISTICS TIME ONSET STATISTICS IO ON // 수행할 쿼리문SET STATISTICS IO OFFSET STATISTICS TIME OFF 1. SET STATISTICS TIME ON - 시간 측정 옵션2. SET STATISTICS IO ON - 통계 정보 표시  출력 항목의미테이블테이블 명검색 수실행된 검색 수논리적 읽기 수데이터 캐시에서 읽은 페이지 수물리적 읽기 수디스크에서 읽은 페이지 수미리 읽기 수쿼리에 대해 캐시에 넣어진 페이지 수LOB 논리적 읽기 수데이터 캐시에서 읽은 페이지 수LOB 물리적 읽기 수디스크에서 읽은 페이지 수LOB 미리 읽기 수쿼리에 대해 캐시에 넣어진 페이지 수   [출력 결과]// 통계 정보Table 'tblTest'...

+/Database 2024.04.29

예외 처리

✅ 발생 시점에 따른 에러 종류1. 컴파일 에러컴파일 시점에 발생하는 에러로 소스 코드의 오타나 자료형, 잘못된 구문 등을 검사하여 문제가 있을 경우 에러를 발생 시킴ex) int a = 5.5; import java.util.*.ArrayList; 2. 런타임 에러컴파일 후 실행 시에 발생하는 예측 불가능한 에러Error와 Exception으로 나뉨 3. 논리적 에러: 실행은 되지만 의도와 다르게 동작하는 에러      ✅ 예외 클래스의 계층 구도1. 에러(error): 프로그램 코드에 의해서 수습될 수 없는 오류메모리 부족(OutOfMemoryError) 또는 스택오버플로우(StackOverflowError) 2. 예외(Exception): 프로그램 코드에 의해서 수습될 수 있는 오류    1) Ch..

+/Java 2024.04.17

연산자

논리 연산자 / 논리부정 연산자 / 증감연산자 / 산술 연산자 / 비교 연산자 / 삼항 연산자 / 복합 대입 연산자 1. 논리 연산자 => 결과 값이 논리값으로 반환됨(true / false) 논리값 && 논리값 논리값 || 논리값 and 양 쪽 다 true 일 경우에만 결과 값이 true 왼쪽이 false 일 경우 오른쪽 연산은 수행하지 않음 or 둘 중 하나라도 true 일 경우 결과 값 true 왼쪽이 true일 경우 오른쪽 연산은 수행하지 않음 2. 논리부정 연산자 논리 값을 반대로 바꾸는 연산자로 앞에 !를 붙여 표현 !논리값 => ( true → false, false → true ) 3. 증감 연산자 ++ : 피연산자의 값을 1 증가시키는 연산자 -- : 피연산자의 값을 1 감소시키는 연산자..

+/Java 2023.12.08

keyboardInput 기능 - Scanner 클래스

앞서 출력문을 이용해 원하는 문자를 직접 출력을 해 보았다면, 오늘은 화면에서 입력값을 데이터로 받아 처리하는 기능을 알아볼 것이다. java에는 Scanner 클래스라고 해서 기본적으로 제공되는 기능이 있는데, 이 클래스 내에 필요한 메서드를 불러와 사용하면 된다. 제일 먼저 할 일은 Scanner 클래스를 생성하고 import 하기 import java.util.Scanner; public static void main(String[] args) { Scanner sc = new Scanner(System.in); } 위와 같이 클래스 선언 후 필요한 메서드를 불러오면 되는데, 입력 받을 값의 형태에 따라 불러오는 메서드가 달라진다. 문자열: sc.next() - 공백이 있을 경우 공백 이전까지 sc..

+/Java 2023.12.08

출력문 - print, println, printf 구분하기

1. print와 println 구분하기 print println 줄바꿈 없이 출력 출력 후 줄바꿈 위와 같이 로그를 찍게 되면 이와 같이 콘솔창에 찍힌다! 큰 차이가 없어보이지만 for문 돌릴 때 아주 유용하게 쓰인다! 예를 들면, 문자나 숫자를 열의 형태로 한 줄에 나란히 출력해야 할 땐 print를 이용해 출력하고 줄바꿈이 필요할 땐 println을 사용하면 된다. print는 줄바꿈 없이 출력되지만 \n을 이용하면 줄바꿈을 시행하게 되는데 이를 이스케이프 시퀀스라고 한다. \t는 탭 기능이 있어 두 문자 사이에 탭 키를 적용한 효과와 같다. 2. printf printf를 사용하면 출력하고자 하는 값들이 제시한 형식에 맞춰서 출력만 진행된다. 위의 print, println과 차이점이 있다면 포맷..

+/Java 2023.12.07