狂补计算机基础知识,让我上了瘾,想要尽快和同龄人拉开差距,必须这么干,才有戏!!!!

简介: 狂补计算机基础知识,让我上了瘾,想要尽快和同龄人拉开差距,必须这么干,才有戏!!!!

CSDN 的小伙伴们,大家好,我是沉默王二。最近我在狂补计算机基础知识,感觉有点上瘾!以前觉得很枯燥的知识,现在竟然有点香!不知道为什么。


我算是科班出身,大学的专业就是计算机网络,不过老实说,在实际的开发中,大学的很多课程,要么“用处”不大,要么可以换个方式,更高效的学习。


其中的原因,一方面是实际开发更关注知识的“实用”,另外一方面,大学的教学确实和产业有些脱钩。所以我就从实际应用的角度出发,重新来梳理一下计算机基础方面的知识。


01、数据结构


毫无疑问,数据结构对一名程序员来说非常重要,还是那句话程序=数据结构+算法,这种说法无论放在什么时候都是成立的。


大部分的数据结构课程,关注的重点都在如何从数学上实现一个数据结构,但在实际开发中,大部分主流语言都已经内置了常见的数据结构,比如说 Java。也就是说,对于大部分程序员来说,实际开发中,很难有需求要从零开始实现一个数据结构。因此我们只需要做到下面几点。


1、熟悉常见数据结构的概念,比如说数组、堆栈、链表、哈希表等。


2、了解常用数据结构之间的差异,比如说 ArrayList 和 LinkedList,我在之前的文章中有详细说明过,可以点击链接去查看下。


3、关注常用数据结构的外围算法,比如说如何对 List 和 Map 进行查找。


4、关注数据结构使用中容易出错的地方,比如说线程是否安全等。



B 站上浙江大学的一个数据结构的课还不错,很系统很经典,适合小白入门。




视频地址如下。


https://www.bilibili.com/video/BV1JW411i731

02、算法


以我接触的领域来说,大部分普通的业务系统都不会涉及到太复杂的算法,因此我没有在算法上投入过多时间。


但如果你在一些特殊的领域,如果算法跟不上,可以说是“寸步难行”,比如说图形处理领域,无论是图像的变化还是增强,无一例外都要用到矩阵变换,因此就必然涉及到线性代数的内容,再往深处学的话,必然会牵扯出更多的知识。


所以学习算法要视情况而定,如果想走算法岗,那么《算法第4版》、《算法导论》、《数学之美》、《编程珠玑》、《剑指offer》这些书都要耐着性子啃一啃。电子书可以在下面这个 GitHub 仓库上找得到。


https://github.com/itwanger/JavaBooks

顺带再推荐一份阿里大佬的算法刷题笔记吧,在 GitHub 上已经有 13.3k 的 star 了。里面的每道题都写了解题思路,是通过 GO 语言实现的,每道题都 runtime beats 100% 了。




在线阅读地址如下所示:


https://books.halfrost.com/leetcode/

03、设计模式


我认为设计模式是初中级程序员迈向高级程序员的必经之路。有不少程序员,前期冲劲十足,但后继乏力,都是吃了设计模式的亏。


在工作的前几年,大部分程序员都处于熟悉编程语言的阶段,也就是处于“技”的阶段,随后就要进入“术”的阶段了。在编程领域,“术”的典型代表就是“设计模式”。


我自己推荐的一本书是《设计模式之禅》,代码是用 Java 实现的,读起来比较轻松,也更符合国内程序员的阅读习惯。


另外就是我上次推荐的 Refactoring Guru 网站,里面附带的图片非常精美,阅读起来的视觉效果会比较丰富。


在线阅读地址如下所示:


https://refactoring.guru

离线版可以通过下面这个链接下载(无套路,不需要解压密码):


设计模式,牛逼!

04、软件工程


实现一个软件系统的过程,不仅只有编码,还涉及到项目安排,团队协调等一系列非技术因素,如果想从一名程序员走向管理岗,成为 team leader 或者开发经理,软件工程方面的知识就必须得跟得上。


