전체 글
  • 1. 2차원배열일때 1순위(숫자), 2순위(명칭)으로 정렬하는 익명함수 구현 /* 2차원 배열 */ int N = in.nextInt(); String[][] arr = new String[N][2]; for(int i = 0; i < N; i++) { arr[i][0] = in.next();// 숫자 arr[i][1] = in.next();// 명칭 } Arrays.sort(arr,new Comparator() { @Override public int compare(String[] o1, String[] o2) { return Integer.compare(Integer.parseInt(o1[0]), Integer.parseInt(o2[0])); } }); for(String[] ar: arr) { Sy..

    Read more
  • 1) N 입력받고 개수만큼 한줄로 받아 array에 담기 3 5 1 2 Scanner sc = new Scanner(System.in); String param = sc.nextLine(); // 3 N = Integer.parseInt(param.split(" ")[0]); int[] arr = new int[N]; /* 집합 S */ String S = sc.nextLine(); // 5 1 2 for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(S.split(" ")[i]); } 2. N, K를 한 줄에 입력받고 N개 만큼 한줄씩 입력받아 Stack에 담기 10 4200 1 5 10 50 100 500 1000 5000 10000 50000 Scann..

    Read more
  • 문제 https://www.acmicpc.net/problem/1182 1182번: 부분수열의 합 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. www.acmicpc.net 풀이코드 package seohae.algorithm.level1; import java.io.IOException; import java.util.Arrays; import java.util.Scanner; /** * https://www.acmicpc.net/problem/1182 */ public class Problem_014_1182 { stati..

    Read more
  • 문제 https://programmers.co.kr/learn/courses/30/lessons/1829 코딩테스트 연습 - 카카오프렌즈 컬러링북 6 4 [[1, 1, 1, 0], [1, 2, 2, 0], [1, 0, 0, 1], [0, 0, 0, 1], [0, 0, 0, 3], [0, 0, 0, 3]] [4, 5] programmers.co.kr 풀이코드 package seohae.algorithm.level2; import java.util.*; /** * https://programmers.co.kr/learn/courses/30/lessons/1829 */ public class Lesson_051_1829 { static int graph[][]; static boolean[][] visited..

    Read more
  • 잡의 재시작 방지 스프링 배치의 모든 잡은 실패하거나 중지될 때 다시 실행할 수 있었다. 스프링 배치는 기본적으로 이렇게 동작하므로 우리는 다시 실행하면 안되는 잡이 있을시 재시작을 방지해야한다. preventRestart() preventRestart() 메서드를 호출하여 잡이 실패하거나 어떤 이유로 중지된 경우에도 다시 실행할 수 없다. /** * 잡 실행 * @return */ @Bean public Job transactionJob() { return this.jobBuilderFactory.get("transactionJob") .preventRestart() /* 잡은 기본적으로 재시작이 가능하도록 구성되어있다. 잡의 재시작 방지 */ .start(...) .next(...) .build();..

    Read more
  • 스텝 실행 중 오류 던지기 스프링 배치는 예외가 발생하면 기본적으로 스텝 및 잡이 실패한것으로 간주한다. 따라서 아래 예제처럼 throw Exception 에 의해 잡은 FAILED(실패) 상태로 중지된다. 스프링 배치는 잡이 중지되면 현재 청크를 롤백하고, 성공적으로 완료한 작업까지 커밋하고, 재시작 시에는 중단됐던 부분을 찾아낸다. private Transaction process(FieldSet fieldSet) { if(this.recordCount == 25) { throw new ParseException("This isn't what I hoped to happen"); } ... } 오류를 던짐으로써 해당 스텝은 ExitStatus.FAILED 상태로 스텝이 완료되지 않았다. 실제로 예외가..

    Read more
  • StepExecution 스텝 중지 beforeStep 에서 StepExecution 을 가져온 다음, 이후 실행될 스텝에서 setTerminateOnly() 메서드를 사용한다. setTerminateOnly() 메서드를 호출하면, 스텝이 완료된 후 스프링 배치가 종료된다. 아래 예제처럼 if문의 조건에 충족하지 못할시 해당 스텝 완료 후 스프링 배치를 종료시킬 수 있다. public class TransactionReader implements ItemStreamReader { ... /** * afterStep 이 아닌 beforeStep 을 사용하도록 변경하여 StepExecution 을 가져온다. */ private StepExecution stepExecution; ... /* 스텝 빌드 전 s..

    Read more
  • 문제 https://programmers.co.kr/learn/courses/30/lessons/42888 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr 풀이 package seohae.algorithm.level2; import java.util.*; /** * https://programmers.co.kr/learn/courses/30/lessons/42888 */ public class Lesson_050_42888 { public static void main(String[] args) { Lesso..

    Read more
  • 문제 https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 풀이 package seohae.algorithm.level2; import java.util.Stack; /** * https://programmers.co.kr/learn/courses/30/lessons/12973 */ public class Lesson_049_12973 { public static void main(String[] ar..

    Read more
  • 문제 42626번 https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 풀이 (실패 : 시간초과) List 사용 풀이 (테스트 케이스 통과, 효율성 시간초과 발생) package seohae.algorithm.level2; import java.util.Arrays; import java.util.Collections; import java.util.List; import java.util.stream..

    Read more
  • 문제 11047번 - 동전 0 문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 풀이 package seohae.algorithm.level1; import java.io.BufferedWriter; import java.io.IOException; import java.io.OutputStreamWriter; import java.util.Scanner; import java..

    Read more
  • 쿼츠 Quartz 쿼츠란, 오픈소스 스케줄러이다. 쿼츠는 자바 환경의 규모와 상관없이 사용이 가능하고 잡 실행에 유용한 스프링 부트 지원과 같이 오래전부터 스프링 연동을 지원하고있다. 쿼츠는 아래 3가지 컴포넌트를 제공한다. 1) 스케줄러 (Scheduler) : 스케줄러는 SchedulerFactory 를 통해서 가져올 수 있으며 JobDetails 및 트리거의 저장소 기능을 한다. 2) 잡 (Job) 3) 트리거 (Trigger) : 작업 실행 시점을 정의한다. : 트리거가 작동되어 쿼츠에게 잡을 실행하도록 지시하면, 잡의 개별 실행을 정의하는 JobDetails 객체가 생성된다. 스프링 배치 처리 쿼츠에서 잡과 JobDetails 객체를 정의하는 모델은 스프링 배치에서 잡과 JobInstance 를..

    Read more
  • 들어가기 스프링 부트는 CommandLineRunner, ApplicationRunner 라는 두가지 메커니즘을 이요해 실행 시 로직을 수행한다. 이 두 인터페이스는 ApplicationContext 가 리프레시(refresh) 되고, 애플리케이션이 코드를 실행할 준비가 된 이후에 호출되는 하나의 메서드를 가지고 있다. 스프링 부트를 스프링 배치가 함께 사용할때는 JobLauncherCommandLineRunner 라는 CommandLineRunner 가 사용된다. JobLauncherCommandLineRunner 스프링 배치의 JobLauncher 를 사용해 잡을 실행한다. 스프링부트가 ApplicationContext 내에 구성된 모든 CommandLineRunner 를 실행할때, 클래스 패스에 s..

    Read more
  • 잡의 종료 상태 스프링 배치의 잡은 종료 상태를 가진다. 잡 실행시 갖게되는 JobInstance 는 성공적으로 완료되면 두번 이상 실행될 수 없다. 이는 잡 이름과 파라미터로 식별된다. 만일 사용자가 프로그래밍 방식으로 잡을 종료한다면, 잡의 종료 상태를 알고 그에 따라 분기할 수 있어야한다. 잡의 종료 상태는 3가지이다. 1) Completed (완료) 2) Fail (실패) 3) Stopped (중지) 스프링 배치가 JobRepository 에 저장할 BatchStatus를 판별할때 스쳅의 ExitStatus 를 평가한다. ExitStatus 는 스텝, 청크, 잡에서 반환될 수 있다. BatchStatus 는 JobExecution 또는 StepExecution 내에 보관되고, JobReposito..

    Read more
  • 상황 스프링 배치가 진행중이다. 진행 도중에 오류가 발생했고, 실패한 시점부터 처리를 다시 시작해야한다. 이 경우에 스프링 배치는 실패한 시점을 어떻게 알아낼 수 있을까? 실패시마다, 사용자가 실행 상태를 재설정하는 일은 매우 번거롭고 어렵다. 스프링 배치가 이를 대신해준다. JobExecution 우리는 이미 JobExecution 에 대해 배웠다. https://devfunny.tistory.com/476?category=820618 [스프링배치] 잡의 실행 (JobLauncher, JobInstance, JobExecution, JobParameters) 잡의 실행 잡의 실행은 잡 러너 (Job Runner) 에서 시작된다. 잡 러너는 잡 이름과 여러 파라미터를 받아, 잡을 실행시킨다. 스프링 배치..

    Read more
  • Copyright 2024. GRAVITY all rights reserved