??xml version="1.0" encoding="utf-8" standalone="yes"?>久久福利青草精品资源站免费,国产成人久久久精品二区三区,久久久久无码精品国产不卡http://www.shnenglu.com/isware/zh-cnTue, 06 May 2025 20:39:09 GMTTue, 06 May 2025 20:39:09 GMT60Install Ubuntu from usb diskhttp://www.shnenglu.com/isware/archive/2011/09/24/156686.html艾斯l亚艾斯l亚Sat, 24 Sep 2011 03:07:00 GMThttp://www.shnenglu.com/isware/archive/2011/09/24/156686.htmlhttp://www.shnenglu.com/isware/comments/156686.htmlhttp://www.shnenglu.com/isware/archive/2011/09/24/156686.html#Feedback1http://www.shnenglu.com/isware/comments/commentRss/156686.htmlhttp://www.shnenglu.com/isware/services/trackbacks/156686.html阅读全文

艾斯l亚 2011-09-24 11:07 发表评论
]]>
[转]Z么社交网站可以挑战搜索引?/title><link>http://www.shnenglu.com/isware/archive/2011/09/22/156511.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Thu, 22 Sep 2011 02:03:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/09/22/156511.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/156511.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/09/22/156511.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/156511.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/156511.html</trackback:ping><description><![CDATA[<div>  相关关键词搜索广告能够发展成产D数十亿美元的行业Q自有其道理——因ؓ它非常善于将搜烦信息的用户变成想要购物的消费者。但是,q不L如此。Dropbox 的首席执行官兼创始hDrew Houstonq日在斯坦福-Accel讨论?Stanford Accel Symposium)上的发言提供了又一个例证。在发言中,他讲到Dropboxq样一个云存储公司是如何发展到今天拥有4癑֤万用L规模。他介绍_q样的公司能够获得如此大的用戯模,搜烦q告q没有带来很大的帮助Qƈ对其原因q行了描q?br /><br />  据Houston所qͼDropbox做了大量工作来以吸引大众的注意力——他们认ؓq是创业公司需要做的,比如_聘请公关公司Q购买Google关键词搜索广告等Q但是这些措施的收效都不明显。他特别说到Q就吸引新用h册这一Ҏ看,搜烦q告完全不v作用Q因为公司投入了很多钱做q告Q往往只能获得一个新用户——q远过公司可能获得的收贏V?br /><br />  q也是当下经常被论的问题的核心所在,也就是Google如今正面临的来自C会化媒体的挑战Q特别是Facebook。Google的搜索广告做得很好,原因是用搜索的用户已经军_好要C么,只需要寻扑֓儿可以买——qƈ不适用于那些只惛_|络上找天、交朋友的用戗就潜在用户来说Q?像Dropbox一P因ؓ用户很可能ƈ不知道这个品可以满他们生zM的某U需?Q社会化媒体很可能收效更为显著,靠的是口口怼的互相推荐?br /><br />  Z在Google上去哪儿扑֏推荐和相关讨论?{案是Q可能找不到。也总们能够从Buzz上找C些,但是QBuzzq不成功。当Ӟqƈ不是说Google本n没用Q或者说关键词搜索广告毫无h?#8212;—即便是Dropboxq种情况Q一旦用户听说了它的强大功能Q在自己试用之前Q很可能会上GoogleL索其他用L评论Q相关品的信息{等。但是,问题在于Google不能在社交范围内发挥作用Q就像Kevin Kelly在《科技评论》上的文章里说的Q有人气的地Ҏ能盈?Money follows attention)?br /><br />  Houston所观察到的现象只是另一个例子,再次说明GoogleZ么需要当心社会化媒体Q以及这意味着什么。同Ӟq也解释了ؓ什么Google重视?#8220;C交?#8221;dC品和服务中去 -- 管真正的社交型产品q不仅仅{于在现有的功能上添上新lgQ这也是Facebook能够在这个领域内大展宏图的原因。不怎样QGoogle实需要找到将C交因素融合到现有服务中ȝҎQ不Ӟ将面失去人气的风?#8212;—乃至Q损失潜在的收入?/div><img src ="http://www.shnenglu.com/isware/aggbug/156511.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-09-22 10:03 <a href="http://www.shnenglu.com/isware/archive/2011/09/22/156511.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Adobe AIRhttp://www.shnenglu.com/isware/archive/2011/09/14/155747.html艾斯l亚艾斯l亚Wed, 14 Sep 2011 05:54:00 GMThttp://www.shnenglu.com/isware/archive/2011/09/14/155747.htmlhttp://baike.baidu.com/view/1167325.htm

