[学习笔记]-为什么要学习数据结构和算法?

为什么要学习数据结构和算法?

很遗憾,现在还在想这么一个问题,到现在还在思考这种问题。
说实话,我在大学学的是电子商务专业,大学期间并没有开设【数据结构和算法】这门课程,刚毕业的时候也并没有想做java开发,后来机缘巧合做起了java开发。
刚工作的时候,为了快速的投入工作,学习java基础知识、java相关框架SSH、Spring、spring mvc等、学习使用各种中间件(缓存、MQ等)、学习DB相关知识、linux也会、负载均衡nginx、前端js、前端各种框架等等,可以说覆盖面很全,那个时候为了扩展自己的知识面,每个框架、中间件自己都去学,都去用,可以说用的很熟练,并且工作中编写java代码很熟练,很快,甚至“飞起来”!调试框架得心应手,解决问题速度也很快,各种异常一看就知道如何处理,当时在同样的一批毕业的同学、同事来看,觉得,哇,好厉害!什么都懂,什么都能说上来,很是羡慕,真的是满足了自己的虚荣心~
可是只有自己知道,自己其实很空虚,什么都会用,可是具体的实现原理、为什么这样实现却一点都说不上来,作为一个开发者来说,真的很空虚。随着工作年限的增长,渐渐的发现所有技术的实现归根结底就是对数据结构和算法的运用。
可能在实际的工作中,除了面试根本都用不到,用的更多的就是封装好的结构、类库,很少需要自己去实现数据结构和算法。但是,不需要自己实现,不代表不需要去了解。

说了这么多,回到正题,为什么要重新来学习一下数据结构和算法呢?
就个人来说
第一个目的就是知识的深度。技术更新的很快,框架也很多,只了解知识面是远远不够的,是有瓶颈的。日复一日的写业务代码,而不去了解它具体的实现,是用不好的。例如不知道那些类库的实现原理,不懂时间、空间复杂度分析,如何能正确的使用它们呢?业务数据如何选择使用ArrayList和LinkedList呢?写代码或者review代码的时候,如何评估代码的性能以及对资源(cpu、内存等)的消耗呢?
第二就是阅读源代码。日常使用的框架、中间件,例如redis、spring、MQ、dubbo等等,这些底层实现都融合了很多的数据结构和算法的设计思想、包括java源码的实现,如果不懂得数据结构和算法,真的阅读起来很吃力。即使在网上读了大量的文章、博客,即使面试的时候看了大量的面试题,也不是长久的,很快就会忘掉。如果学会了数据结构和算法,真的是恍然大悟,彷佛打开了一个新的世界。
第三解决问题,算法是一种结局问题的思路和方法,在我们实际生活、以及工作中都可能会用到。
第四独立写框架、写出性能更优的代码。
第五就是自信。更通俗一点,学会了算法,在面试中也更有底气,无论是怼人还是吹牛逼,都更有底气。

很多好处,先整理这几点吧。

后悔当初没有去深入的研究数据结构和算法,但是现在也不晚,就我个人来说,现在回过头去温习数据结构和算法知识,理解的更深刻,更能结合实际项目中使用的框架、源码一起去学习,也有了更深的体会。

接下来开始针对每一个学习的算法,再结合实际项目中的应用场景,做一下笔记,这一次学习,一定会填满自己空虚的地方。

就跟学习武功一样,前些年一直在学习各种招式,每一招都耍的很熟练,的心应手,内功底子却很差,不会走太远就会被淘汰出局。
突然联想到天龙八部里的虚竹。只有内功才是最牛逼的,内功厉害了,后后面都会突飞猛进,自己体会。

共勉。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值