知识屋:更实用的电脑技术知识网站
所在位置:首页 > 科技

自学 Java,有哪些书籍推荐?

发表时间:2022-03-23来源:网络

又到了喜闻乐见的书籍推荐环节,我最喜欢了!毕竟马克西姆·高尔基先生曾说过,“书籍是人类进步的阶梯”既然题主有 C++ 的基础,再学 Java 可以说就事半功倍了

我以前和题主一样,比起电子书,更钟爱纸质书一些,所以每次遇到 4.23 图书节,就会屯一波。下图是桌子边摆的一些 Java 相关的书籍,这只是其中的一部分,拥有一副“福尔摩斯”眼睛的学弟学妹们,应该发现,右下角还能隐隐约约看到一部分(那可是从地面上堆起来的,里桌面有相当一段距离)。

当然了,这么多书,我都看完了吗?问就是没看过,哈哈 。我提前给自己找个台阶下。

作为一名拥有十多年编程经验的 Java 老鸟,说实话,我不太建议自学 Java 的学弟学妹们一上来就读纸质书,因为纸质书一般都比较厚,学起来需要耐心,而耐心需要学习效果来滋养,而纸质书一时半会是看不到效果的,所以耐心很容易干涸。

我给大家推荐一份 GitHub 上星标 115k+ 的 Java 学习教程,我亲自整理的,内容不多,但 Java 的核心知识点都包括在内了,比如说,Java 语法、Java 集合框架、Java IO、Java 并发编程和 Java 虚拟机,很适合拿来作为临门一脚的学习资料

这就好像吃大餐前的一顿点心,有没有必要,我认为很有必要,陶冶一下情操,吃起大餐来也更舒心愉快一些,对吧

现如今,很多人喜欢看视频,看视频可以作为入门的辅导方式,如果想要深究,更系统化的学习,我认为还是离不开书。技术日新月异,甚至可以说是分新秒异,如果有个一年半载没有输入,很可能就掉队了,总之要活到老学到老,直到头顶很冷的那一天。

01、Java 基础

切记,如果你是第一次接触 Java,一上来不要看任何一本纸质书,看我推荐的这份 GitHub 上星标 115k+ 的 Java 教程。用最短的时间先鸟瞰一下 Java 的核心知识点,让自己的脑海中对 Java 有一个粗浅的印象,这个印象会对你以后的学习大有帮助

题主已经有 C++ 的基础了,所以不需要再看《C 程序设计语言》这本书了。

但如果你初次接触编程,尽量先学一下 C语言,为什么呢?我们学的是计算机科学,并不是编程语言,语言只是工具,C语言是一门古老而常青的编程语言,具备现代程序设计的基础要求,它的语法是很多编程语言的基础,比如说 Java。C语言的岗位虽然比较少,目前主要集中在嵌入式方面,但学会了C语言,再学 Java 就会容易得多,另外,C语言对后续操作系统、编译原理都是很好的基石。强烈推荐初学者通过这本《C 程序设计语言》来快速地学会怎么使用 C语言,这本书在豆瓣上的评分也非常高。

《Java 核心技术卷 1》和《Head First Java》 这两本可以作为学习 Java 的入门书,选择其中的一本来读就可以了, 注意跳过 AWT、Swing 这些章节,这些技术该被淘汰了!

记住一点,入门的阶段一定要敲代码,书中出现的例子都要敲一遍,不要眼高手低,另外课后题都要一题不落的做完,只有这样,才能真正地学会一门编程语言

之后,再读《Java 编程思想》作为升级,同样跳过图形化界面编程的章节。为什么要把《Java 编程思想》放在后面呢,因为毕竟是思想上的东西,放在前面很容易把初学者劝退,但放在后面就很容易在思维方式上提升初学者对 Java 的认知。


02、Java 进阶

Java 核心技术当中,最难的部分就是 Java 并发编程和 Java 虚拟机。推荐大家两本书,一本是《Java 并发编程实战》,一本是《深入理解 Java 虚拟机》。这两本书甚至不用我做过多的介绍,懂行的人就知道它们有多牛掰。


《Effective Java》的作者是 Google 公司的首席 Java 架构师,曾经也是 Sun 公司的高级工程师,所以他对 Java 可以说是知根知底,所以这本书包含的 90 个建议都值得每个 Java 程序员在敲代码的时候遵守。

《Java 开发手册》是阿里出品的,提炼出了阿里技术团队的编程经验和软件设计的智慧,小册包含的编程规约、异常日志、单元测试、安全规约、MySQL数据库、工程结构、设计规等七个维度已经成为了业界的标杆。

之所以把《代码整洁之道》放在这里,是因为这本书中的代码是用 Java 写的,而高质量的 Java 代码与其整洁程度是成正比的,早一点严格要求自己的代码,就早一点养成良好的编码习惯。

03、Java 框架

《Netty 权威指南》这本书在豆瓣的评分相对来说是比较低的,但我也找不出另外一本评分高的了。Netty 是一个非阻塞 I/O 客户端-服务器框架,主要用于开发 Java 网络应用程序,比如协议服务器和客户端。

《Spring 实战》在豆瓣的评分也不高,之所以拿出来做推荐,原因仍然只有一个,瘸子里挑将军。Spring 是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。它可以装载 Bean(也就是 Java 中的类,包括 Service、Dao 里面的),有了控制反转这个机制,我们就不用在每次使用类的时候先初始化,用 new 关键字声明。另外,Spring 的 AOP、事务管理等等都是我们经常用到的。

《深入浅出 MyBatis 技术原理与实战》在豆瓣的评分更低了,之所以推荐,原因同上,图片我就不贴了,如果大家对这本书不感兴趣的话,其实可以直接看 MyBatis 的官方网站来学习 MyBatis。

MyBatis 是一个支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架。对 JDBC 做了封装,它让数据库底层操作变的透明。 MyBatis 的操作都是围绕一个叫 s 的实例展开的,通过配置文件关联到各实体类的 Mapper 文件,Mapper 文件中配置了每个类对数据库所需进行的 SQL 语句映射。在每次与数据库交互时,通过 s 拿到 s,再执行 SQL 命令。

《Spring+SpringMVC+MyBatis 整合开发实战》在豆瓣上的评分暂无,也就不贴图片了。要学习 SSM 的话,可以直接到 B 站上看江南一点雨的视频教学,比看纸质书的效果会更好一些。

《SpringBoot 实战》这本书在豆瓣上评分也不高,和《Spring 实战》是同一个作者。如果大家想学习 Spring Boot 的话,其实可以看纯洁的微笑的博客,访问量特别大,应该是很多 Spring Boot 初学者的聚集地。

《Spring Cloud 微服务入门实战与进阶》这本书的作者我有交流过,挺好的一个技术博主。

04、数据库相关

学习一门编程语言,如果不去操作下数据,就感觉这门编程语言空有皮囊却没有灵魂,对吧?所以数据库部分是必学的。

《SQL 必知必会》是麻省理工学院、伊利诺伊大学等众多大学的参考教材,这本书直接从 SQL 的 SELECT 开始,讲述了实际工作环境中最常用和最必需的 SQL 知识,实用性极强。该书作者后来还出了一本《MySQL 必知必会》,同样很薄的一本书,也可以看一看。

《高性能 MySQL》,业界公认的一本经典的 MySQL 读物了,有着广泛的影响力。

《Redis 深入历险核心原理与应用实战》分为基础和应用篇、原理篇、集群篇、拓展篇、源码篇共 5 大块内容。基础和应用篇讲解对读者来说最有价值的内容,可以直接应用到实际工作中;原理篇、集群篇让开发者透过简单的技术表面看到精致的底层世界;拓展篇帮助读者拓展技术视野和夯实基础,便于进阶学习;源码篇让高阶的读者能够读懂源码,掌握核心技术实力——出自本书内容简介,链接:https://book.douban.com/subject/30386804/

Redis 的重要性不言而喻了,是互联网技术架构在存储系统中最为广泛的中间件,也是后端面试中最经常被问到的模块之一。

《MongoDB 权威指南》是一本广受好评的 MongoDB 权威著作,作者是谷歌的一名软件工程师,曾有 5 年是 MongoDB 项目的核心成员。

05、数据结构与算法

无论什么时候,程序=数据结构+算法这种说法都是成立的。

《算法第四版》,全面讲述了算法和数据结构的必备知识,讲的虽然不深,但确实是我读过的讲的最清晰的算法书。

《编程珠玑》,主要讨论计算机科学中最本质的问题:如何正确选择和高效地实现算法。

剑指Offer:名企面试官精讲典型编程题(第2版)》,LeetCode、牛客网上都有该书的算法专题,基本上找工作前必刷的科目。

