Tag: java

抛出Exception的哪个部分是昂贵的?

在Java中,当实际上没有错误时使用throw / catch作为逻辑的一部分通常是一个坏主意(部分),因为抛出和捕获exception是很昂贵的,而且在循环中多次执行通常比其他控制结构不涉及抛出exception。 我的问题是,在throw / catch本身,或创buildException对象(因为它获得了包括执行堆栈的许多运行时信息)的成本? 换句话说,如果我这样做 Exception e = new Exception(); 但是不要扔它,是抛出的大部分费用,还是抛出+ catch处理什么是昂贵的? 我不问是否将代码放在try / catch块中,是否会增加执行代码的代价,我想知道捕获Exception是否是昂贵的部分,或者创build(调用构造函数)Exception是昂贵的部分。 另一个问这个问题的方法是,如果我做了Exception的一个实例,并且一遍又一遍地抛出并捕获它,那么每次抛出这个exception会比创build一个新的exception快得多吗?

为什么在Java日历中的1月份0?

在java.util.Calendar ,1月定义为月0,而不是1月。有什么具体的原因呢? 我看到很多人对此感到困惑

在Java中增加Map值最有效的方法

我希望这个问题不被视为这个论坛的基础,但我们会看到。 我想知道如何重构一些代码,以获得更好的性能,这是一堆运行。 假设我正在创build一个词频列表,使用一个Map(可能是一个HashMap),其中每个键都是一个string,其中的单词是被计数的,并且该值是一个整数,每次find该单词的一个标记时,该整数就会递增。 在Perl中,增加这样一个值将是非常简单的: $map{$word}++; 但在Java中,它更复杂。 这里我正在做的方式是: int count = map.containsKey(word) ? map.get(word) : 0; map.put(word, count + 1); 当然这依赖于较新的Java版本中的自动装箱function。 我想知道你是否可以提出一个更有效的方式来增加这样的价值。 是否有避免使用Collections框架和使用其他方法的良好性能? 更新:我已经做了几个答案的testing。 见下文。

Sprintf等同于Java

Printf被添加到Java与1.5版本,但我似乎无法find如何将输出发送到一个string,而不是一个文件(这是什么sprintf在C)。 有谁知道如何做到这一点?

为什么这个写回来的代码打印出“Hello World!”

这里是我在互联网上find的一些代码: class M‮{public static void main(String[]a‭){System.out.print(new char[] {'H','e','l','l','o',' ','W','o','r','l','d','!'});}} 此代码打印Hello World! 在屏幕上; 你可以看到它在这里运行。 我可以清楚地看到public static void main写入,但它是倒退。 这个代码是如何工作的? 这甚至如何编译? 编辑:我在IntellIJ中试过这个代码,它工作正常。 但是,由于某些原因,它不能在记事本++,以及cmd中工作。 我还没有find解决办法,所以如果有人的话,请在下面留言。

当使用Spring Security时,在bean中获取当前用户名(即SecurityContext)信息的正确方法是什么?

我有一个使用Spring Security的Spring MVC web应用程序。 我想知道当前login用户的用户名。 我正在使用下面给出的代码片段。 这是被接受的方式吗? 我不喜欢有一个调用这个控制器内的静态方法 – 这是挫败了Spring的全部目的,恕我直言。 有没有一种方法来configuration应用程序,而不是注入当前的SecurityContext或当前的身份validation? @RequestMapping(method = RequestMethod.GET) public ModelAndView showResults(final HttpServletRequest request…) { final String currentUser = SecurityContextHolder.getContext().getAuthentication().getName(); … }

当Javadoc标签不完整时,Maven不能在Java 8中工作

由于我使用Maven,我已经能够构build和安装在我的本地存储库项目,具有不完整的Javadoc标签(例如,一个缺less的参数)。 然而,自从我迁移到Java 8(1.8.0-ea-b90)以来,Maven对于缺失的文档标签是绝对严格的,并且在尝试构build或安装Javadoc不是Javadoc的项目时,显示出大量有关Javadoc问题的Javadoc错误“完善”。 我试图编译并安装在本地存储库中的一些项目是我无法控制的第三方项目。 所以,在所有这些项目中修复所有Javadoc的解决方法在我的场景中似乎不是可行的。 这是我在我的项目中执行mvn clean package install时输出的一小部分: [INFO] ———————————————————————— [INFO] BUILD FAILURE [INFO] ———————————————————————— [INFO] Total time: 9.026s [INFO] Finished at: Mon Apr 08 21:06:17 CEST 2013 [INFO] Final Memory: 27M/437M [INFO] ———————————————————————— [ERROR] Failed to execute goal org.apache.maven.plugins:maven-javadoc-plugin:2.9:jar (attach-javadocs) on project jpc: MavenReportException: Error while creating archive: [ERROR] Exit code: 1 – […]

Spring Data JPA中的CrudRepository和JpaRepository接口有什么区别?

Spring Data JPA中的CrudRepository和JpaRepository接口有何不同,请参阅Web中的示例。 我看到他们在那里交换使用的一种。 他们有什么区别? 你为什么要用另一个呢?

如何使用正则expression式提取子string

我有一个string,它有两个单引号, '字符。 在单引号之间是我想要的数据。 我如何写一个正则expression式从下面的文本中提取“我想要的数据”? mydata = "some string with 'the data i want' inside";

简单的方法来改变集合的Iterable

在我的应用程序中,我使用第三方库(准确地说是MongoDb的Spring Data)。 这个库的方法返回Iterable<T> ,而我的代码的其余部分需要Collection<T> 。 有什么实用的方法,让我快速转换到另一个。 我想避免在我的代码中做这样一个简单的事情foreach循环banch。