- setInterval 함수 : 일정한 시간 간격으로 작업을 수행하기 위해서 사용합니다.clearInterval 함수를 사용하여 중지할 수 있습니다. 주의할 점은 일정한 시간 간격으로 실행되는 작업이 그 시간 간격보다 오래걸릴 경우 문제가 발생할 수 있습니다.


- setTimeout 함수 : 일정한 시간 후에 작업을 한번 실행합니다. 보통 재귀적 호출을 사용하여 작업을 반복합니다. 기본적으로 setInterval 과는 달리 지정된 시간을 기다린후 작업을 수행하고, 다시 일정한 시간을 기다린후 작업을 수행하는 방식입니다. 지정된 시간 사이에 작업 시간이 추가 되는 것입니다. clearTimeout() 을 사용해서 작업을 중지합니다.


- clearInterval(), clearTimeout()이 실행중인 작업을 중지시키는 것은 아닙니다. 지정된 작업은 모두 실행되고 다음 작업 스케쥴이 중지 되는 것입니다.




setInterval() 함수 사용법.

w3schools.com 사이트의 예제사용


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<!DOCTYPE html>
<html>
<body>
 
<p>Click the button to wait 3 seconds, then alert "Hello".</p>
<p>After clicking away the alert box, an new alert box will appear in 3 seconds.
 This goes on forever...</p>
<button onclick="myFunction()">Try it</button>
 
<script>
function myFunction() {
    setInterval(function(){ alert("Hello"); }, 3000);
}
</script>
 
</body>
</html>
 
cs

▶ 예제설명 : "Hello!" 라는 메시지를 3초 마다 알림창을 띄우는 예제입니다.


1. Tryit 버튼을 클릭시 myFunction() 함수가 호출됩니다.

2. myFunction() 메소드가 호출되고 setInterval({함수},{설정할시간}) 호출됩니다.

3. 시간을 3000으로 설정하였기때문에 3초마다 function(){ alert("Hello"); } 가 호출됩니다.





1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<!DOCTYPE html>
<html>
<body>
 
<p>Click the button to wait 3 seconds, then alert "Hello".</p>
 
<button onclick="myFunction()">Try it</button>
 
<script>
var myVar;
 
function myFunction() {
    myVar = setTimeout(alertFunc, 3000);
}
 
function alertFunc() {
  alert("Hello!");
}
</script>
 
</body>
</html>
 
cs
▶ 예제설명 : 마찬가지입니다. 위에 설명과 소스를 이해하셨다면 충분히 이해하실겁니다.^^


'웹개발 > javascript' 카테고리의 다른 글

[javascript] 1일차 - 자바스크립트 문법  (0) 2018.03.20
select M_NAME,M_TIME from RESEARCH where M_TIME between to_date('2003-11-12', 'YYYY-MM-DD') and to_date('2003-11-14', 'YYYY-MM-DD');

위에서 2003년 11월12일 부터 2003년 11월14일사이의 데이터만 디비에서 셀렉트해오고 싶다고 가정할때 쿼리의 결과는
12일부터 13일사이의 데이터만가지고 오는데 문제는 14일데이터를 못가져오는것입니다.
12일부터 15일사이를 검색하면 되겠지만 사용자입장에서 좋은방법 같지가 않습니다.

방법 :
select M_NAME,M_TIME from RESEARCH where M_TIME between to_date('2003-11-12', 'YYYY-MM-DD') and to_date('2003-11-14' || ' 23:59:59', 'YYYYMMDD HH24:MI:SS');

 오늘은 오라클 ROWNUM, BETWEEN AND, TO_CHAR, LAG OVER, LEAD OVER, NVL, MAX 쿼리에 대해서 알아보겠습니다.


1
2
3
4
5
6
7
8
    SELECT *
    FROM (SELECT result1.*,ROWNUM rnum 
          FROM (SELECT num,writer,title,content,regdate
                FROM board_guest
                ORDER BY num DESC
                ) result1
         )
    WHERE rnum BETWEEN #{startRowNum} AND #{endRowNum}
cs


ROWNUM  : 보통 오라클에서 페이징을 하거나 top n 을 뽑을때 사용합니다.

 

BETWEEN  : 범위를 지정하여 조건을 걸 때 사용합니다.



1
2
3
4
5
6
7
8
9
        SELECT result1.*
        FROM 
            (SELECT num,writer,title,content,
            TO_CHAR(regdate, 'YYYY.MM.DD AM HH:MI') regdate,
            LAG(num, 10) OVER(ORDER BY num DESC) prevNum,
            LEAD(num, 10) OVER(ORDER BY num DESC) nextNum
            FROM board_guest
            ORDER BY num DESC) result1
        WHERE num=#{num}
cs


TO_CHAR(숫자 혹은 날자, format)  : 숫자나 날짜를 문자로 변환해 주는 함수입니다.


LAG : 이전(위) Row 값을 가져올때 사용합니다.


LEAD : 이후(아래) Row 값을 가져올때 사용합니다.


OVER : ORDER BY, GROUP BY 서브쿼리를 개선하기 위해 나온 함수라고 할 수 있습니다.

   참고 : http://blog.naver.com/whitefre/140148769754



1
2
        SELECT NVL(MAX(ROWNUM), 0)
        FROM board_guest
