我想写一个类似BNF的正式语法来描述一些GNU/Linux工具的命令行用法.例如,我可以将cat命令的用法描述为:
(cat-command) : 'cat' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
Run Code Online (Sandbox Code Playgroud)
问题是我无法为某些命令写下精确的语法,例如md5sum.我的第一次尝试是:
(md5sum-command) : 'md5sum' (arguments-list)
(arguments-list) : (argument)
(arguments-list) : (arguments-list) (argument)
(argument) : (file)
(argument) : '--check'
Run Code Online (Sandbox Code Playgroud)
但正如您所看到的,这个语法允许您--check根据需要多次指定参数,这是不正确的,因为您最多应该使用它一次.
我该如何解决这个问题?另外,为了更好地处理这类问题,我应该研究什么样的正式语法?
我似乎无法找到一个很好的教程.这很简单:我想将样式表/ js文件链接到我的应用程序的HEAD部分.
我找到了index.html文件的位置(在tmp/build/static/my_project/en/current中),我可以对它进行更改,但我认为这是错误的方法.
我正在使用MongoDB v1.4和mongodb-csharp驱动程序,我尝试对具有10000个以上密钥的数据存储进行分组,因此我收到此错误:
assertion: group() can't handle more than 10000 unique keys
使用像这样的c#代码:
Document query = new Document().Append("group",
new Document()
.Append("key", new Document().Append("myfieldname", true).Append("length", true))
.Append("$reduce",
new CodeWScope(
"function(obj,prev) { prev.count++; }"))
.Append("initial", new Document().Append("count", 0))
.Append("ns", "myitems"));
Run Code Online (Sandbox Code Playgroud)
我读到我应该使用map/reduce,但我无法弄清楚如何.有人可以说明如何使用map/reduce吗?
或者还有其他方法可以解决这个限制吗?
谢谢.
编辑:我忘记了我的密钥集中有2列,添加了.
我已经开始使用try catch块了(有点晚了,我知道!),但是现在我不知道一旦我抓住它就该如何处理异常.我该怎么办?
Try
connection.Open()
Dim sqlCmd As New SqlCommand("do some SQL", connection)
Dim sqlDa As New SqlDataAdapter(sqlCmd)
sqlDa.Fill(dt)
Catch ex As SQLException
' Ahhhh, what to do now!!!?
Finally
connection.Close()
End Try
Run Code Online (Sandbox Code Playgroud) 我很惊讶这个问题没有得到深入讨论:
本文告诉我们如何使用windbg在内存中转储正在运行的.Net进程字符串.
我花了很多时间研究SecureString类,它使用非托管固定内存块,并保持数据加密.好东西.
当您使用其值并将其分配给SQLConnection.ConnectionString属性(属于System.String类型)时,会出现此问题.这是什么意思?好...
这完全否定了SecureString功能!
最重要的是,SQLConnection类是无法使用的,我甚至无法使用SecureString属性自行滚动; 耶和闭源.好极了.
新的DAL层正在进行中,但是对于新的主要版本以及对于这么多用户而言,每个用户升级之前至少需要2年,其他人可能会无限期地保留旧版本.
由于使用连接的频率,从SecureString编组将无济于事,因为不可变的旧副本会粘在内存中,直到GC出现.集成的Windows安全性不是一种选择,因为一些客户端不在域上工作,而其他客户端通过网络漫游和连接.
如何在内存中保护连接字符串,以便使用windbg无法查看?
Textarea验证,
如何限制a中的字符textarea不超过50个字符.
<textarea rows="5" cols="15"></textarea>
Run Code Online (Sandbox Code Playgroud)
谢谢.....
我想在java中实现类似javascript的方法,这可能吗?
说,我有一个Person类:
public class Person {
private String name ;
private int age ;
// constructor ,accessors are omitted
}
Run Code Online (Sandbox Code Playgroud)
以及包含Person对象的列表:
Person p1 = new Person("Jenny",20);
Person p2 = new Person("Kate",22);
List<Person> pList = Arrays.asList(new Person[] {p1,p2});
Run Code Online (Sandbox Code Playgroud)
我想实现这样的方法:
modList(pList,new Operation (Person p) {
incrementAge(Person p) { p.setAge(p.getAge() + 1)};
});
Run Code Online (Sandbox Code Playgroud)
modList接收两个参数,一个是列表,另一个是"函数对象",它循环列表,并将此函数应用于列表中的每个元素.在函数式编程语言中,这很容易,我不知道java是怎么做到的?也许可以通过动态代理完成,与原生for循环相比,它是否有性能折衷?
我遇到了一个具有不可变属性的类:
MyObject[] allObjs
Run Code Online (Sandbox Code Playgroud)
该属性初始化如下:
List<MyObject> objs = createAllMyObjects();
allObjs = objs.toArray(new MyObject[objs.size()]);
Run Code Online (Sandbox Code Playgroud)
当它通过访问器公开时,它作为List完成:
public List<MyObject> getAllMyObjects() {
return Collections.unmodifiableList(Arrays.asList(allObjs));
}
Run Code Online (Sandbox Code Playgroud)
为什么程序员会这样做?有什么好处我不知道吗?
性能不是问题,因为objs数组只会在几十个元素中出现.
我们似乎正在四处转圈.
这个类是一种工厂,因此它有一个私有构造函数并且只暴露静态方法(不确定这是否是疯狂的原因).
编辑
我想我的问题是,"为什么不使用内部List<MyObject> allObjs而不是MyObject[] allObjs,并返回Collections.unmodifiableList(allObjs)?" 因为这会完成同样的事情.
我刚开始研究MySQL数据库的优化问题.从我正在阅读的内容来看,索引似乎是一个好主意 - 所以我想在我的一个VARCHAR列上使用MyISAM引擎创建一个索引.
从我正在阅读的内容来看,我理解索引的大小限制为1,000字节.但是,VARCHAR字符大小为3个字节.这是否意味着如果我想索引一个VARCHAR包含50行的列,我需要一个6个字符的索引前缀?(每个字符1,000个字节/ 50行/ 3个字节= 6.66)
如果是这样,那似乎有点复杂 - 这就是为什么我质疑我的理解.看起来很奇怪,您只能VARCHAR使用1个字符的前缀索引列中的333行.
我错过了什么吗?
我有一个像这样的字符串:
"o1 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467 1232.5467"
我该如何提取"o1 1232.5467"?
要提取的字符数总是不一样.因此,我想只提取直到遇到第二个空格.