我正在尝试为交互式Java程序创建一个非常简单的命令行库.您启动Java程序,它会提示您输入命令.语法是:
> action [object_1, [object_2, [... object_n] ... ]]
Run Code Online (Sandbox Code Playgroud)
例如:
> addUser name "John Doe" age 42
Run Code Online (Sandbox Code Playgroud)
在这里action = "addUser", object_1 = "name", object_2 = "John Doe", object_3 = "age", object_4 = "42".
之后的一切行动是一个对象(即,一个动作使用对象).您可以看到操作和对象是简单的字符串.如有必要,还可以将对象字符串转换为数字.
我的计划是这个命令行库的用户只需创建方法(属于任何合适的Java对象)并将每个方法分配给特定的操作.命令行中的对象成为用户分配方法的参数.实现上述示例的方法的合适类将是:
class Foo {
public void addUserHandler(
String param1, String param2, String param3, Integer param4) {
do.someThing();
}
}
Run Code Online (Sandbox Code Playgroud)
当用户键入命令时,程序员分配的相应函数将使用命令行中指定的参数进行调用.
我知道Java没有函数指针(如C)或委托(如C#),实现回调的方法是通过接口,但是,我不知道如何在这种情况下使用接口.我在界面上看到的问题是他们有:
(1)的问题在于我的库的用户可能决定实现任意数量的功能,因为他想要支持许多动作.(2)的问题是用户希望为具有描述性名称的函数分配,例如addUserHandler()用于"addUSer"动作.
如果Java有代理或函数指针,我只需在字符串(表示操作)和委托(在程序中实际执行操作)之间创建一个Map.我想我可以使用Reflection来模拟委托,但它是血腥的,我失去了类型安全性,因为我必须为类和方法使用String名称.有没有更好的方法?
谢谢,
using Microsoft.Win32;
public class App
{
static void Main()
{
SystemEvents.SessionSwitch += SystemEvents_SessionSwitch;
Console.ReadLine();
SystemEvents.SessionSwitch -= SystemEvents_SessionSwitch;
}
static void SystemEvents_SessionSwitch(object sender, SessionSwitchEventArgs e)
{
if(e.Reason == SessionSwitchReason.SessionLock)
{
Console.WriteLine("locked at {0}", DateTime.Now);
}
if(e.Reason == SessionSwitchReason.SessionUnlock)
{
Console.WriteLine("unlocked at {0}", DateTime.Now);
}
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个Windows服务.当我重新启动系统并登录,注销,锁定或解锁会话时.它不会捕获事件.该服务正在运行,但无法正常运行.
当我重新启动服务时,它将按预期捕获所有事件.如何进行故障排除/修复?
错误:
Exception Value: bad character range
Exception Location: /usr/lib/python2.6/re.py in _compile, line 245
Python Executable: /usr/bin/python
Run Code Online (Sandbox Code Playgroud)
我完全不知道这意味着什么.任何人都可以冒险猜测或指向正确的方向吗?
之前一切正常.我只改变了一些微不足道的代码!:S
if "-" in stop:
dt1 = datetime.strptime(stop, "%Y-%m-%dT%H:%M:%S")
stopInS = time.mktime(dt1.timetuple())
stopInMS = int(startInS) * 1000
else:
splitter = re.compile(r'[\D]')
preStop = splitter.split(stop)
stopInMS = ''.join(preStop)
Run Code Online (Sandbox Code Playgroud)
我只是在'in'之前玩弄双引号...然后整个事情因这个错误而崩溃了.
编辑:
另一个正则表达式:
splitter1 = re.compile('[:]')
arrayOfIDs = splitter1.split(identifier)
idLens = len(arrayOfIDs)
Run Code Online (Sandbox Code Playgroud) 我在制表符分隔文件中有以下数据:
_ DATA _
Col1 Col2 Col3 Col4 Col5
blah1 blah2 blah3 4 someotherText
blahA blahZ blahJ 2 someotherText1
blahB blahT blahT 7 someotherText2
blahC blahQ blahL 10 someotherText3
Run Code Online (Sandbox Code Playgroud)
我想确保此文件第4列中的数据始终为整数.我知道如何在perl中执行此操作
但是我如何在使用标准linux/unix过滤器的shell脚本中执行此操作?我的猜测是使用grep,但我不确定如何?
我是WPF的新手,我有兴趣学习它.我已经阅读了一些教程,但我正在寻找一个包含项目/作业的网站或书籍以及解决方案,以便您可以编码和学习.在我完成一个项目的过程中,我希望能够在遇到困难的情况下参考解决方案.
有人可以分享任何链接/材料,如果你有,可以给我一些WPF项目/作业与解决方案一起工作.
谢谢.
我在C#项目中遇到了问题.我正在使用带有DataTable对象的Select方法.如果我在搜索字符串中加上' - ',我什么都不选.所以这是我所拥有的代码示例:
DataTable table;
DataRow[] rows = table.Select("[Radio Name] LIKE '*Lounge-MP3-96*'");
Run Code Online (Sandbox Code Playgroud)
但是有一个专栏:Radio Name = 1.FM - The Chillout Lounge-MP3-96
我要逃脱角色吗?怎么样?
我刚试过
DataTable table;
DataRow[] rows = table.Select("[Radio Name] LIKE '*Lounge*'");
Run Code Online (Sandbox Code Playgroud)
有用!所以它似乎真的与" - "有关......
我已经开始在ASP.NET MVC中开发一个网站,并参与了BizSpark计划.关注我的唯一部分是SQL Server Enterprise三年后的许可成本.
鉴于此成本,以及该产品可能无法"起飞"的潜在结果; 我应该在诸如Ruby on Rails或Java之类的"免费"平台上重写应用程序吗?
TextMate有一个功能,在任何点按Command-Return都会在当前行下方插入一个新行,将光标放在新行的开头.这在Vim的命令模式下按'o'就可以了(确切地说?).
有没有办法在Vim的插入模式下模拟这个TextMate功能?同样的问题表达方式不同:我可以在插入模式下进行Cmd-Return在命令模式下执行"o"操作吗?
我的UserProfile对象上有几个包含JSON对象的TextField列.我还为每个列定义了一个setter/getter属性,它封装了将JSON序列化和反序列化为python数据结构的逻辑.
此数据的性质可确保在单个请求中通过视图和模板逻辑多次访问它.为了节省反序列化成本,我想在读取时记住python数据结构,在直接写入属性时无效或从模型对象保存信号.
在哪里/如何存储备忘录?我对使用实例变量感到紧张,因为我不理解查询实例化任何特定UserProfile背后的魔力.是__init__使用安全,或是否需要通过检查备忘录属性的存在hasattr(),在每个读?
这是我当前实现的一个示例:
class UserProfile(Model):
text_json = models.TextField(default=text_defaults)
@property
def text(self):
if not hasattr(self, "text_memo"):
self.text_memo = None
self.text_memo = self.text_memo or simplejson.loads(self.text_json)
return self.text_memo
@text.setter
def text(self, value=None):
self.text_memo = None
self.text_json = simplejson.dumps(value)
Run Code Online (Sandbox Code Playgroud) 我需要使用jQuery将3个div包装成一个.
<div class="one"></div><div class="two"></div><div class="three"></div>
Run Code Online (Sandbox Code Playgroud)
进入这个
<div class="wrap"><div class="one"></div><div class="two"></div><div class="three"></div></div>
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
非常感谢您的帮助