新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版用于讨论编程和软件设计的技巧
    [返回] 中文XML论坛 - 专业的XML技术讨论区计算机技术与应用『 编程心得 』 → (第四期获奖名单公布,最新4节的电子版pdf已开放下载)  预览电子版,写书评,赢取《编程之美—微软技术面试心得》(微软亚洲研究院邹欣等主编),每周送出3本,机会多多!,欢迎参加由博文视点和本站联合举办的有奖征集书评活动 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 394557 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: (第四期获奖名单公布,最新4节的电子版pdf已开放下载)  预览电子版,写书评,赢取《编程之美—微软技术面试心得》(微软亚洲研究院邹欣等主编),每周送出3本,机会多多!,欢迎参加由博文视点和本站联合举办的有奖征集书评活动 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 编程心得 』 的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客61
    发贴心情 

    以下是引用gvtbs在2008-4-28 23:00:00的发言:
    开什么国际玩笑 conan_holmes 和 jason_00 写的有什么好的,我就认为我写的比他们的要好的多为什么没有中奖不公平啊


    重在参与!admin不是说以抽奖方式来发放奖品吗,同时还允许多次发贴,说不定你也能抽中哦

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 8:52:00
     
     gvtbs 帅哥哟,离线,有人找我吗?狮子座1987-8-8
      
      
      等级:大一新生
      文章:4
      积分:87
      门派:XML.ORG.CN
      注册:2007/11/16

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给gvtbs发送一个短消息 把gvtbs加入好友 查看gvtbs的个人资料 搜索gvtbs在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看gvtbs的博客62
    发贴心情 
    说说怎么个抽奖法,按什么抽的,我看是版主选谁就是谁了吧!
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 10:31:00
     
     admin 帅哥哟,离线,有人找我吗?
      
      
      
      威望:9
      头衔:W3China站长
      等级:计算机硕士学位(管理员)
      文章:5255
      积分:18406
      门派:W3CHINA.ORG
      注册:2003/10/5

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给admin发送一个短消息 把admin加入好友 查看admin的个人资料 搜索admin在『 编程心得 』 的所有贴子 点击这里发送电邮给admin  访问admin的主页 引用回复这个贴子 回复这个贴子 查看admin的博客63
    发贴心情 
    以下是引用gvtbs在2008-4-29 10:31:00的发言:
    说说怎么个抽奖法,按什么抽的,我看是版主选谁就是谁了吧!

    说明一下,获奖名单是由出版社方面(即本次活动的赞助方)确定的。并非我个人想让谁拿就让谁拿的:-)


    [此贴子已经被作者于2008-4-30 1:15:38编辑过]

    ----------------------------------------------

    -----------------------------------------------

    第十二章第一节《用ROR创建面向资源的服务》
    第十二章第二节《用Restlet创建面向资源的服务》
    第三章《REST式服务有什么不同》
    InfoQ SOA首席编辑胡键评《RESTful Web Services中文版》
    [InfoQ文章]解答有关REST的十点疑惑

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 11:16:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客64
    发贴心情 
    学好数据结构和算法,离散以及组合数学就可以了。这本书我觉得实在没有什么意义。随便一个题目,都可以在我说的这三个方面找到对应。而且不但知道其然也知道其所以然。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 13:39:00
     
     蝶影 美女呀,离线,快来找我吧!狮子座1985-8-1
      
      
      威望:1
      等级:大四(总算啃完XML规范了)
      文章:183
      积分:1291
      门派:IEEE.ORG.CN
      注册:2006/5/10

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给蝶影发送一个短消息 把蝶影加入好友 查看蝶影的个人资料 搜索蝶影在『 编程心得 』 的所有贴子 点击这里发送电邮给蝶影 引用回复这个贴子 回复这个贴子 查看蝶影的博客65
    发贴心情 
    我是从连连看这个游戏开始看的,原因是我一直都很喜欢玩连连看,每次玩的时候都会在想究竟这个游戏是怎么实现出来的,看了这本书,我得到了一个比较完整的解答。
          平时学习各种各样的算法,然而却总是不知道什么时候该用什么,一点透了,又恍然大悟。我觉得这本书在这方面,给了大家很好的启发。我想,把平时学习的东西通过通俗的例子说明它的应用,是这本书最精妙的地方,就好像学画画一样,并不是只知道线条的画法和颜色的调配就能画出好画,更重要的是线条和颜色的搭配,同样地,编程并不是课本上的基础知识练就的,更重要的是知道在什么情况下,该用在哪里,这些是需要不断思考,练习和积累的。我想,通过这本书给的例子以及基本的解答,读到的不仅是编程的精妙之处,还有对编程的理解,学习和积累。
          感谢作者带来这样一本好书!

    ----------------------------------------------
    不许偷懒~!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 17:59:00
     
     Pthinker 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:1
      积分:54
      门派:XML.ORG.CN
      注册:2008/4/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Pthinker发送一个短消息 把Pthinker加入好友 查看Pthinker的个人资料 搜索Pthinker在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看Pthinker的博客66
    发贴心情 
    这本书不错,很实用
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 20:36:00
     
     tomcatwilson 帅哥哟,离线,有人找我吗?天秤座1982-10-8
      
      
      等级:大一新生
      文章:5
      积分:91
      门派:IEEE.ORG.CN
      注册:2008/4/29

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给tomcatwilson发送一个短消息 把tomcatwilson加入好友 查看tomcatwilson的个人资料 搜索tomcatwilson在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看tomcatwilson的博客67
    发贴心情 
    我目前的研究方向是系统软件,以及编译器优化技术,对算法一向是不怎么感冒的,因为导师一直对google招人的笔试方式很不以为然,慢慢的随着自己在实验室做研究经验的积累,慢慢的已经开始有点认同他的看法了。算法虽然优美,但是也不能走极端,为了优美而优美,忽视了底层系统软件和体系结构的支持是不可取的。不过我对编程之美中的各种有意思的算法题目还是很感兴趣的,至少在闲暇之余拿来把玩一下,对于锻炼自己的思维能力还是很有好处的。

    比较同意前面zellux的一种看法:衡量一个算法实际效果不单要看复杂度,还要结合其他情况具体分析。尤其是当我看到求二进制中1的个数解法四,查表法复杂度O(1)的时候简直要吐血。这难道是算法追求的终极之美?不敢苟同。其实CMU还有一门经典的课程简称ICS,Introduction to Computer System--in programmer's perspective,(zellux提供的一个位算法可以从ICS的Lab作业中找到影子)如果把这本书作为一顿美餐的原材料,那么Introduction to Algorithms就是将这些原材料做成美味大餐的配方,如果再加上《编程之美》中题目作为调味剂,一个六星级程序大厨就这么诞生了,管他MS还是Intel,IBM,Google都可以游刃有余的。

    其实我一直都想找这么一本以实例为基础的算法书作为自己的调味剂,而偶遇编程之美恰恰给了我这个机会,不过对待书中的一些为了追求唯美算法而没有考虑系统的地方还是颇有微词的。比方说求10进制1的数目这个题目,一扎眼就发现google曾将它作为的一道面试题(孰先孰后这里不再论证)原题目如下:
    Consider a function which, for a given whole number n, returns the number of ones required when writing out all numbers between 0 and n. For example, f(13)=6. Notice that f(1)=1. What is the next largest n such that f(n)=n?
    以下是一个目前发现的最高效的算法,虽然比很多算法看起来要长许多,但是它不止是得到199981,它把4000000000内的所有都遍历出来了。而且速度还只是几十毫秒,或者更快。书中的第一问的算法2,里面用到了switch,这个在系统编程里面是很忌讳的,因为他要查跳转表,这个东西是要访存两次的。访存的开销是很大的。目前针对JVM中的interpreter的很多优化就是想办法把解释器中的庞大的一个switch想办法替换成更为有效的方式,所以很多人提出了改变class文件的bytecode的编码方式,由基于栈的转成基于寄存器的。
    本题目中用到的case数目不是很多所以感觉上差距不会很大,但是这里我只想说明,算法再怎么高级也要考虑到系统和体系结构方面的东西,否则就有可能是空中楼阁,海市蜃楼。
    建议就是希望书再版的话,多加入一些系统方面的探讨。胡言乱语了一番,希望不要被bs....
       1. #include "stdafx.h"  
       2.   
       3. #include <windows.h>  
       4. #include <stdlib.h>  
       5.   
       6. int f(int n);  
       7. int count1(int n);  
       8. int cal(unsigned int number,int nwei,int count1,unsigned int ncount);  
       9.   
      10. int gTable[10];  
      11. const unsigned int gMAX = 4000000000L;  
      12.   
      13. int main(int argc, char* argv[])  
      14. {  
      15.   int i;  
      16.   unsigned int n=1;  
      17.   unsigned int ncount = 0;  
      18.   int nwei = 0;  
      19.   int ncount1;  
      20.   
      21.   /*if(argc>1)
      22.   {
      23.     n = atoi(argv[1]);
      24.     ncount = f(n);
      25.     printf("f(%d) = %d\n",n,ncount);
      26.   }*/  
      27.   
      28.   int beginTime=GetTickCount();  
      29.   //init gTable  
      30.   for(i=0;i<10;++i)  
      31.   {  
      32.     n *= 10;  
      33.     gTable[i] = f(n-1);  
      34.   }  
      35.   
      36.   n=0;  
      37.   nwei = 0;  
      38.   ncount1 = 0;  
      39.   while(n<gMAX)  
      40.   {  
      41.     unsigned int temp;  
      42.       
      43.     temp = 1;  
      44.      
      45.     ncount =cal(n,nwei,ncount1,ncount);  
      46.     for(i=0;i<nwei;++i)  
      47.       temp *= 10;  
      48.     n += temp;  
      49.     if( (n/temp)/10 == 1)  
      50.       ++nwei;  
      51.     ncount1 = count1(n);  
      52.   }  
      53.   
      54.   int endTime=GetTickCount();  
      55.   endTime-=beginTime;  
      56.   
      57.   printf("time: %d ms\n",endTime);  
      58. return 0;  
      59. }  
      60.   
      61. int f(int n)  
      62. {  
      63.   int ret = 0;  
      64.   int ntemp=n;  
      65.   int ntemp2=1;  
      66.   int i=1;  
      67.   while(ntemp)  
      68.   {  
      69.     ret += (((ntemp-1)/10)+1) * i;  
      70.     if( (ntemp%10) == 1 )  
      71.     {  
      72.       ret -= i;  
      73.       ret += ntemp2;  
      74.     }  
      75.     ntemp = ntemp/10;  
      76.     i*=10;  
      77.     ntemp2 = n%i+1;  
      78.   }  
      79.   return ret;  
      80. }  
      81.   
      82. int count1(int n)  
      83. {  
      84.   int count = 0;  
      85.   while(n)  
      86.   {  
      87.     if( (n%10) == 1)  
      88.       ++count;  
      89.     n /= 10;  
      90.   }  
      91.   return count;  
      92. }  
      93.   
      94. int cal(unsigned int number,int nwei,int count1,unsigned int ncount)  
      95. {  
      96.   int i,n=1;  
      97.   unsigned int maxcount;  
      98.   if(nwei==0)  
      99.   {  
    100.     ncount += count1;  
    101.     if(number == ncount)  
    102.     {  
    103.       printf("f(%d) = %d \n",number,number);  
    104.     }  
    105.     return ncount;  
    106.   }  
    107.   for(i=0;i<nwei;++i)  
    108.     n *= 10;  
    109.   maxcount = ncount + gTable[nwei-1];  
    110.   maxcount += count1*n;  
    111.   if(ncount > (number +  (n-1)) )  
    112.   {  
    113.    return maxcount;  
    114.   }  
    115.   if(maxcount < number)  
    116.   {  
    117.     return maxcount;  
    118.   }  
    119.   n /= 10;  
    120.   for(i=0;i<10;++i)  
    121.   {  
    122.     if(i==1)  
    123.        ncount = cal(number+i*n,nwei-1,count1+1,ncount);  
    124.     else  
    125.        ncount = cal(number+i*n,nwei-1,count1,ncount);  
    126.   }  
    127.     return ncount;  
    128. }

    ----------------------------------------------
    有啥想不通的,一想在中国就通了。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 22:03:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客68
    发贴心情 
    以下是引用admin在2008-4-29 11:16:00的发言:
    [quote]以下是引用gvtbs在2008-4-29 10:31:00的发言:
    说说怎么个抽奖法,按什么抽的,我看是版主选谁就是谁了吧!
    [/quote]

    说明一下,获奖名单是由本次活动的赞助方电子工业出版社博文视点决定的。并非我个人想让谁拿就让谁拿的:-)


    看来我的置疑是无法被选中了

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 22:37:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客69
    发贴心情 
    to tomcatwilson
    我觉得你说的很有道理。
    我也是觉得这本书有很大的问题。
    我还是觉得要具体问题具体分析。
    要看应用环境。
    就拿计算有多少个1那道题。
    还是要看时间和空间的平衡。
    空间换时间这种思想,最经典的应该是散列了。这本书还是可以说一下,这个思想的应用的环境,比如linux的shell命令注册(如果我没记错的话)。
    总之,不能单纯追求算法的美妙。
    不过,确实这本书的算法也都是比较经典的。
    但是,感觉在夸这本书的人都没有仔细看过什么算法书。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 22:45:00
     
     冬天的农夫 帅哥哟,离线,有人找我吗?
      
      
      等级:大三(面向对象是个好东东!)
      文章:85
      积分:606
      门派:XML.ORG.CN
      注册:2006/7/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给冬天的农夫发送一个短消息 把冬天的农夫加入好友 查看冬天的农夫的个人资料 搜索冬天的农夫在『 编程心得 』 的所有贴子 引用回复这个贴子 回复这个贴子 查看冬天的农夫的博客70
    发贴心情 
    以下是引用alex_le在2008-4-25 19:58:00的发言:
    《不要被阶乘吓倒》书评:
         虽是在讲数学理论,但语言给人感觉挺实在的。
         以一个问题开篇,从一开始便给了我探究问题的好奇,同时使我在读这章时有很强的目的性。问题如何解决?书中的方法是否跟自己所想的一样?...等等的疑问都能使我在读的时候集中注意力。不得不承认书中的方法很有创意。但是相关题目似乎跟阶乘关系不大嘛,还有很想知道作者在解决这些问题的时候是怎么一步步来寻找到答案的

    这个方法哪里有什么创意。。。

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2008/4/29 22:47:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 编程心得 』 的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/28 16:57:49

    本主题贴数107,分页:[1] ... [4] [5] [6] [7] [8] [9] [10]... [11]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    125.000ms