小编TyR*_*den的帖子

我需要使用Java 8 Optional方法来获取包装的值,或者调用void返回Consumer lambda

我不熟悉在Java 8中使用选项.我知道方法orElseGet()需要一个供应商,orElseThrow()也需要一个抛出异常的供应商.orElseThrow()可能是一个很好用的,如果我可以构造我自己的异常并在触发该异常时执行某些操作.

我的主要目标是使用一个方法来获取未包装的值,或者如果可选的包装为null,那么实际执行一个完全不同的函数.

寻找最接近的东西:

class DoInsteadClass {
     public void doInstead() {
          // Do this instead
     }
}


Optional<String> myString = "Hello";
num.orElse(DoInsteadClass::doInstead);
Run Code Online (Sandbox Code Playgroud)

如果执行此操作的唯一方法是orElseThrow(),并且只要我可以使用'do this instead'代码处理异常,那也应该没问题.它只是使我的代码库更大,因为我必须为2或3个案例创建一些不同的自定义实用程序供应商,其中一些可选值将返回null.

问题是,.ifPresent()用值调用指定的使用者,否则什么也不做.如果值为null,我需要它来进行SOMETHING.我当前的代码使用自定义的解决方法,我首先检查值是否为null,如果是,则执行所选的函数.然后下一个语句是检查ifPresent()的语句.所以这是做同样的事情,我只是在寻找更多糖衣,一个声明版本.

java lambda optional java-8

5
推荐指数
1
解决办法
407
查看次数

MongoDB - WiredTiger快照与锁定

我并不完全理解这两个功能在(WiredTiger)MongoDB程序中如何相互关联:

1)WiredTiger快照

2)数据锁定

如果使用WiredTiger引擎的每次读取操作在读取时都提供了数据库级别"快照"(以便创建一致性(ACID中的C),为什么我们还需要锁定?让我们使用一个示例.

我在文档级别执行查询(读取操作).好的,所以我知道我得到了数据库级别的快照,所以我的数据是一致的,即使另一个用户同时写入同一个文档,更新它.

那么在这一点上,在该文档上使用Shared-Lock有什么用处,它会阻止对该文档的所有写入(独占)操作,直到发布共享锁定为止?在我阅读文档的同时写入该文档可能会出现什么问题,如果我实际上使用了在阅读时提供给我的文档快照?为什么我会关心文件在阅读操作期间是否被锁定?我已经从那个时间点得到了(一致的)数据,不是吗?

我显然在这里错过了一个关键概念......任何帮助?

谢谢.

database concurrency mongodb wiredtiger

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

启用TLS的反向代理(Traefik)后的Docker注册表-远程错误:错误的证书

所以我在这里做所有被Docker化的工作。Traefik和我的docker Registry实例一样都在容器中运行。如果我在注册表中单击,则可以从注册表中正常进行推/拉操作mydomain.com:5000/myimage

问题出在我尝试使用443击打它时mydomain.com/myimage。我在这里设置的是Traefik反向代理,在侦听443 mydomain.com,并将内部请求转发到:5000我的Registry实例。

当我从Traefik网址进行推/拉时,它挂起并倒数,等待在循环上重试。当我查看注册表的日志时,每一个我都可以看到实例IS实际上与反向代理Traefik通信,但是,我一遍又一遍地(在客户端的每次重试中)都遇到此错误:

2018/05/31 21:10:43 http: TLS handshake error from proxy_container_ip:port: remote error: tls: bad certificate

关于TLS问题,Docker Registry确实非常严格。由于我仍在开发中,因此我在这里使用所有自签名证书。知道是什么原因导致此错误吗?我假设Traefik代理检测到注册表提供的证书不可信(自签名),因此没有完成“推送”请求,反之亦然-发送注册表时,注册表返回到Traefik代理会检测到它不受信任。

如果需要,我可以提供其他信息。当前设置是Traefik和Registry都有自己的.crt和.key文件集。这两个(当然)都启用了TLS。

谢谢。

ssl reverse-proxy docker docker-registry traefik

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