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

2017-08-10 14:23:46 +08:00
 nbstoner

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

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

3273 次点击
所在节点    算法
3 条回复
whatot
2017-08-10 14:41:12 +08:00
第一个比较简单,加两个变量,一个记录上一次信号,一个记录上一次信号的累计次数,按情况判定就行了。

第二个就是限流的通用方法,比如用令牌桶算法,自己设计如何产生令牌,一旦消费端获取令牌失败则达到预警。
whatot
2017-08-10 14:57:22 +08:00
处理第二个问题的简单方法,可以使用一个长度为 m 的 queue,每次新信号,
如果 queue 没满,只增加信号计数;
如果 queue 已满,出栈最旧的一个,减对应计数,然后入栈,增对应计数;
入栈完毕,检查最新计数是否达到阈值 n。
18665572404
2017-08-10 16:38:15 +08:00
使用 CountDownLatch ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/381915

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX