很有趣的一个故事!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/rts888/article/details/83945631


很有趣的一个故事!

  这是炎热小镇慵懒的一天。太阳高挂,街道无人,每个人都债台高筑,靠信用度日。

  这时,从外地来了一位有钱的旅客,他进了一家旅馆,拿出一张1000元钞票放在柜台,说 想先看看房间,挑一间合适的过夜。

  就在此人上楼的时候,店主抓了这张1000元钞,跑 到隔壁屠户那里支付了他欠的肉钱。

  屠夫有了1000元,横过马路付清 了猪农的猪本钱。

  猪农拿了1000元,出去付了他欠的饲料款。

  那个卖饲料的老兄,拿到1000元赶忙去付清他召妓的钱(经济不景气,当地的服务业也不得不提供信用服务)。

  有了1000元 ,这名妓 女冲到旅馆付了她所欠的房钱。

  旅馆店主忙把这1000元放到柜台上,以免旅客下楼时起疑。

  此时那人正下楼来,拿起1000元, 声称没一间满意的,他把钱收进口袋,走了……这一天,没有人生产了什么东西,也没有人得到什么东西,可全镇的债务都清了,大家很开心。

  请问这个故事的漏洞在哪里?

展开阅读全文

一个有趣的命令行的事

01-02

刚刚发现命令行运行一个程序时有趣的现象,现在和大家分享一下.rn先请大家看一段非常简单的程序:rn[code=C/C++]rn#include rnint main(rn int argc,rn char **argv)rn int i = 0;rnrn if ( argc < 2 )rn printf( "There is only one parameter in cmd: %s.\n", argv[0] );rn rn elsern printf( " There are %d parameters in cmd:\n", argc );rn for(; i< argc ; i++)rn printf("%20s", argv);rn rn printf("\n");rn rnrn return 0;rnrn[/code]rn编译程序,并运行(我是在服务器X4100.unix-center.net),得到如下有意思的现象:rn-bash-3.00$ ./ParameterrnThere is only one parameter in cmd: ./Parameter.(这个很好理解)rnrn-bash-3.00$ ./Parameter #rnThere is only one parameter in cmd: ./Parameter.(执行这个的时候,并不像我想象的一样把字母'#'传入做为一个参数)rnrn-bash-3.00$ ./Parameter *rnThere are 5 parameters in cmd:rn ./Parameter Parameter Parameter.c PrintP PrintP.crn这个就更奇怪了,本来想传入字母'*',但传入的确多了很多参数,原来把*作为参数传入是将本路很下所有的文件名作为参数传入,但是参数的顺序我现在还没有发现规律,至少不是按时间先后,也不是按文件名的字母排序(两个验证后都不是).rnrn然后我就想传入参数#或*,经过试验发现用" "或' '括起来就可以,如下:rn[code=BatchFile]rn-bash-3.00$ ./Parameter '#'rnThere are 2 parameters in cmd:rn ./Parameter #rnrn-bash-3.00$ ./Parameter '*'rnThere are 2 parameters in cmd:rn ./Parameter *rnrn-bash-3.00$ ./Parameter "#"rnThere are 2 parameters in cmd:rn ./Parameter #rnrn-bash-3.00$ ./Parameter "*"rnThere are 2 parameters in cmd:rn ./Parameter *rn[/code]rn随后一想,如果我想传入的参数即为"呢?那怎么办,同样用" "或' ' 括起来,如下:rn-bash-3.00$ ./Parameter "'"rnThere are 2 parameters in cmd:rn ./Parameter ' (这个是对的)rn-bash-3.00$ .Parameter """rn>rn>rn-bash-3.00$ (这个就不对了,我是用ctrl+c结束运行的.)rnrn如果想传入参数',那结果很类似,如下:rn-bash-3.00$ ./Parameter '"'rnThere are 2 parameters in cmd:rn ./Parameter "rn-bash-3.00$ ./Parameter '''rn>rn>rn-bash-3.00$rnrn我接着试了以下几种情况,就是想传入参数""和'':rn-bash-3.00$ ./Parameter """" (传参数"",得到空)rnThere are 2 parameters in cmd:rn ./Parameter rn-bash-3.00$ ./Parameter '""'(传参数"",得到"")rnThere are 2 parameters in cmd:rn ./Parameter ""rn-bash-3.00$ ./Parameter "''"(传参数''(‘’),得到'')rnThere are 2 parameters in cmd:rn ./Parameter ''rn-bash-3.00$ ./Parameter ''''(传参数''(‘’),得到空)rnThere are 2 parameters in cmd:rn ./Parameter 论坛

发现一个有趣的设计模式~很好玩~

12-28

本来我是想完成一个占位符(placeholder)字符串处理功能实现!之前我发过帖子求助,后来发现真笨,用String的replace方法就可以实现的。rnrn帖子在此:rn[url=http://topic.csdn.net/u/20111227/20/f4e4f380-069e-4d34-be66-175f82a5c1f9.html][/url]rnrn首先,我设计了一个类—信息包裹(MessageBundle),但由于信息包裹内的信息大部分都是带有占位符的字符串!rn程序响应给外部系统时,就必需把这些占位符替换成程序运行时的值。rn例如:rn要查找与含词“FindMe”的相匹配用户rnrn信息包裹内的字符串:rn没有发现与[$username]相匹配的用户!rnrn那么程序运行时给外部系统的信息提示可能为rn“没有发现与[FindMe]相匹配的用户!”rnrn一开始我就设想,新建个类SentenceForm及为其创建方法rn[code=Java]rnvoid replaceVariableWith(String theVaribaleName,String theVariableValue)rn[/code]rnrn不就得了。调用此方法的风格就形如这样:rn[code=Java]rnsentenceForm.replaceVariableWith("username","FindMe");rn[/code]rnrn但我想了想,如果是我,当然知道这语句是什么意思。但别人有时会出现混淆(当然机率可能很小),读者看代码时,此代码含义是:rn[color=#FF0000]sentenceForm replace variable "username" with "FindMe"[/color]rn还是(在没有看方法签名的情况下,反正我看着上面的调用风格有点不是味道)rn[color=#FF0000]sentenceForm replace variable with ("username","FindMe")[/color]rn意思把变量"username"的名字改一个新名字"FindMe"。或者还是其它什么意思啦。rnrn于是我就想调用此方法的风格要是这样就好了rnrnsentenceForm.replace("username").with("FindMe")rnrn这样应该不会有误解了吧!rnrn如是就有了最终的代码:rnrn[code=Java]rnpackage com.dongantech.eshop.web.util;rnrnpublic class SentenceForm rn private String sentenceForm = null ;rn private String replacedVariableName = "" ;rn rn public void setSentenceForm(String theSentenceForm)rn sentenceForm = theSentenceForm;rn rn public String getSentenceForm()rn return sentenceForm;rn rn public SentenceForm replaceVariable(String theVariableName)rn replacedVariableName = theVariableName ;rn return this ;rn rn public SentenceForm with(String theValue)rn String replacedVariable = "$"+replacedVariableName+"";rn sentenceForm.replace(replacedVariable,theValue) ;rn return this ;rn rnrn[/code]rnrn当然,这只是链式调用的另外一种用途。但我想分享一下自己的心得。。。仅此而已! 论坛

没有更多推荐了,返回首页