小编Sna*_*Doc的帖子

确定记录是否存在的最快方法

正如标题所暗示的那样......我正在试图以最少的开销来找出最快的方法来确定表中是否存在记录.

示例查询:

SELECT COUNT(*) FROM products WHERE products.id = ?;

    vs

SELECT COUNT(products.id) FROM products WHERE products.id = ?;

    vs

SELECT products.id FROM products WHERE products.id = ?;
Run Code Online (Sandbox Code Playgroud)

假设?'TB100'... 交换...第一个和第二个查询将返回完全相同的结果(例如... 1对于此对话).最后一个查询将按'TB100'预期返回,如果id表中没有,则不返回任何内容.

目的是弄清楚id表中是否有.如果没有,程序将接下来插入记录,如果是,程序将跳过它或基于该问题范围之外的其他程序逻辑执行UPDATE查询.

哪个更快,开销更少?(每个程序运行将重复数万次,并且每天将运行多次).

(通过M $提供的JDBC驱动程序从Java运行此M $ SQL Server查询)

sql sql-server performance select count

125
推荐指数
7
解决办法
39万
查看次数

从命令行运行JAR文件并指定classpath

我编译了一个JAR文件并在清单中指定了Main-Class(我使用了Eclipse Export函数).我的依赖项都在标记的目录中lib.我似乎无法得到关于如何执行我的JAR文件的直接答案,同时指定它应该使用lib/*作为类路径.

我试过了:

]$ java -jar -cp .:lib/* MyJar.jar
]$ java -cp .:lib/* -jar MyJar.jar
]$ java -cp .:lib/* com.somepackage.subpackage.Main
Run Code Online (Sandbox Code Playgroud)

等等...

每个都给出一个错误说:

Error: Could not find or load main class ....

或者NoClassDefFoundError表示没有找到库.

我甚至尝试重新制作JAR文件并包含lib目录和内容,但仍然没有骰子......

如何从命令行执行JAR文件并指定要使用的类路径?

java shell command-line classpath

107
推荐指数
4
解决办法
20万
查看次数

究竟什么是Java EE呢?

Java EE为年轻的Java开发人员提供了这个"神秘的裹尸布" - 我一直试图提升自己很长一段时间但收效甚微.

混淆起因于:

  • Java EE似乎既是一个库又是一个平台 - 有多种方法可以"获取"Java EE库,通常来自Oracle的Java EE SDK下载.但是,除非您的代码正在运行或者可以访问Java EE应用程序服务器(例如JBoss,GlassFish,Tomcat等),否则Java EE库将无法工作或编译.为什么?库不能在应用程序服务器环境之外运行吗?为什么我需要像JBoss那样庞大的东西才能编译简单的代码来发送电子邮件?

  • 为什么Java EE库不是"标准"并包含在常规JVM下载和/或SDK中?

  • 当只有两种主要标准Java(Oracle JVM/SDK | OpenJDK JVM/JDK)时,为什么会有这么多Java EE产品?

  • 使用标准Java无法对Java EE做什么?

  • 使用标准Java可以用Java EE做些什么呢?

  • 开发人员何时决定"需要"Java EE?

  • 开发人员什么时候决定他们不需要Java EE?

  • 为什么Java EE库版本与标准Java库版本(Java EE 6与Java 7)不同步?

谢谢你帮我清理鞭子!

java java-ee

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

未初始化的对象与对象初始化为NULL

我在Java工作.

我通常会设置一些对象:

public class Foo {
    private SomeObject someName;

    // do stuff

    public void someMethod() {
        if (this.someName != null) {
            // do some stuff
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是:someName在这个例子中等于null,as-in我可以reliably for all objects假设null检查未初始化的对象是否准确?

java null initialization

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

GoDaddy SSL证书不使用Java

UPDATE 1/26/2015 -- It appears the most recent JRE/JDK for Java 8 (update >= 31) and JRE/JDK for Java 7 now include the Godaddy G2 CA server in the default trust store. If possible, it's urged you upgrade your JRE/JDK to the latest Java 8 update to resolve this issue.

更新2014年11月29日 - 这仍然是一个问题,Godaddy似乎不关心也不会做任何事情.几个月前,Godaddy安全产品副总裁在这里发布了一篇博客文章,说它正在修复它并提供了一个临时的解决方案,但到目前为止没有任何改变.值得注意的是Godaddy的G2 CA服务器已经存在了至少5年,并且在那段时间Godaddy没有采取适当的步骤来解决这个已知问题.所提供的解决方案就是解决方案,而不是解决方案.第三方服务的用户无法控制服务器上的证书安装方式.

It seems users should avoid purchasing Godaddy SSL certs until they get serious about being a CA.

如果您愿意致电以下是他们的SSL团队的联系信息:

GoDaddy SSL Team Support Number: 1-480-505-8852 …

java ssl jakarta-mail zimbra

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

Object ... args的正确术语

我正在使用Java,并且为方法指定多个args的典型方法是:

public static void someMethod(String[] args)
Run Code Online (Sandbox Code Playgroud)

但是,我已经看过几次,甚至在标准的Java库中.我不知道如何在谈话中提及这一点,并且由于使用了字符,谷歌搜索没有多大帮助.

public static void someMethod(Object... args)
Run Code Online (Sandbox Code Playgroud)

我知道这允许你将一串或多个参数串联到一个方法中,而不必提前知道确切的数量,例如:

someMethod(String arg1, String arg2, String arg3, ... etc
Run Code Online (Sandbox Code Playgroud)

你如何引用这种方法签名设置?我认为这很好,很方便,并希望向其他人解释,但我缺乏如何参考这一点.谢谢.

java methods args

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

JavaScript中的BigDecimal

我是JavaScript的新手(我来自Java背景),我正在尝试用少量资金进行一些财务计算.

我原来的目的是:

<script type="text/javascript">
    var normBase = ("[price]").replace("$", "");
    var salesBase = ("[saleprice]").replace("$", "");
    var base;
    if (salesBase != 0) {
        base = salesBase;
    } else {
        base = normBase;
    }
    var per5  = (base - (base * 0.05));
    var per7  = (base - (base * 0.07));
    var per10 = (base - (base * 0.10));
    var per15 = (base - (base * 0.15));
    document.write
        (
        '5% Off: $'  + (Math.ceil(per5  * 100) / 100).toFixed(2) + '<br/>' +
        '7% Off: $' …
Run Code Online (Sandbox Code Playgroud)

javascript floating-point bigdecimal

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

JRE 32位对比64位

我一直在使用Java一段时间,而我设置新开发机器的典型仪式需要从Oracle网站下载和安装最新JDK的规范.

这引发了一个不寻常的问题, does it matter if I use the 32bit or 64bit JRE bundle?

回过头来看,我之前已经安装了两个版本,而且我的普通工具链很快就插入了(Eclipse).在我的日常编程中,我不记得曾经因为我使用的是64位JRE(或针对这方面的目标是64位JRE)而不得不以不同的方式改变某些东西或思考某些东西.

根据我对64位与32位的理解 - 它实际上归结为数字如何存储在封面下...我知道这int是32位并且long是64位...与float32位相同并且double是64位 - 所以只是Java已经抽象出了这个微妙之处,并且可能一直都是"64位兼容"吗?

我确定我在这里遗漏了一些东西,除了无法在32位系统上安装64位JRE.

java x86 x86-64 jvm-hotspot

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

为什么-Xrs会降低性能

来自IBM:

-Xrs

禁用JVM中的信号处理.

-Xrs

设置-Xrs可防止Java™运行时环境处理任何内部或外部生成的信号,如SIGSEGV和SIGABRT.引发的任何信号都由默认的操作系统处理程序处理.在JVM中禁用信号处理会使性能降低大约2-4%,具体取决于应用程序.

-Xrs:同步

在UNIX系统上,此选项禁用JVM中用于SIGSEGV,SIGFPE,SIGBUS,SIGILL,SIGTRAP和SIGABRT信号的信号处理.但是,JVM仍然处理SIGQUIT和SIGTERM信号等.与-Xrs一样,使用-Xrs:sync可将性能降低约2-4%,具体取决于应用程序.

注意:设置此选项可防止JVM为SIGSEGV和SIGABRT等信号生成转储,因为JVM不再拦截这些信号.

https://www-01.ibm.com/support/knowledgecenter/SSYKE2_7.0.0/com.ibm.java.aix.70.doc/diag/appendixes/cmdline/Xrs.html

根据我的理解,-Xrs实际上用于防止在截获某些OS信号时生成转储.

由于JVM不再截获和处理这些信号,它会站在原因,这会提高性能,而不是减少,如权利由IBM了.

为什么-Xrs降低性能?

java jvm

10
推荐指数
2
解决办法
5416
查看次数

在Jar内部打包并使用嵌入式数据库(H2.db文件)?

我正在为我的应用程序使用H2嵌入式数据库.我想在其自己的Jar中包含应用程序所需的所有内容,如果可能话,包括它的数据库.我的应用程序不需要创建临时文件或任何东西,所以基本上用户只运行Jar.

是否可以在Jar中嵌入数据库,并且能够创建INSERT新记录以及刚SELECT出来?

编辑:只是为了澄清,我不打算将H2驱动程序jar嵌入我的可分发jar中,我希望将h2数据库文件(someDatabase.h2.db文件)嵌入到Jar中,并且仍然能够从该数据库中写入/读取.

java database packaging jar h2

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