小编Mar*_*gón的帖子

为Eclipse RCP应用程序添加Shutdown Hook的正确方法是什么?

我有一个RCP应用程序,它使用与内存数据库的连接.有一种情况是,当关闭窗口时,应用程序将被终止而不会让它有机会关闭与数据库的连接.

我研究了一下,似乎添加Shutdown钩子是检测此事件并在Java应用程序中进行清理的最佳方法.但是,如果您有一个RCP应用程序,可能需要打开多个编辑器,那么处理此问题的正确方法是什么?

java eclipse application-shutdown

7
推荐指数
2
解决办法
4463
查看次数

如何在java中创建用于运行物理模拟的Linux集群?

我正在开发一个用于执行物理模拟的科学应用程序.使用的算法是O(n3),因此对于大量数据,处理需要很长时间.该应用程序在大约17分钟内运行模拟,我必须运行大约25,000次模拟.这大约是一年的处理时间.

好消息是模拟完全相互独立,因此我可以轻松地更改程序以在多台计算机之间分配工作.

我可以看到有多种解决方案来实现这一点:

  • 获取多核计算机并在所有核心之间分配工作.不足以满足我的需要.
  • 编写一个连接到多个"处理"服务器的应用程序,并在它们之间分配负载.
  • 获得廉价的Linux计算机集群,让程序将所有内容视为一个单独的实体.

选项号2相对容易实现,所以我不太关注如何实现它的建议(可以通过编写等待给定端口的参数的程序,处理值并返回结果来完成作为序列化文件).这将是网格计算的一个很好的例子.

但是,我想知道最后一个选项的可能性,传统的集群.在linux网格中运行Java程序有多难?是否将所有单独的计算机视为具有多个核心的单台计算机,从而轻松调整程序?是否有任何关于资源的好指针可以让我开始?或者我让这个过于复杂,我最好用2号选项?

编辑:作为额外的信息,我感兴趣的是如何实现这篇文章中描述的内容来自Wired Magazine:Scientific用Playstation 3 linux集群取代了一台超级计算机.确切地说,第二个听起来像是要走的路......但是很酷的因素.

编辑2:计算非常受CPU限制.基本上在大矩阵上有很多操作,例如反向和乘法.我试图为这些操作寻找更好的算法,但到目前为止,我发现我需要的操作是0(n3)(在通常可用的库中).数据集很大(对于此类操作),但它是基于输入参数在客户端上创建的.


我现在看到我对Linux下的计算机集群如何工作有误解.我假设它会以这样一种方式工作:它看起来你所有计算机中的所有处理器都可用,就好像你有一台具有多个核心的计算机一样,但似乎并非如此.似乎所有这些超级计算机都通过让节点执行由某个中央实体分发的任务来工作,并且有几个不同的库和软件包允许轻松地执行此分发.

因此,问题确实变成了,因为没有第3项这样的东西:创建集群Java应用程序的最佳方法是什么?

java linux playstation cluster-computing grid-computing

6
推荐指数
1
解决办法
4633
查看次数

关于Eclipse的JUnit报告

JUnit与eclipse的集成非常好.但是,我希望一个功能能够从单元测试中生成快速报告.运行无头构建时可以这样做(我的夜间构建配置为这样做),但有时我想从UI生成报告.

反正有没有这样做?命令行选项可能吗?一个额外的插件?也许功能已经存在,我找不到它?

编辑:我有一个PDE构建,因为我的项目是一个RCP应用程序.因此,从这个版本运行测试并不是那么简单.我想我可以尝试破解一个较小的ANT脚本来进行测试,但是我可能不得不与类路径争夺以获得我想要的东西.我希望找到一些已经存在的JUnit插件的扩展,它将提供有关树视图的信息,但是作为HTML文档.

java eclipse junit

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

使用ANT时,如果我有一些特定的java版本,我怎么才能定义任务?

我有一个问题,只有在构建计算机中安装了Java 1.5时,才能执行Ant中的特定步骤.任务定义使用使用1.5编译的jar文件,因此使用1.4虚拟机运行将抛出IncompatibleClassVersion异常.

我必须找到一个解决方案,同时让这个任务适用于需要1.4的特定项目,但是我遇到了一个问题.如果我没有特定的Java版本,如何避免定义此任务并执行此可选步骤?

我可以在目标标签上使用"if"或"unless"标签,但这些标签只检查是否设置了属性.我也希望有一个不需要额外库的解决方案,但我不知道标准中的内置功能是否足以执行这样的任务.

java ant conditional

5
推荐指数
1
解决办法
4023
查看次数

Java对象序列化性能提示

我必须将一个巨大的对象树(7,000)序列化到磁盘中.最初我们将这棵树保存在一个带有Kodo的数据库中,但它会使成千上万的查询将这棵树加载到内存中,并且它将占用本地宇宙可用时间的很大一部分.

我为此尝试了序列化,实际上我获得了性能提升.但是,我觉得我可以通过编写自己的自定义序列化代码来改进这一点.我需要尽快加载这个序列化对象.

在我的机器中,序列化/反序列化这些对象大约需要15秒.从数据库加载它们大约需要40秒.

