0
点赞
收藏
分享

微信扫一扫

成为1个技术大牛的入门到进阶之路

何以至千里 2021-09-28 阅读 46

前言:

计算机领域技术更迭非常之快,内容博大精深。涉及到分布式架构,更是分支众多,知识庞杂。很多新人在最初往往找不到头绪,不知道从何处下手来一步步提升自己的技术水准。

本文将介绍要成为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个很大的团队,做一个完整的业务,然后带更大的团队,做更大的业务。

欢迎工作一到五年的Java工程师朋友们加入Java架构交流群:909723834

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

举报

相关推荐

0 条评论