看书学Java的最亻圭路线

2024-01-09 20:59
文章标签 java 看书 路线

本文主要是介绍看书学Java的最亻圭路线,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

疫情以来,好久没出差了,今天出差去趟上海,早上 4 点多就起床了,到机场天都没亮。到登机口离起飞还一小时,趁着等飞机的时间,抓紧码字,把这篇文章收个尾。

今天和大家说说学 Java 的读书路线。路线中的书籍我自己都看过,希望整理的这份读书路线,能帮大家少走弯路,对大家学 Java 有个参考。

初学乍练

入门 Java,推荐《Java核心技术》第 11 版,这其实是一套书,分为两本:

  • 卷1 基础知识(豆瓣 9.2 分)
  • 卷2 高级特性(豆瓣 8.4 分)

我估计 70% 的 Java 程序员入门看的是这本书,写的经典、全面,对 Java 各种特性,都会有对应的代码示例。

不过,这里的内容,有不少是没必要学的。我在以前的文章提起过,大家可以参考。

同时,光看这本书作为入门有个问题,就是只能知其然,却不知所以然。而不知所以然,必然会导致咱们的基础会不够牢靠。

所以再推荐一本书配合《Java核心技术》一起看,书的名字叫《Java编程的逻辑》(豆瓣 9.1 分),作者马俊昌。

这本书讲解 Java 基础知识的基础上还会告诉你底层的原理,比如,Java 的枚举本质是什么,还会告诉你 Java 为什么这样设计 API。

总之,《Java核心技术》和《Java编程的逻辑》联合学习,算是珠联璧合,对入门 Java 是再合适不过的了。

这里多说几句,入门打基础十分重要,对于编程这种实践类的学习,想打好基础,光靠读书,是远远不够的。一定要经过大量的代码练习。所以,在这个时期一定要多作代码练习。这里,我给出一些可以自己尝试的练习:

  • 排序算法的小练习
  • 字符串查找的小练习
  • 对系统文件做下增删查改
  • 递归的小练习
  • 使用 Java 集合的小练习
  • 写个小游戏、小东西能综合训练下学到的所有技能

得窥门径

做程序员,大部分的时候,咱们都需要通过写各种各样的 SQL 操作数据库。咱们是 CRUD Boy 嘛。

所以,SQL 咱们要学,学 SQL 我推荐《SQL必知必会(第5版)》(豆瓣 9.5 分)。

这本书的组织结构非常好,哪怕是你对 SQL 一窍不通,也能通过这本书的引导,由浅入深的把 SQL 语言学个七七八八。

更重要的是,这本书叫必知必会,也就是说,它的内容都是精挑细选,必须学的内容。里面半分冗余的知识点都没有,内容全是干货。一定要好好读这本书。

略有所成

学会了 Java 基础,知道了怎么用 SQL 之后,如果往下走,想继续提升自己该学什么?

我的答案是去深入掌握多线程编程。因为只有懂了多线程编程,咱们才能处理各种稍微困难的需求。比如,快速处理大量用户对系统的访问;又比如,想同时访问多个第三方接口。

多线程编程又叫并发编程,其实是很复杂的事情,看一本书就想掌握它是不太现实的。我这里会推荐三本书,配合起来,一步步从多线程的原理到多线程的实战全部贯穿起来。

对于多线程的理解,我推荐的第一本书是《Java并发编程实战》(豆瓣 9.0 分)。

这本书是一本非常经典的关于多线程编程的书。里面对Java的多线程方方面面的细节都讲的非常到位。只是由于多线程确实太复杂,涉及到的知识也太广了,导致这本书出现了两个问题:

  1. 理论过多:《Java并发编程实战 》里会花费很大篇幅,去阐述一些多线程涉及到的理念和思想,但是代码例子却给的极少,这就导致咱们看的很吃力、很累。
  2. 某些点讲的不够透:多线程涉及到的知识非常广,《Java并发编程实战 》是尽量全涉及了。这就造成很多知识点讲的很浅,没有讲透。这就会让人很困惑,导致有些知识点连不起来,影响对整本书的理解。

所以,我这里推荐第二本书《Java多线程编程实战指南(核心篇)》(豆瓣 9.0 分)。

这本书代码例子多,《Java并发编程实战 》有些讲不透的知识点,这本书会有所弥补。所以,当看《Java并发编程实战 》的时候,不管是需要练习代码,还是想去搞清楚知识点,《Java多线程编程实战指南 》这本书都极为合适。

多线程我再强调一下,这是 Java 很高级的特性,也是很难的部分,很多哪怕是工作了 3、4 年的程序员,对此也掌握的不到位。

上面说的两本书,有原理,有代码示例,如果是换成别的知识,那可能足够了。可是对于多线程这么复杂的东西,我们还需要把学过的所有零碎知识点去综合贯穿起来,形成关于多线程的知识体系才算是真正掌握到位。

所以,这就得推荐第三本书《图解Java多线程设计模式》(豆瓣 8.6 分)。

跟着这本书的讲解,把咱们所有的知识点通过练习书中介绍的所有模式,去串起来,才最终算是多线程的学习告了一个段落。