艾斯l亚 2011-09-14 13:54 发表评论
]]>
详细Tcpdump 的用?/title><link>http://www.shnenglu.com/isware/archive/2011/08/10/152954.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Wed, 10 Aug 2011 08:04:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/08/10/152954.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/152954.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/08/10/152954.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/152954.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/152954.html</trackback:ping><description><![CDATA[     摘要: 详细Tcpdump 的用?nbsp; <a href='http://www.shnenglu.com/isware/archive/2011/08/10/152954.html'>阅读全文</a><img src ="http://www.shnenglu.com/isware/aggbug/152954.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-08-10 16:04 <a href="http://www.shnenglu.com/isware/archive/2011/08/10/152954.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>gdb core文g调试http://www.shnenglu.com/isware/archive/2011/07/29/152046.html艾斯l亚艾斯l亚Fri, 29 Jul 2011 07:46:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/29/152046.htmlhttp://www.shnenglu.com/isware/comments/152046.htmlhttp://www.shnenglu.com/isware/archive/2011/07/29/152046.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/152046.htmlhttp://www.shnenglu.com/isware/services/trackbacks/152046.html阅读全文

艾斯l亚 2011-07-29 15:46 发表评论
]]>
[转]零知识证?/title><link>http://www.shnenglu.com/isware/archive/2011/07/28/151986.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Thu, 28 Jul 2011 07:38:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/07/28/151986.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/151986.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/07/28/151986.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/151986.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/151986.html</trackback:ping><description><![CDATA[<div><p>战争中你被俘了,敌h拷问你情报。你是这么想的:如果我把情报都告诉他们,他们׃认ؓ我没有hgQ就会杀了我省粮食,但如果我L不说Q他们也会认为我没有价D杀了我。怎样才能做到既让他们信我知道情报,但又一丁点情报也不泄露呢?<br /><br /></p> <p>q的是一个o人纠l的问题Q但阉K巴巴想了一个好办法Q当强盗向他拷问打开山洞石门的咒语时Q他对强盗说Q?#8220;你们L一之圎ͼ用弓指着我,你们举vx我就念咒语打开石门QD起左手我念咒语关上石门Q如果我做不到或逃跑Q你们就用弓射L?#8221;</p> <p><br />强盗们当然会同意Q因个方案不仅对他们没有M损失Q而且q能帮助他们搞清楚阿里巴巴到底是否知道咒语这个问题。阿里巴巴也没损失,因ؓ处于一之地的强盗听不C늚咒语Q不必担心泄露了U密Q而且他确信自q咒语有效Q也不会发生被射ȝ杯具?/p> <p><br />强盗举v了右手,只见阉K巴巴的嘴动了几下Q石门果真打开了,强盗举v了左手,阉K巴巴的嘴动了几下后石门又关上了。强盗还是有点不信,?不准q是巧合呢,他们不断地换着节奏丑֏手D左手Q石门跟着他们的节奏开开兛_Q最后强盗们惻I如果q认只是巧合Q自己未免是个傻瓜,那还是相信了?里巴巴吧?/p> <p><br />“零知识证?#8221;说的是示证者向验证者表明他知道某种U密Q不仅能佉K证者完全确信他的确知道q个U密Q同时还保证一丁点U密也不泄露l验证者。阿里巴巴的q个ҎQ就是认证理?#8220;零知识证?#8221;的一个重要协议?/p> <p><br />除了被俘后如何靠情报保命q个问题Q零知识证明在社会领域中q有着很多应用场合。例如你证明了一个世界的数学难题,但在发表出来之前Q?是要找个泰斗U的数学家审E吧Q于是你证明过E发l了他,他看懂后却动了歪心思,他把你的E子压住Q把你的证明用自q名义发表Q他名利双收Q你郁闷?死,你去告他也没用,因ؓ学术界更怿的是q位泰斗Q而不是你q个无名之辈?br /></p> <p><br />qƈ不是天方夜KQ而是学术界常见的NQ前些年有个博士生告他的泰斗U导师剽H他的成果,但除了o师生关系恶化外没有Q何效果,最后他?Z撒手锏,UC在给导师审阅的论文的关键公式中,故意标错了一个下标,而这会导致整个推导失败。学术委员会一查果真如此,但还是有們֐于泰斗的声音Q有 那是泰斗的笔误,只不q让你发C而矣Qƈ不能证明那公式就是你推导出来的?/p> <p><br />q个博士生故意标错下标,不能说他没有心眼Q但他没有把“零知识证?#8221;理论用好Q以致于落到q种地步?#8220;零知识证?#8221;早在1986q就?A.Fiat和A.Shamir用数学的Ҏl出了解x案,q在同年甌了美国专利,但由于该理论可能被用于军事领域,专利局被军方密令搁|,6个月 后,军方命oQ?#8220;该申请发表后会有害于国家安全......所有美国h的研I未l许可而泄露将会被判刑|款”。看来军方认Z者肯定是国ZQ但作者实 际上是在国甌专利的以色列人,研究也是在以色列的大学里做的Q军方这个命令摆了个大乌龙,虽然两天后撤消了Q但已经成ؓ了学术界的笑柄?/p> <p><br />q个W柄也说明了一个问题,?#8220;零知识证?#8221;非常重要。基于数学的推理虽然非常复杂Q但思\却很单,上述的阿里巴巴方案就是其中之一。其它的一些方案,也都是像q样遵@着分割和选择QCut and ChoseQ协议的?/p> <p><br />例如图论中有个哈c_回路(Hamiltonian CyclicQ问题,说的是多个顶点的全连通图Q若有一条通\通过了所有顶点,且每个顶点只通过一ơ,那这是哈米顿回\。如果顶点较多的话,即用计机ID计算很难扑ևq条回\Q因为通\的可能性真在是太多了?/p> <p><br />如果N会脓了一张全q通图Q命名ؓA图)悬赏哈米顿回\Q而且d我(奥卡姆剃刀Q作审官Q你q运的找C一条,那该怎么办呢Q将l果直接发给我吗Q千万不要,因ؓ保不齐我会将你的成果让给了我的亲信。那你该怎么办呢Q应该这么办Q?/p> <p><br />1、你A囄点搞ؕ了,q生成一张新图,只是点的位|变了,而新N点之间的q线关系与A图是完全一致的。这Ӟ新图中每个顶点与A图中每个点的对应关pM是清楚的Q而且新图中的哈米顿回\你也是知道的?/p> <p><br />2、你这张新囑֏l我Q没错,是仅仅一张新图,上面q没有画着你发现的牛B回\?/p> <p><br />3、我收到后,对你提出两个问题中的一个:一是证明新囑ְ是从A囑֏形过来的Q所有顶点和q线的关pd全一_二是d新图中的哈米顿回\?/p> <p><br />4、如果你真的扑ֈ了A囄哈米顿回\Q这两个问题当然都能L回答。需要注意的是:你只需要回{第3步的其中一个问题,千万不要两个问题一q回{,否则我就知道你关于A囄哈米顿回\了,你就SB了?/p> <p><br />5、我q是不相信你Q因为有可能你只是将A囑֏了ŞQ却Ҏ不知道A囄哈米顿回\Q而我在第3步时恰好要求你证明新囑ְ是从A囑֏形过 来的Q你当然能证明。或者有可能你找了个你知道哈c_回路的图,但这张图跟A图一点关p都没有Q而我在第3步恰好要求你dq张囄哈米顿回\?/p> <p><br />6、我要求你从W?步开始重复这个验证过E,随着ơ数的增加,W?步那Uy合的可能性就来低Q如果你多次能回{对W?步中的问题,那我q不怿你已l找CA囄哈米顿回\Q那我就是一个傻瓜?/p> <p><br />7、ؓ了表明我不是ȝQ我在松鼠会博里宣布你扑ֈ了A囄哈米顿回\Q而这时我q没有看C所ȝA囄哈米顿回\?/p> <p>回到你证明了世界U的数学N的问题,你可以用q种分割和选择协议来进行零知识证明Q来保护你的权利。你公开声称你解决了q个数学N后,验证者会 l你Z个其它的题,而能做出q道题的前提条g是已l解决了那个数学NQ否则的话无解,而且q个条g是学术界所公认的,q个题就是所谓的q问题。不?所料,你靠着已经解开数学N的基把这个^行问题做出来了,但验证者还是不信,他又Z一道^行问题,你又做出来了Q多ơ较量后Q验证者就信了你已经 解决了那个数学难题,虽然他ƈ没有看到具体的解法?/p> <p><br />大家已经看出来了Q零知识证明需要示证者和验证者的密切配合Q但如果你只是一个数学界的无名之辈,即你宣UC解决了数学难题,也不会有你配合着玩零知识证明Q那你该怎么办呢Q?/p> <br />我告诉你一个可以在法庭上都能当作有效证据的招数Q你证明打印好Q选择一个最可靠最权威的邮政公司,把它寄给自己Q当你收到这个扣着邮戳 的包裹后Q不要打开Q把它放好,然后可以把证明寄给数学泰斗。如果他用自q名义发表了,不必着急,{他依靠其媄响力把这个证明炒热后再出手,你上法庭 控告他,他当然不承认Q在法庭上你那个没开的包裹拿出来,上面清清楚楚地盖着旉戻Iq就证明了你包裹里的证明是发生在那个旉戳之前的Q加上之后的 你邮l泰斗论文的邮g存根Q和泰斗以自己名义发表论文的旉Q三者就构成了一个完整的证据链,泰斗灰头土脸名声扫地Q而你大获全胜名利双收?/div><img src ="http://www.shnenglu.com/isware/aggbug/151986.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-07-28 15:38 <a href="http://www.shnenglu.com/isware/archive/2011/07/28/151986.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>linux多线E及信号处理http://www.shnenglu.com/isware/archive/2011/07/27/151939.html艾斯l亚艾斯l亚Wed, 27 Jul 2011 08:28:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/27/151939.htmlhttp://www.shnenglu.com/isware/comments/151939.htmlhttp://www.shnenglu.com/isware/archive/2011/07/27/151939.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151939.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151939.html阅读全文

