devnoong.log
article thumbnail
[Spring Batch] Spring Batch 개념 정리
WEB/BACKEND 2023. 12. 7. 13:33

SpringBatchJob -> 여러개의 Step  (① Tasklet  ②Chunck)  로 구성되어 있음.  job Job Instance : job 수행시 인스턴스 객체의 단위 (성공적으로 종료된 동일한 인스턴스 수행시,  중복 수행을 막기 위해 exception이 발생된다.  ) ① step (Tasklet )StepExecution : Job 인스턴스 수행시 , 세부 로직 수행 내역으로 read, write ,count 의 상세 내역을 확인 할 수 있다.  ※ Step 수행 단위 : tasklet  .next()를 이용하여 다중 step을 구성할 수 도 있고 , step flow를 통해 다중 step을 구현 할 수 있다. 다만 step flow를 통해 다중 step을 구현 할 경우에, taskl..

[DB] Oracle USE_HASH hint 사용하기
DB/Oracle 2023. 7. 20. 15:53

현상 Live 운영 테이블에 데이터가 존재하지 않고, 백업용 데이터로 만들어진 테이블에서 데이터를 산출해야하는 경우가 존재했다. 문제점 Live 테이블 데이터의 경우, 기본적으로 index나 partition이 되어있어 대량의 데이터를 산출할때 해당 조건들을 이용해서 산출을 진행했다. 하지만, 백업용 데이터이기때문에 별도로 구성된 index나 partition이 되어있지 않아 index힌트 이용할 경우 추출 시간이 오래 걸려 active session이 오래 살아 있어 문제가 될 가능성이 존재한다. USE_HASH 사용 USE_HASH 힌트를 사용해 산출 시간을 단축시켰다. USE_HASH 힌트는 Oracle에서 사용되는 옵티마이저 힌트 중 하나로, 해시조인을 강제로 사용하도록 지시하는 역할을 한다. 해..

article thumbnail
[JAVA] JAVA 객체 정렬 및 데이터 비교하는 방법 (compareTo 오버라이딩)
JAVA 2023. 7. 7. 14:26

일반적으로 정렬 알고리즘 (Arrays.sort() , Collections.sort() ) 은 'compareTo' 메서드의 반환값을 기준으로 정렬을 수행한다. 객체들간의 비교를 진행 하기 위해서는 Comparable 인터페이스를 구현하여 'compareTo' 메서드를 항상 오버라이딩(Override)하여 재정의 하여 사용한다. 구현되어 있지 않으면, 정렬 알고리즘을 사용 할 수가 없다. compareTo 메서드 반환값 음수 compareTo메서드 반환값이 음수일 경우에는 현재 객체가 실제로 크던 작던 상관하지 않고, 비교 대상 객체보다 작은것으로 판단하여 현재 객체를 정렬시 앞쪽(=유지)에 위치하게 된다. 만약 현재 객체가 비교대상보다 작은 값이고 'compareTo' 메서드의 반환 값이 음수라면 현..

article thumbnail
[IntelliJ] 전체 파일검색(CTRL + SHIF+F) 안될때 해결 방법
잡부 2023. 7. 6. 11:08

CTRL + SHIF + F 단축키를 이용해서 프로젝트 전체 파일 검색을 유용하게 사용하고 있었는데, 어느순간 갑자기 검색이 안되는 현상이 발생했다ㅠㅠㅠ 해결방법 File -> Invalidate Caches -> Invalidate and Restart 를 눌러 재시작하면 현상이 해결 된다~~

[DB] MYSQL vs Oracle 인덱스 차이
DB 2023. 6. 11. 18:25

MYSQL vs Oracle 인덱스 차이 MySql과 Oracle은 인덱스 동작 방식에 있어서 약간의 차이가 존재한다. MySql에서는 일반적으로 한번의 쿼리에서는 하나의 인덱스만 사용됩니다. 즉, 여러 인덱스가 걸려있어도 MySQL의 옵티마이저가 쿼리 실행 계획을 결정할때 인덱스의 선택도(카티널리티)를 고려하여 최적의 인덱스 하나만 선택한다. 그렇기때문에 복수 컬럼을 동시에 인덱스를 태우고자 할 경우에는 복합 인덱스 하나만 사용해야 된다. 반면 Oracle은 비교적 더 복잡한 옵티마이저를 갖고 있어, 쿼리 실행 계획을 수립할때 다중 인덱스 조인이나 다중 칼럼 인덱스를 통해 여러 인덱스를 동시에 활영 할 수 있다. 다만, 무조건 Oracle에서도 모든 쿼리에서 여러 인덱스를 동시에 사용하는 것이 아니라 ..

