小编Dur*_*dal的帖子

String.hashCode()是否可以跨VM,JDK和OS移植?

最近出现了一个有趣的问题.我们遇到了一些hashCode()用作MD5加密的salt源的代码,但是这引出了一个问题:将hashCode()在不同的VM,不同的JDK版本和操作系统上为同一对象返回相同的值吗?即使它没有保证,它现在在任何时候都有变化吗?

编辑:我的意思是,String.hashCode()而不是更一般Object.hashCode(),当然可以被覆盖.

java hashcode

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

如何使用 Java 中的 Postgres JDBC 驱动程序获取导致 SQLException 的 sql 语句?

背景

在我当前的项目 - 一个没有 GUI 前端的服务器产品中,我试图编写更好的错误处理支持。错误当前输出到日志中,用户通常不会读取。

我们使用 PostgreSQL 作为我们的数据库后端,并通过数据库池程序使用直接的 JDBC 调用和 DAO 访问它。大多数与数据库相关的异常都包含在一个通用DatabaseException类中,该类实现RuntimeException并尝试从传递的异常中提取调试和状态信息。在我们的特殊情况下,它将访问底层 PostgreSQL 数据库驱动程序 - PSQLException。到目前为止,这种方法在获取关于导致数据库错误的原因的详细信息方面效果很好,下面描述了一个值得注意的例外。

此外,由于我们有非常具体的性能和遗留支持要求,我们有很多自定义 SQL魔法,这使得跟踪堆栈回溯的时间更加密集,但并非不可能或困难。

问题描述

我注意到当我们SQLException因为错误的 SQL 语句而得到 a 时,驱动程序的实现不会返回导致错误的 SQL 语句。在做了一些搜索之后,我发现有一种方法可以在启动时将 PostgreSQL 驱动程序放入调试模式并让它显示有关其内部查询的属性。但是,我们不希望在我们的生产环境中以调试模式运行驱动程序(老实说,我一直无法弄清楚如何让它进入 freakin 模式!)。

有没有其他人之前处理过同样的问题并找到了解决方案?如果没有,是否有一些 OOP 模式可以在执行之前存储查询信息,然后将该信息分配给抛出的异常?还是大多数开发人员只是觉得他们不需要完整的查询来解决数据库问题?老实说,我不需要它,因为我有完整的堆栈跟踪,我可以查找调用查询,但它肯定会加快我的调试速度,因为它是我在错误日志中看到的第一件事。

java postgresql exception-handling exception jdbc

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

绘图点与aChartEngine中的X轴计数无关

我用于MultipleTemperatureChart.java多个Y轴图表,我在Y1 轴上绘制了5条单独线的序列,在Y2轴上绘制了5条单独的线,参考

X轴包含12个点,所有Y轴也包含12个点.这些绘制的线是标准值现在我想在x和y轴上再绘制一条线,它只包含3或4个点如何绘制它们.我被困在这里PLZ帮助我

我正在使用 AChartEngine 1.2.0.jar

android graph achartengine

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

ColdFusion查询java.sql.ResultSet

我已经看过"非文档化",我可以看到如何创建coldfusion.sql.QueryTable一个ResultSet,但不是相反.那么,如何java.sql.ResultSet从ColdFusion(coldfusion.sql.QueryTable)查询对象中提取?

java coldfusion resultset

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

为什么Joda DateTime给出的结果与Java Date不同?

我用UTC时区测试了Joda DateTime java.util.Date,我遇到了一个有趣的案例:

import org.joda.time.DateTime;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.*;
import java.util.Date;

public class Main {

    public static void main(String[] args) throws ParseException {
        String dt = "2011-06-11T12:00:00Z";
        String format = "yyyy-MM-dd'T'hh:mm:ss'Z'";

        DateFormat df = new SimpleDateFormat(format);
        df.setTimeZone(TimeZone.getTimeZone("UTC"));

        Date d = df.parse(dt);
        DateTime joda = new DateTime(dt);

        // Output Sat Jun 11 05:00:00 PDT 2011
        System.out.println(joda.toDate());

        // Output Fri Jun 10 17:00:00 PDT 2011
        System.out.println(d);
    }
}
Run Code Online (Sandbox Code Playgroud)

我想知道这是一个错误,还是我错过了一些重要的事情?

java datetime date jodatime

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

使用Bytebuffers和NIO时如何避免OutOfMemoryError?

我正在使用ByteBuffers并将FileChannels二进制数据写入文件.当为大文件或连续多个文件执行此操作时,我得到一个OutOfMemoryError例外.我在其他地方读过,Bytebuffers与NIO一起使用已被打破,应该避免.你们中是否有人遇到过这种问题,并找到了一个有效地在java文件中保存大量二进制数据的解决方案?

jvm选项是否可行-XX:MaxDirectMemorySize

java nio bytebuffer filechannel

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

被Java泛型混淆需要强制转换

我对以下代码感到困惑:

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class GenericsTest<T extends List> {

  public void foo() {
    T var = (T) new LinkedList();
  }

  public static void main(String[] args) {
      GenericsTest<ArrayList> gt1 = new GenericsTest<ArrayList>();
      gt1.foo();
      System.out.println("Done");
  }
}
Run Code Online (Sandbox Code Playgroud)

无论我传递给构造函数的Type参数如何,运行时类型T似乎都是java.util.List.

那么为什么编译器T在分配var时需要转换?它不应该在编译时知道LinkedList可分配给List吗?

我理解代码是假的,我理解为什么它在运行时工作,即使它看起来不应该.令我困惑的部分是为什么编译器要求我在进行赋值时键入(T)?然而,如果没有伪造的话,它可以很好地编译.

