内容简介:计算机领域技术更迭非常之快,内容博大精深。涉及到分布式架构,更是分支众多,知识庞杂。本文将介绍要成为1个技术大牛的18般兵器谱,以及这条打怪升级之路,希望可以让新人少走弯路,在这条路上一步步提升自己。(1)常用数据结构,算法的时间/空间复杂度的计算(随便找本大学教科书都有的内容)
计算机领域技术更迭非常之快,内容博大精深。涉及到分布式架构,更是分支众多,知识庞杂。 很多新人在最初往往找不到头绪,不知道从何处下手来一步步提升自己的技术水准。
本文将介绍要成为1个技术大牛的18般兵器谱,以及这条打怪升级之路,希望可以让新人少走弯路,在这条路上一步步提升自己。
阶段1: 计算机功底
(1)常用数据结构,算法的时间/空间复杂度的计算(随便找本大学教科书都有的内容)
(2)Linux操作系统(从各种命令操作,到原理的理解:比如各种IO,磁盘文件组织、进程与内存管理、epoll)
(3)多线程(无论是用 Java 的Concurrent Util,还是C++直接用Liunx的pthread,原理都一样。各种线程同步机制的深刻理解)
(4)网络(知道一个完整的socket c/s程序是如何写的,TCP/IP协议的原理)
(5)数据库(比如B+树为什么可以实现关系数据库的各种查询方式、排序,比如事务的隔离级别)
(6)精通1门语言:不是只会用语法,而是能深刻理解语言下面的实现机制。如果你搞Java,怎要很好理解JVM的各种机制,class loader,内存模型,注解,动态代理。。;
如果你搞C++,需要理解编译、链接、运行的整个过程,对象在内存里面如何布局的,多态咋实现的(这方面书籍狂多,随便找1本国外大牛的书,好好啃完,对语言的理解就会深刻很多);
如果你搞其他语言,比如PHP,GO, Rust,同样的,除了很熟练的会用,可以去理解背后的实现原理。。
阶段2: 能用框架搭建各种系统
你可以用各种开源框架,搭建常用的Web应用,以Java为例:
Nginx,SpringMVC, Dubbo或者Spring Cloud,Mysql,Redis/Memcached,TFS,Kafka或者RocketMQ,CDN等
当然,非Web应用,比如IM这种,也有类似的各种框架(XMPP协议的实现),或者第3方支持的。
在这个阶段,也就知道了各种框架怎么用的,面对各种五花八门的业务,你都可以搭建出符合需求的系统出来:
Nginx的负载均衡;
SpringMVC的Web应用;
Dubbo/Spring Cloud的微服务框架;
Redis的分布式缓存;
Kafka的分布式队列;
CDN的静态内容分发;
TFS的分布式文件存储;
阶段3: 基础架构与中间件的原理
到了这个阶段,就需要的不光是用,而是对原理的深刻理解,有必要的看看源码。
用Redis Cluster,知道有哪些关键特性,这些特性的原理有好的理解;
用Kafka,知道Kafka为什么快,为什么高可用,其实现原理是什么。。
用Dubbo,知道网络IO怎么玩的,服务注册怎么搞的,动态代理用来干嘛。。
。。
对于做偏业务架构的人来说,这个阶段,只要原理很清楚就可以;
但如果就是做基础架构,那就不是光原理清楚了,而是要精通,对源代码很熟。
阶段4: 高并发 & 高可用 & 稳定性 & 一致性
到了这个阶段,可以说“术”这个层面已经很成熟,接下来就是要修“道”了。
我所说的“道”,就是指解决问题的方法论,成体系的方法,可以让上面这些武器、招式,在你的手上流畅发挥,让你面对任何问题的时候,都能从容应对。
第1种道:C端的大型系统,能够出完善的技术设计方案,在高并发、高可用、稳定性、一致性方面,都有很好的考虑。
阶段5:业务建模、业务架构
第2种道:B端的大型业务系统。
C端的东西,用户访问量很大,但业务逻辑相对简单。
而B端的系统,往往流程很长,功能模块狂多,开发团队人数多,流程与流程之间还各种耦合。在这种情况下,如果不能站在技术上面,更抽象的看整个系统,会面临失控的局面。到最后,就是没有人能说清楚这个系统到底干了多少事情。
所以,在这个阶段,需要能对整个业务做一个逻辑上的架构,这个逻辑架构最终会达到下面几个目的:
(1)整个系统具有很有的复用性、扩展性,不拖业务后腿
(2)团队人员,可以依据这个架构进行分工,高效协作
(3)更高级的,有前瞻性的,不仅不拖业务后腿,反而给了业务发挥空间。
阶段6:团队与领导力
这个阶段,就不光是技术的问题了。团队管理能力、综合素质、行业机遇、公司机遇、耐心。。种种因素的综合,让你可以带领1个很大的团队,做一个完整的业务,然后带更大的团队,做更大的业务。。。
写在最后:几个关键点
(1)上面的6个阶段,不是1个线性的过程,而是1个螺旋上升的过程,这也是事务发展的普适规律。越是大牛,往往越重视功底,到后面了,发现前面功底还不够,又回去更深的研究功底。
(2)空杯心态:其实除了上面列举的还有很多东西需要了解,比如机器学习、大数据、区块链。。这也是我在另外一篇文章提到的。活到老,学到老。
(3)到了后面,就超出了技术可主导的范畴了。现实中种种因素的合力,让你站在人生的某个位置。(此处不谈人生)
(4)兴趣。任何一个技,一个艺,都是十年磨一剑,没有兴趣,光凭毅力是持久不了的。
(5)耐心。再复杂的东西,都是从1+1=2开始的,单独看某1步,并不难;一点点的累积,累积到最后,你就觉得很复杂了。而这个过程,就需要你有耐心,从1+1=2开始。
以上所述就是小编给大家介绍的《成为1个技术大牛的入门到进阶之路(学习路线图)》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- Flutter 入门路线图
- 集成模型Xgboost!机器学习最热研究方向入门,附学习路线图
- JavaEE学习路线图
- Tendermint 2020 路线图
- 波卡网络的启动路线图
- AppCode 2021.1 路线图发布
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Learning Vue.js 2
Olga Filipova / Packt Publishing / 2017-1-5 / USD 41.99
About This Book Learn how to propagate DOM changes across the website without writing extensive jQuery callbacks code.Learn how to achieve reactivity and easily compose views with Vue.js and unders......一起来看看 《Learning Vue.js 2》 这本书的介绍吧!