728x90
반응형
자바에는 java.util.random이라는게 있고, Math.random()이 있다 어떻게 쓰는거고 뭐에 쓸까?
필자같은 경우 웹사이트 crawling 할 때 1초 정도의 Thread.sleep(1000) 을 주고 파싱했었는데 이럴경우 ip 차단 되는 경우가 발생한다. 이걸 회피하는 가장 단순한 방법중 하나는 난수 활용으로 주기를 불규칙하게 하는 방법이 있다.
1. java.util.random 활용방법
Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
// do something for parsing web site ..
// do something
int iInterval = rnd.nextInt(10000); // 0 - 10000(10초) 사이 난수
Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}
2. Math.random() 활용방법
Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
// do something for parsing web site ..
// do something
int iInterval = (int) Math.random() * 100000 ; // (0.0 ~ 1.0 * 100000) = 0 ~ 10초 사이 난수
Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}
여기서 가장큰 실수가 발생하는데 돌리면 계속 0이 나온다..

아래처럼 괄호를 쳐야한다.
Random rnd = new Random();
for(int i = 0 ; i < 100; i++){
// do something for parsing web site ..
// do something
int iInterval = (int) (Math.random() * 100000) ; // (0.0 ~ 1.0 * 100000) = 0 ~ 10초 사이 난수
Thread.sleep(iInterval); // 0 ~ 10초 사이 sleep을 줌
}
728x90
반응형
'Languages > java' 카테고리의 다른 글
[intellJ] runnable jar Invalid signature file digest for Manifest main attributes error (0) | 2022.09.15 |
---|---|
[Java] CRC 계산 예제 (0) | 2022.05.06 |
[Java] openJDK 윈도우 설치 (0) | 2022.05.06 |
[Java] RS232 통신 예제 (0) | 2022.05.06 |
Mysql JDBC 접속 (Iptime NAS2, and so on) (0) | 2022.05.02 |