小编the*_*nov的帖子

如何将现有的 postgres 数据文件夹复制并使用到 docker postgres 容器中

我想构建 postgres docker 容器来测试一些问题。我有:

  1. postgres 文件的存档文件夹( /var/lib/postgres/data/)

  2. 将文件夹放入 docker postgres:latest 的 Dockerfile。

我想:

  1. 重新创建镜像后重置自身状态的 Docker 镜像。

  2. 具有基于传递到容器 postgres 文件的数据库状态的容器

  3. 我不想在/docker-entrypoint-initdb.d初始化脚本中等待很长时间的备份和恢复现有数据库的操作。

  4. 我不想使用卷,因为我不需要在重新启动之间存储新数据(这就是为什么这篇文章与如何将 PostgreSQL 容器与现有数据一起使用?不同的原因。在该文章中使用了卷)

我的建议是在构建阶段将 postgres 文件( /var/lib/postgres/data/)从主机复制到 docker 中。/var/lib/postgres/data/

但是 postgres docker 在 initdb 阶段执行时替换了这个文件。

如何询问 Postgres docker 不覆盖数据库文件?

例如 Dockerfile

FROM postgres:latest


COPY ./postgres-data.tar.gz /opt/pg-data/
WORKDIR /opt/pg-data
RUN tar -xzf postgres-data.tar.gz
RUN mv ./data/ /var/lib/postgresql/data/pg-data/
Run Code Online (Sandbox Code Playgroud)

运行命令

docker run -p 5432:5432 -e PGDATA=/var/lib/postgresql/data/pg-data --name database-immage1 database-docker
Run Code Online (Sandbox Code Playgroud)

postgresql docker

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

哪个 ExecutorService 最适合阻塞 IO 任务

假设我们有 n 个独立的阻塞 IO 任务,例如对另一台服务器进行休息调用的任务。然后我们需要合并所有答案。每个任务的处理时间可以超过 10 秒。

  1. 我们可以按顺序处理它,最后花费 ~n*10 秒:

    Task1Ans task1 = service1.doSomething();
    Task2Ans task2 = service2.doSomething()
    ...
    return result;
    
    Run Code Online (Sandbox Code Playgroud)
  2. 另一种策略是使用 CompletableFuture 以并行方式处理它,并在所有任务上花费约 10 秒:

    CompletableFuture<Task1Ans> task1Cs = CompletableFuture.supplyAsync(() -> service1.doSomething(), bestExecutor);
    CompletableFuture<Task2Ans> task2Cs = CompletableFuture.supplyAsync(() -> service2.doSomething(), bestExecutor);
    return CompletableFuture.allOf(task1Cs, task2Cs)
       .thenApply(nothing -> {
           ...
           // combine task1, task2 into result object
           return result;
       }).join();
    
    Run Code Online (Sandbox Code Playgroud)

第二种方法有好处,但我不明白哪种类型的线程池最适合此类任务:

ExecutorService bestExecutor = Executors.newFixedThreadPool(30)   /// or Executors.newCachedThreadPool() or Executors.newWorkStealingPool()
Run Code Online (Sandbox Code Playgroud)

我的问题是哪个 ExecutorService 最适合处理 n 并行阻塞 IO 任务。

java executorservice completable-future

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

IntelliJ 可以为 Java 类生成可链接的 setter/mutators 吗?

是否可以在 IntelliJ IDEA 中生成可链接的字段变异器?最好使用 not 以外的前缀,set以避免破坏约定。比方说withX是 的可链接伴侣setX

例如,给定这个类存根

class SomeClass {
    private String foo;
}
Run Code Online (Sandbox Code Playgroud)

我可以使用Generate -> Setters 来生成一个public void setFoo(String foo)方法。

class SomeClass {
    private String foo;

    public void setFoo(String foo) {
        this.foo = foo;
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有类似的方法来生成public SomeClass withFoo(String foo)这样的方法?

class SomeClass {
    private String foo;

    public SomeClass withFoo(String foo) {
        this.foo = foo;
        return this;
    }
}
Run Code Online (Sandbox Code Playgroud)

java setter intellij-idea mutators

3
推荐指数
1
解决办法
813
查看次数