我们说我的桌子是:
id text
+-----+----------+
123 | foo bar
321 | bar "baz"
Run Code Online (Sandbox Code Playgroud)
在倾销时有没有办法逃避'baz'周围的那些报价?
我的查询形式如下:
SELECT text FROM aTable WHERE ...
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
foo bar
bar \"baz\"
Run Code Online (Sandbox Code Playgroud)
而不是:
foo bar
bar baz
Run Code Online (Sandbox Code Playgroud) 陷入意外bash/ sh行为,我想知道有人可以解释其背后的基本原理,并为下面的问题提供解决方案.
在交互式bashshell会话中,我执行:
$ bash -c 'sleep 10 && echo'
随着psLinux上,它看起来是这样的:
\_ -bash
\_ bash -c sleep 10 && echo
\_ sleep 10
进程树是我所期望的:
$)bash -c ...)但是,如果我的命令部分bash -c是单个命令,例如:
$ bash -c 'sleep 10'
然后吞下中间的子shell,并且我的交互式终端会话在孩子处理时"直接"执行睡眠.进程树看起来像这样:
\_ -bash
\_ sleep 10
所以从流程树的角度来看,这两个产生了相同的结果:
$ bash -c 'sleep 10'$ sleep 10这里发生了什么?
现在我的问题是:有没有办法强制中间shell,不管传递给表达式的复杂性如何bash -c ...?
(我可以附加类似于; echo;我的实际命令和"工作"的东西,但我宁愿不这样做.是否有更合适的方法来强制中间过程存在?)
(编辑: …
在共享的 GitHub 存储库中,我想用它git log来显示最近提交的列表。
当前的历史类似于以下内容:
(master)
B------Merge1--Merge2--Merge3
/ / /
- -C1 / /
- - -C2 /
- - -C3----------C4
Run Code Online (Sandbox Code Playgroud)
凡Merge提交的合并拉请求的结果,并C提交由该仓库的叉到来。
git log 显示如下:
git log --oneline master
Merge3
Merge2
Merge1
B
Run Code Online (Sandbox Code Playgroud)
但我真正感兴趣的是C提交。
git log --graph是我发现显示 C1、C2 和 C3 的唯一可能方式。
是否还有其他选项(不涉及--graph)可以显示 C1、C2 和 C3?
我希望能够做这样的事情
git log --oneline --no-merges <...insert magic here...> master
C4
C3
C2
C1
B
Run Code Online (Sandbox Code Playgroud)
我在手册页中发现的唯一明智的事情是--first-parent,但我发现无法禁用或反转它。
我有一个应用程序,具有一些属性形式的外部化配置。我希望应用程序能够对此类属性的更改做出反应,而无需重新启动或完全刷新上下文。
我不清楚我的选择是什么。
人工示例:应用程序实现一个服务,该服务接收请求并决定是排队还是拒绝它们。队列的最大大小是一个属性。
final int queueMaxSize = queueProperties.getMaxSize();
if (queue.size() >= queueMaxSize) { //reject }
Run Code Online (Sandbox Code Playgroud)
哪里QueueProperties有一个带有@ConfigurationProperties注释的类。
@ConfigurationProperties(prefix = "myapp.limits.queue")
@Getter
@Setter
public class QueueProperties {
public int maxSize = 10;
}
Run Code Online (Sandbox Code Playgroud)
这允许我通过系统属性、配置文件等控制行为。 但是,我希望能够在不释放/部署/重新启动/刷新应用程序的情况下更改此值。
我的应用程序已经使用Archaius。如果我使用我们的内部基础设施为此属性推送一个新值,我可以看到应用程序 Spring 环境确实收到了新值。(例如,/admin/env反映价值并动态变化)。
我不清楚的部分是:如何让我的服务对环境中价值的变化做出反应?
我找到了两种方法,但它们看起来很毛茸茸,我想知道是否有更好的选择。我预计这将成为 Spring 生态系统中一流解决方案的常见问题。
黑客解决方案#1:
@Bean
@Scope("prototype")
@ConfigurationProperties(prefix = "myapp.limits.queue")
QueueProperties queueProperties() {
return new QueueProperties();
}
Run Code Online (Sandbox Code Playgroud)
并使用属性 as 将其注入服务Provider<QueueProperties>并将其用作queuePropertiesProvider.get().getMaxSize()。
这有效,但有一些我不喜欢的副作用:
ConfigurationProperties注释从类移至 bean 定义QueueProperties对象并将其绑定到值get()黑客解决方案#2:
不要用 …
我无法弄清楚为什么在String上调用两次getBytes()会返回两个不相等的字节数组():
final String aString = "hello world";
System.out.println(aString.getBytes());
System.out.println(aString.getBytes());
System.out.println(aString.getBytes());
Run Code Online (Sandbox Code Playgroud)
打印:
[B@59887d29
[B@fd13cab
[B@71e606a9
Run Code Online (Sandbox Code Playgroud)
例如,以下断言总是失败:
Assert.assertEquals(aString.getBytes(), aString.getBytes());
Run Code Online (Sandbox Code Playgroud)
从文档中,我没想到任何不确定性!我错过了什么?
转换回String时,结果是预期的结果,所以我最好的猜测是一些未初始化的填充位?
即以下断言总是通过:
Assert.assertEquals(new String(aString.getBytes()), new String(aString.getBytes()));
Run Code Online (Sandbox Code Playgroud)