개발공부
- 98DAY / 스프링 스케쥴러 CRON식 2017.08.23
- 94DAY / W3CSchool 테마이용 가짜 쇼핑몰 생성 2017.08.18
- 89DAY / 프로젝트 시작, Github Commit 2017.08.09
- 88DAY / MySQL 랭크함수 2017.08.08
98DAY / 스프링 스케쥴러 CRON식
스프링 스케쥴러 https://spring.io/guides/gs/scheduling-tasks/
CRON 크론 표현식
초 | 분 | 시 | 일 | 월 | 요일 | 연도
0~59 | 0~59 | 0~23 | 1~31 | 1~12 | 0~6 | 생략가능
요일 : 0 (일요일) ~ 6( 토요일)
? : 설정 값 없을 때 - 일과 요일 에서만 사용가능
* : 모든조건
시작시간/단위 : 시작시간부터 해당 단위 때
시작범위-끝범위 : 시작범위 부터 끝범위까지
L : 마지막 - 일, 요일 에서만 사용가능
W : 가장 가까운 평일 찾는다 - 일 에서만 사용가능
ex) 10W
-10일이 평일 일 때 : 10일에 실행
-10일이 토요일 일 때 : 가장 가까운 평일인 금요일(9일)에 참
-10일이 일요일 일 때 : 가장 가까운 평일인 월요일(11일)에 참
# : 몇주 째인지 찾는다 - 요일 에서만 사용가능
ex) 3#2 : 수요일#2째주 에 참
예제
1) 매월 10일 오전 11시
0 1 1 10 * *
2) 매일 오후 2시 5분 0초
0 5 14 * * *
3) 10분마다 도는 스케줄러 : 10분 0초, 20분 0초...
0 0/10 * * *
4) 조건에서만 실행되는 스케줄러 : 10분 0초, 11분 0초 ~ 15분 0초까지 실행
0 10-15 * * *
스프링 스케줄러 사용하기
servlet-context.xml 환경설정
1. beans태그에 task 속성 추가
1 2 | xmlns:task="http://www.springframework.org/schema/task | cs |
2. xsi:schemaLocation 내에 코드 추가
1 2 | http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd | cs |
3. beans 태그의 자식태그 추가
1 2 3 | <context:component-scan base-package="com.ksmart.harulook.scheduler" /> <task:scheduler id="jobScheduler" pool-size="10" /> <task:annotation-driven scheduler="jobScheduler" /> | cs |
스케줄러 job생성
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 | package com.ksmart.harulook.scheduler; import org.apache.log4j.Logger; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; import com.ksmart.harulook.hof.service.HofDao; @Component public class Scheduler { Logger log = Logger.getLogger(this.getClass()); @Autowired private HofDao hofdao; /*매월 1일 0시 30분 명예의전당 입력*/ @Scheduled(cron="0 30 0 1 * *") public void HofScheduler() { try{ hofdao.insertHof(); }catch(Exception e){ e.printStackTrace(); } } } | cs |
94DAY / W3CSchool 테마이용 가짜 쇼핑몰 생성
89DAY / 프로젝트 시작, Github Commit
Spring 에서 깃허브 프로젝트 가져오기
Import - Git - Projects From Git - Clone URI 하고 깃허브의 주소와 아이디 비밀번호 입력한다
Github에 Commit할때
마우스 우클릭 - Team - Commit
저장소에 저장되지 않은 변경된 내역 중에 커밋할 내용을 드래그한 후
커밋메세지를 작성한 후 커밋한다.
커밋과 동시에 PUSH해서 깃허브에 올리고 싶다면 Commit and Push를 클릭한다
Push할때 브랜치를 생성할 수 있다.
88DAY / MySQL 랭크함수
Oracle과 달리 MySQL에서는 랭크함수가 없어서 구현해줘야한다.
같은 점수면 동점처리하고
원래는 1등 1명, 2등 2명이면, 다음 등수는 4등이 되어야하지만
우리 프로젝트에서 처리하기엔 더 불편할 것같아서 다음 등수는 3등이 되게하였다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | SELECT sns_board_no, CASE WHEN @prev = liker then @Rank WHEN @prev := liker then @Rank := @Rank +1 END AS rank, liker FROM ( SELECT sns_board_no ,count(sns_like_no) as liker FROM sns_like WHERE MONTH(sns_like_date) = (MONTH(NOW())-1) GROUP BY sns_board_no ORDER BY count(sns_like_no) DESC )sub1 CROSS JOIN (select @Rank := 0 ,@prev := NULL) sub2 ; | cs |
MySQL 사용자 변수 사용
1)SET을 사용하여 변수설정
1 | SET @exam = 1; | cs |
1 | SELECT @exam := 1; | cs |