写点什么

Java 学习之路 -- Java 怎么学?

发布于: 2021 年 03 月 29 日

@[toc]

java 基础怎么学?


当时,作为懵懂的小白,大一学习了cc++,还有数据结构,后来才自学的java。有了c++的基础,其实学java确实感觉挺容易上手。如果没有c或者c++的基础,建议开始需要先把java的基础打好,基础是指什么?基础的语法,能用!至于源码,不建议在刚刚开始学就看源码,绝对劝退!!!


推荐几本可以入门的书籍:

- 简单易懂,可以教你如何像一个对象开发者一样去思考,图文并茂学习方式能让你快速地在脑海中掌握住知识

- 很全面,很厚,覆盖了 Java 的基本语法结构、Java 的面向对象特征、Java 集合框架体系、Java 泛型、异常处理、Java GUI 编程、JDBC 数据库编程、Java 注释、Java 的 IO 流体系、Java 多线程编程、Java 网络通信编程和 Java 反射机制。

- 特别经典的书籍,内容比较实在,但是没有疯狂 Java 讲义那么接地气,很简洁,上手难度也不是很大。


进阶书籍:

- 圣经段位,绝对的好书,但是不适合刚刚入门的小白,如果你觉得想啃下来,也可以阐释,里面讲得东西,很详细,时常透露出:Java 语言为什么这样设计,如果想进阶,这绝对是本好书。

- 这本书是我大学时一门选修课的课本,主要是讲解 Java 里面的网络应用,可以考虑看看,但是优先级不是很高。


看视频还是看书?

前期新手绝对会有的一个疑惑,看书还是看视频?看书感觉很枯燥,坚持不下去,看视频感觉很爽,但是看完好像不是很能记住。


个人觉得,前期看书会快点,但是确实很枯燥,可以在 b 站(小破站牛逼)上找一些全集的视频来看,记得,边看边敲,基本记不住!!!建议,看完一节或者一章,凭借记忆把代码敲出来,一开始肯定很慢,但是长期来看,帮助很大,基本可以记住并掌握。


如果视频的话,推荐以下两个:


- 宋红康老师的视频,七百多集了,真的可以看很久,内容真的很全,讲的也很细致,不会很枯燥,老师挺有趣的,无利益相关,我在 b 站看过老师的 Jvm 视频。

- 也是七八百集,挺详细


总结:视频不在于多,书籍也是,越想要全面,越不太可能,前期有一本书,一个视频就可以了,抓大放小,要不,很容易就放弃,真的是从入门到放弃。


多打,多练习,熟能生巧!代码量上去才能发生质变!


在这个过程中,主要学习的东西(每一个都可以分得很细,下面只是大概,想到再补充):

  • 基本数据类型

  • 常用关键字

  • 接口

  • 抽象类

  • 集合

  • 继承(子类和父类)

  • 反射

  • 序列化

  • 动态代理

  • 注解

  • 锁与多线程

  • IO 编程

  • JDBC

  • Java 网路编程


学完基础学什么?

我当时学完 Java 的基础之后,JDBC 学了,知道怎么连接数据库了,就想着搞网站,我想大部分人也是,学了东西,就想做个东西出来!!这个很正常的心态,不断地有反馈才能不断往前~


我当时搞作业搞了一段时间的前端以及 jsp 之类的,如果学习 Java,可以把前端知识放在一个低一点优先级的级别,前期基本理解和会用就可以,不要忘记自己真正的目标。


我的前端是在w3School学习的,你们也可以去学习,当时还在慕课网学习了视频,不过这些都不重要,主要是会点 html 和 css,js 就可以。


学完前端的大致知识,可以考虑学 Servlet 和 jsp,也有一部分人说其实不需要再学习这个东西,现在直接上框架,就可以。我想说的是,如果你的时间很紧急,确实可以这么做。如果你的时间比较充裕,在大学,可以考虑一下把这一块也学一下,因为以后你不会再回来学了,而所谓的框架,也是建立在这上面的。


有时候,走慢一点,是为了走得更远。

推荐 JavaWeb 的书籍两本:

- 这本书主要围绕 Java Web 相关技术从三方面全面、深入地进行了阐述。首先介绍前端知识,即在 JavaWeb 开发中涉及的一些基本知识,包括 Web 请求过程、HTTP、DNS 技术和 CDN 技术。其次深入介绍了 Java 技术,包括 I/O 技术、中文编码问题、Javac 编译原理、class 文件结构解析、ClassLoader 工作机制及 JVM 的内存管理等。

- 这本书主要是讲解了 JavaWeb 和 tomcat 相关的知识点,算是为了之后学习 JavaWeb 做准备。


再推荐一个博客地址,主要是 JavaWeb 的笔记,讲得挺好的:JavaWeb


学完这些可以学习框架了,框架里面用得最多的是反射,动态代理!!!一定要熟悉。


当时我学习的框架不是主流的,是Jfinal,可能大家不怎么听过,那个框架比较简单,但是现在不建议大家去学习,可以了解。


接下来大家需要学习的是 SSM(Spring+SpringMVC+Mybatis),为啥学习 Spring,不是 SpringBoot,因为 SpringBoot 是建立在 Spring 的基础上的,学了 Spring,SpringBoot 很快上手。


