V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nbstoner
V2EX  ›  算法

[ Java 向] 程序算法,连续信号处理场景。(连续性和概率性)

  •  
  •   nbstoner · 2017-08-10 14:23:46 +08:00 · 3442 次点击
    这是一个创建于 2673 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基本场景:从消息队列中拿到消息。假设消息只有 0 和 1。 需求场景:设定两组阀值参数。1:某个信号连续出现 N 次后达到预警阀值。2:某个信号在连续 m 次中至少出现 n 次即达到预警阀值。

    希望得到的建议: 以 JAVA 环境为基础,给出个点算法上简单的实现或者参考方案。

    3 条回复    2017-08-10 16:38:15 +08:00
    whatot
        1
    whatot  
       2017-08-10 14:41:12 +08:00
    第一个比较简单,加两个变量,一个记录上一次信号,一个记录上一次信号的累计次数,按情况判定就行了。

    第二个就是限流的通用方法,比如用令牌桶算法,自己设计如何产生令牌,一旦消费端获取令牌失败则达到预警。
    whatot
        2
    whatot  
       2017-08-10 14:57:22 +08:00   ❤️ 1
    处理第二个问题的简单方法,可以使用一个长度为 m 的 queue,每次新信号,
    如果 queue 没满,只增加信号计数;
    如果 queue 已满,出栈最旧的一个,减对应计数,然后入栈,增对应计数;
    入栈完毕,检查最新计数是否达到阈值 n。
    18665572404
        3
    18665572404  
       2017-08-10 16:38:15 +08:00
    使用 CountDownLatch ?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5928 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:51 · PVG 09:51 · LAX 17:51 · JFK 20:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.