鉴于如下的流{ 0, 1, 2, 3, 4 }
,
我怎样才能最优雅地将其转换为给定的形式:
{ new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) }
(假设,当然,我已经定义了类对)?
编辑:这不是严格关于整数或原始流.对于任何类型的流,答案应该是通用的.
如何使用JUnit测试在现有项目中运行JMH基准测试?官方文档建议使用Maven shade插件创建一个单独的项目,并在main
方法中启动JMH .这是必要的,为什么推荐?
升级到Java 8后,我的应用程序开始以非确定性方式失败.它不会抛出异常或打印错误消息.失败的唯一标志是退出代码-559038737.有没有遇到过这个?
我正在编写一个JAX-RS(Jersey + Maven)应用程序来执行一些棘手的操作(例如调用WAR中嵌入的本机可执行文件).我需要在服务器上运行[部分]单元测试(JUnit4)(运行Tomcat 7.0.22的Amazon Elastic Beanstalk)来检查一切是否正常.
除了RYO(滚动你自己的)之外,还有一种标准的,灵活的方式吗?我发现的东西似乎更多地与开发人员机器上的集成测试(即Jersey测试框架)有关.甚至RYO让我感到困惑......我怎样才能从源包中调用测试包中的代码?
基本上,我想创建一个我可以调用的/ test资源,它将以漂亮的格式从服务器返回我的单元测试结果.如果我可以做/ test/{category}更好
在MSDN文档说Thread.Sleep()
可以被用在便携式类库.编译器说不然.除旋转循环外,我的其他选择是什么?Thread.CurrentThread.Join()
也不存在.
项目文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{C46B138E-CC30-4397-B326-8DD019E3874B}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>x0xtest.AVR</RootNamespace>
<AssemblyName>x0xtest.AVR</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile3</TargetFrameworkProfile>
<FileAlignment>512</FileAlignment>
<ProjectTypeGuids>{786C830F-07A1-408B-BD7F-6EE04809D6DB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
</ItemGroup>
<ItemGroup>
<Compile Include="Attributes\AddressAttribute.cs" />
<Compile …
Run Code Online (Sandbox Code Playgroud) 我已将最大堆设置为8 GB.当我的程序开始使用大约6.4 GB(在VisualVM中报告)时,垃圾收集器开始占用大部分CPU,并且在进行~100 MB分配时程序与OutOfMemory崩溃.我在Windows上使用Oracle Java 1.7.0_21.
我的问题是,是否有GC选项可以帮助解决这个问题.除了-Xmx8g,我没有传递任何东西.
我的猜测是堆已经碎片化了,但GC应该不紧凑吗?
是否有一种简洁,惯用的方式(可能使用Apache Commons)来指定OpenOption的常见组合 StandardOpenOption.WRITE, StandardOpenOption.CREATE, StandardOpenOption.TRUNCATE_EXISTING
在Spring中,您可以XML配置bean以具有限定符.如果通过Java注释配置bean,我似乎无法找到如何附加限定符.那是怎么回事?我只需使用普通的旧名称吗?
在Java中,覆盖该finalize
方法会得到一个糟糕的说唱,虽然我不明白为什么.类似于FileInputStream
使用它来确保close
在Java 8和Java 10中调用.然而,Java 9引入java.lang.ref.Cleaner
了使用PhantomReference机制而不是GC终结.起初,我认为这只是向第三方类添加finalization的一种方式.但是,其javadoc中给出的示例显示了一个可以使用终结器轻松重写的用例.
我应该finalize
用Cleaner 重写我的所有方法吗?(当然,我没有很多.只是一些使用OS资源的类,特别是对于CUDA互操作.)
据我所知,Cleaner(通过PhantomReference)避免了一些危险finalizer
.特别是,您无法访问已清理的对象,因此您无法复活它或其任何字段.
然而,这是我能看到的唯一优势.清洁工也是非平凡的.事实上,它和终结都使用了ReferenceQueue
!(难道你不喜欢阅读JDK是多么容易吗?)它比完成更快吗?它是否避免等待两个GC?如果许多对象排队等待清理,它会避免堆耗尽吗?(所有这些的答案在我看来都不是.)
最后,实际上没有任何保证阻止您在清理操作中引用目标对象.小心阅读长API注意!如果你最终引用了这个对象,那么整个机制将会默默地中断,而不像终结总是试图跛行.最后,虽然终结线程由JVM管理,但创建和保存Cleaner线程是您自己的责任.
这是一个奇怪的事:
float a = 0;
a = a + Math.PI; // ERROR
Run Code Online (Sandbox Code Playgroud)
但是:
a += Math.PI; // OK!
Run Code Online (Sandbox Code Playgroud)
即便如此:
int b = 0;
b += Math.PI; // OK, too!
Run Code Online (Sandbox Code Playgroud)
为什么+=
运算符允许有损隐式类型转换?
java ×9
java-8 ×2
junit ×2
jvm-hotspot ×2
c# ×1
finalization ×1
finalize ×1
finalizer ×1
java-9 ×1
java-stream ×1
jax-rs ×1
jmh ×1
jvm ×1
jvm-crash ×1
nio ×1
nio2 ×1
spring ×1
spring-3 ×1
tomcat ×1
unit-testing ×1