强烈推荐十本好书

2014年11月10日 发表评论 阅读评论 4,149 人阅读    

上周三(2014年11月5日)公司搞入职培训,所讲的一些东西和我关注的东西有点“不谋而合”,感觉很爽;周四蔡导(当然就是讲师了)把讲座的PPT群发到技术部邮件组里,参与讨论时,我就询问想推荐一些书,看大家感不感兴趣,结果不少人回应很“激烈”。到周五(2014年11月7日)在公司技术群里求推荐好书,又掀起来一波热潮。大家推荐了不少好书。中国向来是礼仪之邦,正所谓来而不往非礼也!D瓜哥也来推荐一些书。

上面是废话,下面开始转入正题。

推荐原则

从去年找工作,甚至再往前,从上大学开始,到现在为止,翻过不少书(好多没看完,姑且叫翻吧),运气还算不错,确实遇到一些不错的好书,值得反复阅读,细细品味。不过,一次太多,容易把人吓着,所以,暂且推荐十本吧。

另外,这次的介绍主要是面向公司内部同事,考虑到公司所用技术方向,也为了照顾大多数人,推荐的书籍大部分不限于某一语言。不过,因为本人几乎一直从事Java开发,所以,相对来说可能稍微侧重一些;另外,因为从来没有从事过PHP的开发(为了优化博客,折腾Wordpress不算),所以不推荐专门的PHP相关书籍。

最后一个,也是最重要的原则:D瓜哥看过、试过之后有一种“醍醐灌顶”的“顿悟”感。(当然,D瓜哥水平有限,所以“顿悟”的可能比较频繁。这个,牛人、大拿可以直接飞过去了。呵呵)

一、《大话设计模式 》

先说明一下,这本书的代码是用C#实现的,搞C#的人可以先高兴一下。

不过,代码都很浅显易懂,可以很方便地“迁移”到其他语言了。所有的技术人员都可以高兴一下了。哈哈

引用本书中的一句话:如果说数学是思维的体操,那么设计模式就是面向对象思想的体操。学面向对象编程,必学设计模式。给大家说说D瓜哥的经历。

从2007年上大学,开始选Java编程,当时被“面向对象编程”折腾得痛哭无泪,同时还感觉,这是什么狗P东西,简直还不如鸡肋。整好也是在这年的12月(我能说我刚刚查的豆瓣吗?),这本书出版了,忘了怎么知道这本书了,在2008年,就买了一本,看第一章“曹操的‘喝酒唱歌,人生真爽’”(借一本看看或者找个电子版看一下就知道了)就被吸引了。如果你认为我当时看懂了,那不好意思,我只看懂了第一章,因为在看第二章的时候,实在没看懂,卡壳了。后来,放暑假,我回家干了几天农活,在干活休息期间,重新开始看这本书,直接跳过第二章往后看,然后就非常顺畅地读下去了,让我一下子懂了“面向对象思想”,懂了为什么要封装、继承、多态。另外,本书中“附录”中的“面向对象入门”中将的“徒弟师傅”的例子也非常有趣、而且浅显易懂。

后来,我记得还买了一本送给了我的老师。

可惜的是,书里面的内容是看懂了。还不能活学活用,可见D瓜哥的水平实在是有限。

相关的书,也推荐一下:

  1. 《Head First 设计模式 》–这本书里的代码是用Java实现的,为了实现相关模式,也将了一些Java特有的一些东西,两本买来,可以参考着看,更有益于理解。
  2. 《设计模式解析 》–这本书也是在大学的时候看的,还做了很多笔记,可惜笔记现在找不到了。这里,要感谢一下河南农业大学,因为书是从这里的图书馆借出来的。还有,必须吐槽一下,第一本让我感觉翻译的很烂的一本书(我看的是2006年版,不知道2010版有没有改进)。可惜了一本好书。

二、《高性能MySQL 》