艾斯l亚 2011-07-27 16:28 发表评论
]]>
图解安装64-bit Adobe Flash Playerhttp://www.shnenglu.com/isware/archive/2011/07/25/151778.html艾斯l亚艾斯l亚Mon, 25 Jul 2011 03:40:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/25/151778.htmlhttp://www.shnenglu.com/isware/comments/151778.htmlhttp://www.shnenglu.com/isware/archive/2011/07/25/151778.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151778.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151778.html阅读全文

艾斯l亚 2011-07-25 11:40 发表评论
]]>
ubuntu C/C++ 开发环境配|?/title><link>http://www.shnenglu.com/isware/archive/2011/07/25/151775.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Mon, 25 Jul 2011 02:56:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/07/25/151775.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/151775.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/07/25/151775.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/151775.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/151775.html</trackback:ping><description><![CDATA[     摘要: ubuntu c/c++开发环境配|(vimQ?nbsp; <a href='http://www.shnenglu.com/isware/archive/2011/07/25/151775.html'>阅读全文</a><img src ="http://www.shnenglu.com/isware/aggbug/151775.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-07-25 10:56 <a href="http://www.shnenglu.com/isware/archive/2011/07/25/151775.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]tcp不能保证数据传输的万无一?/title><link>http://www.shnenglu.com/isware/archive/2011/07/21/151548.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Thu, 21 Jul 2011 07:08:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/07/21/151548.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/151548.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/07/21/151548.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/151548.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/151548.html</trackback:ping><description><![CDATA[     摘要: TCP 数据传输可靠?nbsp; <a href='http://www.shnenglu.com/isware/archive/2011/07/21/151548.html'>阅读全文</a><img src ="http://www.shnenglu.com/isware/aggbug/151548.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-07-21 15:08 <a href="http://www.shnenglu.com/isware/archive/2011/07/21/151548.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]使用sendfile()让数据传输得到最优化http://www.shnenglu.com/isware/archive/2011/07/21/151547.html艾斯l亚艾斯l亚Thu, 21 Jul 2011 06:59:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/21/151547.htmlhttp://www.shnenglu.com/isware/comments/151547.htmlhttp://www.shnenglu.com/isware/archive/2011/07/21/151547.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151547.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151547.html阅读全文

