전체 글 (730) 썸네일형 리스트형 [Spring Batch] Spring Batch에서 멱등성을 유지하는 방법 멱등성 : 연산을 여러번 적용하더라도, 결과가 달라지지 않는 성질 예를 들어서 오늘 날짜의 매출 데이터를 집계하는 배치가 있다고 가정하자 코드에서 만약에 LocalDate.Now가 있다면, 배치는 항상 오늘 날짜를 가져와서 혹은 오늘기준의 특정 날짜를 가져와서 배치를 실행 시킬 것이다. 근데 만약에,,,어제 배치를 다시 돌려달라고 하거나, 어제 배치가 오류가 나서 어제의 배치를 다시 돌려야할때는? 소스 수정 -> 배포 -> 롤백의 과정을 거쳐야한다. 이와 같은 것은 멱등성이 깨졌다고 할수있다. 해당 케이스의 경우에 멱등성을 지킬수 있는 방법은 몇가지가 있다. Spring Batch Job Parameter를 통해, 오늘날짜의 값을 외부에서 주입받아서 실행 시켜주면 된다. 그러면 이와 같은 경우에는 멱등성.. [Spring Batch] 스프링 배치의 구조 우선 스프링 배치의 구조이다. JobLauncher로 Job을 실행 시키고, 1:N관계로 있는 Job의 step 들이 실행된다. 또한 각 step에 있는 ItemReader, ItemProcessor,ItemWriter 들이 실행이 된다. 하나씩 더 살펴보도록하자 1) JobLauncher Job을실행 시키는 역할을 한다. SpringBatch가 Job의 이름을 받아서 실행 시켜준다. 2) Job JobInstance : 논리적인 Job실행 JobExecution : 한번 시도되는 Job 실행 JobParameter : Job들을 구분하는 파라미터, 오늘의 Job과 내일의 Job 이 다른 것에 대한 구분을 짓기 위함 3) Step Batch Job을 구성하는 형태이다. 하나의 스탭은 reader,writ.. [Spring Batch] 스프링 배치 사용이유 Spring Batch - 스프링 배치는 백엔드의 배치처리 기능을 구현하는데 사용하는 프레임워크이다. 배치는 스프링 배치 설정 요소들을 간편화시켜 빠르게 설정하는데 도움을 준다. Spring Batch 장점 1) 대용량 데이터 처리에 최적화 되어 고성능을 발휘한다. 2) 효과적인 로깅, 통계처리 , 트랜잭션 관리 등 재사용 가능한 필수 기능을 지원한다. 3) 수동으로처리하지 않도록 자동화 되어있다. 4) 예외사항과 비정상 동작에 대한 방어 기능 존재 5) 스프링의 서브 프레임워크이기 떄문에, 스프링의 대표적인 기술들이 사용가능하다(Di, AOP) 6) 실행 이력에 대한 저장이 가능하고, 공유가 가능하다 Spring Batch 단점 -스케줄 기능을 제공하지 않아서 Quarz 나 jenkins와 같이사용한다. [최단거리] BOJ1753 https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net [Spring] 웹 통신 , 스프링 동작 과정 Http 소켓 통신은 계속 연결되어 있기 때문에, 사용자가 늘어남에 따라 부하가 커진다. 그래서 HTTP통신은 연결을 지속시키지 않고 끊어버리는 Stateless방식을 사용한다. 연결이 끊기기 떄문에 부하가 적지만, 이전에 보냈던 요청이나 되돌려준 응답에 대해서는 기억하지 못하는 단점이 있다. 1. 톰캣 웹서버와 was의 차이 1. 정적페이지와 동적 페이지 정적 페이지란 , 서버에 미리 저장된 파일이 그대로 전달되는 웹 페이지를 말한다. 서버에 저장된 데이터가 수정되지 않는 한 항상 동일한 페이지를 반환한다. 반면 동적 페이지는 서버에 있는 데이터들을 스크립트에 의해 가공처리한 후 생성되어 전달 되는 웹 페이지를 말한다. 서버는 사용자의 요청을 해석하여 데이터를 가공한 후 생성 된 웹페이지를 반환하며, .. [Java] 모니터 하나의 객체마다 하나의 모니터를 결합할 수 있다. 모니터가 결합된 객체는 동시에 두개 이상의 스레드에 의해 접근 할 수 없도록 막는 잠금 기능을 제공한다. 객체에 모니터를 결합하면 하나의 스레드가 그 데이터를 사용하는 동안, 다른 스레드 들이 그 데이터를 사용할 수 없다. 자바에서는 동기화 메소드가 선언된 객체와 동기화 블럭에 의해 동기화 되는 모든 객체에 고유한 모니터가 결합이 되어 동기화 작업을 수행한다. 모니터의 구성 -스레드 단위로 모니터락을 획득하거나 반환한다. -동기화 코드를 수행할 때는 동기화 대상 인스턴스와 결합된 모니터락을 획득한 후에 진입이 가능하며, 동기화 코드를 벗어날 때에는 모니터 락을 반환하게 된다. -동기화 대상 인스턴스 별로 이와 결합된 Monitor가 존재하며, 현재 락을 .. [Java] 문맥 교환 문맥교환 , Context Switching 이란 멀티 프로세스 환경에서 CPU가 어떤 하나의 프로세스를 실행할때 운영체제의 스케줄링에 따라 인터럽트 요청이 발생해서 다음 프로세스가 실행 되어야 할 때 각 프로세스 들은 메모리를 공유하지 않기 떄문에 기존 프로세스의 상태를 저장하고 다음 프로세스의 상태를 교체하는 작업을 문맥교환이라고 한다. OS에서 Context는 CPU가 프로세스를 실행하기 위한 프로세스 정보들을 말한다. 이 Context는 프로세스의 PCB에 저장된다. 문맥 교환이 발생하면, CPU는 해당 프로세스의 PCB 정보를 받아와서 이전 작업을 수행한다. PCB에 저장되는 내용들 -process상태 : CPU를 할당해도되는지 여부를 결정하기 위해 필요함 -PC값 : 다음에수행할 명령어의위치를.. [Java] 멀티 쓰레드란 멀티쓰레드란? 멀티쓰레드란, 하나의 프로세스를 다수의 실행 단위로 구분하여 자원을 공유하고 자원의 생성과 관리의 중복성을 최소화 하여 수행능력을 향상 시키는 것을 멀티쓰레딩이라고 한다. 하나의 프로그램에서 동시에 여러개의 일을 수행할 수 있도록 해주는 것이다. 멀티쓰레드를 사용하는 이유는? -프로세스를 이용하여 동시에 처리하던 일을 쓰레드로 구현할 경우 메모리 공간과 시스템 자원소모가 줄어들게 된다. -쓰레드 간의 통신이 필요한 경우 별도 자원을 이용하는 것이 아니라 전역 변수공간, 동적으로 할당된 공간인 힙영역을 이용하여 데이터를 주고 받을 수 있다. -쓰레드의 문맥교환은 프로세스 문맥교환과는 달리 캐시 메모리를 비울 필요가 없기 때문에 더 빠르다 -시스템의 처리량이 향상 되고 자원소모가 줄어들어 자연.. 이전 1 ··· 48 49 50 51 52 53 54 ··· 92 다음