某条数据一天只能刷新十次,这个要怎么做?
解决方案 »
- 诡异log4j问题 求大神
- EXTJS 可编缉的GridPanl
- 关于在action中获取表单数据后是否判空,在action中的一个execute()方法中是否将所有代码放入同一个try块中
- 请教点击姓名出现新窗口调用oracle显示其详细信息的代码(急,在线等!)
- 高手请进,一个指纹识别系统的疑问,倾家荡产呀!~!~~
- JSP中的I/O的问题,请求帮助?
- 信息发布平台自定义页面中的字段联动的问题!
- 探讨+学习:有了java servlet 还要jsp吗???
- 100分,再次求助,关于jsp中应用java bean的问题!
- 哪儿有java servlet development kit?
- TOMCAT5.0 報內存溢出。。。。但錯誤定向不明。。。
- 【200分】求PC端和手机端程序的交互问题
不知道看的懂不,看懂了就给分.谢谢合作
在网上看那个Timer这个方法需要点击才能运行,不能自动运行?
将判定逻辑抽出来作为一个函数(方法),当发现计数器的数据超过10时,在返回不允许修改的同时,在内存中记录下一下东西:行标识(可以记录关键字或者ROWID)、日期(精确到天)表示这个日期或者这个以前的日期已经不允许修改了。
那么这个判定逻辑的伪代码主要如下:
1、创建静态Map结构,其中KEY为记录的关键字或者ROWID,若为关键字且关键字为数字,加一个规定的字母前缀为关键字。
2、当根据入参的关键字在MAP中找到,并且日期和MAP中一致,则直接返回false,若存在但日期不一致,此时将Map中对应数据去掉,并将数据库的计数器修改为1。
3、若Map中没有数据,则增加计数器数字,并获取是否已经大于等于10,若是,将该行关键字和当前日期装入MAP中。其核心逻辑放入JAVA中了,在内存中操作注意共享内存的并发问题。如果数据不算多的话,可以将数据直接装入内存并计数器也装入内存中也可(也就是数据库中不用这个字段了)。付:上述方式不适用于应用服务器集群情况,因为集群中这个数据是不准确的。这个时候要么内存同步(这个代价太大),另一个就是基于数据库来完成了。如何修改就是上述的JOB、TIMER、自定义线程(其实TIMER本身就是线程);就后者几种方法,若不存在多线程的操作,还是比较推荐JOB,因为它对数据库操作死掉的概率很低。
modifiedDate不是今天,更新total=1,modifiedDate=new Date(),取得数据。modifiedDate是今天,total<10,total+=1,modifiedDate=new Date(),取得数据;total>=10,抛异常。