这本书是去年七月份上市的。我看第二版在豆瓣上的评分是8.7分,感觉应该不错。然后,就在亚马逊上预订了一本,记得貌似是99元。握了棵草,没过多久,降价到七八十,又被亚马逊给坑了!

拿到书之后,翻了翻,从目录来看,感觉内容应该不错。一看,喔艹,大呼过瘾!!

这本书彻底改变了我对MySQL的整体印象,没想到一个小巧易用的数据库背后隐藏着这么深的水。另外,这本书还让我重新认识了查询与索引的关系!原来只知道建索引能加快查询速度,但知其然却不知其所以然,不知道为什么能加快速度。而,这本书,不仅仅给出了答案,而且回答的更为全面,还给出来怎么搞才能更高效。

由于我不是搞MySQL DBA,所以,没有全部看完,重点看了前六章,尤其是四、五、六章。即使如此,也让D瓜哥顺利回答了面试中遇到的和数据库相关(尤其是MySQL)的90%的面试题。单单数据库,扯半个小时没任何问题。(好多问题还需要讨论,从侧面也反应D瓜哥学艺不精啊)

强烈推荐给所有需要写SQL语句和数据库表建模的童鞋!

这里给大家留一个思考题:如有表t(id, a, b, c),查询条件中有ab。请问怎么建索引更高效?为什?

相关书籍推荐:

  1. 《MySQL技术内幕 》–本书是国人网易研究院技术经理写的,也非常好。(D瓜哥也是只看了其中的一些章节)

三、《Ruby元编程 》

在大学期间,D瓜哥一直沉迷于语言之间的圣战,就好比编辑器用VIM好,还是Emace好;操作系统是Windows强还是Linux牛叉。D瓜哥也一直认为Java相比.NET更胜一筹。但是,去年(2013年),D瓜哥以一个开放的心态看其他语言是,才惊奇地发现,原来Java并不像我想象的那么完美。给D瓜哥这种感觉的正是这本书:《Ruby元编程》。

《Ruby元编程》并不是Ruby的入门教程。由于有Java语言的功底,里面的内容还是能看懂一些的。这本书主要介绍Ruby中的黑魔法,绝对给人一种非常惊喜的陌生,握了棵草,编程还能这样玩啊,尼玛,这是编程吗?分明是魔法!!

废话不多,举例为证:对于一个Java类假如有10个属性,再加上20个Setter和Getter方法,大概需要七十行代码。你知道Ruby实现同样的功能,需要多少行代码吗?一行代码,一个关键字(好吧,这是我最初的看法,实际上它是一个拟态方法)。牛逼吧?

当D瓜哥看完这本书,再去看Java,两者比较,才发现原来自己的看法都是坐井观天。而Ruby,尤其是Rails中的最佳实践,让D瓜哥再去做开发时,更加胸有成竹。

在这里,向Ruby之父松本行弘先生致以最崇高的经意!

四、《高性能网站建设指南 》

如果说上面的三本书都是自己没事,当做乐子来读的话,那么这本书最初只是为了把工作做好来读的一个参考书。有句话不是说的很好吗?也许无意间你就发现了一本好书,那么这本书就符合这个无意间。

D瓜哥第一家公司是面向移动、联通和电信的电信BSS/OSS服务商,我所在部门负责研发的系统是为中国移动服务的,而且是内部使用的系统,再加上中国移动就不差钱服务器都是杠杠的。所以,系统开发初期,别没有一个很好的规划和设计。当D瓜哥参与后,已经是项目第二期了。项目第二期,在前台展示方面有一个比较大的改动,一次加载内容太多,再加上移动本身的数据量比较大,即使使用Oracle数据库,整个页面加载还是非常慢。所以,考虑服务端没法做大的改动,而且前台页面也在也存在诸多的问题。所以,部门在2012年年中搞了一个前端性能优化。说实话,当时没有搞过这些东西,没有任何的以往经验可以借鉴。所以,只能自己查资料。后来,就查到了这本书,书中提到了十四条前端性能优化法则(请参考:“高性能网站的十四条黄金法则”),非常简单可行。而且,效果显著。

