部分失败时的executeBatch行为

我有一个java 1.6应用程序,它使用批量插入来使用jdbc驱动程序在Oracle数据库中插入记录。 正如您在Statement对象上所知,有一个名为executeBatch()的方法,我们将其用于批量更新。 它有一个返回类型的int数组,其中包含每个记录的执行结果。 但它也会在出现错误时抛出BatchUpdateException,我们也可以从中获取结果int数组。 我的问题是我应该期待什么样的错误情况BatchUpdateException和什么时候我应该期望没有抛出exception但是对于某些记录我得失败。 注意:问题特别针对Oracle JDBC。 为了更清楚,我已经看到在执行executeBatch()之后的情况我没有得到BatchUpdateException,但是一些insert语句失败了。 我的问题是关于可能发生的情况? 这是Statement.executeBatch()方法的返回javadoc。 根据这里的一般意见,当一个条目失败时,执行抛出BatchUpdateException然后在哪种情况下我们可以预期返回数组中的某些条目失败。 * @return an array of update counts, with one entry for each command in the * batch. The elements are ordered according to the order in which * the commands were added to the batch. * * * If the value of an […]

天真的inheritance问题 – Java

G’day人, 问这样一个天真的问题让我感到尴尬。 但我无法理解一件事,我有这样的inheritance结构, B扩展A,我写的代码如下, A级 public class A{ private int pos = 0; public A(){ this.pos = 12; } public int getPos(){ return this.pos; } } B级 public class B extends A{ int spec = 15; public B(){ super(); } public int getSpec(){ return this.spec; } } 我还有一个课程要测试,这会让我们回答我的问题。 class级考试 import java.util.*; public class Test{ public […]

Java Swing透明的JPanels问题

我有一个JLayeredPane,我添加3个JPanels。 我使JPanels透明(没有设置背景和setOpaque(false))。 我在JPanels上绘制线条,只有最后一个JPanel上的线条可见。 通过顶级JPanel看不到其他JPanel的行(即使我在添加它们时添加了不同的zIndex)。 有谁知道这方面的解决方案? 他们为什么不透明? 我创建了一个小测试程序(3个类)。 (TestJPanel和TestJPanel1绘制一条线,但在不同的位置,但我只看到最后添加的JPanel的行。我没有看到2行,因为它不透明:() Main.Java import java.awt.BorderLayout; import java.awt.Color; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLayeredPane; public class Main extends JFrame { public Main() { setSize(400, 350); setDefaultCloseOperation(EXIT_ON_CLOSE); JLayeredPane lp = getLayeredPane(); lp.setLayout(new BorderLayout()); TestJPanel top = new TestJPanel(); top.setOpaque(false); TestJPanel middle = new TestJPanel(); middle.setOpaque(false); TestJPanel1 bottom = new TestJPanel1(); bottom.setOpaque(false); […]

如何在Spring中实现弹性bean?

我有一个Spring bean,它在构造函数中通过http访问外部系统。 如果外部系统在启动时不可用,则无法创建bean并且应用程序无法正常启动。 我希望我的应用程序能够启动,无论外部系统如何。 我宁愿缺少function一段时间而不是重启应用程序。 我知道在Spring中可以通过正确选择范围和代理bean工厂来实现这一点,但我不确定它是如何实现的。 在我看来,Spring AOP的大多数部分旨在修改成功创建的目标,并且无法在创建期间处理激活或我错了吗? 简而言之:我想要一个在第一次访问时创建目标bean的代理,然后只要它工作就保留该实例。 如果它无法创建它,它应抛出exception并在下次调用代理时重试。 那么,您将如何实现此function?

如何在命名空间之间复制数据存储区实体

我想将一个名称空间中的所有数据(例如www.mysite.com)复制到另一个名称空间,比如nightly.latest.mysite.appspot.com。 最好的方法是什么? 示例命名空间不是随机的:它们是NamespaceFilter为服务应用程序的给定域设置的命名空间。 我希望能够将所有“生产”数据拉入“非生产”命名空间进行测试。

命令行解释器如何工作?

我一直认为操作系统上的进程有三个标准流: stdin, stdout, and stderr 。 我还认为像vim这样的文本编辑通过stdin并在stdout发送ANSI转义字符来工作。 但是,我对命令行解释器如何在这一案例中没有提到的观点如下: 当我运行命令C:\cygwin\bin\bash.exe ,系统会提示我: Microsoft Windows [Version 6.1.7600] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\masson>C:\cygwin\bin\bash.exe bash-3.2$ …但是当我使用以下代码段在Java中运行它时,stdin流为空: ProcessBuilder pb = new ProcessBuilder(“C:\\cygwin\\bin\\bash.exe”); pb.redirectErrorStream(true); Process proc = pb.start(); final InputStream in = proc.getInputStream(); new Thread(new Runnable() { public void run() { // Blocks forever… in.read(new byte[1024]); } }).start(); […]

getWidth在缩放后不返回不同的值

我正在尝试使用setScaleX找到我所缺少的内容。 final ImageView iv = (ImageView) findViewById(R.id.imageView); ViewTreeObserver vto = iv.getViewTreeObserver(); vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { // Start at 60 Log.d(“test”, “Before”+String.valueOf(iv.getWidth())); iv.setScaleX((float) .5); // Still at 60 after scale Log.d(“test”, “After”+String.valueOf(iv.getWidth())); } }); 我想宽度会变成30.如何在缩放后获得宽度值?

如何在Windows中的ProcessBuilder java中设置PATH环境变量

我试图在java中为进程构建器设置PATH环境变量,我尝试了以下方法: ProcessBuilder pb = new ProcessBuilder(command); Map mp = pb.environment(); mp.put(“Path”, “myPath”); pb.start(); 但是以下不起作用,进程构建器选择了默认的系统路径。 我遇到了这个问题 ,这个技巧在我目前的项目中没有帮助我。 我该怎么办才能解决这个问题?

比较两个文本文件的最快方法是什么,不将移动的行计算为不同

我有两个文件非常大,每个文件50000行。 我需要比较这两个文件并确定更改。 但是,如果一条线存在于不同位置,则不应该显示为不同。 例如,考虑一下 文件A.txt xxxxx yyyyy zzzzz 文件B.txt zzzzz xxxx yyyyy 所以如果这是文件的内容。 我的代码应该输出为xxxx(或xxxx和xxxxx)。 当然,最简单的方法是将文件的每一行存储在一个 List 并与其他人比较 List. 但这似乎需要花费很多时间。 我也尝试在java中使用DiffUtils。 但它不会将不同行号中的行识别为相同。 那么还有其他算法可以帮助我吗?

如何在Android模拟器中模拟真正的外部SD(更新:可移动存储)卡

我尝试模拟外部SD卡,因为它将在真实设备中。 在真实设备中,外部SD卡不可写,除非您使用新的“存储访问框架”(API 21和22) 当我添加带文件或大小的SD卡时…… 我总是得到一个可写的SD卡,这对于真实的设备是不正确的(我猜)。 我可以创建文件夹“CreateFolder”(我知道,我不应该使用直接访问,但这只是为了测试我是否有写访问权限): String spathWriteTest=”/storage/sdcard/”; new File(spathWriteTest + “createFolder”).mkdir(); 任何想法,如何模仿真正的外部SD卡?