Java服务端学习路线总纲

前言:Java服务端初学者建议直接Spring Boot起步写几个服务端Restful接口玩玩,这样能马上看到正反馈,有利于学习积极性。然后在开发过程中可以多看看Spring源码或其他中间件底层原理,以便快速定位解决问题、性能优化和高可用架构设计。


第一阶段:Java的精华知识复习

多线程编程、集合和IO模型,对JVM原理有较深入了解,并有排查线上问题和实际调优的经验;

泛型、反射机制和注解,还有常见设计模式中的“工厂模式”(DI)、代理模式(AOP)、观察者模式、发布订阅模式和装饰者模式等等。

第二阶段:JDBC连接Mysql和数据库SQL基础(包括增删改查操作以及多表查询)

在学校时,《数据库系统》这门课+课程设计,已经学习并多次实验练习,忽略

第三阶段:HTML+CSS+JavaScript基础,还有ajax异步加载和node.js(简单了解)

这是Web前端网页开发的基础,不熟悉的话可以简单了解一下,以便B/S交互;现在其实是前后端分离时代,了解一下前后端分离的node.js如何进行开发的流程就行。

在学校时,《Web网站设计与建设》这门课+课程设计,已经写过自己社交项目的萌土官网,去看看ajax异步加载技术和前后端分离的node.js即可。

第四阶段:Servlet/JSP开发、JSON数据格式,还有MVC模式的设计理念(简单了解)

Servlet/JSP开发,从此开始踏入JavaWeb开发的第一步,包括Servlet API,JSP文件,Tomcat服务器的部署和使用,了解HTTP/HTTPS协议,Json数据格式传输。这是Java Web开发的基础,可以帮助我们了解C/S(客户端和服务器端)的交互过程,SpringMVC就是基于Servlet实现的。

而MVC模式用于应用程序的分层开发,MVC要实现的目标是将数据、业务逻辑和软件用户界面分离以提高代码的可扩展性和可维护性。


第五阶段:Java三大框架,Spring+SpringMVC+MyBatis

Java服务器端开发的精华部分,重点学习。(重要)

对了,还有Restful风格API接口的设计、RPC远程调用可以简单了解一下。

第六阶段:  SpringBoot

它基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。

其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域成为领导者。(重要)

第七阶段:  Centos系统部署服务器环境,了解常用Linux命令和shell脚本

Centos系统是当前互联网公司普遍采用的高稳定性的Linux服务器系统。我们要了解常用的Linux命令、服务器故障排查命令以及shell脚本。

第八阶段:Ngnix负载均衡

在大型网站高并发处理的情况下,Nginx是Apache服务器容器不错的替代品,其特点是占有内存少,并发能力强,能够支持高达 50,000 个并发连接数的响应。Nginx还可以作为负载均衡服务,将请求/数据【均匀】分摊到多个操作单元上执行。

第九阶段:Mysql高可用架构设计和性能优化

Mysql索引的底层原理相关

Mysql调优:首先开启慢查询日志,接着explain执行sql语句查看是否走索引,最后优化慢SQL语句避免不走索引的情况等等

Mysql事务管理

Mysql主从同步

Mysql分布式存储:分库和分表

第十阶段:Redis缓存

NoSQL技术,泛指非关系型的数据库。随着大数据时代的到来,越来越多的网站、应用系统需要支撑海量数据存储,高并发请求、高可用、高可扩展性等特性要求,传统的关系型数据库在应付这些调整已经显得力不从心,暴露了许多能以克服的问题。由此,各种各样的NoSQL(Not Only SQL)数据库作为传统关系型数据的一个有力补充得到迅猛发展。

Redis和MongoDB是当前使用最广泛的NoSQL数据库,NoSQL技术是针对传统关系数据库的补充和升级。Redis作为基于内存的缓存系统,常用来和服务端关系型数据库搭配使用,解决互联网应用高并发难题。为了运行一个优化热门查询性能的Redis缓存,首先应确定你希望缓存的查询结果,应重点关注最常用的和最耗时的查询。Reids往内存中存储最常用的查询数据备份,当数据没有发生本质改变的时候不去数据库中查询,而是去内存中取数据,这样就可以降低数据库的读写次数,从而提高了网站效率。


第十一阶段:Spring Security 或 Shiro权限安全框架

Apache Shiro是一个强大且易用的Java安全框架,用来执行身份验证、授权、密码和会话管理。简单来说,Shiro就是一个鉴权框架,鉴(Authentication)是指用户登录验证,权(Authorization)是指用户权限控制。

第十二阶段:NIO知识和Netty异步高性能的通信框架

