我无法解析getWindow(); 出于某种原因的方法......
import java.applet.Applet;
import netscape.javascript.JSObject;
public class Class466 {
public static void method6020(Applet applet, String string, int i)
throws Throwable {
try {
JSObject.getWindow(applet).eval(string);
} catch (RuntimeException runtimeexception) {
throw Class346.method4175(runtimeexception, new StringBuilder()
.append("tf.a(").append(')').toString());
}
}
public static Object method6021(Applet applet, String string, short i)
throws Throwable {
try {
return JSObject.getWindow(applet).call(string, null);
} catch (RuntimeException runtimeexception) {
throw Class346.method4175(runtimeexception, new StringBuilder()
.append("tf.f(").append(')').toString());
}
}
public static Object method6022(Applet applet, String string,
Object[] objects, byte i) throws Throwable { …Run Code Online (Sandbox Code Playgroud) 我在编译开关时阅读了JVM规范,并对如何编译String上的switch语句感兴趣.这是我检查的测试方法(JDK1.7.0_40):
static int test(String i) {
switch (i) {
case "a": return -100;
case "45b": return 1;
case "c": return 2;
default: return -1;
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这个方法能够在string的hashCode上编译成简单的lookupswitch,但突然之间
static int test(java.lang.String);
Code:
0: aload_0
1: astore_1
2: iconst_m1
3: istore_2
4: aload_1
5: invokevirtual #6 // Method java/lang/String.hashCode:()I
8: lookupswitch { // 3
97: 44
99: 72
51713: 58
default: 83
}
44: aload_1
45: ldc #7 // String a
47: invokevirtual #8 // Method java/lang/String.equals:(Ljava/lang/Object;)Z
50: ifeq 83 …Run Code Online (Sandbox Code Playgroud) 如果我有:
List<Integer> listInts = { 1, 1, 3, 77, 2, 19, 77, 123, 14, 123... }
Run Code Online (Sandbox Code Playgroud)
在Java中,什么是创建List<Integer> listDistinctInts仅包含不同值的有效方法listInts?
我的直接想法是创建一个Set<Integer> setInts包含所有值listInts然后调用List<Integer> listDistinctInts = new ArrayList<>(setInts);
但这似乎效率低下 - 使用Java 7是否有更好的解决方案?
我没有使用Java 8,但我相信使用它我可以做这样的事情(?):
List<Integer> listDistinctInts = listInts.stream().distinct().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)
这会比上面的方法更高效和/或在Java 8中有更有效的方法吗?
最后,(我知道,如果我只关心不同元素的数量,那么提出多个问题可能会不受欢迎,但这是直接相关的)是否listInts有更有效的方法来获得该值(在Java 7和8中) -没有先创建一个列表或所有不同元素的集合?
我最感兴趣的是使用本机Java方法来实现这一点并避免重新发明任何轮子,但如果它们提供更好的清晰度或性能,则会考虑手动代码或库.我已经阅读了这个相关的问题Java - 不同的对象列表,但是它并不完全清楚Java 7和8方法之间的性能差异,或者是否有更好的技术?
既然JDK 7开发人员预览已经完成,人们可能会认为现在是新JLS的时候了.毕竟,语言已经发生了变化,虽然很小.
我还没找到任何东西.何时可以使用新的JLS,从哪里可以获得它?
我想用Java 7和NIO 2编写一个异步服务器.
但是我应该如何使用AsynchronousServerSocketChannel?
例如,如果我开始:
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
Run Code Online (Sandbox Code Playgroud)
然后,当我这样做时server.accept(),程序终止,因为该调用是异步的.如果我将该代码置于无限循环中,AcceptPendingException则抛出一个.
有关如何编写简单异步服务器的任何建议AsynchronousServerSocketChannel?
这是我的完整示例(类似于JavaDoc中的示例):
import java.io.IOException;
import java.net.InetSocketAddress;
import java.nio.channels.AsynchronousServerSocketChannel;
import java.nio.channels.AsynchronousSocketChannel;
import java.nio.channels.CompletionHandler;
public class AsyncServer {
public static void main(String[] args) {
int port = 8060;
try {
final AsynchronousServerSocketChannel server =
AsynchronousServerSocketChannel.open().bind(
new InetSocketAddress(port));
System.out.println("Server listening on " + port);
server.accept("Client connection",
new CompletionHandler<AsynchronousSocketChannel, Object>() {
public void completed(AsynchronousSocketChannel ch, Object att) {
System.out.println("Accepted …Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用JDK7中的新globbing功能,从文档和示例开始
我可以得到像我这样"glob:*.dat"的人
Files.walkFileTree(startingDir, finder);
Run Code Online (Sandbox Code Playgroud)
例如,但我无法使"**"语法正常工作.我希望能够创建类似的东西:
matcher = FileSystems.getDefault().getPathMatcher("glob:" + "foo/**/bar/*.dat");
Run Code Online (Sandbox Code Playgroud)
并希望得到一个简单的例子.我使用的是Windows 7.
更新:@Oleg和@JBNizet清楚地表明"/"语法与操作系统无关.请注意,Javadocs建议也可以使用依赖于操作系统的语法(需要)
仍有问题:已采取@Nizet并编辑如下:
@Test
public void testStackoverflowGlobber() throws IOException {
final PathMatcher matcher =
FileSystems.getDefault().getPathMatcher("glob:*.cml");
Files.walkFileTree(Paths.get("d:/petermr-workspace/jumbo-converters/jumbo-converters-cli/src/test/resources"), new SimpleFileVisitor<Path>() {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println("try>> "+file);
if (matcher.matches(file)) {
System.out.println("MATCHES>>"+file);
}
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
return FileVisitResult.CONTINUE;
}
});
}
Run Code Online (Sandbox Code Playgroud)
这给出了如下输出:
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdx
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cdxml
try>> d:\petermr-workspace\jumbo-converters\jumbo-converters-cli\src\test\resources\examples\cdx\r19.cml
try>> …Run Code Online (Sandbox Code Playgroud) 我试图使用-XX:+UnlockDiagnosticVMOptions -XX:CompileCommand=print,*MyClass.myMethod命令行中的说明这篇文章.
它似乎可以使用open-jdk(https://wikis.oracle.com/display/HotSpotInternals/PrintAssembly).
如何在oracle JDK7和JVM HotSpot中使用这些选项(或类似的等价物)?
我有一个web服务正在运行Coldfusion 10 64bit.在调查内存泄漏的同时,我将JRE从1.6升级到1.7,但发现性能受到重大影响.我创建了一个简单的测试Web服务,在JRE 1.6上,只要我将JRE更改为1.7,我就能以每分钟5000个请求轻松运行,尽管此速率每分钟下降2000或更少.有没有人知道调整设置或我缺少的东西.
首选是使用,JRE 1.7因为它似乎已修复我遇到的内存泄漏问题.
运行服务器JRE:java版本"1.7.0_51"Java(TM)SE运行时环境(版本1.7.0_51-b13)Java HotSpot(TM)64位服务器VM(版本24.51-b03,混合模式)
JVM设置中的垃圾收集: -XX:+UseParallelGC
将垃圾收集更改为:-XX:+UseG1GC这没有任何区别.
遵循此处的建议,但性能没有提高.将与jvisualvm一起审核并发布我的发现.
更新: Java 7 改变了处理同步类加载器的方式,看起来这可能是导致速度减慢的原因.
更新 Adobe已承认该错误并正在寻求修复它.Adobe bug基础记录.
java 8的功能接口是否可用(即jar),所以我可以在Java 7项目中使用它们?这样我以后可以更容易地将代码移植到惯用的java 8.如果不是,技术上是否可行,或者他们是否使用默认方法等新功能?
是的,我的意思是java.util.function中的接口.因为添加带有java前缀的包似乎是不允许从其他地方导入它们不是一个选项.
由于Java 7正则表达式API提供对命名捕获组的支持.方法java.util.regex.Matcher.group(String)返回由给定的命名捕获组捕获的输入子序列,但API文档中没有可用的示例.
在Java 7中指定和检索命名捕获组的正确语法是什么?
java ×10
java-7 ×10
java-8 ×2
jvm ×2
assembly ×1
asynchronous ×1
bytecode ×1
coldfusion ×1
glob ×1
javascript ×1
jls ×1
jsobject ×1
list ×1
nio ×1
regex ×1