小编Joo*_*kka的帖子

是否可以指定JVM的崩溃转储的位置?

我们有一个使用JNI的桌面应用程序,偶尔会导致JVM崩溃.幸运的是,JVM生成了一个hs_err_pidXXXX.log文件,这在调试此类错误时非常有用.但是,它似乎总是转到当前的工作目录,并且从那里挖掘它很烦人,因为我们的其他日志文件都转到特定的"日志文件位置".

是否可以为这些"崩溃转储"文件指定不同的位置?怎么样?

java logging jvm crash-dumps

13
推荐指数
2
解决办法
2万
查看次数

为什么听众列出了列表?

为什么监听器列表(例如在Java中使用addXxxListener()removeXxxListener()注册和取消注册侦听器的列表)被称为列表,并且通常实现为列表一套不是更合适,因为在听众的情况下

  • 无论他们被调用的顺序如何(尽管可能存在这样的需求,但它们是特殊情况;普通的监听器机制没有这样的保证),并且
  • 不需要多次注册同一个监听器(无论这样做是否应该导致调用同一个监听器1次或N次,或者是一个错误,是另一个问题)

这只是一个传统问题吗?无论如何,套装都是引擎盖下的某种列表.是否存在性能差异?迭代List比通过迭代更快还是更慢Set?要么采取更多或更少的记忆?差异肯定几乎可以忽略不计.

java list listener

12
推荐指数
1
解决办法
1015
查看次数

Java类加载器是否保证不加载未使用的类?

是否保证(默认的,系统)Java类加载器不会尝试加载正在运行的代码中未引用的类?我的意思是几个例子:

  • 我正在使用framework.jar我知道的包含对其他library.jar类的引用,但我只使用不包含这些引用的框架的这一部分.遗漏是否安全library.jar
  • 首次加载类时会运行静态块.如果没有正在运行的代码包含对特定类的引用,是否确定它的静态块没有运行?

快速测试它看起来像上面假设的那样工作,无论如何加载未使用的类没有多大意义,但是有什么保证吗?

另外:似乎我的"静态块在第一次加载类时运行"上面的语句有些不正确.绝对可以加载类(一件事)而不运行它们(另一件事).所以我对这两种情况都感兴趣; 保证类没有加载,而不是运行.

java classloader

12
推荐指数
1
解决办法
2151
查看次数

用数值方法求解非线性方程组

我需要在我的Java程序中解决非线性最小化(N个未知数的最小残差平方)问题.解决这些问题的常用方法是Levenberg-Marquardt算法.我有一些问题

  • 有没有人对不同的LM实现有经验?LM的味道略有不同,我听说算法的确切实现对其数值稳定性有重要影响.我的功能非常好,所以这可能不是问题,但当然我想选择一个更好的选择.以下是我发现的一些替代方案:

  • 是否有任何常用的启发式方法来进行LM所需的初始猜测?

  • 在我的应用程序中,我需要对解决方案设置一些约束,但幸运的是它们很简单:我只是要求解决方案(为了成为物理解决方案)是非负的.略微负面的解决方案是数据中测量不准确的结果,显然应该为零.我正在考虑使用"常规"LM但是迭代以便如果一些未知数变为负数,我将其设置为零并从中解决其余部分.真正的数学家可能会嘲笑我,但你认为这可行吗?

感谢您的任何意见!

更新:这不是火箭科学,要解决的参数数量(N)最多为5,而数据集只有不足以使解决成为可能,所以我相信Java足以解决这个问题.而且我相信聪明的应用数学家已经多次解决了这个问题,所以我只是在寻找一些现成的解决方案,而不是自己做饭.例如,如果它是纯Python,Scipy.optimize.minpack.leastsq可能会没问题.

java math numerical mathematical-optimization scientific-computing

11
推荐指数
1
解决办法
9452
查看次数

"如果不存在则创建表" - 如何检查模式?

是否有(或多或少)标准方法不仅检查名为mytableexists 的表是否存在,还检查其模式是否与它应该是什么类似?我正在试验H2数据库,并且

CREATE TABLE IF NOT EXISTS mytable (....)
Run Code Online (Sandbox Code Playgroud)

声明显然只检查表的名称.如果有一个具有给定名称但具有不同模式的表,我希望得到一个例外.

sql database h2 create-table

11
推荐指数
2
解决办法
2万
查看次数

如何实际使用Swing应用程序框架?

我想学习如何有效地使用Swing应用程序框架.我发现的大多数示例都是博客条目,它们只是解释了如何扩展SingleFrameApplication并覆盖其启动方法,但这就是它.Sun的文章已经差不多两年了,项目自己的介绍也是如此,从那时起,显然有一些进化.

是否有最新的全面教程/ HOWTO可用于任何地方?当然有JavaDoc,但很难从中获得全局.任何指针都表示赞赏.

更新:我意识到项目网站上有一个邮件列表存档.虽然有些笨拙(与StackOverflow相比),但似乎非常活跃.遗憾的是,任何地方都没有真正的教程.信息分散在各处.

更新2:让我澄清一下 - 我在使用Swing(小部件工具包)本身时遇到了麻烦,我在谈论它的应用程序框架,应该简化应用程序生命周期(启动,退出以及它们之间发生的任何事情)之类的事情. ,行动管理等 - 也就是大多数Swing应用程序需要的东西.让这样的框架成为Java的标准部分是很酷的.唯一的问题是要了解它的用途.

