我可以使用哪些工具或技术来删除缓存的文件内容,以防止我的性能结果出现偏差?我相信我需要完全清除或有选择地删除有关文件和目录内容的缓存信息.
我正在开发的应用程序是一个专门的压缩实用程序,并且预计会做很多工作来读取和编写操作系统最近没有触及的文件,并且其磁盘块不太可能被缓存.
当我重复分析执行文件处理工作的不同策略的任务时,我希望消除IO时间中看到的可变性.
我主要对Windows XP的解决方案感兴趣,因为那是我的主要开发机器,但我也可以使用linux进行测试,所以我也对这个环境的答案感兴趣.
我尝试了SysInternals CacheSet,但是在重新读取我刚读过几次的文件时,单击"清除"不会导致可测量的增加(在冷启动后恢复到计时).
我确实检查了其他问题; 这个问题的重点是以最有效的方式解决这个特定问题.
有时您希望创建一个具有指定长度的新字符串,并使用填充整个字符串的默认字符.
也就是说,如果你可以new String(10, '*')
从那里创建一个新的字符串会很酷,长度为10个字符都有*.
因为这样的构造函数不存在,并且您无法从String扩展,所以您要么创建一个包装类,要么为您执行此方法.
此刻我正在使用这个:
protected String getStringWithLengthAndFilledWithCharacter(int length, char charToFill) {
char[] array = new char[length];
int pos = 0;
while (pos < length) {
array[pos] = charToFill;
pos++;
}
return new String(array);
}
Run Code Online (Sandbox Code Playgroud)
它仍然没有任何检查(即,当长度为0时,它将不起作用).我首先构造数组,因为我相信它比使用字符串连接或使用StringBuffer更快.
其他人有更好的解决方案吗?
我怎么能改写这个:
for (int i = 0; i < numberOfSpaces; i++) {
System.out.print(" ");
}
Run Code Online (Sandbox Code Playgroud)
用String.format()
?
PS
我很确定这是可能的,但javadoc有点令人困惑.
我用Java启动子进程如下:
final String[] cmd = {"<childProcessName>"};
Process process = Runtime.getRuntime().exec(cmd);
Run Code Online (Sandbox Code Playgroud)
它现在在后台运行.一切都好又好.
如果我现在的程序崩溃(这是仍然在开发中:-))子进程似乎仍流连.如何在父Java进程终止时自动结束?
如果它有帮助,我使用的是Mac OS X 10.5
我编写了包装其他流的后台InputStream
(和OutputStream
)实现,并在后台线程上预读,主要允许解压缩/压缩在解压缩流处理的不同线程中发生.
这是一个相当标准的生产者/消费者模型.
这似乎是一种简单的方法,可以通过简单的读取,处理和写入数据的流程来充分利用多核CPU,从而更有效地利用CPU和磁盘资源.也许"高效"并不是最好的词,但它提供了更高的利用率,对我来说更感兴趣,减少了运行时间,而不是直接从a读取ZipInputStream
并直接写入ZipOutputStream
.
我很高兴发布代码,但我的问题是我是否正在重新发明现有(和更多运行)库中现有的东西?
编辑 - 发布代码......
我的代码BackgroundInputStream
是在下面(BackgroundOutputStream
非常相似),但有一些方面我想改进.
BackgroundInputStream
,那么backgroundReaderThread
它将永远存在.eof
需要改进.Executor
.close()
方法应该通知后台线程,并且不应该关闭包装的流,因为包装的流应该由从其读取的后台线程拥有.package nz.co.datacute.io;
import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.concurrent.LinkedBlockingQueue;
public class BackgroundInputStream extends InputStream {
private static final int DEFAULT_QUEUE_SIZE = 1;
private static final int DEFAULT_BUFFER_SIZE = 64*1024;
private final int queueSize;
private final int bufferSize;
private volatile boolean eof …
Run Code Online (Sandbox Code Playgroud) java compression multithreading inputstream producer-consumer
我在本地postgres.config中将'max_prepared_transactions'设置为20,但事务失败并出现以下错误跟踪(但仅限在Linux上).因为在Windows中,相同的代码无缝地工作,如果这不是许可问题,我就会徘徊.什么是解决方案?谢谢彼得
372300 [Atomikos:7] WARN atomikos - XA resource 'XADBMS': rollback for XID '3137332E3230332E3132362E3139302E746D30303030313030303037:3137332E3230332E3132362E3139302E746D31' raised -3: the XA resource detected an internal error org.postgresql.xa.PGXAException: Error rolling back prepared transaction at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:357) at com.atomikos.datasource.xa.XAResourceTransaction.rollback(XAResourceTransaction.java:873) at com.atomikos.icatch.imp.RollbackMessage.send(RollbackMessage.java:90) at com.atomikos.icatch.imp.PropagationMessage.submit(PropagationMessage.java:86) at com.atomikos.icatch.imp.Propagator$PropagatorThread.run(Propagator.java:62) at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:651) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:676) at java.lang.Thread.run(Thread.java:595) Caused by: org.postgresql.util.PSQLException: ERROR: prepared transaction with identifier "1096044365_MTczLjIwMy4xMjYuMTkwLnRtMDAwMDEwMDAwNw==_MTczLjIwMy4xMjYuMTkwLnRtMQ==" does not exist at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2062) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1795) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257) at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:479) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:353) at org.postgresql.jdbc2.AbstractJdbc2Statement.executeUpdate(AbstractJdbc2Statement.java:299) at org.postgresql.xa.PGXAConnection.rollback(PGXAConnection.java:347)
我是模拟世界的新手,想学习程序员如何在java中开发真正的模拟项目.我会用eclipse.任何人都可以指出我需要知道的其他事情(例如其他包裹,软件等及其目的)?
我担心这个问题可能看起来有点模糊,因为我不清楚我在谈论哪种类型的项目.但作为一个新手,让我说开始如何编写一个模拟项目.
有没有什么方法可以让Eclipse在引用库的附加源中进行搜索?
我正试图找到public static final String
使用常量的所有地方.
我试图在Postgres数据库中删除一些表.对于其中一些表,我得到一个事务超时(即使它们是空的).
这是我的桌子
CREATE TABLE many_2_many_table (
id integer NOT NULL,
object_1_id integer NOT NULL,
object_2_id integer NOT NULL);
Run Code Online (Sandbox Code Playgroud)
id是主键,object_1_id和object_2_id都是外键.
现在桌子是空的,我想放弃它.Drop和Truncate都给我转换超时.我已经能够放弃它和我的其他postgres环境.超时是30秒后.
据我所知,Java的File类不支持更改文件的权限和上次修改日期.有没有正确的方法以跨平台的方式做到这一点?
我知道“XMLHttpRequest”对象支持一个方法“open”,它有一个用户名和密码的可选参数。我刚刚发现这些参数可以作为需要基于容器的身份验证的请求的提供者。
这是方法签名:
open(method, url, async, username, password)
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我了解基于容器的身份验证的含义吗?
java ×6
file ×2
postgresql ×2
string ×2
atomikos ×1
caching ×1
compression ×1
constants ×1
containers ×1
disk ×1
eclipse ×1
format ×1
http ×1
inputstream ×1
javascript ×1
jquery ×1
performance ×1
permissions ×1
runtime ×1
search ×1
shutdown ×1
simulation ×1
subprocess ×1
timeout ×1
xa ×1