본문 바로가기

Back-end146

Spring + Quartz 주기적으로 작업 실행하기 SpringFramework 4.3.4 버전에서 Quartz 2.3.0 라이브러리를 사용해서 주기적으로 작업을 실행하는 방법을 알아보겠습니다. 전체 소스는 하단에 첨부해 두었습니다. 앞에서 계속 사용해오던 소스라 DB 연결, 엑셀 다운로드 등의 소스가 같이 있는데 필요 없는 부분은 주석처리하고 테스트 해보시면 되겠습니다. 1. pom.xml 파일에 quartz 라이브러리의 의존성을 추가합니다. org.quartz-scheduler quartz 2.3.0 org.springframework spring-context-support 4.3.4.RELEASE 2. 주기적으로 실행될 서비스 메소드를 생성합니다. com.tistory.pentode.service.BoardService.java파일에 메소드 인터페.. 2021. 5. 24.
[JAVA] Quartz job Scheduler 기본 사용법 정리 라이브러리 다운로드 http://www.quartz-scheduler.org/downloads/ 일정 시간, 주기적으로 작동되는 배치 프로그램을 만들때 사용하는 라이브러리, 회사에서 서로 다른 DB의 데이터를 마이그레이션 하거나 주기별로 DB데이터를 동기화 시키는 데몬을 만들게 되어 사용방법을 정리한다. 1. 구성 요소 JobDetail : 스케줄러에서 수행할 작업을 담을 JOB을 생성, Job을 상속하는 클래스를 JobBuilder.newJob()을 이용하여 전달 해야 한다. JobDataMap : 스케줄러에서 JOB이 실행될떄 사용할 변수 값을 전달하는데 사용한다. key-value 형식으로 값을 전달하고 JOB을 수행할떄 값을 꺼낼수 있다. Trigger : 스케줄러를 어떤 방식으로, 어떤 주기로 .. 2021. 5. 24.
[RSA] RSA MODULUS, EXPONENT RSA키는 비대칭키로 개인키와 공개키로 되어있습니다. 여기서 공개키와 개인키는 위에서 보시는 것과 같이 구조가 되어 있습니다. 일반적으로 공개키는 n값과 e 값으로 구성되어 있습니다. n값은 Modulus이며 e값은 Public exponent값입니다. 개인키는 기본적으로 n, e, d, p, q, exponent1, exponent2, coefficient 값을 갖습니다. 여기서 가장 필요한 값은 d 값입니다. 개인키의 각 데이터는 공개키의 데이터를 포함합니다. 위의 RSAKeyValue에 해당하는 필드로 바꾸면 n : Modulus e: Exponent p : P q : Q exponent1 : DP exponent2 : DQ coefficient : InverseQ d : D 위의 XML 데이터(링.. 2021. 5. 20.
암호화(AES, RSA, SHA) 관련 이야기 우리 웹서비스에서 비회원과 통신하는 신규 기능을 개발하게 되었다 비회원과 통신이므로 보안에 신경을 많이 썼는데, 그 중 우리가 사용한 AES, RSA, SHA에 대해 이야기 해보려고한다 1.SHA-256 우리는 비회원의 로그인(!?)을 위해, 패스워드를 받았는데, 패스워드는 본인만 알고있어야 하므로, 복호화가 되지 않는 암호화 방법을 채택했다 복호화가 되지 않는 암호화 방법 중 유명한 것이 SHA 시리즈인데, SHA는 미국 NSA가 제작하고 미국 국립표준기술연구소(NIST)에서 표준으로 제작한 해시 암호 알고리즘이다 과거 SHA-0, SHA-1 버전을 거쳐 요즘은 SHA-2를 많이 쓰고있는데, SHA-2에는 SHA-224, SHA-256, SHA-384, SHA-512 등의 종류가 있다 현재 SHA-3도.. 2021. 5. 20.
AES와 SHA 차이 이것저것 알아보다 보니 SHA와 AES의 차이가 무엇인지 궁금해졌습니다.. 보통 평문이나 암호화를 해야하는 부분은 AES를 사용하고 서버에서 인증서의 암호화가 필요한 부분은 SHA를 사용해 이 개념을 확실히 하기 위해 조사를 했습니다. Encryption(암호화)와 Hash(해쉬)의 차이 암호화는 암호화 알고리즘을 이용하고, 인증은 해쉬함수를 이용하여 Verification Data를 만들어 원문에 태그(Tag)를 붙여서 전송하므로 해쉬함수를 이용합니다. 암호화 알고리즘과 해쉬 함수의 동작 방식을 이해하면, 암호화와 인증의 차이를 이해할 수 있습니다. 위의 왼쪽 그림은 암호화 알고리즘의 동작방식을 설명한 것이며, 암호화는 기본적으로 양방향 통신을 전제로 하므로 암호화와 복호화가 가능해야 합니다. 복호화되.. 2021. 5. 20.
[Java] 버퍼(BUFFER)란? 버퍼 개념 버퍼(Buffer)란 버퍼란 임시 저장 공간을 의미 합니다. 임시 저장 공간이라고 해서 쌩뚱맞게 보일 수 있지만 정확히 말하면 A와 B가 서로 입출력을 수행하는데에 있어서 속도차이를 극복하기 위해 사용하는 임시 저장 공간을 의미 합니다. 동영상 스트리밍 서비스에서의 버퍼 이 버퍼라는 개념은 굉장히 다양하게 사용되는데 가장 쉽게 접할 수 있는 곳은 유튜브같은 동영상 스트리밍 사이트입니다. 스트리밍 사이트에서 실시간으로 동영상을 보게 되면 보통 동영상이 진행되는 부분(빨간색)과 서버로부터 동영상을 내려받은 부분(밝은 회색) 그리고 앞으로 다운로드가 남은 부분을 본 적이 있을 것 입니다. 여기서 저 밝은 회색부분이 버퍼라고 볼 수 있습니다. 동영상 데이터가 내려 받아지는 속도에 비해 우리가 동영상을 1초씩 진.. 2021. 5. 17.
[Java] BufferedReader의 EOF 처리 & 여러 줄 입력 처리 - .readLine() BufferedReader.readLine() 패키지 메서드 설명 BufferedReader readLine() - text를 줄 단위로 읽어들인다. - 만약 stream의 끝에 다다르면 (EOF) null 값을 반환한다. BufferedReader로 여러 줄 입력 받기 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) { try { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = ""; while((str = br.readLin.. 2021. 5. 17.
[Java] 클래스 ProcessBuilder java.lang.Object ->java.lang.ProcessBuilder 이 클래스는 OS 의 프로세스의 작성에 사용됩니다. 각 ProcessBuilder인스턴스는 프로세스 속성의 컬렉션을 관리합니다. start() 메서드는 이러한 속성을 가지는 새로운 Process 인스턴스를 작성합니다. 같은 인스턴스로부터 start() 메서드를 반복해 호출해, 동일한 속성 또는 관련된 속성을 가지는 새로운 서브 프로세스를 작성할 수 있습니다. 각 프로세스빌더 는 다음의 프로세스 속성을 관리합니다. 「커멘드」. 호출되는 외부 프로그램 파일과 그 인수 (존재하는 경우)를 나타내는 캐릭터 라인의 리스트입니다. 어느 캐릭터 라인 리스트가 유효한 OS 커멘드를 나타낼까는 시스템에 응해 다릅니다. 예를 들어 개념상의 인수.. 2021. 5. 17.
[Java] 메소드의 개념 메소드(method) 자바에서 클래스는 멤버(member)로 속성을 표현하는 필드(field)와 기능을 표현하는 메소드(method)를 가집니다. 그중에서 메소드(method)란 어떠한 특정 작업을 수행하기 위한 명령문의 집합이라 할 수 있습니다. 메소드의 사용 목적 클래스에서 메소드를 작성하여 사용하는 이유는 중복되는 코드의 반복적인 프로그래밍을 피할 수 있기 때문입니다. 또한, 모듈화로 인해 코드의 가독성도 좋아집니다. 그리고 프로그램에 문제가 발생하거나 기능의 변경이 필요할 때도 손쉽게 유지보수를 할 수 있게 됩니다. 메소드를 작성할 때는 되도록 하나의 메소드가 하나의 기능만을 수행하도록 작성하는 것이 좋습니다. 메소드 정의 클래스에서 메소드를 정의하는 방법은 일반 함수를 정의하는 방법과 크게 다르.. 2021. 5. 17.
728x90
반응형