数据结构可以分为线性数据结构和非线性数据结构。Java 中的线性数据结构有数组、链表、栈、队列,非线性数据结构有树、哈希表、图等等。

常见的排序算法有:选择排序、冒泡排序、插入排序、快速排序、归并排序、希尔排序、基数排序、计数排序、桶排序、堆排序等等。

常见的查找算法有:顺序查找、二分查找、插值查找、斐波那契查找、树表查找等等。

常见的算法有:KMP算法、贪心算法、回溯算法、动态规划、递归算法等等。

这里给大家推荐一份纯 Java 版的 LeetCode 刷题笔记吧。作者曾给我说,刷完 100 道题之后,发现真的是爱上了刷题。基本上后面的每道题都可以想出一种思路,甚至就是最优解,还会萌生一些别人没想到过的解法——基本上只要算法学得好,大厂小厂的 offer 基本上就 80% 的把握了

06、操作系统

为什么要学习操作系统呢?第一,面试要考;第二,无论学习哪门子编程语言,比如说 Java、C/C++,都需要和操作系统打交道,像 Java 中的多线程技术,其实是由操作系统来负责进程和线程管理的;第三,学习操作系统,还能学到内存分配方面的知识。

《深入理解计算机系统》,按理说,这本书的名字应该叫《计算机系统导论》,有 C语言、数据结构的知识就可以学这本书了,想在毕业后去大厂的学弟学妹值得花时间去三刷一下这本书,注意是三刷,第一刷大致了解,第二刷精度,第三刷温习。可以说得上是程序员了解计算机系统的最佳书籍了,可以去 CSAPP 课程官网找 Lab 配合刷起来。

现代操作系统》,强烈不推荐新手(比如我)拿这本书用来入门学习 OS,很多内容都是点到为止,比较抽象,大幅省略实际应用和详细代码,但这并不代表它不是一本 awesome 的书。摘自:现代操作系统(原书第4版) (豆瓣)

鸟哥的Linux私房菜 基础学习》,这是一本 Linux 方面的畅销书了,全面详细地介绍了 Linux 操作系统,如果要学习 Linux 的话,首选。

07、计算机组成原理

计算机是由 CPU、内存、显示器这些设备组成的硬件,但我们大学毕业后,往往从事的是软件方面的开发工作。那怎样才能在硬件和软件之间自由穿梭呢?答案就是学好计算机组成原理。弄明白了计算机的组成原理,也就对整个软件开发有了一个系统的认知,不论是计算机的硬件原理,还是软件架构,都能很好的驾驭,随之而来的,我们的职业发展机会也就更多了。计算机组成原理这门课完全可以用一个词来概括,就是“抽象”。在我看来这也是整个计算机设计中所蕴含的的灵魂。

计算机是怎样跑起来的》,很适合作为一本了解计算机的入门书。在外人看来,计算机很复杂,对内行人来说,计算机说起来很简单:

输入、运算、输出是硬件的基础软件是数据和指令的集合计算机和人的思考方式不同,对计算机来说,什么都是数字

计算机组成与设计》,这本书从单核处理器讲到多核微处理器,从串行讲到并行,作为程序员,还是很有必要对计算机硬件技术、汇编语言、计算机算术、流水线、存储器层次结构以及I/O等基本功能了解一下的。

《编码-印尼在计算机软硬件背后的语言》,这本书讲述的是计算机背后的工作原理。你是否想知道计算机如何工作和运行的?你是否想了解计算机是如何一步一步创造出来的?你是否想了解计算机知识的来龙去脉?你是否想了解计算机的历史?你是否想制造出一台自己的计算机?你是否想知道硬件与软件的区别?你是否想知道电报机、电的原理?你是否想创造自己的编程语言?你是否想知道你买的电脑中说明书上说的主频、内存、显示器象素、显存的概念和意义?你是否想知道我们常用的十进制的由来?你是否一直迷惑于二进制的理解?你是否想知道那些赫赫有名的IT公司的历史和发展?你是否想探询那些天才是如何思考和发明的?你是否想象科学家一样思考?这本书将一一为你揭开谜底。本书的内容涉及数理逻辑、布尔代数、组合数学、集合、物理、化学和电子学等等知识。摘自豆瓣书评:编码书评(豆瓣)

