我有一个巨大的git repo,最终想用bfg清理.
但首先,我想跟踪并删除HEAD哪个git视为二进制文件...
所以,我正在寻找的是一个命令来查找HEAD中git视为二进制文件的所有文件.
这些没有帮助:
预先感谢您的帮助.
我有一个bash运行无尽的命令作为后台进程:
#!/bin/bash
function xyz() {
# some awk command
}
endlesscommand "param 1" | xyz & # async
pids=$!
endlesscommand "param 2" | xyz & # async
pids="$pids "$!
endlesscommand "param 3" | xyz # sync so the script doesn't leave
Run Code Online (Sandbox Code Playgroud)
停止此脚本的唯一方法是(必须)Ctrl-C或kill,当发生这种情况时,我需要杀死$ pids变量中列出的所有后台进程.
我怎么做?
如果有可能捕获主进程上的kill信号并在发生这种情况时执行一个函数(shutdown hook),我会做类似的事情:
for $pid in $pids; do kill $pid; done;
Run Code Online (Sandbox Code Playgroud)
但是我找不到怎么做......
我想在我的班级中使用 javassist 添加一个 SLF4J 记录器。所以首先,我尝试获取它的 CtClass ,例如我可以在以下之后构建该字段:
CtClass loggerClass = pool.get(org.slf4j.Logger.class.getName());
Run Code Online (Sandbox Code Playgroud)
但是我从来没有通过那条线并且总是得到一个 javassist.NotFoundException。
我尝试了不同的事情:
pool.importPackage("org.slf4j.Logger");
// or
pool.importPackage("org.slf4j");
Run Code Online (Sandbox Code Playgroud)
我什至尝试将 org.slf4j.Logger 传递给 URLClassLoader:
// add org.slf4j.Logger to the list of urls...
// then:
URLClassLoader loader = new URLClassLoader(urls);
ClassPool.getDefault().insertClassPath(new LoaderClassPath(loader));
Run Code Online (Sandbox Code Playgroud)
但没有任何作用。
注意:这是在调用 insertClassPath 之后创建池的方式:
final ClassPool pool = new ClassPool(ClassPool.getDefault());
pool.childFirstLookup = true;
Run Code Online (Sandbox Code Playgroud)
我完全被困在这里。任何帮助将非常感激。
我试图想出一个简单的HTTP客户端的java实现,它保持套接字打开并重用它来查询同一主机上的其他(或相同)URL.
我有一个使用java.net.Socket的简单实现,但不知何故,当我保持套接字打开时的性能比我不断创建一个新的更糟糕.
结果首先,完整的可执行代码如下:
使用KeepAlive:从迭代#2开始变慢
> java -server -Xms100M -Xmx100M -cp . KeepAlive 10 true
--- Warm up ---
18
61
60
60
78
62
59
60
59
60
Total exec time: 626
--- Run ---
26
59
60
61
60
59
60
60
62
58
Total exec time: 576
Run Code Online (Sandbox Code Playgroud)
每次重新创建套接字会产生更好的结果:
> java -server -Xms100M -Xmx100M -cp . KeepAlive 10 false
--- Warm up ---
188
34
39
33
33
33
33
33
34
33
Total exec time: 494
--- Run …Run Code Online (Sandbox Code Playgroud)