cs


MAX : 최고값에 해당하는 값을 가져올때 사용합니다.


NVL : 테이블에 not null 처리가 안되어 있는 컬럼에 대해서 자주 사용합니다.

어떤 컬럼이 Null이면 특정값으로 치환해야하는 경우에 사용합니다.

1
2
3
4
5
6
7
8
9
10
11
$.ajax({
  url: "http://fiddle.jshell.net/favicon.png",
  beforeSend: function( xhr ) {
    xhr.overrideMimeType( "text/plain; charset=x-user-defined" );
  }
})
  .done(function( data ) {
    if ( console && console.log ) {
      console.log( "Sample of data:", data.slice( 0, 100 ) );
    }
  });
cs


url : 요청을 보내는 URL이 포함된 문자열


1
2
3
{"updateList":[{"PNO":"202","PNAME":"LG전자 로보킹 R76","PIMG":"http://img.danawa.com/prod_img/500000/567/451/img/4451567_1.jpg?shrink=160:160","PURL":"http://prod.danawa.com/info/?pcode=4451548&keyword=로봇청소기","UPRICE":"50000","TYPE":"down"},
                {"PNO":"201","PNAME":"샤오미 스마트 로봇 청소기","PIMG":"http://img.danawa.com/prod_img/500000/478/541/img/4541478_1.jpg?shrink=160:160","PURL":"http://prod.danawa.com/info/?pcode=4541417&keyword=로봇청소기","UPRICE":"50000","TYPE":"up"},
                {"PNO":"186","PNAME":"대유위니아 딤채 EDT33BFRMTT (2018년형)","PIMG":"http://img.danawa.com/prod_img/500000/199/508/img/5508199_1.jpg?shrink=160:160","PURL":"http://prod.danawa.com/info/?pcode=5508199&keyword=김치냉장고&cate=102122","UPRICE":"50000","TYPE":"up"}]}
cs


▶ 사용할 Quartz Scheduler 서비스를 사용하기 위해 Bean 등록을 해줍니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
    <bean name="dummyJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean" 
          p:jobClass="com.gm.crawling.product.controller.MyAbstractJob"
          p:durability="true">
        <property name="jobDataAsMap">
            <map>
                <entry key="HelloJob" value-ref="HelloJob"/>
            </map>
        </property>
    </bean>
    
    <bean name="mailJob" class="org.springframework.scheduling.quartz.JobDetailFactoryBean"
          p:jobClass="com.gm.crawling.product.controller.MailJob"
          p:durability="true">
        <property name="jobDataAsMap">
            <map>
                <entry key="HelloJob" value-ref="HelloJob"/>
            </map>
        </property>
    </bean>
 
    <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
          p:jobDetail-ref="dummyJob"
          p:startDelay="1000"
          p:cronExpression="0/30 * * * * ?"/>
          
     <bean id="mailTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"
          p:jobDetail-ref="mailJob"
          p:startDelay="1000"
          p:cronExpression="0/5 * * * * ?"/>
 
    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
        <property name="triggers">
            <list>
                <ref bean="cronTrigger"/>
                <ref bean="mailTrigger"/>
            </list>
        </property>
    </bean
cs


Quartz CronTrigger로 알아보는 Cron 표현식


http://www.jpinup.com/it/2016/01/29/spring-4-quartz-2-scheduler-con-cron-expression/


프로젝트 구성

1. Maven

2. Quartz 2.2.1

3. spring-context-support 4.0.0

4. spring-core 4.2.4

5. spring-tx 4.2.4

6. spring-context 4.2.4




▶ pom.xml 에서 라이브러리 추가.


Archive for required library: 'D:/repository/org/springframework/spring-aop/3.2.8.RELEASE/spring-aop-3.2.8.RELEASE.jar' in project '프로젝트명' cannot be read or is not a valid ZIP file


해결법 : MAVEN 의 로컬 저장소를 지우거나, 에러 메시지에 표시된 폴더를 지움.

프로젝트 우클릭 > MAVEN > Update Project 실행.

- 쿼츠 스케줄러 예제

https://examples.javacodegeeks.com/enterprise-java/quartz/quartz-scheduler-tutorial/



- 쿼츠 Doc

http://www.quartz-scheduler.org/documentation/quartz-2.2.x/quick-start.html



- 쿼츠 cron 시간 설정 방법

http://egloos.zum.com/namelessja/v/2340957


- success

http://www.jpinup.com/it/2016/01/29/spring-4-quartz-2-scheduler-con-cron-expression/



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.Scanner;
 
public class java2439 {
 
    public static void main(String[] args){
        Scanner scan = new Scanner(System.in);
 
        int num = scan.nextInt();
 
        for(int i=0; i<num; i++) {
            for(int k=0;k<num-i-1;k++) {    
                System.out.print(" ");
            }
            for(int j=0;j<i+1;j++) {
                System.out.print("*");
            }
            System.out.print("\n");
        }
    
    }
cs


-백준

'웹개발 > 알고리즘' 카테고리의 다른 글

11720번 숫자의 합  (0) 2017.10.21
11721번 열 개씩 끊어 출력하기  (0) 2017.10.21
1924번 2007년  (0) 2017.10.21

+ Recent posts