• 成为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开始。

    原文链接:https://mp.weixin.qq.com/s?__biz=MzU3NjU3NjYxMA==&mid=2247484107&idx=1&sn=f66977dbc7d47952bbe26c380d7128cb&chksm=fd108fc6ca6706d05cdf45240322ba9965790dd547ebd5e5fd7a165e3608ce4b8a946022d73c&mpshare=1&scene=1&srcid=&key=fba4f05adcd5d8263ac5848cfa93405cd1f0fadd3a89eb6c3dc98495b6256e63eb88725392068a2ecdc69384fa317ec1ca1913f6f893bea585e610881ebb7755810bad88a28ad0177ff715b0705da521&ascene=1&uin=MTczMTQxNDkwNA%3D%3D&devicetype=Windows+7&version=62060739&lang=zh_CN&pass_ticket=VtTLAbcL9tEEZerArcTxvO9p%2Fv6mgUjSFZj%2FlMx2xHqskbs1ibaLkXCwk%2B6S8ibE

  • 相关阅读:
    Hibernate 小章总结(三)
    河北民间组织管理系统软件
    《编写有效用例阅读笔记二》
    《编写有效用例》读后感(一)
    专业实训需求分析
    2015秋季个人阅读计划
    大道至简阅读笔记之三
    大道至简阅读笔记之二
    大道至简阅读笔记之一
    程序员修炼之道阅读笔记之二
  • 原文地址:https://www.cnblogs.com/a3192048/p/12241252.html
Copyright © 2020-2023  润新知