我刚观察到这种行为;
Pattern p1 = Pattern.compile("^$");
Matcher m1 = p1.matcher("");
System.out.println(m1.matches()); /* true */
Pattern p2 = Pattern.compile("^$", Pattern.MULTILINE);
Matcher m2 = p2.matcher("");
System.out.println(m2.matches()); /* false */
Run Code Online (Sandbox Code Playgroud)
令我感到奇怪的是,最后一句话是错误的.这就是文档所说的;
默认情况下,正则表达式^和$忽略行终止符,并且仅分别匹配整个输入序列的开头和结尾.如果激活MULTILINE模式,则^在输入开始时和任何行终止符之后匹配,但输入结束时除外.当处于MULTILINE模式时,$匹配在行终止符之前或输入序列的结尾.HTTP://docs.oracle.com/javase/1.4.2 ...
从我得到的,它应该匹配?以下使事情变得更加混乱;
Pattern p3 = Pattern.compile("^test$");
Matcher m3 = p3.matcher("test");
System.out.println(m3.matches()); /* true */
Pattern p4 = Pattern.compile("^test$", Pattern.MULTILINE);
Matcher m4 = p4.matcher("test");
System.out.println(m4.matches()); /* true */
Run Code Online (Sandbox Code Playgroud)
这是什么?我怎么理解这个?我希望有人可以对此有所了解,真的很感激.
我一直在深入研究 Google Cloud Run 上的 Stackdriver Trace 集成。我可以让它与代理一起工作,但有几个问题困扰着我。
我进入了 Cloud Endpoints ESP 的源代码(Cloud Run 集成处于测试阶段),看看他们是否以不同的方式解决它,但使用了相同的模式:有一个带有跟踪 (1s) 和它会定期清除。
虽然我的跟踪集成似乎在我的测试设置中工作,但我担心在生产环境中运行它时不完整和丢失的跟踪。
这是一个假设的问题还是一个真实的问题?
看起来解决这个问题的正确方法是将遥测数据写入日志,而不是使用代理进程。Stackdriver Trace 支持吗?
当我创建一个未经身份验证的(公共)Cloud Run 端点来托管 API 时,我有哪些选项可以保护此端点免受发出数十亿 HTTP 请求的恶意用户的攻击?
只需 10 美元,您就可以发起第 7 层HTTP 洪水攻击,每秒可以发送 25 万个请求。让我们假设您的 Cloud Run 端点扩展并处理所有请求。仅就调用而言,您将支付 360 美元/小时(每百万个请求 0.40 美元)。
请注意,如果攻击未分布在多个 Cloud Run 终端节点上,您可能会遇到并发限制和最大实例限制。我还有哪些其他控件?
据我了解,Cloud Armor和Cloud CDN的常用防御绑定到Global Load Balancer,Cloud Run 不可用,但 Cloud Run on GKE 可用。