전체 글 111

Enum, EnumSet, EnumMap

Enum enum은 열거형 상수를 의미합니다. public enum Status { START("0001"), RUNNING("0005"), FINISH("9000") ; private String code; Status(String code) { this.code = code; } } Enum을 사용했을 때 좋은 점. 1. 단순 String(원시) 비교가 아니고 Enum 타입으로 비교하기 때문에, 코드의 안전성을 높일 수 있습니다. 2. 허용가능한 값을 제한할 수 있습니다. 3. Enum 클래스 안에 상수를 선언하는 것이기 때문에, PREFIX를 줄일 수 있습니다. (ex. STATUS_START = "0001", STATUS_FINISH = "0005") 4. Enum 클래스 안에 메소드를 선언하여,..

JAVA/JAVA 2023.07.11

쓰레드로컬 Thread Local (데이터 경합 방지)

정의 쓰레드별 데이터를 보관하는 전용보관소, 쓰레드별 데이터 경합을 방지해준다. 사용법 // 값 선언 ThreadLocal threadLocalValue = new ThreadLocal(); // 값 저장 threadLocalValue.set(1); // 값 조회 threadLocalValue.get(); // 값 제거 threadLocalValue.remove(); 예시 // 쓰레드 로컬을 사용하는 서비스 만들기 public class ThreadLocalService { private ThreadLocal context = new ThreadLocal(); public String begin(String value) { context.set(value) return context.get(); } pu..

JAVA/Spring 2023.07.08

[Oracle] 병렬처리

병렬처리 2개 이상의 프로세스로 SQL을 처리하는 것 병렬처리의 실행 병렬처리 실행 유도 힌트 : PARALLEL SELECT * /*+ PARALLEL(A 2) */ FROM TABLE A * PARALLEL(테이블_alias 병렬_프로세스_갯수) * PARALLEL은 FULL 힌트와 함께 사용하는 것이 좋음. 옵티마이저의 판단으로 인덱스 스캔이 동작하면 PARALLEL이 적용되지 않음. 오라클 병렬처리 실행 과정 지정된 갯수의 프로세스들이 테이블 풀스캔 (Producer) 지정된 갯수의 프로세스들이 데이터를 전달받아 Group by, Order by, Join 등을 처리 (Consumer) 이 때, 각 프로세스가 담당하는 데이터는 서로 배타적 (연관 없음) 데이터를 하나로 합침 (Query Coord..

DB/SQL 2022.06.14

[leetcode] Product of Array Except Self

https://leetcode.com/problems/product-of-array-except-self/ Product of Array Except Self - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 인덱스 위치의 요소를 제외한 모든 요소를 곱한 결과를 구하는 문제입니다. [1,2,3,4] 배열이 주어졌다면, [ 2*3*4, 1*3*4, 1*2*4, 1*2*3 ]으로 반환합니다. 제가 구현한 코드입니다. 저는 모든 요소를 곱한 뒤, 각 요소로 나눠주면 ..

[leetcode] Maximum Product Subarray

https://leetcode.com/problems/maximum-product-subarray/ Maximum Product Subarray - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 연속된 수를 곱한 결과 중 가장 큰 것을 찾아내는 문제입니다. 음수 * 음수 = 양수인 케이스를 고려해야 합니다. 곱셈의 결과가 음수가 된 경우에는 min (최소값)으로 저장해둡니다. 여기에 다시 음수를 곱하게 되면, 곱셈의 결과를 max(최대값)으로 저장합니다. 이렇게..

[leetcode] three sum

https://leetcode.com/problems/3sum 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com package leetcode; import java.util.Arrays; import java.util.LinkedList; import java.util.List; /* * 문제주소 : https://leetcode.com/problems/3sum/ * 난이도 : 미디움 * 문제 내용 요약 : 주어진 배열에서 3개 숫자를 꺼냄. 3개 숫..

[Oracle] I/O

인덱스란? 인덱스란, 데이터를 찾기 위한 "목차"입니다. 인덱스 구성 칼럼의 순서에 따라 정렬된 데이터를 가지고 있습니다. 인덱스가 생성되는 경우 기본 키인 경우 기본키 구성 칼럼의 순서에 따라 인덱스가 생성됩니다. 추가로 unique/ununique 인덱스를 생성해줄 수 있습니다. 인덱스를 사용하면 좋은 이유 소량의 데이터를 찾을 때 빠릅니다. 인덱스를 이용해 데이터를 찾으면 인덱스 칼럼 순서에 따라 이미 정렬된 데이터를 조회할 수 있습니다. (정렬 부하 ↓) 인덱스가 빠른 이유 인덱스는 정렬된, 이진트리 자료구조로 저장됩니다. 때문에 데이터를 탐색할 때 이진탐색 방법을 사용하게 됩니다. 1~100 중에 10을 찾아야 된다고 가정합니다. 그러면, 1~100을 절반으로 나눕니다. 그리고 10이 포함되어 ..

DB/SQL 2022.04.05

[Querydsl] fetch 결과 조회

Method Return Type Description fetch() List 여러건 조회 fetchOne() T 단건 조회 결과가 없으면 null, 결과가 여러 건이면 NonUniqueResultException 발생 fetchFirst() T 조회된 여러건 중 첫번째 값을 조회 (limit 1) 결과가 없으면 null 반환 fecthCount() long 조회된 건 수 반환 fetchResults() QueryResults 페이징 정보를 포함한 QueryResults 형태로 반환 fetch [ example ] import static study.querydsl.entity.QMember.*; @PersistenceContext EntityManager em; JPAQueryFactory queryF..

JAVA/JPA 2022.03.25