建议学习的话,可以先学 Mybatis,前面有 JDBC 的基础,可以很快上手。推荐自己的博客:Mybatis学习笔记


如果学习视频的话,我建议去 b 站搜索一下,例如:SSM框架合集


关于 SSM 的学习视频很多,大家各自判断自己适合什么类型,有一本书籍:Java EE互联网轻量级框架整合开发 : SSM框架(Spring MVC+Spring+MyBatis)和Redis实现,是对 SSM 的整合以及讲解,还不错,可以考虑一下。


在这个过程中,你也了解了如何处理日志,异常等等。


Spring 的学习中,主要掌握 AOP 和 IOC 的原理以及应用,学习的过程,首先是需要会用,然后再去挖源码,要是直接上来看源码,又是一次劝退。


学习完 Spring 之后,可以上手 SpringBoot,这个网上也有很多教程,推荐这个网站:

how2j

自己上 b 站按照播放量查找也是可以的,重要的是行动,不是资源!!!


Spring 有两本本比较好的书籍推荐:


前面讲解的有数据库以及 redis 相关的,如果关系型数据库,建议在网上搜索教程学习即可,譬如:菜鸟教程


关于入门书籍:Mysql必知必会


如果是深入书籍,推荐:MySQL技术内幕 : InnoDB存储引擎(第2版)


redis 的学习,基本的数据类型,操作,这些学习直接网上菜鸟教程也有:redis教程


如果需要学习如何使用?推荐这本书:Redis 深度历险:核心原理与应用实践


了解了使用之后,再去做 redis 的源码分析?牛人可以直接下载 redis 的源码,第一版只有几万行代码,当然,需要 c 语言或者 c++基础。书籍:Redis5设计与源码分析


几个常用框架学完学什么?


其实这个时候,你已经可以进去开发的阶段了,后面的路需要自己摸索了。


MQ

也就是消息队列,挑一个比较常用的大型的进行学习就可以了,不要贪图多,比如 Kafka 或者 RabbitMQ,系统做异步解耦合的时候经常遇到。


先学会如何使用,然后学习里面的原理,架构。


JVM 的知识跑不掉


JVM 怎么学?

肯定的推荐周志明老师的 深入理解Java虚拟机,这本书推荐多看几遍。


除此之外,b 站宋红康老师的视频也强烈推荐:JVM全套教程


搞定这两个之后,再找一些 JDK11 的新特定的书籍,来看看,基本问题不大了。


微服务等等


前面学习的,肯定是单体的应用,也就是一台服务器,一个应用。当用户量到达一定数量,需要做应用拆分,得学习的知识有:分库分表,RPC 框架,微服务,注册中心,监控等等。


一开始推荐看两本书,了解分布式的一些知识,知道架构大致的演变过程,为什么要这样做,以前怎么样,怎么样变化的。


前面两本书看着挺爽的,拓展知识面,但是不回特别深入,算是一个概述以及全面了解。要想两本书吃透,不可能的!!!一口怎么吃成一个胖子呢?是吧。


然后再看看大型分布式的架构相关知识:

大型分布式网站架构设计与实践 : 一线工作经验总结,囊括大型分布式网站所需技术的全貌、架构设计的核


然后就是挨个知识点各个击破(下面知识部分相关的例子):

  • RCP 原理

  • Netty

  • DUBBO

  • Zookeeper


其他


数据结构和算法

如果你是科班的,数据结构和算法基本掌握,那下面这一部分仅供参考:

- 俗称红书,最推荐的 Java 程序员学习的算法书籍,入门很友好,视频貌似 b 站也可以找到。

- 国外数据结构与算法分析方面的经典教材,使用卓越的 Java 编程语言作为实现工具讨论了数据结构(组织大量数据的方法)和算法分析(对算法运行时间的估计)。本书把算法分析与有效率的 Java 程序的开发有机地结合起来,深入分析每种算法,内容全面、缜密严格,并细致讲解精心构造程序的方法。

- 比较简单的算法数据,挺有意思,难度不大,挺薄。

- 绝对劝退书籍,谨慎!很多数学公式推导,以及伪代码,建议作为程序员道路上相伴的书籍🤣🤣🤣(反正我是没有看完,太变态了)


如果刷题的话,推荐先刷剑指 Offer,然后 LeetCode 每日/每周(时间自己定)一题,推荐一下自己的刷题笔记仓库:codeSolution


【作者简介】

秦怀,公众号【秦怀杂货店】作者,本人就职于国内某知名在线旅游公司,技术之路不在一时,山高水长,纵使缓慢,驰而不息。个人写作方向:Java 源码解析,JDBC,Mybatis,Spring,redis,分布式,剑指 Offer,LeetCode 等,认真写好每一篇文章,不喜欢标题党,不喜欢花里胡哨,大多写系列文章,不能保证我写的都完全正确,但是我保证所写的均经过实践或者查找资料。遗漏或者错误之处,还望指正。


平日时间宝贵,只能使用晚上以及周末时间学习写作,关注我,我们一起成长吧~


2020年我写了什么?


开源编程笔记


发布于: 2021 年 03 月 29 日阅读数: 20
用户头像

纵使缓慢,驰而不息。 2018.05.17 加入

慢慢走,比较快。公众号:秦怀杂货店

评论

发布
暂无评论
Java学习之路 -- Java怎么学?