实现滑动窗口我写了这样的:
import java.text.ParseException;
import java.util.Arrays;
import java.util.List;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class PreProcess {
public static <T> Stream<List<T>> createSlidingWindow(List<T> list, int size) {
if(size > list.size())
return Stream.empty();
return IntStream.range(0, list.size()-size+1)
.mapToObj(start -> list.subList(start, start+size));
}
public static void main(String args[]) throws ParseException {
Stream<List<Integer>> sw = createSlidingWindow(Arrays.asList(1, 2, 3, 4 ,5) , 3);
sw.forEach(x -> {
System.out.println(x);
});
}
}
执行此代码将打印:
[1, 2, 3]
[2, 3, 4]
[3, 4, 5]
我正在尝试修改,以便每个窗口之间没有重叠,这样大小为3的滑动窗口将返回:
[1, 2, 3]
[4, 5]
我想我需要修改<code>start</code>,使其指向下一个窗口,但我不确定如何使用流来实现这一点。
我想这就是你想要的:
public static <T> Stream<List<T>> createSlidingWindow(List<T> list, int size) {
return IntStream.range(0, list.size())
.mapToObj(i -> list.subList(
Math.min(list.size(), size * i),
Math.min(list.size(), size + (size * i))))
.filter(l -> !l.isEmpty());
}
IntStream#范围(int, int)
确保从左侧int
到右侧(不包括)的有序数字序列,以迭代索引。随后的mapToObj
使用List#subList(int, int)
根据“循环”中的当前轴(i
)位置从原始列表中定义块或分区。这是输出:
[1, 2, 3]
[4, 5]
我的算法不是最有效/简洁的,因为您需要使用< code >过滤掉空的块。过滤器(l -
我有以下要求: 从酒吧子主题读取事件 取一个持续时间为30分钟、周期为1分钟的窗口 在该窗口中,如果给定id的3个事件都匹配某个谓词,那么我需要在不同的pub子主题中引发一个事件 应该在第3个事件进入分组id时立即引发该事件,因为这是为了检测欺诈行为。在一个窗格中,有许多ID,其中有3个事件与我的谓词匹配,所以我可能需要在每个窗格中发出多个事件 由于滑动窗口重叠,输出PCollection包含重复
我在 Java 中有以下场景: 1生产者线程将事件对象存储到队列中。阻塞它不是一个选项。它应该始终将每个元素存储在队列的末尾并退出(因此没有有界队列)。 1个消费者线程等待队列中有WINDOW_SIZE数量的事件。然后它应该从队列中检索所有WINDOW_SIZE事件进行处理,但只删除其中的一半(即WINDOW_SIZE/2),重叠率为50%。 我的问题是,您将使用哪个(并发)集合来高效地实现这一点
问题内容: 我有一个Python / Linux应用程序,它在GTK窗口中显示我需要的信息。为了便于讨论,它的行为应完全像坞站一样- 存在于所有虚拟桌面上,并且最大化的窗口不与之重叠。 第一点很容易,但是我花了几天的时间在显示器上砸头,以求得到第二点- 防止重叠。如果另一个窗口最大化,我的应用程序将不被覆盖。仅将“始终放在顶部”是不够的,因为其他窗口仅位于我的信息栏后面,而不是停在其边缘。 简而言
假设我有一个每1分钟开始的2小时窗口。下一步是应用GroupBy转换。 如果能解释这一点,我将不胜感激。无法真正找到相关信息
选择无状态滑动窗口操作的一些注意事项是什么(例如,通过updateStateByKey或新mapStateByKey)选择保持状态(例如通过updateStateByKey或新mapStateByKey)时,使用火花流处理连续的有限事件会话流? 例如,考虑以下场景: 一种可穿戴设备跟踪由穿戴者进行的体育锻炼。该装置自动检测何时开始锻炼,并发出信息;在锻炼过程中发出附加信息(如心率);最后,当练习完
介绍 将TCP与UDP这样的简单传输协议区分开来的是它传输数据的质量。TCP对于发送数据进行跟踪,这种数据管理需要协议有以下两大关键功能: 可靠性:保证数据确实到达目的地。如果未到达,能够发现并重传。 数据流控:管理数据的发送速率,以使接收设备不致于过载。 要完成这些任务,整个协议操作是围绕滑动窗口确认机制来进行的。因此,理解了滑动窗口,也就是理解了TCP。 更多信息 TCP面向流的滑动窗口确认机