岁月本长而忙者自促;  
天地本宽而卑者自隘;  
风花雪月本闲,而劳忧者自冗;  
天行健,君子以自强不息;  
地势坤,君子以厚德载物;  
宠辱不惊,闲看庭前花开花落;  
去留无意,漫随天外云卷云舒。  
不妄取,不妄予,不妄想,不妄求, 
与人方便,随遇而安。
  • 1
  • 2
  • 3
显示模式: 摘要 | 列表
正则特殊符号表
2008/04/22 22:48

正则表达式是一个模式、一种模板,用来匹配字符串。匹配到的字符串依赖于正则表达式的描述精度。
  当把一个正则表达式用两斜线或引号括起来的时候,变量 $_ 就会去匹配它。如果匹配,返回true,否则返回false。
  普通字符由所有那些未显式指定为元字符的打印和非打印字符组成,这包括所有的大写和小写字母字符,所有数字,所有标点符号以及一些符号。
  对 JScript 而言,分隔符为一对正斜杠 (/) 字符。对 VBScript 而言,则采用一对引号 ("") 来确定正则表达式的边界。

[二00六年十月十六日夜22:29整理]

元字符 描    述
\  将下一个字符标记为一个特殊字符、或一个原义字符、或一个向后引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。
^  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n}  n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m}  m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
?  当该字符紧跟在任何一个其他限制符 (*, +, ?, {n}, {n,}, {n,m}) 后面时,匹配模式是非贪婪的。非贪婪模式尽可能少的匹配所搜索的字符串,而默认的贪婪模式则尽可能多的匹配所搜索的字符串。例如,对于字符串 "oooo",'o+?' 将匹配单个 "o",而 'o+' 将匹配所有 'o'。
.  匹配除 "\n" 之外的任何单个字符。要匹配包括 '\n' 在内的任何字符,请使用象 '[.\n]' 的模式。
(pattern)  匹配 pattern 并获取这一匹配。所获取的匹配可以从产生的 Matches 集合得到,在VBScript 中使用 SubMatches 集合,在JScript 中则使用 $0…$9 属性。要匹配圆括号字符,请使用 '\(' 或 '\)'。
(?:pattern)  匹配 pattern 但不获取匹配结果,也就是说这是一个非获取匹配,不进行存储供以后使用。这在使用 "或" 字符 (|) 来组合一个模式的各个部分是很有用。例如, 'industr(?:y|ies) 就是一个比 'industry|industries' 更简略的表达式。
(?=pattern)  正向预查,在任何匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如,'Windows (?=95|98|NT|2000)' 能匹配 "Windows 2000" 中的 "Windows" ,但不能匹配 "Windows 3.1" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
(?!pattern)  负向预查,在任何不匹配 pattern 的字符串开始处匹配查找字符串。这是一个非获取匹配,也就是说,该匹配不需要获取供以后使用。例如'Windows (?!95|98|NT|2000)' 能匹配 "Windows 3.1" 中的 "Windows",但不能匹配 "Windows 2000" 中的 "Windows"。预查不消耗字符,也就是说,在一个匹配发生后,在最后一次匹配之后立即开始下一次匹配的搜索,而不是从包含预查的字符之后开始。
x|y  匹配 x 或 y。例如,'z|food' 能匹配 "z" 或 "food"。'(z|f)ood' 则匹配 "zood" 或 "food"。
[xyz] 字符集合。匹配所包含的任意一个字符。例如, '[abc]' 可以匹配 "plain" 中的 'a'。
[^xyz] 负值字符集合。匹配未包含的任意字符。例如, '[^abc]' 可以匹配 "plain" 中的'p'。
[a-z]  字符范围。匹配指定范围内的任意字符。例如,'[a-z]' 可以匹配 'a' 到 'z' 范围内的任意小写字母字符。
[^a-z]  负值字符范围。匹配任何不在指定范围内的任意字符。例如,'[^a-z]' 可以匹配任何不在 'a' 到 'z' 范围内的任意字符。
\b  匹配一个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。
\B 匹配非单词边界。'er\B' 能匹配 "verb" 中的 'er',但不能匹配 "never" 中的 'er'。
\cx  匹配由 x 指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\d 匹配一个数字字符。等价于 [0-9]。
\D 匹配一个非数字字符。等价于 [^0-9]。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
\w 匹配包括下划线的任何单词字符。等价于'[A-Za-z0-9_]'。
\W 匹配任何非单词字符。等价于 '[^A-Za-z0-9_]'。
\xn  匹配 n,其中 n 为十六进制转义值。十六进制转义值必须为确定的两个数字长。例如,'\x41' 匹配 "A"。'\x041' 则等价于 '\x04' & "1"。正则表达式中可以使用 ASCII 编码。.
\num  匹配 num,其中 num 是一个正整数。对所获取的匹配的引用。例如,'(.)\1' 匹配两个连续的相同字符。
\n  标识一个八进制转义值或一个向后引用。如果 \n 之前至少 n 个获取的子表达式,则 n 为向后引用。否则,如果 n 为八进制数字 (0-7),则 n 为一个八进制转义值。
\nm  标识一个八进制转义值或一个向后引用。如果 \nm 之前至少有 nm 个获得子表达式,则 nm 为向后引用。如果 \nm 之前至少有 n 个获取,则 n 为一个后跟文字 m 的向后引用。如果前面的条件都不满足,若 n 和 m 均为八进制数字 (0-7),则 \nm 将匹配八进制转义值 nm。
\nml  如果 n 为八进制数字 (0-3),且 m 和 l 均为八进制数字 (0-7),则匹配八进制转义值 nml。
\un  匹配 n,其中 n 是一个用四个十六进制数字表示的 Unicode 字符。例如, \u00A9 匹配版权符号 (©)。
操作符 描    述
  \ 转义符
  (), (?:), (?=), [] 圆括号和方括号
  *, +, ?, {n}, {n,}, {n,m} 限定符
  ^, $, \anymetacharacter 位置和顺序
  | “或”操作
