当前位置:   article > 正文

java九大阶段知识体系梳理_java怎么整合知识体系

java怎么整合知识体系

用思维导图学习java,分析java的知识体系。

接下来,我们会用九个阶段来一一分析各个阶段发展的过程会涉及到的技术要点。

java入门

在java基础里面,数据结构中的数组、链表、队列、栈的特点和使用场景要熟悉。线程、反射也是比较基础的东西,面试常问。在设计模式里面,我觉得还不用很特意去学习,很多容易忘记,很多时候我们的业务主要学会封装,那么代码管理起来就不叫简单的了,常用的模式:单例、工厂、代理、观察者、模板、策略这几个可以先熟悉一下。web方面的知识,http/tcp的四层需要了解,对于servlet、filter、listener都是web基础,session与cookie关系一定要弄懂。

框架基础

spring、mybatis是java程序员必备框架基础。spring的ioc、aop是核心概念,要对bean容器,利用aop自定义注解要熟悉运用。springmvc是现在使用最广泛的mvc框架。对应mvc的各大组件之间的关系和流程一定要熟悉,还有配置多数据源等。

SpringMVC流程

1、用户发送请求至前端控制器DispatcherServlet。
  2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。
  3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
  4、DispatcherServlet调用HandlerAdapter处理器适配器。
  5、HandlerAdapter经过适配调用具体的处理器(Controller,也叫后端控制器)。
  6、Controller执行完成返回ModelAndView。
  7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet。
  8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器。
  9、ViewReslover解析后返回具体View。
  10、DispatcherServlet根据View进行渲染视图(即将模型数据填充至视图中)。
  11、DispatcherServlet响应用户。

mybatis是现在主流的数据层框架,当然现在spring data jpa也有崛起的趋势,mybatis源码相对比较简单,可以去通读一遍。

springboot更是现在热门的框架,spring给我们整合一整套行业解决方案,很多都是基于springboot,比如springcloud等。集成起来特别方便。对于springboot,我们要了解和熟悉怎么去装配第三方模块的,怎么去自定义一个模块starter,怎么做到自启动加载等。

阶段一:单体项目

阶段二:物理分离应用和数据库

物理上将应用服务器与数据库进行分离,这样cpu、内存等压力就没这么大。

阶段三:缓存化、静态化

这里有一些通用的模板静态化基础,比如freemaker或者velocity等模板引擎的,现在很多代码生成的框架其实原理就是使用模板静态化的技术,定义好模板之后再传参渲染,就生成了想要的代码。

这里nginx适合作为我们的静态文件服务器,后面的动静分离就是使用了nginx。

阶段四:应用负载均衡,集群

nginx可以作为反向代理服务器,所以可以作为我们的负载均衡工具,这里还涉及到负载均衡的策略,比如轮询,权重等,需要弄懂。一般来说,nginx是主流,其他apache用得都比较少了。nginx还有一些上线技巧,比如蓝绿部署、灰度部署等。

蓝绿部署
一种可以保证系统在不间断提供服务的情况下上线的部署方式

灰度发布
指在黑与白之间,能够平滑过渡的一种发布方式

负载均衡(Load Balance) 其意思就是分摊到多个操作单元上进行执行,例如Web 服务器 、 FTP服务器 、 企业
关键应用服务器和其它关键任务服务器等,从而共同完成工作任务。

应用服务器负载均衡之后需要解决的第一个问题就是会话同步(session),常用的框架就是spring session、shiro-redis等。以及缓存中间的选用上,一般不用ehcache,选用redis较多。

当然,因为用到了nginx作为反向代理工具,所有nginx需要做高可用配置,常见是keepalived+nginx组合。

阶段五:动静分离

常说的动静分离解决方案一般都是把静态文件部署到nginx等文件服务器中,减少应用服务器的请求压力,这里还有个CDN的概念,大家要了解一下流程是怎么样的,毕竟现在常说cdn、cdn、cdn啥的,不懂就插不上嘴呀~

一般我们存储静态东西都喜欢使用云存储,所有七牛云,cos等云存储我们就经常使用到了。当然了,nginx也是动静分离的主要工具,因为一些css、js等文件一般放在nginx下。

阶段六:分布式缓存、缓存集群

这一阶段主要还是把缓存用到极致,重复利用redis的五大数据结构的优势去调整我们的数据显示,另外设计到的缓存问题比如缓存穿透、缓存雪崩、缓存击穿等概念要熟悉,还有解决方案。以及搭建redis的主从集群、哨兵等机制保证redis的高可用。

当然了,运用了缓存之后,有个比较重点的问题也诞生了,就是如何保证缓存与数据库的数据保存一致!

阶段七:读写分离、分库分表

阶段七中主要还是集中读写分离、分库分表,围绕着不同数据库之间的相互协调工作。

阶段八:微服务架构

现在rpc的解决方案主要有两个体系


阿里体系dubbo+zookeeper
spring体系springcloud

在springcloud中常用的组件之间的整合关系已经解决的对应的问题需要去熟悉和学会综合运用


注册中心Eureka
客户端负载均衡Ribbon
声明式Rest调用Feign
容错处理Hystrix
服务网关Zuul
统一管理配置Config
服务跟踪Sleuth+zipkin

还有服务拆分之后带来的一系列问题,比如为了达到高可用而需要解决的降级、超时重试、限流等。为了高并发而引入的消息队列、缓存、异步并发等技术都需要了解。

阶段九:NoSql与分布式搜索引擎

这里的一个重点就是我们的分布式搜索引擎了,在前面我们聊过lucene,而es、solr的底层其实都是lucene。所以我们对lucene的底层实现原理要熟悉(倒排索引),还要分词等概念。同时在es与数据库之间的数据同步问题,我们可以使用三种解决方案


基于cannal实现同步
基于消息队列实现同步
基于logstash实现同步

同时,不管es,还是mongo,这些nosql数据存储,都会有分片的概念,需要了解其高可用以及备份等原理。
来源:java九大阶段知识体系梳理_51CTO博客_java全栈知识体系

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/木道寻08/article/detail/802844
推荐阅读
相关标签
  

闽ICP备14008679号