这里我推荐几本不错的经典书,其中有一本邹欣老师的书,他刚出任 CSDN 副总裁,希望 CSDN 能在他的入驻后变得更好一些。他这本书的书名叫做《构建之法》,我看过,还是很不错的。


另外还有两本必读,就是《人月神话》和《人件》,虽然有了岁月的痕迹,但依然值得深读。当然,关于软件工程,最好的学习方法是观察,观察你所在的团队是如何处理工程问题的,然后思考,最终形成自己的方法观。


05、架构 & 设计


要想写出一个好而美的程序,需要经过三个阶段。


第一阶段,有扎实的基本功,简单点说,就是要做到语法熟练、框架熟练,成为一名能够完成开发任务的“码农”。


第二阶段,从“码农”到“工程师”,在局部上,不仅要能够实现功能,还能关注功能之外的维度,比如健壮性、低耦合、可扩展等指标。


第三阶段,从“工程师”到“架构师”,不仅在局部上追求一个模块的好坏,而且还要从整个系统层面去掌控,合理安排资源的优先级,保证整个系统不会出现腐败等等。


要想成为一名优秀的架构师,除了自身的努力,也需要一点点运气,但靠读书可能不够,但这些经典书籍还是要阅读的,能给日常的工作带来巨大的帮助。


《代码大全》

《重构:改善既有代码的设计》

《设计原本》

《大型网站技术架构核心原理与案例分析》

最后


技术这条道路并不好走,不仅要学习很多新技术、新框架,还要及时补充必要的计算机基础知识,底子硬的同时还要学会拥抱变化。


学习的过程,就好像登山一样,大概有 80% 的人在这个过程中会掉队。那么请相信我,只要目标明确,努力加上坚持,再加上一点点好运气,你就能登顶!


相关文章
|
7月前
|
机器学习/深度学习 人工智能
技术人的四大「造神」学习法,为啥就没人好好用呢?
技术人的四大「造神」学习法,为啥就没人好好用呢?
60 2
|
7月前
|
数据采集 算法 Java
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
业余爱好者想入门编程,一定远离那些只会说No的家伙,尤其程序员
70 2
|
SQL
工作中的成长是从摆脱低水平勤奋开始的吗?
成长的本质是自我革新,成长就是在不断变化中的积极面。深度思考、目标设定、自律实践、持续学习、总结反思等步骤可以帮助我们成长,同时也需要避免陷入低水平勤奋的陷阱,不要忙于行动而忽视了反思和学习。
151 1
|
NoSQL 算法 网络协议
二战腾讯倒在三面:我意识到自己与一线大厂程序员的差距
简单说一下吧,本人疫情还没开始时面试过一次鹅厂,在MySQL、redis这方面惨败,经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。
|
Kubernetes NoSQL 网络协议
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
183 0
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
|
存储 关系型数据库 MySQL
熬了整整30天,java面向对象编程基础实验报告
熬了整整30天,java面向对象编程基础实验报告
熬了整整30天,java面向对象编程基础实验报告
程序人生 - 996(三)马云长文再谈“996”:和被剥削没关系,现在的人不傻
程序人生 - 996(三)马云长文再谈“996”:和被剥削没关系,现在的人不傻
133 0
|
程序员
程序员十大常规内卷操作,你学废了吗?
现阶段内卷已经成为互联网行业的专有名词,在很多公司,内卷的程度则代表着员工的努力程度,本文尝试教授十招程序员内卷操作,学完过后,帮助你干啥啥不行,内卷第一名。
|
存储 程序员 C++
如果当初学习编程时能有人给我这些忠告该多好
Cecily Carver 是多伦多的一位程序媛,和 Jennie Faber 一起创办了一个游戏制作工作室。她喜欢歌剧、舞蹈和弹钢琴。Cecily 在这篇文章分享她在编程道路上的所感所想,给出很多值得思考的编程箴言以及一些思想误区,比如在你学习编程之前思考一下你的目标、编程不是什么神秘的东西、坚持比方法更重要等,可以让我们在编程路上少走一些弯路,从而有更多的时间学习技术让自己变的越来越强大。
228 0
下一篇
DataWorks