'프로그래밍/JAVA'에 해당되는 글 8건

  1. 2020.11.02 quartz 사용시 스케쥴 cron 형식 2
  2. 2020.10.23 request 객체 활용
  3. 2020.10.22 자바자료형
프로그래밍/JAVA2020. 11. 2. 18:53
728x90

quartz 를 사용하여 스케쥴 설정시 croncronExpression 설정이 헷갈릴때가 많다.

 

가장 보편적으로 사용하는 형태가 다음과 같은 형태일 것이다.

 

00 30 01 * * ?

 

간단하게 정리하면 매일 01시 30분에 실행하는 스케쥴이라는 의미이다.

 

각 자리수의 의미는

 *     *     *     *    *      *       *

초    분   시   일   월   요일   년도(생략가능)

 

  1. 초(Seconds)
  2. 분(Minutes)
  3. 시(Hours)
  4. 일(Day-of-Month)
  5. 월(Months)
  6. 요일(Days-of-Week)
  7. 연도(Year) - 생략가능

“?”문자는 일(day-of-month)와 요일(day-of-week) 필드에서만 허용되며 값에 상관하지 않는다는 의미. 

"*" 문자는 매 단위(시간/분/초 ...)마다 실행한다는 의미.

요일은 일요일부터 1로 표기 (1-일, 2-월, 3-화, 4-수, 5-목, 6-금, 7-토)

 

몇가지 유용한 예...

 

1. 매일 매시 10분에 실행

     00 10 * * * ?

2. 매주 수요일 13시 10분에 실행

     00 10 13 ? * 4

3. 매월 첫번째 토요일 13시 10분에 실행

     00 10 13 ? * 7#1

4. 하루 4번 6시간마다 실행 ( 0시, 6시, 12시, 18시 4회실행)

     00 00 0/6 * * ?

5. 하루 4번 6시간마다 실행 ( 0시15분20초, 6시15분20초, 12시15분20초, 18시15분20초 4회실행)

     20 15 0/6 * * ?

6. 매10분마다 실행

     00 0/10 * * * ?

7. 매일 19시~20시 사이 30분 간격으로 19시 09분부터 실행 (19시09분, 19시39분, 20시09분, 20시39분)

     00 09/30 19-20 * * ?

     이 경우 정확히는 19~20시 사이라기 보다는 시간구간이 19시와 20시 일때이므로 실질적으로는 19시에서 21시다.

728x90

'프로그래밍 > JAVA' 카테고리의 다른 글

아파치 톰캣 버전별 jdk 버전  (3) 2022.06.07
open jdk 관련  (0) 2022.06.07
java 쓰레드풀(Thread pool) 을 활용한 멀티쓰레드 처리  (0) 2020.12.21
request 객체 활용  (0) 2020.10.23
자바자료형  (0) 2020.10.22
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 23. 17:45
728x90

request 객체에는 사용자 정보가 기본적으로 많이 담겨 있다.

request 객체에서 해당 정보를 사용하여 개발되는 사이트의 로그나 사용자 반응을 확인하는 용도로 많이 사용한다.

또한 여러종류(개발,테스트,스테이징,운영,DR..)의 서버가 동작중일 경우 같은 코드로 서버별 다른 동작을 할때도 유용하다.

 

 

<%

// request.getHeader("referer"); // 접속 경로

// request.getHeader("user-agent"); // 유저의 시스템 정보
// request.getHeader("host"); // 접속 ip

// request.getHeader("User-Agent"); // 브라우져 정보 가져오기
// request.getHeader("WL-Proxy-Client-IP")
// request.getHeader("Proxy-Client-IP")
// request.getHeader("X-Forwarded-For") // 클라이언트 ip 주소 가져오기

// request.getRequestURI();   //프로젝트경로부터 파일까지의 경로값을 얻어옴

// request.getContextPath();  //프로젝트의 경로값만 가져옴

// request.getRequestURL();   //전체 경로를 가져옴

// request.getServletPath();   //파일명

 

// String request.getParameter(name)  //페이지에 전달된 파라미터를 name 기준으로 가져옴
// String[] request.getParameterValues(name)  // 페이지에 전달된 파라미터들을 모두 가져와 배열형태로 반환함

// String request.getProtocol() 웹 서버로 요청 시, 사용 중인 프로토콜을 리턴한다.
// String request.getServerName() 웹 서버로 요청 시, 서버의 도메인 이름을 리턴한다. 
// String request.getMethod() 웹 서버로 요청 시, 요청에 사용된 요청 방식(GET, POST, PUT 등)을 리턴한다. 
// String request.getQueryString() 웹 서버로 요청 시, 요청에 사용된 QueryString을 리턴한다. 
// String request.getRequestURI()  웹 서버로 요청 시, 요청에 사용된 URL 로부터 URI 값을 리턴한다. 
// String request.getRemoteAddr()  웹 서버로 정보를 요청한 웹 브라우저의 IP주소를 리턴한다. 
// int request.getServerPort() 웹 서버로 요청 시, 서버의 Port번호를 리턴한다. 
// String request.getContextPath() 해당 JSP 페이지가 속한 웹 어플리케이션의 콘텍스트 경로를 리턴한다. 
// String request.getHeader(name) 웹 서버로 요청 시, HTTP 요청 헤더(header)의 헤더 이름인 name에 해당하는 속성값을 리턴한다. 

 

