- 浏览: 381049 次
- 性别:
文章分类
最新评论
-
wjw103:
You are using old notation for ...
Struts2 入门实例代码 -
hhb19900618:
你好 你这个工程压缩包是不是有问题啊?根本不能导入?
Struts2 入门实例代码 -
it爱:
[list][*]dsadsa[*]dsadsa[*]dsad ...
Spring AOP 学习小结 -
youjianbo_han_87:
和 weblogic 有个毛线关系???????
Weblogic下的自动任务 -
hua839:
是用SmartUpload进行文件上传
背景:
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
好办法,把这段代码搞到拦截器里去...
BufferString是String的父类当有变化时时减少资源浪费
(如果是String那么url+"/xxx.do?"+"zzz=yyy"+"&aaa=bbb"+"&cccc=dddd")
StringBuffer怎么是String的父类了??
另外 url + "asdfa" + "asdfasd" + .... + "asdfas"
和new StringBuffer(url).append("adfasdf").append("asdf").....toString()是一样的
编译器自动把+变成了append
看编译后的bytecode可以证明这一点
但如果是这样:
String s = url + "asdf";
s = s + "asfdasdf";
...
s = s + "sjfdkajsdlfj";
就很浪费,多个StringBuffer,多次toString()
比:
s = url.concat("asdfas").concat("sdfasdf")...还慢
这类情况就要明白写出StringBuilder.append
而前述的 a + b + c ... 连着写没有问题(当然要是在意Builder比Buffer更快,那还是手工写出来)
这里编译器指 sun jdk 1.4+ eclipse 3.0+ 更早版本没验证过
一时想起来你说的是F5
MS在提交时不用submit按钮
而是用javascript触发
就没这问题了
我遇到的客户要求与楼主不一样
PS:楼上没事的只是惊讶于你对我们客户的了解之深....这个倒是可以,不过可能照正常的做法多出了几个form出来.另外问个问题?
PS是什么意思?
一时想起来你说的是F5
MS在提交时不用submit按钮
而是用javascript触发
就没这问题了
我遇到的客户要求与楼主不一样
PS:楼上没事的只是惊讶于你对我们客户的了解之深....
使用synchronize肯定会有性能上的问题.即使要用是否也应该这样?
这个问题如果是单机环境,把用户访问的时间戳存到Session中,然后做时间比较应该是最简单的.
如果是集群应用环境,还要考虑各机器之间的Session同步开销问题,需要综合权衡.
感觉这也像是防止系统用户进行Dos攻击:)
有个东西叫报表软件
是公司花了N大元买来的
如果想要治本让他们把源码拿来我把lessonees关了明年就可以不用付钱了
我遇到的是用鼠标点了N回
但是由于报表天生就慢
他就怎么也出不来
点了5分钟把机器玩的差点当了
所以要加缓存
是让他们点了N次之后不用再去数据库里查寻
也能得出结果否则他一看出了结果之后一激动点了其它的的连接回不来了...
当时的查询如果不加条件大约要用2分钟左右.
大约是要开多个线程来测试的吧?如何来作我也没作过正在想怎么作呢
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
评论
32 楼
yfmine
2007-05-31
nihongye 写道
这还不简单.
if(session.getAtrribute("busy") != null)
{
return "busy"
}
session.setAttribute("busy","")
try{
doProcess();
}finally{
session.removeAttribute("i am busy")
}
if(session.getAtrribute("busy") != null)
{
return "busy"
}
session.setAttribute("busy","")
try{
doProcess();
}finally{
session.removeAttribute("i am busy")
}
好办法,把这段代码搞到拦截器里去...
31 楼
birdjavaeye
2007-05-31
抛出异常的爱 写道
BufferString是String的父类当有变化时时减少资源浪费
(如果是String那么url+"/xxx.do?"+"zzz=yyy"+"&aaa=bbb"+"&cccc=dddd")
StringBuffer怎么是String的父类了??
另外 url + "asdfa" + "asdfasd" + .... + "asdfas"
和new StringBuffer(url).append("adfasdf").append("asdf").....toString()是一样的
编译器自动把+变成了append
看编译后的bytecode可以证明这一点
但如果是这样:
String s = url + "asdf";
s = s + "asfdasdf";
...
s = s + "sjfdkajsdlfj";
就很浪费,多个StringBuffer,多次toString()
比:
s = url.concat("asdfas").concat("sdfasdf")...还慢
这类情况就要明白写出StringBuilder.append
而前述的 a + b + c ... 连着写没有问题(当然要是在意Builder比Buffer更快,那还是手工写出来)
这里编译器指 sun jdk 1.4+ eclipse 3.0+ 更早版本没验证过
30 楼
nihongye
2007-05-31
这还不简单.
if(session.getAtrribute("busy") != null)
{
return "busy"
}
session.setAttribute("busy","")
try{
doProcess();
}finally{
session.removeAttribute("i am busy")
}
if(session.getAtrribute("busy") != null)
{
return "busy"
}
session.setAttribute("busy","")
try{
doProcess();
}finally{
session.removeAttribute("i am busy")
}
29 楼
苏飞
2007-05-31
我喜欢你们两个的讨论。更倾向于jamesby加上时间限制的想法。
28 楼
sg552
2007-05-31
楼上的请不要作广告好吗?
我觉得用户频繁访问的问题,为什么不在server端,防火墙端,或者container端进行设置呢? 这个还要自己来写吗?
我觉得用户频繁访问的问题,为什么不在server端,防火墙端,或者container端进行设置呢? 这个还要自己来写吗?
27 楼
jamesby
2007-03-08
抛出异常的爱 写道
jamesby 写道
背景:
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
一时想起来你说的是F5
MS在提交时不用submit按钮
而是用javascript触发
就没这问题了
function TheFormSubmit(){ form.action="makePrintPage"; form.submit(); }
我遇到的客户要求与楼主不一样
PS:楼上没事的只是惊讶于你对我们客户的了解之深....
PS是什么意思?
26 楼
抛出异常的爱
2007-03-07
jamesby 写道
背景:
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
问题是这样的,系统持久层采用ibatis架构,系统有几个比较复杂的报表,耗费时间稍微长,不过在3秒以内.
但是在报表页面按 F5 10秒钟则会出现statement timeout 的异常,因此有了如何防止用户恶意刷新的想法.
初步想法
在内存中维护一个类似集合的东西,记录url,userid和访问时间,该集合的数据量维护在一个合理的范围,采用先进先出原则,根据访问时间、url和userid判断用户访问某个url的频繁程度,利用Interceptor从而在用户访问service之前拒绝用户访问!
谁能提供一个更好的想法?
一时想起来你说的是F5
MS在提交时不用submit按钮
而是用javascript触发
就没这问题了
function TheFormSubmit(){ form.action="makePrintPage"; form.submit(); }
我遇到的客户要求与楼主不一样
PS:楼上没事的只是惊讶于你对我们客户的了解之深....
25 楼
magic_seek
2007-03-01
<br/>
<strong>抛出异常的爱 写道:</strong><br/>
<div class='quote_div'><br/>
<div class='quote_div'>
<p>你是我那个项目的客户吧<br/>
这些要求都给你实现了</p>
<p><img src='/javascripts/fckeditor/editor/images/smiley/msn/omg_smile.gif' alt=''/>我是一个程序员,一个java程序员。<br/>
<br/>
</p>
</div>
</div>
<br/>
<br/>
<br/>
<br/>
<strong>抛出异常的爱 写道:</strong><br/>
<div class='quote_div'><br/>
<div class='quote_div'>
<p>你是我那个项目的客户吧<br/>
这些要求都给你实现了</p>
<p><img src='/javascripts/fckeditor/editor/images/smiley/msn/omg_smile.gif' alt=''/>我是一个程序员,一个java程序员。<br/>
<br/>
</p>
</div>
</div>
<br/>
<br/>
<br/>
<br/>
24 楼
8844.43
2007-02-28
jamesby 写道
说到synchronized突然产生了一个想法,controller的代码写成如下这样大家看如何?
public ModuleAndView handleReport(....) { synchronized(session.getAttribute("user")) { //产生报表 } }
使用synchronize肯定会有性能上的问题.即使要用是否也应该这样?
public ModuleAndView handleReport(....) { synchronized(session) { if (session.getAttribute("URL_NAME") != null) { //错误处理. } session.setAttribute("URL_NAME", new Object()); } //产生报表 synchronized(session) { session.removeAtrribute("URL_NAME"); } }
这个问题如果是单机环境,把用户访问的时间戳存到Session中,然后做时间比较应该是最简单的.
如果是集群应用环境,还要考虑各机器之间的Session同步开销问题,需要综合权衡.
23 楼
叶子
2007-02-28
这个...apache/iis相关组件就能解决了吧....何必要java层去搞...
22 楼
basicbest
2007-02-28
你们压力测试怎么做的呢?F5就挂掉有些小小夸张了。
另外,如果同时在线人数少,cache可以用session做,如果在线人数多,就要用到其他机制了。
另外,如果同时在线人数少,cache可以用session做,如果在线人数多,就要用到其他机制了。
21 楼
jamesby
2007-02-28
yiding_he 写道
我觉得这个问题应该放到 Filter 中解决,session 中放一个 HashMap 记录页面 url (去掉“?”之后的内容)和访问时间,用户访问时做一下判断。
恩也可以,其实这反映的程序是否足够健壮,当然如果用户都是比较温和的,则这种考虑是多余的。
感觉这也像是防止系统用户进行Dos攻击:)
20 楼
yiding_he
2007-02-28
我觉得这个问题应该放到 Filter 中解决,session 中放一个 HashMap 记录页面 url (去掉“?”之后的内容)和访问时间,用户访问时做一下判断。
19 楼
抛出异常的爱
2007-02-27
<br/>
<strong>magic_seek 写道:</strong><br/>
<div class='quote_div'>
<p><font>看了这么多回复好像还没有人讲到F5刷屏造成出现异常的本质原因,我这里就说一下吧,虽然也不一定就对。</font></p>
<p><font>Http的请求处理和数据库的处理都是有能力限制的,当用户不断的f5刷屏后,系统就接受了多次Http请求,因为每个请求的处理时间都比较长,所有占用的大量的资源,尤其是数据库的资源,当用户刷屏达到一定次数后达到了数据库的处理能力极限,这样后面的请求就会超时报错。</font></p>
<p>解决这样的问题可以从两个方面来考虑,增加系统处理能力(比如缓存)或者降低资源占用(不要重复执行业务),实现的具体形式是可以有多种多样的,不过需要注意的是用户刷屏后浏览器的前一次请求在浏览器端可能被放弃了,即就算服务器程序返回了结果浏览器可能也不会处理,这时浏览器可能只会处理最后一次访问的结果,所以如果想要用户放弃刷屏最好以最快的速度返回给他一个页面,告诉他不要刷屏了。</p>
<p>但在客户是上帝的今天,告诉他不要刷屏估计也有点不合适,所以在客户端直接屏蔽F5也不妨是一个好办法。</p>
</div>
<br/>
你是我那个项目的客户吧<br/>
这些要求都给你实现了<br/>
<br/>
<strong>magic_seek 写道:</strong><br/>
<div class='quote_div'>
<p><font>看了这么多回复好像还没有人讲到F5刷屏造成出现异常的本质原因,我这里就说一下吧,虽然也不一定就对。</font></p>
<p><font>Http的请求处理和数据库的处理都是有能力限制的,当用户不断的f5刷屏后,系统就接受了多次Http请求,因为每个请求的处理时间都比较长,所有占用的大量的资源,尤其是数据库的资源,当用户刷屏达到一定次数后达到了数据库的处理能力极限,这样后面的请求就会超时报错。</font></p>
<p>解决这样的问题可以从两个方面来考虑,增加系统处理能力(比如缓存)或者降低资源占用(不要重复执行业务),实现的具体形式是可以有多种多样的,不过需要注意的是用户刷屏后浏览器的前一次请求在浏览器端可能被放弃了,即就算服务器程序返回了结果浏览器可能也不会处理,这时浏览器可能只会处理最后一次访问的结果,所以如果想要用户放弃刷屏最好以最快的速度返回给他一个页面,告诉他不要刷屏了。</p>
<p>但在客户是上帝的今天,告诉他不要刷屏估计也有点不合适,所以在客户端直接屏蔽F5也不妨是一个好办法。</p>
</div>
<br/>
你是我那个项目的客户吧<br/>
这些要求都给你实现了<br/>
<br/>
18 楼
magic_seek
2007-02-27
<p><font>看了这么多回复好像还没有人讲到F5刷屏造成出现异常的本质原因,我这里就说一下吧,虽然也不一定就对。</font></p>
<p><font>Http的请求处理和数据库的处理都是有能力限制的,当用户不断的f5刷屏后,系统就接受了多次Http请求,因为每个请求的处理时间都比较长,所有占用的大量的资源,尤其是数据库的资源,当用户刷屏达到一定次数后达到了数据库的处理能力极限,这样后面的请求就会超时报错。</font></p>
<p>解决这样的问题可以从两个方面来考虑,增加系统处理能力(比如缓存)或者降低资源占用(不要重复执行业务),实现的具体形式是可以有多种多样的,不过需要注意的是用户刷屏后浏览器的前一次请求在浏览器端可能被放弃了,即就算服务器程序返回了结果浏览器可能也不会处理,这时浏览器可能只会处理最后一次访问的结果,所以如果想要用户放弃刷屏最好以最快的速度返回给他一个页面,告诉他不要刷屏了。</p>
<p>但在客户是上帝的今天,告诉他不要刷屏估计也有点不合适,所以在客户端直接屏蔽F5也不妨是一个好办法。</p>
<p><font>Http的请求处理和数据库的处理都是有能力限制的,当用户不断的f5刷屏后,系统就接受了多次Http请求,因为每个请求的处理时间都比较长,所有占用的大量的资源,尤其是数据库的资源,当用户刷屏达到一定次数后达到了数据库的处理能力极限,这样后面的请求就会超时报错。</font></p>
<p>解决这样的问题可以从两个方面来考虑,增加系统处理能力(比如缓存)或者降低资源占用(不要重复执行业务),实现的具体形式是可以有多种多样的,不过需要注意的是用户刷屏后浏览器的前一次请求在浏览器端可能被放弃了,即就算服务器程序返回了结果浏览器可能也不会处理,这时浏览器可能只会处理最后一次访问的结果,所以如果想要用户放弃刷屏最好以最快的速度返回给他一个页面,告诉他不要刷屏了。</p>
<p>但在客户是上帝的今天,告诉他不要刷屏估计也有点不合适,所以在客户端直接屏蔽F5也不妨是一个好办法。</p>
17 楼
抛出异常的爱
2007-02-27
newman 写道
屏蔽f5,加什么控制,这些都是“标”,程序员这么处理问题是够失败的,应该把查询的实现机制重新做个考虑,让其不成为问题,而不是有了问题去“补”。一孔之见,不要见怪。
有个东西叫报表软件
是公司花了N大元买来的
如果想要治本让他们把源码拿来我把lessonees关了明年就可以不用付钱了
16 楼
newman
2007-02-27
屏蔽f5,加什么控制,这些都是“标”,程序员这么处理问题是够失败的,应该把查询的实现机制重新做个考虑,让其不成为问题,而不是有了问题去“补”。一孔之见,不要见怪。
15 楼
抛出异常的爱
2007-02-26
chpn 写道
还应先在浏览器中做第一次保护 屏蔽F5 Crl+R
我遇到的是用鼠标点了N回
但是由于报表天生就慢
他就怎么也出不来
点了5分钟把机器玩的差点当了
所以要加缓存
是让他们点了N次之后不用再去数据库里查寻
也能得出结果否则他一看出了结果之后一激动点了其它的的连接回不来了...
当时的查询如果不加条件大约要用2分钟左右.
14 楼
chpn
2007-02-26
还应先在浏览器中做第一次保护 屏蔽F5 Crl+R
13 楼
抛出异常的爱
2007-02-26
jamesby 写道
抛出异常的爱 写道
你的测试如何写啊?(现在比较关心这种特例的测试写法)
这个没有考虑过,哪位给点经验?发表评论
-
weblogic.xml文件代码示例
2008-04-19 10:44 8848<?xml version="1.0" ... -
java 运行版本问题
2008-02-26 08:33 1787在JDK 5.0 上编译好的class,即使未用到任何5.0的 ... -
sqlserver 2000 1433 端口未打开的问题
2008-02-26 08:32 2516需要安装SqlServer 2000 SP4 -
我的一次weblogic 8升级到weblogic9遇到的问题.
2007-04-29 18:17 51071、web应用的乱码问题。 原来的基于weblogic8的应用 ... -
关于手机浏览器的问题?
2007-04-20 12:07 7292现在有一个新的需求,本来目前的基于web的软件开发已经完成,但 ... -
Weblogic下的自动任务
2007-04-03 14:13 2866package com.jamesby.listener; ... -
是用SmartUpload进行文件上传
2007-04-03 14:06 5603package com.jamesby.file.servle ... -
文件下载Servlet
2007-04-03 13:57 4318package com.jamesby.action; ... -
Java 5.0 枚举
2007-03-12 15:09 2172http://www.ibm.com/developerwor ... -
关于web-inf/classes的优先级高于web-inf/lib的优先级
2007-03-08 12:11 4778背景 一直以来都知道web-inf/classes的优先级高 ... -
深入了解WebLogic的类装载机制详解
2007-03-01 19:05 2184http://publish.it168.com/2005/1 ... -
我的一次EJB重构过程
2007-03-01 12:13 2047背景 因为历史遗留问题,代码写的杂乱无章,没有条理,而且该 ... -
自己实现的TransactionManager
2007-02-23 13:53 4784背景: 目前有一个系统,系统已经写好了,但是要不停的添加新的功 ... -
关于Service和DAO层的功能划分的迷惑
2007-02-13 17:27 20594Service 层的代码 public class Gene ... -
关于Service调用Service 的思考
2007-02-10 20:04 5117以前做软件都是随便写几个Service,纯粹为了Service ... -
通过IP访问服务器session失效,计算机名则可以,什么原因?
2007-02-08 17:26 4757最近开发一个新项目采用Spring MVC+Spring+iB ... -
Tomcat 类加载机制
2007-02-08 12:04 1726yahoo中国的一个面试题,转至水木. Tomcat Ser ... -
Weblogic 8.1.3 下数据库连接池的配置问题
2007-02-07 21:00 2553weblogic8.1.3下同一个数据库连接池最好只被一个we ... -
Weblogic 8.1.3 下如何使用JSTL
2007-02-07 20:56 3129一、下载jakarta-taglibs-standard-1. ... -
两级联动Select的TAG实现
2007-02-02 18:12 2017JSP实现太复杂而且不方便,那来个幽雅点的Tag包装! pac ...
相关推荐
js防止恶意刷新,这个函数纯粹是为了让标志稍微短点儿,一堆乱码还特有神秘感,另外,这个UserMd5函数是网上找来的现成儿的 ,屏蔽F5的刷新,屏蔽退格删除键,屏蔽 F5 刷新键,Ctrl + R
今天小编就为大家分享一篇解决vue项目F5刷新mounted里的函数不执行问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
jQuery按F5刷新随机标签云代码是一款随机字体样式标签云特效,支持键盘按F5刷新标签。
CSS智能刷新:CSS变更时,仅自动更新CSS,而不刷新页面 自动打开前次项目:记忆上次关闭前的项目,下次启动F5时自动打开 窗口自动收起:F5在屏幕边缘能自动收起,鼠标靠近又自动展开(类似QQ) 认证后可以: 启动...
F5tmsh操作方法,包含虚拟服务器,地址池等基本配置的详细说明
F5触发的HTTP请求的请求头中通常包含了If-Modified-Since 或 If-None-Match字段,或者两者兼有。CTRL+F5触发的HTTP请求的请求头中没有上面的那两个头 所以说你非常需要此工具!!!!!
F5-steganographyMaster-f5刷新隐写.zip
用js刷新当前页面的几种方法,包括reload方法、replace方法、自动刷新方法 如何实现刷新当前页面呢?借助js你将无所不能。 1,reload 方法,该方法强迫浏览器刷新当前页面。 语法:location.reload([bForceGet]) ...
windows系统电脑桌面上新建文件夹或者新建文件都看不到,要点击鼠标刷新或者摁F5才能看到的解决方法。
详细介绍F5 BIGIP 负载均衡的操作说明
海马福美来F5汽车使用手册用户操作图解驾驶车主车辆说明书pdf电子版下载
自适应屏幕尺寸大小的网页,改变分辨率后 无需F5刷新.zip
F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册F5手册
主要介绍了jquery禁用右键单击功能屏蔽F5刷新的具体实现,需要的朋友可以参考下
让浏览器与编辑器同步,释放F5刷新,支持所有主流浏览器,火狐可以直接本地运行,其他浏览器需要在服务器端
5种网页刷新方法 5种网页刷新方法
F5 服务器负载均衡解决方案
xp ie 图标显示(非快捷方式 F5刷新).reg ,双击导入即可。