小编san*_*ity的帖子

将Java桌面应用程序部署到多个平台的最佳方法是什么?

我正在编写一个旨在桌面上运行的Java应用程序,它将使用Swing作为其UI.我熟悉Java Web Start,但听说它很麻烦且有问题.

有哪些工具可以更轻松地将Java应用程序部署到多个平台?我特别寻找免费提供的工具,或者至少可以免费使用开源项目的工具.

编辑:我应该澄清这是一个主要在后台运行的点对点应用程序,并且(可选)能够在Windows,Mac和Linux上自动启动.

编辑2:我应该进一步澄清,这个应用程序旨在在政府可能审查我们的网站的国家运作.因此,重要的是它可以作为独立文件分发,而不是必须从已知网站下载的内容.

java

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

如何将URL分解为Java中的组件部分?

我的要求相当简单,但我需要做很多这样的事情,所以我正在寻找一个强大的解决方案.

是否有一个很好的轻量级库,用于将URL分解为Java中的组件部分?我指的是主机名,查询字符串等.

java

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

如何使用Grizzly2在Jersey中以编程方式启用POJO映射?

按照这里的说明我有这个代码:

private static URI getBaseURI() {
    return UriBuilder.fromUri("http://localhost/").port(9998).build();
}

public static final URI BASE_URI = getBaseURI();

protected static HttpServer startServer() throws IOException {
    System.out.println("Starting grizzly...");
    final ResourceConfig rc = new PackagesResourceConfig("amplify.api.resources");
    return GrizzlyServerFactory.createHttpServer(BASE_URI, rc);
}

public static void main(final String[] args) throws IOException {
    final HttpServer httpServer = startServer();
    System.out.println(String.format("Jersey app started with WADL available at "
            + "%sapplication.wadl\nTry out %shelloworld\nHit enter to stop it...", BASE_URI, BASE_URI));
    System.in.read();
    httpServer.stop();
}
Run Code Online (Sandbox Code Playgroud)

接下来我想启用这里描述的JSON POJO支持,但问题是我想以编程方式而不是通过web.xml文件(我没有web.xml文件!)来完成.

如何修改上面的代码以启用JSON POJO映射功能?

java jersey grizzly

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

如何让Logback与Eclipse很好地协同工作?

如何让我的日志框架(目前是Logback)与Eclipse很好地配合?特别是,单击日志语句并将其带到生成它的行是很好的.

我知道Logback Eclipse插件,但显然它已经过时了,只适用于旧版本的Logback.

是否有一些其他日志框架可以更好地与Eclipse一起使用?我认为必须有一个很好的方法来做到这一点.

java eclipse logback

6
推荐指数
2
解决办法
3289
查看次数

有没有一个工具可以查看我的 Java 代码,并建议一个好的包结构?

我有一个很大的代码库,我想重构包结构,以便大量交互的类位于同一个包中。

看来应该可以创建一个工具来查看类之间的交互,然后将那些交互频繁的类组合在一起。这些分组可能会建议一个良好的包层次结构。

存在这样的工具吗?(开源是首选)。

java refactoring

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

有什么理由我无法创建支持中缀,后缀和前缀功能的语言,还有更多?

我一直在考虑创建一种非常适合创建DSL的语言,允许定义中缀,后缀,前缀或甚至由多个单词组成的函数.例如,您可以按如下方式定义中缀乘法运算符(其中已定义了乘法(X,Y)):

a * b => multiply(a,b)
Run Code Online (Sandbox Code Playgroud)

或后缀"平方"运算符:

a squared => a * a
Run Code Online (Sandbox Code Playgroud)

或者是C或Java风格的三元运算符,它包含两个散布着变量的关键字:

a ? b : c => if a==true then b else c
Run Code Online (Sandbox Code Playgroud)

显然,在这种语言中存在大量的歧义空间,但如果它是静态类型的(使用类型推断),那么大多数歧义可以被消除,而剩下的那些可以被认为是语法错误(通过添加括号来纠正适当).

有什么理由我没有看到这会使这个极其困难,不可能,或者只是一个简单的坏主意?

编辑:很多人都指出了可以做到这一点或类似事情的语言,但我实际上对如何实现自己的解析器的指针感兴趣,或者如果这样做我可能会遇到的问题.

syntax parsing programming-languages infix-notation postfix-notation

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

估计给出来自先验的其他概率的概率