다양한 request 객체 내 정보를 시스템로그에 찍어보면 활용도를 찾을수 있다.

 

System.out.println("referer:"+request.getHeader("referer"));

System.out.println("user-agent:"+request.getHeader("user-agent"));

System.out.println("host:"+request.getHeader("host"));

System.out.println("WL-Proxy-Client-IP:"+request.getHeader("WL-Proxy-Client-IP"));

System.out.println("Proxy-Client-IP:"+request.getHeader("Proxy-Client-IP"));

System.out.println("X-Forwarded-For:"+request.getHeader("X-Forwarded-For"));

System.out.println("HTTP_CLIENT_IP:"+request.getHeader("HTTP_CLIENT_IP"));

System.out.println("HTTP_X_FORWARDED_FOR:"+request.getHeader("HTTP_X_FORWARDED_FOR"));

System.out.println("getContextPath:"+request.getContextPath());

System.out.println("getProtocol:"+request.getProtocol());

System.out.println("getQueryString:"+request.getQueryString());

System.out.println("getRemoteAddr:"+request.getRemoteAddr());

System.out.println("getRequestURI:"+request.getRequestURI());

System.out.println("getServerName:"+request.getServerName());

System.out.println("getServletPath:"+request.getServletPath());

System.out.println("getSession:"+request.getSession().getId());

 

 

 

// Enumeration request.getHeaderNames() 웹 서버로 요청 시, HTTP 요청 헤더(header)에 있는 모든 헤더 이름을 리턴한다. 

// 파라미터의 헤더에 담긴 모든 정보를 조회하려고 할때 while문을 활용하여 전체를 찍어볼 수 있다.

Enumeration headers = request.getHeaderNames();

 

while(headers.hasMoreElements()) {

    String headerName = (String)headers.nextElement();

    String value = request.getHeader(headerName);

    System.out.println("headerName:"+headerName+","+value);

}

 

%>

 

728x90

'프로그래밍 > JAVA' 카테고리의 다른 글

아파치 톰캣 버전별 jdk 버전  (3) 2022.06.07
open jdk 관련  (0) 2022.06.07
java 쓰레드풀(Thread pool) 을 활용한 멀티쓰레드 처리  (0) 2020.12.21
quartz 사용시 스케쥴 cron 형식  (2) 2020.11.02
자바자료형  (0) 2020.10.22
Posted by 내맘대로내뜻대로
프로그래밍/JAVA2020. 10. 22. 16:32
728x90

자바의 자료형은 크게 기본형(primitive type)과 참조형(referene type)으로 나뉜다. 그리고 기본형은 다시 정수형, 실수형, 문자형, 논리형 네 가지로 분류할 수 있다. 이것들을 다음 표에 정리하였다.

[표 1] 자바의 기본 자료형(primitive type)의 종류

분류

이름

바이트 수

비고

정수형

byte

1

-127 ~ +128

short

2

-32,768 ~ + 32,767

int

4

-2,147,483,648 ~ +2,147,483,647

long

8

-9,223,372,036,854,775,808~

+9,223,372,036,854,775,807

실수형

float

4

단정도 실수형 (유효 자리는 7 정도임)

double

8

배정도 실수형 (유효 자리는 15정도)

문자형

char

2

유니코드 문자열

논리형

boolean

1

true, false

 

 정수형은 정수를 저장하는 자료형으로서 byte, short, int, long 네 가지가 있으며 각각에 저장할 수 있는 정수의 범위가 다르다 ([표 1] 참조) 한 가지 알아둘 것은 C/C++ 과 다르게 자바의 정수형에는 unsigned 형이 없고 부호 있는 정수형만 있다는 것이다. (자료 구조의 단순함을 유지하기 위해서 이렇게 설계했다고 한다.) 그리고 C/C++의 long long int 가 자바의 long형에 해당된다. 숫자 상수끝에 L/l 접미어가 붙으면 long형으로 저장된다.

 

 실수형은 실수(소숫점이나 e/E를 포함하는 수)를 저장하는 자료형으로서 float와 double 형이 있다. (이것은 C/C++과 동일하다.) 숫자 상수 끝에 f/F 접미어가 붙으면 float형으로 저장된다.

 

 컴퓨터에서는 모든 문자에 번호를 할당하고 문자를 정수로 바꿔서 저장한다. 어떤 문자에 어떤 번호를 할당하는 가는 여러 방법이 있으며 자바는 유니코드(unicode)라는 세계 표준 규격을 따른다. 유니코드는 국제적으로 사용되는 모든 문자를 0~65,535 범위(2 바이트)의 정수에 할당한 것이라고 이해하면 된다. 자바의 char형은 유니코드 한 문자를 표현할 수 있는 자료형으로서 2 byte 크기이다. 문자상수는 작은 따옴표를 사용하여 표시한다. 예를 들면 ‘a’, ‘가’, ‘3’ 등이다. (C/C++에서는 char형이 1byte이다. 혼동하면 안된다.)

 

 논리형은 true(참)과 false(거짓) 단 두 개의 값만을 가지는 자료형이다. 조건 검사에서 사용되는 논리식의 결과값을 저장하는 용도로 사용된다.

 

 

자료출처 : studymake.blogspot.com/2015/07/java-primitive-types.html

728x90
Posted by 내맘대로내뜻대로