Commit 33f69a5d by zhiwei

采集调整为每分钟采集一次

parent bc9cabb1
...@@ -7,7 +7,6 @@ import com.zhiwei.searchhotcrawler.dbtemplate.MongoDBTemplate; ...@@ -7,7 +7,6 @@ import com.zhiwei.searchhotcrawler.dbtemplate.MongoDBTemplate;
import lombok.extern.log4j.Log4j2; import lombok.extern.log4j.Log4j2;
import org.bson.Document; import org.bson.Document;
import javax.print.Doc;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -135,31 +134,32 @@ public class HotSearchCacheDAO { ...@@ -135,31 +134,32 @@ public class HotSearchCacheDAO {
* @return * @return
*/ */
private int getDuration(String type, int duration){ private int getDuration(String type, int duration){
switch (type){ // switch (type){
case "微博热搜" : // case "微博热搜" :
duration = duration + 1; // duration = duration + 1;
break; // break;
case "百度热搜" : // case "百度热搜" :
duration = duration + 5; // duration = duration + 5;
break; // break;
case "知乎热搜" : // case "知乎热搜" :
duration = duration + 10; // duration = duration + 10;
break; // break;
case "抖音热搜" : // case "抖音热搜" :
duration = duration + 10; // duration = duration + 10;
break; // break;
case "搜狗微信热搜" : // case "搜狗微信热搜" :
duration = duration + 5; // duration = duration + 5;
break; // break;
case "微博话题" : // case "微博话题" :
duration = duration + 3; // duration = duration + 3;
break; // break;
case "今日头条热搜" : // case "今日头条热搜" :
duration = duration + 1; // duration = duration + 1;
break; // break;
default : // default :
duration = duration + 1; // duration = duration + 1;
} // }
duration = duration + 1;
return duration; return duration;
} }
...@@ -171,32 +171,32 @@ public class HotSearchCacheDAO { ...@@ -171,32 +171,32 @@ public class HotSearchCacheDAO {
* @return * @return
*/ */
private Date getEndTime(String type, Date time){ private Date getEndTime(String type, Date time){
long timeLong = time.getTime(); long timeLong = time.getTime() + 1*60*1000;
switch (type){ // switch (type){
case "微博热搜" : // case "微博热搜" :
timeLong = timeLong + 1*60*1000; // timeLong = timeLong + 1*60*1000;
break; // break;
case "百度热搜" : // case "百度热搜" :
timeLong = timeLong + 5*60*1000; // timeLong = timeLong + 5*60*1000;
break; // break;
case "知乎热搜" : // case "知乎热搜" :
timeLong = timeLong + 10*60*1000; // timeLong = timeLong + 10*60*1000;
break; // break;
case "抖音热搜" : // case "抖音热搜" :
timeLong = timeLong + 10*60*1000; // timeLong = timeLong + 10*60*1000;
break; // break;
case "搜狗微信热搜" : // case "搜狗微信热搜" :
timeLong = timeLong + 5*60*1000; // timeLong = timeLong + 5*60*1000;
break; // break;
case "微博话题" : // case "微博话题" :
timeLong = timeLong + 3*60*1000; // timeLong = timeLong + 3*60*1000;
break; // break;
case "今日头条热搜" : // case "今日头条热搜" :
timeLong = timeLong + 1*60*1000; // timeLong = timeLong + 1*60*1000;
break; // break;
default : // default :
timeLong = timeLong + 1*60*1000; // timeLong = timeLong + 1*60*1000;
} // }
return new Date(timeLong); return new Date(timeLong);
} }
......
package com.zhiwei.searchhotcrawler.dbtemplate;
import com.mongodb.MongoClient;
import com.mongodb.MongoClientOptions;
import com.mongodb.MongoClientURI;
import com.mongodb.WriteConcern;
import com.mongodb.client.ListIndexesIterable;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.mongodb.client.model.IndexOptions;
import com.zhiwei.searchhotcrawler.config.DBConfig;
import lombok.extern.log4j.Log4j2;
import org.bson.Document;
import java.util.Objects;
@Log4j2
public enum MongoDBLocalTemplate {
instance;
private MongoClient mongoClient;
static {
MongoClientOptions options = new MongoClientOptions.Builder()
.connectionsPerHost(300) //连接池设置为300个连接,默认为100
.connectTimeout(15000) //连接超时,推荐>3000毫秒
.maxWaitTime(5000)
.socketTimeout(0) // 套接字超时时间,0无限制
.threadsAllowedToBlockForConnectionMultiplier(5000) // 线程队列数,如果连接线程排满了队列就会抛出“Out of semaphores to get db”错误。
.writeConcern(WriteConcern.W1) //
.build();
log.info("MongoDBTemplate.static initializer : {}", DBConfig.mongoLocalUri);
MongoClientURI mongoClientURI = new MongoClientURI(DBConfig.mongoLocalUri);
instance.mongoClient = new MongoClient(mongoClientURI);
}
/**
* 获取DB实例 - 指定DB
*
* @param databaseName
* @return
*/
public static MongoDatabase getDB(String databaseName) {
return instance.mongoClient.getDatabase(databaseName);
}
/**
* 获取collection对象 - 指定Collection
*
* @param databaseName
* @param collectionName
* @return
*/
public static MongoCollection<Document> getCollection(String databaseName, String collectionName) {
MongoDatabase db = instance.mongoClient.getDatabase(databaseName);
return db.getCollection(collectionName);
}
/**
* 创建索引
* @param databaseName
* @param collectionName
*/
public static void createIndex(String databaseName, String collectionName){
MongoDatabase db = instance.mongoClient.getDatabase(databaseName);
MongoCollection mongoCollection = db.getCollection(collectionName);
ListIndexesIterable<Document> indexList = mongoCollection.listIndexes();
if(Objects.isNull(indexList)){
Document countIndexDoc = new Document();
if(collectionName.contains("hot_search_list")){
countIndexDoc.put("count", -1);
}else{
countIndexDoc.put("score_num", -1);
}
Document timeIndexDoc = new Document();
timeIndexDoc.put("time", -1);
Document rankIndexDoc = new Document();
rankIndexDoc.put("rank", -1);
Document nameIndexDoc = new Document();
nameIndexDoc.put("name", -1);
Document typeIndexDoc = new Document();
typeIndexDoc.put("type", -1);
try {
mongoCollection.createIndex(countIndexDoc, new IndexOptions().name("count_desc"));
mongoCollection.createIndex(timeIndexDoc, new IndexOptions().name("time_desc"));
mongoCollection.createIndex(rankIndexDoc, new IndexOptions().name("rank_desc"));
mongoCollection.createIndex(nameIndexDoc, new IndexOptions().name( "name_desc"));
mongoCollection.createIndex(typeIndexDoc, new IndexOptions().name( "type_desc"));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
//package com.zhiwei.searchhotcrawler.test; package com.zhiwei.searchhotcrawler.test;
//
//import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoCollection;
//import com.mongodb.client.MongoCursor; import com.mongodb.client.MongoCursor;
//import com.mongodb.client.MongoDatabase; import com.mongodb.client.MongoDatabase;
//import com.zhiwei.searchhotcrawler.config.DBConfig; import com.zhiwei.searchhotcrawler.config.DBConfig;
//import com.zhiwei.searchhotcrawler.dbtemplate.MongoDBTemplate; import com.zhiwei.searchhotcrawler.dbtemplate.MongoDBLocalTemplate;
//import com.zhiwei.tools.timeparse.TimeParse; import com.zhiwei.searchhotcrawler.dbtemplate.MongoDBTemplate;
//import lombok.extern.log4j.Log4j2; import com.zhiwei.tools.timeparse.TimeParse;
//import org.bson.Document; import lombok.extern.log4j.Log4j2;
// import org.bson.Document;
//import java.util.*;
// import java.util.*;
//@Log4j2
//public class TopicTest { @Log4j2
// public class TopicTest {
// private static MongoDatabase mongoDB = MongoDBTemplate.getDB(DBConfig.dbName);
// private static MongoDatabase mongoDB = MongoDBTemplate.getDB(DBConfig.dbName);
// public static void main(String[] args) { private static MongoDatabase mongoDBLocal = MongoDBLocalTemplate.getDB(DBConfig.dbName);
//// repairTopic();
// public static void main(String[] args) {
repairHotType();
// updateHotSearchCache(); // updateHotSearchCache();
// } }
//
// /** /**
// * 修复热搜话题类型错误问题 * 修复热搜话题类型错误问题
// */ */
// public static void repairTopic(){ public static void repairHotType(){
// MongoCollection mongoCollection = mongoDB.getCollection("hot_search_list2020_04"); try{
// Document query = new Document("comment_count", new Document("$ne", null)); for(int month = 6; month<=6; month++){
// query.put("type", "微博热搜"); String collectionName = "hot_search_list2020_0" + month;
// Date time = TimeParse.stringFormartDate("2020-03-12 18:00:00"); MongoCollection mongoCollection = mongoDB.getCollection(collectionName);
// MongoCollection mongoLocalCollection = mongoDBLocal.getCollection(collectionName);
// long count = mongoCollection.countDocuments(query); Date date = TimeParse.stringFormartDate("2020-06-17 12:59:59");
// log.info("count is {}", count); Document query = new Document();
// for(int i=0;i<55;i++){ query.put("time", new Document("$gt", date));
// MongoCursor<Document> cursor = mongoCollection.find(query).limit(1000).iterator(); long count = mongoCollection.countDocuments(query);
// while(cursor.hasNext()){ int pageCount = 10000;
// Document update = cursor.next(); int pages = (int)Math.ceil((double)count/(double)pageCount);
// update.put("type", "微博话题"); log.info("count====={},pages====={}",count, pages);
// Document query2 = new Document(); for(int page = 1; page<pages; page++){
// query2.put("_id", update.getString("_id")); query.put("time", new Document("$gt", date));
// mongoCollection.findOneAndReplace(query2, update); log.info("page is {} ,query is {},coutn is {}", page ,query ,mongoCollection.countDocuments(query));
// time = update.getDate("time"); MongoCursor<Document> cursor = mongoCollection.find(query).limit(pageCount).sort(new Document("time",1)).iterator();
// } List<Document> dataList = new ArrayList<>();
// log.info("i========{}", i); while(cursor.hasNext()) {
// } Document document = cursor.next();
// } date = document.getDate("time");;
// dataList.add(document);
//
// try{
// mongoLocalCollection.insertOne(document);
// public static void updateHotSearchCache(){ }catch (Exception e){
// for(int month = 3; month<=3; month++){ continue;
// String collectionName = "hot_search_list2020_0" + month; }
// if(month>=10){ }
// collectionName = "hot_search_list2020_" + month; cursor.close();
// } }
// log.info("collectionName is {}", collectionName); }
// MongoCollection mongoCollection = mongoDB.getCollection(collectionName); }catch (Exception e){
// MongoCollection mongoCollectionLocal = mongoDBLocal.getCollection("hot_search_cache"); e.printStackTrace();
// }
// long count = mongoCollection.countDocuments(); }
// int pageCount = 10000;
// int pages = (int)Math.ceil((double)count/(double)pageCount);
// log.info("count====={},pages====={}",count, pages);
// Date date = TimeParse.stringFormartDate("2020-03-12 18:00:00");
//
// Map<String,Document> resultMap = new HashMap<>();
//
// for(int page = 1; page<pages; page++){
// Document query = new Document(); public static void updateHotSearchCache(){
// if(page>1) { for(int month = 3; month<=12; month++){
// query.put("time", new Document("$gt", date)); String collectionName = "hot_search_list2019_0" + month;
// } if(month>=10){
// log.info("page is {} ,query is {},coutn is {}", page ,query ,mongoCollection.countDocuments(query)); collectionName = "hot_search_list2019_" + month;
// MongoCursor<Document> cursor = mongoCollection.find(query).limit(pageCount).sort(new Document("time",1)).iterator(); }
// while(cursor.hasNext()){ log.info("collectionName is {}", collectionName);
// Document document = cursor.next(); MongoCollection mongoCollection = mongoDB.getCollection(collectionName);
// String name = document.getString("name"); MongoCollection mongoCollectionLocal = mongoDBLocal.getCollection("hot_search_cache");
// String type = document.getString("type");
// int lastRank = document.getInteger("rank")!=null?document.getInteger("rank"): -1; long count = mongoCollection.countDocuments();
// int lastCount = document.getInteger("count")!=null?document.getInteger("count"): -1; int pageCount = 10000;
// Date startTime = document.getDate("time"); int pages = (int)Math.ceil((double)count/(double)pageCount);
// Date endTime = new Date(startTime.getTime() + (60 * 1000)); log.info("count====={},pages====={}",count, pages);
// String topicLead = document.getString("topic_lead")!=null?document.getString("topic_lead"):null; Date date = TimeParse.stringFormartDate("2020-03-12 18:00:00");
// boolean hot = document.getBoolean("hot")!=null?document.getBoolean("hot"):true;
// String url = document.getString("url")!=null?document.getString("url"):null; Map<String,Document> resultMap = new HashMap<>();
// String id = name + "_" + type;
// for(int page = 1; page<pages; page++){
// Document nowDoc = resultMap.get(id); Document query = new Document();
// if (Objects.nonNull(nowDoc)) { if(page>1) {
// int highestRank = nowDoc.getInteger("highestRank"); query.put("time", new Document("$gt", date));
// int highestCount = nowDoc.getInteger("highestCount"); }
// //判断最大热度值 log.info("page is {} ,query is {},coutn is {}", page ,query ,mongoCollection.countDocuments(query));
// if (lastCount>0 && lastCount > highestCount) { MongoCursor<Document> cursor = mongoCollection.find(query).limit(pageCount).sort(new Document("time",1)).iterator();
// highestCount = lastCount; while(cursor.hasNext()){
// } Document document = cursor.next();
// //判断最高排名 String name = document.getString("name");
// if (lastRank>0 && lastRank < highestRank) { String type = document.getString("type");
// highestRank = lastRank; Integer lastRank = document.getInteger("rank")!=null?document.getInteger("rank"): null;
// } Integer lastCount = document.getInteger("count")!=null?document.getInteger("count"): null;
// //计算热搜时长 Date startTime = document.getDate("time");
// int duration = nowDoc.getInteger("duration"); Date endTime = new Date(startTime.getTime() + (60 * 1000));
// int durationNow = getDuration(type, duration); String topicLead = document.getString("topic_lead")!=null?document.getString("topic_lead"):null;
// boolean hot = document.getBoolean("hot")!=null?document.getBoolean("hot"):true;
// //更新相应信息 String url = document.getString("url")!=null?document.getString("url"):null;
// nowDoc.put("endTime", endTime); String id = name + "_" + type;
// nowDoc.put("lastRank", lastRank);
// nowDoc.put("lastCount", lastCount); Document nowDoc = resultMap.get(id);
// nowDoc.put("highestRank", highestRank); if (Objects.nonNull(nowDoc)) {
// nowDoc.put("highestCount", highestCount); Integer highestRank = nowDoc.getInteger("highestRank");
// nowDoc.put("duration", durationNow); Integer highestCount = nowDoc.getInteger("highestCount");
// } else { Integer preRank = nowDoc.getInteger("lastRank");
// nowDoc = new Document(); Integer preCount = nowDoc.getInteger("lastCount");
// int durationNow = getDuration(type, 0); //判断最大热度值
// nowDoc.put("_id", id); if (Objects.nonNull(lastCount) && Objects.nonNull(highestCount) && lastCount>0 && lastCount > highestCount) {
// nowDoc.put("url", url); highestCount = lastCount;
// nowDoc.put("name", name); }
// nowDoc.put("hot", hot); //判断最高排名
// nowDoc.put("topicLead", topicLead); if (Objects.nonNull(lastRank) && Objects.nonNull(highestRank) && lastRank>0 && lastRank < highestRank) {
// nowDoc.put("type", type); highestRank = lastRank;
// nowDoc.put("lastRank", lastRank); }
// nowDoc.put("highestRank", lastRank); //计算热搜时长
// nowDoc.put("lastCount", lastCount); int duration = nowDoc.getInteger("duration");
// nowDoc.put("highestCount", lastCount); int durationNow = getDuration(type, duration);
// nowDoc.put("startTime", startTime); //更新相应信息
// nowDoc.put("endTime", endTime); nowDoc.put("endTime", endTime);
// nowDoc.put("duration", durationNow); nowDoc.put("lastRank", lastRank);
// } nowDoc.put("lastCount", lastCount);
// resultMap.put(id, nowDoc); nowDoc.put("preRank", preRank);
// date = startTime; nowDoc.put("preCount", preCount);
// } nowDoc.put("highestRank", highestRank);
// cursor.close(); nowDoc.put("highestCount", highestCount);
// } nowDoc.put("duration", durationNow);
// } else {
// log.info("list size is {}", resultMap.size()); nowDoc = new Document();
// for (Map.Entry<String,Document> entry: resultMap.entrySet()){ int durationNow = getDuration(type, 0);
// String id = entry.getKey(); nowDoc.put("_id", id);
// Document document = entry.getValue(); nowDoc.put("url", url);
// String name = document.getString("name"); nowDoc.put("name", name);
// String type = document.getString("type"); nowDoc.put("hot", hot);
// int lastRank = document.getInteger("lastRank"); nowDoc.put("topicLead", topicLead);
// int lastCount = document.getInteger("lastCount"); nowDoc.put("type", type);
// int highestRank = document.getInteger("highestRank"); nowDoc.put("lastRank", lastRank);
// int highestCount = document.getInteger("highestCount"); nowDoc.put("highestRank", lastRank);
// int duration = document.getInteger("duration"); nowDoc.put("lastCount", lastCount);
// nowDoc.put("highestCount", lastCount);
// Document query = new Document("_id", id); nowDoc.put("startTime", startTime);
// Document resultDoc = (Document) mongoCollectionLocal.find(query).first(); nowDoc.put("endTime", endTime);
// if(Objects.isNull(resultDoc)){ nowDoc.put("duration", durationNow);
// mongoCollectionLocal.insertOne(document); nowDoc.put("preRank", null);
// }else{ nowDoc.put("preCount", null);
// }
// int highestRankResult = resultDoc.getInteger("highestRank"); resultMap.put(id, nowDoc);
// int highestCountResult = resultDoc.getInteger("highestCount"); date = startTime;
// int durationResult = document.getInteger("duration"); }
// //判断最大热度值 cursor.close();
// if (highestCountResult > highestCount) { }
// highestCount = highestCountResult;
// } log.info("list size is {}", resultMap.size());
// //判断最高排名 for (Map.Entry<String,Document> entry: resultMap.entrySet()){
// if (highestRankResult < highestRank) { String id = entry.getKey();
// highestRank = highestRankResult; Document document = entry.getValue();
// } String name = document.getString("name");
// //计算热搜时长 String type = document.getString("type");
// int durationNow = duration + durationResult; Integer lastRank = document.getInteger("lastRank");
// Date endTime = document.getDate("endTime"); Integer lastCount = document.getInteger("lastCount");
// //更新相应信息 Integer highestRank = document.getInteger("highestRank");
// resultDoc.put("endTime", endTime); Integer highestCount = document.getInteger("highestCount");
// resultDoc.put("lastRank", lastRank); Integer duration = document.getInteger("duration");
// resultDoc.put("lastCount", lastCount); Integer preRank = document.getInteger("preRank");
// resultDoc.put("highestRank", highestRank); Integer preCount = document.getInteger("preCount");
// resultDoc.put("highestCount", highestCount);
// resultDoc.put("duration", durationNow);
// mongoCollectionLocal.findOneAndReplace(query, resultDoc); Document query = new Document("_id", id);
// } Document resultDoc = (Document) mongoCollectionLocal.find(query).first();
// } if(Objects.isNull(resultDoc)){
// } mongoCollectionLocal.insertOne(document);
// } }else{
//
// Integer highestRankResult = resultDoc.getInteger("highestRank");
// /** Integer highestCountResult = resultDoc.getInteger("highestCount");
// * 计算热搜时长 Integer durationResult = document.getInteger("duration");
// * @param type //判断最大热度值
// * @param duration if (Objects.nonNull(highestRankResult) && Objects.nonNull(highestCount) && highestCountResult > highestCount) {
// * @return highestCount = highestCountResult;
// */ }
// private static int getDuration(String type, int duration){ //判断最高排名
// switch (type){ if (Objects.nonNull(highestRankResult) && Objects.nonNull(highestRank) && highestRankResult < highestRank) {
// case "微博热搜" : highestRank = highestRankResult;
// duration = duration + 1; }
// break; //计算热搜时长
// case "百度热搜" : int durationNow = duration + durationResult;
// duration = duration + 5; Date endTime = document.getDate("endTime");
// break; //更新相应信息
// case "知乎热搜" : resultDoc.put("endTime", endTime);
// duration = duration + 10; resultDoc.put("lastRank", lastRank);
// break; resultDoc.put("lastCount", lastCount);
// case "抖音热搜" : resultDoc.put("highestRank", highestRank);
// duration = duration + 10; resultDoc.put("highestCount", highestCount);
// break; resultDoc.put("duration", durationNow);
// case "搜狗微信热搜" : resultDoc.put("preRank", preRank);
// duration = duration + 5; resultDoc.put("preCount", preCount);
// break; mongoCollectionLocal.findOneAndReplace(query, resultDoc);
// case "微博话题" : }
// duration = duration + 3; }
// break; }
// default : }
// duration = duration + 1;
// }
// return duration; /**
// } * 计算热搜时长
// * @param type
//} * @param duration
* @return
*/
private static int getDuration(String type, int duration){
switch (type){
case "微博热搜" :
duration = duration + 1;
break;
case "百度热搜" :
duration = duration + 1;
break;
case "知乎热搜" :
duration = duration + 1;
break;
case "抖音热搜" :
duration = duration + 10;
break;
case "搜狗微信热搜" :
duration = duration + 5;
break;
case "微博话题" :
duration = duration + 3;
break;
default :
duration = duration + 1;
}
return duration;
}
}
...@@ -28,7 +28,7 @@ public class BaiduHotSearchRun extends Thread{ ...@@ -28,7 +28,7 @@ public class BaiduHotSearchRun extends Thread{
while(f) { while(f) {
try { try {
getHotList(); getHotList();
TimeUnit.MINUTES.sleep(5); TimeUnit.MINUTES.sleep(1);
} catch (Exception e) { } catch (Exception e) {
e.fillInStackTrace(); e.fillInStackTrace();
ZhiWeiTools.sleep(60*60*1000); ZhiWeiTools.sleep(60*60*1000);
......
...@@ -27,7 +27,7 @@ public class DouyinHotSearchRun extends Thread{ ...@@ -27,7 +27,7 @@ public class DouyinHotSearchRun extends Thread{
while(f) { while(f) {
try { try {
getHotList(); getHotList();
TimeUnit.MINUTES.sleep(10); TimeUnit.MINUTES.sleep(1);
} catch (Exception e) { } catch (Exception e) {
e.fillInStackTrace(); e.fillInStackTrace();
ZhiWeiTools.sleep(60*60*1000); ZhiWeiTools.sleep(60*60*1000);
......
...@@ -27,7 +27,7 @@ public class SougoHotSearchRun extends Thread { ...@@ -27,7 +27,7 @@ public class SougoHotSearchRun extends Thread {
while(f) { while(f) {
try { try {
getHotList(); getHotList();
TimeUnit.MINUTES.sleep(5); TimeUnit.MINUTES.sleep(1);
} catch (Exception e) { } catch (Exception e) {
e.fillInStackTrace(); e.fillInStackTrace();
ZhiWeiTools.sleep(60*60*1000); ZhiWeiTools.sleep(60*60*1000);
......
...@@ -21,7 +21,7 @@ public class WeiboTopicRun extends Thread{ ...@@ -21,7 +21,7 @@ public class WeiboTopicRun extends Thread{
while(f) { while(f) {
try { try {
getTopicList(); getTopicList();
TimeUnit.MINUTES.sleep(3); TimeUnit.MINUTES.sleep(1);
} catch (Exception e) { } catch (Exception e) {
e.fillInStackTrace(); e.fillInStackTrace();
ZhiWeiTools.sleep(60*60*1000); ZhiWeiTools.sleep(60*60*1000);
......
...@@ -27,7 +27,7 @@ public class ZhihuHotSearchRun extends Thread{ ...@@ -27,7 +27,7 @@ public class ZhihuHotSearchRun extends Thread{
while(f) { while(f) {
try { try {
getHotList(); getHotList();
TimeUnit.MINUTES.sleep(10); TimeUnit.MINUTES.sleep(1);
} catch (Exception e) { } catch (Exception e) {
e.fillInStackTrace(); e.fillInStackTrace();
ZhiWeiTools.sleep(60*60*1000); ZhiWeiTools.sleep(60*60*1000);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment