目前有两个主要的Java Object to Object映射框架取代了Dozer(http://dozer.sourceforge.net/documentation/mappings.html),它们是:
除了这个页面(http://vytas.io/blog/java/java-object-to-object-mapping-which-framework-to-choose-part-2/)我还没找到关于哪个框架比另一个更好,或者在什么情况下它们更好的在线.想知道是否有人可以对此有所了解.在基于文档的功能方面,它们似乎在做同样的事情.
假设我在一个使用Java 8类型注释的类中有以下成员:
private List<@Email String> emailAddresses;
Run Code Online (Sandbox Code Playgroud)
是否可以@Email
使用反射读取在运行时使用的String类型上给出的注释?如果是这样,怎么办呢?
更新:这是注释类型的定义:
@Target(value=ElementType.TYPE_USE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Email {}
Run Code Online (Sandbox Code Playgroud) 我有以下Java 9模块:
module com.example.a {
exports com.example.a;
}
Run Code Online (Sandbox Code Playgroud)
使用导出类型:
public class Api {
public static void foo(ImplDetail args) {}
}
Run Code Online (Sandbox Code Playgroud)
和非导出类型:
package com.example.b.internal;
public class ImplDetail {}
Run Code Online (Sandbox Code Playgroud)
导出的类型使用非导出类型作为公共方法中的方法参数类型.我假设编译器会拒绝这种不一致的类配置,因为其他模块中的客户端无法真正调用该foo()
方法,因为它们无法实例化参数类型.
令我惊讶的是,这个模块是由javac成功编译的.我可以看到传递的特殊情况null
,但我仍然认为这样的API定义格式错误,并且认为它不应该被支持,理想情况下由编译器强制执行.
不解除这种情况的原因是什么?
我正在使用 AWS Lambda 和 API Gateway 构建无服务器应用程序。为了防止 DDOS 攻击执行大量请求并花费我很多钱,我设置了一个带有请求配额的使用计划(例如 10K 请求/月)。这需要调用者将 API 密钥作为标头传递。
这看起来效果很好,但我还需要为此服务启用 CORS。为此,我需要允许未经授权的 OPTIONS 请求(“CORS 预检”请求),因为浏览器不支持在那里发送任何特殊标头。但后来我似乎找不到强制执行配额的方法,我又回到了原点:这些请求的数量不受控制可能会花费不可预见的金额。有什么办法可以排除这种可能性吗?
我正在考虑用nexus-staging-maven-plugin替换maven-deploy-plugin.
现在我的项目的一些子模块(例如集成测试模块)不会部署到Nexus服务器.我曾经通过"maven.deploy.skip"属性禁用这些模块的部署.但是,我找不到与nexus-staging-maven-plugin类似的东西.是否有另一种方法可以使用此插件从部署中跳过单个模块?
我也试着插件结合所描述的伪相"无" 在这里,但检查有效POM,还有插件(我认为它是如何替换的方式是由于所注射执行现有的部署插件).
我正在测试OpenJDK Panama Vector API jdk.incubator.vector 并在亚马逊 c5.4xlarge 实例上进行了测试。但在每种情况下,简单展开的矢量点积都无法执行 Vector API 代码。
我的问题是:为什么我无法获得如Richard Startin 的博客中所示的性能提升。同样的性能提升也在这次会议meetup中被英特尔人讨论过。有什么不见了?
JMH 基准测试结果:
Benchmark (size) Mode Cnt Score Error Units
FloatVector256DotProduct.unrolled 1048576 thrpt 25 2440.726 ? 21.372 ops/s
FloatVector256DotProduct.vanilla 1048576 thrpt 25 807.721 ? 0.084 ops/s
FloatVector256DotProduct.vector 1048576 thrpt 25 909.977 ? 6.542 ops/s
FloatVector256DotProduct.vectorUnrolled 1048576 thrpt 25 887.422 ? 5.557 ops/s
FloatVector256DotProduct.vectorfma 1048576 thrpt 25 916.955 ? 4.652 ops/s
FloatVector256DotProduct.vectorfmaUnrolled 1048576 thrpt 25 877.569 ? 1.451 ops/s
JavaDocExample.simpleMultiply 1048576 thrpt …
Run Code Online (Sandbox Code Playgroud) 我想通过Maven的站点插件生成自定义报告,但只有这个自定义报告,而不是默认通过project-info-reports-plugin生成的所有报告.
问题:推荐的方法是什么?
我看到有跳过属性来禁用该插件提供的特定报告,但这看起来很乏味,所以我正在寻找一种方法来完全禁用该插件.
我想使用JEP 330来运行带有Java(> = 11)的单文件源代码程序.
这样做,我想传递编译器(javac)理解的选项,但不传递运行时(java),例如-XDsuppressNotes
.这会导致以下调用失败:
java --enable-preview --source=12 -XDsuppressNotes Test.java
Unrecognized option: -XDsuppressNotes
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,如何指定此类特定于编译器的选项?
我想编写一个注释处理器,它根据处理类型的JavaBeans属性集生成源代码.
这一般起作用,但如果其他注释处理器存在,我正在努力正确地这样做.具体来说,这样的其他处理器可以为我的处理器处理的类型生成超类,因此我也需要考虑该超类型的属性.在随后的回合中,可以生成该超类的超类,等等.
这意味着我不能生成我的源代码,直到我感兴趣的类型的层次结构稳定,即在其他处理器的后续轮次(或在我的处理器运行之后的同一轮)中不会生成更多的超类型.
我怎么知道是不是这样呢?我知道RoundEnvironment#processingOver()
并且可能在最后一轮中生成我的代码,但我理解这是一个不好的做法(编译器会发出警告).
我有一个Java 8数字流:
Stream<Number> numbers = ...;
Run Code Online (Sandbox Code Playgroud)
我想迭代流并根据每个元素的类型调用特定的使用者.即,对于Integer
元素,我想调用Consumer<Integer>
,对Long
一个Consumer<Long>
等
有forEach()
方法,但这需要一个Consumer<? super Number>
,要求实现(通常是一个Lambda表达式)instanceof-切换精确类型本身.
就API而言,我基本上是在寻找这样的东西:
numbers.forEach( callbacks -> {
callbacks.on( Integer.class, i -> { /* handle Integer */ } );
callbacks.on( Long.class, l -> { /* handle Long */ } )
} );
Run Code Online (Sandbox Code Playgroud)
是否有任何现有的API允许我以类似于此的方式为每个流元素子类型注册特定的消费者?
我正在尝试使用Python解释Debezium在Kafka 中存储的Avro记录
{
"name": "id",
"type": {
"type": "bytes",
"scale": 0,
"precision": 64,
"connect.version": 1,
"connect.parameters": {
"scale": "0"
},
"connect.name": "org.apache.kafka.connect.data.Decimal",
"logicalType": "decimal"
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定这对应于哪种 Python 3 原始类型。如何反序列化这个值?
提前致谢!
我已阅读http://debezium.io/docs/connectors/mysql/,但我找不到任何有关是否可以配置debezium的信息,以便可以将2个(或更多)表中的更改写入相同的单个kafka话题?在我看来,它总是 1 个表 -> 1 个主题。
使用 Gradle 发布库时,生成的 JAR 将包含一个最小的 POM 文件,该文件本质上只包含使用该库所需的依赖项信息以及一些元数据(例如许可证信息)。
在构建 JAR 时,有没有办法使用 Maven 实现相同的目的?即,我正在寻找一个插件,它可以删除项目 POM 中的所有信息,而这些信息仅是构建JAR 所需的,例如使用的插件、测试范围的依赖项等?JAR 的使用者不需要所有这些信息,因此我宁愿不发布它,从而降低我的库用户的复杂性。
java ×9
maven ×3
annotations ×2
apache-kafka ×2
debezium ×2
cors ×1
dot-product ×1
java-11 ×1
java-8 ×1
java-9 ×1
java-platform-module-system ×1
java-stream ×1
javac ×1
mapping ×1
mapstruct ×1
maven-3 ×1
mysql ×1
nexus ×1
pom.xml ×1
python ×1
reflection ×1