我正在构建一个简单的"总线"作为概念证明.我不需要任何复杂的东西,但我想知道如何最好地优化下面的代码.我使用Autofac作为容器将命令解析为开放泛型,但实际执行命令当前是通过反射完成的,因为传入的命令无法转换为代码中的具体类型.查看代码 - 用// BEGIN // END标记 - 目前正在使用反射完成.有没有办法在不使用反射的情况下做到这一点?
// IoC wrapper
static class IoC {
public static object Resolve(Type t) {
// container gubbins - not relevant to rest of code.
}
}
// Handler interface
interface IHandles<T> {
void Handle(T command);
}
// Command interface
interface ICommand {
}
// Bus interface
interface IBus {
void Publish(ICommand cmd);
}
// Handler implementation
class ConcreteHandlerImpl : IHandles<HelloCommand> {
public void Handle(HelloCommand cmd) {
Console.WriteLine("Hello Command executed");
}
}
// Bus …Run Code Online (Sandbox Code Playgroud) 大家好,我是grails的新手.我通过命令对象将字段值从gsp传递给控制器.在我的gsp页面上有一个叫做手机号码的字段.但是当我要通过命令对象访问它时,它会给我一个错误,因为它不会将类似98xxxxxxxx的值从字符串转换为整数.在我的命令对象中,我已经提到它为整数
Integer mobile;
Run Code Online (Sandbox Code Playgroud)
我在gsp上的代码是:
<label for="mobile">Mobile</label>
<input type="text" value="${cmd?.mobile}" title="" name="mobile" id="mobile" size="30" maxlength="10"/>
Run Code Online (Sandbox Code Playgroud)
其中cmd是我的命令对象.
和控制器中的代码:
def addInstitute={InstituteCommand cmd->
Address address=new Address();
address.mobile=cmd.mobile;
}
Run Code Online (Sandbox Code Playgroud)
它给了我typeMismatch错误.当我输入像1111111111这样的值时,它会保存它,但是当我输入实际的移动号码时.它给了我typeMismatch错误.这个场景怎么办?
我有一个名为main.rb的程序,我想执行以下操作:
system("ruby", "program1.rb")
sleep 60
system("ruby", "program2.rb")
sleep 60
system("ruby", "program3.rb")
sleep 60
system("ruby", "program4.rb")
puts "Programs are done running"
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有program2等到program1完成之后执行上述操作等等?我想它可能要为每个程序打开一个新的CLI?此外,我只想在完成所有4个时输出"程序已完成运行"消息.有没有办法做到这一点?谢谢!
在尝试删除所有分区时,我正在尝试开发批处理文件以运行并删除Windows 7中的隐藏分区.通常我会在命令提示符窗口中逐行执行此操作,但是试图找出如何创建要运行的批处理文件并加快此过程.
以下是我在命令提示符中键入的行.
disk part
Rescan
List Disk
Select Disk 3
List Partition
Select Partition 3
Delete Partition Override
Run Code Online (Sandbox Code Playgroud)
我创建了一个BAT文件,但只能获得第一个命令.
我在CMD中寻找单个命令,这将允许我重命名文件并将文件从一个目录移动到另一个目录.这是我的任务:使用新扩展名.doc重命名TEST文件夹中的所有.txt文件,然后将它们移动到TEST2文件夹.提前致谢.
这是命令源代码中我不理解的最后一部分if.
资料来源:http://v6shell.org/history/if.c,包含语法 - 突出显示:http://pastebin.com/bj0Hvfrw
if(eq(a, "{")) { /* execute a command for exit code */
if(fork()) /*parent*/ wait(&ccode);
else { /*child*/
doex(1);
goto err;
}
while((a=nxtarg()) && (!eq(a,"}")));
return(ccode? 0 : 1);
}
Run Code Online (Sandbox Code Playgroud)
如man-page(http://man.cat-v.org/unix-6th/1/if)中所述,如果我们将命令放在括号" if expr {command} "中,我们可以获得他的退出代码.
那么我们分叉当前进程,然后等待我们的子进程完成?但是我们的孩子继续他的工作在哪里?在fork之后,我们将进入while循环并且只是跳过一些参数然后用ccode返回?ccode在哪里改变了?什么是ccode?
你能解释一下给定的代码片段吗?并详细说明ccode?
我正在使用Ansible部署脚本将solr节点连接到正在运行的zookeeper集成。将solr配置链接到zookeeper的命令如下所示:
solr/scripts/cloud-scripts/zkcli.sh -zkhost 33.33.33.30:2181,33.33.33.31:2181,33.33.33.32:2181 -cmd upconfig -confdir solr/solr/collection1/conf -confname solr_config
Run Code Online (Sandbox Code Playgroud)
我想使命令尽可能动态-因此我想从清单文件中拉出Zookeeper主机。我知道总是3时就可以执行此操作,但是我希望命令根据列表中的数量进行调整。我已经尝试使用Ansibles with命令-但我无法使它正常工作,因为在最后一个主机之后我不需要逗号。
这是我的清单文件:
[zookeeper]
33.33.33.30
33.33.33.31
33.33.33.32
[solr]
33.33.33.33
33.33.33.34
33.33.33.35
Run Code Online (Sandbox Code Playgroud)
这是我没有循环的Ansible任务:
- name: SOLR | Upload Configs To Zookeeper
command: "{{ solr.home }}/scripts/cloud-scripts/zkcli.sh -zkhost {{groups.zookeeper[0] }}:{{ zookeeper.port }}, {{ groups.zookeeper[1] }}:{{ zookeeper.port }}, {{ groups.zookeeper[2] }}:{{ zookeeper.port }} -cmd upconfig -confdir {{ solr.home }}/solr/{{ solr.collection_name }}/conf -confname {{ solr.config_name }}"
when: inventory_hostname == groups.solr[0]
Run Code Online (Sandbox Code Playgroud)
以及如何使这种动态变化与清单中的Zookeeper主机数量有关?
sed的新手,所以请耐心等待...
我有一个php文件,其中包含以下行:
define('TARGET_A','044');
Run Code Online (Sandbox Code Playgroud)
我想找到那条线并使用sed将其替换为以下内容:
define('TARGET_K','076');
Run Code Online (Sandbox Code Playgroud)
我试过了:
$ sed -i 's/define\(\'TARGET_A\',\'044\'\)\;/define\(\'TARGET_K\',\'076\'\)\;/' myfile.php
Run Code Online (Sandbox Code Playgroud)
我尝试了几种变体,试图逃避parens并删除分号,似乎没有任何作用
任何帮助都非常感谢,谢谢
在Bash中,我想要一个if语句,它基于运行命令的退出代码.例如:
#!/bin/bash
if [ ./success.sh ]; then
echo "First: success!"
else
echo "First: failure!"
fi
if [ ./failure.sh ]; then
echo "Second: success!"
else
echo "Second: failure!"
fi
Run Code Online (Sandbox Code Playgroud)
success.sh
#!/bin/bash
exit 0
Run Code Online (Sandbox Code Playgroud)
failure.sh
#!/bin/bash
exit 1
Run Code Online (Sandbox Code Playgroud)
这应打印出来:
First: success!
Second: failure!
Run Code Online (Sandbox Code Playgroud)
我怎么做到这一点?谢谢!