Tag: java

如何使用Ant复制目录

我已经使用copydir来复制目录树,但不推荐使用。 我的目录包含一些子目录,其中一些包含文件和其他包含更多的子目录。 我怎样才能复制整个树?

从Java中的HashMap获取密钥

我有一个像Java这样的Hashmap: private Map<String, Integer> team1 = new HashMap<String, Integer>(); 然后我像这样填充它: team1.put("United", 5); 我怎样才能拿到钥匙? 例如: team1.getKey()返回“United”。

Java:如何将HashMap <String,Object>转换为数组

我需要将HashMap<String, Object>转换为数组; 任何人都可以告诉我它是如何完成的?

如何使用Spring 3.0expression式语言参数化@Scheduled(fixedDelay)?

当使用Spring 3.0function来注释一个计划的任务,我想从我的configuration文件中设置fixedDelay作为参数,而不是硬连线到我的任务类,如目前… @Scheduled(fixedDelay = 5000) public void readLog() { … } 不幸的是,用Springexpression式语言(SpEL) @Value的手段似乎返回一个String对象,而这个对象又不能像fixedDelay参数所要求的那样被自动装箱成一个long值。

检查null布尔值是否为true会导致exception

我有以下代码: Boolean bool = null; try { if (bool) { //DoSomething } } catch (Exception e) { System.out.println(e.getMessage()); } 为什么我检查布尔variables“bool”会导致exception? 当它“看到”它不是真实的时候,它不应该跳过if语句吗? 当我删除if语句或检查它是否为空,exception消失。

Vagrant for Java项目:你应该在虚拟机还是主机上编译?

下面是一个问题:当为一个Java项目(或任何编译的语言项目)使用Vagrant时,你应该在虚拟机还是主机上进行编译? 另外,你是否希望你的IDE和所有的开发工具能够从虚拟机内部运行,或者在主机上运行? 似乎没有很好地定义 Java IDE和编译/部署过程如何与Vagrant VM一起工作。 一般来说,我的印象是代码是在主机上编辑的,并运行在虚拟机上,这对于非编译语言来说非常有用。 Stackoverflow上的其他答案暗示了Vagrant对于编译语言不太有用,因为额外的编译步骤,但我仍然想看看可以做什么。 我已经想到了一些事情: 为什么要在VM上编译 如果在主机上编译,java是多一个安装软件 如果在主机上编译,主机上的Java版本必须手动保持与虚拟机上的最新版本保持一致 主机上相应的java版本可能不可用(比如在Mac上) 为什么VM上有IDE? 环境和IDE之间更紧密的集成,可以使用快捷方式来运行应用程序 可以连接debugging器的Java应用程序,而无需远程debugging(一步运行/debugging) 为什么要在主机上编译 更快的编译时间 希望尽可能保持虚拟机尽可能接近生产 为什么在主机上有IDE? 编辑主机上的代码并在虚拟机上运行它是stream浪的惯例 更好的UI性能(X转发和VNC缓慢) 你有什么想法:我应该从VM还是主机运行IDE? 我应该从虚拟机或主机内部进行编译吗?

在java中将double转换为整数

在Java中,我想将一个double转换为一个整数,我知道如果你这样做: double x = 1.5; int y = (int)x; 你得到y = 1。 如果你这样做: int y = (int)Math.round(x); 你可能会得到2.但是,我想知道:因为整数的双重表示有时看起来像1.9999999998什么的,是否有可能通过Math.round()创build一个double仍然会导致一个截断的数字,而不是比我们正在寻找的四舍五入的数字(即:代码中的1代替2代表)? (是的,我的意思是这样的:是否有任何价值的X,其中Y将显示一个结果是一个截断,而不是一个舍入表示的X?) 如果是这样的话:有没有更好的方法来使一个四舍五入的整数没有运行截断的风险? 想了一些东西:Math.round(x)返回一个long,而不是double。 因此:Math.round()不可能返回一个看起来像3.9999998的数字。 因此,int(Math.round())将永远不需要截断任何东西,并将始终工作。

随机类线程安全吗?

在多个线程之间共享Random类的一个实例是否有效? 并从多个线程中调用nextInt(int) ?

创buildJava类文件是确定性的吗?

当使用相同的JDK (即相同的javac可执行文件)时,生成的类文件是否始终相同? 根据操作系统或硬件的不同,有没有区别? 除JDK版本外,是否还有其他因素会导致差异? 是否有任何编译器选项可以避免差异? 在理论上只是可能有区别,或者Oracle的javac实际上为相同的input和编译器选项生成不同的类文件? 更新1我感兴趣的一代 ,即编译器输出,而不是一个类文件是否可以在各种平台上运行 。 更新2 “相同的JDK”,我也是指相同的javac可执行文件。 更新3 Oracle编译器理论差异与实际差异的区别。 [编辑,添加解释的问题] “在不同的平台上运行相同的javac可执行文件会产生不同的字节码的情况是怎样的?

在池中closuresJDBC连接

我们使用JDBC的标准代码部分是… Connection conn = getConnection(…); Statement stmt = conn.conn.createStatement (ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); ResultSet rset = stmt.executeQuery (sqlQuery); // do stuff with rset rset.close(); stmt.close(); conn.close(); 问题1:使用连接池时,是否应该closures连接? 如果是这样,是不是汇集失地的目的? 如果不是,那么DataSource如何知道Connection的特定实例什么时候被释放并且可以被重用呢? 我对这个有点困惑,任何赞赏的指针。 问题2:以下方法是否接近标准? 看起来像试图从池中获得连接,如果无法build立数据源,则使用旧式的DriverManager。 我们甚至不知道哪个部分在运行时被执行。 重复上面的问题,是否应该closures从这种方法出来的连接? 谢谢, – MS。 synchronized public Connection getConnection (boolean pooledConnection) throws SQLException { if (pooledConnection) { if (ds == null) { try { Context […]