비효율 : 선택 정렬, 버블 정렬, 삽입 정렬 효율 : 합병 정렬, 퀵 정렬, 힙 정렬 선택 정렬 넣을 위치는 정해져있고 어떤 원소를 넣은지 선택하는 알고리즘 시간 복잡도: O(N^2) public static void selectionSort(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { int minIndex = i; for (int j = i + 1; j < arr.length; j++) { if (arr[j] < arr[minIndex]) { minIndex = j; } } int tmp = arr[minIndex]; arr[minIndex] = arr[i]; arr[i] = tmp; } } 버블 정렬 인접한 두 원소를 검사하여 정렬하는 알고리..
싱글톤 패턴 하나의 인스턴스만 생성되며 전역에서 그 인스턴에 접근이 가능하도록 만든 패턴입니다. 생성자는 private로 선언하여 외부 클래스로부터 인스턴스 생성을 차단하며, static 메서드로 전역에서 싱글톤 인스턴스에 접근이 가능합니다. 단점 및 주의 private 생성자이기 때문에 테스트가 어렵습니다. 의존 관계상 클라이언트가 구체 클래스 의존합니다. 같은 인스턴스를 공유하기 때문에 상태를 유지하게 설계하면 안되고, 가급적 읽기만 가능하게 해야합니다. 빌더 패턴 builder의 인스턴스를 만들고 빌더에서 객체를 대신 만들도록 하는 방식입니다. 이때 단계별로 객체를 생성합니다. 장점 필요한 데이터만 설정할 수 있습니다. (빌더 패턴이 아닌 경우, 파라미터에 따라 dummy값을 넣어주거나 생성자를 따..
Spring Batch 순차적으로 Step 시행하기 @Configuration @RequiredArgsConstructor @Slf4j public class JobConfiguration { private final JobBuilderFactory jobBuilderFactory; private final StepBuilderFactory stepBuilderFactory; @Bean public Job testJob() { return jobBuilderFactory.get("testJob") .start(step1()) .next(step2()) // step1()이 정상 종료되면 step2()로 이동 .next(step3()) // steo2()가 정상 종료되면 step3()로 이동 .build(..
메타 테이블 데이터 BATCH_JOB_INSTANCE Job이 실행되면 JobInstance가 이 테이블에 저장된다. JOB_INSTANCE_ID : BATCH_JOB_INSTANCE 테이블의 PK VERSION : 업데이트 될 때마다 1씩 증가 JOB_NAME : Job의 이름 JOB_KEY : job_name과 jobParameter를 합쳐 해싱한 해시코드 저장 job_key이 같으면 추가적으로 기록되지 않습니다. 즉 같은 Batch Job인 경우 JobParameter가 다른 경우에만 추가적으로 데이터가 저장된다. BATCH_JOB_EXECUTION Job의 실행정보가 저장된다. JOB_EXECUTION_ID : BATCH_JOB_EXECUTION 테이블의 PK, JOB_INSTANCE와 1:N 관..
Spring Batch Dependency 추가 dependencies { implementation 'org.springframework.boot:spring-boot-starter-batch' } Batch 기능 활성화 어노테이션(@EnableBatchProcessing) @EnableBatchProcessing @SpringBootApplication public class SpringBatchApplication { public static void main(String[] args) { SpringApplication.run(SpringBatchApplication.class, args); } } 메인 클래스에 @EnableBatchProcessing을 붙이는 방법 설정 파일을 따로 만들어서 해..
Spring Scheduler는 스케줄링 작업을 효과적으로 관리하고 실행하기 위한 방법입니다. Scheduling 활성화 설정 Spring Scheduler는 `@Scheduled` 어노테이션을 붙여 사용할 수 있습니다. `@Scheduled`를 사용하기 위해서는 `@EnableScheduling` 어노테이션을 명시해주어 Scheduling을 활성화할 수 있습니다. `@EnableScheduling`을 명시하는 방법에는 두 가지가 있습니다. 방법1: @SpringBootApplication이 위치한 클래스 위에 명시하는 방법 @EnableScheduling @SpringBootApplication public class CovidHospApplication { public static void main(..