为什么一个人不应该使用mysql_*功能的技术原因是什么?(例如mysql_query(),mysql_connect()或mysql_real_escape_string())?
即使他们在我的网站上工作,为什么还要使用其他东西?
如果他们不在我的网站上工作,为什么我会收到错误
警告:mysql_connect():没有这样的文件或目录
我正在尝试设置一个私有 docker 注册表,由反向 nginx 代理保护,该代理通过客户端证书验证用户。
我收到的错误是:
x509:由未知权威机构签署的证书
根据文档,您应该能够将证书添加到 /etc/docker/certs.d/ 中,我已经这样做了。Docker 似乎看到了证书的位置:
EBU[0015] 调用 POST /v1.24/images/create?fromImage=docker.squadwars.org%2Froster&tag=latest DEBU[0015] hostDir: /etc/docker/certs.d/docker.squadwars.org DEBU[0015]证书:/etc/docker/certs.d/docker.squadwars.org/client.cert DEBU[0015] 密钥:/etc/docker/certs.d/docker.squadwars.org/client.key DEBU[0015] crt: /etc/docker/certs.d/docker.squadwars.org/docker.squadwars.org.crt DEBU[0015] 主机目录:/etc/docker/certs.d/docker.squadwars.org DEBU[0015] 证书:/etc /docker/certs.d/docker.squadwars.org/client.cert DEBU[0015] 密钥:/etc/docker/certs.d/docker.squadwars.org/client.key DEBU[0015] crt:/etc/docker /certs.d/docker.squadwars.org/docker.squadwars.org.crt DEBU[0015] 尝试从https://docker.squadwars.org v2 WARN[0015] 获取 v2 时出错注册表:获取https://docker.squadwars.org/v2/:x509:由未知机构签名的证书错误 [0015] 错误后尝试拉取下一个端点:获取https://docker.squadwars.org/v2/:x509 :由未知机构签署的证书
我还尝试将证书文件从 mydomain.org 重命名为“ca.crt”,调试日志再次显示它看到了该文件,但没有任何效果。
我可以像这样使用curl:
curl --key client.key --cert client.cert https://docker.squadwars.org/
我还可以将 --cacert 选项添加到curl,无论哪种方式都有效。
docker 文档说,如果仍然有问题,您应该在操作系统级别添加证书。我已经按照说明这样做了:
(这可能就是为什么我不需要 -cacert 和curl,尽管我很困惑,因为我已经删除了证书,但curl仍然有效)
这让我发疯,任何帮助将不胜感激!
编辑:我忘了补充一点,最初我的证书 FQDN 是错误的,但现在是“docker.squadwars.org”
我有一个实体
@Builder
class MyEntity {
private Set<OtherEntitiy> children = new HashSet<>()
}
Run Code Online (Sandbox Code Playgroud)
而且我收到龙目岛警告。
警告:@Builder将完全忽略初始化表达式。如果要将初始化表达式用作默认表达式,请添加@ Builder.Default。如果在构建期间不应设置该字段,请将该字段定为最终字段。设置=新的HashSet <>();
问题是:我该如何抑制龙目岛的警告?
也。我需要初始化子级,因为我想避免NullPointerException。我也不能将其标记为最终文件,因为它实际上不是最终文件。我无法标记为已归档,@Builder.Default因为我不仅要使用builder来创建该实体,而且想保存其他构造函数的默认值。
我尝试通过spring-cloud-stream使用测试消息发送和接收MessageCollector。
当我对流云使用本机 java 序列化时一切正常,但是当我将序列化更改为 json 时,MessageCollector 返回带有string有效负载而不是SomeObject有效负载的GenericMessage 。
配置是
cloud.stream.default.contentType=application/json
Run Code Online (Sandbox Code Playgroud)
测试用例:
Message outMsg = new GenericMessage<SomeObject>(new SomeObject(1));
someChannel.send(outMsg);
GenericMessage<SomeObject> inMsg = (GenericMessage<SomeObject>) messageCollector.forChannel(someChannel).poll();
Assert.assertTrue(inMsg.getPayload() instanceof SomeObject);
Run Code Online (Sandbox Code Playgroud)
因此,断言是错误的。inMsg包含字符串负载(字符串包含 SomeObject 的有效 json 表示)。
我的问题是:我如何GenericMessage从 SomeObject接收有效载荷MessageCollector?
生产环境工作正常,无需显式映射到SomeObject.
java spring spring-messaging spring-cloud spring-cloud-stream
我想使用Either测试获得的结果。假设我有一个简单的示例,没有一个
@Test
fun `test arithmetic`() {
val simpleResult = 2 + 2
Assertions.assertEquals(4, simpleResult)
}
Run Code Online (Sandbox Code Playgroud)
现在我包装了结果:
@Test
fun `test arithmetic with either`() {
val result : Either<Nothing, Int> = (2 + 2).right()
Assertions.assertTrue(result.isRight())
result.map { Assertions.assertEquals(4, it) }
}
Run Code Online (Sandbox Code Playgroud)
我想它看起来有点丑陋,因为如果我们得到了最后的断言,Either.Left而不是Either.Right
如何执行,该如何断言如何以函数样式正确地测试结果?
我需要取 2 个值,每个值都是 ,Either<Throwable, Any>如果每个值都是 ,则将它们组合在一起(或执行其他操作)Right。
因为arrow-kt 0.11.0这是可能的tupled
tupled(
"Hello".right(),
"Word".right()
).map { params ->
println(params.a + params.b) //go to map ONLY IF a and b are always right
}
Run Code Online (Sandbox Code Playgroud)
但由于arrow-kt 0.12tupled 已被弃用,取而代之的是 Kotlin 的 Pair 和 Triple,所以我可以t figure out how to achieve the same without tupled`。