Effective Java:分析clone()方法

请考虑以下有效Java项目11(明智地覆盖克隆),其中Josh Bloch解释了clone()合同的错误。 这份合同存在许多问题。 “没有被称为构造函数”的规定过于强大。 一个行为良好的克隆方法可以调用构造函数来创建正在构建的克隆内部的对象。 如果类是final,clone甚至可以返回由构造函数创建的对象。 有人可以解释Josh Bloch在第一段中所说的“如果类是final ,则clone甚至可以返回由构造函数创建的对象”。 final与clone()有什么关系?

EJB世界的新手…… EJB客户端中的空指针exception

我正在学习EJB,我正在尝试执行EJB In Action书中给出的Helloworld示例。 我的app服务器是JBoss,我在正确的目录中为bean类和接口创建了Jar文件(我可以在JMX控制台中看到EJB)。 现在我使用EJB注释创建了一个简单的客户端,但是我得到了一个N​​ullPointerException。 这是我的客户端代码。 客户代码: package com.client; import javax.ejb.EJB; import com.EJB.*; public class HelloWorldClient { @EJB private static HelloWorldInterface HelloBean; public static void main(String[] args) { HelloBean.SayHelloWorldInEJB(); } } Bean类 package com.EJB; import javax.ejb.Stateless; @Stateless public class HelloWorldBean implements HelloWorldInterface { public void SayHelloWorldInEJB() { // TODO Auto-generated method stub System.out.println(“Hello world from […]

计算RDD中的行数

我正在使用带有java的spark,我有一个500万行的RDD。 是否有一个sollution可以让我计算我的RDD的行数。 我尝试过RDD.count()但需要花费很多时间。 我已经看到我可以使用functionfold 。 但我没有找到这个函数的java文档。 你能告诉我如何使用它或给我看另一个解决方案来获取我的RDD的行数。 这是我的代码: JavaPairRDD lines = getAllCustomers(sc).cache(); JavaPairRDD CFIDNotNull = lines.filter(notNull()).cache(); JavaPairRDD<String, Tuple2> join =lines.join(CFIDNotNull).cache(); double count_ctid = (double)join.count(); // i want to get the count of these three RDD double all = (double)lines.count(); double count_cfid = all – CFIDNotNull.count(); System.out.println(“********** :”+count_cfid*100/all +”% and now : “+ count_ctid*100/all+”%”); 谢谢。

为什么我需要同步Collections.synchronizedList返回的列表

我发现这是在dos.oracle.com public static List synchronizedList(列表列表) 返回由指定列表支持的同步(线程安全)列表。 为了保证串行访问,必须通过返回的列表完成对后备列表的所有访问。 当迭代它时,用户必须手动同步返回的列表: List list = Collections.synchronizedList(new ArrayList()); … synchronized(list) { Iterator i = list.iterator(); // Must be in synchronized block while (i.hasNext()) foo(i.next()); } 我的问题是:如果Collections.synchronizedList();我为什么必须同步列表来迭代它Collections.synchronizedList(); 应该返回一个已经同步的列表? 我只是在两个线程中访问列表:一个线程只添加,另一个线程获取和删除。 您建议在此方案中使用哪些其他类? 谢谢阅读。

预处理源代码作为maven构建的一部分

我有很多需要自定义预处理的Java源代码。 我想摆脱它,但现在不可行,所以我坚持下去。 鉴于我有一个不应该存在的不幸问题,我如何使用maven解决它? (就完整的故事而言,我正在用一个基于python的构建系统替换一个基于python的构建系统,所以请一次改进。修复非标准源代码更难,并且稍后会出现。) 是否可以使用任何现有的Maven插件在编译期间实际更改源文件? (显然只保留原始的,未经处理的代码) 需要说明的是,通过预处理,我的意思是预处理与天线相同,或者C编译器会对代码进行预处理,而且我认为它是完全专有的,看起来就像C或天线预处理一样。

如何在Spring Batch中设置multithreading?

我已经成功建立了一个Spring Batch项目教程。 我真的很想知道是否可以在“Spring级别”使它成为multithreading。 我想要的基本思路是制作一个任务列表或任务步骤,让它们被独立的线程拾取和处理,理想情况下是一个限于’n’个线程的池。 这可能吗? 如果是这样,怎么样? 有人可以从我目前所在的地方指导我到那一点吗? 我所拥有的简单项目来自本教程。 它基本上有不同的任务,可以将信息打印到屏幕上。 这是我当前的simpleJob.xml文件,其中包含作业详细信息: 我的appContext包含作业存储库bean( SimpleJobRepository ),事务管理器( ResourceLessTransactionManager )和作业启动器( SimpleJobLauncher )。 如果需要的话,我也可以提供这个代码,我只是不想用大量的XML来破坏这篇文章。 非常感谢您的帮助!

在maven2中编译错误:“无效的CEN标题(错误的签名)”

我正在迁移我们的java-ee项目以使用Maven而不是Ant。 对于以下依赖项 javolution javolution 5.4.2 尝试编译时出现以下错误 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2. 3.2:compile (default-compile) on project JAdaptiv: Compilation failure [ERROR] error: error reading C:\Users\User.IVSTEL1\.m2\repository\javolution\ javolution\5.4.2\javolution-5.4.2.jar; invalid CEN header (bad signature) [ERROR] -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal o rg.apache.maven.plugins:maven-compiler-plugin:2.3.2:compile (default-compile) on project JAdaptiv: Compilation failure error: error reading C:\Users\User.IVSTEL1\.m2\repository\javolution\javoluti on\5.4.2\javolution-5.4.2.jar; invalid CEN header […]

递归使用Stream.flatMap()

考虑以下课程: public class Order { private String id; private List orders = new ArrayList(); @Override public String toString() { return this.id; } // getters & setters } 注意:请务必注意,我无法修改此类 ,因为我正在使用外部API。 还要考虑以下订单层次结构: Order o1 = new Order(); o1.setId(“1”); Order o11 = new Order(); o11.setId(“1.1”); Order o111 = new Order(); o111.setId(“1.1.1”); List o11Children = new ArrayList(Arrays.asList(o111)); o11.setOrders(o11Children); Order […]

log4j日志文件名?

我们有几个并发运行的作业,必须使用相同的log4j配置信息。 他们都使用相同的appender将日志转储到一个文件中。 有没有办法让每个作业动态命名其日志文件,以便它们保持独立? 谢谢 汤姆

JDBC ResultSet getDate丢失精度

我在ResultSet.getDate(x)调用中失去了精度。 基本上: rs = ps.executeQuery(); rs.getDate(“MODIFIED”); 返回截断日期,其中MODIFIED是默认精度的Oracle TIMESTAMP字段。 我想可能会有一些我不知道的JDBC调整; 通常TIMESTAMP与DATE兼容,但我希望我不必重新定义整个表。