我刚刚从下载在Mac OS 10.7.5的Java 7u17 这里,然后安装成功.为了做一些JNI编程,我需要知道在Mac上安装Java的位置.
我以为在/Library/Java/JavaVirtualMachines/
文件夹里面会有一个名为1.7.0.jdk
或者什么的文件夹,但后来我发现文件夹是空的.通过ls /Library/Java/JavaVirtualMachines/
终端运行证实了这一点.我已经尝试搜索它以查明它是否安装在其他地方,但这似乎并没有改变任何东西.
有人可以告诉我Mac上安装Java的位置吗?
我想检查Path(在Java 7中引入)是否以某个扩展名结尾.我试过这样的endsWith()
方法:
Path path = Paths.get("foo/bar.java")
if (path.endsWith(".java")){
//Do stuff
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎不起作用,因为path.endsWith(".java")
返回false.endsWith()
如果在最终目录分隔符(例如bar.java
)之后的所有内容完全匹配,则该方法似乎仅返回true ,这对我来说不实用.
那么我该如何检查Path的文件扩展名呢?
如何在没有Maven的情况下在Eclipse中创建src/main/java
和src/test/java
我的默认Web应用程序项目?我当前的文件夹结构是
TestApp
-JavaResources
- src
- com.mypackage
-WebContent
Run Code Online (Sandbox Code Playgroud) 考虑一个简单的程序:
int main() {
int* ptr = nullptr;
delete ptr;
}
Run Code Online (Sandbox Code Playgroud)
对于GCC(7.2),在结果程序中有call
关于的指令operator delete
.对于Clang和Intel编译器,没有这样的指令,空指针删除被完全优化(-O2
在所有情况下).你可以在这里测试:https://godbolt.org/g/JmdoJi.
我想知道这样的优化能否以某种方式与GCC一起开启?(我更广泛的动机源于自定义swap
vs std::swap
可移动类型的问题,其中删除空指针可能代表第二种情况下的性能损失; 有关详细信息,请参阅/sf/answers/3198249771/.)
UPDATE
为了澄清我对这个问题的动机:如果我在移动赋值运算符和某个类的析构函数中使用delete ptr;
无if (ptr)
保护,那么该类的对象将产生3个GCC指令.这可能是相当大的性能损失,例如,在对这些对象的数组进行排序时.std::swap
call
此外,我可以if (ptr) delete ptr;
在任何地方写作,但是想知道,这是否也不能成为性能损失,因为delete
表达式也需要检查ptr
.但是,在这里,我想,编译器只会生成一个检查.
此外,我真的很喜欢delete
没有后卫的可能性,这对我来说是一个惊喜,它可以产生不同的(表现)结果.
UPDATE
我只是做了一个简单的基准测试,即排序对象,它们delete
在移动赋值运算符和析构函数中调用.来源是:https://godbolt.org/g/7zGUvo
std::sort
使用GCC 7.1测量的运行时间和-O2
Xeon E2680v3上的标志:
链接代码中存在一个错误,它会比较指针,而不是指向值.更正结果如下:
if
后卫:Java IO具有File.deleteOnExit(),这是一种删除在JVM正常终止期间调用它的文件的方法.我发现这对于清理临时文件非常有用,特别是在单元测试期间.
但是,我没有在Java NIO的Files类中看到同名的方法.我知道我能做到path.toFile().deleteOnExit()
,但我想知道是否有使用NIO的替代方案.
还有其他选择吗?如果没有,为什么没有?
我在我的项目中使用了龙目岛,但我的同事不同意使用它,他的理由是(来自lombok文件的争议)
这两个项目Lombok都利用非公共API来完成他们的巫术.这意味着使用后续IDE或JDK版本可能会破坏Project Lombok的风险.
但这是一篇2010年写的非常古老的文档,也许现在已经解决了这个问题,所以我想知道Lombok是否支持Java 9并且它仍然使用非公共API:s?
我正在测试用户单击删除按钮的UI,表条目消失.因此,我希望能够检查表条目不再存在.
我试过使用ExpectedConditions.not()
反转ExpectedConditions.presenceOfElementLocated()
,希望它意味着"期望不存在指定的元素".我的代码是这样的:
browser.navigate().to("http://stackoverflow.com");
new WebDriverWait(browser, 1).until(
ExpectedConditions.not(
ExpectedConditions.presenceOfElementLocated(By.id("foo"))));
Run Code Online (Sandbox Code Playgroud)
但是,我发现即使这样做,我也会得到TimeoutExpcetion
一个NoSuchElementException
说法,即元素"foo"不存在.当然,没有这样的元素是我想要的,但我不想抛出异常.
那么我怎么能等到一个元素不再存在?我希望一个不依赖于捕获异常的示例(如我所知),应该抛出异常以用于异常行为).
我最近开始看到JSLint发出以下警告:
JSLint:期待'''而不是'''.
换句话说,它希望我使用双引号而不是单引号.为什么JSLint会对此发出警告?在JavaScript中,单引号和双引号是否或多或少可互换,仅受程序员的偏好?
BasicFileAttributes类用于检查文件系统中文件的属性,其方法为isRegularFile().不幸的是,Javadoc描述相当缺乏:
判断文件是否是包含不透明内容的常规文件.
这是什么意思?具有不透明内容的常规文件究竟是什么?我可以从类中的其他方法看出它不是目录或符号链接,所以我倾向于认为它是其他所有东西.但是,显然存在某种类型的"不规则文件",因为存在一个名为isOther()的方法,如果它不是目录,符号链接或"常规文件",则返回true.
那么Java中的常规文件到底是什么?
经过一些研究,我很惊讶我没有在Tomcat中找到任何有关HTTP/2支持的资源.更改日志8.0表示SPDY的实验支持,wiki将HTTP/2称为支持的规范(http://wiki.apache.org/tomcat/Specifications),但我没有找到任何教程.
你知道是否已经可以在Tomcat上启用HTTP/2了吗?如果答案是肯定的我怎么能这样做?