这本书,让我跳出了作为一个开发者的局限性,从一个懂技术的用户的角度去审视整个项目,正所谓“当局者迷,旁观者清”,这时你在去看待开发,看到项目运行中,所涉及到的前端、网络、Java、虚拟机以及数据库时,你会突然发现,原来大学中国年所学的知识是如此自成体系,是如此的浑然天成,那种感觉真的有一种“山穷水尽疑无路,柳暗花明又一村”的惊喜与顿悟!

还需要在说一句,这本书D瓜哥买的时候,中文版已经不再出版了,幸好还有英文影印版。果断买了一本:《高性能网站 》。对于一个英语四级都没有过的人来说,看纯英文的资料,简直难比登天,看几页就头皮发麻,但是又没有中文版,只能硬啃,当时还在内蒙古呼和浩特出差,中午同事小乔午休,我趴在窗边的桌子上啃书,150页的书,花了一个月才啃下来。后来,收获还还是蛮大的,最起码从此再也不畏惧英语了,看到纯英文资料再也不害怕了。我想这是我除技术方面收获之外,最大的收获,这是这个收获给我打开了一个更广阔的信息获取渠道。

前两天和同事聊天说,同事说“有一种打通任督二脉的感觉”。D瓜哥说,正是这本书,打通了我技术方面的任督二脉,功力没有增长多少,但是它让我看清楚了整个技术的体系和格局,对我以后的努力有非常大的指导意义。

五、《编码 》

这本书是D瓜哥在豆瓣上淘旧书时,无意间发现的一本书,不知道讲的是什么,看评分挺高,就果断买入了。买来一看,绝对的好书!

这本书从最基本的一个电灯泡的线路开始,通过SOS信号灯、摩尔斯电报码、盲文码等例子,非常浅显易懂地解释了计算机编码以及CPU的工作原理。记得看别人的书说,看这本书,你可以自己制作一个CPU。因为D瓜哥也没有读完,所以,对于这句话就不做评价了,不过,各位童鞋可以试一试。

另外,D瓜哥觉得,用非常浅显易懂地例子将计算机中复杂原理介绍地清清楚楚的,此书堪称第一!

六、《大型网站系统与Java中间件开发实践 》

这本书是今年四月份刚刚出版的,作者是现在的淘宝技术总监曾宪杰(花名:华黎),D瓜哥是从Mac君的微信公众帐号上看的,然后果断购入。买来之后,看着大呼过瘾!呵呵

托尔斯泰在《安娜·卡列尼娜》中写到“幸福的家庭都是相似的,不幸的家庭各有各的不幸”。通过看这本书,再加上D瓜哥的猜测(明显没经历过,同时也再次说明D瓜哥水平有限),各个大型网站的业务各不同,但是发展到一点阶段,所遇的问题却很相似,那么解决方法估计也是大同小异。所以,现在说淘宝是一个大型网站,估计很少有人有什么异议。那么,淘宝在发展过程中遇到了什么问题呢?对于这些问题,他们是怎么解决的?对于这些解决方案,其他大型网站有没有可以参考的价值呢?华黎在书中给出了淘宝的解决方案。在我们没有机会参与到一件事情时,能从所经历过的那些人中学到一些经验,那么对应我们以后解决相似的问题也有非常好的参考意义。

另外,善意地提醒一句,虽然书名中带着“Java”的字眼,但是全书没有几行Java代码;再另外,虽然书名中有“实践”的字眼,可能在淘宝在发展过程中确实实践过,但是全书主要是讲解一些解决方案以及解决方案背后的原理。非常赞的一本书,强烈推荐!

D瓜哥写给现在的同事:

蔡导在2014年11月5日晚上的讲座中,PPT的“SOA”章节索引用的图片就是阿里巴巴的Dubbo框架的文档中配图。看这本书的“第4章 服务框架”时,配合Dubbo的文档看,也许理解会更深入。

