본문 바로가기
728x90

전체 글60

[Java] cron 시간 설정 시 에러 발생 얼마 전, 일괄 작업을 위해 @Scheduled 어노테이션을 이용하여 배치 코드를 사용한 적이 있다. 보통 배치는 주기를 갖고 반복해서 실행되는데 내가 처리하려고 했던 것은 올해 특정일에 딱 한 번만 실행되어야 하는 작업이었고 cron 표현법을 이용하여 다음과 같이 배치 코드를 개발했었다. @Scheduled(cron = "0 10 01 30 05 ? 2021") public void test() { System.out.println("batch Test"); } cron expression(크론 표현식) 위의 Scheduled 어노테이션 옆에 cron으로 몇 가지 숫자가 할당되어 있는 것을 볼 수 있는데 이것이 cron 표현식이다. 스프링 스케줄러에서 cron 표현식은 총 7자리의 숫자들로 시간을 표현.. 2021. 6. 2.
[Java] List.sublist의 사용법과 주의할 점 얼마 전 Batch 로직을 짜면서 길이가 정해져 있지 않은 리스트를 1000개씩 잘라서 특정 메소드를 실행할 일이 있었다. 이런 경우 java.util.List 의 subList() 메소드를 사용하여 손쉽게 리스트를 잘라낼 수 있다. subList 사용법 subList() 메소드는 간단히 두 개의 파라미터만으로 사용할 수 있다. 첫 번째로 잘라낼 배열의 첫 인덱스, 두 번째로 잘라낼 배열의 마지막 인덱스 + 1 값을 넘겨주면 원하는 부분 리스트만을 얻어낼 수 있다. 여기서 주의할 점은 첫 번째 파라미터는 포함이고, 두 번째 파라미터는 포함하지 않는다는 점이다. 코드로 예시를 들면 아래와 같다. List list = Lists.newArrayList(0, 1, 2, 3, 4, 5, 6, 7, 8, 9); .. 2021. 5. 31.
5. CPU Scheduling 이전까지 프로세스와 쓰레드에 대해 공부해 보았고 시간이 지남에 따라 단일 프로세스 / 쓰레드 환경 → 다중 프로세스/쓰레드 환경으로 변화해왔다는 사실까지 알 수 있었다. 이러한 다중 프로세스 환경에서는 자연스럽게 어느 프로세스가 CPU를 점유할 것인지에 대한 고민이 생겨났으며 보다 효율적으로 CPU에 프로세스를 스케쥴링할 수 있는 방법에 대한 고민이 늘어갔다. 이번 정리에서는 효율적으로 CPU에 프로세스를 할당할 수 있는 여러 CPU Scheduling 방법에 대해 정리해 보았다. 1. 기본 개념 1.1 CPU scheduling Multi-Programming(memory에 여러 프로세스를 올려놓고 시분할하여 cpu를 점유하는 것) OS의 기본이라고 할 수 있다. 따라서 OS 설계의 핵심이라고 볼 수 .. 2021. 5. 31.
4. Thread 1. Overview 🍠 Thread? CPU 이용의 기본 단위 = Lightweight process Thread의 구성 요소 🛷 각 쓰레드별 요소 Thread ID 프로그램 카운터(PC) 레지스터 집합 스택 📝 같은 프로세스의 다른 쓰레드와 공유 요소 코드 데이터 열린 파일 / 신호 등의 OS 자원 🏐 모식도 🥎 Muti-thread programming 의 장점 응답성(Responsiveness) 다중 쓰레드화 하면 어느 한 요청의 응답시간이 길어지더라도 그 외 쓰레드로 다른 요청을 처리할 수 있다. 자원 공유(Resource Sharing) 기존의 프로세스간 통신(IPC)에서는 Shared Memory 혹은 Message Queue 방식을 사용해 자원을 공유했다. 반면 쓰레드 끼리는 그들이 속한 .. 2021. 5. 14.