我在 Sonar 中发现了一条规则:
与其他中间 Stream 操作的一个关键区别是 Stream 实现可以自由地跳过调用以
peek()
达到优化目的。这可能会导致peek()
意外地仅调用 Stream 中的部分元素或不调用任何元素。
另外,Javadoc中也提到了这一点:
此方法的存在主要是为了支持调试,您希望在元素流经管道中的某个点时查看它们
什么情况下可以java.util.Stream.peek()
跳过?和调试有关系吗?
Kotlin对java.util.stream.Stream <> .peek(...)的最佳选择是什么?
似乎没有替代的中间操作:
https://kotlinlang.org/api/latest/jvm/stdlib/kotlin.streams/index.html
我发现只有终止forEach(...)
我想从Spring Boot 2切换到Micronaut框架。而且我在Swagger设置上苦苦挣扎。
在Spring Boot 2项目中,我具有以下依赖关系:
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
和SwaggerConfig.class:
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket swagger() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(getApiInfo())
.select()
.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
.paths(PathSelectors.any())
.build();
}
private ApiInfo getApiInfo() {
return new ApiInfo("test",
"",
"",
"",
new Contact("", "https://test.test", ""),
"",
"");
}
}
Run Code Online (Sandbox Code Playgroud)
它与Spring Boot 2应用程序一起完美启动swagger-ui。
我应该添加哪些依赖关系到Maven,以及应该创建哪些类才能为Micronaut项目获得相同的结果?
我有一个用C语言编写的程序.我很难理解我无法理解的效果.应用程序读取一系列单词作为命令行输入.在读取输入时,它将逐个单词放入列表中.然后它打印列表.让我感到震惊的是,为什么循环中添加的值正确打印,而循环中添加的值不是.我的意思是用户输入的值,只打印最后一个.此外,随着输入值的数量,它将被打印多次.两个主要的嫌疑人是push和printList方法:
void push(struct List * list, char* newValue){
assert(list != NULL);
assert(newValue != NULL);
Node* node = createNode();
node->data = newValue;
node->next = NULL;
if(list->firstNode != NULL){
node->next = list->firstNode;
list->firstNode = node;
}
else list->firstNode = node;
}
void printList(struct List * list){
assert(list != NULL);
Node *node = list->firstNode;
while(node->next != NULL){
printf("%s ", node->data);
node = node->next;
}
if(node != NULL) printf("%s ", node->data);
}
Run Code Online (Sandbox Code Playgroud)
但我找不到任何错误.我做的是比较有和没有while循环的行为:
int main(){
struct List* list = createList();
char s[256];
int a; …
Run Code Online (Sandbox Code Playgroud) 你如何创建Boolean.FALSE
长度为100的流?
我一直在努力的是:
Boolean.FALSE
.但是new Boolean[100]
返回一个数组NULL
.所以我合理地考虑使用流API作为方便Iterable
且几乎(1)的Iterable
操作工具;Boolean
no-params构造函数(2),因此我不能使用Stream.generate()
,因为它接受Supplier<T>
(3).我发现的是Stream.iterate(Boolean.FALSE, bool -> Boolean.FALSE).limit(100);
给我想要的东西,但它似乎不是很优雅的解决方案,恕我直言.
还有一个选择,我发现(4)是IntStream.range(0, 100).mapToObj(idx -> Boolean.FALSE);
,在我看来更奇怪.
尽管这些选项不违反流API的管道概念,有没有更简洁的方法来创建流Boolean.FALSE
?
我用:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-stream-rabbit</artifactId>
<version>3.0.1.RELEASE</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
我需要禁用 Rabbit 来测试应用程序。我试过这个:
spring:
cloud:
config:
enabled: false
discovery:
enabled: false
Run Code Online (Sandbox Code Playgroud)
它不起作用。
我需要做什么才能阻止 Rabbit 组件启动?
假设我有两种方法:
private fun method1(a: A): A {
return a.copy(v1 = null)
}
private fun method2(a: A): A {
return a.copy(v2 = null)
}
Run Code Online (Sandbox Code Playgroud)
我可以这样写吗:
private fun commonMethod(a: A, variableToChange: String): A {
return a.copy($variableToChange = null)
}
Run Code Online (Sandbox Code Playgroud)
换句话说,我可以使用变量来引用命名参数吗?
java ×3
java-stream ×3
java-8 ×2
kotlin ×2
c ×1
maven ×1
micronaut ×1
side-effects ×1
sonarqube ×1
swagger ×1