• 个人升级记录


    我起了这么一个奇奇怪怪的标题还能被你搜索到,又或者在冷冷清清的候选区里留意到我的话,那就说明我们很有缘了,既然如此不妨留下来看一下我的碎碎念吧 ————


    我个人在学习编程的过程中,经常会遇到一种“升级突破”一样的情况

    类似于以前高中的时候,数学一直只能考100左右,难题都不会做,仿佛这就是你的天赋的极限。

    但是某天你突然在考试中多做出几道难题,一举跃升到120分以上的门槛。你可能觉得只是自己这次运气好而已,但是之后你就会发现,自己几乎再也没有掉下过120这个坎,明明之前无论怎么刷题都没有办法提高,但是却好像在这次考试中突破似的提高了。

    这也是我之前在一篇文章里看到的,不过文章出处我已经忘了,所以可能和实际内容有所偏差。

    当时那个人最后对此归于类似经验值的积累,平时的努力固然十分重要,但是当经验值够了也需要一个契机来提升等级,提升了,个人能力自然也就得到了大幅的提升。

    所以在昨晚睡觉前,我突然灵光一闪,想到要写一篇水文来记录一下自己学习编程中遇到的“升级突破”。

    当然这种碎碎念可能对你并没有什么帮助就是了 ( ´_ゝ`)旦


    Level.0

    我觉得我自己的第一阶段并不是从上大学之后开始学习编程开始的,而是要追溯到小学初中的时候。

    记得上小学的时候表姐上大学换了新电脑,于是把自己家里不要的电脑给了我。那个时候的电脑还是那种特别厚重的样子,类似于图中这种:

    当时也没有装宽带,所以这种电脑唯一能做到的,只有通过买校门口几块钱一张的盗版游戏光盘来安装游戏。

    而这些盗版游戏有一个特点,那就是安装经常有问题,又或者里面有病毒。(当时用的还是金山毒霸)

    这时候我也只能不停的折腾,去尝试安装打开这些游戏。而在这个过程中,我似乎也慢慢培养了自己解决各种电脑问题的能力。

    而在上初中买了新电脑也装了宽带之后,一直比较喜欢ACG的我自然也少不了各种找资源,而这个过程中也无形锻炼了我查找各种资料资源的能力,而不是做一个伸手党。

    我觉得这就算是我初出新手村的时候了,虽然这时候的我对编程没有任何一点具体的概念,但是我已经有了基本的解决问题和查找资料的能力,起码不至于是一个电脑白痴。


    Level.1

    之后的第二阶段就是刚刚上大学,开始学习计算机这个专业开始了。

    刚上大一的时候,很多时候就是跟着老师学,学校教什么,我就学什么,最多就是在课余会在各大论坛网站查一下 “学xxx还有什么书籍推荐”,之后去图书馆借书来看。

    这段时间虽然我学习热情挺高,学习也比较积极(毕竟刚刚开始接触新事物嘛),但是成长并不是很快。我还记得我当时买的黑皮的《数据结构与算法分析》一学期只看了50页不到,还有林林总总的一些其他书也都没翻几页,唯一看完的可能就是《head first html & css》了。

    这一整个学期我都处于一种比较迷茫的状态:

    学习热情是有的,但是明明好像学了很多东西,又好像什么都没学到 . . . . . . 

     


    Level.2

    之后又是一个新的学期,这时候的我听一个已经毕业的师兄说,我们学校有一个搞技术的实验室,对学习很有帮助,但是加入他们前需要通过几轮考核。

    就像风雨飘摇中的一叶小舟望见远方的灯塔一样,我也开始追寻着这个方向过去。

    每一次考核都是做一个小项目,在前两次考核中,我的策略一直都是翻书参考代码 + 把百度上百度来的一小段一小段的代码根据遇到的问题和需要,像补丁一样一点一点的补到我的项目中去,直到它能跑起来,能顺利的完成任务。

    无论中间的过程如何,总之:

    这一阶段的我,开始能够做出东西了,开始脱离高中那种看书背书的模式了,并且利用搜索引擎解决那一个又一个的小问题。但是这个时候的我也有一个巨大的问题,就是不知所以然,只知道完成任务,有时候甚至不知道自己写的代码到底是什么。

     


    Level.3

    到了大一的暑假,我开始完成第三个考核的项目,这个时候的项目是做一个增删改查的学生管理系统。

    很显然,靠学校发的jsp的书籍和百度代码已经很难完成任务。一开始,我确确实实尝试靠原来的方式去解决问题,但是在经过接近一个月的时间后,我发现自己还是什么也写不出来。

    直到某一天,我突然想到要去找视频学习,跟着视频做项目。(我也忘记自己为什么会突然想到这点)

    其实我之前也尝试过看视频做项目,但是因为连自己要学的是什么我都不知道,自然也不知道要看哪些视频,所以就不了了之。

    在这个假期我成功的通过跟着视频做 + 查阅资料修改定制的方式完成了考核。

    这一阶段的我,开始学会跟着视频学习,跟着视频做项目,知道自己写的代码是什么,有什么用。

     

    你可能因为我差不多又要进入下一个阶段了,然而生活总不可能这么顺利。要是一切都这么自然而然,我也就不会把自己学习的过程称之为“突破”了,这个突破就像是武侠小说一样,有可能你几十年都没有长进,但有可能像张无忌一样掉下悬崖习得九阳神功一样突然就突破了。

    而我在不停的看视频学框架做项目的过程中度过了整整一年


    Level.4

    时间推移到了大二放假前,在一次和师兄的交流中,听着师兄口中jdk源码,juc并发云云,我一脸茫然,但是心中还是有一丝不相信,觉得自己会那么多框架,不说天下无敌,起码也有这么个水平:

    之后在假期的时候,我查了几篇面经,证实了我心中的那一丝猜想:确实没人会问你框架是怎么用的,而你看的视频里面的所谓的原理,也只是非常浅的一些东西。

    之后我开始照着面经的知识点恶补各种经典书目,先是在假期把《深入理解jvm》和《实战高并发程序设计》给看了,由于从来没有接触过这种类型的比较难的书籍,所以一开始也看的非常吃力,一个假期连两本书都没看完。

    但是慢慢的,可能是积累的量够了,开始产生质变(也就是经验值够了),我在大三开学后不久看书的速度突飞猛进,边看书边做笔记,平均每一个多星期甚至不用一星期就能看完一本书。

    开始熟悉这些基础原理,阅读基础的经典书目的能力也有所提升,对知识的理解不再完全流于表面。


    Level.5

    到了大三上学期快结束之前,我几乎读完了基础阶段该读的书目,刚好也看到周围的人在找实习,于是我也面了两家。

    第一家是一家小公司,没什么太多感想,只能说非常感谢能得到面试机会,面试过程也是中规中矩,就像别人面经里面写的那样。

    第二家是一家大公司,面试难度超出我的想象,让我措手不及,也让我发现了自己很多的问题,总的来说也没有很失望,算是意料之中。所以很快就开始查漏补缺。

    这次我遇到的问题主要是:没有对书本里的知识继续深挖。主要体现在并发部分和集合部分。

    因为并发和集合部分书籍里都没有深入到源码去讲解原理,而面试有。

    在这之后的假期,也就是寒假,我开始狂看源码,说实话一开始看得非常吃力,光几个简单的集合类都看了我一个多星期。

    这次的突破在我接触了https://www.javadoop.com/里HongJie这位大佬的博客之后才开始的,在我啃完他的SpringIOC容器源码解析和aqs的源码解析之后,我阅读源码以及源码博客的速度越来越快,并在这之后陆陆续续把大佬博客里的源码解析部分都看了一遍。

    这其中我非常喜欢他的一句话:

    但是作为过来人,我想告诉大家,对于 AQS 来说,形式真的不重要,重要的是把细节说清楚。

     我个人觉得,如果流于背原理,为了面试而背那些源码流程图,可能你的收获并没有想象中的那么大,起码我自己是这样的。

    在深入每一行代码,去理解它为什么要这么做之后,慢慢的,我的阅读速度和理解能力也就都上来了。这个过程也不是慢慢变化的,而是在我读完aqs源码之后突然就突破了,我自己也不清楚为什么。

    能快速阅读和理解各种源码,并且有一定的自己的理解。


    Level.6 

    在这之后,我又尝试着去了解更深一些的东西。而挑选的对象则是IO部分,通过IO部分,我对知识开始有了更深一些的理解,很多知识都开始自然而然的联想到网络和操作系统层次上去,也因此有了那几篇关于nio、aio的的博客。并且我还尝试着在没有任何资料的情况下阅读了jdk下httpserver的源码,阅读的过程比较顺利,也带来了很多启发。

    这个阶段的我在学知识做东西的时候开始自然而然的阅读官方文档等资料,开始自然而然的通过阅读一个接口的注释来了解其使用方法,阅读其源码来了解其可能存在的问题。百度开的也很少了,偶尔开一下谷歌也是为了看一下一些比较少见的知识点的英文资料。

    还有一点是博客写的多了,写博客其实对个人的成长很有帮助。我个人非常认同一段话:

    我觉得,分享就是互联网等存在的理由,希望自己分享的东西能帮助到远在天边的某个陌生人,而我分享的方式就是写技术博客。

    这个阶段的我,开始能够将知识深入到网络底层及操作系统底层,能简单查阅各种官方文档,开始逐渐认识互联网


    写在最后

    下一个阶段在什么时候,或者说像我这样进步缓慢的人到底还会不会有机会进阶,我自己也不知道。

    在每次进入下一个阶段前,我都不知道自己的下一个阶段到底是什么,在哪里,毕竟我要是知道也就不会进步得这么缓慢了,每个阶段的我都是迷茫的。很多人可能并没有我这种感触,我也曾经看到一些名校的大佬在大一的时候就已经有了我现在,又或者说远超我的水平。(毕竟如果别人远超我了,我也不太可能知道别人到底是个什么水平阶段对吧,就算是交流,我也只能知道别人确实比我牛逼很多,仅此而已)

    总之,本文只是碎碎念,也不是为了教大家什么。最后再附上我喜欢的一部漫画:

  • 相关阅读:
    tomcat 设置session过期时间(四种方式)
    Delphi7程序调用C#写的DLL解决办法
    delphi 获取大于2G的物理内存大小
    delphi 判断目录是否可写
    DLL编写与调用全解
    API Hook基本原理和实现
    dotnet tools 运行 dotnet run
    .NET Core & ASP.NET Core 1.0
    WebApp模版并运行
    配置系统引导启动SuperScoekt
  • 原文地址:https://www.cnblogs.com/fatmanhappycode/p/12637734.html
Copyright © 2020-2023  润新知