12
返回列表 发新帖
楼主: 翻滚吧豆子
跳转到指定楼层
上一主题 下一主题
收起左侧

野的公司店面简报

🔗
LUOLUOLNSH 2017-10-12 11:18:09 | 只看该作者
全局:
Booky 发表于 2017-4-8 07:36
太幸福了面到rate limiter!pass稳稳的!

补充内容 (2017-4-8 08:06):

想问问lz你说的方法是这样吗?我看了些面经 但是不知道理解的对不对
public class RateLimiter {
        class Request{
               
        }
        class RequestWrapper {
                Request rq;
                int timestamp;
                public RequestWrapper(Request rq, int timestamp) {
                        this.rq = rq;
                        this.timestamp = timestamp;
                }
        }
        int limited;
        Map<String, Queue<RequestWrapper>> map;
        public RateLimiter() {
                limited = 50;
                map = new HashMap<String, Queue<RequestWrapper>>();
        }
        //每次进queue之前,把队列里过期的request wrapper出队(根据时间是否离现在时间超过一秒),然后查看当前queu的size是否超过50,不是的话,就选择进队
        public boolean shouldPrintMessage(Request rq, int timestamp, String ip) {
                RequestWrapper newrw = new RequestWrapper(rq, timestamp);
                if(!map.containsKey(ip)) {
                        Queue q = new LinkedList<RequestWrapper>();
                        q.offer(newrw);
                        map.put(ip, q);
                } else {
                        Queue q = map.get(ip);
                        while(!q.isEmpty()) {
                                RequestWrapper rw = (RequestWrapper) q.peek();
                                if(rw.timestamp < timestamp) {
                                        q.poll();
                                }
                        }
                        if(q.size() >= limited) {
                                return false; // or throw exception
                               
                        }
                        q.offer(newrw);
                        map.put(ip, q);
                }
                return true;
        }
}
回复

使用道具 举报

🔗
sofar 2017-10-30 09:38:44 | 只看该作者
全局:
从构架上来说, 就是已个“ring buffer", 加俩指针。如果数据大而且频繁, ring buffer可以避免memory fragment。 你这么已说人家就觉得你牛了。
回复

使用道具 举报

🔗
UC小王子 2017-11-15 10:30:49 | 只看该作者
全局:
请问lz 是不是还得用一个count 计数
回复

使用道具 举报

🔗
UC小王子 2017-11-15 11:11:03 | 只看该作者
全局:
翻滚吧豆子 发表于 2017-7-12 12:38
要求滚动窗口,token buckt就不行

这是因为考虑到token bucket的burst rate 所以不能用token bucket么
回复

使用道具 举报

🔗
 楼主| 翻滚吧豆子 2017-11-17 13:11:07 | 只看该作者
全局:
sherlockzzq 发表于 2017-11-15 11:11
这是因为考虑到token bucket的burst rate 所以不能用token bucket么

token bucket 太简单了   一点都不好玩吧。。。
算法题在现实中本来就是写一辈子都遇不到的玩意儿
回复

使用道具 举报

🔗
 楼主| 翻滚吧豆子 2017-11-17 13:11:23 | 只看该作者
全局:
sherlockzzq 发表于 2017-11-15 10:30
请问lz 是不是还得用一个count 计数

不需要了啊
回复

使用道具 举报

🔗
UC小王子 2017-11-18 00:57:28 | 只看该作者
全局:

那请问如何判断新的请求是否到达最大的限度了啊
回复

使用道具 举报

🔗
 楼主| 翻滚吧豆子 2017-11-18 13:33:51 | 只看该作者
全局:
sherlockzzq 发表于 2017-11-18 00:57
那请问如何判断新的请求是否到达最大的限度了啊

看回帖  8个字  8个字 8个字
回复

使用道具 举报

🔗
crazystonesss 2018-1-17 13:09:57 | 只看该作者
全局:
翻滚吧豆子 发表于 2017-11-18 13:33
看回帖  8个字  8个字 8个字

楼主请问这个 题目描述哪里能看到? 谢谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表