另外,我在知乎上回答了一个自学 Java 的问题,点赞数 2000+,浏览量更是达到了 42 万。

02、读书还是看视频
有了这套路线图,是不是瞬间就感觉明朗了起来,学习起来就不会犯迷糊了,知道下一步该做什么,下下一步做什么,就好像打游戏的时候有一张地图踩在脚下。
那接下来,就是把 Java 基础打好,这对以后的学习很有帮助。怎么打好呢?
学习之路是一项很逆人性的差事,并不是每个人都能够坚持下来,尤其是打基础的阶段,过于强求的话可能就会适得其反,没入门先放弃了。我身边这样的例子真的不少,所以你要告诉自己:
1)对 Java 感兴趣,对互联网的高薪感兴趣,对“程序员秃顶”的段子视若无睹,只有这样,你才能真正地坚持下去。
2)富有坚韧不拔的学习能力,别总遇到一点点困难,就自暴自弃。
3)设定一个目标就死磕,如果你经常拿不到最终结果,需要反思是不是从来没有成功做成过一件困难的事情,没成功过所以不知道“坚持”可以大大提高成功的概率。
4)拥有解决问题的勇气,学习的过程中注定会遇到许许多多的坑,要敢于跳进去,然后再爬出来,并且是在不寻求他人帮助的前提下。我见过太多的同学,遇到点屁大的问题就直接扔在群里等大牛解答,殊不知搜索引擎是第一步。
有人喜欢看书,有人喜欢看视频,有人喜欢都看。也没有必要做出非此即彼的选择。
如果你喜欢读书的话,可以按照我下面给出的 GitHub 仓库去下载自己喜欢的电子书。里面的书单很全,你只需要对应一种技术选择一本你喜欢的就可以了,不要贪多。
https://github.com/itwanger/JavaBooksGitHub 访问比较慢的话,也可以访问码云,马上两千 star 了,你也可以贡献一个。
https://gitee.com/itwanger/JavaBooks如果你喜欢看视频的话,我推荐老九门的零基础学 Java,B 站和与tube 上都有。B 站的地址我贴一下。
https://www.bilibili.com/video/BV1fx411a7zo主讲人徐嵩的授课风格非常风趣,听起来很过瘾,我最近没事的时候就看一集,回味一下当初学 Java 时没有视频资料的苦涩。
看视频和看书的体验完全不同,在我看来,通过视频学习的好处主要有两点:
视频中讲的东西比较形象,有一种身临其境的感觉。
视频有一种你看不到的魔力,可以提高你学习的自主性。
所以没必要排斥看视频这件事。学习的过程中,不要忘了动手去实践,这里推荐一个开源项目——vhr,或者叫微人事,我的好朋友江南一点雨是作者,所以我一直在大力推荐,是真的不错(我也是贡献者,逼近 20k star 了)。
https://github.com/lenve/vhr打基础的过程中,一定要多敲代码,在敲的过程中肯定会出错。不管你是看书,还是视频,你觉得作者说得好像挺简单的,以为看过一遍后自己也理解了。但往往不是这样的,程序在敲的过程中会发生许许多多意想不到的问题,有时候作者限于篇幅的原因,往往会选择性地跳过一些细枝末节,但这些对于编程的初学者来说,往往很难驾驭。只有经过自己的手敲出来,才能证明真的是会了,懂了。
不是有那句俗话嘛,“当局者迷旁观者清”,如果你站在读的角度,就会很容易自欺欺人;但如果自己亲自实操的话,就完全不一样了,不仅印象深刻,还为以后的复盘做好了备份。在敲的过程中,最好把自己认为经典的案例分门别类,放到 GitHub 上或者码云上,等到以后再用的时候,也好找——书到用处方恨少,代码也是。
出错了没关系,把错误解决掉的过程中你能听到自己成长的声音,就好像雨后春笋一样。
03、哪些后端知识不需要再学了
按照我上面说的方法,顶多半年时间,就可以打好坚实的 Java 基础了。如果你在学习的过程中遇到了问题,也欢迎随时和我交流。切记,要坚持,三天打鱼两天晒网只会打不到鱼还会弄破了网。
张无忌在学太极拳的时候,他爹的师父张三丰就提醒他一定要把之前所学习的武功全部忘掉,忘得越多才能学得越快。
同样的,自学 Java 的时候一定要先知道哪些知识不需要再学了,毕竟技术的更新迭代就好像火箭一样快,如果不懂得断舍离,那学起来就不免太痛苦了。
1)AWT 和 Swing
真不知道为什么,有些书籍还在介绍 AWT 和 Swing,已经 2020 了,谁还会用 AWT 和 Swing 去开发桌面应用呢?就我所知,C++ 程序员会用 MFC,C# 程序员会用 Winform 和 WPF。甚至还可以用一种更时髦的技术(比如 Electron)把 Web 网页裹一层华丽的外衣,变成可执行文件。
2)Applet
作为网页插件技术,Applet 压根就没流行起来,就连曾经的热门 Flash 也要淘汰了。
3)XML
XML 还没有被淘汰,应用的地方还有不少。但是作为一种数据传输格式,它正在被 JSON 替代。
4)JDBC
我个人不建议再学习偏底层的 JDBC 了,尤其是对于时间宝贵的自学程序员来说。与其花这点时间,不如把精力投入到 MyBatis 的学习上。
5)Struts
Struts 是早年一个优秀的 MVC 框架,单从技术的角度来看,还是蛮不错的。但是自从有了 SpringMVC 后,Struts 就被拍死在沙滩上了。
6)Hibernate
在我刚参加工作那会(2010 年的时候),持久层框架用的正是 Hibernate。但时过境迁,Hibernate 太重量级了,学习成本太高,取而代之的是轻量级的 MyBatis(支持定制化 SQL、存储过程以及高级映射)。
7)JSP
说起来惭愧,我现在维护的一个项目,视图层用的依然是 JSP。但如今流行的是前后端分离+微服务,JSP 就显得不合时宜了。
04、高效的学习方法
如果你不是后端程序员,学的是大前端,也需要一份前端学习路线的话,那么我推荐一个我的好朋友——小鹿,他那整理了一份目标很明确的学习路线图,我这里贴了一下下载地址:
链接:
https://pan.baidu.com/s/1Z7le7FVVhoQA23t0KyxPyw密码: pa8d
附带的还有一份前端面试小册,非常精美,包含的内容有以下这些,全是小鹿的原创。
有了学习路线图之后,学习的范围就缩小了,事情就成功了一半,接下来就是学习方法的问题了,我这里分享一些我自己的心得体会。
第一,善用搜索引擎。平常需要找资料,需要解决问题,如果自己一时半会没有方法的话,就去搜。
Google 是第一选择,Bing 是第二选择,微信搜索是第三选择。PC 端的话,Google 和 Bing 就很靠谱,基本上要找的东西,都有好的结果。手机端的话,就用微信搜,答案也很靠谱。
第二,学会提问。如果搜索引擎找不到答案的话,不要直接把问题抛到群里,抛给同事、领导,或者大牛,要先对问题梳理一下。
我想问什么,问题发生的环境是什么,问题的描述是否足够清楚,态度是否端正。
不要唐突,不要冒昧,还要脸皮厚,很难,对吧?这就是提问的艺术啊。我有 9 个氛围很不错的技术交流群,如果你需要的话,可以联系我。
第三,善于总结和归纳。如果你觉得“怎么总是感觉记不住啊,学完就忘啊,有什么好的办法吗?”
有啊,当然有。学完一个知识点,如果需要动手去实践,那就去敲代码,敲一遍,还是理解,再敲一遍。如果真的感觉自己理解,尝试写篇文章,把自己的学习心得分享出来,看看是否能够教会别人。
如果自己是半瓶水,倒出去只能是半瓶水;只有自己是一瓶水,倒出去才可能多余半瓶水,对吧?
归纳总结的好处就是把零散的知识变成体系,在脑海中构建一副蓝图,日积月累,你就会发现自己也从一条小溪变成了海洋。
顺带推荐一下费曼学习法,灵感源于诺贝尔物理奖获得者理查德·费曼,运用费曼技巧,只需要花 20 分钟就可以深入理解知识点。听起来是不是很神奇?
费曼学习法的四个步骤:
第一步,能把一个孩子教懂。这有点类似我们古代的一名诗人,白居易,他希望自己的诗连老太婆都能看得懂,那就是好诗。
具体怎么做呢?拿出一张白纸,写下要学习的主题,想一下,怎么把它教给一个孩子,你会讲哪些,然后记下来。
你可以把白纸换成 iPad 了,有道云笔记了,等等。
第二步,回顾。当我们尝试把知识点讲给小孩子的时候,可能会卡壳,那就需要把这些卡壳的点重新学习,这些点可能就是我们认知的边界——重新学习的地方。
第三步,简化语言。如果发现表述的文字比较复杂,不够清晰,那就尝试把这些内容读出来,直到通顺,直到自然,直到足够简练。
第四,传授。这点虽然是可选项,但真的非常重要。如果确保自己理解了,那就把它教给别人,看你能否把别人教懂,也就是我说的善于总结和归纳。
整个思维导图( 推荐的在线网址有百度脑图、ProcessOn)了,或者博客(建议使用 markdown 格式)了。
第四,多去实践。实践出真知,到底马谡行不行,给他一个街亭守一守,对吧,收不住就是纸上谈兵,没啥鸟用。
GitHub 或者码云上有很多优秀的开源项目,挑一些优质的,down 下来,去研究研究,在原有的代码基础上,尝试做一些优化,或者增加一些功能。
自己动手去做的过程中,你会发现,哇,真的有新大陆呀!
第五,熟练使用开发工具。Intellij IDEA、VSCode 都是非常流行的开发工具,能够帮助我们在学习和工作中变得更加高效,里面有没有快捷键,有没有什么骚操作,对吧?
在使用 Intellij IDEA 编写代码的过程中,一定要注重代码规范。提前就把 SonarLint、阿里巴巴开发规约这些插件安装上,写完代码就 check 一下,按照提示对一些不良的习惯做出修正。
硬核,这 3 款 IDE 插件让你的代码牢不可破
如果 Intellij IDEA 下载比较慢的话,我也提供了离线版:
https://pan.baidu.com/s/1W9AsoLrBJTEtE9JTJlqNXw,提取码:pa92
第六,学好英语。这一点真的真的真的非常非常非常重要重要重要,即便是英语功底本身很差,一定不要自暴自弃,对吧?雷军敢一句“are you ok”走天下,你怕什么?
况且,Chrome 浏览器可以安装 Google 翻译插件,Intellij IDEA 可以安装 Translation 翻译插件,只要稍微有点英语的底子,完全不用怵的。
英语水平提高了,可以看官方的文档,可以在 Stack Overflow 上找答案,可以查看 JDK 源码,等等,编程水平就会与日俱增啊。
第七,注意休息。身体健康非常重要,千万不要沦为工作的机器,认为年轻的时候就应该拼命的加班,通过加班提升技术,多挣点钱。这种想法可以有,但要节制,懂吗?
两本电子书,送给你,专业吧?
《程序员健康指南》
https://pan.baidu.com/s/1EssOkFfZV93QIB9IAFmjmw密码:pl0i
《颈椎康复指南》
https://pan.baidu.com/s/1AdqcGTLOUkQxrFFURNYq7A密码:ouhh
05、一点小小的请求
如果这篇文章的确帮助到了你,哪怕一点点,我都觉得非常的开心。当然了,如果你觉得有帮助,请帮忙点个赞,满足一下我的虚荣心,谢谢了。