Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java中数据发送缓冲区的一般实现是什么?_Java_Buffer - Fatal编程技术网

java中数据发送缓冲区的一般实现是什么?

java中数据发送缓冲区的一般实现是什么?,java,buffer,Java,Buffer,我正在设计一个以固定间隔发送文本的应用程序。在此时间间隔内,应用程序将收集数据并在发送数据之前将其临时存储在缓冲区中(并清除数据库的内容) 我尽量不把它们存储在内存中 目前我正在考虑使用H2嵌入式数据库 我们通常在Java中使用什么来实现缓冲区?纯文本文件?日志文件?是否使用内存缓冲区还取决于应用程序的需要。 例如,如果您的应用程序必须可靠,并在出现导致崩溃的问题时管理恢复,那么更好的方法是使用文件,如果某些数据尚未处理,您可以进行恢复 对于此类需求,还有(面向消息的middlware)选项,此

我正在设计一个以固定间隔发送文本的应用程序。在此时间间隔内,应用程序将收集数据并在发送数据之前将其临时存储在缓冲区中(并清除数据库的内容)

我尽量不把它们存储在内存中

目前我正在考虑使用H2嵌入式数据库


我们通常在Java中使用什么来实现缓冲区?纯文本文件?日志文件?

是否使用内存缓冲区还取决于应用程序的需要。 例如,如果您的应用程序必须可靠,并在出现导致崩溃的问题时管理恢复,那么更好的方法是使用文件,如果某些数据尚未处理,您可以进行恢复


对于此类需求,还有(面向消息的middlware)选项,此解决方案提供了许多优点,包括可靠性。但是,如果您不需要可靠性,并且只存在一些数据交换,则无需使用MOM。

阅读您的评论后,我认为解决您的问题的实施方案可以是:

创建一个事务性服务,在其中收集所有必要的信息,并将其存储在 一个StringBuilder,发送信息并最终清除数据库中的内容,如果出现任何问题,您的数据库将保留信息,换句话说,是一个可靠的服务

如果您使用多个线程来恢复信息,请记住StringBuilder是不同步的,因此如果您的解决方案有多个线程在StringBuilder上工作,请不要忘记在内部同步您的类或使用StringBuffer(请记住,这是线程安全的,但速度较慢)


我希望这会有所帮助。

通常使用缓冲区,而不是写入文件系统或存储在数据库中。为什么要避免使用内存缓冲区?通常,您会在内存中进行缓冲,以确保有足够的内存来执行此操作。你只会使用一个文件或数据库来存储大量数据,这些数据会被长期存储。我的应用程序会收集另一个正在运行的程序的统计数据,这可能会生成大量数据。如果时间间隔足够短,内存缓冲区将是一个不错的选择。由于此应用程序允许用户设置间隔,因此可能会遇到内存不足的问题。我认为,如果要使用内存缓冲区,可以使用StringBuilder。请记住,这个类是不同步的,所以如果您有多个线程访问它,不要忘记在内部同步您的类。如果您使用的是JDK1.5或更新版本,Mi建议是有效的。另一方面,您仍然拥有StringBuffer实现(线程安全但速度较慢)。我希望这能有所帮助。JMS似乎有些过分了。我的应用程序是一个收集运行程序信息的小型实用程序。是的,因此我在回答中指定,如果只是一个小型应用程序,则不需要MOM:)