特殊字符 描    述
$  匹配输入字符串的结尾位置。如果设置了 RegExp 对象的 Multiline 属性,则 $ 也匹配 '\n' 或 '\r'。要匹配 $ 字符本身,请使用 \$。
( )  标记一个子表达式的开始和结束位置。子表达式可以获取供以后使用。要匹配这些字符,请使用 \( 和 \)。
* 匹配前面的子表达式零次或多次。要匹配 * 字符,请使用 \*。
+ 匹配前面的子表达式一次或多次。要匹配 + 字符,请使用 \+。
. 匹配除换行符 \n之外的任何单字符。要匹配 .,请使用 \。
[ 标记一个中括号表达式的开始。要匹配 [,请使用 \[。
? 匹配前面的子表达式零次或一次,或指明一个非贪婪限定符。要匹配 ? 字符,请使用 \?。
\  将下一个字符标记为或特殊字符、或原义字符、或向后引用、或八进制转义符。例如, 'n' 匹配字符 'n'。'\n' 匹配换行符。序列 '\\' 匹配 "\",而 '\(' 则匹配 "("。
^  匹配输入字符串的开始位置,除非在方括号表达式中使用,此时它表示不接受该字符集合。要匹配 ^ 字符本身,请使用 \^。
{ 标记限定符表达式的开始。要匹配 {,请使用 \{。
| 指明两项之间的一个选择。要匹配 |,请使用 \|。
非打印符 描    述
\cx  匹配由x指明的控制字符。例如, \cM 匹配一个 Control-M 或回车符。x 的值必须为 A-Z 或 a-z 之一。否则,将 c 视为一个原义的 'c' 字符。
\f 匹配一个换页符。等价于 \x0c 和 \cL。
\n 匹配一个换行符。等价于 \x0a 和 \cJ。
\r 匹配一个回车符。等价于 \x0d 和 \cM。
\s 匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。
\S 匹配任何非空白字符。等价于 [^ \f\n\r\t\v]。
\t 匹配一个制表符。等价于 \x09 和 \cI。
\v 匹配一个垂直制表符。等价于 \x0b 和 \cK。
限定符 描    述
* 匹配前面的子表达式零次或多次。例如,zo* 能匹配 "z" 以及 "zoo"。* 等价于{0,}。
+  匹配前面的子表达式一次或多次。例如,'zo+' 能匹配 "zo" 以及 "zoo",但不能匹配 "z"。+ 等价于 {1,}。
?  匹配前面的子表达式零次或一次。例如,"do(es)?" 可以匹配 "do" 或 "does" 中的"do" 。? 等价于 {0,1}。
{n}  n 是一个非负整数。匹配确定的 n 次。例如,'o{2}' 不能匹配 "Bob" 中的 'o',但是能匹配 "food" 中的两个 o。
{n,}  n 是一个非负整数。至少匹配n 次。例如,'o{2,}' 不能匹配 "Bob" 中的 'o',但能匹配 "foooood" 中的所有 o。'o{1,}' 等价于 'o+'。'o{0,}' 则等价于 'o*'。
{n,m}  m 和 n 均为非负整数,其中n <= m。最少匹配 n 次且最多匹配 m 次。例如,"o{1,3}" 将匹配 "fooooood" 中的前三个 o。'o{0,1}' 等价于 'o?'。请注意在逗号和两个数之间不能有空格。
定位符 描    述
^  匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。
$  匹配输入字符串的结束位置。如果设置了RegExp 对象的 Multiline 属性,$ 也匹配 '\n' 或 '\r' 之前的位置。
\b 匹配一个单词边界,也就是指单词和空格间的位置。
\B 匹配非单词边界。

Tags:
多样性选择的时代,长尾有感
2007/12/05 22:29

最近中午一直在新华书店看《长尾理论》,书已看过大半,感触颇多。结合生活中的小事谈及几点感受:

前几天陪女友在八一公园散步,女友包包“送”小偷叔叔了。损失了2部手机,现金和银行卡。女友因丢失手机,全部好友联系方式都丢了,而我心爱的dopod 838也给没了,才买一个月的新机。丢了包包首先第一件事就是买手机!

我第一时间淘宝,找到当初卖手机的人,没想到又有大批手机到货,而且成色更新。交钱,发货,第2天就拿到手机。由于是windows mobile 手机,连上电脑和outlook 同步联系人,丢失的联系人瞬间回到我的手机里。而且这次的机器刷新到windows mobile 6.0操作系统。我的手机算是搞定了!因为我用习惯了PPC,让我用别的非智能手机更本不习惯,所以买手机很快。

而买女友的手机很是郁闷,她要求:听mp3, 看mp4, 130万以上摄像头。由于以前的索爱不支持插卡,于是决定找一个如下功能的手机: 听mp3, 看mp4, 130万以上摄像头,支持外接存储卡。

开始搜索淘宝,找到西门子65,价位比较诱人,才300多。听歌,支持mp4,3gp,外接mmc卡,而且java扩展性很好。本来想买这款的。可是百度一下用户评论发现:此机器不能硬件支持mp3播放,只支持wav,而且没办法放mp3! my god 竟然有这样的事,只好打消此念头,还好我看了评论,要不然我怎么也不会想到一款支持mp4的手机竟然不支持mp3!

再搜索 夏新E3 , 西门子S75 ,这2款都支持mp3, mp4,摄像头,插卡功能。但是,s75 不支持mp3后台播放,可见西门子对播放mp3始终不竟人意。夏新E3屏幕好像太小,虽然是手写,但价格要近700。虽然有款585的,可是店主信誉不行,于是又打消了念头。无聊逛以前卖过手机淘友的小店,发现一款比E3整体性能都高的国产手机N3,竟然只要400加运费加卡也只要450不到的价格,很是心动,于是百度一下评论,发现评论很少,唯一有的就是电池不怎么好用,而且信号有时候不稳定,经和卖方询问,此款手机质保1年,5天包换。而且卖家是4钻的诚信卖家,可以说打消了质量顾虑,经过2天的对比,终于相信一次国产宝峰机型。晚上买,第2天下午就从深圳送到,前后不到24小时,效率很高!

上面是我最近一星期买手机的经历。其实我们现在正在经历一个变革!想想以前,买手机要怎么买? 去商店,然后询问店员,我要什么什么功能的,价位多少的。其实就上面那款机型在南昌卖最少要卖个800-900, 因为功能全啊。当然不一定是那个品牌,因为南昌的品牌不怎么多,原因就是货架问题,商店有限的货架得留个热门产品,而不是这种国产手机,也许这种手机更本不会摆在货架上。但是对比,在我住的小镇莲塘,当地的巨龙手机却打出这样的广告:水货假1陪10。初看很是诱人,此店不卖水货。可是它却会卖大量的CECT,宝峰这样的国产甚至贴牌。如果说淘宝上一个手机的利润是100左右,那么他的利润就是 1倍,也就是进价400,至少卖800,要不然很难维持高昂的货柜租金。像我这样的人就很少去商店买手机,我更喜欢在淘宝购物,因为淘宝的价格透明,还有就是货源充足!

看了长尾理论,我可以分析下我去淘宝的理由:

1. 商品货源充足!在商店摆出的不过上百种,相信有上百种的商店也是大商店了。但是在淘宝,我敢说至少有上万种!这可是数量级的差别啊!在商店只有行货,就算有水货也当行货卖。而在淘宝有行货,水货,2手等。尤其是我喜欢的智能手机,在我这样的小镇更本就是看不到的。

2,过滤器先进,只要列出功能一搜索,马上就可以得到我想要的商品,点下价格排序,最低价格的马上排最前。而通常我会选择最低价的,因为最低价的卖家往往信誉度高。原因很简单,进货量大,拿的价格就低,价格低买的人就多,评论最充分,质量越有保障!想想商店吧,价格低的是小店,而网上,店越大价格越低。

3,先用再付款!也许在商店你满意要退,他会有很多理由拒绝,为什么买的时候不选好啊,出了柜台盖不退货的现象时有发生。而用支付宝,我通常用了1星期再点确认。所以对于商品的品质,我有更多的选择余地。

从明确我上面说的几点,其实这就是长尾的更本!

1.首先要有充足的货源,这就是丰饶经济的范畴了。其实世界不缺货源,这个世界已经到了供大于求的时代了。只是因为信息匮乏造成了我们只能跟着主流转的尴尬境地。而互联网让这一切得到改变,一个无比丰富的供给链正在形成!

2. 交易的便捷性。看看我上面提到的,24小时之类,从付款到拿到货,从深圳到南昌。也许相隔千里,但是对于我和卖家都是透明的。点击鼠标见完成了一笔交易,坐在办公室里拿到货,才24小时。所以交易的便捷(快递业繁荣带来的好处)为需求向长尾移动提供了可靠保证。这归纳起来就是:供给方与需求方交流更加方便了!

3. 优秀的过滤器。既然是长尾,里面一定存在大量的“垃圾”!也许这个东西对我来说是“垃圾”,但是对于某些人来说却有用。如何区分?那就是过滤器!搜索引擎本身就是一个巨大的过滤器。百度给我过滤出了对产品的评价,而淘宝的搜索系统过滤出了我想要的手机型号。

通过长尾理论,我们可以发现,互联网正在加快改变我们的生活,也许在5年前,这一切都不是真的,可是现在一切实现竟如此简单。

最近我在公交车上,通过838,一边听着心爱的音乐,一边通过移动版QQ和好友聊天,还一边用UCWeb看着自己喜欢的信息,下载着手机软件和手机游戏。如果网速好,还可以在线在3G门户看电影。这一切听起来多么神奇啊!想想我刚买电脑的时候,我弟弟的电脑是PII 300 32M内存,3.2G硬盘,14寸显示器,56K猫拨号上网,16位真色彩(65536色)。现在看看我的dopod 838爱机的配置:OMAP 850 195MHZcpu, 2G miniSD卡,128M闪存,除去操作系统支持外,有27M归程序使用(相当于剩余内存),48M用于存储文件,320×240 16位真色彩,gprs上网,下载速度最高可达10-15K/s。对比下,看到什么? 性能竟如此的接近!那时候是1999年,现在是2007年,相差8年。可见现在的wap网络和当时的互联网多么接近啊,一样的上网速度,一样的硬件性能。

再过几年发展会怎么样呢? 3G开通之后,相当于现在宽带一半的手机上网速度,更快的cpu,更高的存储卡。现在就有4G的SD卡了。马上就是8G,16G,会有一天到32G吗?谁知道呢。其实到了4G就相当于硬盘了。

信息的高速发展,将我们的需求与供给无限缩短了。也许我们已经快走过了信息时代了,因为信息好像已经不再那么匮乏!现在我们面临的将是如何更好的选择我们需要的信息。任何一台高端的 PC机,都可以充当起信息服务器的角色。2块320G高速硬盘!近半T的容量,将意味着什么?

google ,百度的流行,豆瓣的流行,口碑网的兴起,都向我们预示着一个道理:一个长尾的需求,一个信息海洋过滤的需求,谁能帮助人们更快更准的找到所需的内容,谁将最终赢得客户!

Tags: 长尾,多样性
用net命令和dacl命令设置目录权限
2007/12/04 17:09

找了好多资料关于设置目录权限的,可是都不太理想,最后决定用命令了。粘2个命令,代码明天粘出来。

net命令

许多 Windows NT 网络命令以 net 开始。这些 net 命令有一些公共属性:
  通过键入 net /? 可查阅所有可用的 net 命令。
  通过键入 net help 命令可在命令行中获得 net 命令的语法帮助。例如,要得到 net acco
  unts 命令的帮助,请键入 net help accounts。
  所有 net 命令接受选项 / yes 和 /no(可缩写为 / y 和 /n )。/ y 对命令产生的任何交
  互提示自动回答“是”,/n 回答“否”。例如,net stop server 通常提示确认是否根据服
  务器服务结束所有服务,net stop server /y 自动回答“是”并关闭服务器服务。
  
  Net Accounts
  
  更新用户帐号数据库、更改密码及所有帐号的登录要求。必须要在更改帐号参数的计算机上
  运行网络登录服务。
  net accounts [/forcelogoff:{minutes | no}] [/minpwlen:length] [/maxpwage:{days |
  unlimited}] [/minpwage:days] [/uniquepw:number] [/domain]
  net accounts [/sync] [/domain]
  参数
  无
  键入不带参数的 net accounts,将显示当前密码设置、登录时限及域信息。
  /forcelogoff:{minutes | no}
  设置当用户帐号或有效登录时间过期时,结束用户和服务器会话前的等待时间。no 选项禁止
  强行注销。该参数的默认设置为 no。
  指定 /forcelogoff:minutes 之后,Windows NT 在其强制用户退出网络 minutes 分钟之前
  ,将给用户发出警报。如果还有打开的文件,Windows NT 将警告用户。如果 minutes 小于
  两分钟,Windows NT 警告用户立即从网络注销。
  /minpwlen:length
  设置用户帐号密码的最少字符数。允许范围是 0-14,默认值为 6。
  /maxpwage:{days | unlimited}
  设置用户帐号密码有效的最大天数。unlimited 不设置最大天数。/maxpwage 选项的天数必
  须大于 /minpwage。允许范围是 1-49,710 天 (unlimited)。默认值为 90 天。
  /minpwage:days
  设置用户必须保持原密码的最小天数。 0 值不设置最小时间。允许范围是 0-49,710 天,默
  认值为 0 天。
  /uniquepw:number
  要求用户更改密码时,必须在经过 number 次后,才能重复使用与之相同的密码。允许范围
  是 0-8。默认值为 5。
  /domain
  在当前域的主域控制器上执行该操作。否则只在本地计算机执行操作。
  该参数仅用于 Windows NT Server 域中的 Windows NT Workstation 计算机,Windows NT
  Server 计算机默认为在主域控制器执行操作。
  /sync
  当用于主域控制器时,该命令使域中所有备份域控制器同步;当用于备份域控制器时,该命
  令仅使该备份域控制器与主域控制器同步。该命令仅适用于 Windows NT Server 域成员的计
  算机。
  
  Net Computer
  
  从域数据库中添加或删除计算机。该命令仅在运行 Windows NT Server 的计算机上可用。
  net computer \computername {/add | /del}
  参数
  \computername
  指定要添加到域或从域中删除的计算机。
  /add
  将指定计算机添加到域。
  /del
  将指定计算机从域中删除。
  
  Net Config
  
  显示当前运行的可配置服务,或显示并更改某项服务的设置。
  net config [service [options]]
  参数
  无
  键入不带参数的 net config 将显示可配置服务的列表。
  service
  通过 net config 命令进行配置的服务(server 或 workstation)。
  options
  服务的特定选项。完整语法请参阅 net config server 或 net config workstation。
  
  Net Config Server
  
  运行服务时显示或更改服务器的服务设置。
  net config server [/autodisconnect:time] [/srvcomment:"text "] [/hidden:{yes | n
  o}]
  参数
  无
  键入不带参数的 net config server,将显示服务器服务的当前配置。
  /autodisconnect:time
  设置断开前用户会话闲置的最大时间值。可以指定 -1,表示永不断开连接。允许范围是 -1
  -65535 分钟,默认值是 15 分钟。
  /srvcomment:"text "
  为服务器添加注释,可以通过 net view 命令在屏幕上显示所加注释。注释最多可达 48 个
  字符,文字要用引号引住。
  /hidden:{yes | no}
  指定服务器的计算机名是否出现在服务器列表中。请注意隐含某个服务器并不改变该服务器
  的权限。默认为 no。
  
  Net Config Workstation
  
  服务运行时,显示或更改工作站各项服务的设置。
  net config workstation [/charcount:bytes] [/chartime:msec] [/charwait:sec]
  参数
  无
  键入不带参数的 net config workstation 将显示本地计算机的当前配置。
  /charcount:bytes
  指定 Windows NT 在将数据发送到通讯设备之前收集的数据量。如果同时设置 /chartime:m
  sec 参数,Windows NT 按首先满足条件的选项运行。允许范围是 0-65535 字节,默认值是
  16 字节。
  /chartime:msec
  指定 Windows NT 在将数据发送到通讯设备之前收集数据的时间。如果同时设置 /charcoun
  t:bytes 参数,Windows NT 按首先满足条件的选项运行。允许范围是 0-65535000 毫秒,默
  认值是 250 毫秒。
  /charwait:sec
  设置 Windows NT 等待通讯设备变为可用的时间。允许的范围是 0-65535 秒,默认值是 36
  00 秒。
  
  Net Continue
  
  重新激活挂起的服务。
  net continue service
  参数
  service
  能够继续运行的服务,包括: file server for macintosh(该服务仅限于 Windows NT Se
  rver), ftp publishing service, lpdsvc, net logon, network dde,network dde dsdm
  ,nt lm security support provider,remoteboot(该服务仅限于 Windows NT Server),
  remote access server, schedule,server,simple tcp/ip services 及 workstation 。
  
  
  Net File
  
  显示某服务器上所有打开的共享文件名及锁定文件数。该命令也可以关闭个别文件并取消文
  件锁定。
  net file [id [/close]]
  参数
  无
  键入不带参数的 net file 可获得服务器上打开文件的列表。
  id
  文件标识号。
  /close
  关闭打开的文件并释放锁定记录。请从共享文件的服务器中键入该命令。
  
  Net Group
  
  在 Windows NT Server 域中添加、显示或更改全局组。该命令仅在 Windows NT Server 域
  中可用。
  net group [groupname [/comment:"text "]] [/domain]
  net group groupname {/add [/comment:"text "] | /delete} [/domain]
  net group groupname username [ ...] {/add | /delete} [/domain]
  参数
  无
  键入不带参数的 net group 可以显示服务器名称及服务器的组名称。
  groupname
  要添加、扩展或删除的组。仅提供某个组名便可查看组中的用户列表。
  /comment:"text "
  为新建组或现有组添加注释。注释最多可以是 48 个字符,并用引号将注释文字引住。
  /domain
  在当前域的主域控制器中执行该操作,否则在本地计算机上执行操作。
  该参数仅用于作为 Windows NT Server 域成员的 Windows NT Workstation 计算机。Windo
  ws NT Server 计算机默认为在主域控制器中操作。
  username[ ...]
  列表显示要添加到组或从组中删除的一个或多个用户。使用空格分隔多个用户名称项。
  /add
  添加组或在组中添加用户名。必须使用该命令为添加到组中的用户建立帐号。
  /delete
  删除组或从组中删除用户名。
  
  Net Help
  
  提供网络命令列表及帮助主题,或提供指定命令或主题的帮助。可用网络命令列于 N 下面的
  “命令参考”中“命令”窗口内。
  net help [command]
  net command {/help | /?}
  参数
  无
  键入不带参数的 net help 显示能够获得帮助的命令列表和帮助主题。
  command
  需要其帮助的命令,不要将 net 作为 command 的一部分。
  /help
  提供显示帮助文本方式选择。
  /?
  显示命令的正确语法。
  
  Net Helpmsg
  
  提供 Windows NT 错误信息的帮助。
  net helpmsg message#
  参数
  message#
  需要其帮助的 Windows NT 消息的四位代码。
  
  Net Localgroup
  
  添加、显示或更改本地组。
  net localgroup [groupname [/comment:"text "]] [/domain]
  net localgroup groupname {/add [/comment:"text "] | /delete} [/domain]
  net localgroup groupname name [ ...] {/add | /delete} [/domain]
  参数
  无
  键入不带参数的 net localgroup 将显示服务器名称和计算机的本地组名称。
  groupname
  要添加、扩充或删除的本地组名称。只提供 groupname 即可查看用户列表或本地组中的全局
  组。
  /comment: "text "
  为新建或现有组添加注释。注释文字的最大长度是 48 个字符,并用引号引住。
  /domain
  在当前域的主

 

dacl命令

能不能在命令行模式下修改文件夹的访问权限或者共享权限?我用的Windows 2000的操作系统,手工修改方法我知道,但是想用更简便的方法,请告知。
以下命令帮助取自XP的帮助文档,Windows 2000的情况可能稍有不同:
Cacls显示或修改任意访问控制列表 (DACL) 文件。
  
  语法
  cacls FileName [/t] [/e] [/c] [/g User:permission] [/r User [...]] [/p User:permission [...]] [/d User [...]]
  
  参数
  FileName
  必需。显示指定文件的 DACL。
  
  /t
  更改当前目录和所有子目录中指定文件的 DACL。
  
  /e
  编辑 DACL,而不是替换它。
  
  /c
  忽略错误,继续修改 DACL。
  
  /g User:permission
  将访问权限授予指定用户。下表列出了 permission 的有效值。
  n 无
  r 阅读顺序
  w 写入
  c 更改(写入)
  F 完全控制
  
  /r user
  取消指定用户的访问权限。
  
  /p User:permission
  替代指定用户的访问权限。下表列出了 permission 的有效值。
  n 无
  r 阅读顺序
  w 写入 bitsCN.nET中国网管博客
  c 更改(写入)
  F 完全控制
  
  /d user
  拒绝指定用户的访问。

Tags: net,dacl,C#
用C#设置NTFS磁盘格式的目录权限[转]
2007/11/22 21:02

找了好久,终于找到了一个设置目录权限的工具包.下面的文章提供了方法. 当然还有一种更简单的方法,那就是用cacls 命令,这种方法我还没有尝试.

Today I needed to set NTFS permissions in C# on some newly created directories.

No problem I thought, the CLR will have something for it somewhere in Security, so I checked Google in the hopes to find which class to use.

But Google didn't find anything... This amazed me. "Why can't I control NTFS permissions with .NET ?!?"

After looking for an hour or so, I found a GotDotNet User Sample, called 'ACLs in .NET'. Finally I thought, now it's going to be plug in and set rights.

Well this library is great. It makes settings NTFS rights so  easy.

But it lacks a bit in documentation. Therefore I'm providing some of the code I used with it, it could help you. (or it could show my possibly bad coding style, as far as my knowledge goes for know, it should be fine)

Reference the dll, and use it.

using Microsoft.Win32.Security;


Here's a method to add a dir, and set NTFS permissions on it for a given user:

private Boolean CreateDir(String strSitePath, String strUserName) {
       Boolean bOk;
       try {
              Directory.CreateDirectory(strSitePath);
              SecurityDescriptor secDesc = SecurityDescriptor.GetFileSecurity(strSitePath, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);
              Dacl dacl = secDesc.Dacl;
              Sid sidUser = new Sid (strUserName);
 
              // allow: folder, subfolder and files
              // modify
              dacl.AddAce (new AceAccessAllowed (sidUser, AccessType.GENERIC_WRITE | AccessType.GENERIC_READ | AccessType.DELETE | AccessType.GENERIC_EXECUTE , AceFlags.OBJECT_INHERIT_ACE | AceFlags.CONTAINER_INHERIT_ACE));
             
              // deny: this folder
              // write attribs
              // write extended attribs
              // delete
              // change permissions
              // take ownership
              DirectoryAccessType DAType = DirectoryAccessType.FILE_WRITE_ATTRIBUTES | DirectoryAccessType.FILE_WRITE_EA | DirectoryAccessType.DELETE | DirectoryAccessType.WRITE_OWNER | DirectoryAccessType.WRITE_DAC;
              AccessType AType = (AccessType)DAType;
              dacl.AddAce (new AceAccessDenied (sidUser, AType));
 
              secDesc.SetDacl(dacl);
              secDesc.SetFileSecurity(strSitePath, SECURITY_INFORMATION.DACL_SECURITY_INFORMATION);
              bOk = true;
       } catch {
              bOk = false;
       }
       return bOk;
} /* CreateDir */

The AceFlags determine the level of inheritance on the object.

And the DirectoryAccessType is used to create a AccessType with some permissions not in the AccessType enum.
I hope this is useful.
posted on Sunday, February 08, 2004 12:06 AM
Tags:
Windows2003 AGP纹理加速无法启动解决办法
2007/09/24 00:16

困挠了我1个月的问题,今天晚上终于把它解决了。基本上我所有的电脑都装windows2003 服务器版,因为调试程序方便,而且稳定。可对于自己个人用的电脑来说,装2003有诸多不便,比如玩游戏等,好麻烦。上次公司电脑装完系统后,就出现了AGP纹理加速开不了情况,一般来说,开AGP纹理加速,先在桌面右键->设置->高级->疑难解答,把硬件加速打到最高,然后用启动dxdiag,把DirectDraw 加速,Direct3D ,AGP纹理加速全开上就可以了。

但注意,上面的方法是一般的方法,比如我家的老台式机: PIII 600e, 192内存,主板 Intel 810e 集成显卡来说,的确可以,可是很多机器这样的方法不行。

比如我公司的:P4 2.8G ,1G内存,Ati 9500 128M显卡,就死活开不了AGP纹理加速。后来经查明,是主板驱动没装好,然后装主板驱动,再装显卡驱动,终于可以开AGP纹理加速了。所以说主板驱动非常重要!!如果顺序反了,声卡也会有影响,当时听歌的时候,老是有破音,后来查明还是和主板驱动有关。其实这些问题都好解决,分析一下应该可以明白。

最难解决的当属笔记本装Win2003系统。本人笔记本就是用win2003服务器版。PM 1.5 G(1M 2级缓存), 125G内存(1G+256M),Mobility Radeon9000 (32M显存)显卡。笔记本装装2003,就算你装好了主板驱动,声卡驱动,显卡驱动也没用。有2个很难搞的设备,一是红外,二是显卡的AGP纹理加速。

先说简单的红外,因为我的手机经常通过红外安装软件,所以红外对我来说很重要。win2003默认不识别红外设备的,所以在设备管理器里是找不到红外设备的,解决办法:从XP系统里考红外的需要的Inf文件,网上有现成的,下载后点击bat文件就会帮你全部装好。然后刷新设备管理器,就可以提示找到新硬件了,这时候装驱动,红外装好。

最复杂的就算AGP纹理加速了。搞了我好多天,每次搞几个小时无结果就放弃了。最新的主板驱动,显卡驱动不知道装了多少遍还是没用。在Bios里也看了,更本没有限制分内存给显卡的选项!平时不感觉有什么,因为上网,编程,玩小游戏,看DVD都很正常,就是玩大型3D游戏的时候,你就感觉卡,比如玩魔兽,我一做主机就卡得要死,不做主机还好,还能玩。这说明显存32M更本不够,但是又不能把内存当显存,所以玩大型游戏需要处理的东西一多就卡了。

解决办法:后来回想安装红外的时候,为什么要先把Inf文件拷贝呢? 这说明2003默认是不安装红外的啊,那么显卡呢? 肯定2003默认也不需要AGP控制器,为了提高性能,肯定不会把内存给显卡用了,所以问题还是出在主板驱动上,绝对不是显卡驱动。打开设备管理器查看:发现里面有个 PCI to PCI Contronl的东西,本来应该是PCI to AGP才对啊? 难道Windows2003 会用这个来代替对AGP的控制,或者把AGP当PCI来用? 想到这里,感觉应该更新这个驱动才对。如果直接装主板驱动,会提示你主板驱动已经是最新的了,不需要安装。所以把PCI to PCI 这个的驱动更新了,直接到主板驱动的文件夹里,找到 INF 文件夹,让它在里面搜索,果然后面会提示有 PCI to AGP的东西,驱动程序顺利更新! 重启电脑后,dxdiag里的AGP纹理加速终于可以开了。玩了盘 魔兽,做主机,一点都不卡!

至此,笔记本所有的功能在windows2003下全部开放了,终于可以开发,游戏娱乐两不误了:)

Tags:
爱情呼叫转移
2007/08/05 23:16

星期天一个人在家听着陈奕迅的《爱情转移》,很有感触,看歌词发现是一部电影的结尾曲,突然有种很想看的冲动,于是百度一下,找出《爱情呼叫转移》的视频,虽然是在线看的,没有DVD版那么清晰,不过感觉还好,一部让人思考的作品,没有白看。

徐铮(影片演徐朗),一个不承认自己7年之痒的“老”男人,
终于不愿意再忍受一星期的4餐的炸酱面决定离婚,
并意外的获得了一个能提供十次艳遇机会的手机?
从而开始了他寻找一个能陪伴一生的伴侣的奇异旅程。
可以遇到十种不同风情的女人,这是谁不梦寐以求的啊?!
这代表几乎所有寻找爱情的人心中的向往,可以和自己喜欢的所有类型的人相遇,交往,然后找到自己的幸福。
可是....

小宋佳,寡居的女人,温柔的盘目,寂寞的眼神。粉红色的小屋,点满烛光,你侬我侬,但是她却怀着孩子。无法接受的他,退出,只寄去满满的小婴孩的衣衫。

范冰冰,飒爽的警察,抓贼时那般勇猛,却对自己的原则退缩,他是离过婚的男人,他带不给自己安全感?

委屈的他,对天使大吼,我要个HIGH的。于是,古灵精怪的黄圣依出现。见面第一天叫他老公,执意去他家住。他为她挨打,她就要嫁给他,只是因为好玩和新鲜。已经算是老男人 ,玩下去,说不定会患心脏病。

相亲。看上人家漂亮的女儿,经过亲友团集体投票,却差点成了别人的继父。

这一次是漂亮直爽的宁静。立刻决定一起看房。然而,她对房子几乎苛刻的挑剔,全是建立在对爱情的不信任上。那句“就像你们男人”的比喻又让他打了退堂鼓。
  
再接再厉吧。美丽的CEO伊能静,经过层层考验,她在他眼前和别的男人上床,他只能躺床下愤恨的按下下一个号码。

爱狗成痴的瞿颖,本来还有希望的,可是最后一关还是被淘汰,原因是在她心目中,他不如她的一条狗忠诚。

秦海璐,人是骄傲了点,但长的不错,也还有趣,做心理测验,发毒誓,倾尽所有,结果仍做的不好,做乱做错,被骂成各种各样的禽兽。
  
有了选择,却没发现谁感觉更对。次次撞壁,晓得回头是岸了。换了红毛衣的前妻早已嫁为他人妇。他嫌弃的是他人眼中的宝。

拥有了,不见得高兴,失去了,也未必开心,我们总是喜欢自相矛盾。

在影片最后,感动的瞬间:
徐朗坐在高速公路的护栏上,说,我祝愿所有我遇见的女人们都幸福,我也要追寻我的幸福。放下神奇的手机,抬起头,在阳光中。

最后,沈星的出现,焰火的绚烂,是为了大团圆的结局,为了我们心中对爱情不变的希望。

沈星扔掉另一把手机,
似乎在告戒人们,不要再期待下一个了,
浪费的只有青春和缘分,
别以为你手中还有机会,
别以为“天使一直在眷顾你”,
抓住眼前的,好好珍惜,都将会是最好的!!

其实有的时候在你身边的就是你最想要的,此情可待成追忆,只是当时已枉然。当你懂得了,扔掉了可以爱情呼叫转移的手机,那你离幸福就不远了。

 

Tags:
(原)简单的Lucene.Net-2.0-004-11Mar07索引+搜索
2007/08/05 22:01

这几天看demo完成了一个简单的索引+搜索。网上大多数是dotLucene.net 的例子,而Lucene.Net 2.0 的很少,其实连 http://www.dotlucene.net/ 都关掉了,由于刚刚接触Lucene.net ,网上很多人说 Lucene.Net 从 2.0 开始就开始收费,其实,现在Lucene.net 又开始免费了。Lucene.net 现在成为apache 的开源项目 http://incubator.apache.org/projects/lucene.net.html 。我想也正因此,dotLucene.net 才关闭的吧。回想起这几天研究Lucene.net 很是奇怪,刚开始的2天,还在 dotlucene.net 上面找资料,可是这个星期一一看,竟然出现关闭页面。开始很紧张,以为唯一一个 .net 的开源Lucene也没了。后来一看作者的介绍才发现竟然在apache.org 有一个开源的项目。而且按照项目介绍,Lucene.net 是完全按照java版来翻译的,连索引文件都可以通用。这也坚定了我研究最新版的Lucene.net 的决心。

In addition to the APIs and classes port to C#, the algorithm of Java Lucene is ported to C# Lucene. This means an index created with Java Lucene is back-and-forth compatible with the C# Lucene; both at reading, writing and updating. In fact a Lucene index can be concurrently searched and updated using Java Lucene and C# Lucene processes.

好了,废话少说,经过1天的摸索,终于调试出了第一个demo程序了。

 

点击建立索引之后,在程序所在的Txt 目录里的所有文本格式的文件都会被索引。(虽然说是文本,其实不管后缀是什么都会索引)

在文本框里(txtSch)输入关键词,点搜索,能输出结果(txtR ),并显示文件的所在位置。

建立索引页面代码

private void CreateIndex()
  {
   try
   {
    //建立一个索引文件
    IndexWriter writer=new IndexWriter(Application.StartupPath+"\\Index",new StandardAnalyzer(),true);
    IndexDirectory(writer,new FileInfo(Application.StartupPath+"\\Txt"));
    writer.Optimize();
    writer.Close();
    Result("建立索引成功!");
   }
   catch
   {
    Result("出错啦!");
   }

  }

  //利用递归找到该目录下所有htm文件,用于建立索引
  private void IndexDirectory(IndexWriter writer, FileInfo file)
  {
   if (System.IO.Directory.Exists(file.FullName))
   {
    String[] files = System.IO.Directory.GetFileSystemEntries(file.FullName);
    // an IO error could occur
    if (files != null)
    {
     for (int i = 0; i < files.Length; i++)
     {
      IndexDirectory(writer, new FileInfo(files[i]));  //递归找出所有的文件
     }
    }
   }
   else
   {
    try
    {
     writer.AddDocument(FileDocument.Document(file));
     Result(file.FullName+": 索引!");
    }
    catch
    {

    }
   }
  }

  //输出结果
  private void Result(string str)
  {
   txtR.Text=str+"\r\n"+txtR.Text;
   txtR.Update();
  }

  private void button2_Click(object sender, System.EventArgs e)
  {
   if(txtSch.Text=="" || txtSch.Text==null)
   {
    MessageBox.Show("请填写完成!");
   }
   else
   {
    Thread t=new Thread(new ThreadStart(Search));
    t.Start();
   }
  }

搜索代码
private void Search()
  {
   string q=txtSch.Text;
   QueryParser parser=new QueryParser("contents",new StandardAnalyzer());
   Query query=parser.Parse(q);
   IndexSearcher sch=new IndexSearcher(Application.StartupPath+"\\Index");
   Hits hit=sch.Search(query);
   StringBuilder strR=new StringBuilder();
   strR.Append("一共找到"+hit.Length()+" 个结果!\r\n");
   for (int i=0; i<hit.Length();i++)
   {
    
    strR.Append(i+" "+hit.Id(i)+" "+hit.Score(i)+"\r\n");
    Document d=hit.Doc(i);
    strR.Append(i+" "+d.Get("path")+"\r\n");
    strR.Append(d.Get("contents")+"\r\n");
   }
   txtR.Text=strR.ToString();
   sch.Close();
   
  }

接下来的工作就是根据这个简单的demo程序来分析里面的源代码了。然后将中文分词加入进入。现在搜索出来的结果匹配得很不准确。

Tags:
(原)在Lucene.net 增加自己的中文分词Analyzer
2007/08/05 21:59

研究了一天终于搞定了在Lucene.net 里添加Analyzer 的方法。首先说明下,要添加中文分词必须继承Analyzer类。

参考网址:http://blog.likeshow.net/article.asp?id=39

仿照别人的一篇文章,写出了这个类。写完后发现,其实这样的东西没什么技术含量,不过对于理解Lucene确实帮助不少。下面我将代码贴出。

首先是:ChineseAnalyzer 类,这个类里面从别人的类中已经有现成的了。上面网址所说的方法有点不对,到了2.0里面,ChineseTokenizer 应该继承 Tokenizer 类,而Tokenizer类的构造函数只能传 TextReader _in 。所以 ChineseAnalyzer 类就保持原有的不变。

代码如下:

public class ChineseAnalyzer : Analyzer
 {

  public ChineseAnalyzer()
  {
  }

  /// <summary>
  /// Creates a TokenStream which tokenizes all the text in the provided Reader.
  /// </summary>
  /// <returns>A TokenStream build from a ChineseTokenizer filtered with ChineseFilter.</returns>
  public override sealed TokenStream TokenStream(String fieldName, TextReader reader)
  {
   TokenStream result = new ChineseTokenizer(reader);  
   result = new ChineseFilter(result);
   return result;
  }
 }

从上面可以看出,一个 Analyzer 类必须有 2个类与之对应: ChineseTokenizer , ChineseFilter  。前面一个类是我们需要修改的,也就是用中文分词技术将读进去的 TextReader 变成 一个个的 Token 。 既然不能传2个参数,那么中文分词只能在 ChineseTokenizer 里出现了。

此类代码如下:

public sealed class ChineseTokenizer : Tokenizer
 {

  private Segment segment; //分词类。
  private string[] Wordlist; //切好的词放入此数组中
  private string Allstr; //对传入的流转成此string
  private int offset = 0; int start = 0; int step = 0; //offset偏移量,start开始位置,step次数

  public ChineseTokenizer(TextReader _in)
  {
   input = _in;
   Allstr = input.ReadToEnd(); //把流读到Allstr
   segment=new Segment();
   segment.InitWordDics();
   segment.Separator="|";
   Wordlist = segment.SegmentText(Allstr).Split('|'); //把分好的词装入wordlist
  }

  
  private Token Flush(string str)
  {

   if (str.Length > 0)
   {
    return new Token(str,start, start + str.Length); //返回一个Token 包含词,词在流中的开始位置和结束位置.
   }
   else
    return null;
  }

  public override Token Next() //重载Next函数,就是返回Token
  {
   Token token = null;
   if (step < Wordlist.Length)
   {
    start = Allstr.IndexOf(Wordlist[step], offset); //从Allstr里找每个分出来词汇的开始位置
    offset = start + 1; //计算偏移量
    token = Flush(Wordlist[step]); //返回已分词汇
    step = step + 1; //变量+1,移动到wordlist的下一个词汇
   }
   return token;
  }

 }

而最后一个类,基本不用改变。

public sealed class ChineseFilter : TokenFilter
 {
  // Only English now, Chinese to be added later.
  public static String[] STOP_WORDS =
     {
      "and", "are", "as", "at", "be", "but", "by",
      "for", "if", "in", "into", "is", "it",
      "no", "not", "of", "on", "or", "such",
      "that", "the", "their", "then", "there", "these",
      "they", "this", "to", "was", "will", "with"
     };

  private Hashtable stopTable;

  public ChineseFilter(TokenStream _in) : base (_in)
  {
   stopTable = new Hashtable(STOP_WORDS.Length);

   for (int i = 0; i < STOP_WORDS.Length; i++)
    stopTable[STOP_WORDS[i]] = STOP_WORDS[i];
  }

  public override Token Next()
  {

   for (Token token = input.Next(); token != null; token = input.Next())
   {
    String text = token.TermText();

    // why not key off token type here assuming ChineseTokenizer comes first?
    if (stopTable[text] == null)
    {
     switch (Char.GetUnicodeCategory(text[0]))
     {

      case UnicodeCategory.LowercaseLetter:
      case UnicodeCategory.UppercaseLetter:

       // English word/token should larger than 1 character.
       if (text.Length > 1)
       {
        return token;
       }
       break;
      case UnicodeCategory.OtherLetter:

       // One Chinese character as one Chinese word.
       // Chinese word extraction to be added later here.

       return token;
     }

    }

   }
   return null;
  }
 }

至此中文分词就完全搞定了。用java版的Luke 可以看到里面出现了中文的分词。又一次证明了Lucene.net 和 Lucene的索引是通用的。

在这里要利用了开源的 分词库: http://www.shootsoft.net/home/show.aspx?id=38&cid=8  感谢作者无私分享,在网上找了好多天,才找到这个开源的分词程序,而且带有分词字典。

至此,终于完成了一个简单的中文全文检索程序了。明天开始测试这个程序的性能。并且换几个其他的分词程序试试看效果。后天利用这个做一个简单的全文检索程序,将我一个5万编程文档的网站实现全文检索。

Tags:
  • 1
  • 2
  • 3
显示模式: 摘要 | 列表
日历
分类
全部文章[17]
生活随笔[6]
网页设计[0]
ASP,VB[0]
C# , .Net[5]
互联网观察[1]
思考感悟[3]
系统相关[1]
其他[1]
最新更新
正则特殊符号表多样性选择的时代,长尾用net命令和dacl用C#设置NTFS磁盘Windows2003爱情呼叫转移(原)简单的Lucen(原)在Lucene.
最新评论
最新留言
站长信息
昵称:King
[给我发短消息]
MSN:luotongjx@hotmail.com
统计
归档
2008/01[0]2008/02[0]2008/03[0]2008/04[1]
热门文章