D瓜哥觉得现在现在赶集网也是一个大型网站,作为其中的一名技术人员,我们应该为将赶集网做得更大更好而努力工作,同时也应该看点书,提高自己,为迎接更大的挑战做准备。

D瓜哥敬上

2014-11-09 16:00:15

相关书籍提交:

  1. 《大规模Web服务开发技术 》–D瓜哥正在看,也是非常赞。而且,这本书更加浅显易懂。
  2. 《打造Facebook 》–这本书几乎没有讲技术,只将故事。列到这里,D瓜哥只想借此吹牛逼自己读书多。

七、《松本行弘的程序世界 》

上面向松本行弘致敬,这里再给大家推荐一本他本人大作。

虽然,这本书是松本行弘写的,书中的代码也大多数是Ruby代码,但是这本书不是Ruby的语法书,它只是想用Ruby来表达他想说明的思想。

这本书从一个语言设计者的角度去分析比较不同语言在实现相似功能时的优缺点,对于我们理解我们现在所用的语言有非常大的帮助作用。例如,第二章讲的Java的多重继承。另外,由于日语不同于西欧语言,也是多字符语言,所以,在处理字符乱码的问题上的说明也非常值得我们借鉴。

八、《J2EE设计开发编程指南 》

在写这篇推荐时,D瓜哥在纠结,应该将《松本行弘的程序世界》放前面,还是应该将本书放前面。因为这两本书都很牛逼。后来,决定还是将《松本行弘的程序世界》放到前面,因为那本是讲语言的,更基础,通用性更好,对于我们理解我们所用的语言更有帮助。

你也许没有听说这本书,但是这本书的作者以及作者最知名的作品,相信干挨踢的,尤其是做Java开发的都有耳闻,Spring框架。

这本书也是在豆瓣上淘回来的。刚开始没有怎么看,从去年找工作才开始看,D瓜哥觉得这本书的第四章是全书的总纲,写的特别特别好,建议每一个开发人员,尤其是Java服务端开发人员都应该认真看看。举个例子:上面我们提到了设计模式,那么单例模式有什么优缺点呢?Spring中怎么实现的单例模式?

废话不多,自己看。(D瓜哥会告诉你,除了好,我已经词穷了吗?!)

九、《数学之美 》

上面那些都是死板的技术,虽然技术人员看得热血沸腾,但是非技术人员还不明就里。(估计就是这个原因,早就了码农闷骚的个性。注:D瓜哥不闷骚,D瓜哥只明骚!呵呵)所以,为了照顾非技术人员的胃口,有必要推荐一些有趣的书(估计有人要发牢骚,敢说技术书没趣?举起搬砖的技术汉子们,别激动,把砖放下,听哥把话说完)。

有趣的书很多,但是D瓜哥只推荐看过的。但是,依然有好多,左挑右选,就选了这本。其他的备选书籍,放大了“相关书籍推荐”里,感兴趣的可以往下看。

搞计算机的人,应该都听说过,搞计算机的必须数学好。但是,真正入行的你有木有发现,干活好几年的,几乎没有遇到过数学。莫非那句话说错了?那么这本书就用示例告诉你,这句话非常正确。估计大家都学过“余玄定理”,估计到现在为止都忘了它的具体内容吧。如果我告诉你它会新闻分类扯到一起,你会不会惊讶到把下巴惊掉?D瓜哥估计也也没想到自然语言处理(最贴近生活的一个例子:语音识别,机器翻译等)会和概率论扯到一起吧?对于垃圾邮件,大家都深恶痛绝,但是你有没有想过贝叶斯定理就能很好地解决这个问题呢?(这个例子可能是《黑客与画家》里的例子,记不清了。)如果你有上面这些问题的疑问?那么这本书可以给出答案。

善意提醒:会牵涉到一些数学知识,但是不懂的话,关系也不太大,就当看故事了。

