利用静态HashMap及系统时间限制用户请求次数

限制用户在1秒中只允许发出10次webservice请求

java.util.Date date=new java.util.Date();
if(hashtime.get("time")==null&&hash.get("count")==null){
hashtime.put("time", date.getTime());
hash.put("count", 0);
logger.info(hash.get("time"));
}
//拿出数量,记录当前时间
if(hash.get("count")!=null){
int count=hash.get("count");
long tim=hashtime.get("time");
logger.info("记录时间:"+tim);
count=hash.get("count");
long nowdate=date.getTime();
//如果 当前时间大于 记录的时间加1秒,即程序运行到了下一秒,则重新初始化hashmap
if(nowdate>=tim+1000){
hashtime.put("time", nowdate);
hash.clear();
hash.put("count", 0);
}
count=hash.get("count");
tim=hashtime.get("time");
count++;
hash.put("count", count);
//如果当前的count大于10,并且当前时间在tim和tim+1000之间
if(count>10&&tim<=nowdate&&nowdate<=tim+1000){
logger.info("当前时间:"+date.getTime());
logger.info("count="+count);
return "您已经请求超过10次";
}
}
System.out.println("当前1秒内,若访问超过10次,则不会打印该句.10次以后会打印该句,下一秒重新计数");


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值