艾斯l亚 2011-07-21 14:59 发表评论
]]>
Linux的mmap文g内存映射机制http://www.shnenglu.com/isware/archive/2011/07/20/151489.html艾斯l亚艾斯l亚Wed, 20 Jul 2011 07:51:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/20/151489.htmlhttp://www.shnenglu.com/isware/comments/151489.htmlhttp://www.shnenglu.com/isware/archive/2011/07/20/151489.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151489.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151489.html阅读全文

艾斯l亚 2011-07-20 15:51 发表评论
]]>
惊群问题的思?/title><link>http://www.shnenglu.com/isware/archive/2011/07/20/151470.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Wed, 20 Jul 2011 04:44:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/07/20/151470.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/151470.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/07/20/151470.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/151470.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/151470.html</trackback:ping><description><![CDATA[     摘要: “据说”惊问题已l是一个很古老的问题了,q且在大多数pȝ中已l得到有效解冻I但对我来_仍旧是一个比较新的概念,因此有必要记录一下?nbsp; <a href='http://www.shnenglu.com/isware/archive/2011/07/20/151470.html'>阅读全文</a><img src ="http://www.shnenglu.com/isware/aggbug/151470.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-07-20 12:44 <a href="http://www.shnenglu.com/isware/archive/2011/07/20/151470.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>High performance server architecture(高性能服务器架?http://www.shnenglu.com/isware/archive/2011/07/19/151390.html艾斯l亚艾斯l亚Tue, 19 Jul 2011 08:12:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/19/151390.htmlhttp://www.shnenglu.com/isware/comments/151390.htmlhttp://www.shnenglu.com/isware/archive/2011/07/19/151390.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151390.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151390.html阅读全文

