指定log4j日期的时区

是否可以指定log4j将使用的时区? 我需要日志文件中的日期与应用程序的时区不同。 log4j的PatternLayout使用SimpleDateFormat 。 不幸的是,似乎没有办法通过模式字符串控制SimpleDateFormat的时区( DateFormat有setTimeZone方法,但这没有帮助)。 我查看了log4j的源代码,并且在PatternParser.finalizeConverter中正在使用SimpleDateFormat 。 不幸的是,没有一种简单的方法来保持DateFormat来设置时区。

如何深度复制二维数组(不同的行大小)

这是我在这样的社区中的第一个问题,所以我的格式可能不是很好的抱歉。 既然我的问题是我想深入复制Java中的二维数组。 使用固定大小的行和列在1维甚至2维数组中进行操作时非常容易。 我的主要问题是我无法对我尝试复制的第二个数组进行初始化,例如: int[][] copyArray = new int[row][column] 因为行大小不固定并且每行索引中的更改(例如我尝试复制此数组): int[][] envoriment = {{1, 1, 1, 1}, {0, 1, 6}, {1}}; 所以你看,如果我说new int[3][4] ,将会有额外的空间,我不想要。 有没有一种深度复制这种二维数组的方法?

为什么我的TreeSet不会添加除第一个元素之外的任何内容?

我在表单中有几个数组: private static String[] patientNames = { “John Lennon”, “Paul McCartney”, “George Harrison”, “Ringo Starr” }; 然后我像这样制作一个TreeSet: TreeSet patTreeSet = new TreeSet(); 患者是另一类产生“患者”对象的人。 然后我遍历我的数组中的每个元素来创建几个患者并将它们添加到我的patTreeSet如下所示: for(int i = 0; i< patientNames.length; i++){ Date dob = date.getDate("MM/dd/yyyy", patientBirthDates[i]); Patient p = new PatientImpl(patientNames[i], patientSSN[i], dob); patTreeSet.add(p); } 但是当我去检查我的patTreeSet.size()时它只返回“1” – 这是为什么? 我知道我的对象运行良好,因为当我尝试使用ArrayList做同样的事情时,一切正常。 所以我猜我正在使用TreeSet错误。 如果有帮助,患者有一个名为getFirstName()的方法,当我尝试执行以下操作时: Iterator patItr = patTreeSet.iterator(); […]

使用Nimbus更改JProgressBar的颜色?

有没有人知道如何在使用Nimbus LookAndFeel时更改JProgressBar的颜色?

hibernate:从列表中删除项目不会保留

从列表中删除项目时遇到问题。 该列表在超类中定义,但Hibernate注释应用于子类中的属性访问器。 超类中有两种方法可以操作列表。 “添加”方法工作正常,但“删除”不会持续更改。 我检查了我的Cascade设置,我似乎有正确的事情。 我做的事情是不可能的。 如果没有,我做错了吗? 这是我的课程: @Entity abstract class Temporal { @Id @GeneratedValue private Long id; @Version private Integer version = null; @Transient protected List content = new ArrayList(); public void remove(T value) { // business logic … content.remove(value); } public void add(T value) { // business logic … content.add(value); } } @Entity […]

StringBuilder与.concat对比“+”运算符相对性能在eclipse中与命令行不同?

我正在阅读如何在可能的情况下java编译器将编译与“+”运算符连接的字符串编译成StringBuilder的实例,以及如何使用简单的“+”运算符,因为它们编译为相同的代码 。 (除非在while循环中构建字符串,在这种情况下,最好使用StringBuilder。) 我还读到字符串上的.concat方法一直是最糟糕的选择 (以至于Findbugs将它变成了一个bug!)。 所以我决定自己在eclipse中编写一个java类来测试它。 我的结果让我感到有些惊讶。 我发现不同的方法相对更快或更慢,如果我在eclipse中比较并在命令行上运行它们。 首先我的日食结果是: the total millis to concatenate with + was: 12154 the total millis to concatenate with .concat was: 8840 the total millis to concatenate with StringBuilder was: 11350 the total millis to concatenate with StringBuilder with a specified size was: 5611 所以在eclipse中,指定大小的StringBuilder最快,然后是.concat(怪异),那么StringBuilder和“+”串联几乎相同。 但是,我在命令行上的结果是: the total millis to […]

T扩展SomeClass有什么意义?

与这样的方法声明有什么区别: public void doSomething(T obj) { // Do something. } 和这个: public void doSomething(SomeClass obj) { // Do Something. } 我看到它的方式,它们都指定传入的对象必须是SomeClass类型的子类,那么为什么在这个实例中根本没有使用generics呢?

Java:无法通过reflection访问注释

这是一个测试类: import java.lang.annotation.Annotation; import java.lang.reflect.Method; public class TestAnnotations { @interface Annotate{} @Annotate public void myMethod(){} public static void main(String[] args) { try{ Method[] methods = TestAnnotations.class.getDeclaredMethods(); Method m = methods[1]; assert m.getName().equals(“myMethod”); System.out.println(“method inspected ? ” + m.getName()); Annotation a = m.getAnnotation(Annotate.class); System.out.println(“annotation ? ” + a); System.out.println(“annotations length ? ” + m.getDeclaredAnnotations().length); } catch(Exception […]

有没有一种比较BufferedImage实例的简单方法?

我正在研究Java应用程序的一部分,该应用程序将图像作为字节数组,将其读入java.awt.image.BufferedImage实例并将其传递给第三方库进行处理。 对于unit testing,我想拍摄一张图像(来自磁盘上的文件)并声明它等于代码处理过的相同图像。 我期望的 BufferedImage是使用ImageIO.read(URL)从磁盘上的PNG文件中读取的。 我的测试代码将同一个文件读入BufferedImage并将其作为PNG写入字节数组,以提供给被测系统。 当被测系统将字节数组写入新的BufferedImage我想断言两个图像以有意义的方式相等。 使用equals() (inheritance自Object )不起作用(当然)。 比较BufferedImage.toString()值也不起作用,因为输出字符串包含对象引用信息。 有人知道任何捷径吗? 我不想在大型应用程序的一小部分中引入第三方库进行单个unit testing。

JScrollPane中的Java JPanel?

我有一个JFrame,在这个JFrame中我有一个我绘制的JPanel,这个Panel可以是任何大小,所以我把它放到一个JScrollpane中让我在面板大于窗口屏幕大小时滚动。 不幸的是,我的预期不起作用: 使JFrame窗口小于JPanel大小不会显示滚动条 JScrollPane大小现在似乎已锁定到我添加到它的JPanel的大小,之前它调整到它的JFrame窗口的边界(它仍然有点这样但现在只是垂直?!) 无论我为首选大小设置什么,JPanel似乎都假设JScrollpane的大小 我确信我做的事情很愚蠢,如果有人能够指出我会非常感激的! JPanel _ImageCanvas = new JPanel(); // ‘Canvas’ to draw on JScrollPane _ScrollPane = new JScrollPane(); // set size of ‘canvas’ _ImageCanvas.setMinimumSize(new Dimension(100,100)); // Scroll pane smaller then the size of the canvas so we should get scroll bars right? _ScrollPane.setMinimumSize(new Dimension(50,50)); // Add a border to ‘canvas’ _ImageCanvas.setBorder(BorderFactory.createLineBorder(new java.awt.Color(0, […]