我真的很难理解tomcat实际运行的位置.它是在JVM中执行的,它执行servlet.或者它在执行servlet或JSP时拥有自己的VM.
提前致谢.
我需要并行调用多个方法并等待结果.每个都依赖于不同的资源,因此它们可能会在不同的时间返回.我需要等到收到所有结果或在一段时间后超时.
我可以通过方法调用生成带有对共享对象的引用的线程,但有没有更好,更常规的方法来做到这一点?
目前的实施:
Executors exec = Executors.newFixedThreadPool(10);
for (obj in objects) {
def method = {
def result = new ResultObject(a: obj, b: obj.callSomeMethod())
result
} as Callable<ResultObject>
callables << method
}
List<Future<ResultObject>> results = exec.invokeAll(callables)
for (result in results) {
try{
def searchResult = result.get()
println 'result retrieved'
} catch (Exception e)
{
println 'exception'
e.printStackTrace()
}
}
}
Run Code Online (Sandbox Code Playgroud) 这是获取电子邮件sender和subject电子邮件的代码.使用此代码,我看到正确的主题显示,但我看到不同格式的发件人的地址.
Properties props = new Properties();
props.put("mail.imap.host" , "imap.gmail.com" );
props.put("mail.imap.user" , "username");
// User SSL
props.put("mail.imap.socketFactory" , 993);
props.put("mail.imap.socketFactory.class" , "javax.net.ssl.SSLSocketFactory" );
props.put("mail.imap.port" , 993 );
Session session = Session.getDefaultInstance(props , new Authenticator() {
@Override
protected PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication("username" , "password");
}
});
try {
Store store = session.getStore("imap");
store.connect("imap.gmail.com" , "username" , "password");
Folder fldr = store.getFolder("Inbox");
fldr.open(Folder.READ_ONLY);
Message msgs[] = fldr.getMessages();
for(int i = 0 ; i < msgs.length ; …Run Code Online (Sandbox Code Playgroud) 注:请不要不上交叉编译的所有危险评.谢谢.
我有一种情况,我们需要为Java 5 JVM编译Java 6源代码(以确保JAX-WS的使用是正确的).以前我们用ant ant脚本(显然可以)这样做了,但是在迁移到Maven之后我们发现它最终以javac抱怨:
$ javac -source 1.6 -target 1.5
javac: source release 1.6 requires target release 1.6
Run Code Online (Sandbox Code Playgroud)
是否有任何对Linux(Ubuntu的11.10,86),其中使用javac可以做到这一点的Java分配?
编辑:它似乎没有,因为限制在javac是相同的.解决方案(这使得需要消失)是从默认的javac编译器改为maven-compiler-plugin中的eclipse编译器.
编辑:我发现Eclipse编译器为javadoc实用程序不同意的匿名内部类生成字节代码.我正在为此问题准备一份错误报告.
我们有一个相当大的git存储库,但工作区中实际存在的文件相当少.由于它的大小和严格的反病毒设置,克隆需要相当长的时间,这使得与许多小分支一起工作更加繁琐(因为当git操纵工作区中的maven项目时,Eclipse会变得非常困惑).
因此,我希望有一种更快的方法来创建一个新的git checkout"next"到文件系统中的现有克隆(但完全独立于它)在完全相同的分支并提交为现有克隆,我想知道我是否可以简单地制作包含文件夹的简单副本,.git并独立地继续在两个项目中工作.
(另外我还记得在本地文件系统上找到关于git克隆的东西并用硬链接节省空间.这并不重要,但如果在Windows上工作则可能很好.)
那么,我可以简单地复制现有的git工作区(包括.git)来获得与新的相同的结果git clone吗?
根据GC人体工程学,默认的最大堆大小应为"物理内存的1/4或1GB".
阅读我希望在96GB ram的服务器级机器上使用jvm,默认最大堆大小1GB(96GB/4 = 24GB或1GB).
但是,当我编译并运行以下代码时,它会写出来21463(即约21GB).
public class Main{
public static void main(String[] args) {
System.out.println(Runtime.getRuntime().maxMemory() / 1024 / 1024);
}
}
Run Code Online (Sandbox Code Playgroud)
如果重要:java -version生产
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)
总而言之,如果我正确阅读文档,默认的最大堆大小应该不大于1GB,但实际上它大约是服务器内存的1/4.怎么会?
这很奇怪...我认为java中的每个对象都将Object作为祖先.
我有一个ClassA扩展我的ClassB和实现Runnable.
创建后ClassA我无法将其转换为Object.
假设getClassA返回一个ClassA实例.
我在做
Object obj = getClassA();
Run Code Online (Sandbox Code Playgroud)
我也试过了
Object obj = (Object) getClassA();
Run Code Online (Sandbox Code Playgroud)
我得到一个不兼容的类型编译错误:找到Class,required Object.
这有什么用?我认为所有对象都可以转换为Object.
编辑:我认为它与ClassA实现Runnable这一事实有关,但我不确定并需要解释.
Edit2:更改getClassA()以返回一个Object,允许程序进行编译.
Edit3:导入包含ClassB的包修复了问题.B类是在另一个罐子里定义的.ClassA在另一个引用包含ClassB的jar的jar中定义.
这是一个scjp模拟考试题.
假设我有以下两个文件:
package pkg;
public class Kit {
public String glueIt (String a, String b) {return a+b;}
}
import pkg.*;
class UseKit {
public static void main(String[]args) {
String s = new Kit().glueIt(args[1],args[2]);
System.out.println(s);
}
}
Run Code Online (Sandbox Code Playgroud)
以下目录结构:
test
|--UseKit.class
|
com
|--KitJar.jar
Run Code Online (Sandbox Code Playgroud)
当前目录是test,文件pkg/Kit.class在KitJar.jar
根据答案,产生输出bc的java调用是
java -classpath com/KitJar.jar:. UseKit a b c
Run Code Online (Sandbox Code Playgroud)
请解释运营商":"和"."的使用.
你好,Java和android只有几天了.关于"实现runnable"实际上是如何工作的例子,我有点困惑:
public class DrawableSurfaceView extends SurfaceView implements Runnable {
[...]
public void resume(){
isRunning = true;
mThread = new Thread(this);
mThread.start(); //start the animation
parseParameters(); //<== Here is my problem
}
public void run() {
while (isRunning == true){
if (!mHolder.getSurface().isValid()) {
continue;
}
Canvas canvas = mHolder.lockCanvas();
canvas.drawARGB(255, 0, 0, 0);
canvas.drawPath(PenPath, PenPaint);
canvas.drawPath(CursorPath, CursorPaint);
mHolder.unlockCanvasAndPost(canvas);
}
}
public void parseParameters() {
[...]
[ The rest of my code here modifying PenPath and CursorPath, etc ]
}
Run Code Online (Sandbox Code Playgroud)
我很尴尬地问,但我想在mThread.start()之后; 将在run方法中开始运行循环的新线程.而我得到的是仅在我的parseParameters()方法终止后执行的run方法.我想要实现的是将画布放在绘图循环线程上,并从外部修改绘图路径的参数以生成我的动画.我确信这是非常基本的,但我几个小时都无法理解这一点.文档没有帮助. …
我们在构建Maven工件时存储当前checkout的SHA-1,因此我们可以使用"git checkout SHA-1"返回用于制作工件的确切提交.这导致分离的HEAD不属于任何分支.
然后我可以使用"gitk --all".以可视方式识别提交所属的远程分支,但我想知道相应的git命令,用于建立当前提交"属于"的分支(编辑:因为可能在分支上修复了其他错误)因为这个特殊的构建).