我有一堆数据(呼叫自动呼叫中心)关于一个人是否购买特定产品,1个购买,0个购买.

我想用这些数据来估算一个人购买特定产品的估计概率,但问题是我可能需要用相对较少的历史数据来做这件事,这些数据是关于有多少人购买/没有购买该产品.

一位朋友建议,在贝叶斯概率下,您可以通过提出"先验概率分布"来"帮助"您的概率估计,实际上这是在考虑实际数据之前有关您期望看到的信息.

所以我想要做的是创建一个类似这个签名(Java)的方法:

double estimateProbability(double[] priorProbabilities, int buyCount, int noBuyCount);
Run Code Online (Sandbox Code Playgroud)

priorProbabilities是我在之前的产品中看到的概率数组,该方法将用于为此概率创建先验分布.buyCount和noBuyCount是该产品特有的实际数据,我想根据数据和先前的数据估算用户购买的概率.这是从方法返回的双精度数.

我不需要数学上完美的解决方案,只需要比统一或平坦的先验更好的东西(即概率= buyCount /(buyCount + noBuyCount)).由于我对源代码比数学符号更熟悉,如果人们可以在他们的解释中使用代码,我会很感激.

java statistics probability

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

寻找快速,紧凑,可流式,多语言,强类型的序列化格式

我目前在我的Java项目中使用JSON(通过gzip压缩),我需要在磁盘上存储大量对象(数亿个).我每行有一个JSON对象,并禁止JSON对象中的换行符.通过这种方式,我可以逐行从磁盘流式传输数据,而无需一次读取整个文件.

事实证明,解析JSON代码(使用http://www.json.org/java/)比从磁盘上提取原始数据或解压缩它(我在运行中这样做)的开销要大得多.

理想情况下,我想要的是强类型序列化格式,我可以在其中指定"此对象字段是字符串列表"(例如),并且因为系统知道会发生什么,它可以快速反序列化.我也可以通过给别人"类型"来指定格式.

它还需要跨平台.我使用Java,但与使用PHP,Python和其他语言的人一起工作.

所以,回顾一下,它应该是:

  • 强类型
  • 可流式传输(即逐位读取文件而无需一次性将其全部加载到RAM中)
  • 跨平台(包括Java和PHP)
  • 快速
  • 免费(如发言)

有什么指针吗?

php java serialization strong-typing

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

LRU LinkedHashMap根据可用内存限制大小

我想创建一个LinkedHashMap,它将根据可用内存限制其大小(即,当freeMemory + (maxMemory - allocatedMemory)达到某个阈值时).这将用作缓存的一种形式,可能使用"最近最少使用"作为缓存策略.

我担心的是,allocateMemory还包括(我假设)未垃圾收集的数据,因此将高估估计已用内存的数量.我担心这可能产生的意外后果.

例如,LinkedHashMap可能会继续删除项目,因为它认为没有足够的可用内存,但可用内存不会增加,因为这些已删除的项目不会立即被垃圾回收.

有没有人有这种类型的经验?我的顾虑值得关注吗?如果是这样,有人可以建议一个好的方法吗?

我应该补充一点,我也希望能够"锁定"缓存,基本上说"好吧,从现在开始不要因为内存使用问题而删除任何东西".

java garbage-collection memory-management

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

JPA EntityManager:merge() 试图在数据库中创建一个新行 - 为什么?

我正在通过 Play 框架使用 JPA。

我正在检查 User 对象是否被缓存,如果是,我检索它并合并()它以便我可以更新字段并稍后保存更改:

user = (User) Cache.get("user-auth-" + sessionAuthToken);
if (user != null) {
    user = user.merge();  // I believe this is the same as EntityManager.merge()
}
Run Code Online (Sandbox Code Playgroud)

但是,当我这样做时,我收到以下错误:

PersistenceException occured : 
  org.hibernate.exception.ConstraintViolationException: 
    could not insert: [models.User]
...
Caused by: com.mysql.jdbc.exceptions.jdbc4.
   MySQLIntegrityConstraintViolationException: 
     Duplicate entry '1235411688335416533' for key 'authToken'
Run Code Online (Sandbox Code Playgroud)

它似乎试图插入一个新用户,即使这个用户应该是,并且已经在数据库中。为什么要 merge() 这样做?

或者我可能完全以错误的方式处理这个问题 - 建议将不胜感激。

java jpa playframework

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