登堂入室

学会了多线程编程,咱们此时要知道一件事,大部分时候,多线程编程,其实就是网络编程的最重要的一种手段。而网络编程,虽然有了 Netty 框架等很优质的网络框架了,但是理解背后的原理,对咱们定位项目的 bug,优化代码的性能,帮助非常大。

《Java TCP/IP Socket编程》(豆瓣 8.0 分)

这本书,我们既可以去学到必要的网络基础,也能学会怎么用 Java 去网络编程,非常推荐。

对于网络编程,大家都知道,这是易学难精的技能。学懂原理,了解网络编程,看看我上面推荐的书就够了。但是,要精通网络编程,写好网络相关的程序,那是相当不容易的。

所以,在 Java 圈,一旦遇到网络编程相关的事情,大家都会采用 Netty 框架去做。Netty 框架让我们能不需要成为网络编程大师,就能写出非常优秀的网络应用。

了解 Netty 框架对咱们也是非常重要的一件事,学习 Netty 框架,推荐《Netty实战》(豆瓣 7.5 分)。

这本书,把 Netty 的方方面面讲的很全,Netty 的设计思想也覆盖了大部分,对于熟练使用 Netty 完全够用了。

融汇贯通

作为 Java 后端工程师,几乎都要用到 Spring 框架的。哦不对,Spring 已经不能叫框架了,得叫体系、生态了。学好 Spring,对咱们找工作,做项目,甚至设计架构,都是极其重要的。

但是,学好 Spring 也没那么容易。Spring 发展到现在,它已经成为了一套完整的体系了,而且 Spring 迭代非常快,几乎每年都会出现大的变化。所以,市面上的书籍,单独靠那么一两本书,是不太可能学好的,建议把一些经典的 Spring 的书联合起来读,才有希望深入掌握Spring。

对于 Spring 这套体系,它现在是又多又繁杂,就算要入门,都不知道从何处下手。这里,我想谈谈我的经验。

虽然 Spring 变化确实很快,但是,它有几个地方,是这么多年几乎没发生过什么变化的。

没有什么变化的第一部分,就是 Spring 的设计思路。Spring 的设计思路,永远都是作为 Bean 的容器,去管理好 Bean ,这是它永恒不变的地方。

没有什么变化的第二部分,就是 Spring 的内核。Spring 的 ApplicationContext 等核心 API 是没有什么大的变化的。

所以,咱们就应该先从 Spring 这些不变的核心先入手。掌握住 Spring 的思想,Spring 的内核,哪怕 Spring 本身再变化,对咱们来说,也只是一种外在的 API 变化而已。

要达到这个目的,我会推荐大家看一本很老的书《Spring揭秘》(豆瓣 9.1分)。

虽然这本书主要是以 Spring3 的讲解为基础,但是,这本书对于 Spring 的编程思想讲的极为透彻,是有关 Spring 的书中,难得一见的好书。入门 Spring,这是我推荐的第一本书。

理解了 Spring 的编程思想不够,我们需要利用这些思想,去实践演练,加强我们对 Spring 的理解。

这时候,就得有本书,能真正的带我们实战下Spring的各个组件——《精通Spring 4.x》(豆瓣 8.5 分)。

我知道现在 Spring 5 在逐渐进入主流,但是,Spring 5 也只是在 Spring 4 的基础上增加了一些新特性。而 Spring 5 的书,我至今没看到有《精通Spring 4.x》这本讲的这么全的,所以,写代码做练习,还是推荐用《精通Spring 4.x》。

理解了 Spring 的理念,用很多代码练习练习实践之后,我们就只需要知道 Spring 5 的一些特性就能跟上 Spring 发展的步伐了。

可以看下《Spring 5 开发大全》(豆瓣 8.3 分),这本书对 Spring 5 的新特性介绍很全。我们只需要翻翻,熟悉新特性、新 API 即可。

另外,Spring 5 有个变化最大的地方:它用了很多响应式编程的东西。这方面,大家相对比较陌生,有闲有钱的话,可以看看《Spring响应式编程》。

关于 SpringBoot,由于它的易用性,它已经迈入主流。不过 SpringBoot 也只是以 Spring 为内核的一套应用框架而已。找本书,学习它是如何通过添加一些模块和功能,去降低大家使用 Spring 的门槛的,也就够了。

同样,有闲有钱的话,可以读下《Spring Boot 2实战之旅》。

返璞归真

前面大家跟着我推荐的书学习完了,基本就可以是一位非常合格的程序员了。但是,注意,你只是合格,但是还不算优秀。

如果我们想更加优秀,让自己职业道路能走的更远,还需要一些非开发的知识学习。只有通过叠加这些 Buff,我们才能在众多的技术同事中,脱颖而出,锥出于囊。

在实际开发里,代码可读是我们评价同事好不好合作的一个重要标准。一位同事,写的代码乱七八糟,你不管是接手维护还是想只是用一些对方的代码,都非常别扭难受。

所以,咱们的代码一定要写的干净整洁可读,给别人非常好的印象。这样,对咱们的团队合作和职场发展,才会有更大的帮助。