更新3:如果您有兴趣,只是有在该项目的有关JSR 296.不久的现状和未来的论坛上一些讨论:当前版本1.03被认为是非常有好处的,该API并不稳定,它改变Java 7中的最终版本.软件包名称也将更改,因此Java 7不会破坏在SAF上创建的当前应用程序.

更新4: Karsten Lentzsch在上述论坛中表示:"我怀疑它是否可以包含在Java 7中;我将投反对票." 我宁愿不怀疑这位伟大的大师的诚意,并且明智的做法是不要让任何有缺陷的东西进入核心JDK,但坦率地说这是一个奇怪的情况 - 他是JGoodies Swing Suite的作者,它是部分商业竞争对手. JSR 296,他坐在这将决定这是否JSR将被纳入到标准的Java委员会.我之前写过的JSR 295 Beans Binding也是如此.

鉴于SAF的当前状态,我认为最好的解决方案是将当前实现包装成"自制"框架,然后可以适应现有API的可能更改.

java swing swing-app-framework

10
推荐指数
1
解决办法
4324
查看次数

如何在退出应用程序时关闭所有Executor?

根据Brian Goetz的Java Concurrency in Practice,JVM无法退出,直到所有(非守护程序)线程都终止,因此无法关闭Executor可能会阻止JVM退出.

即如果存在执行程序,System.exit(0)不一定按预期工作.似乎有必要放一些

public void stop() { exec.shutdown() }
Run Code Online (Sandbox Code Playgroud)

包含Executors的所有类的方法,然后在应用程序即将终止时调用它们.这是唯一的方法,还是有某种关闭所有Executors的快捷方式?

java concurrency

10
推荐指数
4
解决办法
1万
查看次数

在检查复选框时如何防止JPopUpMenu消失?

我想JCheckBoxMenuItem在一个中使用s JPopupMenu.它可以工作,但问题是当选中或取消选中复选框项时,弹出菜单会消失.因此,如果想要检查/取消选中多个项目,则需要重复启动弹出窗口,这很烦人.

奇怪的是,如果我只使用JCheckBox菜单中的普通项(而不是JCheckBoxMenuItems),行为就像它应该的那样:弹出窗口停留在那里,可以选中/取消选中复选框.完成后,只需在外部单击即可关闭弹出窗口.

如果有弹出的项目,如何让弹出窗口表现得像JCheckBoxMenuItem?我更喜欢使用JCheckBoxMenuItems,因为它们的外观.

swing jpopupmenu jcheckbox

10
推荐指数
1
解决办法
3919
查看次数

剥离JRE与应用程序捆绑在一起 - 我可以省略什么?

我一直在将JRE与我的应用程序捆绑在一起,只需将文件复制$JAVA_HOME/jre到我的应用程序的发行版即可.这可能违背了Java的精神,但它通过确保我的应用程序在经过测试的JRE版本上运行来减少潜在问题(包括比特;我使用一些JNI,它要求JRE是32位版本).

它工作正常,但整个发行版有点大,所以可能会遗漏一些不必要的文件?确实,$JAVA_HOME/jre/README.txt包含以下建议:

组成Java SE运行时环境的文件分为两类:必需和可选.可供供应商自行决定从Java SE运行时环境的重新分发中排除可选文件.

以下部分包含可以选择从Java SE运行时环境的重新分发中省略的文件和目录的列表.不在这些可选文件列表中的所有文件都必须包含在运行时环境的重新分发中.

...当使用自定义启动器将Microsoft Windows上的JRE重新分发为私有应用程序运行时(其他应用程序无法访问)时,以下文件也是可选的.这些是用于Internet Explorer和Mozilla系列浏览器中的Java支持的库和可执行文件; 私有JRE重新分发中不需要这些文件.

让我感到困惑的是,可选文件列表包括:

bin\java.exe
bin\javaw.exe
bin\javaws.exe
Run Code Online (Sandbox Code Playgroud)

怎么java/javaw.exe可选?如果没有它们我应该如何启动Java应用程序?显然我不知道某些事情(可能),或者指示是完全错误的.

java installation

9
推荐指数
1
解决办法
4575
查看次数

使用Jython和Swing处理事件

我正在使用来自Jython的Swing制作GUI.事件处理似乎从Jython特别优雅,只是设置

JButton("Push me", actionPerformed = nameOfFunctionToCall)
Run Code Online (Sandbox Code Playgroud)

但是,在课堂上尝试同样的事情变得困难.天真的尝试

JButton("Push me", actionPerformed = nameOfMethodToCall)
Run Code Online (Sandbox Code Playgroud)

要么

JButton("Push me", actionPerformed = nameOfMethodToCall(self))
Run Code Online (Sandbox Code Playgroud)

从类的GUI构造方法不起作用,因为要调用的方法的第一个参数应该是self,以便访问类的数据成员,另一方面,它不可能通过通过AWT事件队列的事件处理程序的任何参数.唯一的选择似乎是使用lambda(在http://www.javalobby.org/articles/jython/上建议),结果是这样的:

JButton("Push me", actionPerformed = lambda evt : ClassName.nameOfMethodToCall(self))
Run Code Online (Sandbox Code Playgroud)

它有效,但优雅已经消失.所有这一切只是因为被调用的方法需要从某个地方进行引用.还有其他方法吗?

python java user-interface swing jython

8
推荐指数
1
解决办法
2567
查看次数