JAVA中每隔15秒更新字段数值排名
来源:互联网 发布:以撒的结合mac破解版 编辑:程序博客网 时间:2024/06/05 18:53
近期写一个古董藏品排名更新的模块,要实时对藏品的人气数值对其进行排名.
刚开始的时候。我以为只是页面的排名,但是。我觉得应该将排名数据先保存到数据库,然后每隔一段时间进行更新,这样页面的数据会统一.
然后。在做的时候。想到了使用java.util.TimerTask 定时做任务.
步骤如下:
第一步,写一个任务类;
public class PaiMingTask extends java.util.TimerTask{
static Logger logger = Logger.getLogger(Index.class.getName());
@Override
public void run() {
/**
* 做排名
*/
try{
List list_cpTypeList = Data.Query("SELECT TypesId FROM Antique_Types WHERE ParentTypesId=?",new Object[]{1});
System.out.println(list_cpTypeList.size()+"藏品类型个数 ");
//此处的SQL排名,出现的数据会有重复的
String sql="SELECT (SELECT COUNT(DISTINCT TouPiaoCount) FROM CangpinOfContest WHERE CBType=? AND JingSaiLevelId=? AND TouPiaoCount>a.TouPiaoCount)+1 AS paiming,"+
"CPCId,a.CBType FROM CangpinOfContest a WHERE CBType=? ORDER BY paiming";
Integer currentLevel = new ContestOfCurrentQishu().getCurrentQiShu();//Integer.parseInt(GetProperties.readValue("CurrentJinSaiLevelId"));
for(int count=0;count<list_cpTypeList.size();count++){
List list_count=(List)list_cpTypeList.get(count);
System.out.println("藏品类别:"+list_count.get(0).toString()+"进行排名");
List list_cpType=Data.Query(sql,new Object[]{list_count.get(0).toString(),currentLevel,list_count.get(0).toString()});//((List)(list_cpTypeList.get(0))).get(0).toString()
String sql_update="UPDATE CangPinOfContest SET BaiMing=? WHERE CPCId=?";
for(int i=0;i<list_cpType.size();i++){
List list_cpTypeObject=(List)list_cpType.get(i);
if(Data.Update(sql_update,new Object[]{list_cpTypeObject.get(0),list_cpTypeObject.get(1)})>0){
System.out.println(list_cpTypeObject.get(1)+":排名"+list_cpTypeObject.get(0));
}
}
}
}catch (Exception e) {
logger.debug(e.toString());
try {
throw e;
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
}
然后,第二步:管理类
先写一个接口类
public interface DoPlanImpl {
public void DoPlan();
}
public class PaiMingManager implements DoPlanImpl{
static Logger logger = Logger.getLogger(PaiMingManager.class.getName());
Timer t = null;
public PaiMingManager(){
}
public void time(int day,int hour,int min,int sec){
Calendar c = Calendar.getInstance();
c.set(Calendar.DAY_OF_MONTH,day);
c.set(Calendar.HOUR_OF_DAY,hour);
c.set(Calendar.MINUTE,min);
c.set(Calendar.SECOND,sec);
Date date = c.getTime();
System.out.println(c.getTime());
t= new Timer();
PaiMingTask mt = new PaiMingTask();
t.schedule(mt,date);
}
public void destoryTimer(){
t.cancel();
}
public void DoPlan() {
t= new Timer();
//任务类
PaiMingTask mt = new PaiMingTask();
t.schedule(mt, Calendar.getInstance ().getTime(), 15 * 1000);
}
}
第三步:写一个侦听
public class ContestPaiMing extends HttpServlet implements ServletContextListener{
static Logger logger = Logger.getLogger(ContestPaiMing.class.getName());
private DoPlanImpl doPlanImpl;
public void contextDestroyed(ServletContextEvent arg0) {
System.out.println("我的侦听结束");
}
@Override
public void service(ServletRequest arg0, ServletResponse arg1)
throws ServletException, IOException {
super.service(arg0, arg1);
}
public void contextInitialized(ServletContextEvent arg0) {
System.out.println("我的侦听开始");
/**
* 视频处理
*/
// doPlanImpl=new TransCodeVideoManager();
// doPlanImpl.DoPlan();
/**
* 排名处理
*/
doPlanImpl=new PaiMingManager();
doPlanImpl.DoPlan();
}
}
额。重启服务器.
- JAVA中每隔15秒更新字段数值排名
- 每隔10秒自动更新svn 定时更新svn 脚本
- jquery 定时器 每隔15秒调用函数
- 【练习题】每隔1秒向文件中写入一行记录
- 图片每隔5秒抖动
- Teradata中排名和序列字段实现
- Teradata中排名和序列字段实现
- opencv中在屏幕上每隔几秒显示一个点,并且保存点的坐标
- c语言每隔1秒向文件中写入一行记录,类似日志记录
- 编程读写一个文件test.txt,每隔1秒向文件中写入一行数据
- 截取小数点 查询字段中含有数值
- 每隔5秒输出httpd进程数
- 每隔20秒自动绑定事件livequery
- 每隔一秒自动执行函数(JavaScript)
- 【源码】计时器,每隔2秒执行一次
- linux crontab 实现每隔几秒执行
- linux crontab & 每隔10秒执行一次
- 每隔一秒闪烁的流水灯
- JavaScript实用技巧集锦
- 水晶报表小结
- Ordered Fractions
- DEDE 搜索页面调用arclist
- 一个非常好的DWR实例
- JAVA中每隔15秒更新字段数值排名
- 实例讲解Android中如何实现图片的异步加载功能
- java之域访问器的Effective设置
- 怎样写参数个数可变的宏
- 键盘回车事件导致页面刷新的问题
- 清除数据库中被注入的脚本
- Ext grid 中文排序
- 两本教子书
- Service 的生命周期