我需要为面试解决一个java问题,他们给我发了测试课.它始于
import org.junit.Before;
Run Code Online (Sandbox Code Playgroud)
并且在地方也有以下语法:
@RunWith(JUnit4.class)
...
@Before
...
@Test
Run Code Online (Sandbox Code Playgroud)
我有一段时间没有使用过Java,所以这让我有些困惑.我下载了eclipse,当我尝试编译这个测试文件时,导入和@符号出现错误.导入错误抛出:
The import org.junit cannot be resolved.
Run Code Online (Sandbox Code Playgroud)
@RunWith甚至无法识别,因为它试图将其解析为一种类型.
我在整数Java中有优先级队列:
PriorityQueue<Integer> pq= new PriorityQueue<Integer>();
Run Code Online (Sandbox Code Playgroud)
当我打电话时,pq.poll()我得到最小元素.
问题:如何更改代码以获取最大元素?
我正在JSP中开发一个Web应用程序,因为出于某种目的,我需要更改tomcat访问端口.
有可能吗?
我了解到JNI接口指针(JNIEnv*)仅在当前线程中有效.假设我在本机方法中启动了一个新线程; 它如何异步发送事件到Java方法?由于这个新线程不能有(JNIEnv*)的引用.为(JNIEnv*)存储全局变量显然不起作用?
我想知道在使用'less'命令时如何查看特殊字符.例如,我想看到带有特殊符号的不可打印字符.例如,在'vi'编辑器中,我使用"set list on"来查看由$''字符表示的行终止字符.同样,我希望使用'less'命令来执行此操作.
我提到Unix少手册,但无济于事.
我的问题是关于InterruptedException,它是从Thread.sleep方法中抛出的。在合作时,ExecutorService我注意到一些我不理解的怪异行为;这是我的意思:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
while(true)
{
//DO SOMETHING
Thread.sleep(5000);
}
});
Run Code Online (Sandbox Code Playgroud)
有了这个代码,编译器不给我任何错误或消息InterruptedException从Thread.sleep应该被抓。但是,当我尝试更改循环条件并用诸如此类的变量替换“ true”时:
ExecutorService executor = Executors.newSingleThreadExecutor();
executor.submit(() -> {
while(tasksObserving)
{
//DO SOMETHING
Thread.sleep(5000);
}
});
Run Code Online (Sandbox Code Playgroud)
编译器不断抱怨InterruptedException必须处理。有人可以向我解释为什么会发生这种情况,为什么将条件设置为true则编译器会忽略InterruptedException?
我正在使用Square的磁带库将数据上传排队到服务器.
队列以JSON格式存储在File中.当应用程序启动时,我启动队列并开始上传(即如果在Wifi上)但是在用户的某些设备上我看到EOFException了'null'消息(登录崩溃).
FileObjectQueue从现有文件创建对象时发生错误- 从调试信息收集实际文件大约为1MB.
是什么导致了这个或如何防止它? - 也许我需要清理我的java.io.
编辑:使用Tape v1.2.1
Caused by: java.io.EOFException
at java.io.RandomAccessFile.readFully(RandomAccessFile.java:419)
at java.io.RandomAccessFile.readInt(RandomAccessFile.java:439)
at com.squareup.tape.QueueFile.readElement(:182)
at com.squareup.tape.QueueFile.readHeader(:162)
at com.squareup.tape.QueueFile.(:110)
at com.squareup.tape.FileObjectQueue.(:35)
at com.myapp.queue.MyUploadTaskQueue.create(:125)
Run Code Online (Sandbox Code Playgroud)
更新 - 自升级到1.2.2后也看到此错误
Caused by: java.io.IOException: File is corrupt; length stored in header is 0.
at com.squareup.tape.QueueFile.readHeader(:165)
at com.squareup.tape.QueueFile.<init>(:117)
at com.squareup.tape.FileObjectQueue.<init>(:35)
Run Code Online (Sandbox Code Playgroud) 我有两个应用程序在同一个java虚拟机中运行,并且都使用不同的密钥库和信任库.
一个可行的选择是使用单个密钥库并将所有其他密钥库导入共享密钥库(例如keytool -import),但如果我可以为在同一个jvm中运行的单独应用程序使用单独的密钥库,它将真正有助于我的要求.
我可以将keystore和truststore设置为jvm参数或系统属性,如下所示:
java -Djavax.net.ssl.keyStore=serverKeys
-Djavax.net.ssl.keyStorePassword=password
-Djavax.net.ssl.trustStore=serverTrust
-Djavax.net.ssl.trustStorePassword=password SSLApplication
Run Code Online (Sandbox Code Playgroud)
要么
System.setProperty("javax.net.ssl.keyStore","serverKeys")
Run Code Online (Sandbox Code Playgroud)
但是这种方法的问题在于它指定了要在JVM级别使用的密钥库/信任库,因此在同一JVM中运行的所有应用程序都获得相同的密钥库/信任库.
我还尝试创建自定义SSLContext并将其设置为默认值,但它还为在同一JVM中运行的所有应用程序设置上下文.
SSLContext context = SSLContext.getInstance("SSL");
context.init(kms, tms, null);
SSLContext.setDefault(context);
Run Code Online (Sandbox Code Playgroud)
我希望能够使用不同的密钥库/信任库而无需修改单个应用程序代码.
除了jre中的默认密钥库/证书之外,还可以动态注册多个密钥库的解决方案非常棒.
解决方案将以这种方式工作:
请让我知道您的想法或解决方案.提前致谢!
在Java中,我们使用System.setProperty()方法来设置一些系统属性.根据这篇文章,使用系统属性有点棘手.
System.setProperty()可能是一个邪恶的调用.
- 这是100%线程敌对
- 它包含超全局变量
- 当这些变量在运行时神秘地改变时,调试极其困难.
我的问题如下.
系统属性的范围如何?它们是否特定于每个虚拟机,或者它们具有"超级全局特性",它在每个虚拟机实例上共享相同的属性集?我猜选项1
是否有任何工具可用于监视运行时更改以检测系统属性中的更改.(仅为了便于检测问题)
当我运行我的Java程序时,它在这一行上给我一个错误
compiler.getTask(null, null, new DiagnosticCollector<JavaFileObject>(), null, null, compilationUnits);
我得到的错误是:
Exception in thread "main" java.lang.NullPointerException
at AnotherClassLoader.loadClass(test.java:58)
at test.main(test.java:30)
at Main.main(Main.java:68)
Run Code Online (Sandbox Code Playgroud)
你能告诉我怎样才能解决这个错误?
java ×9
jvm ×2
android ×1
c ×1
collections ×1
command ×1
compilation ×1
cryptography ×1
eclipse ×1
exception ×1
jsse ×1
lambda ×1
linux ×1
port ×1
square-tape ×1
ssl ×1
tomcat ×1
unix ×1