小编igr*_*igr的帖子

CompletableFuture,supplyAsync()和thenApply()

需要确认一下.以下代码:

CompletableFuture
    .supplyAsync(() -> {return doSomethingAndReturnA();})
    .thenApply(a -> convertToB(a));
Run Code Online (Sandbox Code Playgroud)

会是这样的:

CompletableFuture
    .supplyAsync(() -> {
        A a = doSomethingAndReturnA();
        convertToB(a);
 });
Run Code Online (Sandbox Code Playgroud)

对?

此外,另外两个问题是"我们有什么理由使用thenApply?"

1)有大转换代码?

要么

2)需要在其他地方重用lambda块吗?

futuretask java-8

39
推荐指数
1
解决办法
4万
查看次数

maven目录结构生成的源文件的位置

除了src/main/java文件夹,我们还有一个文件夹,其中包含主要源所需的一些生成的Java源代码.需要时手动调用代码生成.生成的源被入源仓库.一切都将建成并包装在一起.

生成的java 与主要源一起编译的最佳位置是什么?应该是:

  • /src/generated/java(遵循相同src/testInt/java的集成测试命名逻辑)
  • /generated-src/main/java(与"src目录包含构建项目的所有源材料"相冲突)
  • /src/main/generated-java(嗯...... generated-java不是一种类型)
  • ...?

对于这种情况,第一个选项似乎是最合适的选项.你怎么看?Maven文档中有没有描述这种情况的东西(我忽略了)?你知道任何类似结构的回购吗?

谢谢.

回答

正如@Absurd-Mind所建议的那样,我们正在考虑的方向是将源分成子模块(在gradle中工作得很好).因此,生成的源和一些其他相关源将进入其自己的子模块(它们将生成单独的工件),其余的将进入使用此子模块的其他子模块.谢谢.

java directory-structure gradle maven

33
推荐指数
2
解决办法
3万
查看次数

Postgres不会在列名前接受表别名

我正在使用一个框架(Jodd),它将表别名添加到SQL Select中的列名.它看起来像格式良好的SQL,但Postgres扼杀了它.

update GREETING Greeting 
     set Greeting.ID=5, 
         Greeting.NAME='World', 
         Greeting.PHRASE='Hello World!'  
where (Greeting.ID=5)
Run Code Online (Sandbox Code Playgroud)

给出错误:

Error: ERROR: column "greeting" of relation "greeting" does not exist
SQLState:  42703
Run Code Online (Sandbox Code Playgroud)

有没有办法让Postgres接受SQL?我的另一个选择是破解框架,我不想这样做.

sql postgresql jodd

25
推荐指数
3
解决办法
2万
查看次数

Docker命名卷与DOC(仅数据容器)

直到最近版本的Docker(v1.10),我们认为我们可以使用DOC:仅数据容器.所以我会创建这样的DOC(基于例如busybox)并用--volumes-from它将它链接到我的容器.您仍然可以在Docker文档中阅读此内容.

对于新版本的docker,我们应该使用而不是DOC named volumes.这是一个例子docker-compose.yml:

version: '2'    
services:
  elasticsearch:
    image: elasticsearch:2.2.0
    command: elasticsearch -Des.network.host=0.0.0.0
    ports:
      - "9201:9200"
    volumes:
      - "es-data:/usr/share/elasticsearch/data"

volumes:    
  es-data:
Run Code Online (Sandbox Code Playgroud)

在这里,我们创建并使用命名卷es-data.

关于这个新功能的文档仍然不多.我在问:

  • 我们可以用命名容器替换DOC吗?音量持续多长时间?如果我删除正在使用它的容器怎么办?
  • 我们怎样才能备份呢?以前,我可以docker run --rm --volumes-from es-data ...,然后tar它.

docker docker-compose

20
推荐指数
1
解决办法
6187
查看次数

返回REST API中错误的HTTP方法的代码?

我们的API用户可以通过向根API地址发送请求来获取文档(集合列表)GET.如果他发送POST,我们应该返回一些东西.同样的问题适用于其他资源路径,例如PATCH在查询路径上发送等.并非所有方法在某些路径上都有意义.

我从HTTP RFC看到的是我们应该返回代码405:不允许Allowed使用方法,并使用允许的方法列表发回响应头.

我看到例如GitHub API返回404:在我上面解释的情况下找不到(发送POST到root).

什么是正确的回应?404还是405?我看到405更多开发人员友好,所以有什么理由不使用它吗?

api rest http

19
推荐指数
1
解决办法
9820
查看次数

如何在gradle中使用JMH?

