如何在Java中针对XSD 1.1validationXML?

在Java中针对XML Schema 1.1validationXML文件的最佳方法是什么? 我从本教程中获取了代码并更改了工厂查找的行以使用XML Schema 1.1,正如我在Xerces FAQ中的代码示例中看到的那样。 这是我的代码: import java.io.File; import java.io.IOException; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamSource; import javax.xml.validation.Schema; import javax.xml.validation.SchemaFactory; import javax.xml.validation.Validator; import org.xml.sax.SAXException; public class XSDValidator { private static void validateFile(File xmlFile, File xsdFile) throws SAXException, IOException { // 1. Lookup a factory for the W3C XML Schema language SchemaFactory factory = SchemaFactory.newInstance(“http://www.w3.org/XML/XMLSchema/v1.1”); // […]

是否真的有必要在JUnit拆解方法中使对象无效?

我对类似问题的答案很感兴趣。 我认为这是不正确的。 所以我创建了一些测试代码。 我的问题是,这个代码是否certificate/反驳/不确定这一假设,即在拆解方法中使成员变量无效是有用的? 我用JUnit4.8.1测试了它。 JUnit为4个测试中的每个测试创建测试类的新实例。 每个实例都包含一个Object obj。 此obj也作为静态WeakHashMap的键插入。 如果JUnit释放对测试实例的引用,则关联的obj值将被弱引用,因此符合gc条件。 测试试图强制gc。 WeakHashMap的大小将告诉我obj是否是gc’ed。 一些测试使obj变量无效,而其他测试则没有。 import org . junit . Before ; import org . junit . After ; import org . junit . Test ; import java . util . ArrayList ; import java . util . WeakHashMap ; import java . util . concurrent . […]

找出以编程方式抛出NullPointerException的变量

我知道我可以使用这些技术找出Java中的变量是否为null: if (var==null) – >工作太多了 try { … } catch (NullPointerException e) { …} – >它告诉我什么行抛出exception 使用调试器 – >手动,太慢了 考虑以下代码行: if (this.superSL.items.get(name).getSource().compareTo(VIsualShoppingList.Source_EXTRA)==0) { 我想知道是否有一种通用的方法来以编程方式找出哪个变量(不仅仅是行)在某个代码区域中抛出NullPointerException。 在这个例子中,知道这一点

如何调试Java OutOfMemoryexception?

调试java.lang.OutOfMemoryErrorexception的最佳方法是什么? 当我们的应用程序发生这种情况时,我们的应用服务器(Weblogic)会生成堆转储文件。 我们应该使用堆转储文件吗? 我们应该生成Java线程转储吗? 究竟有什么区别? 更新:生成线程转储的最佳方法是什么? kill -3 (我们的应用程序在Solaris上运行)是杀死应用程序并生成线程转储的最佳方法吗? 有没有办法生成线程转储但不杀死应用程序?

用于优化循环语句的JVM选项

我在学校被告知,修改for loop的索引变量是一种不好的做法: 示例: for(int i = 0 ; i < limit ; i++){ if(something){ i+=2; //bad } if(something){ limit+=2; //bad } } 争论的焦点是, 某些编译器优化可以优化循环,而不是重新计算索引并在每个循环中绑定。 我已经在java进行了一些测试,似乎默认索引和绑定每次都会重新计算。 我想知道是否可以在JVM HotSpot激活这种function? 例如,要优化这种循环: for(int i = 0 ; i < foo.getLength() ; i++){ } 无需写: int length = foo.getLength() for(int i = 0 ; i < length ; i++){ } […]

隐藏静态方法在子类中时的签名差异

最近我用一些简单的Java代码来使用main方法来快速测试我编写的代码。 我最终遇到了两个类似的类: public class A { public static void main(String[] args) { // code here } } public class B extends A { public static void main(String[] args) throws IOException { // code here } } 我很惊讶代码停止编译,Eclipse抱怨Exception IOException is not compatible with throws clause in A.main(String[]) 。 好吧,这两种方法都是静态的, B的mainfunction只是隐藏A ,所以我认为它们之间完全没有关系。 在静态方法中,我们没有多态性,并且在编译期间调用绑定到具体的方法实现,因此我无法理解为什么B main不能抛出未在A中的main签名中声明的exception。 为什么Java设计者决定强制执行这样的约束,如果编译器没有强制执行约束,它会在什么情况下导致问题呢?

如何在Java中实现多个线程来下载单个表数据?

如何实现具有多个/相同连接的多个线程,以便可以快速下载单个大型表数据。 实际上在我的应用程序中,我正在下载一个有12个lacs(1 lac = 100,000)记录的表,这个记录至少需要4小时才能以正常的连接速度下载,而更多的hrs连接速度慢。 因此,需要在Java中实现多个线程,用于下载具有多个/相同连接对象的单个表数据。 但不知道该怎么做。 如何在多个线程中定位记录指针然后如何将所有线程记录添加到单个大文件中? 提前致谢

spring的cron vs普通的cron?

我正在尝试在遗留的Java / Spring / Hibernate项目中使用cron作业,所以我决定使用spring调度程序。 我希望myTask.doStuff在每个月的第一个星期日的12:00运行。 在我的application-context.xml中,我已经将我的任务调度程序配置为: 问题cron表达式本身是: 0 0 12? 1/1 SUN#1 * 和myTask是一个bean,它有一个名为doStuff的方法,从unit testing运行时可以很好地工作。 当我构建和部署时,我从spring获得了一个bootimeexception: Caused by: java.lang.IllegalArgumentException: cron expression must consist of 6 fields (found 7 in 0 0 12 ? 1/1 SUN#1 *) at org.springframework.scheduling.support.CronSequenceGenerator.parse(CronSequenceGenerator.java:233) at org.springframework.scheduling.support.CronSequenceGenerator.(CronSequenceGenerator.java:81) at org.springframework.scheduling.support.CronTrigger.(CronTrigger.java:54) at org.springframework.scheduling.support.CronTrigger.(CronTrigger.java:44) at org.springframework.scheduling.config.ScheduledTaskRegistrar.afterPropertiesSet(ScheduledTaskRegistrar.java:129) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417) 鉴于我第一次使用cron表达式,我的第一个假设是我做错了,但我使用cronmaker进行了双重检查,它给了我相同的结果。 所有文档都说:cron表达式是由六个或七个子表达式(字段)组成的字符串。 1 尽管如此,我尝试淘汰了第7个元素(年份)因为它不在任何示例中,并且得到了不同的错误消息: […]

实例初始化器和构造函数之间有什么区别?

只是想知道编译代码的原因是这样的: class MyClass extends AnotherClass { { MySecondClass object = new MySecondClass(); object.doSomething(); } } 这个代码和构造函数中的代码有什么区别? 此代码在对象创建之前执行。

为什么在JFrame上设置setPreferredSize()很糟糕?

使用setPreferredSize()设置JFrame首选大小是不是很糟糕? 如果不好,有什么方法可以将JFrame窗口大小更改为我需要的维度。 我知道按照我需要的最终JFrame维度来放置组件。 但是如果我在调用pack()之前使用调用setPreferredSize()来改变首选大小,那么改变最终的JFrame大小是不是很糟糕? 如果是这样的话? 例如,我有样本表格: 显示时不设置首选大小。 现在,我可以在调用pack()之前调用setPreferredSize()来调整表单大小。 这通过调用显示: setPreferredSize(new Dimension(500, 300)); 在铺设时,我可以设置组件尺寸具有类似的效果。 但是只需调用setPreferredSize()就可以设置帧大小的缺点。 我可以考虑将首选大小设置为在显示后用鼠标手动调整显示窗口的大小。 不是吗? 码: import java.awt.Dimension; import javax.swing.GroupLayout; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JScrollPane; import javax.swing.JTextArea; import javax.swing.JTextField; import javax.swing.SwingUtilities; public class MyFrame extends JFrame { private static final long serialVersionUID = 1L; private JTextField fullNameTextField = new JTextField(); private […]