百科问答小站 logo
百科问答小站 font logo



2019 年你读了哪些觉得比较好的计算机书籍? 第1页

  

user avatar   yangsoon 网友的相关建议: 
      

研二在读,下面列出一些我今年知道的和看到的感觉不错的书,有些书已经读完,有些只读了一部分,一开始我也就只是从ddia开始阅读,后面慢慢发现自己有不足的地方需要填补知识空缺,所以就找了其他书来看。

语言类

python源码剖析

这本书讲解了python2.5版本的cpython实现,大致分为3个部分,分别讲解了python中基本对象python虚拟机和python的runtime的实现和原理。个人感觉这本书可以帮助你理解python执行时候的行为,为什么代码会有这样的表现,比如python的LGB规则,python的垃圾回收,从源码实现上来看python,就会理解的更加深刻,而且从这本书你可以看到很多trick的C语言实现。

但这本书对应的python版本较低,python3的源码实现和2还是有很多不同的,建议参考着下面 python3的源码实现一起看。

数据库

数据库系统实现

实习了一阵子之后,发现自己好像不知道以后要做什么方向的工作了,偶尔间发现了pingcap的talent-plan瞬间被这家公司圈粉,开始做他们的线上教程,其中week2的作业需要阅读 数据库系统概念 可是这本书贼jb厚,而且每页的内容也很多,给人一种阅读恐惧感,后来发现了 数据库系统实现这本书,页数不多,而且内容精简。

这本书不适合数据库初学者,前部分内容主要讲解数据库的底层实现,前半部分讲解数据库索引实现,join算法,数据库如何从物理层和逻辑层做执行优化。后半部分讲解数据库如何做容错和并发控制。

当然这本书的一些知识点也比较老了,没有讲解工业界数据库Mysql或者PostgreSQL的实现,所以下面推荐这本书。

MySQL技术内幕

这本书讲解Innodb存储引擎的实现,因为知识点有重复再加上在图书馆借的,我就只看了Innodb锁和事务的实现部分。填补了自己知识空缺的同时也惊叹于mysql的巧妙设计。

其实阅读这本的时候,我是在看极客时间的mysql45讲。

说实话,我其实挺反感网上一些付费教程,但是这个专栏,我真的是吹爆,阅读文章的时候给人一种停不下来的感觉,对于我这种菜鸟,就感觉知识在源源不断的流进我的大脑。专栏里的文章图文并茂,作者大大实力爆表,文章思路清晰易懂。绝对值得反复阅读,因为注册用户可以免费阅读4篇文章,所以我希望大家阅读一下 03 08 20 关于事务和幻读的讲解,尤其是幻读网上的一些博客一些作者都没搞清楚就写,简直误人子弟。还有就是第 21 节关于加锁原则的讲解,强烈安利大家阅读一下。感觉这个专栏可以配合着MySQL技术内幕一起阅读。

Redis设计与实现

这本书还没有看完,主要看了redis一些基本数据结构以及实现,这本书感觉是面试必看,看起来内容很多,但是主要是因为书中图片比较多,所以你会发现看起来很快,目前看到了RDB和AOF部分,之后会慢慢看下去,但是同样的是书籍对应的redis版本比较老,缺少很多新特性相关的分析。所以就买了下面这本书。

Redis 深度历险:核心原理与应用实践

这本书弥补了Redis设计与实现很多欠缺的地方,这本书讲了redis的HyperLogLog和GeoHash等新特性,而且注重实战,包括很多代码示例,教你如何进行客户端编程,而且最重要的是,文中还对比了redis cluster和codis的架构设计,讲解了如何使用redis实现分布式锁等等,简直就是面试宝典。书籍页数不多,但都是精华。

这里插一句话,网上关于redis实现分布式锁的文章良莠不齐,能找到一篇好文章实在不容易。

下面我就贴一个讲解关于redis分布式锁实现的文章,这篇文章分为上下两篇,主要是通过redis作者和DDIA作者关于reids分布式锁实现的争论来写的,很有意思。

分布式系统

数据密集型应用系统设计

DDIA神书,关键是读起来很爽,停不下来,感觉读书就喜欢这种感觉(可能是我太菜,知识点欠缺很多)其实关于数据库的事务部分我是看了这本书才真正理解的,这本书就像一个指南针一样,在这里你会看到一些你只知道名字的分布式相关的术语,而这本书会帮你把这些知识串起来,让你对分布式系统有个整体的概念。据小伙伴说这本书配合着6.824食用更佳,因为我只做了lab1,就不方便评价了,所以也推荐大家边阅读边写代码。希望所以接触后端开发的同学都能够读一遍。

