我起了这么一个奇奇怪怪的标题还能被你搜索到,又或者在冷冷清清的候选区里留意到个人话,那就说明咱们颇有缘了,既然如此不妨留下来看一下个人碎碎念吧 ————css
我我的在学习编程的过程当中,常常会遇到一种“升级突破”同样的状况html
相似于之前高中的时候,数学一直只能考100左右,难题都不会作,仿佛这就是你的天赋的极限。java
可是某天你忽然在考试中多作出几道难题,一举跃升到120分以上的门槛。你可能以为只是本身此次运气好而已,可是以后你就会发现,本身几乎再也没有掉下过120这个坎,明明以前不管怎么刷题都没有办法提升,可是却好像在此次考试中突破似的提升了。面试
这也是我以前在一篇文章里看到的,不过文章出处我已经忘了,因此可能和实际内容有所误差。算法
当时那我的最后对此归于相似经验值的积累,平时的努力当然十分重要,可是当经验值够了也须要一个契机来提高等级,提高了,我的能力天然也就获得了大幅的提高。编程
因此在昨晚睡觉前,我忽然灵光一闪,想到要写一篇水文来记录一下本身学习编程中遇到的“升级突破”。网络
固然这种碎碎念可能对你并无什么帮助就是了 ( ´_ゝ`)旦数据结构
我以为我本身的第一阶段并非从上大学以后开始学习编程开始的,而是要追溯到小学初中的时候。并发
记得上小学的时候表姐上大学换了新电脑,因而把本身家里不要的电脑给了我。那个时候的电脑仍是那种特别厚重的样子,相似于图中这种:框架
当时也没有装宽带,因此这种电脑惟一能作到的,只有经过买校门口几块钱一张的盗版游戏光盘来安装游戏。
而这些盗版游戏有一个特色,那就是安装常常有问题,又或者里面有病毒。(当时用的仍是金山毒霸)
这时候我也只能不停的折腾,去尝试安装打开这些游戏。而在这个过程当中,我彷佛也慢慢培养了本身解决各类电脑问题的能力。
而在上初中买了新电脑也装了宽带以后,一直比较喜欢ACG的我天然也少不了各类找资源,而这个过程当中也无形锻炼了我查找各类资料资源的能力,而不是作一个伸手党。
我以为这就算是我初出新手村的时候了,虽然这时候的我对编程没有任何一点具体的概念,可是我已经有了基本的解决问题和查找资料的能力,起码不至因而一个电脑白痴。
以后的第二阶段就是刚刚上大学,开始学习计算机这个专业开始了。
刚上大一的时候,不少时候就是跟着老师学,学校教什么,我就学什么,最多就是在课余会在各大论坛网站查一下 “学xxx还有什么书籍推荐”,以后去图书馆借书来看。
这段时间虽然我学习热情挺高,学习也比较积极(毕竟刚刚开始接触新事物嘛),可是成长并非很快。我还记得我当时买的黑皮的《数据结构与算法分析》一学期只看了50页不到,还有林林总总的一些其余书也都没翻几页,惟一看完的可能就是《head first html & css》了。
这一整个学期我都处于一种比较迷茫的状态:
学习热情是有的,可是明明好像学了不少东西,又好像什么都没学到 . . . . . .
以后又是一个新的学期,这时候的我听一个已经毕业的师兄说,咱们学校有一个搞技术的实验室,对学习颇有帮助,可是加入他们前须要经过几轮考核。
就像摇摇欲坠中的一叶小舟望见远方的灯塔同样,我也开始追寻着这个方向过去。
每一次考核都是作一个小项目,在前两次考核中,个人策略一直都是翻书参考代码 + 把百度上百度来的一小段一小段的代码根据遇到的问题和须要,像补丁同样一点一点的补到个人项目中去,直到它能跑起来,能顺利的完成任务。
不管中间的过程如何,总之:
这一阶段的我,开始可以作出东西了,开始脱离高中那种看书背书的模式了,而且利用搜索引擎解决那一个又一个的小问题。可是这个时候的我也有一个巨大的问题,就是不知因此然,只知道完成任务,有时候甚至不知道本身写的代码究竟是什么。
到了大一的暑假,我开始完成第三个考核的项目,这个时候的项目是作一个增删改查的学生管理系统。
很显然,靠学校发的jsp的书籍和百度代码已经很难完成任务。一开始,我确确实实尝试靠原来的方式去解决问题,可是在通过接近一个月的时间后,我发现本身仍是什么也写不出来。
直到某一天,我忽然想到要去找视频学习,跟着视频作项目。(我也忘记本身为何会忽然想到这点)
其实我以前也尝试过看视频作项目,可是由于连本身要学的是什么我都不知道,天然也不知道要看哪些视频,因此就不了了之。
在这个假期我成功的经过跟着视频作 + 查阅资料修改定制的方式完成了考核。
这一阶段的我,开始学会跟着视频学习,跟着视频作项目,知道本身写的代码是什么,有什么用。
你可能由于我差很少又要进入下一个阶段了,然而生活总不可能这么顺利。要是一切都这么天然而然,我也就不会把本身学习的过程称之为“突破”了,这个突破就像是武侠小说同样,有可能你几十年都没有长进,但有可能像张无忌同样掉下悬崖习得九阳神功同样忽然就突破了。
而我在不停的看视频学框架作项目的过程当中度过了整整一年。
时间推移到了大二放假前,在一次和师兄的交流中,听着师兄口中jdk源码,juc并发云云,我一脸茫然,可是心中仍是有一丝不相信,以为本身会那么多框架,不说天下无敌,起码也有这么个水平:
以后在假期的时候,我查了几篇面经,证明了我心中的那一丝猜测:确实没人会问你框架是怎么用的,而你看的视频里面的所谓的原理,也只是很是浅的一些东西。
以后我开始照着面经的知识点恶补各类经典书目,先是在假期把《深刻理解jvm》和《实战高并发程序设计》给看了,因为历来没有接触过这种类型的比较难的书籍,因此一开始也看的很是吃力,一个假期连两本书都没看完。
可是慢慢的,多是积累的量够了,开始产生质变(也就是经验值够了),我在大三开学后不久看书的速度日新月异,边看书边作笔记,平均每个多星期甚至不用一星期就能看完一本书。
开始熟悉这些基础原理,阅读基础的经典书目的能力也有所提高,对知识的理解再也不彻底流于表面。
到了大三上学期快结束以前,我几乎读完了基础阶段该读的书目,恰好也看到周围的人在找实习,因而我也面了两家。
第一家是一家小公司,没什么太多感想,只能说很是感谢能获得面试机会,面试过程也是中规中矩,就像别人面经里面写的那样。
第二家是一家大公司,面试难度超出个人想象,让我措手不及,也让我发现了本身不少的问题,总的来讲也没有很失望,算是意料之中。因此很快就开始查漏补缺。
此次我遇到的问题主要是:没有对书本里的知识继续深挖。主要体如今并发部分和集合部分。
由于并发和集合部分书籍里都没有深刻到源码去讲解原理,而面试有。
在这以后的假期,也就是寒假,我开始狂看源码,说实话一开始看得很是吃力,光几个简单的集合类都看了我一个多星期。
此次的突破在我接触了https://www.javadoop.com/里HongJie这位大佬的博客以后才开始的,在我啃完他的SpringIOC容器源码解析和aqs的源码解析以后,我阅读源码以及源码博客的速度愈来愈快,并在这以后陆陆续续把大佬博客里的源码解析部分都看了一遍。
这其中我很是喜欢他的一句话:
可是做为过来人,我想告诉你们,对于 AQS 来讲,形式真的不重要,重要的是把细节说清楚。
我我的以为,若是流于背原理,为了面试而背那些源码流程图,可能你的收获并无想象中的那么大,起码我本身是这样的。
在深刻每一行代码,去理解它为何要这么作以后,慢慢的,个人阅读速度和理解能力也就都上来了。这个过程也不是慢慢变化的,而是在我读完aqs源码以后忽然就突破了,我本身也不清楚为何。
能快速阅读和理解各类源码,而且有必定的本身的理解。
在这以后,我又尝试着去了解更深一些的东西。而挑选的对象则是IO部分,经过IO部分,我对知识开始有了更深一些的理解,不少知识都开始天然而然的联想到网络和操做系统层次上去,也所以有了那几篇关于nio、aio的的博客。而且我还尝试着在没有任何资料的状况下阅读了jdk下httpserver的源码,阅读的过程比较顺利,也带来了不少启发。
这个阶段的我在学知识作东西的时候开始天然而然的阅读官方文档等资料,开始天然而然的经过阅读一个接口的注释来了解其使用方法,阅读其源码来了解其可能存在的问题。百度开的也不多了,偶尔开一下谷歌也是为了看一下一些比较少见的知识点的英文资料。
还有一点是博客写的多了,写博客其实对我的的成长颇有帮助。我我的很是认同一段话:
我以为,分享就是互联网等存在的理由,但愿本身分享的东西能帮助到远在天边的某个陌生人,而我分享的方式就是写技术博客。
这个阶段的我,开始可以将知识深刻到网络底层及操做系统底层,能简单查阅各类官方文档,开始逐渐认识互联网。
下一个阶段在何时,或者说像我这样进步缓慢的人到底还会不会有机会进阶,我本身也不知道。
在每次进入下一个阶段前,我都不知道本身的下一个阶段究竟是什么,在哪里,毕竟我要是知道也就不会进步得这么缓慢了,每一个阶段的我都是迷茫的。不少人可能并无我这种感触,我也曾经看到一些名校的大佬在大一的时候就已经有了我如今,又或者说远超个人水平。(毕竟若是别人远超我了,我也不太可能知作别人究竟是个什么水平阶段对吧,就算是交流,我也只能知作别人确实比我牛逼不少,仅此而已)
总之,本文只是碎碎念,也不是为了教你们什么。最后再附上我喜欢的一部漫画: