Java 有趣的股票行情数据场景

Java 有趣的股票行情数据场景,java,php,c++,python,ruby,Java,Php,C++,Python,Ruby,好吧,这个问题今天一整天都在困扰着我 问题是:我目前通过多播以极高的速率接收股票行情数据。我已经解析了这些数据,并以下面的形式接收它们 -StockID:Int-64 -时间戳:从历元开始的微秒 -价格:Int -数量:整数 每秒会解析数百个这样的数据包。我试图通过将这些数据打包到由stockID(key==stockID)(value==[timestamp,price,quantity]元素的数组)散列的字典/哈希表中来减少存储端的计算量 我还希望每个字典在5分钟的间隔内表示时间戳。当传入数

好吧,这个问题今天一整天都在困扰着我

问题是:我目前通过多播以极高的速率接收股票行情数据。我已经解析了这些数据,并以下面的形式接收它们

-StockID:Int-64
-时间戳:从历元开始的微秒
-价格:Int
-数量:整数

每秒会解析数百个这样的数据包。我试图通过将这些数据打包到由stockID(key==stockID)(value==[timestamp,price,quantity]元素的数组)散列的字典/哈希表中来减少存储端的计算量

我还希望每个字典在5分钟的间隔内表示时间戳。当传入数据的时间戳超过5分钟的时间间隔时,我希望这些新数据进入表示下一个时间间隔的新字典。此外,将在键-1处散列一个特殊键,告诉您该字典每天所属的5分钟间隔(因此,如果您在12:32am收到某个内容,它应该散列到键-1处值为7的字典中,因为这表示该特定日期的12:30am到12:35am的时间间隔)。一旦时间过去,时间过期的dict可以发送到dataWrapper

现在,你可能会想到一些关于现在的想法。但这里有一个很大的限制。进入的时间戳不一定严格增加;但是,如果在间隔结束后等待约10秒,则可以安全地假设传入的每个数据都属于当前间隔。

我之所以要做这些复杂的事情,是为了减少应用程序存储端的计算量。通过上面的设置,我的存储端线程可以简单地迭代字典中的所有键、值对,并将它们存储在存储系统的相同位置,而无需重新打开文件、重新分配组或更改目录

祝你好运!我将非常感谢您的回答(顺便说一句:)

如果你可以用Python发送我一些东西(我正在做的项目),但是我能完全理解java、C++、露比或PHP。 摘要

我试图将股票数据放入字典中,每个字典的间隔为5分钟。数据随附的时间戳决定了它应该放在哪个特定的字典中。这可能相对容易,但时间戳不会随着时间戳的到来而严格增加,因此一旦时间戳超过5分钟,字典就不能立即发送到datawrapper,因为它不能保证在10秒内不再接收任何数据,在这之后可以将其发送到包装器

我只想要任何一种想法、算法或部分实现,可以帮助我安排这项工作。我们如何在时间戳(数据)和实际时间(10秒缓冲区)内切换字典的当前使用

澄清编辑


5分钟的窗口应该是数据驱动的(基于时间戳),但是10秒的超时似乎是时钟时间。

也许我遗漏了什么

看起来,您希望将数据保存在5分钟的存储桶中,但您无法确保在一个存储桶翻滚后10秒钟内保存该存储桶的所有数据


这意味着对于每个仪器,您需要保留当前桶和前一桶。当超过5分钟界限10秒时,您可以发布/写出旧的存储桶。

您的问题是什么?你能简明扼要地表达它吗?是的,我会添加它作为编辑。你的具体问题是什么?我假设你不希望有人免费为你做你的工作。具体的问题是如何处理将数据放入字典的时间安排,每5分钟一次。滑动窗口,用于这种情况的术语。窗口中的每个插槽代表您的时间间隔,窗口大小应该是您希望保留的插槽数,当窗口滑动时,第一个插槽会下降并存档。对不起,我的意思是10秒。只是改变了它,而且实现中也有5分钟的bucket本身就是实际的字典,但是为了便于解释,这不重要。