源码分析|总结过往经验-为了更好的前行 不念过往,不畏将来
大家好,我是mamba架构算法的康师兄
我们的源码分析已经进行了一段时间了,我们需要做一下总结了,今天的文章,将要解答几个问题,为什么要分析源码?源码分析如何来做?如何提升自己的能力?
从哪里来,要到哪里去,一直是一个无法解决的问题
对于互联网人来说,最好的回答莫过于从小城市来,要走向财务自由,然后,我可以告诉你,财务自由的几个等级,不知道读者朋友目前到了哪个级别?
其实,不管你到了哪个级别,都不会影响你每日的工作,当然也不会影响我们分析源码,分析源码的目的是什么?没有什么高大上的理想,有的只是要搞清楚究竟是怎么回事?
如果我们不分析源码,框架对我们来说就是一个黑盒,你永远都不知道里面究竟是怎么运行的,目前还有很多框架的文档其实并不是很全,在社区里大家的问题也都是五花八门,当你在实际的项目中,真正遇到了一些困难和问题的时候,你该怎么解决?
互联网的项目,有时候影响很大的,或许一个小的失误,就能造成几百万的损失,这不是危言耸听,这都是血淋淋的教训啊!!!
对于一个项目,我们要关注两个方面:
一个方面是项目的业务逻辑,很多时候,我们的开发人员都搞不清楚业务逻辑是什么?为什么业务逻辑要是这样?为什么我们要这样做?有没有更好的业务逻辑呢?或许随着时间的推移,我们真的就不知道了,一个项目的成功,必然是有一个良好的内循环,让客户满意,让用户用着舒服,支付宝做的好吧,你看,现在业务上越来越冗杂了,太多的功能在里面了,导致快成为一个不伦不类的APP了。
另一方面就是项目的技术栈,一个线上的项目可能会使用到多个语言,不同部门之间使用的语言也不一样,甚至一个部门之间都会有很多不同的语言存在,那么作为一个合格的项目开发,项目管理者,需要做到什么呢?首先需要掌握项目整体的技术架构,其中使用到的技术栈前端,后端语言,MySQL,Redis,ElasticSearch,大数据等服务做到充分的熟悉和认识,如果你是高级资深的开发,你还要对这些服务的底层原理非常熟悉,毕竟现在很多项目都是高并发项目,一个细微的功能搞不懂,那么就有可能导致重大的线上事故。
对于资深开发,你需要注意下面一些问题:
对底层源码非常熟悉,掌握高并发中经常遇到的问题的解决方案,对系统进行改造和升级可以非常熟练,出现问题,作为资深开发可以第一时间能解决问题,并对其能进行持续的优化
作为资深开发,你需要对项目非常熟悉,对项目细节非常的熟悉,出现问题,你能稳定军心,把损失降低到最小,这需要你有把控全局的能力,对各个方面都能熟悉
作为资深开发,你需要能够管理人,管理项目了,为什么呢?就算你一个人再厉害,但还是三个臭皮匠能抵一个诸葛亮的,工作是干不完的,你要能够管理人,给手下的人分配项目来做了
源码分析不是一天两天就能分析完的,等你到了一定的阶段,你就会知道,源码分析是多么的重要,项目中出现了问题,你没有解决的思路了,可以从源码分析中找到答案,揭开这个黑盒的神秘面纱,你会有柳暗花明又一村的感觉,豁然开朗,是不是非常有成就感?
源码分析真的不是很难!!!
不要对源码有恐惧之心,其实,它真的不是很难,只要掌握了一些基础知识,善于总结,那么源码分析真的很简单
我们知道,在编程语言中,我们拿PHP语言来说明,基本上都是面向对象的,那么你就要对面向对象的知识点非常的熟悉,在我们很早的时候,学习语言的时候,我们的老师,就给我们说过,要把基础打牢了,这样你才能走得很远。
年轻的时候,我不以为然,等到后来,我才意识到,老师说的很对。
那么对于PHP框架的源码,我们需要知道哪些基础知识呢?我在这里给大家做了总结,如果你觉得有用,那么欢迎给我点赞,转发,评论,点击在看,大家的支持就是我保持更新的动力。
PHP语言的基础函数,基础语言你需要掌握,如果遇到不清楚的地方,你要做好总结,及时的了解这些基础函数,包括数组,字符串,URL处理,日志异常等函数,都是非常重要的
PHP类的基础知识,你要熟练掌握,PHP是没有多继承关系的,只有单继承,这一点你要非常注意;一个类是可以没有构造函数的,如果有继承父类,那么默认执行的是父类的构造函数,构造函数一般做初始化的功能,这一点你要非常注意。
抽象类的抽象方法,子类要实现这个抽象方法,如果在父类中调用了这个抽象方法,那么默认执行的是子类中的抽象方法
类中属性,有很重要的功能,一个类属性,可以是字符串,也可以是整型,也可以是数组存储对象,在框架中,有很多属性存储的是类的实例
类中的魔术方法,上面我们讲的构造函数是魔术方法,但是还有很多其他魔术方法,这些魔术方法你需要注意,因为它们很有用, 如果你不掌握,你就会发现,你在看源码的时候,根本就不知道有些属性是怎么来的了。
类的继承关系,你要熟悉,因为一个类有时候不是继承一个父类,而是父类还会继承父类,形成一个继承链,这样你就要知道,每个类是什么作用了,为什么要拆出来这样的一个类?
除了上面的一些知识外,我建议你还是要学会一些画图的技能,这很有用,包括业务逻辑图,程序时序图,架构设计图,表ER关系图等,这对于我们分析源码也是非常有用的哦,对你成为一个资深的开发也是有用的,有一年,有个段子说的就是,干活的干不过写PPT的,说的就是这个道理,你要学会一些能让你成长晋升的东西才行。
源码分析讲究的是方法,点线面法是比较好的办法,也是我自己总结出来的,当开始的时候,你不要太在意细节的问题,你需要关注的是宏观的逻辑,等到把所有的逻辑梳理清楚了,再去关注细节的问题,这样分析源码就会非常快了。
善于总结:总结很重要,每周的周报其实就是你总结的好地方,周报真的不是给领导看的,如果你非要给领导看,那么可以把重要的结论写在前面,把你自己的总结写在后面,本周处理了哪些重要的问题,对业务上有什么思考?对行业内有什么思考?都可以总结出来,总结是对本周工作的一个汇总,也是对下周工作的一些展望,找出下周工作中的重点,这样才能每天,每周的都有收获,而不是,当一天和尚撞一天钟。
勤于思考:工作中多思考,项目为什么要这样做,业务为什么要有这样的设计,一个项目最重要的是什么,对于公司来说,那就是有什么样的收益,公司是盈利的,你这个项目对盈利没有什么帮助了,那么等待这个项目的,就是黄掉了,你们这批人要么换岗位,要么换工作,这很现实,因此啊,你要时刻保持清醒,你的这个项目是不是核心项目,如果进行快速的盈利,保持稳定性的同时,多思考了解一下同行都在干什么。
不停学习:技术人你要知道,行业发展太快了,不仅业务发展快,技术发展也是很快的,每隔一两年就会有新的技术出现,就会有新的名词出现,最近比较流行的是云原生和低代码平台,还有什么docker,k8s,这些技术你一定听说过,但是你都了解么?学习不是一蹴而就,也不是盲目的跟大流,你要对底层原理要有充分的认识,再牛的技术语言,其实底层都是计算机的那一套东西,对这些东西有了解,你就成功了一半
做好项目:做项目,做好项目,只有做好项目了,你才能遇到一些困难,你才能遇到一些问题,解决问题和解决困难的过程,就是你成长的过程,为什么有些人工作了很久,他们都没有什么进步呢?而有些工作了3年的开发,就成长为团队的核心,甚至是领导层了呢?因为他们做了好项目,做好项目不仅你能成长,对你的晋升也是很有必要的。
关于晋升,我也会在后面的文章中给大家做普及,这一块,我想了想,还是非常重要的。