估计有人要说话了,扯了半天,还是扯到技术上了,喔艹,有一种上当的赶脚!

再次重申,技术也可以很有趣,对于那些说IT实在是无聊的人,D瓜哥想用图样图森破回敬他们。空口无凭,这里推荐一些技术相关的书籍,就足以回敬他们:

  1. 《浪潮之巅(套装上下册) 》–和《数学之美》同一个作者,都是吴军博士。这本书讲述了最近几十年,计算机行业发展中,数架公司,站在风口飞起来(估计你想到了雷布斯说的:站在风口,猪都能飞起来。其实,D瓜哥想说,我也想到了),又重重摔到地上的过程。而现在,我们也处在一个计算机发展的浪潮之中,希望我们努力,成为这波浪潮的弄潮儿!
  2. 《思考的乐趣 》–这本书用一种很有趣的角度来介绍数学知识。另外,如果D瓜哥告诉你,这是一个文科生写的书,你是不是想自卑得想自杀啊?!不知道你有么有,反正我是有!
  3. 《爪哇夜未眠——Java程序员的心声(第二版) 》–这本书是台湾同胞蔡学镛写的。技术散文。不多说,下面会引用这本书里面的一句话。
  4. 《Borland传奇 》–这本书把IT故事讲出血雨腥风的武侠感觉。读起来实在有点欲罢不能啊!
  5. 《只是为了好玩 》–用本书的副标题来介绍本书吧:Linux之父林纳斯自传。另外,Linux在书中前言说了,先认真写好前两章,等读者买了,在后面随便扯点东西糊弄一下就OK了。可见,这家伙实在是级有趣的。

十、《程序员的职业素养 》

去年,想审视一下自己,也想看看大牛们有没有什么更好的习惯或者经验值得学习,就买了这本书。说实话,这本书在技术上别没有让我醍醐灌顶的感觉。但是,在一些工作、学习习惯上,却给出了不少好的建议。比如,程序员应该时刻保持一颗好奇的心,并时刻学习新的知识。

建议翻一翻,尤其是刚入行的新手。

还有一些相关书籍,如果让D瓜哥用一句话概括程序员应该处于一种什么样的状态,我会这样说:程序员应该经常处于打半管鸡血的兴奋状态,尤其是对新技术、新问题和新挑战。

相关书籍推荐:

  1. 《重来 》–这本书的观点估计会让很多很多人耳目一新,甚至难以接受。但是,出这本书的公司,37signals,却有众多的粉丝。强烈推荐看看!
  2. 《软件随想录 》–StackOverflow社区的创始人的书。如果你觉得StackOverflow好玩,推荐你了解一下创造这个社区的人对这个行业的一点思考。
  3. 《黑客与画家 》–硅谷创业教父、YC孵化器创始人Paul Graham的文集。如果你被标题吸引了,那么推荐你看看。Paul Graham既是黑客,还是画家,现在是硅谷创业教父,著名YC孵化器创始人。对于这么一个人,你是不是觉得很有趣?看看吧,他的文章也很有趣,相信我。

授人以渔

古人云:授人以鱼,不如授之以渔。推荐给你再多的好书,不如教会给你找好书,选好书的方法。其实方法很简单,打开浏览器,进入“豆瓣读书”,输入关键字,敲Enter键还需要D瓜哥说吗?然后,从中选择得分最高的就可以了。可能大家对里面的得分没有概念,这里D瓜哥给出一个自己的比喻:

  • 9+分:这样的好书,即使一天不吃饭,也要省下钱把它买了。放心不会让你饿肚子的,因为这样的好书很少。不过,很不幸,D瓜哥给出的书单里就有好几本。呵呵
  • 8+分:这样的书也非常不错,可以饿一顿饭不吃,也要买下。
  • 7+分:这样的书还凑合,你可以考虑把买零食的钱省下来买书。
  • 6+分:如果你除了买零食,还有零花钱,又实现闲得无聊,想找本书消遣,可以考虑买。否则,还是算了。
  • 5-分:这些书就当没见过吧,或者厕所没厕纸了,不嫌硬的话,可以直接送货到厕所。