艾斯l亚 2011-07-19 16:12 发表评论
]]>
[转]libevent介绍http://www.shnenglu.com/isware/archive/2011/07/19/151383.html艾斯l亚艾斯l亚Tue, 19 Jul 2011 07:07:00 GMThttp://www.shnenglu.com/isware/archive/2011/07/19/151383.htmlhttp://www.shnenglu.com/isware/comments/151383.htmlhttp://www.shnenglu.com/isware/archive/2011/07/19/151383.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/151383.htmlhttp://www.shnenglu.com/isware/services/trackbacks/151383.html阅读全文

艾斯l亚 2011-07-19 15:07 发表评论
]]>
[转]Windows下模拟linux pipehttp://www.shnenglu.com/isware/archive/2011/06/30/149807.html艾斯l亚艾斯l亚Thu, 30 Jun 2011 03:19:00 GMThttp://www.shnenglu.com/isware/archive/2011/06/30/149807.htmlhttp://www.shnenglu.com/isware/comments/149807.htmlhttp://www.shnenglu.com/isware/archive/2011/06/30/149807.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/149807.htmlhttp://www.shnenglu.com/isware/services/trackbacks/149807.html阅读全文

艾斯l亚 2011-06-30 11:19 发表评论
]]>
[转]Windows道技?/title><link>http://www.shnenglu.com/isware/archive/2011/06/30/149798.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Thu, 30 Jun 2011 01:52:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/06/30/149798.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/149798.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/06/30/149798.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/149798.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/149798.html</trackback:ping><description><![CDATA[     摘要: Windows道技术简q?nbsp; <a href='http://www.shnenglu.com/isware/archive/2011/06/30/149798.html'>阅读全文</a><img src ="http://www.shnenglu.com/isware/aggbug/149798.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-06-30 09:52 <a href="http://www.shnenglu.com/isware/archive/2011/06/30/149798.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>A Description of the C++ typename keywordhttp://www.shnenglu.com/isware/archive/2011/06/28/149665.html艾斯l亚艾斯l亚Tue, 28 Jun 2011 09:17:00 GMThttp://www.shnenglu.com/isware/archive/2011/06/28/149665.html阅读全文

