通过reflection调用Java中的getter:重复调用它的最快方法是什么(性能和可伸缩性方面)?

给定一个类Foo和一个属性bar , 我在编译时都不知道 ,我需要多次重复调用getter Foo.getBar() 。 假设我有: Method barGetterMethod = …; // Don’t worry how I got this 我需要做这样的事情: for (Object foo : fooList) { // 1000000000 elements in fooList Object bar = barGetterMethod.invoke(foo); … } 与没有reflection调用它相比,上面的实现仍然很慢。 有更快的方法吗? 用Javareflection调用getter的最快方法是什么?

用于删除Java项目中不必要的依赖项的工具

我有一个Java项目,它的库目录中当前有很多JAR,它们在构建时都包含在生成的包中。 但是,我知道其中一些libs从未在项目中引用过。 是否有工具可以搜索项目中未引用的库? 我想在那个意义上肯定有一些东西。 BTW,一个Eclipse插件会很棒。 编辑:我选择使用ClassDep因为它是唯一有效的建议。 但是,我遇到了一些麻烦:请检查这个问题

如何在MyBatis foreach中迭代HashMap?

我正在尝试在mybatis中生成如下所示的sql。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in ( (‘kp’,’kar’),(‘srt’,’sach’)); 我的输入参数类型是HashMap。 现在如何从mapper xml文件生成SQL。 下面的代码抛出exception,说map被评估为null。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item},#{item.get(item)} 另一种方法是创建一个具有键值字段的类,创建一个对象列表,然后将parameterType作为list传递,如下所示。 SELECT COL_C FROM TBLE_1 WHERE (COL_A, COL_B) in #{item.getKey()},#{item.getVal()} 但有没有办法让我的mapper工作第一种方法? 除了将查询更改为union之外

如何在同一页面上获得结果为什么需要输入?

在我的项目中,我正在更新详细信息,因此我创建了操作,但它在响应中给出了exception No result defined for action org.employee.actions.EmployeeMyProfileAction and result input 在struts.xml (之前) empMyProfile.jsp (后) empMyProfile.jsp emp-personal-form.jsp Ajax Call function checkPersonal(id) { if (checkEverythingP()) { $.ajax({ type : ‘POST’, url : ‘savePersonalDetails’, data : $(‘#personalform’).serialize(), success : function(data) { alert(‘success’); }, error : function() { alert(‘error’); } }); } } 它给了我在JQuery中的成功消息,但它没有去声明的动作类。 一切都是正确的,我不明白为什么会发生这种情况。 我为此提到了很多网站,但没有解决。 请告诉我出了什么问题。

在jUnit中设置JNDI数据源

我正在尝试设置一些jUnit测试。 我们的数据库由服务器使用JNDI连接。 我们有一个xml描述了root.xml中的设置。 如何设置jUnit以连接数据库? 我宁愿让它只读取root.xml中的内容,但我仍然可以设置它,无论如何都可行。

如何在Java中以微秒精度测量时间?

我在互联网上看到我应该使用System.nanoTime(),但这对我不起作用 – 它给了我毫秒精度的时间。 我只需要在函数执行之前和之后的微秒,这样我就知道需要多长时间。 我正在使用Windows XP。 基本上,我有这样的代码,例如,在java链表中进行了100万到1000万次插入。 问题是我无法测量精确度; 有时,在较小的列表中插入所有内容所需的时间较少。 这是一个例子: class test { public static void main(String args[]) { for(int k=1000000; k<=10000000; k+=1000000) { System.out.println(k); LinkedList aux = new LinkedList(); //need something here to see the start time for(int i=0; i<k; i++) aux.addFirst(10000); //need something here to see the end time //print here the difference […]

每个实体hibernate两个表

我有一个实体 – User 。 它由User.class描述。 Hibernate为每个实体创建一个表,所以当我调用session.save(user) ,我的数据总是保存到该表中。 现在我需要另一个表用于相同User类型的数据,我只需要将我的实体保存到该表。 数据结构 (类似这样): table users_1_table{ string id; string username; } table users_2_table{ string id; string username; } 使用这个 : session.save(user1,”users_1_table”) session.save(user2,”users_2_table”) 结果我应该在users_1_table有user1在users_1_table user2 。 由于系统限制,我不能将这两个对象放在一个表中。 (即使创建额外的字段也是个坏主意)。 我可以不进行子类化吗? 使用programmaticaly hibernate配置?

如何在不使用-cp开关的情况下在Groovy中自动加载数据库jar?

我想简化我对执行Oracle数据库调用的Groovy脚本的执行。 如何将ojdbc jar添加到默认的类路径中,以便我可以运行: groovy RunScript.groovy 代替: groovy -cp ojdbc5.jar RunScript.groovy

使用J2ME存储大量数据的最佳实践

我正在开发一个J2ME应用程序,它有大量数据存储在设备上(在1MB但可变的区域内)。 我不能依赖文件系统,因此我陷入了记录管理系统(RMS),它允许多个记录存储但每个都有有限的大小。 我的初始目标平台Blackberry将每个平台限制为64KB。 我想知道是否还有其他人必须解决在RMS中存储大量数据的问题以及他们如何管理它? 我想要计算记录大小并在多个商店中分割一个数据集,如果它太大,但这增加了很多复杂性以保持其完好无损。 存储了许多不同类型的数据,但特别是只有一个数据集将超过64KB限制。

Java中位数的中位数

我正在尝试使用Java实现这样的方法中的Median Median: Select(Comparable[] list, int pos, int colSize, int colMed) list是要查找指定位置的值列表 pos是指定的位置 colSize是我在第一阶段创建的列的大小 colMed是我用作medX的那些列中的位置 我不确定哪种排序算法最适合使用或如何实现这一点。