java.nio全称java non-blocking IO,是指JDK 1.4 及以上版本里提供的新api(实际上是 New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。所以,nio就是为高并发请求而诞生。

netty 是一个基于nio的客户端和服务器端编程框架,netty提供异步的,事件驱动的网络应用程序框架和工具,可以快速开发高可用的客户端和服务器。

阿里的开源分布式框架Dubbo就是采用netty作为基础通信组件。

第十三阶段:微服务框架Spring Cloud Alibaba(建议学习)

业务越来越复杂,服务分层,微服务架构是架构升级的必由之路。(重要)

Spring Cloud是一套微服务架构体系,服务注册与发现组件、网关组件、消息总线、配置、负载均衡、熔断器等等一系列的组件。

有了Spring Cloud这个微服务的框架,为什么又要使用Spring Cloud Alibaba这个框架?最重要的原因在于Spring Cloud中的几乎所有的组件都使用Netflix公司的产品,然后在其基础上做了一层封装。然而Netflix的服务发现组件Eureka已经停止更新,可能会有些细小的Bug;而其他的众多组件预计已在2020年停止维护。所以急需其他的一些替代产品,也就是Spring Cloud Alibaba,目前正处于蓬勃发展的态式。

SpringCloud组件的停更和替换说明

第十四阶段:Dubbo实现RPC服务调用

高并发,高可用,海量数据,没有分布式的基本理论和架构知识肯定是玩不转的。(重要)

Dubbo是阿里巴巴开源的一个分布式服务治理RPC框架,以RPC方式调用远程服务。提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。在很多互联网公司和企业应用中广泛使用。协议和序列化框架都可以插拔是极其鲜明的特色。

Dubbo服务注册中心最早是用的Zookeeper,现在阿里自己写了一个Nacos,所以现在大力推广Nacos。阿里内部更多用的是HSF分布式框架,Dubbo已经停止更新了(最近重出江湖,推出了Dubbo 3.0)。

Dubbo 定位是一款 RPC 框架, Spring Cloud 目标是微服务架构下的一站式解决方案。Spring Cloud Alibaba的服务通信可以采用Dubbo,

第十五阶段:分布式消息中间件Kafak或者RocketMQ

消息队列中间件在实际应用中常用的使用场景有异步处理,应用解耦,流量削锋和消息通讯四个场景。

新一代的Pulsar消息中间件还在发展中,互联网大厂Kakfa和RocketMQ用得比较多,建议上手。

第十六阶段:ElasticSearch搜索服务器

ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,是一种流行的企业级搜索引擎。

ElasticSearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。它能很方便的使大量数据具有搜索、分析和探索的能力,可以运用于云计算中。

第十七阶段:Docker和Kubernetes(K8S)

虚拟化技术和容器技术。

 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Kubernetes是用于自动部署、扩展和管理容器化应用程序的开源系统。Kubernetes容器编排具有完备的容器集群管理能力。 容器,提供应用级的主机抽象;Kubernetes,提供应用级的集群抽象。

流行趋势:云原生、Service Mesh的Istio和海量数据治理

Service Mesh被称为微服务2.0或下一代微服务;

Spring Cloud、Dubbo等微服务框架以后说不定也会淘汰,被基于Service Mesh(服务网格)形态的用于服务治理的Istio平台代替,现在各大互联网公司正在积极技术孵化中;

而且现在企业的应用不大需要从0到1的开发,很有可能需要现有稳定系统大规模数据的数据治理,所以了解一些大数据开发的技术会更吃香:Hadoop、Spark、Flink、ClickHouse等。


附录:Java服务端开发利器

工欲善其事必先利其器,不管是小白,还是资深开发,玩Java技术体系,选择好的工具,提升开发效率和团队协作效率,是必不可少的。

Git,项目版本控制管理工具

Maven,项目管理工具

Log4j,    强大的日志记录工具

Junit,  单元测试框架

Alibaba Java Coding Guidelines ,代码代码规范检查工具

Swagger, 规范的API接口文档自动生成工具(springfox-swagger2)

Jenkins ,持续集成工具

Postman,接口调试工具

Fidder,强大的HTTP调试抓包工具

JMeter,接口性能压测工具

这些工具不用特别去学,直接去使用,用多了自然而言就熟悉了。


参考链接:

面试官问:前后端分离项目,有什么优缺点?

SpringBoot面试题(面试必看)

Spring Cloud 快速入门-详细基础知识

IDEA中如何使用debug调试项目 一步一步详细教程

linux服务器部署SpringBoot项目并查看项目运行日志

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java架构何哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值