这个声明之间有什么区别吗?
Thread.State state = Thread.State.NEW;
Run Code Online (Sandbox Code Playgroud)
然后
Enum<Thread.State> state = Thread.State.NEW;
Run Code Online (Sandbox Code Playgroud)
在Java?而不是第二个选项有点长?
我正在使用Spring Data JPA,我想从Settings表中检索最后一条记录.
我有SettingsRepositorySpring Data实现的标准方法.如何编写方法(或查询)来检索给定表中的最后一行?
interface SettingsRepository extends JpaRepository<Settings, Long> {
// ?
}
Run Code Online (Sandbox Code Playgroud) 我有以下打字稿代码:
private addBrowserNameAsCssClassToHtmlTag(): void {
var rootElement = angular.element(document.querySelector("html"));
if (this.isOpera()) {
rootElement.addClass("opera-browser");
} else if (this.isFirefox()) {
rootElement.addClass("firefox-browser");
} else if (this.isSafari()) {
rootElement.addClass("safari-browser");
} else if (this.isIE()) {
rootElement.addClass("ie-browser");
} else if (this.isChrome()) {
rootElement.addClass("chrome-browser");
}
}
private isOpera(): boolean {
return (!!(<any>window).opr && !!(<any>opr).addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;
}
private isFirefox(): boolean {
//noinspection TypeScriptUnresolvedVariable
return typeof InstallTrigger !== 'undefined';
}
private isSafari(): boolean {
return /constructor/i.test(window.HTMLElement) || ((p): boolean => {
return p.toString() …Run Code Online (Sandbox Code Playgroud) 我使用lombok 项目并Hibernate一起使用。我想知道实体类上通常应该使用哪种 lombok 注释。
第一个候选者是@Data,但它为所有非最终字段生成设置器。由于id字段不是最终的,我有setId()我不想要的方法。
第二个候选者是,@Value但该id字段被标记为最终字段,这就是为什么它必须由应用程序手动分配。
我也可以使用@Builder,但它有与@Data相同的问题。
为了解决问题,@Data我可以为字段编写自己的私有设置器id来覆盖生成的设置器。但也许有更好的方法?在这种情况下,最佳实践是什么?
我知道CQRS可以在有或没有的情况下实现event sourcing,但它在另一端起作用吗?难道event sourcing不CQRS有意义吗?如果是这样,应如何实施?
我有 docker-compose.yml 文件,其build context属性指定如下:
version: '3'
services:
my-service:
container_name: my-service
image: my-service
build:
context: foo
ports:
- 8088:8088
# other services
Run Code Online (Sandbox Code Playgroud)
当我在docker-compose up本地运行时,构建上下文确实存在并且一切正常。但是,我的 CI 服务器配置为使用相同的 docker-compose.yml 文件,但没有构建上下文(图像通过 SSH 复制为 .tar 存档,然后通过 docker load 加载)。现在我有一个错误:
错误:构建路径 /foo 要么不存在,要么不可访问,要么不是有效的 URL。
所以我试图找到一种方法来抑制在运行时寻找这个构建上下文docker-compose up(我不想构建图像,因为它们已经是最新的),但docker-compose up --no-build不起作用。有任何想法吗?
我有以下代码:
Stream.of(1, 4, 5).collect(Collectors.toSet());
Run Code Online (Sandbox Code Playgroud)
从方法一的JavadoctoSet()中可以看到:
不保证返回的 Set 的类型 (...)
我查看了toSet()方法的实际实现,乍一看它似乎HashSet总是返回(至少在 JDK 11 中)。
我知道将来可以在不违反合同的情况下更改实现,但目前是否存在HashSet返回的实现不同的情况?
我有一个元素流.我想将每个元素映射到两个相同类型的不同元素,以便我的流将是两倍长.我通过连接两个流来做到这一点,但我想知道是否可以做到这一点更简单?到目前为止我做了什么:
private List<String> getTranslationFilesNames() {
return Stream.concat(SUPPORTED_LANGUAGES.stream()
.map(lang -> PATH_TO_FILES_WITH_TRANSLATIONS_1 + lang + FILE_EXTENSION),
SUPPORTED_LANGUAGES.stream()
.map(lang -> PATH_TO_FILES_WITH_TRANSLATIONS_2 + lang + FILE_EXTENSION))
.collect(Collectors.toList());
}
Run Code Online (Sandbox Code Playgroud)
我觉得这个解决方案不是很优雅.是否有更好的方法来达到同样的效果?
是手动创建对象,即使用new运算符而不是注册Springbean并使用依赖注入被认为是不好的做法?我的意思是,Spring IoC容器必须知道应用程序中的所有对象吗?如果是这样,为什么?
java spring dependency-injection inversion-of-control new-operator
我编写了一个 Groovy 脚本,我需要访问一个具有私有访问修饰符的字段。这工作正常,但会产生警告:
Access to <field_name> exceeds its access rights
我想抑制这个警告。@SuppressWarnings为了实现它,我必须使用什么值的注释?
我试过了@SuppressWarnings("all"),效果很好,但我想对抑制进行更精细的控制。我也试过了,@SuppressWarnings("AccessingNonPublicFieldOfAnotherObject")但是没有效果。
下面这个警告在 IntelliJ 中的外观:
不幸的是,自动提示没有提出任何合理的解决方案:
java ×6
java-stream ×2
spring ×2
annotations ×1
architecture ×1
collectors ×1
cqrs ×1
difference ×1
docker ×1
enums ×1
generics ×1
groovy ×1
java-11 ×1
java-8 ×1
javascript ×1
jpa ×1
lombok ×1
new-operator ×1
set ×1
spock ×1
spring-data ×1
stream ×1
suppress ×1
typescript ×1