很多人给后来者推荐计算机图书时,一上来就是各种大部头的经典书籍,有些书确实是非常经典,但是能不能让人坚持看下去是一回事,就像有些道理人人都懂,但是能践行下去的人没几个。在这里也只推荐我觉得比较好的书,这些书都是我读过的,少即是精。

下文中提到的书单获取:

计算机必看经典书籍(含下载方式)​

一、算法与数据结构

建议你应该好好准备算法和数据结构,做到常见的算法和数据结构知识点都能熟悉。如果你是应届生,毕业求职的时候可以轻松拿一些大厂(BAT 等)的 offer,至少不会挂在算法数据结构上面;社招的话,也是非常重要的加分项。一毕业去大厂的好处点击这里

1. 严谨的教材

  • 《数据结构与算法分析:C 语言描述》
  • 《算法导论》

2. 轻松活泼的教材

  • 《大话数据结构》
  • 《编程之美》

《编程之美》是一本特别能锻炼思维能力的算法书。

严谨的教材适合系统学习,轻松活泼的教材适合提高学习兴趣、非科班的同学。

3. 适当刷题还是有必要的

  • 《剑指 offer》
  • 《程序员代码面试指南 IT名企算法与数据结构题目最优解》

二、语言类

1. C语言

无论你做什么开发,个人觉得 C 语言是所有想成为高手最应该熟悉的入门语言。

  • 《C 语言程序设计:现代方法》。

2. C++

当然,如果你想掌握好 C++,《深度探索 C++ 对象模型》是一定要看的。

  • 《深度探索 C++ 对象模型》

介绍 C++ 技术和编程技巧的图书实在太多了,我这里推荐《提高 C++ 性能的编程技术》一书,这本书中介绍了常见的 C++ 编码技巧,建议做 C++ 开发的同学把书中说的技巧全部掌握,最关键的是这本书非常薄。

  • 《提高 C++ 性能的编程技术》

如果觉得自己设计 C++ 类和接口不优雅,不能很好地划分模块,大型项目不知道如何去组织和搭建,推荐下如下两本书,这两本书是你成为高手的必读书籍。

  • 《C++ API 设计》
  • 《大规模C++程序设计》

C++ 比较经典的书籍还有:

  • 《Effective C++》
  • 《More Effective C++》

学习 C++11/14/17:

  • 《深入理解 C++11:C++11 新特性解析与应用》
  • 《深入应用 C++11:代码优化与工程级应用》
  • 《C++17 完全指南》
  • 《Cpp 17 in Detail》

3. Java

  • 《Java 核心技术 》
  • 《Effective java》
  • 《深入理解 Java 虚拟机》
  • 《Java 并发编程实战》

三、操作系统

操作系统无论是面试还是自我提高的五大基础之一,我的建议学习操作系统知识时,不一定要看完所有操作系统书籍,但一定将一些基础概念(如进程、线程、内存模式等)看懂、理清。

  • Tanenbaum.A.S《现代操作系统》

你如果还有时间强烈推荐看看俞甲子的《程序员的自我修养:链接、装载与库》。这本书同时涉及到了 Windows 和 Linux 两个操作系统平台,用各种辅助工具剖析了程序从源码到二进制文件再到装载到进程地址空间里面的各个细节,甚至连进程地址空间中的堆结构、栈结构也分析得清清楚楚,同时也分析了 C Runtime(CRT)、glibc 这样的操作系统接口库的原理和执行逻辑,是一本实实在在帮你实战操作系统原理的好书

  • 《程序员的自我修养:链接、装载与库》

如果对操作系统内核感兴趣,可以阅读下:

  • 《Linux 内核设计与实现》
  • 《Linux 内核情景分析》
  • 《Windows 内核情景分析》

四、计算机网络

学习计算机网络除了掌握网络基础知识(比如三次握手和四次挥手),还要熟悉网络编程。

  • 《计算机网络:自顶向下方法》

网络编程方面的实战书来,我推荐韩国人尹圣雨写的这本《TCP/IP 网络编程》,这本书也适合无任何 Socket API 编程经验的小白,这本书涵盖从基础的 Socket API 到高级的 IO 网络模型,有非常详细和生动的例子。

  • 《TCP/IP 网络编程》

等你有了一定的网络编程以后(熟练使用常见 Socket API),你可以看看游双的《Linux 高性能服务器编程》,这本书给没有基础的人或者基础不扎实的人的感觉是,尤其是书的前三章,这书怎么这么垃圾,又把网络理论书上面的东西搬过来凑字数,但是如果你有基础再按照书上的步骤在机器上实践一遍,你会发现,真是一本难得的、良心的书,桃李不言下自成蹊吧。如果你掌握了这本书上说的这些知识,你再看陈硕老师的《Linux 多线程服务端编程》或者去看像 libevent 这样的开源网络库,你会进一步的得到提升。这也是我学习网络编程的一些经验和经历吧。

  • 《Linux 高性能服务器编程》

五、操作系统 API

