序言
两门“终将落伍”的程式设计词汇—Java,为什么说Java是“终将落伍”呢?尽管这一两年Java的程式设计界行业龙头的位置被Python,C胜过过。但随着5G时代的来临,天地万物数据服务,更多的终端产品会采用Android系统,因此未来5年甚至10年Java合作开发必定是会越来越火热的。上面就是我归纳的2021遍布世界各地新一代的Java后端自学走线。
Lembron(隐晦版):
详细描述
计算机系统基本科学知识
自学Java之前最合适要了解许多计算机系统基本科学知识。这样会使你学起来更随心所欲一点,比如说计算机系统硬件的组成及各重要组成部分的机能、十进制科学知识、作业系统、互联网、民主化、缓存、Linux常见命令等。那些尽管是此基础,但都很关键,基本上都是会充斥你整个程式设计职业生涯。虽说“墙高基下,虽得必失”,因此打好此基础是很关键的。
Java基本科学知识
当他们掌控一定的计算机系统基本科学知识之后,自学Java就不能昂西桑县。比如说词汇此基础、多处理器、JVM(Java软件包)、Java的程序语言思想和常见此基础类、子集、IO流、多处理器、极度、散射等。那些此基础的小东西才是中非常困难的。当你把那些此关键性的小东西搞的很有条理,那么你以后的自学职业生涯基本上不能碰到什么大的难题。
常见辅助工具
他们自学Java会采用到很多辅助工具。我来介绍一下他们最常见的许多辅助工具,比如说IDEA、Eclipse、Git、SVN、Mavan、Gradle、JMC、VSCode、PostMan、Google Chrome、PDMan、Linux难题预测辅助工具等。
IDEA
IDEA是普遍认可为最合适的Java合作开发辅助工具,尤其在智能化标识符副手、标识符手动提示信息、解构、JavaEE支持、各种类型版辅助工具(git、svn等)、JUnit、CVS资源整合、标识符预测、 技术创新的GUI设计等方面的机能可以说是高智商的。
Eclipse
Eclipse是知名的虚拟化的民主自由软件系统合作开发环境(IDE)。起初主要用以Java词汇合作开发,但现在有人通过应用程序使其作为其他计算机系统词汇比如说C++和Python的合作开发辅助工具。
Git
Git 是一个开源的分布式版控制系统,用于敏捷、有效、高速的处理任何很小或很大的项目。 Git 与常见的版控制辅助工具 CVS, Subversion 等不同,它采用了分布式版库的方式,不必服务器端软件支持。
SVN
SVN是subversion的缩写,是一个开放源标识符的版控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同合作开发同一个项目,实现共享资源,实现最终集中式的管理。但SVN必须在有互联网的情况下才能提交标识符而Git并不需要。
Mavan
Maven是 Apache 下的一个纯 Java 合作开发的开源项目。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。 Maven 是一个项目管理辅助工具,可以对 Java 项目进行构建、依赖管理。 Maven 也可被用于构建和管理各种项目,比如说 C#,Ruby,Scala 和其他词汇编写的项目
JMC
JMC是源自JRockit JVM的一套监控和管理辅助工具,Oracle在发布JAVA 7u4(Java 7 Update 40)时将其包含在JDK中,用户不再需要单独下载。
采用 JMC可以监视和管理 Java 应用程序,不能导致相关辅助工具类的大幅度性能开销,它采用为 Java 软件包 (JVM) 的普通自适应动态优化收集的数据。
VS Code
是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)扩展的生态系统(摘自百度百科)
PostMan
在他们平时合作开发中,特别是需要与接口打交道时,无论是写接口还是用接口,拿到接口后肯定都得提前测试一下,这样的话就非常需要有一个比较给力的Http请求模拟辅助工具,现在流行的这种辅助工具也挺多的,像火狐浏览器应用程序-RESTClient,Chrome浏览器应用程序-Postman等等。这里介绍的Postman并不是Chrome浏览器应用程序,因为2018年初Chrome停止对Chrome应用程序的支持。Postman提供了独立的安装包,不再依赖于Chrome浏览器了。同时支持MAC、Windows和Linux。
PDMan
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
MemCached是一种基于内存的key-value存储,用以存储小块的任意数据(字符串、对象)。它便于快速合作开发,减轻合作开发难度,解决了大数据量缓存的很多难题,本质上,它是一个简洁的key-value存储系统
Redis
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
RPC(Remote Procedure Call)远程过程调用,通俗来讲就是,一个服务调用另一个服务提供的接口。 目前主流的RPC框架有,Dubbo、SpringCloud、Netty
容器
容器是一种沙盒技术,主要目的是为了将应用运行在其中,并与外界隔离,可以方便的将这个沙盒转移到其他机器上。通俗点的理解就是一个装应用软件的箱子,箱子里面有软件运行所需的依赖库和配置。合作开发人员可以把这个箱子搬到任何机器上,且不影响里面软件的运行。 目前主流的容器技术有,Docker、Kubernetes
大数据
大数据是指无法在一定时间范围内用常规软件辅助工具进行捕捉、管理和处理的数据子集。大数据的五大特征:1、大量;2、高速;3、多样;4、低价值密度;5、真实性。大数据最核心的价值就是在于对于海量数据进行存储和预测 大数据技术:ODPS,Hadoop,Hive,Hbase,Cassandra,Flink,Spark