草庐IT

java - 如何使用 java 多线程解压巨大的文件夹 - 首选 java8?

引用:http://www.pixeldonor.com/2013/oct/12/concurrent-zip-compression-java-nio/我正在尝试解压5GB的压缩文件,平均需要大约30分钟,这对我们的应用程序来说很长,我正在努力减少时间。我尝试了很多组合,更改了缓冲区大小(默认情况下我的写入block为4096字节),更改了NIO方法、库,所有结果都非常相同。仍然没有尝试的一件事是将压缩文件按block拆分,因此通过多线程block读取它。代码片段是:privatestaticExecutorServicee=Executors.newFixedThreadPool(

java - 带有 NIO 的 REST API?

我曾参与构建一个公共(public)API,该API将具有大量并发访问,我认为其中一个方面是使用异步I/O来考虑可伸缩性方面。最初我想使用Nginx作为HTTP服务器(事件驱动),因为他以异步方式工作,与Tomcat不同。API将用Java构建,为此我认为使用以下组件:Tomcat7-HTTP/Web服务器+Java容器Netty.io还是HttpCore?Resteasy(REST层,带HttpServlet30Dispatcherservlet)MongoDB(带异步Java驱动程序)我看到很多关于Servlet3.0的讨论,因为新版本支持异步请求(使用NIO)。根据我的问题和上面

java - 使用 Java NIO 直接访问 Windows 磁盘

我正在使用一个使用JavaNIO的库来直接将文件映射到内存,但我无法直接读取磁盘。我可以直接使用带有UNC的FileInputStream读取磁盘,比如Filedisk=newFile("\\\\.\\PhysicalDrive0\\");try(FileInputStreamfis=newFileInputStream(disk);BufferedInputStreambis=newBufferedInputStream(fis)){byte[]somebytes=newbyte[10];bis.read(somebytes);}catch(Exceptionex){System.o

java - FileChannel.transferTo 用于 Windows 中的大文件

使用JavaNIO使用可以更快地复制文件。我主要通过互联网找到了两种方法来完成这项工作。publicstaticvoidcopyFile(FilesourceFile,FiledestinationFile)throwsIOException{if(!destinationFile.exists()){destinationFile.createNewFile();}FileChannelsource=null;FileChanneldestination=null;try{source=newFileInputStream(sourceFile).getChannel();desti

java - 泽西客户端非阻塞

产生大量线程从来都不是一个好主意(当你创建太多线程时,你可能会耗尽内存)。通常,Jersey需要为每个请求创建一个线程。情况似乎是这样,无论我是否使用async()(Jersey在其中为我创建线程-我已经在调试器中对此进行了调查),或者(显然我必须自己创建线程)。所以这是一个不够好的具体情况:我正在以高达500个请求/秒的速度向远程服务器发送HTTP消息。但是由于响应可能需要一些时间才能到达(我计算最多30秒),线程总数很容易达到数千个(此时,JVM进程通常会崩溃)。而且,创建这么多线程简直是疯了。处理该负载的可用处理器/网络/操作系统资源实际上应该是小菜一碟。所以我想做的是只触发请求

java - 使用 Netty 和 NIO 的高并发 HTTP

我正在处理exampleNettyHTTPClientcode为了在并发的线程环境中发出http请求。但是,我的系统在相当低的吞吐量下完全崩溃(有一系列异常)。几乎是伪代码:ClientBootstrapbootstrap=newClientBootstrap(newNioClientSocketChannelFactory())bootstrap.setPipelineFactory(newHttpClientPipelineFactory());ChannelFuturefuture=bootstrap.connect(newInetSocketAddress(host,port)

Java 7 NIO.2 Files.getLastModifiedTime 时区

我正在编写一个程序,需要确定文件/目录的最后修改时间。我想使用JodaTime来处理这个时间,我正在使用Java7NIO.2类Files来获取文件的上次修改时间。它的getLastModifiedTime()方法返回一个FileTime类的实例,它有方便的方法toMillis(),我将其结果传递给JodaTimeDateTime类构造函数:newDateTime(Files.getLastModifiedTime(path).toMillis());但是,我觉得我做错了,因为DateTime(long)构造函数明确提到DateTime实例将使用默认时区创建。但是,FileTime文档并

java - 在 Java 中连接两个大文件(超过 1.5GB)的最有效(最快)的方法是什么?

我使用了此处的技术并在70秒内连接了两个1.5GB的文件。http://nadeausoftware.com/articles/2008/02/java_tip_how_read_files_quickly我的代码涉及使用具有内存映射的FileChannels和具有8KB缓冲区大小的ByteBuffers。我怎样才能提高这个速度?Filefile=newFile(binDirectory+"/donjon.avi");FileoFile=newFile(binDirectory+"/donjon2.avi");FileInputStreamis=newFileInputStream(f

删除 lastSuccessful/lastStable jenkins 时出现 java.nio.file.DirectoryNotEmptyException

运行jenkins作业时,控制台报错:java.nio.file.DirectoryNotEmptyException:C:\jenkins\jobs\MyJob\lastSuccessfulatsun.nio.fs.WindowsFileSystemProvider.implDelete(UnknownSource)atsun.nio.fs.AbstractFileSystemProvider.deleteIfExists(UnknownSource)atjava.nio.file.Files.deleteIfExists(UnknownSource)atsun.reflect.Na

java - 随机访问文件 FileLock : java. io 与 java.nio

我注意到java.io和java.nio随机访问文件的实现在FileLocks方面略有不同。得到处理。似乎(在Windows上)java.io为您提供强制文件锁定,而java.nio分别在请求时为您提供建议文件锁定。强制文件锁意味着锁适用于所有进程,建议适用于遵循相同锁定协议(protocol)的行为良好的进程。如果我运行以下示例,我可以手动删除*.nio文件,而*.io文件拒绝删除。importjava.io.*;importjava.lang.management.ManagementFactory;importjava.nio.*;importjava.nio.channels.