[JAVA] 프로그래머스 Level1 [1차] 비밀지도
코테/프로그래머스 2023. 6. 11. 16:14

[JAVA] 프로그래머스 Level1 [1차] 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다행히 지도 암호를 해독할 방법을 적어놓은 메모도 함께 발견했다. 지도는 한 변의 길이가 n인 정사각형 배열 형태로, 각 칸은 "공백"(" ") 또는 "벽"("#") 두 종류로 이루어져 있다. 전체 지도는 두 장의 지도를 겹쳐서 얻을 수 있다. 각각 "지도 1"과 "지도 2"라고 하자. 지도 1 또는 지도 2 중 어느 하나라도 벽인 부분은 전체 지도에서도 벽이다. 지도 1과 지도 2에서 모두 공백인 부분은 전체 지도에서도 공백이다. "지도 1"과 "지도 2"는 각각 정수 배열로 암..

[JAVA] 프로그래머스 Level1 삼총사
코테/프로그래머스 2023. 6. 11. 15:19

[JAVA] 프로그래머스 Level1 삼총사 문제 설명 한국중학교에 다니는 학생들은 각자 정수 번호를 갖고 있습니다. 이 학교 학생 3명의 정수 번호를 더했을 때 0이 되면 3명의 학생은 삼총사라고 합니다. 예를 들어, 5명의 학생이 있고, 각각의 정수 번호가 순서대로 -2, 3, 0, 2, -5일 때, 첫 번째, 세 번째, 네 번째 학생의 정수 번호를 더하면 0이므로 세 학생은 삼총사입니다. 또한, 두 번째, 네 번째, 다섯 번째 학생의 정수 번호를 더해도 0이므로 세 학생도 삼총사입니다. 따라서 이 경우 한국중학교에서는 두 가지 방법으로 삼총사를 만들 수 있습니다. 한국중학교 학생들의 번호를 나타내는 정수 배열 number가 매개변수로 주어질 때, 학생들 중 삼총사를 만들 수 있는 방법의 수를 ret..

[JAVA] 프로그래머스 Level1 직사각형 별찍기
카테고리 없음 2023. 6. 9. 16:30

[JAVA] 프로그래머스 Level1 직사각형 별찍기 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다. 별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. 예시 입력 5 3 출력 ***** ***** ***** 문제풀이 StringBuilder sb = new StringBuilder(); IntStream.range(0,a).forEach(s->{sb.append("*");}); IntStream.range(0,b).forEach(s->{System.out.println(sb.toString());});

[JAVA] 프로그래머스 Level1 부족한 금액 계산하기
코테/프로그래머스 2023. 6. 9. 15:17

[JAVA] 프로그래머스 Level1 부족한 금액 계산하기 새로 생긴 놀이기구는 인기가 매우 많아 줄이 끊이질 않습니다. 이 놀이기구의 원래 이용료는 price원 인데, 놀이기구를 N 번 째 이용한다면 원래 이용료의 N배를 받기로 하였습니다. 즉, 처음 이용료가 100이었다면 2번째에는 200, 3번째에는 300으로 요금이 인상됩니다. 놀이기구를 count번 타게 되면 현재 자신이 가지고 있는 금액에서 얼마가 모자라는지를 return 하도록 solution 함수를 완성하세요. 단, 금액이 부족하지 않으면 0을 return 하세요. 제한사항 놀이기구의 이용료 price : 1 ≤ price ≤ 2,500, price는 자연수 처음 가지고 있던 금액 money : 1 ≤ money ≤ 1,000,000,00..

[JAVA] 프로그래머스 Level1 정수 내림차순으로 배치하기
코테/프로그래머스 2023. 6. 8. 17:21

프로그래머스 Level1 정수 내림차순으로 배치하기 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 입출력 예 n return 118372 873211 문제풀이 long n = 118372; String[] sArray = String.valueOf(n).split(""); // 배열 생성 Arrays.sort(sArray,Collections.reverseOrder()); //내림차순 정렬 StringBuilder sb = new StringBuilder(); //문자열 변환 for(String..