JDK中的Java Mission Control工具提供有关新TLAB中的对象分配和TLAB外部分配的统计信息.(它在Memory/Allocations下).这些统计数据有什么意义,哪些对应用程序的性能有好处?如果在TLAB之外分配一些对象,我是否应该担心?如果是,我该怎么办呢?
我认为必须有一个单行的Guava解决方案,用于将不可变列表转换为另一个不可变列表,但我找不到它.假设我们有以下对象:
ImmutableList<String> input = ImmutableList.of("a", "b", "c");
Function<String, String> function = new Function<String, String>() {
@Override
public String apply(String input) {
return input + input;
}
};
Run Code Online (Sandbox Code Playgroud)
转换可以像这样实现:
Iterable<String> transformedIt = Iterables.transform(input, function);
ImmutableList<String> output = ImmutableList.<String>builder().addAll(transformedIt).build();
Run Code Online (Sandbox Code Playgroud)
或者像这样:
List<String> transformedList = Lists.transform(input, function);
ImmutableList<String> output2 = ImmutableList.copyOf(transformedList);
Run Code Online (Sandbox Code Playgroud)
但我认为必须有一个性能优化的单线程用于这种转换,没有中间对象,我只是找不到它.它在哪里?
我有一些带有Map<String, Map<String, String>>对象的代码,它有效(它被实例化为HashMaps的HashMap),但我想知道是否有更好的方法来表示Guava中的这个数据结构.
我也考虑过Multimap,但同时有ListMultimap和SetMultimap番石榴,我没有发现任何"MapMultimap".
我也检查过Table,它看起来更像是它,但它的名字让我感到不舒服:我所拥有的绝对不是一张桌子而是一棵树.(第二个键之间没有重叠)
是否有更好的番石榴替代品或我应该坚持使用Map<String, Map<String, String>>?
可能重复:
安全地解析数字并且区域敏感
如何以区域设置敏感的方式验证包含十进制数的字符串?NumberFormat.parse允许过多,Double.parseDouble仅适用于英语语言环境.这是我尝试过的:
public static void main(String[] args) throws ParseException {
Locale.setDefault(Locale.GERMAN);
NumberFormat numberFormat = NumberFormat.getNumberInstance(Locale.getDefault());
Number parsed = numberFormat.parse("4,5.6dfhf");
System.out.println("parsed = " + parsed); // prints 4.5 instead of throwing ParseException
double v = Double.parseDouble("3,3"); // throws NumberFormatException, although correct
}
Run Code Online (Sandbox Code Playgroud) 我是Scala的新手,我需要在删除某些行的同时将文本文件的内容读入字符串.可以使用子字符串匹配来标识要删除的行.我可以提出以下解决方案,几乎可以工作,唯一的问题是删除换行符:
val fileAsFilteredString = io.Source.fromFile("file.txt").getLines.filter(s => !(s contains "filter these")).mkString;
Run Code Online (Sandbox Code Playgroud)
我怎样才能保留换行符?
我确实理解Spring单例范围的bean(它们对每个Spring上下文都有一个实例)和Singleton模式(它们有一个类加载器的实例)之间的区别.
我注意到,对于许多人来说,Singleton模式被认为是邪恶的(因为它们就像全局引用),而没有人似乎有任何针对单例范围的bean(它们也是全局可用的).为什么是这样?
我有一个(桌面)应用程序,我需要全局访问某些对象,因为将引用传递给几十个类和方法会非常麻烦.但是我不想使用DI框架,因为应用程序的启动时间很重要.什么是最好的设计?
我有一个字符串列表,比如
val myList = List("apple", "orange", "pear")
Run Code Online (Sandbox Code Playgroud)
我想把它变成一个字符串,如"1)apple 2)orange 3)pear".我可以写一个for循环,但我认为在Scala中应该有一个像这样的东西的单行程.我能想到的最佳单线是
val myString = myList.map(s => "1) " + s).mkString(" ")
Run Code Online (Sandbox Code Playgroud)
但这导致"1)苹果1)橙色1)梨".如何在映射列表时增加值?
java ×5
guava ×2
scala ×2
collections ×1
jmc ×1
jvm ×1
performance ×1
singleton ×1
spring ×1
validation ×1