一门“永不过时”的编程语言—Java,为什么说Java是“永不过时”呢?虽然这几年Java的编程界龙头的位置被Python,C超越过。但是随着5G时代的到来,万物互联,更多的终端会使用安卓系统,所以未来5年甚至10年Java开发必然是会越来越火爆的。下面就是我总结的2021最全最新的Java后端学习路线。
学习Java之前最好要了解一些计算机基础知识。这样会使你学起来更轻松一点,例如计算机硬件的组成及各组成部分的功能、进制知识、操作系统、网络、进程、线程、Linux常用命令等。这些虽然是基础,但是都很重要,几乎都是会伴随你整个编程生涯。俗话说“墙高基下,虽得必失”,所以打好基础是很重要的。
当我们掌握一定的计算机基础知识之后,学习Java就不会太难。例如语言基础、多线程、JVM(Java虚拟机)、Java的面向对象思想和常用基础类、集合、IO流、多线程、异常、反射等。这些基础的东西才是中最难的。当你把这些基础性的东西搞的很透彻,那么你以后的学习生涯几乎不会遇到什么大的问题。
我们学习Java会使用到很多工具。我来介绍一下我们最常用的一些工具,例如IDEA、Eclipse、Git、SVN、Mavan、Gradle、JMC、VSCode、PostMan、Google Chrome、PDMan、Linux问题分析工具等。
IDEA是公认为最好的Java开发工具,尤其在智能代码助手、代码自动提示、重构、JavaEE支持、各类版本工具(git、svn等)、JUnit、CVS整合、代码分析、 创新的GUI设计等方面的功能可以说是超常的。
Eclipse是著名的跨平台的自由集成开发环境(IDE)。最初主要用来Java语言开发,但是现在有人通过插件使其作为其他计算机语言比如C++和Python的开发工具。
Git 是一个开源的分布式版本控制系统,用于敏捷、有效、高速的处理任何很小或很大的项目。
Git 与常用的版本控制工具 CVS, Subversion 等不同,它采用了分布式版本库的方式,不必服务器端软件支持。
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。但是SVN必须在有网络的情况下才能提交代码而Git并不需要。
Maven是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。
Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。
Maven 也可被用于构建和管理各种项目,例如 C#,Ruby,Scala 和其他语言编写的项目
<dependencies>
<dependency>
<groupId>com.mcgroupId>
<artifactId>mc-utilsartifactId>
<version>1.0version>
<scope>systemscope>
<systemPath>${basedir}\src\lib\ldapjdk.jarsystemPath>
dependency>
dependencies>
JMC是源自JRockit JVM的一套监控和管理工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。
使用 JMC可以监视和管理 Java 应用程序,不会导致相关工具类的大幅度性能开销,它使用为 Java 虚拟机 (JVM) 的普通自适应动态优化收集的数据。
是Microsoft在2015年4月30日Build开发者大会上正式宣布一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代Web和云应用的跨平台源代码编辑器 可在桌面上运行,并且可用于Windows,macOS和Linux。它具有对JavaScript,TypeScript和Node.js的内置支持,并具有丰富的其他语言(例如C++,C#,Java,Python,PHP,Go)和运行时(例如.NET和Unity)扩展的生态系统(摘自百度百科)
在我们平时开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟工具,现在流行的这种工具也挺多的,像火狐浏览器插件-RESTClient,Chrome浏览器插件-Postman等等。这里介绍的Postman并不是Chrome浏览器插件,因为2018年初Chrome停止对Chrome应用程序的支持。Postman提供了独立的安装包,不再依赖于Chrome浏览器了。同时支持MAC、Windows和Linux。
PDMan是一款开源免费的数据库模型建模工具,支持Windows,Mac,Linux等操作系统,支持常见数据库MySQL,Oracle,SQLServer,DB2等。PDMan是PowerDesigner之外,另一个更好的免费的替代方案。他具有颜值高,使用简单的特点。包含数据库建模,灵活自动的自动生成代码模板,自动生成文档,自动同步DDL脚本到数据库,数据模型版本管理等多种开发人员实用的功能。
虽然我们是后端,但是我们可不能闭门造车,我们后端也是要学一些前端知识的。HTML、CSS、JS、Ajax我觉得是必须掌握的点,这些看着简单,但是如果深究的话,还是有很多点的。
还有市面上比较火的的前端三大框架Angular、React、Vue。这些东西入门很简单,我们后端的话,只要会用其实就够了,不用深究其中的原理。
对我来说,前端总结起来就是一句话,入门简单,精通很难。
数据库是数据的仓库。
与普通的“数据仓库”不同的是,数据库依据“数据结构”来组织数据,因为“数据结构”,所以我们看到的数据是比较“条理化”的(比如不会跟以前的普通文件存储式存储成一个文件那么不条理化,我们的数据库分成一个个库,分成一个个表,分成一条条记录,这些记录多么分明)
数据库分为关系型数据库和非关系型数据库。关系型数据库的是以表格形式存储的,非关系型数据不适合存储在数据表的行和列中,而是大块组合在一起。非关系型数据通常存储在数据集中,就像文档、键值对或者图结构
主流的关系型数据库:Mysql、Oracle、DB2、PostgreSQL、SQL Server
主流的非关系型数据库:Redis、MemcacheDB、MongoDB
在计算中,缓存是一个高速存储层,其中存储了数据子集,且通常是短暂性存储,这样日后再次请求此数据时,速度要比访问数据的主存储位置快。通过缓存,可以高效地重用之前的检索或计算的数据。
MemCached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。它便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题,本质上,它是一个简洁的key-value存储系统
Redis 是完全开源免费的,是一个高性能的key-value数据库。Redis与其他key - value 缓存产品对比有着一些优势。Redis支持数据持久化,将内存中的数据保存在磁盘中,重启的时候可以再次加载出来。
Redis支持多种数据结构的存储。Redis支持数据备份。
Java后端一些必须的框架,Spring、Spring MVC、Mybatis、Mybatis Plus、Spring Boot。这些是最基本的框架,空余时间还可以学习分布式框架,NIO框架等等
网关就是对请求到我们系统的所有请求做一个拦截,对这些请求做一些处理,最后找到对应的路由去请求。
问题1:
单机顶不住,我们多加几台服务器做集群,但是怎么将流量均匀的发到这些服务器上呢?
负载均衡,LVS
问题2:
我们机器都是通过IP访问的,那怎么通过我们申请的域名去请求到服务器呢?:
DNS
问题3:
大家平时刷的短视频平台,是怎么保证同时为全国的用户提供快速的体验?
CDN
问题4:
我们这么多服务和中间件,是怎么去管理调度的?
Zookeeper
问题5:
这么多的服务器,怎么对外统一访问呢,就可能需要知道反向代理的服务器。
Nginx
我们可以把消息队列比作是一个存放消息的容器,当我们需要使用消息的时候可以取出消息供自己使用。消息队列是分布式系统中重要的组件,使用消息队列主要是为了通过异步处理提高系统性能和削峰、降低系统耦合性。目前使用较多的消息队列有ActiveMQ,RabbitMQ,Kafka,RocketMQ。
总结起来就是一句话,消息队列主要是做异步、解耦、消峰的
搜索引擎是一个帮助用户搜索他们需要内容的计算机程序。换一种说法,搜索引擎就是把计算机中存储的信息与用户所需要的信息(information need)相匹配,并把匹配的结果展示出来。
例如:张三想购买一个手机,他在某宝的搜索框中输入 手机 ,然后点击搜索按钮,在他按下搜索按钮的时候,就会根据 手机 两个字去某宝的巨大的数据库中搜索,然后拿到所有的关于手机的产品,展示给张三。
RPC(Remote Procedure Call)远程过程调用,通俗来讲就是,一个服务调用另一个服务提供的接口。
目前主流的RPC框架有,Dubbo、SpringCloud、Netty
容器是一种沙盒技术,主要目的是为了将应用运行在其中,并与外界隔离,可以方便的将这个沙盒转移到其他机器上。通俗点的理解就是一个装应用软件的箱子,箱子里面有软件运行所需的依赖库和配置。开发人员可以把这个箱子搬到任何机器上,且不影响里面软件的运行。
目前主流的容器技术有,Docker、Kubernetes
大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合。大数据的五大特征:1、大量;2、高速;3、多样;4、低价值密度;5、真实性。大数据最核心的价值就是在于对于海量数据进行存储和分析
大数据技术:ODPS,Hadoop,Hive,Hbase,Cassandra,Flink,Spark