既然聊到这本书,很有必要给大家推荐一门计算机科学速成课,讲解的内容有:

计算机早期历史电子计算机布尔逻辑二进制算术逻辑单元寄存器 & 内存中央处理器指令和程序高级 CPU 设计早期的编程方式编程语言发展史编程原理算法入门数据结构阿兰图灵(我最喜欢的一集)软件工程集成电路 & 摩尔定律操作系统内存 & 储存介质文件系统压缩命令行界面屏幕 & 2D 图形显示个人计算机革命图形用户界面3D 图形计算机网络互联网万维网计算机安全黑客 & 攻击加密机器学习 & 人工智能计算机视觉自然语言处理机器人计算机心理学天网 & 计算机的未来

也是非常值得每个程序员去刷一刷的,全部都是计算机专业需要掌握的知识点啊,至少是应该了解的知识点。关键是视频的画面特别精良,我来截幅图给大家感受下。

关键是英文中字版的,观看起来毫无压力。我自己每天会刷一集。像二进制这一集,以前经常被二进制搞得晕头转向,刷了这集视频后,明显感觉对二进制没那么生疏了,仿佛一个陌生人坐在对面,喝了一杯酒后,就成了老熟人。

我看弹幕有人说,“第一次用 B 站看这么正经的东西。”好他喵的真实呀!我也是。

08、计算机网络

当今这个时代,没有网络简直无法生存,哪怕是在电梯里的一分钟,我都受不了那种手机没有网络的状态。我们所学的编程知识,如果脱离了网络,将变得毫无意义,因为没有哪个编程语言是要在单机环境下运行的。

网络是怎样连接的》,这本书从在浏览器中输入网址开始,一路追踪到显示出网页内容为止的整个过程,以图配文,讲解了网络的全貌,并重点介绍了网络设备和软件是如何工作的。

TCP/IP 详解》,这是一本完整而详细的 TCP/IP 协议指南,基本上做通信的是人手一本。对于大多数程序员来说,了解这个 TCP/IP 对面试和编程也有很大的帮助。

《图解 HTTP》,HTTP协议是互联网的基石,学完后可以尝试实现一个属于自己的 HTTP 服务器了。

《计算机网络-自顶向下方法》,算是一本经典的大学教材了,

关于计算机网络这块,可以配合 B 站上的《计算机网络微课堂》一起来学习。

记住一点,我们学的是计算机科学,不是编程语言,Java 入门并不算是太难,但如何把自己变成一个优秀的 Java 工程师,就不只是要学习 Java 基础、Java 进阶、Java 框架,还需要把数据库、数据结构与算法、操作系统、计算机组成原理、计算机网络等方面的基础打好!

最后,给学弟学妹们一些自学 Java 的经验和心得吧:

无论什么时候,找到学习的目标,以及学习的套路。找不到的话,就只能事倍功半,付出了很多努力,却迟迟得不到最好的回报。有句话说得好,学习的时候一定要把自己当成一台计算机,既有输入,也要有输出。只输入不输出会堵塞,只输入不输出会枯竭。

1)要有危机意识

计算机这个行业已经很卷了,对吧?但每年依然有大量的新人涌入,你不刷题,你不下劲,自然就会有人把你甩在身后。想要拿到满意的 offer,最好按照我说的来!该打基础的使劲打!

2)多看信息密度大、质量高的资料

我之前提到的这些书籍,真正是经过了时间的检验,是一些特别棒的学习资料,学完后真的会很有帮助,如果你手头上还有什么《21 天学会 JXXX》,不好意思,扔掉吧!

3)多交流,多思考,刻意练习像算法,基本上大厂是必考的,所以不要产生厌恶的情绪,该刷还是要刷啊!你不刷,岗位就给别人了,多难受LeetCode 和牛客网上都可以刷题,如果觉得自己没有解题思路的话,可以看看下面这份刷题攻略。

最后,我再强调一下,一定要动手敲代码,做笔记,把自己没有理解的知识点总结下来,哪怕是画一些思维导图伟大的牛逼之前总是傻逼式的坚持,自学 Java 的过程中,你可能会遇到各种各样的困惑,重要的是,一定要坚持。

我是 @沉默王二 ,如果回答对你有帮助的话,记得给我点个赞。也可以顺带关注下我,学习路上一起手拉手,小步快跑~

收藏
  • 人气文章
  • 最新文章
  • 下载排行榜
  • 热门排行榜