目前,在Linux上使用ZooKeeper满足我们的初始需求.代码库是所有Java/Groovy.稍后,将需要支持Windows.但是,ZooKeeper文档支持的平台仅列出对Windows 32的"开发"支持:
Win32 is supported as a development platform only for both server and client.
Run Code Online (Sandbox Code Playgroud)
人们在Windows上成功运行ZK吗?有什么问题?
另外,64位Windows呢?有人这样做,你可以分享任何经验吗?
从这个 Spring 文档中我知道当我使用 @Bean 时,默认值已经等同于:
@Bean(autowire = Autowire.NO)
(默认)没有自动装配。Bean 引用必须通过 ref 元素定义。对于较大的部署,不建议更改默认设置,因为明确指定协作者可以提供更好的控制和清晰度。在某种程度上,它记录了系统的结构。
我只是想了解这对我意味着什么。如果我的系统是 100% Java 配置并且没有 XML 配置,那么据我所知,当我使用 @Bean 时,“Autowire.no”没有任何影响。
编辑
“无影响”是指其他对此 bean 的 @Autowired 引用是自动装配的(在其他 Java Config 类中)。我怀疑这是因为在 Java Config 中没有明确定义“ref 元素”,因此此(默认)设置无效。
例子:
第一个配置:
package a.b.c;
@Configuration
public class AlphaConfig {
@Bean(autowire = Autowire.NO)
public AlphaBeanType alphaBean() {
return new AlphaBeanType();
}
}
Run Code Online (Sandbox Code Playgroud)
然后在第二个配置中:
package d.e.f;
import a.b.c.AlphaBeanType;
@Configuration
public class AnotherConfig {
@Autowire
private AlphaBeanType alphaBeanType;
@Bean
. . .
}
Run Code Online (Sandbox Code Playgroud)
我看到的是“alphaBeanType”总是在第二个配置类中自动装配 - 这似乎与文档冲突 …
如果在Eclipse/STS中输入以下内容(使用groovy):
interface iFaceWithAnIssue {
def thisIsFine(a,b,c)
def thisHasProblems(alpha='va')
}
Run Code Online (Sandbox Code Playgroud)
抱怨的唯一一行是尝试使用默认值的那一行.如果支持与否,我无法从codehaus网站告诉我.
IDE错误是:
Groovy:Cannot specify default value for method parameter
Run Code Online (Sandbox Code Playgroud)
所以这让我觉得它不受支持.由于会有多个实现,我想在这里使用一个接口.我真的不需要接口中的默认值,但是如果实现类然后尝试默认此参数,则尝试完成接口契约时会出错.有什么办法吗?
需要让TestNG运行我的Spock测试,因为TestNG用于整个系统的其余部分.
由于TestNG支持运行JUnit测试,我试过这个:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="suiteTestName" verbose="1" junit="true">
<test name="myTestName">
<classes>
<class name="mypackage.artifact.SomeArtifactSpecification" />
</classes>
</test>
</suite>
Run Code Online (Sandbox Code Playgroud)
所以这实际上完全运行了Groovy的'SomeArtifactSpecification'Spock单元测试.我可以从测试中看到一些I/O,但是因为我在Eclipse中运行,所以我使用调试器来验证所有测试是否正确执行.我的类路径上有TestNG-6.8.7和JUnit-4.10.问题是TestNG似乎并不知道它确实如此!这是最终输出:
===============================================
myTestName
Total tests run: 0, Failures: 0, Skips: 0
===============================================
Run Code Online (Sandbox Code Playgroud)
有谁知道是否有可能让TestNG识别这些测试?
其他详细信息 - 为Bounty添加
在下面的一条评论中,彼得表示这取决于TestNG正在做什么.我尽可能地调查了这一点.似乎Junit和TestNG都调用了Spock的Sputnik类第63行的'run'方法.但是,当直接从JUnit调用时,从JUnit4TestClassReference调用Sputnik.从TestNG调用时,从JUnitCore调用Sputnik.
所以问题仍然存在:如何让TestNG识别Spock的测试输出?如果我要长寿和繁荣,我真的需要知道!似乎答案可能是让TestNG与JUnit4TestClassReference一起运行,或者使用某种类型的聪明包装器来使TestNG这样做......
对于血淋淋的细节,我在下面发布了两个堆栈跟踪.第一个是从TestNG运行,它不起作用,第二个是直接运行Spock而没有TestNG.
来自TestNG的第一个堆栈跟踪:
org.testng.remote.RemoteTestNG at localhost:54288
Thread [main] (Suspended (breakpoint at line 65 in ArtifactManagerSpecification))
ArtifactManagerSpecification.$spock_feature_0_0() line: 65
NativeMethodAccessorImpl.invoke0(Method, Object, Object[]) line: not available [native method]
NativeMethodAccessorImpl.invoke(Object, Object[]) line: 57
DelegatingMethodAccessorImpl.invoke(Object, Object[]) line: 43
Method.invoke(Object, Object...) line: 601
ReflectionUtil.invokeMethod(Object, Method, Object...) line: 138 …Run Code Online (Sandbox Code Playgroud) 在代码领域遇到大麻烦,因此我需要帮助!
使用Groovy和JsonSlurper我正在处理下面表单的JSON.当"类型"键设置为某个值时,我正在寻找外部包含元素(在我的情况下,这应该是全部应该是地图).例如,如果类型是"Type5",那么我需要返回三个地图:包含外部Type5的"body"地图,包含INNER Type5的"body"地图和靠近底部的Type5地图(每个的EntrySet也可以正常工作).Type3和Type4表现出相同的行为!
根据请求编辑以拥有有效的Json
我通过Groovy的JsonSlurper运行它,所以它应该是有效的.
{
"type": "Run1",
"body": [
{
"type": "Type1",
"expression": {
"type": "Type2",
"expressions": [
{
"type": "Type3",
"body": {
"type": "Type4",
"id": null,
"params": [
{
"type": "Identifier",
"name": "a"
},
{
"type": "Identifier",
"name": "b"
},
{
"type": "Identifier",
"name": "c"
}
],
"body": {
"type": "Type5",
"body": [
{
"type": "Type6",
"id": {
"type": "Identifier",
"name": "d"
},
"params": [
{
"type": "Identifier",
"name": "a"
}
],
"body": {
"type": "Type5",
"body": [ …Run Code Online (Sandbox Code Playgroud) 当输入列表变大时,一个常见的模式会导致问题。许多扩展的 Spring Data 接口org.springframework.data.jpa.repositoryJpaRepository声明使用 in-clause 的查询。一个简化的例子:
@Query("SELECT c.someImportantData FROM SomeComponent c WHERE c.someForeignKeyId IN (:someIds)")
List<Object> getImportantDataBySomeIds(@Param("someIds") Collection<UUID> someIds);
Run Code Online (Sandbox Code Playgroud)
只要列表someIds很小,这很有效。随着Postgresql小32767然而,一些内部使用超过这个数量,导致错误/异常的定义。目前,通过对主列表进行分区,然后通过调用软件传入较小的集合来修复这些问题。虽然这种方法也有效,但我想知道 JPA/SpringDataJPA 中是否有一种方法可以完成同样的任务?如果重要的话,我正在使用 Spring Data JPA 1.11.12。
我webapp在 docker compose 文件中定义了一项服务。尝试为用户添加一些灵活性来自定义卷安装。我尝试了很多变体,但都没有成功,最有希望的一个是:
volumes: ['log-volume:/path/to/container/logs',
'data-volume:/path/to/container/data' ${WEBAPP_VOLUMES:-''}]
Run Code Online (Sandbox Code Playgroud)
我认为这应该将环境变量默认为空字符串,并且一切都应该很好(即 WEBAPP_VOLUMES 未在 .env 文件中定义)。然后要使用,需要以逗号开始任何定义,这并不理想,但似乎可以接受。然而,docker-compose讨厌这个!
我收到如下错误:
ERROR: yaml.scanner.ScannerError: while scanning a plain scalar
in "./docker-compose.yml", line 20, column 110
found unexpected ':'
in "./docker-compose.yml", line 20, column 124
Please check http://pyyaml.org/wiki/YAMLColonInFlowContext for details.
Run Code Online (Sandbox Code Playgroud)
有谁知道要完成我在这里想做的事情?
我试图从Powermock 运行这个基线单元测试.使用Mockito和Junit运行代码As-Is关闭该链接,它运行时没有错误.不幸的是,我需要Mockito和TestNG,这让我在10次测试中有6次出错:
Mockito cannot mock this class: class replica.java.util.UUID$$PowerMock5
Mockito can only mock visible & non-final classes.
Run Code Online (Sandbox Code Playgroud)
对不起,这是一个很长的代码,但我想完成.第一次测试通过,第二次,第5次,第6次,第7次,第9次和第10次全部失败.这可以在TestNG下工作吗?
编辑 - 添加版本号
以下是我的小修改代码:
/*
* Copyright 2008 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by …Run Code Online (Sandbox Code Playgroud) 我有一堂这样的课:
public AbstractConfig() {
super(DataConfig.MGR_NAME);
}
Run Code Online (Sandbox Code Playgroud)
里面DataConfig有:
public final String MGR_NAME = "theManager";
Run Code Online (Sandbox Code Playgroud)
我发现 SpEL 文档令人困惑。如果设置了 Spring 配置文件,有没有办法可以更改值?也就是说,如果我有配置文件“AlternateManager” use theManagerAlt,但默认为theManager其他情况?
虽然我编写了这个符号来获取活动配置文件,但我希望存在一些如下所示的语法来完成这项工作:
@Value("#PROFILE['AlternateManager'] ? 'theManagerAlt' : 'theManager' ")
public final String MGR_NAME;
Run Code Online (Sandbox Code Playgroud) 最近,我尝试将版本2 docker-compose yaml文件升级到 version 3。具体来说,我是从 2.1 到 3.4。使用docker-compose版本 1.18.0 和docker版本 18.06.01。
docker-compose由于版本 2 选项的存在,第一次尝试导致中止:mem_limit。阅读这些第 3 版文档,它清楚地指出mem_limit已被删除并查看“升级”以指导使用远离此选项。这些说明告诉您使用deploy带有resources. 对docker-compose.yml文件进行这些更改,系统会正常启动。
不幸的是,我错过了那里的免责声明,它指出deploy被docker-compose! 我的问题:有没有办法在使用 Compose 文件参考 3 的docker-compose同时仍然强制执行容器内存限制?