思考,输出,沉淀。用通俗的语言陈述技术,让自己和他人都有所收获。
作者:毅航😜
前言
如果你是一名Java
开发者,不妨听一听笔者学习Java
过程的这些惨痛
经历,希望我的经历能帮对你学习有所启发。
开端——入门JAVA
想当年笔者还是一个名懵懂的在校大学生时,由于对未来充满迷茫,偶然之际听说Java
似乎很好就业
,所以就在网上买了一本Java
相关的书籍开始自学Java
。笔者至今还记得那本书叫做出版社是
明日科技
。如今已经过去大概六、七年的时间了,或许这本书也已经绝版了吧!也就是通过这本书笔者开始了解了Java
中的基础数据类型,逻辑循环控制、异常处理、集合
等内容,自此也就踏上了一条不归路
。
发展——走进Java web
的世界
其实讲的很基础,但有一点不好的地方就是书中花费了大量的
篇幅
来介绍Java Swing
组件,这让笔者当时产生一种错觉,就是Java Swing
很重要,所以笔者曾花费大量时间去记忆Java Swing
的组件信息,现在想来这样的做法真是好愚。通过这件事笔者总结出一条经验就是:当你研究某件事物时,一定要提前做好功课。 比如,当下这个事物是否还是主流、其是否受到业内人士的高度认可、是否有成熟的生态体系等。不对技术发展现状有一个清晰的认识及评估,最后所面临的结果可能就是“竹篮打水一场空”,看似学了很多,但后续工作基本用不到。
好在笔者及时止损,才未在错误的道路上越走越远。在笔者后续的学习过程中,笔者逐渐了解到有一个名叫Bilibili
的视频平台,上面有很多的学习视频,所以笔者
的自学方式又从看书转移到看视频。
那会像什么黑马、尚硅谷
这些机构还名不见经传,那会B
站能搜到有关Java
相关的视频主要还是尚学堂
的,转换学习方式后,笔者又断断续续的跟着视频将Java
基础重新学了一遍。
再后来,由于新学期课业压力很大,有时一天要上七八节课,所以学习荒废了一段时间。等笔者在重新回看之前所学内容时,发现之前学的都忘得差不多了,所以笔者只能又重新跟着视频再学习了一遍Java
基础。
经历过此事,笔者总结出的第二点经验就是:学习一件事物一定要持之以恒,切勿三天打鱼两天晒网,即使不能坚持每天都学习,也要保证隔个两三天就要对之前学习的内容进行总结回顾。 否则,你有可能陷入这样一种困境,就是一直不断的重复学习相同的内容,然后给自己一种错觉,自己很努力,但结果却总是差强人意,造成这个问题的本质原因就在于你一直在原地踏步!
至此笔者已经学了不下三遍的Java
基础了,再后来笔者就开始学习Java Web
相关的知识了,那会这部分内容笔者是跟着传智播客
的视频学习的,现在好像这个机构和黑马
合并了,反正已经很少听到了。
那会Java Web
的开发模式还是Servlet + Jsp
组合形式,开发起来十分繁琐,尤其在Jsp
页面既可以写Java
逻辑,也可以写前端
相关内容,这使得整个页面十分的混乱。为了写好页面,笔者还曾自学过前端
的相关知识,比如Html、CSS,javaScript、nodeJs
等。
按理来说,学到东西多了应该对未来更加坚定了,但结果却恰恰相反,那时的我反而更加迷茫了。其实主要迷茫于职业选择,自己匜搞不清自己未来到底是从事前端
还是后端
开发。因此 笔者总结出的第四点经验就是:不要让脑海中充斥太多概念,太多的概念意味着你有着更多的选择,更多的选择权往往会使你就会变得焦虑、迷茫,从而不断内耗。 这一点在你阅读源码时尤为重要,你有时觉得源码难读,本质原因就在于你在脑海中塞入了太多的无关紧要的类。比如,你要分析Spring
中容器加载的过程,然后对这源码一顿DeBug
,进而不断在各个类之间进行跳转,最后结果只能是给自己绕晕了。所以,你一定要学会做减法
。
何为做减法
?其实很简单就是对所学内容进行总结提炼。注意这里的总结不是让你长篇大论去论述,而要做到短而精,尽量用简短话来陈述,当然这个过程并不是一蹴而就的,它需要你不断的迭代,不断的思考,而正是凭借着一次次的思考,才让你不断对某项技术有了更加清晰的认识。 一言以概之,学习知识是一个由厚到薄
的一个过程。
深入——接触框架源码
学习完Java Web
原生的开发手段,下一步也就顺理成章的进入到了框架的学习。那会的框架还是SSH、SSM
这一套东西,尤其SSM
的整合要配置很多东西,有时候版本配置的不一致都可能导致整个项目无法启动,笔者在这上面没少踩坑,为此笔者还专门记过Spring
整合Spring、Mybatis
的过程,今天在回看,这又是在做无用功
。因为SpringBoot
框架的出现,让Web
应用的开发只需引入几个相关的Stater
就能完成。
此外,笔者那会还听网上很多人都在说读源码
如何如何重要,那会笔者就傻傻的开始研究框架源码,由于笔者当初水平有限,阅读源码的过程那是非常的痛苦,因为根本不知道如何去看,有段时间直接开始摆烂。因为真的太难了。在没人指引的情况下,我也不知道该如何去看,就傻傻的设置一个断点
然后一通乱Debug
。
再后来,我开始接触一些机构有关源码的培训视频,例如,慕课网、咕泡、黑马、尚硅谷
等,基本市面上的源码分析课我都大致看过。虽然看了很多视频,但我依旧很焦虑。每个平台的教学风格都有所不同,有些内容你表面看着“很新”,但换汤不换药,只不过是一种概念的两种不同理解罢了。为此,笔者得出的第五点建议就是:学习之初不要贪“多”,认定一个方向就坚持去做,不要被外界的声音所干扰。 只有当你对一件事物足够理解后,你再去广泛的涉猎,否则什么都学只会害了你自己。
无论何时一定要记住:人一定要有自己的想法,千万不要人云亦云。 就比如别人告诉你算法
很重要,你听了然后开始去钻研算法,其他啥也不做,每天就是刷算法题
。我并不是说算法
不重要,而是想说人应该有自己的想法,不应该人云亦云。 笔者最开始就是别人说啥自己就信啥,没有一点自己的想法,今天听别人说源码
重要,我就去研究源码
;明天听别人说算法
重要,我就去天天刷leetcode
。最后看似做了很多,但都是无效的。人在学习时一定要有自己的规划和思考,否则只会被别人牵着鼻子走。
除此之外,还有最重要的一点就是不要自我否定,自我怀疑。 现在网上夸夸其他的标题随处可见,比如,“学习某某
一周,我开发了某某软件”,你点进去一看,人家做的确实很棒。此时的你可能就开始自我怀疑了,怎么人家学一周就能做出这样的东西,我学了大半年还是不见起色。如果你有这样想其实你已经陷入无休止的自我内耗
了,你可能只看到人家学了某某
语言一周,但你不知道的是人家可能之前接触过相类似的语言
。
我们每个人都有属于自己的时区和人生,没必要拿自己去和他人比较
,他人可能确实很优秀,但你也不差,所以千万不要妄自菲薄。有些东西需要厚积薄发,所以不要只是做了某些微小的努力就急着去渴求得到回报,有些东西急不得,慢慢来,比较快。
结语
如上就是笔者在学习Java
过程的要的一些坑
,以及小总结,希望能帮助到你。
此外,有关框架的后端常用框架的分析笔者已经写了两个专栏了,分别是:Mybatis源码分析和SpringMVC流程分析。后续,笔者也会分析Spring
的相关源码,并且自己动手模拟实现一款mini
版的Spring
,这也是笔者一直以来的一个小愿望。所以在后续的日子笔者会以一种源码分析
+ 自实现
的方式来进行拆解Spring
的源码。我也不知道这次尝试能否成功,希望能成功吧!