把代码写的干净可读,我推荐看《代码整洁之道》(豆瓣 8.7 分)。

这本书,讲解了什么才是好的代码,跟着这本书学,你写的代码会更让人赞赏,也更让人愿意和你合作。

除了代码可读,咱们还得让咱们写的代码好维护,易扩展。因为需求是千变万化的,如果你写的代码可维护性,可扩展性不够,那后续你会陷入无休止的改代码海洋里,你所有的精力都会被这些不停变换的需求吃干抹净,直接让你寸步难行。

而写易扩展,易维护的代码,就必须知道设计模式。有了设计模式,你闭眼都能写出不错的代码来。学习设计模式,推荐《Java设计模式》(豆瓣 9.1 分)。

这本书,对设计模式的来历发展,概念思想,讲解的淋漓尽致,推荐阅读。

Java 这套读书的学习路线,是我一本一本全部读过,才推荐给大家的,希望大家最终能坚持读完,学透。

最后再总结一下这个书单:

  • 《Java核心技术》卷1、2
  • 《Java编程的逻辑》
  • 《SQL必知必会》
  • 《Java并发编程实战》
  • 《Java多线程编程实战指南(核心篇)》
  • 《图解Java多线程设计模式》
  • 《Java TCP/IP Socket编程》
  • 《Netty实战》
  • 《Spring揭秘》
  • 《精通Spring 4.x》
  • 《Spring 5 开发大全》
  • 《Spring响应式编程》
  • 《Spring Boot 2实战之旅》
  • 《代码整洁之道》
  • 《Java设计模式》

以上书单都是我推荐的,其他没列的书籍,比如《Java编程思想》、《重构》等等,也都是好书,大家自己酌情补充。

这篇关于看书学Java的最亻圭路线的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/588414

相关文章

Java实现检查多个时间段是否有重合

《Java实现检查多个时间段是否有重合》这篇文章主要为大家详细介绍了如何使用Java实现检查多个时间段是否有重合,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录流程概述步骤详解China编程步骤1:定义时间段类步骤2:添加时间段步骤3:检查时间段是否有重合步骤4:输出结果示例代码结语作

Java中String字符串使用避坑指南

《Java中String字符串使用避坑指南》Java中的String字符串是我们日常编程中用得最多的类之一,看似简单的String使用,却隐藏着不少“坑”,如果不注意,可能会导致性能问题、意外的错误容... 目录8个避坑点如下:1. 字符串的不可变性:每次修改都创建新对象2. 使用 == 比较字符串,陷阱满

Java判断多个时间段是否重合的方法小结

《Java判断多个时间段是否重合的方法小结》这篇文章主要为大家详细介绍了Java中判断多个时间段是否重合的方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录判断多个时间段是否有间隔判断时间段集合是否与某时间段重合判断多个时间段是否有间隔实体类内容public class D

IDEA编译报错“java: 常量字符串过长”的原因及解决方法

《IDEA编译报错“java:常量字符串过长”的原因及解决方法》今天在开发过程中,由于尝试将一个文件的Base64字符串设置为常量,结果导致IDEA编译的时候出现了如下报错java:常量字符串过长,... 目录一、问题描述二、问题原因2.1 理论角度2.2 源码角度三、解决方案解决方案①:StringBui

Java覆盖第三方jar包中的某一个类的实现方法

《Java覆盖第三方jar包中的某一个类的实现方法》在我们日常的开发中,经常需要使用第三方的jar包,有时候我们会发现第三方的jar包中的某一个类有问题,或者我们需要定制化修改其中的逻辑,那么应该如何... 目录一、需求描述二、示例描述三、操作步骤四、验证结果五、实现原理一、需求描述需求描述如下:需要在

Java中ArrayList和LinkedList有什么区别举例详解

《Java中ArrayList和LinkedList有什么区别举例详解》:本文主要介绍Java中ArrayList和LinkedList区别的相关资料,包括数据结构特性、核心操作性能、内存与GC影... 目录一、底层数据结构二、核心操作性能对比三、内存与 GC 影响四、扩容机制五、线程安全与并发方案六、工程

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

如何使用Java实现请求deepseek

《如何使用Java实现请求deepseek》这篇文章主要为大家详细介绍了如何使用Java实现请求deepseek功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1.deepseek的api创建2.Java实现请求deepseek2.1 pom文件2.2 json转化文件2.2

Java调用DeepSeek API的最佳实践及详细代码示例

《Java调用DeepSeekAPI的最佳实践及详细代码示例》:本文主要介绍如何使用Java调用DeepSeekAPI,包括获取API密钥、添加HTTP客户端依赖、创建HTTP请求、处理响应、... 目录1. 获取API密钥2. 添加HTTP客户端依赖3. 创建HTTP请求4. 处理响应5. 错误处理6.

Spring AI集成DeepSeek的详细步骤

《SpringAI集成DeepSeek的详细步骤》DeepSeek作为一款卓越的国产AI模型,越来越多的公司考虑在自己的应用中集成,对于Java应用来说,我们可以借助SpringAI集成DeepSe... 目录DeepSeek 介绍Spring AI 是什么?1、环境准备2、构建项目2.1、pom依赖2.2