另外,如果有一些牛人推荐的书,那么请相信他们吧,那些书肯定值得一看。例如,D瓜哥的这个书单。(呵呵)

看书方法

很多人不会看书,所以读不进去书。所以,这里有必要介绍一些读书方法。

《如何阅读一本书 》,这本书确实介绍了一个非常好的读书方法。但是,说实话,如果刚刚开始使用这个方法,那么操作起来有点复杂,估计很多人试一下就望而却步了。所以,估计坚持使用的人很少。

D瓜哥来介绍一种操作简单的读书方法:读一本书说不定就能帮你解决工作中遇到的什么问题,那么很可能就让你在年终拿个大奖,这可是实实在在的软妹币啊!!是不是相信就鸡动?不急,还有一句读书咒语:哥翻的不是书,哥是在哗啦哗啦数奖金;哥看的不是书,哥看的是软妹币。看书时,心中默念此咒语,必定神佛保佑,看书效率飙升!

为了总结的总结

从星期日(2014年11月9日)上午十一点,奋键盘疾书,洋洋洒洒写了大半天,挑选出这几本书,狗尾续貂般加上了我拙劣的评论,希望不影响大家读书胃口。

书都是选的D瓜哥读过的,深有感触的一些书。但是,选书是很困难的事情,选A还是选B,这是一个艰难的决定,比腾讯的那个决定艰难多了。另外,D瓜哥在选书上总是想追求完美,害怕有遗珠之憾,但是十本书,哪能包括完所有的好书呢?!总之,这真是一个艰难的决定。

另外,D瓜哥选的书比较杂,东一锤子,西一棒子,很多好书没有选进来,比如《Java编程思想 (第4版) 》,很多重要的知识点没有覆盖度,比如JavaScript,比如网络,比如Java虚拟机,这也难成一个系统。这点觉得非常非常不满意。不过,提前剧透一下,D瓜哥会在稍后再次推荐书籍,可能评分没有这个总体水平高。但是,会更加全面,更加丰满。敬请等待。

现在,估计有人会说,不是说的十本吗?怎么加上“相关推荐”,大大超出这个数目?D瓜哥现在告诉你,哥就是一个标题党。哈哈

最后,希望我们大家一起努力,把工作做好,把赶集网做得更好,创造属于自己的“浪潮之巅”。再最后,这个是真的最后了,用《爪哇夜未眠》中的一句话与大家共勉:只要一部计算机,就可以创造出无限的世界

(如果你可能最后一句话有一种“被代会”的赶脚,那么说明D瓜哥的扯淡水平可以出师了!哈哈)



作 者: D瓜哥,https://www.diguage.com/
原文链接:https://wordpress.diguage.com/archives/121.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

  1. Sunnyroger
    2014年11月10日10:51 | #1

    nice,君哥好腻害

  2. 2014年11月10日15:32 | #2

    大话《大话设计模式 》确实很不错,也看明白了,可就是不会用,哎哎;另外前一段时间你给我推荐的《高性能MySQL 》,说实话看不懂,不知所云,现在打算看学长推荐的另一本《高性能JavaScript》,因为对JavaScript实在是不感冒,不过看着确实不错

    • 2014年11月10日17:45 | #3

      不是《高性能JavaScript》,应该是《JavaScript高级程序设计》吧?

  3. 2014年11月11日16:32 | #4

    嗯,是《JavaScript高级程序设计》,我写错了

  4. 2014年11月15日18:54 | #5

    请问在哪里可以买得到?

    • 2014年11月16日09:45 | #6

      我文章里,每本书都有“豆瓣”的链接,点开只有右侧就有各大网站的卖书报价。你可以看看。另外,有些书已经绝版了,只能看电子版。有什么问题,请再留言。

  1. 本文目前尚无任何 trackbacks 和 pingbacks.