操作系统

操作系统导论

建议大家看一下这位大佬的书评。

这本书的中文译名不是很好,不过翻译质量其实还可以,和我一样英语水平有限的同学可以买本中文版看一看,但是中文版有几个图画错了,感觉编辑也太不上心了,明明和原版的图画的很不一样。第366和367页的图都画错了,大家可以对照着英文版看一下。

作者很贴心的给出了书籍的pdf和课后作业以及代码。

在读这篇文章的时候和读DDIA一样,就一个字爽,书中的讲解通俗易懂,脉络清晰很适合用来回忆操作系统的知识点。在阅读这本书的时候,我也受启发写了一篇文章。

Docker容器与容器云

这本书刚开始看,讲解关于docker的实现原理,docker如何使用namespace cgroup实现一个容器,以及docker还存在的问题,之前一直以为会用就可以,但实际上如果搞懂了原理,会很好的帮助你使用。

还在阅读中的书籍

19年底吃土买了很多书,这些书都还在阅读中或者只写了个名字,先贴出来,等明年再回答。



这些就是我19年看的或者20年要继续读的书籍,之前一直在迷茫,原来是太菜了,眼界太狭隘,所以看不到自己的未来发展方向。但还好,因为现在我还知道有那么多知识需要我学习,需要我努力,希望也能帮到正在看这个回答的你。


user avatar   qiongmanong 网友的相关建议: 
      

我来回答一下本人在美国转专业学习计算机过程中使用过的14本特别有用的书籍,都是强推。

这些书都是经典,一年之内也不太可能全部看完,需要常读常新。阅读书籍是为了打基础,正所谓基础不牢,地动山摇。

大家不管是学习还是准备面试,良好的基础是一切的开端。我自己比较喜欢看书,这些书你不需要都看,感觉也没那么多时间全部看完。

我把他们分成几个类别:算法,数据结构,算法面试,系统设计,编程能力提高五个方面。接下来,每个方面我都会推荐其中特别适用的书。


首先是算法算法和数据结构是计算机学习的基石。无论你学习计算机的任何方向,没有扎实的算法和数据结构,肯定学习起来就捉襟见肘了

我自己非常喜欢的普林斯顿算法红宝书第四版,这本书是普林斯顿超级大神教授Robert Sedgewick的神作,该书还有配套的MOOC课程,以后有时间再写网课了。该书是特别棒的算法和数据结构的教程,全书提供Java的实现,而且大部分内容也放在了本书的配套网站上:algs4.cs.princeton.edu/ 本书的优点是会把算法详细的过程掰开揉碎地讲明白了。书里面有大量的配图,更不说配套网站上的ppt,简直就是艺术。一句话,1万分推荐。就一个缺点,没有讲动态规划(DP),所以我在下面也推荐一些涉及到DP的书籍。你认真读此书的话,会发现很多大公司的面试题就来自它的习题里面。

还有另外一本算法神作就是算法设计手册了。这一本则是把算法分类了,还提供了特别多适用的算法应用场景,让读者知其然,并知其所以然。这本书的数和图部分,还有递归回溯,是特别多人拍手称赞的地方,值得认真看三遍。这本书就讲了第一本里面遗憾缺失的DP。总之,这两本都是超级强推。

提到算法,肯定会提到算法圣经之算法导论,这本书是算法百科全书,优点是全,缺点是太全太厚,数学太多了。是很好的参考书,但不适合短期突击学习。感兴趣的读者可以挑战一下。

接下来的两本,可以当做是算法的课外读物,写得浅显易懂。刚开始学算法的小伙伴,可以先从他们着手,第一本其实是合集,叫Algorithms Illuminated。分三个部分:基础,图算法和数据结构,贪心算法和DP。该合集页数比较短,但是看完之后,对算法的理解肯定会加深不少。

第二本就是算法图解了,语言风趣,有比较多的插图。入门很合适。

最后一本算法书,名字就叫算法,作者还提供免费的教程,我个人觉得对面试帮助很大。因为里面讲解算法的思路,有点以题目为导向的感觉,其中递归和DP部分,让我有醍醐灌顶之感。

第二部分是数据结构,这里就推荐三本书,一本是Java,一本是Python。Java的就是鼎鼎大名的CS61B的课程推荐教程:Data Structures and Algorithms in Java。Python的也是一本畅销书:Problem Solving with Algorithms and Data Structures。