我想使用带有gradle的OpenJDK 微基准测试工具JMH.但是,我在编译时获得了NPE.另一方面,JMH在使用maven时工作.

我不发布任何内容,build.gradle因为它是基本的 - 应用java插件并添加对JHM工具的依赖(org.openjdk.jmh:jmh-core:0.2).

我试过这里写的没有成功.

还有什么我需要做的?我认为设置代理的东西,但我仍然没有想出来.

例外:

:compileJava
java.lang.NullPointerException
at org.openjdk.jmh.processor.internal.GenerateMicroBenchmarkProcessor.validMethodSignature(GenerateMicroBenchmarkProcessor.java:502)
Run Code Online (Sandbox Code Playgroud)

gradle jmh

17
推荐指数
4
解决办法
8245
查看次数

如何使用Gradle制作多版本JAR文件?

Java9引入了Multi-Release JAR.

假设我使用java8有多模块Gradle项目:

project-root
      settings.gradle
      build.gradle 
      /module1
          /src
          ... (common maven structure)
      /module2
      /module3
Run Code Online (Sandbox Code Playgroud)

这是Gradle中常见的多模块项目.假设我需要MR-Jar module1.

我无法添加module1-java9定位Java9,因为基础是8 - 到目前为止,我的Gradle和IntelliJ IDEA都抱怨.Gradle是用java8编译的,但是我需要为模块启用java9运行时(不知道怎么做); 在IntelliJ IDEA中我可以为模块设置java9运行时,但每次重新加载gradle配置时它都会被覆盖.

而且,即使我以某种方式添加它,我需要指示module11)构建第二个和2)包括module1-java9.以下是这种情况的图纸:

project-root
      settings.gradle
      build.gradle 
      /module1
      /module1-java9  (added java9 module)
      /module2
      ...
Run Code Online (Sandbox Code Playgroud)

或者,这可以在module1具有不同来源的情况下完成:srcsrc-java9.但我怀疑这会被接受.这是一张图:

project-root
      settings.gradle
      build.gradle 
      /module1
          /src
          /src-java9 (added java9 source folder)
      /module2
      /module3
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只看到它module1-java9是一个单独的项目(不是模块),module1只是在那里调用gradle并获取输​​出.是的,这是gradle调用gradle :)))

有没有开发人员友好的方式来做到这一点?

java gradle java-9 java-module

15
推荐指数
1
解决办法
560
查看次数

Java,gulp和maven文件夹结构

我有一个使用Maven标准目录布局的Java Web项目:java文件进入java(实际:) /src/main/java,资源进入resources,web内容进入webapp.

然后我们想通过添加bower,sass,gulp等来改进我们的web层.我们的gulp构建编译scss,最小化javascripts,优化图像等,一切你期望的.但是这引入了1)另一个构建工具,gulp和2)gulp生成的文件.

问题是如何组织这样的项目?一种方法可能是:

(A)gulp构建到webapp文件夹中

在此解决方案中,所有javascript,images,scss文件都存储在其中/src/main/assets并构建到/src/main/webapp.源和gulp生成的文件都被提交给git.gradle构建独立于gulp,对于没有安装gulp的用户来说是可以的 - 比如那些只需要在后端工作的用户.此外,CI服务器不依赖于gulp的东西.

(B)在构建期间使用gradle从gradle

在这个解决方案中,gulp是从gradle调用的.Gradle因此构建了一切.每当你想尝试某些东西时,你必须使用gradle.此外,每个开发人员都需要安装gulp,对于使用Windows的开发人员来说可能是个问题(正如我所知).CI服务器也应该知道如何运行gulp.

我的团队在这两个选项之间徘徊.有没有人有这些解决方案的任何工作经验?

java project gradle maven gulp

14
推荐指数
2
解决办法
1万
查看次数

如何在Java9模块中使用第三方库?

我有一些java9模块使用的第三方库不是Java9模块,只是一个简单的实用工具jar.

但是,编译器抱怨它无法从我的实用程序中找到包.

我应该怎么做module-info.java才能使用我的第三方库?

java modularity java-platform-module-system java-9

13
推荐指数
2
解决办法
4674
查看次数

所有Docker容器状态?

Docker状态列表在这里.但是,当我使用API​​列出docker容器时,状态以"自然"句子显示; 例如:

  • Exited (0) NN seconds ago
  • Up NN days
  • 等等...

我找不到所有状态的所有字符串输出的确定列表.换句话说,我想解析docker API状态字符串.

Docker API的容器状态的所有可能输出是什么?

这是我正在谈论的api.

docker

9
推荐指数
2
解决办法
3994
查看次数