gpt4 book ai didi

c# - 跟踪和检测一系列缺失数据的技术(例如安全日志数据)

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:02:32 25 4
gpt4 key购买 nike

我有一个数据流,它向我发送索引不断增加的数据 (n++)。某些数据可能会乱序发送、丢失或需要重新传输。

示例

  1. 假设我有一个由我的应用监控的安全日志文件。坏人有可能抑制或阻止一些条目的传输。我想知道这个事实。

  2. 还假设此数据可能会乱序发送到日志记录器。

这个逻辑似乎无处不在,我不想重新发明轮子,做一些效率低下的事情。

问题

我应该如何实现(或存在什么引用实现)允许我跟踪无序接收的数据并且可能包含序列中的缺失数据?

(也感谢您协助标记此问题)

最佳答案

好吧,我是用链表做的。 必须在某处为此进行过先验工作...无论哪种方式,这都针对本质上或多或少增加的输入序列进行了优化。

如果您发现任何错误或我可以做的改进,请告诉我

    public class ContiguousDataValue
{
public int UpperInt { get; set; }
public int LowerInt { get; set; }

public override string ToString()
{
return "Upper" + UpperInt + " Lower" + LowerInt;
}
}


public class ContiguousData
{
LinkedList<ContiguousDataValue> ranges = new LinkedList<ContiguousDataValue>();

public void AddValue(int val)
{
for (LinkedListNode<ContiguousDataValue> range = ranges.Last; range != null; range = range.Previous)
{
if (val > range.Value.UpperInt)
{
// increment current node if applicable
if (val == range.Value.UpperInt + 1)
range.Value.UpperInt = val;
else
ranges.AddAfter(range, new ContiguousDataValue() { UpperInt = val, LowerInt = val });
return;
}
else if (val < range.Value.LowerInt)
{
if (val == range.Value.LowerInt - 1)
{
range.Value.LowerInt = val;
return;
}
else
{
continue;
}
}
}
// Anything that reaches this line is either a very new low value, or the first entry
ranges.AddLast(new ContiguousDataValue() { UpperInt = val, LowerInt = val });
}
}

关于c# - 跟踪和检测一系列缺失数据的技术(例如安全日志数据),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10565487/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com