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

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

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% 的人在这个过程中会掉队。那么请相信我,只要目标明确,努力加上坚持,再加上一点点好运气,你就能登顶!


相关文章
|
23天前
|
机器学习/深度学习 人工智能
技术人的四大「造神」学习法,为啥就没人好好用呢?
技术人的四大「造神」学习法,为啥就没人好好用呢?
15 2
|
6月前
感觉和身边其他人有差距怎么办?
感觉和身边其他人有差距怎么办?
34 0
|
8月前
|
设计模式 网络协议 算法
|
10月前
|
人工智能 自然语言处理 机器人
ChatGPT被玩疯,问“如果美国倒了,世界会怎样?”回答太吓人了
ChatGPT被玩疯,问“如果美国倒了,世界会怎样?”回答太吓人了
|
10月前
|
NoSQL 算法 网络协议
二战腾讯倒在三面:我意识到自己与一线大厂程序员的差距
简单说一下吧,本人疫情还没开始时面试过一次鹅厂,在MySQL、redis这方面惨败,经过半年的沉淀,加上对MySQL,redis和分布式这块的补齐,终于重拾面试信心,再次出征。
|
人工智能 运维 数据可视化
程序员养家活口接私活必备网站(顺便用技术改变世界)
程序员接私活的原因很多种(挣钱、养家糊口、提升技术等等)。下面整理了一下网站送给最有潜能的你。 提前准备好自己的笔记本和技术呦。
486 0
|
Kubernetes NoSQL 网络协议
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
135 0
BAT 老兵的经验之谈,成长路上这个道理越早知道越好
|
传感器 人工智能 算法
呼喊极客们,六足机器人 HEXA 身上藏着未来人机交互方式的答案|涨知识
在刚刚过去的2016 亚洲消费电子展(CES ASIA)上,Vincross公司开发的HEXA成功获得LAST GADGET STANDING奖项的提名。在如今机器人蓬勃发展到有点眼花缭乱的时候,来自中国的创业者孙天齐带着他的HEXA,凭借着独特的外形和丰富的开源性,让中国的自主创新机器人走上国际舞台。
300 0
呼喊极客们,六足机器人 HEXA 身上藏着未来人机交互方式的答案|涨知识
和12岁小同志搞创客开发:有意思的激光切割技术
和12岁小同志搞创客开发:有意思的激光切割技术
和12岁小同志搞创客开发:有意思的激光切割技术
十问拼多多之九:批评并非为了“搞死”谁
摘要:媒体提出的质疑,如果运用得当,原本是企业校正的最好机会,原本是企业重塑自身形象的最好机会。
512 0