草庐IT

java - 如何在 Perl 中设置文件读取缓冲区大小以针对大文件对其进行优化?

我知道Java和Perl在读取文件时都非常努力地尝试找到一个适合所有默认缓冲区大小的统一尺寸,但我发现他们的选择越来越过时,并且在更改默认选择时遇到问题它涉及到Perl。对于Perl,我相信它使用8K默认缓冲区,类似于Java的选择,我无法使用perldoc网站搜索引擎(真正的Google)找到关于如何增加默认文件输入缓冲区大小的引用,比如64K。从上面的链接中,显示8K缓冲区如何无法缩放:Iflinestypicallyhaveabout60characterseach,thenthe10,000-linefilehasabout610,000charactersinit.Readi

java - 要从 Java 中的 DataInputStream 读取的未知缓冲区大小

我有以下声明:DataInputStreamis=newDataInputStream(process.getInputStream());我想打印这个输入流的内容,但我不知道这个流的大小。我应该如何读取这个流并打印它? 最佳答案 所有流的共同点是长度是事先不知道的。使用标准InputStream通常的解决方案是简单地调用read直到-1被退回。但我假设,你已经包装了一个标准的InputStream用DataInputStream有一个很好的理由:解析二进制数据。(注意:Scanner仅适用于文本数据。)JavaDoc对于DataI

java - 如何在没有同步方法的情况下从不同的线程安全地刷新缓冲区?

有多个线程,比如B、C和D,每个线程都以高频率将小数据包写入缓冲区。他们拥有自己的缓冲区,没有其他人可以写入它。写作必须尽可能快,我已经确定使用synchronized会使它慢得令人无法接受。缓冲区只是字节数组,以及第一个空闲元素的索引:byte[]buffer;intindex;publicvoidwrite(byte[]data){//somecheckingthatthebufferwon'toverflow...notimportantnowSystem.arraycopy(data,0,buffer,index,data.length);index+=data.length;

java - FileInputStream 是否已经在使用缓冲区?

当我使用FileInputStream读取一个对象(比如几个字节)时,底层操作是否涉及:1)读取磁盘的整个block,这样如果我随后执行另一个读取操作,就不需要真正的磁盘读取,因为文件的那部分已经在上次读取操作中获取了吗?或2)由于FileInputStream不做任何缓冲而应该使用bufferedInputStream来实现(1)的效果,因此发生新的磁盘访问?我认为,由于FileInputStream使用read系统调用并且它只从硬盘读取一组页面,因此必须进行一些缓冲。 最佳答案 FileInputStream将进行底层nativ

java - 事务(进程 ID)在锁定时陷入僵局 |与另一个进程的通信缓冲区资源,并已被选为死锁牺牲品

我有一个Java程序可以更新MSSQL中的表。Web用户也可以通过在ColdFusion中创建的网站访问此表最近我在以下行时遇到此错误:sql_stmt.executeUpdate("updaterandom_selection"+"setforecasted=1where"+"randnum="+ora_rs.getString("RANDNUM")+"andquarter="+quarter+"andozip3="+ora_rs.getString("OZIP3"));出错的CF查询是:INSERTINTOforecast_entryVALUES()是什么导致了这个错误,我该如何解

java - FileWriter 是否使用缓冲区? (它的行为就像我的例子一样)

我正在使用FileWriter,我注意到了奇怪的行为。我自己缓冲我的Collection和我使用的每x行IOUtils.writelines(myList,"\n",writer);它不写入文件。我继续用更多行调用它,只有在它非常满时才会写入文件。它使用缓冲区吗?我在它的文档中找不到它。 最佳答案 theFileWriterclassoverview的第二句说:Theconstructorsofthisclassassumethatthedefaultcharacterencodingandthedefaultbyte-buffer

Java - 什么时候释放直接缓冲区?

既然脱离了jvmheap&gc,那么什么时候释放呢?或者,它一直保留到进程终止?我已经检查过:howtogarbagecollectadirectbufferjavaDeallocatingDirectBufferNativeMemoryinJavaforJOGLByteBuffer.allocate()vs.ByteBuffer.allocateDirect()但是所有的答案都是模糊的,没有一个明确的回答,有明确的答案吗?至少对于64位Linux上的Java8。 最佳答案 DirectByteBuffer不使用旧的Java终结器。

java - 我如何安全地处理 JVM 上的 key Material 缓冲区并将其归零?

我正在为执行加密操作的JVM(在Clojure中)编写软件。具体来说,给定secret输入、secretkey、非secret盐、非secret个性化,它使用BLAKE2导出512位keyMaterial。然后,它使用Arrays类中的工具将该数组分成两个256位block。(source)该操作的实际实现存在于libsodium中所以它是在C中实现的。我正在使用caesium访问它,它是kalium的包装器,一个使用jnr-ffi的库调用底层C实现。由于上面的所有缓冲区都有敏感的keyMaterial,我想确保它已从内存中清除。我不确定如何在JVM上安全地执行此操作(哎呀,我什至不确

java - 压缩 java nio 直接缓冲区

gzip输入/输出流不在Java直接缓冲区上运行。是否有任何直接在直接缓冲区上运行的压缩算法实现?这样就没有将直接缓冲区复制到java字节数组进行压缩的开销。 最佳答案 我并不是要贬低你的问题,但这真的是你程序中的一个很好的优化点吗?您是否通过分析器验证您确实有问题?您提出的问题意味着您没有进行任何研究,而只是猜测您将通过分配一个字节[]来遇到性能或内存问题。由于此线程中的所有答案都可能是某种形式的黑客攻击,因此在解决问题之前,您应该确认您确实有问题。回到问题,如果您想在ByteBuffer中“就地”压缩数据,答案是否定的,Java

java - 在 Java 中寻找简单的持久消息缓冲区

我正在寻找一个简单的持久缓冲区作为Java应用程序中JSON消息的临时存储。内存使用量应该相对恒定,而不取决于缓冲区中的消息数量。如果能够重播过去某个时间点的消息,那就太好了。删除旧消息应该是有效的。需要能够处理1m消息/小时。目前,我的应用程序使用本地RabbitMQ代理将消息铲到远程RabbitMQ代理。当远程代理关闭或不接受消息时,本地RabbitMQ代理的内存使用量随着队列长度的增加而增加,最终它停止接受消息。我想将其换成基于本地磁盘的缓冲区和一个将消息复制到远程RabbitMQ代理的线程。有人有什么想法吗?我看过Kafka,但它对我的用例来说似乎有点矫枉过正。MongoDB是