关于我可以做些什么来提高性能的任何提示,考虑到因为对象在树中,它们相互引用?

java serialization

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

学习使用Java Batik Library的资源和教程

我正在使用Batik库,这对于在Java中显示SVG图形非常有用.对于显示和呈现SVG文档的基本用例,使用起来非常简单.但是,我想做一些其他高级图形处理,我正在努力,因为我找不到任何可以让我执行以下类型任务的好资源:

  • 检测鼠标下的组件
  • 通过id获取组件并更改用于渲染的颜色
  • 操纵组件
  • 添加新组件
  • 检测鼠标对组件的点击

有没有什么好的资源或技巧可以使用你知道的这个库?

java batik

5
推荐指数
2
解决办法
7897
查看次数

getMethod 正在缓存并导致内存泄漏

我正在使用自动生成的 Java 类来执行特殊方法。因此,我必须通过反射调用该方法。

此执行由 Swing 线程触发,因为该方法(从“未知”类调用)正在更新 UI 元素。新线程的每次执行都是通过调用在类中搜索方法

Class {
...
public Method[] getMethods() throws SecurityException
...
}
Run Code Online (Sandbox Code Playgroud)

getMethods 的逻辑,缓存元素,但我不知道为什么。Profiler 告诉我,Method 对象正在浮动内存。

我可以通过设置系统属性“sun.reflect.noCaches”来禁用 Java 的方法缓存,但是在我更改这些属性后,我的应用程序变得异常缓慢。

问题: 在尝试从类中获取方法之前,我可以实现自己的缓存算法。但是我正在工作的项目非常大,我们有多个反射调用。

什么可以解决这些问题?

哪些情况会触发这些内存泄漏(错误的类加载器,...)?

该项目使用 Java 1.5 在 Linux 下运行

java reflection memory-leaks class

5
推荐指数
1
解决办法
2452
查看次数

是否可以从另一台虚拟机中杀死Java虚拟机?

我有一个Java应用程序,启动另一个Java应用程序.启动器具有监视计时器,并从第二个VM接收定期通知.但是,如果没有收到通知,则应该终止第二个虚拟机,并且启动器将执行一些额外的清理活动.

问题是,有没有办法只用java做这个?到目前为止,我必须使用一些本机方法来执行此操作,它有点难看.

谢谢!

java process-management

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

是否可以使用ant自动创建一个inno安装包?

我正在创建一个Eclipse RCP应用程序.

我在以下文章"Daily Builds是你的朋友"中遵循Joel的建议:

http://www.joelonsoftware.com/articles/fog0000000023.html

所以,我编写了一个很好的构建脚本,它创建了一个Eclipse RCP产品,并对代码运行单元测试.然后将所有结果分发到开发人员列表中(在一些抱怨之后).现在我的下一步,我希望它创建我通常使用inno setup编译器手动创建的安装程序包.

问题是,如何自动创建此包?我想我可以从ant自动生成inno安装文件,然后从命令行调用编译器,但我不知道这是否可行.

有关此任务的任何提示吗?也许任何其他可以从蚂蚁使用的设置应用程序?

java eclipse rcp inno-setup

3
推荐指数
2
解决办法
5907
查看次数

如何在BAT文件的目录中解压缩最新文件?

我正在构建一个构建系统.构建系统将结果作为zip文件发布到目录中.不幸的是,我没有简单的方法来知道zip文件的名称,因为它是带时间戳的.对于下一个操作,我必须将此zip文件解压缩到某个特定位置,然后再执行一些文件操作.

我想我可以更改构建系统,所以我从命令行指定结果zip文件的名称,但是,我可能最容易找出哪个是最新文件并解压缩它(如果前一个过程是成功的).

如何发出只对目录中最新的zip文件生效的解压缩命令,忽略所有其他命令?

编辑:我决定使用ANT中的功能代替此任务.然而,这仍然是一个巧妙的伎俩... ...谢谢你的答案!

build-process batch-file unzip

3
推荐指数
1
解决办法
2945
查看次数

您对开源项目的贡献是什么?

我一直在想这个看似乌托邦的开源世界.

假设这里的绝大多数用户都是需要某种收入来源的专业软件工程师,我认为我们大多数人都持有稳定的赚钱工作.

那么谁是开源社区的关键人物呢?谁是将这些宝贵时间用于这些项目的人?他们的好处是什么?大多数人只是看到错误,修复,提交和忘记项目的人吗?或者他们是否经常参与构建产品的过程?

您如何发现自己为开源项目做出贡献?

open-source

3
推荐指数
3
解决办法
2374
查看次数

在PHP中向后计数日显示

我想显示特定日期的失踪天数.换句话说,我想要显示如下内容:

X天去参加这个盛会

使用PHP和服务器时间.

php datetime date strtotime

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

如何查找和删除空文件?

作为Ant进程的结果,我生成了几个文件(批处理svn diff的内容)。在这种情况下,某些差异文件为空,因此我想自动删除它们,因此我只能专注于差异。

是否有一个Ant任务可以让我轻松删除所有0字节的文件?

ant

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