还有就是中文的《大话数据结构》,数据结构中文入门读物的不二选择。

第三部分是算法面试,第一本就是口口相传的Cracking the Coding Interview (CC189)。说实话,这本书入门勉勉强强,因为现在的算法面试已经远远不是这个难度系数了。但入门还是不错的。

现在比较适合的是这一本:Elements of Programming Interviews in Java:The Insiders' Guide。这本书比较赞的地方在于,每个题目会给读者抽丝剥茧,将题目讲得很细致,从brute force开始,一步步推导到最优化解,中间没有跳跃。这样的方式和面试很类似,因为面试过程中,你不一定立马就有最有解。你需要和面试官沟通,一步步走向胜利。

接下来是系统设计。现在的面试,尤其是比较资深的职位,说白了就是如果你跳槽的话,就会需要面系统设计。这里就推荐一本书:Designing Data-Intensive Applications。

最后来看看编程能力提高方面。这个方面的话,你如果是Java玩家,这本Effective Java你肯定是需要熟读的了。Josh Block是Java语言开发的超级大牛,业界都在推荐。跟着大牛来一波不会错的。

下面的两本就是有关程序员素养培养方面的书籍了。程序开发的方方面面都会涉及到。也都是超级出名的书:Clean Code: A Handbook of Agile Software Craftsmanship 以及 Code Complete : A Practical Handbook of Software Construction, Second Edition。

再来更新两本,一本C++ primer,C++入门必备书籍:

一本计算机基础知识加强和提高必备,人人首推的CSAPP(Computer Systems: A Programmer's Perspective)


想提高自己的编程思维和能力,光靠看书肯定不行,否则就有点纸上谈兵的味道了。我个人是主要做网页开发方面。我经常使用下面这些平台来训练自己的动手编程和项目能力。

第一个是项目提升

具体请参考这个回答:java框架学习方向以及顺序? - 穷码农的回答 - 知乎


第二方面是算法训练和加强

光学不练,算法是学不会的。

所以推荐一些好的刷算法和数据结构平台,当然也是为了找工作面试做准备咯。

  1. LeetCode。

这是现在刷题找工作最热门的网站了。

但LeetCode现在题目也太多了,一共1200+了。全刷完没必要,也不高效,所以推荐看下面的回答:




2. Educative

他家最最出名的还是这门Grokking the System Design Interview, 但凡提到准备系统设计,这门课都上入门必推的:

还有这门算法课:

这门课程是一个算法总结提高的课程,它把算法面试中可能遇到的题分成了各种模式,每类题各个击破。


(如果你需要上面这些算法课程,那么你可以使用 awesome-developer 的折扣码获得网站所有课程的额外15%off!上面的折扣码针对单独购买所有课程有效。单独买课的折扣码有效期最后两周,大约到2021年1月22号左右

如果想买订阅Subscriptions)的小伙伴,则可以用ZHIHUEDU-10(必须一模一样输入)的coupon code来获取额外九的优惠按年和按月均适用


比如有最经典的sliding window模式,Two pointers模式,快慢指针模式,合并intervals模式,cyclic sort模式,in-place翻转链表模式,树上的BFS,树上的DFS,双Heaps模式,subsets模式,二分法变种,Top K模式,多路模式(K-ways),0/1背包,拓扑排序。

需要的小伙伴就去来一波吧!


以上。




  

相关话题

  为什么在脸部打马赛克的时候通常选择在眼部? 
  计算机语言可以以变量名作为类型判断么? 
  如何看待支付宝在 2019 年 4 月 1 日展示的三折叠屏、被偷自动归还等功能的「休想骗我」手机? 
  目前强化学习在控制领域的应用有哪些? 
  如何评价Yann LeCun宣称『他已经做好放弃概率论的准备』? 
  linux为什么不能硬链接目录? 
  18考生,考上同济大学车辆工程专业,但内心喜欢计算机专业,请问有必要转专业吗(车辆是同济王牌之一)? 
  是否存在这种审稿人思维:因为完全看懂了论文更增加了将之拒掉的几率? 
  计算机专业曾经有哪些方向非常火后来却凉了? 
  2019年NeurIPS有哪些糟糕的论文? 

前一个讨论
生化环材招聘软件上四十万以上的岗位也不少 为什么是天坑?
下一个讨论
pandas为什么读写文件那么快?





© 2024-11-05 - tinynew.org. All Rights Reserved.
© 2024-11-05 - tinynew.org. 保留所有权利