不管是什么开发,你都是需要基于特定的操作系统的,这里不提 Windows 系统,单单拿 Linux 操作系统来说,既然你选择做这个方面的开发,你需要熟悉这个操作系统平台提供的一些常用的 API 函数,网络通信方面上文已经说过,除了网络通信还有如操作文件、操作内存、字符串操作、进程线程系列、线程同步系列(如互斥体、条件变量、信号量)、管道等常用的各种API接口函数。这里的意思是,不是要你背诵记忆每一个接口函数的签名,而是你要知道何时该用哪个接口,如何用,有什么注意事项。

我入门的时候看的是 Robert Love 的《Linux 系统编程》,熟悉这个人的应该知道,Google 的工程师,他也《Linux 内核设计与实现》一书的作者。

  • 《Linux 系统编程》
  • 《Windows 程序设计》第五版

(第六版以后,这个不再是用 Windows Native API 写 C 程序了,而是转到 C# 平台上了),这本书是中国第一代程序的 Windows 启蒙书籍,你所看到的大多数桌面软件,如 QQ,的开发者可能都是通过阅读这本书启蒙起来的。

  • 《Windows 核心编程》

这本书搞 Windows 开发的一定都知道这本书的分量。

  • 《Windows PE 文件权威指南》

六、汇编与安全工程

如果你熟练掌握汇编,你就比其他人多很多优势,你会能透彻地知道你写的每一行 C/C++ 代码背后的机器指令的效率。无论是做安全工程还是自己技术提升上都是非常不错的。这里推荐一本王爽老师的《汇编语言(第 3 版)》,这本书不厚,语言通俗易懂,你也不用刻意去记忆,基本上当小说书看一下就能很快看完了。汇编实战类图书还有另外一本《老码识途:从机器码到框架的系统观逆向修炼之路》。我个人是非常喜欢这本书的。当年读这本书的时候,真的有一种“笑看妻子愁何在?漫卷诗书喜欲狂”的感觉。

  • 《汇编语言(第 3 版)》
  • 《老码识途:从机器码到框架的系统观逆向修炼之路》

七、数据库

数据库需要掌握的基础知识有:

(1)熟悉基本 SQL 操作 包括增删改查(insert、delete、update、select语句),排序 order,条件查询(where 子语句),限制查询结果数量(LIMIT语句)等

(2)稍微高级一点的 SQL 操作(如 Group by,in,join,left join,多表联合查询,别名的使用,select 子语句等)

(3)索引的概念、索引的原理、索引的创建技巧

(4)数据库本身的操作,建库建表,数据的导入导出

(5)数据库用户权限控制(权限机制)

(6)MySQL的两种数据库引擎的区别

(7)SQL 优化技巧

以上属于对开发的基本的数据库知识要求,你可以找一本相关入门级的数据库图书推荐:

  • 《MySQL技术内幕(第5版)》

高级开发除了以上要求还要熟悉高可用 MySQL、主从同步、读写分离、分表分库等技术,这些技术的细节一定要清楚,它们是你成为技术专家或者高级架构的必备知识。我们在实际面试时,在讨论高可用服务服务方案时,很多面试者也会和我们讨论到这些技术,但是不少面试者只知道这些技术的大致思想,细节往往说不清楚,细节不会就意味着你的高可用方案无法落地,企业需要可以落地的方案。

这些技术我首推《高性能 MySQL》这本书,这本书高级开发者一定要通读的,另外还有 2 本非常好的图书也推荐一下:一本是《MySQL 排错指南》,读完这本书以后,你会对整个“数据库世界”充满了清晰的认识;另外一本是《数据库索引设计与优化》,这本书读起来非常舒服,尤其是对于喜欢算法和数据结构的同学来说。

  • 《高性能 MySQL》
  • 《MySQL 排错指南》
  • 《数据库索引设计与优化》

八、编译原理与计算机组成原理

  • 《编译系统透视:图解编译原理》
  • 《计算机组成与设计:硬件软件接口》

八、设计模式

  • 《大话设计模式》

九、代码规范与风格优化

  • 《重构:改善既有代码设计》
  • 《程序设计实践》
  • 《代码整洁之道》

这两本书特别推荐学生朋友看一下,能大幅度地提高你实际编码的技巧和编码风格。

作为一名过来人的老学长,我码这么多字,希望想做好开发的学弟学妹们,勿在浮沙筑高台。如果你现在还是学生,你有大把读书的机会,一定要珍惜大好读书时光。工作年限不长的同学,也应该尽快在工作的早些年把基本功打扎实。三十岁以后面临着工作、家庭等各种问题,你可能再不能心无旁骛地去学习和提升了。所以前期的积累很重要,毕竟选择技术这条路,提高技术是升职加薪改善生活水平最直接的方法。

书单未完待续,后面会整理得更加完善,更加成体系。

完整的书单获取链接:

计算机必看经典书籍(含下载方式)​

学计算机有哪些推荐书籍?相关推荐

  1. 计算机专业初学者推荐书籍

    以下这些书都是经典的经典的经典,每一本都值得细读.多读.读烂,特别是基础的书. 语言和编程基础: 1. <C专家编程>  学C语言进阶的经典之作 http://item.jd.com/10 ...

  2. 学计算机女生笔记本电脑推荐,适合女生用的笔记本电脑 推荐详情

    笔记本电脑 的功能比较强大,我们能够利用笔记本电脑进行娱乐.购物.日常办公等等,尤其对于一些学生族或者是工作的人来说,笔记本电脑是必不可少的.因为市场上售卖的笔记本电脑品牌比较多,所以不同品牌它们所针 ...

  3. 学计算机女生笔记本电脑推荐,适合女生的笔记本电脑有哪些?一般女生用什么笔记本电脑?...

    [导语]:笔记本电脑因为其携带的便捷性和使用的稳定性,现在已经成为了我们生活中非常重要的一个产品.那么究竟适合女生的笔记本电脑有哪些呢?下面小编就带大家一起去看看吧! 一.女生适合多少寸的电脑 如果有 ...

  4. 大学四年学计算机最值得看的技术书,要读就读最好的书,程序员精品书单!

    前言 看书是学习最为实惠.有效的途径之一,书本的优势就在于它的权威性和系统性.一本好的技术书籍均来源于在相应领域有所建树的大佬所著,比起网络上懂点技术就能录.播和卖的教程,权威性是毋庸置疑的:而且这些 ...

  5. 计算机专业及软件开发推荐书籍

    计算机专业推荐书籍: 吾不能有名师指导,但求能精选出最好的书籍,从最好的书中学到东西,可有些许补偿.当然,最好能主动寻找良师益友和专业人士的指导.经典的书都有一个特点: 详尽得当,通俗又不失理论化,信 ...

  6. 学计算机一定要加班吗,老梁推荐:毕业后经常加班的几类专业,工作压力大,对能力要求很高...

    原标题:老梁推荐:毕业后经常加班的几类专业,工作压力大,对能力要求很高 点击图片,预约直播课 如果想要报考毕业后工作相对没那么辛苦,不需要加班的专业,那么今天这几个专业就不用考虑了,这几个专业几乎都是 ...

  7. 计算机组成原理推荐书籍

    计算机组成原理推荐书籍 看到一位大神推荐的计算机组成原理相关书籍,先记录下来慢慢地.细细地研究一下 1.入门书籍 <计算机是怎样跑起来的> <程序是怎样跑起来的>入门微缩版本的 ...

  8. [转载]一个图形爱好者的书架/白话说学计算机图形学

    1.一个图形爱好者的书架 原文地址:http://blog.csdn.net/nhsoft/archive/2004/06/23/22992.aspx          早几天看到有人把自己在大学四年 ...

  9. 经典计算机基础学科教程推荐[转自:海枫的专栏]

    经典计算机基础学科教程推荐        "适当的时候读适合的书",这我对计算机学习的一个经验性总结.每当学完一门课的时候,跑到图书馆却看到更好的教材时,总有一种相见恨晚的感觉,恨 ...

最新文章

  1. PCL基础4:PCLVisualizer可视化窗口显示
  2. python好不好用_python应用情况怎么样?是否真的值得学习?
  3. 2016-2017 ACM-ICPC Southeastern European Regional Programming Contest (SEERC 2016)
  4. gin 前端文件打包_远程URL文件批量下载打包的方法
  5. LeetCode 825. 适龄的朋友(计数排序+前缀和)
  6. 单链表的头插法和尾插法c语言实现
  7. 天融信的FTP服务器
  8. 常用的HTTP头部字段的基本含义(转)
  9. mysql fopen_fopen与读写的标识r,r+,rb+,rt+,w+.....
  10. 3. 什么是icmp?icmp与ip的关系_Java抽象类、内部、类接口到底是什么?
  11. 带圈圈的数字1~50,求50以上,不要word的
  12. 【笔记总结】C陷阱与缺陷
  13. 【离散数学】陪集精讲
  14. 老哥们着急求助一下:报错ORA-39083,ORA-00001
  15. android电子指南针,Android实现电子罗盘(指南针)方向传感器的应用
  16. GoogleStyle编程代码规范
  17. Reservoir Computing简介
  18. 小Q书桌支持WIN10完美运行 关于win10不兼容小q书桌
  19. 基于ibeacons三点定位(微信小程序)
  20. SpringBoot项目实现多数据源的三种方式

热门文章

  1. NISP一级考试题目复习
  2. 轻松下载网页视频(.flv)||B站高清视频(.mp4)
  3. Amendment Quotation function in CLCL Plugin
  4. 微软的语音交互“滑铁卢”:Cortana小娜悲惨收场,未来路在何方?
  5. LeCun:赋予机器 “常识” ,重新设计神经网络将是AI 研究重点
  6. Android微信支付遇到的大坑
  7. 数据可视化如何实现?4大基本流程了解一下
  8. 博士申请 | 卡耐基梅隆大学陈贝迪老师课题组招收机器学习方向博士生
  9. Flask 源码解析:session
  10. guava异步线程使用