我有很少的JAVA编码经验(在大学的某些课程)但在数据收集方面没有。
我想监控CAN总线上发送的所有消息&暂时存储这些以过滤它们,以便我可以隔离一些特定的消息。
这意味着我必须每秒存储最多17543条1字节的消息。我想存储 - 至少 - 几十秒钟。
最好的方法是什么?
我可以将所有这些存储在一个数组中吗? 使用数据库(例如Hibernate)会更好吗?
我知道这是开放式的,但我想知道什么是可能的,以及处理这个问题的最佳方向是什么。
答案 0 :(得分:1)
所以,你得到(最多)每秒17,543条消息,每条消息只有1个字节,你需要存储几十秒?
这不是很多数据,您可以轻松地将其存储在内存中的数组中。假设您要存储1分钟的消息,即17,543 x 60秒=小于1 MB的数据。这是现代计算机上的花生。数据库太过分了。
答案 1 :(得分:1)
Hibernate不是数据库。这是一个ORM。
20 seconds = 20 * 17543 bytes
= 350860 bytes
= 350 KB
= nothing.
将所有内容存储在内存中对于如此少量的数据不会有问题。
答案 2 :(得分:0)
我必须每秒存储最多17543条1字节的消息。我想存储 - 至少 - 几十秒钟。
将消息存储在circular buffer中可能有意义。这可以使用数组轻松实现。
30秒的数据需要大约500KB的存储空间。