终于把Java架构师知识要点整理好了,技术大牛教你少走弯路

这是一篇分享技术干货的文章,适合Java进阶的同学参考,初学Java的同学也可以备用,因为这些内容对于立志成为架构师的你不可或缺。我们先从Java架构师的岗位要求说起:

终于把Java架构师知识要点整理好了,技术大牛教你少走弯路

除了对工作经验、知识结构、逻辑思维方面的要求,在具体技术层面可以看出Spring全家桶、消息中间件ActiveMQ、JVM性能调优都占有比较重要的位置,下面我们将介绍这些技术要点,并结合分布式电商项目,帮你快速梳理。这些内容展开来讲比较多,如果需要详细学习资料,在私信中回复“学习”即可获取!前方高能,请上车。

Spring 全家桶

Spring全家桶其实可以将其看做是一套技术合集,它包括SpringMVC、SpringBoot、Spring Cloud、Spring Cloud Dataflow等解决方案。很多技术研发人员将Spring作为项目的核心内容,当然也是面试必考。

1.Spring Boot

它的目标是简化Spring应用和服务的创建、开发与部署,简化了配置文件,使用嵌入式web服务器,含有诸多开箱即用的微服务功能,可以和spring cloud联合部署。

Spring Boot的核心思想是约定大于配置,应用只需要很少的配置即可,简化了应用开发模式。

2.Spring Data

是一个数据访问及操作的工具集,封装了多种数据源的操作能力,包括:jdbc、Redis、MongoDB等。

3.Spring Cloud

是一套完整的微服务解决方案,是一系列不同功能的微服务框架的集合。Spring Cloud基于Spring Boot,简化了分布式系统的开发,集成了服务发现、配置管理、消息总线、负载均衡、断路器、数据监控等各种服务治理能力。比如sleuth提供了全链路追踪能力,Netflix套件提供了hystrix熔断器、zuul网关等众多的治理组件。config组件提供了动态配置能力,bus组件支持使用RabbitMQ、kafka、Activemq等消息队列,实现分布式服务之间的事件通信。

Spring Boot对于掌握Spring Cloud部分的技术非常重要,已经有不少企业应用到了自己的项目中,也常见于程序员架构师面试当中。


终于把Java架构师知识要点整理好了,技术大牛教你少走弯路


终于把Java架构师知识要点整理好了,技术大牛教你少走弯路


ActiveMQ及其应用场景

ActiveMQ是Apache出品,是目前比较流行的,能力强劲的开源消息总线。ActiveMQ是一个完全支持JMS1.1和J2EE1.4规范的JMS Provide实现。尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中仍然扮演这特殊的地位。

应用场景:

  • 消息队列在大型电子商务类网站,如京东、淘宝、去哪儿等网站有这深入的应用。
  • 队列的主要作用:消除高并发访问高峰,加快网站的响应速度。
  • 在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,对数据库造成巨大的压力,同时也使系统响应延迟加剧;
  • 早使用队列后,用户的请求发给队列后立即返回;
  • 例如:当然不能直接给客户提示订单提交成功,在淘宝上提示:"您提交了订单,请等等系统确认"
  • 再由消息队列的消费者进程从消息队列中获取数据库,异步写入数据库。
  • 由于消息队列的服务处理速度远快于数据库,因此用户的响应延迟可能得到有效改善。


终于把Java架构师知识要点整理好了,技术大牛教你少走弯路


JVM性能调优

JVM内存模型及垃圾收集算法

1.根据Java虚拟机规范,JVM将内存划分为:

New(年轻代)、Tenured(年老代)、永久代(Perm)

其中New和Tenured属于堆内存,堆内存会从JVM启动参数(-Xmx:3G)指定的内存中分配,Perm不属于堆内存,有虚拟机直接分配,但可以通过-XX:PermSize -XX:MaxPermSize 等参数调整其大小。

年轻代(New):年轻代用来存放JVM刚分配的Java对象

年老代(Tenured):年轻代中经过垃圾回收没有回收掉的对象将被Copy到年老代

永久代(Perm):永久代存放Class、Method元信息,其大小跟项目的规模、类、方法的量有关,一般设置为128M就足够,设置原则是预留30%的空间。

New又分为几个部分:

Eden:Eden用来存放JVM刚分配的对象

Survivor:两个Survivor空间一样大,当Eden中的对象经过垃圾回收没有被回收掉时,会在两个Survivor之间来回Copy,当满足某个条件,比如Copy次数,就会被Copy到Tenured。显然,Survivor只是增加了对象在年轻代中的逗留时间,增加了被垃圾回收的可能性。

2.垃圾回收算法

垃圾回收算法可以分为三类,都基于标记-清除(复制)算法:

Serial算法(单线程)

并行算法

并发算法

JVM会根据机器的硬件配置对每个内存代选择适合的回收算法,比如,如果机器多于1个核,会对年轻代选择并行算法,关于选择细节请参考JVM调优文档。

稍微解释下的是,并行算法是用多线程进行垃圾回收,回收期间会暂停程序的执行,而并发算法,也是多线程回收,但期间不停止应用执行。所以,并发算法适用于交互性高的一些程序。经过观察,并发算法会减少年轻代的大小,其实就是使用了一个大的年老代,这反过来跟并行算法相比吞吐量相对较低。


终于把Java架构师知识要点整理好了,技术大牛教你少走弯路


除此之外,还有zookeeper和Redis需要大家关注一下,由于篇幅限制不能为大家详细阐述,但已经为大家准备好了先关的技术文档,可以分享给大家:


终于把Java架构师知识要点整理好了,技术大牛教你少走弯路

除此之外还有分布式电商项目可以帮助大家进一步深化对以上知识点的理解,需要获取完整教程用来学习的朋友们可以关注一下小编,后台私信:【学习】并转发此文,获取免费领取方式!以及我整理好的一套近期阿里面试真题500页笔记。


分享到:


相關文章: