小程序间通信

据我所知,每个applet都是独立的实体。 是否可以进行applet间通信? 。 如果是这样,它是如何实现的? 谢谢J

Java 8 lambdas是编译为内部类,方法还是别的什么?

我今天读了这篇关于lambdas的文章: http://www.infoq.com/articles/Java-8-Lambdas-A-Peek-Under-the-Hood 文章建议,lambda 不是作为anon内部类实现的(由于性能)。 它给出了一个示例,可以将lambda表达式编译为类的(静态)方法。 我试过一个非常简单的片段: private void run() { System.out.println(this); giveHello(System.out::println); } private void giveHello(Consumer consumer) { System.out.println(consumer); consumer.accept(“hello”); } 输出是: sample.Main@14ae5a5 sample.Main$$Lambda$1/168423058@4a574795 hello 所以它不是同一个实例。 它不是一些中央的“Lambda Factory”实例。 那么lambdas是如何实现的?

在maven中处理Web项目的非常规源目录

我inheritance了一个目前在eclipse中构建的web项目(Servlets)。 我想在它周围添加maven。 但该项目的源目录不遵循maven约定。 它不是在src / main / java里面,而是src / package / name / … 我现在不想改变任何事情,因为他们正在全力以赴地迈向里程碑。 我可以配置maven接受src /作为java源目录吗? 谢谢

如何通过BeanManager创建和销毁CDI(焊接)托管Bean?

我正在尝试使用BeanManager而不是Instance .select()。get()创建CDI托管bean的实例。 这被建议作为我已经使用ApplicationScoped bean和他们的家属的垃圾收集的问题的解决方法 – 请参阅CDI应用程序和依赖范围可以合谋影响垃圾收集? 为背景和这建议的解决方法。 如果在ApplicationScoped bean上使用Instance编程查找方法,Instance对象和从中获取的任何bean最终都依赖于ApplicationScoped bean,因此共享它的生命周期。 但是,如果使用BeanManager创建bean,则会在Bean实例本身上设置句柄,并且显然可以明确地销毁它,我理解这意味着它将被GCed。 我目前的方法是在BeanManagerUtil类中创建bean,并返回Bean,实例和CreationalContext的复合对象: public class BeanManagerUtil { @Inject private BeanManager beanManager; @SuppressWarnings(“unchecked”) public DestructibleBeanInstance getDestructibleBeanInstance(final Class type, final Annotation… qualifiers) { DestructibleBeanInstance result = null; Bean bean = (Bean) beanManager.resolve(beanManager.getBeans(type, qualifiers)); if (bean != null) { CreationalContext creationalContext = beanManager.createCreationalContext(bean); if (creationalContext != null) { T […]

找到与Java regex matcher的最后一场比赛

我试图获得匹配的最后结果,而不必循环通过.find() 这是我的代码: String in = “num 123 num 1 num 698 num 19238 num 2134”; Pattern p = Pattern.compile(“num ‘([0-9]+) “); Matcher m = p.matcher(in); if (m.find()) { in = m.group(1); } 这将给我第一个结果。 我怎样才能找到最后一场比赛,而不是通过潜在的巨大名单?

内存重新排序如何帮助处理器和编译器?

我研究了Java内存模型并看到了重新排序的问题。 一个简单的例子: boolean first = false; boolean second = false; void setValues() { first = true; second = true; } void checkValues() { while(!second); assert first; } 重新排序是非常不可预测和奇怪的。 此外,它破坏了抽象。 我认为处理器架构必须有充分的理由去做一些对程序员来说太不方便的事情。 这些原因是什么? 关于如何处理重新排序有很多信息,但我找不到任何关于它为什么需要的信息。 在任何地方,人们只会说“这是因为一些性能优势”。 例如,在first存储之前存储second的性能优势是什么? 你能推荐一些关于此的文章,论文或书籍,或者自己解释一下吗?

使用java执行带有“sudo”的linux shell命令,而不输入所需的密码

嗨,我正在使用ganymed-ssh2 java库在linux工作站中成功执行远程命令。 但现在有一种情况我需要执行一个命令,但这要求我输入一些密码……如: sudo /usr/bin/some_process please enter your password: 我曾经以这种方式实现远程cmd执行: Session sess = conn.openSession(); sess.execCommand(“uname -a && date && uptime && who”); System.out.println(“Here is some information about the remote host:”); InputStream stdout = new StreamGobbler(sess.getStdout()); BufferedReader br = new BufferedReader(new InputStreamReader(stdout)); while (true) { String line = br.readLine(); if (line == null) break; System.out.println(line); } […]

Java中无法访问的语句编译错误

class For1 { public static void main(String args[]) { int a = 0; for(;;) { break; System.out.println(a); //Line 1 ++a;//Line 2 } } } 我知道第1行/第2行永远不会执行。 但我仍然不明白为什么抛出编译时错误。 我得到“无法访问的声明”编译错误。 这是否意味着编译器检查它是否能够为所有分支/代码行编译?

抛出exception时EDT是否重启?

(下面的示例代码是自包含且可运行的,您可以尝试它,它不会崩溃您的系统:) Tom Hawtin在这里评论了这个问题: 为什么人们在事件队列上运行Java GUI 那: EDT不太可能崩溃。 在EDT调度中抛出的未经检查的exception被捕获,转储并且线程继续。 有人可以解释我在这里发生了什么(每次你点击“抛出一个未经检查的exception”按钮,有意地执行除以零): import javax.swing.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; public class CrashEDT extends JFrame { public static void main(String[] args) { final CrashEDT frame = new CrashEDT(); frame.addWindowListener(new WindowAdapter() { public void windowClosing( WindowEvent e) { System.exit(0); } }); final JButton jb = new JButton( […]

关闭程序时运行方法?

我需要执行一个方法(一个创建文件的方法),当我退出程序时,我该怎么做?