我在配备2.7 GHz Intel Core i7的笔记本电脑上运行以下Java代码.我打算让它测量完成2 ^ 32次迭代循环所需的时间,我预计大约需要1.48秒(4/2.7 = 1.48).
但实际上它只需要2毫秒,而不是1.48秒.我想知道这是否是下面任何JVM优化的结果?
public static void main(String[] args)
{
long start = System.nanoTime();
for (int i = Integer.MIN_VALUE; i < Integer.MAX_VALUE; i++){
}
long finish = System.nanoTime();
long d = (finish - start) / 1000000;
System.out.println("Used " + d);
}
Run Code Online (Sandbox Code Playgroud) 使用VIM删除每行前两个空格的最简单方法是什么?基本上它每条线重复"2x".
澄清:这里假设前两个字符是空格.所以问题是关于多条线的缩进.
我正在使用psql访问postgres数据库.查看表的元数据时,有没有办法查看表的索引是否为聚簇索引?
我听说表的PRIMARY KEY自动与聚簇索引相关联,是真的吗?
它背后的理由是什么?如果允许进行I/O的进程处理信号会有什么不良后果?
我有一个 Ruby 线程,它首先连接到 FTP 服务器,然后上传数千个文件。由于一些连接问题,Ruby 线程经常挂起。所以我想为ftp空闲设置一个超时时间。
Ruby Net::FTP Timeout Threads帖子建议使用 Timeout 模块:
begin
Timeout.timeout(10) do
// connect to FTP and upload
end
rescue Timeout::Error
...
end
Run Code Online (Sandbox Code Playgroud)
这种方法不会解决我的问题,因为超时是针对整个计算块的,而不是从 FTP 会话的空闲/不活动开始的超时。
所以我该怎么做?
[更新:在top
我按下shift + H后,显示线程而不是进程,然后它将Java线程显示为R并使用100%CPU时间,这是我在发布此问题之前的预期.]
由于Java进程有多个线程,每个线程可能处于不同的状态,那么Linux top
命令如何确定Java进程状态?
如果我运行以下代码,
public class Test{
public static void main(String[] args){
while (true){
int n = (int)(Math.random() * 1000);
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后,运行top
显示进程状态为S,并且它使用100%CPU时间.
此外,运行strace
节目并仅显示:
futex(0x7f6ba759c9d0, FUTEX_WAIT, 26060, NULL
但是,运行jstack
显示主线程是RUNNABLE:
"main" prio=10 tid=0x00007fd7ec007800 nid=0x669b runnable [0x00007fd7f5754000]
java.lang.Thread.State: RUNNABLE
at Test.main(Test.java:5)
Run Code Online (Sandbox Code Playgroud)
jstack
还表明,WAITING状态只有两个线程:
"Finalizer" daemon prio=10 tid=0x00007fd7ec080000 nid=0x66a6 in Object.wait() [0x00007fd7f0252000]
java.lang.Thread.State: WAITING (on object monitor)
at java.lang.Object.wait(Native Method)
- waiting on <0x00000007ad001310> (a java.lang.ref.ReferenceQueue$Lock)
at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:133)
- locked <0x00000007ad001310> …
Run Code Online (Sandbox Code Playgroud) 我写了一个非常简单的程序来测试输出数据到文件名变量.
#!/bin/sh
file="~/output"
echo "test" > $file
Run Code Online (Sandbox Code Playgroud)
当我运行此脚本时,我收到以下错误
"./script.sh:line 3:〜/ output:没有这样的文件或目录"
那么我应该如何修改我的代码以使其工作?或者它在shell脚本中不受支持?
我知道我可以通过使用-Dconfig.file标志使Play服务器使用其他application.conf文件。
有没有办法指定服务器使用其他路由文件?
在Lisp中,评估'(+ 1 2)产生'(+ 1 2),而不是3.看来HTML不支持Lisp风格的引用,所以你不能说像<quote> <b>而不是粗体</b> </ quote>在HTML中,让它只生成<b>不粗体</ b>而不是粗体.
这有什么技术原因或历史原因吗?谢谢.
我经常需要删除不在特定svn源树中的所有文件.要获取所有文件名列表,我使用:
svn st | grep ^? | awk '{print $2}'
Run Code Online (Sandbox Code Playgroud)
这个命令会给我一个文件名列表,每行一个名字.那怎么能表达出来的想法呢?
for (each line in ${svn st | grep ^? | awk '{print $2}' )
rm -f line
Run Code Online (Sandbox Code Playgroud)
?
例如,
我执行了"pwd",它显示了当前的工作目录.然后,如果我想在我的另一个命令中重用该结果,那么通过Unix命令或内置变量来获取它会很方便.它存在吗?