一位资深架构师大牛给予Java技术提升的学习路线,从Java码农到年薪八十万的架构师

🍅 联系作者:技术交流,定期分享Java硬核技术干货
🍅Java架构师面试题汇总:10万字208道Java经典面试题总结(附答案)
🍅 添加公众号:滴石编程

一位资深架构师大牛给予Java技术提升的学习路线,从Java码农到年薪八十万的架构师

怎样才能从一名java初级程序员成长为一名合格的架构师?

这不仅是一个刚刚踏入职场的初级程序员会经常问到的问题,甚至工作3-5年的老程序员也会感到迷茫。

比如说我,在程序员这个岗位做了2年的时间,每天都是做着重复的工作,却又不满足,由于今年的情况,让我找到了时间空隙,通过系统的学习,终于从一名普通程序员进阶到了架构师。

不得不说,那感觉真的完全不一样,最明显的就是跳槽后,工资有了大幅度的提升,毕竟已经升了个档次嘛,其次就是感觉脑子终于用起来了。

讲句实话,当你java进阶之后,你会萌生出:我为什么没有早点学习的想法,就只是每天抽点时间听老师讲课、刷题、实操而已,每一步都有老师带领,资料也全部有提供,多好啊!

独乐乐不如众乐乐,我也把我的学习群推荐给有需要的同行们,一起搞钱~

Java技术交流群,干货满满!
Java的进阶之路难不难呢?到底要学些什么呢?这里就简单的和大家说一下~

一、Java知识升级

要想成为Java高级专家肯定还是要继续学习java知识的。

一般的程序员或者只需要知道一些Java的语法结构就可以应付了。但要成为Java专家,还要对Java做比较深入的研究。

比如说,JDBC、IO包、源码分析、高并发、JMS、Spring、RMI、线程等。如果可以的话,Java所有的包都要浏览一下,知道大概的API,这样你会发现很多想实现的功能,通过Java的API都可以实现。

例如

Spring Aop:

它基于动态代理来实现。默认地,如果使用接口的,用 JDK 提供的动态代理实现,如果没有接口,使用 CGLIB 实现。大家一定要明白背后的意思,包括什么时候会不用 JDK 提供的动态代理,而用 CGLIB 实现。

Spring 3.2 以后,spring-core 直接就把 CGLIB 和 ASM 的源码包括进来了,这也是为什么我们不需要显式引入这两个依赖

Spring 的 IOC 容器和 AOP 都很重要,Spring AOP 需要依赖于 IOC 容器来管理。

Spring AOP 只能作用于 Spring 容器中的 Bean,它是使用纯粹的 Java 代码实现的,只能作用于 bean 的方法。

Spring 提供了 AspectJ 的支持,但只用到的AspectJ的切点解析和匹配。

很多人会对比 Spring AOP 和 AspectJ 的性能,Spring AOP 是基于代理实现的,在容器启动的时候需要生成代理实例,在方法调用上也会增加栈的深度,使得 Spring AOP 的性能不如 AspectJ 那么好。

AspectJ:

AspectJ 出身也是名门,来自于 Eclipse 基金会,link:https://www.eclipse.org/aspectj

属于静态织入,它是通过修改代码来实现的,它的织入时机可以是:

Compile-time weaving:编译期织入,如类 A 使用 AspectJ 添加了一个属性,类 B 引用了它,这个场景就需要编译期的时候就进行织入,否则没法编译类 B。

Post-compile weaving:编译后织入,也就是已经生成了 .class 文件,或已经打成 jar 包了,这种情况我们需要增强处理的话,就要用到编译后织入。

Load-time weaving:指的是在加载类的时候进行织入,要实现这个时期的织入,有几种常见的方法。

1.自定义类加载器来干这个,这个应该是最容易想到的办法,在被织入类加载到 JVM 前去对它进行加载,这样就可以在加载的时候定义行为了。

2.在 JVM 启动的时候指定 AspectJ 提供的 agent:-javaagent:xxx/xxx/aspectjweaver.jar。

AspectJ 能干很多 Spring AOP 干不了的事情,它是 AOP 编程的完全解决方案。Spring AOP 致力于解决的是企业级开发中最普遍的 AOP 需求(方法织入),而不是力求成为一个像 AspectJ 一样的 AOP 编程完全解决方案。

因为 AspectJ 在实际代码运行前完成了织入,所以大家会说它生成的类是没有额外运行时开销的。

二、XML

现在的系统中不使用XML几乎是不可能的。

XML的功能非常强大,它可以做数据转换、做系统的配置,甚至可以保存系统业务数据。

因此,如果要进阶的话,必须要了解XML,包括它的语法、结构,同时还要比较熟练的使用解析XML的一些API,比如JDOM、SAX等。

因为在项目中,XML往往担任系统配置信息的作用,而此时是需要用API解析这些配置信息,来开发完美的项目。

  1. xml:即可扩展标记语言,xml是互联网数据传输的重要工具,它可以跨越互联网任何的平台,不受编程语言和操作系系统的限制,可以说它是一个拥有互联网最高级别通行证的数据携带者。xml是当前处理结构化文档信息中相当给力的技术,xml有助于在服务器之间穿梭结构化数据,这使得开发人员更加得心应手的控制数据的存储和传输。

Xml用于标记电子文件使其具有结构性的标记语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。Xml是标准通用标记语言(SGML)的子集,非常适合Web传输。XML提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据。

2.xml的特点及作用:

特点:

v xml与操作系统、编程语言的开发平台都无关;

v 实现不同系统之间的数据交互。

三、精通使用一种或两种框架

《如何成为高薪架构师》中有提到:

框架都会有许多可重用的代码,良好的层次关系和业务控制逻辑,基于框架的开发可以节省很多开发成本。

但是我所说的“精通”更多是指,通过框架的使用了解框架的思想,这样在开发项目时,思路会更开阔一些。

比如,把SQL语句与Java代码分开

四、熟悉主流数据库

一般大项目都是有专门做数据库的,但是往往很多项目要求工程师也参与数据库的设计以及SQL的编写。

所以,为了能更好的完成项目,还是需要多了解主流数据库,比如,SQLSERVER,ORACLE,多连接SQL和存储过程以及触发器。

如果不是科班出身,数据库原理方面的知识也是必不可少的。

五、UML

想要成为高级工程师,了解或熟练或精通UML,这就取决于你对职位的“野心”有多大。

在比较正规的开发团队中,UML是讨论项目的交流工具,要是想要做软件工程师,至少要得看懂;如果是进阶为高级工程师,那就需要通过UML来描述对项目的理解。

他不是必须的,但是很重要。

所以,想要进阶一定要找正规、系统、全面的老师,才能在这一块能够帮助到你。

Java技术交流群,干货满满!
六、思维转变

这一点是很难转变的,我在学习的过程中,因为这不是一个知识点,也不是通过书本能够学到的,但是老师一直在帮我调整。

如果你要成为高级软件工程师,那么就需要向系统分析员、需求分析员、系统设计员学习,多站在他们的角度上看项目,在项目开始之初, 就应该对项目有个大致的分析、设计,然后再与他们进行比较,找出差别,查漏补缺。

作为一名合格的架构师,必须懂各种网络产品和特性,懂各种中间件,能够知道坑在哪里,深谙各种技术方案的优缺点,懂整合各种资源并达到最优,了解各种技术及应用场景,有足够的工作经验解决集成中遇到的各种奇葩问题。

如果你能够沉下心来学习更深层次的内容,相信你进阶之路一定会成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值