据推测,编译器理解擦除.看起来编译器应该能够在没有强制转换的情况下编译代码.

java generics casting

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

Eclipse SWT - Java编程困境

我正在编写一个Eclipse插件,它打开一个文件并显示文件中包含的所有图像.此图像显示是GUI应用程序的一部分.通过将每个图像与SWT Canvas小部件相关联来呈现每个图像.当我打开文件时,我拥有确定我必须显示的图像数量所需的所有信息.我虽然一个接一个地创建所有Canvas对象并将每个Canvas对象存储在某种类型的数组(如数据结构)中是有意义的.我打开的每个文件都有不同数量的图像要显示.我决定用一个ArrayList.

我按如下步骤操作:我为每个图像创建一个Canvas对象,并将所有Canvas对象存储在一个ArrayList.问题在于:每个Canvas对象都有一个PaintListenerMouseListener与之关联 - 用于调整大小并检测图像是否已被"单击".我在'for循环'中创建所有Canvas对象 - 包括为每个Canvas对象分配一个PaintListenerMouseListener,如下所示:

`

//
// Assume the following ArrayLists have been defined:
// myCanvases, myImages, and myFrames
//

for (int i = 0; i < numberOfImages; i++) {

    canvas = new Canvas(getMyComposite(), SWT.BORDER | 
        SWT.NO_MERGE_PAINTS | SWT.NONE );

    canvas.setLayoutData(getMyGridData());

.
    .
    .

    canvas.addPaintListener(new PaintListener() {
    public void paintControl(final PaintEvent event) {
        if (myImages.get(i) != null) {
                myImages.get(i).dispose();
                event.gc.drawImage(mySceneImages.get(element), 0, 0);
    }
    }
}); …
Run Code Online (Sandbox Code Playgroud)

java eclipse swt

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

静态与实例共享使用方法

这是我想要确定的......

我有一个实用程序类来将行附加到文本文件.这必须由许多其他类使用,例如常见的日志文件.

在我的第一个实现中,我让所有想要使用它的类成为无引用的实例,例如

new Logger(logline,logname);

构造函数创建一个PrintWriter,追加该行并关闭该文件.

这似乎很浪费,因为每个附加的行都会生成一个新实例.

另一种方法是在这个公共类中使用一个名为"writeln"的静态方法,因为我已经理解静态方法和数据一遍又一遍地重复使用相同的内存......但是

这个静态方法创建了一个PrintWriter 实现其工作的实例,所以这是否意味着PrintWriter为每一行创建一个新实例,比如#1?

无论如何,(我对Java相对较新)是否有一种众所周知的,批准的方式,或者我们只是创造了,让垃圾收集器在我们之后清理?

谢谢

java methods static instance

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

当"\n"嵌入为文本时,格式化SHOW ENGINE INNODB STATUS输出

我指的是这个链接

我通过这个命令输出:

mysql -e "show engine innodb status" -u -p database > mydumpfile.txt

但是,我使用的任何编辑器(less,vim,kwrite)都显示\n而不是真正的新行.

如何用shell中的sed,awk或任何其他工具完成替换?

mysql shell awk newline sed

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

Eclipse中的OutOfMemory发布过程

我使用第三方插件在eclipse中有一个OutOfMemory(堆大小)插件是Adobe Livecycle工作台,在内存不足时,插件通过WS(使用Axis)检索我服务器上大约70个工作流组件的列表

这是Eclipse中调用堆栈的摘录

...在org.eclipse.equinox.launcher.Main.main(Main.java:1144)

引起:java.lang.OutOfMemoryError:Java堆空间; 嵌套异常是:java.lang.OutOfMemoryError:org.apache.axis.message.SOAPFaultBuilder.createFault中的Java堆空间...

我正在使用这个eclipse.ini

-showlocation
-vm
C:\ bea920\jdk150_04\bin\javaw.exe
-vmargs
-Xms512M
-Xmx1024M

我不使用任何命令行选项

我已将-Xmx1024m添加到我在Java/Installed JRE中唯一安装的JRE中

在我看来:-eclipse不是OutOfMemory本身它只显示1024Mo中的1024Mo使用它继续正常工作 - 插件启动其轴解析而不给它足够的内存

问题: - 我的假设是对的吗? - 如何在eclipse启动器启动的过程中找到更多内存的位置和方式?

java eclipse

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

javascript split()函数 - 每个字符串末尾的ghost字符

我正在读取我在Windows中的记事本中创建的文件.(基本的txt编辑器.)

在创建我写的文件时(其中[newline]表示返回)

APP.EXE [换行符] background.jpg [换行符]

然后保存了它.我把它放到一个目录中.

我的Nodekit程序读取此文件,然后执行以下操作:

var data = fs.readFileSync(filenameTemp, "utf8");
data.replace(/\r\n/g, "\n");
data.replace(/\r/g, "\n");
var strARR = data.split("\n");
Run Code Online (Sandbox Code Playgroud)

strARR[0]是长度8 ????? 当"app.exe"长度为7.当我strARR[0][7]在Chrome中查看时它表示它是"",即没有任何内容的字符串.strARR[1]当"background.jpg"长度为14时,长度为15.再次Chrome报告额外的字符作为"". strARR[2]是预期的长度为0.

这个幽灵角色来自哪里?它导致我得到的另一个错误.

javascript split

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

在通过for循环连接字符串输出后删除最后一个字符?

$holder = '';

foreach($fields as $key){
    $holder .= $key.', ';
}

echo $holder;
Run Code Online (Sandbox Code Playgroud)

我有上面的代码,它输出"a,b,c,"我想在c之后删除逗号.我试过substr而且它不起作用.任何帮助?

php

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