原理:
利用Queque的先进先出性质,
每次访问 Page 时 Enqueue 当前时间,當 Queue 元素的个数不满足指定的限制次数时,可继续访问,退出判断;
否则取[Peek]队列首元素 ,判断当前时间与 取出的时间比较,若间隔大于指定时间,则说明特定时间内访问次数没有达到限制值,弹出[Dequeue]首元素,退出判断。否则判断间隔是否小于指定时间,若是不可以。若否可以继续访问。
伪代码:
if (queue.Count < num)
then queque.Enqueue(DataTime.Now.Ticks/1000000) return 正常访问
time1=queque.Peek
now=DataTime.Now.Ticks/1000000
queque.Enqueue(now)
if(now-time1>指定时间)
then queue.Dequeue
return now-time1<指定时间
return