学算法系列——开篇

版权声明:如果觉得文章对你有用,转载不需要联系作者,但请注明出处 https://blog.csdn.net/jinxin70/article/details/82559865

前段时间看了Freemarker源码和Spring源码,以前还看过Tomcat源码,Springmvc源码、mybatis源码,这样一想,项目中常用的工具源码大体也看了一些了。这些源码看了还是比较耗费时间,主要是debug的时间,然后需要画图总结,理清思路。看的时候,就一直想,这些工具是怎么一步一步实现我们想要的功能的。

看源码是为了对自己使用的工具进一步掌握,项目出问题,可以快速定位;项目如果有特殊需求,也可以进行相应功能扩展,甚至可以尝试对工具本身存在的不足去改进。

当然在阅读源码的过程中能学到的还有很多。比如,听别人或者搜索得到的别人讲解的源码内容的博客,是一回事,但是你自己看的时候,可能是另一回事,只有自己看,才有更深切的体会,体会源码作者的思路,处理步骤,有哪些技巧,使用了什么设计模式和设计思想,作者的处理方法的局限性(每种方法都有处理问题的边界,仅仅是用来处理某类问题的,大而全并不好)。spring本身是作为bean factory的实现,专注于生成类实例,在初学者看来,我new一个实例不就好了,怎么整一个spring框架出来,这么麻烦。那是因为你做的项目不多,规模不大,你在编码的时候没有想着可扩展性、可维护性,设计架构的时候没有想可伸缩性等等。总之,还是太菜。spring把对象管理的很好,其他的所有功能都是围绕beans去考虑的。你看现在技术更新的很快,spring的生态越来越大,spring boot,spring cloud等等。最基础的其实还是他的IOC(控制反转,说到底就是管理对象的创建及对象之间的依赖)容器的功能。不掌握这点,其他的都是空中楼阁一样的存在。当然,并不是掌握了(最好自己写一个,否则都是走马观花,只能算是了解spring),就一劳永逸了,这个太基础,先掌握Spring是怎么做IOC的,怎么做AOP的,然后再选择性的学习spring生态,才是正确的路线。怎么选择性的学习,肯定是根据你做的项目了,比如用到spring security做权限管理,就去看看spring security是怎么做的,做了哪些内容,有没有局限性;比如用到了spring session,就去看spring session等等。

看源码就像看书,不断地读,不断地猜,不断的去寻找答案,会发现编程世界还是很有趣的。

但是以上过程进行下来,是为了丰富自己解决项目问题的能力,让自己在面对新问题的时候可能处理的的更快。教会你的更多的是让你更准确的使用API去写业务。

我觉得还是有什么,是上面的工具的源码并不能给出的东西。于是我从jdk的集合、map、juc中找到了答案,就是数据结构和算法。这些更基础,哪怕是字符串的api的实现。

好吧,就是想坚定自己(打鸡血),让自己觉得有必要系统的学一下数据结构和算法,因为这是计算机专业基础的基础。就像开源工具的源码对于你写业务的作用一样基础,数据结构和算法是掌握编程能力的基础。

猜你喜欢

转载自blog.csdn.net/jinxin70/article/details/82559865