艾斯l亚 2011-06-28 17:17 发表评论
]]>
pipe、epollȝ及实?/title><link>http://www.shnenglu.com/isware/archive/2011/06/11/148498.html</link><dc:creator>艾斯l亚</dc:creator><author>艾斯l亚</author><pubDate>Sat, 11 Jun 2011 09:24:00 GMT</pubDate><guid>http://www.shnenglu.com/isware/archive/2011/06/11/148498.html</guid><wfw:comment>http://www.shnenglu.com/isware/comments/148498.html</wfw:comment><comments>http://www.shnenglu.com/isware/archive/2011/06/11/148498.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.shnenglu.com/isware/comments/commentRss/148498.html</wfw:commentRss><trackback:ping>http://www.shnenglu.com/isware/services/trackbacks/148498.html</trackback:ping><description><![CDATA[<div>1、pipe的关闭消息会被对端的epoll_wait捕获Q但数据长度?Q可据此判断为pipe关闭消息?br />2、epoll_waitq回的events中,当用户在epoll_ctl时设|了data.ptrQ则不返回data.fdQ用户只能用data.ptrQ因此自定义的结构中处理用户数据信息外,需要包含对应连接的socket描述WfdQ否则无法收发数据?br /><br />代码Q?br />#include <sys/types.h><br />#include <unistd.h><br />#include <stdio.h><br />#include <stdlib.h><br /><br />#include <sys/epoll.h><br /><br />#include <sys/socket.h><br />#include <arpa/inet.h> // htons<br />#include <string.h> // bzero<br />//#include <fcntl.h><br /><br />int main(int argc, char* argv[])<br />{<br />    pid_t child;<br />    int pipefd[2];<br />    int e_fd = epoll_create(10);<br />    if (-1 == e_fd)<br />    {<br />        perror("epoll_create");<br />        exit(1);<br />    }    <br /><br />    pipe(pipefd);<br />    printf("fd0: %d, fd1: %d \n",pipefd[0], pipefd[1]);<br /><br />    if ((child = fork()) == -1)<br />    {<br />        perror("fork");<br />        close(e_fd);<br />        exit(1);<br />    }<br /><br />    if (child == 0)<br />    {<br />        close(pipefd[0]);<br />        sleep(1);<br />        write(pipefd[1],"a", 1);    <br />        sleep(2);<br />        write(pipefd[1],"b",1);<br />        sleep(3);<br />        close(pipefd[1]);<br />        // socket<br />        {<br />            int fd, status;<br />            struct sockaddr_in remote;<br />            remote.sin_family = AF_INET;<br />            remote.sin_port = htons(5930);<br />            remote.sin_addr.s_addr = inet_addr("192.168.1.213");<br /><br />            fd = socket(AF_INET, SOCK_STREAM, 0);<br /><br />            sleep(3);<br />            status = connect(fd, (struct sockaddr*)&remote, sizeof(struct sockaddr));<br />            if (status == -1)<br />            {<br />                perror("connect");<br />                close(fd);<br />                exit(1);<br />            }<br /><br />            sleep(2);<br />            if (send(fd, "hello", 5, 0) == -1)<br />            {<br />                perror("send");<br />            }<br />            close(fd);<br />        }    <br />        <br />    }<br />    else <br />    {<br />        struct epoll_event evs[10];<br />        struct epoll_event ev;<br />        struct P_ATR{<br />            int fd;<br />        } pipe_atr;<br /><br />        int nds = 0, i;<br />        close(pipefd[1]);<br />        pipe_atr.fd = pipefd[0];<br />        <br />        ev.data.fd = pipefd[0];<br />        //ev.data.ptr = &pipe_atr; // 不传入data.ptr<br />        ev.events = EPOLLIN;<br />        epoll_ctl(e_fd, EPOLL_CTL_ADD, pipefd[0], &ev);<br /><br />        //sleep(5);<br />        nds = epoll_wait(e_fd, evs, 10, -1);<br />        <br />        printf("epoll_wait ret %d\n", nds);<br />        <br />        for (i = 0; i < nds; i++)<br />        {<br />            int fd;<br />            printf("evs[%d].data.fd: %d, ", i, fd = evs[i].data.fd); // 我们在上面没有传入data.ptrQ此时系l会q回data.fd<br />            // printf("event fd: %d\n", fd = ((struct P_ATR*)(evs[i].data.ptr))->fd);<br />            if ( fd == pipefd[0])<br />            {<br />                char readbuf[80];<br />                int readbytes = read(pipefd[0], readbuf, 1);<br />                readbuf[readbytes] = 0;<br />                printf ("pipe event catch, recvdata = %s, size = %d\n", readbuf, readbytes);<br />            }<br />        }<br />        <br />        ev.events = EPOLLIN;<br />        epoll_ctl(e_fd, EPOLL_CTL_MOD, pipefd[0], &ev);<br />        nds = epoll_wait(e_fd, evs, 10, -1);<br /><br />        printf("epoll_wait ret %d\n", nds);<br /><br />        for (i = 0; i < nds; i++)<br />        {<br />            int fd;<br />            printf("evs[%d].data.fd: %d, ", i, fd = evs[i].data.fd);<br />            // printf("event fd: %d\n", fd = ((struct P_ATR*)(evs[i].data.ptr))->fd);<br />            if ( fd == pipefd[0])<br />            {<br />                char readbuf[80];<br />                int readbytes = read(pipefd[0], readbuf, 1);<br />                readbuf[readbytes] = 0;<br />                printf ("pipe event catch, recvdata = %s, size = %d\n", readbuf, readbytes);<br />            }<br />        }<br /> <br />        epoll_ctl(e_fd, EPOLL_CTL_MOD, pipefd[0], &ev);<br />        nds = epoll_wait(e_fd, evs, 10, -1);<br /><br />        printf("epoll_wait ret %d\n", nds);<br /><br />        for (i = 0; i < nds; i++)<br />        {<br />            int fd;<br />            printf("evs[%d].data.fd: %d, ", i, fd = evs[i].data.fd);<br />            // printf("event fd: %d\n", fd = ((struct P_ATR*)(evs[i].data.ptr))->fd);<br />            if ( fd == pipefd[0])<br />            {<br />                char readbuf[80];<br />                int readbytes = read(pipefd[0], readbuf, 1);<br />                readbuf[readbytes] = 0;<br />                printf ("pipe event catch, recvdata = %s, size = %d\n", readbuf, readbytes);<br />            }<br />        }<br />        close(pipefd[0]);<br /><br />        // socket<br />        {<br />            struct sockaddr_in addr;<br />            struct sockaddr_in remote;<br />            int newfd;<br /><br />            int sockfd = socket(AF_INET, SOCK_STREAM, 0);<br />            if (-1 == sockfd)<br />            {<br />                perror("socket");<br />                exit(0);<br />            }        <br /><br />            printf("new socket fd: %d\n", sockfd);<br />            addr.sin_family = AF_INET;<br />            addr.sin_port = htons(5930);<br />            addr.sin_addr.s_addr = INADDR_ANY;<br /><br />            bzero(&addr.sin_zero, 8);<br /><br />            if (bind(sockfd, (struct sockaddr*)&addr, sizeof(struct sockaddr)) == -1)    <br />            {<br />                perror("bind");<br />                close(sockfd);<br />                exit(1);<br />            }        <br />            <br />            pipe_atr.fd = sockfd;<br />            ev.data.fd = sockfd;<br />            ev.data.ptr = &pipe_atr; // 传入data.ptr<br />            ev.events = EPOLLIN;<br />            epoll_ctl(e_fd, EPOLL_CTL_ADD, sockfd, &ev);<br /><br />            if (listen(sockfd, 5) == -1) <br />            {<br />                    perror("listen");<br />                exit(1);<br />            }<br /><br />            nds = epoll_wait(e_fd, evs, 10, -1);<br />            printf("epoll_wait ret %d\n", nds);<br />            <br />            for (i = 0; i < nds; i++)<br />            {<br />                int fd;<br />                socklen_t len;<br />                int inds;<br />                printf("evs[%d].data.fd: %d, ", i, evs[i].data.fd); // pȝ不会回填data.fdQ其值是随机数字<br />                printf("event fd: %d\n", fd = ((struct P_ATR*)(evs[i].data.ptr))->fd); // pȝq回用户传入的data.ptr<br />                if ( fd == sockfd)<br />                {<br />                    len = sizeof (struct sockaddr);<br />                    newfd = accept(sockfd, (struct sockaddr*)&remote, &len);<br />                    if (-1 == newfd)<br />                    {<br />                        perror("accept");<br />                        close(sockfd);<br />                        exit(1);<br />                    }<br />                    <br />                    printf("new link create success, fd: %d\n", newfd);<br /><br />                    struct P_ATR new_atr;<br />                    new_atr.fd = newfd;<br />                    ev.data.fd = newfd;<br />                    ev.data.ptr = &new_atr;<br />                    ev.events = EPOLLIN;<br />                    epoll_ctl(e_fd, EPOLL_CTL_ADD, newfd, &ev);<br /><br />                    inds = epoll_wait(e_fd, evs, 10, -1);<br />                    printf("epoll_wait ret %d\n", inds);<br />                    <br />                    for (i = 0; i < inds; i++)<br />                    {    <br />                        int fd;<br />                        printf("evs[%d].data.fd: %d, ", i, evs[i].data.fd);<br />                        printf("event fd: %d\n", fd = ((struct P_ATR*)(evs[i].data.ptr))->fd);<br />                        if ( fd == newfd)<br />                        {<br />                            char readbuf[80];<br />                            int readbytes = read(fd, readbuf, sizeof(readbuf));<br />                            readbuf[readbytes] = 0;<br />                            printf ("pipe event catch, dataptr = %p, recvdata = %s, size = %d\n", evs[i].data.ptr, readbuf, readbytes);<br />                        }<br />                    }<br />                    close(newfd);<br />                    close(sockfd);                    <br />                }<br />            }            <br />        }    <br />    }<br /><br />    close(e_fd);<br />    return 0;<br /><br />}</div><img src ="http://www.shnenglu.com/isware/aggbug/148498.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.shnenglu.com/isware/" target="_blank">艾斯l亚</a> 2011-06-11 17:24 <a href="http://www.shnenglu.com/isware/archive/2011/06/11/148498.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[转]如果我有旉Q我会写更短的代码(王健)http://www.shnenglu.com/isware/archive/2011/06/07/148233.html艾斯l亚艾斯l亚Tue, 07 Jun 2011 14:04:00 GMThttp://www.shnenglu.com/isware/archive/2011/06/07/148233.htmlhttp://www.shnenglu.com/isware/comments/148233.htmlhttp://www.shnenglu.com/isware/archive/2011/06/07/148233.html#Feedback0http://www.shnenglu.com/isware/comments/commentRss/148233.htmlhttp://www.shnenglu.com/isware/services/trackbacks/148233.html

eBay的代码量已经比Windows+Linux更多了。从我看来,q绝不是一U恭l_而是d底底的技术h员的p|。从代码的角度,短的代码,p有力量?/p>

Mark Twin曄在给一个朋友的信中说道Q?br />

我亲q朋友Q如果我有更多的旉Q?我就能给你写更短的信了?/blockquote>文字是这P代码更是q样?

有了面向对象的方式和一些简单的设计模式加一些重构,代码可以变得非常的简单,明了Q易读,却依然保持灵zd强大。在癑֧|,我们曄?000?代码重构?50行(q你朝歌Q,然后又把另外几千行代码重构ؓ250行(q你荆州Q。我觉得250行代码是一个神奇的数量Q很多的功能模块Q就用 PHPq样q不是完全面向对象的语言Q也应该控制?50行之内。我个h的编E习惯和目标是,把每个函数控制在7行代码之内,把函数的数量控制到最,?最短的代码完成功能。我个h用的化代码最有效的方式,是写一D代码,d删掉Q重写,然后再删掉。在如此十几遍之后所得到的代码,通常比第一ơ要好得 多?/p>

代码量的增加Q对于我们来说不是g好事。我们用拉锯战的方式在功能增加的同时Q把代码量牢牢地卡在原地Qƈ且不断减。我们希望有一天,|站q营的PHP代码会被压羃?000行之内?/div>
像对于代码的数量的q求一P我们q求代码的质量,我们q求最实用的解x案(我们是彻d底的实用M者,希望用最的代h解决问题Q,我们也追求网站的速度Q内容的质量。。。技术h员,应该有些技术h员的样子。毕竟,无论做什么,都要有些q求的。。?/div>

艾斯l亚 2011-06-07 22:04 发表评论
]]> þþƷѴƬƬ| 뾫Ʒþþþ..| þùƷһ| þAVӰ| Ļþ2020| Ʒ99þѹۿ| ˾þ91| һaɫƬþ| þ˽˹Ʒ| 99ȶǾƷþþþþ| þĻ| þùƷþþƷ| þҹɫ˾Ʒ| þˬˬ| һɫþۺϺݺƪ | þw5www| ձһþ | ձŷþþþѲ| ޹Ʒ˾þ| ޾Ʒһþþ| ձƬҹþ| AVվþþƷ| һþaþþƷۺҹҹ | þþþһƷ| 鶹Ʒþһ| þþþav | vaþþþ| þþþùɫAVѹۿ| պƷþþþþ| ҹѸþӰԺ| 99þùƷһ| ձþþþþþþþ| Ʒŷһþþ| ۺϾþϵ| ŷ糱þþXXXXx| ˾ƷۺϾþþþ| þҹ1000ϼ| Ů˸߳þþýˮ| þþAVҰ| 㽶þۺӰ | þþƷĻþ|