Java高级技术梳理

序言

学习完java中高级阶段想对所学习到的知识进行梳理,借此回顾自己所学习到的知识

内容

环境搭建

在这一阶段,首先是安装了虚拟机. 在安装虚拟机过后,学习了以后,就开始安装在虚拟机上安装jdk, tomcat, mysql .,将这些软件安装好后,我们算是把虚拟机运行环境搭建完毕了.
Linux环境下安装(jdk\mysql\tomcat)

高级技术

maven技术

虚拟机环境搭建完毕之后,首先学习Maven, 用于对项目进行管理和构建 ,因为要使用Maven, 所以要在eclipse整合maven环境 ,在使用maven之前,首先要进行下载maven的软件包 ,并通过配置文件setting.xml进行远程仓库和镜像仓库的配置 .如果都配置成功,那么基础环境就搭建完毕了.

maven项目分为pom 项目, jar项目 , war项目 .pom项目常作为父项目, 进行 jar包进行统一管理 ;特别是版本控制 ; jar项目用于将该项目打包成jar包使用 ; war项目 , 也是最常用的项目 , 用于进web项目的开发.

maven项目的关系有三种, 依赖, 继承和聚合. 添加被依赖的坐标,即可获得被依赖的jar 包与相关的类(通过创建该类的对象获取或者直接导入) ,这就是依赖关系 . 继承关系用于描述父子项目关系 ,子项目继承父项目,也就是继承pom项目 ,被继承后,通过groupid 与artifactId 即可完成对坐标的导入 .聚合项目用于对一个模块进行更细致的划分, 降低耦合度.

Maven用常用的插件有: 全局编译插件, 配置在setting.xml中,用于规定运行maven所需要的jdk的版本 ;资源拷贝插件, 配置在相关项目的pom.xml 文件中, 用于对项目打包时对xml 文件也进行拷贝 ; tomcat插件, 同样配置在pom.xml .用于配置运行maven项目所需要的服务器的环境 .打包插件 ,用于将服务进行打包 ,发布到虚拟机或者网络上的注册中心上面 ,进行项目部书 ,一般配合资源拷贝插件一起使用!!!
Maven的安装与下载以及讲解

zookeeper技术

zookeeper技术, 它是一种分布式的开源的程序协调服务 .它的存储结构是树形结构, 包含四种类型的节点:持久化节点, 持久化顺序节点,临时节点和临时编号节点. 它的作用分为 :配置管理,名字服务,分布式锁与集群管理.在这一阶段的学习中,我们主要用到的是集群管理, 作用是用于提供常用软件的集群管理. 在集群管理中,引入了领导者-学习者-客户端的模型. 领导者用于进行集群内部的投票的发起和决议并根据决议结果更新系统状态. 学习者分为跟随者和观察者, 跟随者参与集群内部投票决议并向客户端返回结果. 观察者不参与系统投票,可以获取客户端的连接,它存在的目的是拓展系统 ,提高读取速度. 客户端则用于发起请求.
zookeeper技术

Dobbo技术

Dobbo技术, 他是一个高性能的服务框架 ,用于实现服务的输入和输出(服务注册和服务发现)。 它是基于面向服务的架构(SOA)与远程过程调用(RPC)的技术而研发的, 由此引入了提供者-消费者模型 。这个模型含有五个角色:分别是服务提供者、容器、服务消费者、注册中心、监控中心。 提供者用于提供服务;容器就是在dubbo技术中的服务端所依赖的容器,一般指的是spring容器;消费者用于消费服务;注册中心用于发布和订阅服务,;监控中心用于监控服务端(Provider)和消费端(Consumer)的使用数据。同时dubbo可以与zookeeper、redis进行整合。
Dobbo技术

vsftpd技术

vsftpd技术, 它是一块开源的ftp服务器软件,对linux上的ftp协议, 即对文件传输协议进保护. 增强文件传输的安全性与效率性. 而文件传输就涉及了上传和下载, 通过与java的整合, 来进行从虚拟机上文件的上传和下载

用户上传时,通过负载均衡服务器将图片上传到 ftp服务器上,它是一个专门用于存储图片的服务器,然后通过nginx反向代理, 使我们方便对文件的访问和下载 ,从而不会受限于单体接口图片存储的影响
VSFTPD技术

nginx技术

nginx技术, 用于配置正向代理和反向代理 . 正向代理,代理在客户端,服务端不知道实际发起请求的客户端 反向代理,代理在服务端, 客户端不知道实际提供服务的服务端. 反向代理常用于分摊服务器的压力, 即实现服务器的负载均衡. 通过配置虚拟主机 .,实现一台主机对外提供多个web服务 ,且他们之间互不影响 . 虚拟主机的配置分为基于ip ,基于端口 ,基于域名的配置 .
nginx技术

Redis技术

Redis技术, Redis是一个开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它支持的数据类型有五种,分别是String(get/set ket-value)、List(有序 l/r/push/pop key value)、Hash(无序,hget/hset key-field-value)、Set(无序 sadd/rem key-values)、SortSet(有序zadd/zrem key-value)。他可以与java进行整合,但需导入jedis的jar包 .在存入对象类型数据时, 需要将对象转换成 json格式才能存放到redis数据库中. 在项目中, 通常使用Redis技术进行单点登录时用户信息的存储和购物网站中商品信息及商品分类信息的缓存.
Redis技术
在这里插入图片描述

solr技术

solr技术,它是一种面向企业搜索的web应用。采用 Java5 开发,基于 Lucene 的全文搜索服务器,是一款非常优秀的全文检索引擎。 它采用倒排索引的方式进行全文搜索. 说到这里, 就需要介绍一下正排索引和倒排索引. 正排索引就是正排索引是以文档的 ID 为关键字,索引文档中每个字的位置信息,并记录每个关键词出现的次数. 查找时扫描索引中每个文档中字的信息直到找出所有包含查询关键字的文档; 倒排索引就是取出数据中的词条,以词条作为 key,对应数据的存储位置作为 value进行索引.

solr 使用时会首先对文档数据进行分词 ,创建索引库和文档数据库。所谓的分词是指:将一段字符文本按照一定的规则分成若干个单词。 另外他可以与java进行整合,但要注意导solrJ的jar包
Solr技术
Solr在分布式环境中的应用案例

ActiveMq技术

ActiveMq技术,ActiveMQ 是Apache出品,最流行的,能力强劲的,基于JMS的(java消息服务)开源消息总线。在学习时需要了解JMS模型点对点模型与发布订阅模型。点对点模型就是生产者发送一条消息到 queue,只有一个消费者能收到;消息订阅模型就是生产者发布消息到 topic ,只有订阅了 topic 的消费者才会收到消息。

他的原理是创建了一个消息队列 ,消息队列的主要特点是异步处理,主要目的是减少请求响应时间和解耦。所以主要的使用场景就是将比较耗时而且不需要即时(同步)返回结果的操作作为消息放入消息队列。同时由于使用了消息队列,只要保证消息格式不变,消息的发送方和接收方并不需要彼此联系, 也不需要受对方的影响,即解耦合。常用于用户注册、订单处理以及流量消峰等。它可以与java整合,但是需要导如相关的jar包
ActiveMQ技术

JsonP技术

JsonP技术,他是 json 的一种 “使用模式”,可以让网页从别的域名(网站) 获取资料,即跨域读取数据
为什么我们从不同的域(网站)访问数据需要一个特殊的技术(JSONP )呢?这是因为同源策略。同源是指"协议+域名+端口"三者相同。跨域有很多种解决方案,但是JsonP是其中的佼佼者。但他的缺点也很明显,就是只支持get方式的请求。他可以与java进行整合,但是需要导入jackson-databind的jar包,因为他只支持json类型的数据的跨域
JsonP技术

HTTPClient技术
HTTPClient 是用来提供高效的、最新的、 功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。 支持多种类型的请求,可以与java进行整合,但是需要导HttpClient的jar包
HTTPClient技术

MyCat技术

MyCat 是目前最流行的基于 java 语言编写的数据库中间件,其核心功能是分库分表。配合数据库的主从模式还可实现读写分离. 要尽可能的掌握主从数据库的搭建 , 需要重点掌握的一些技术关键词如下:水平切分、垂直切分、逻辑库、逻辑表、主从备份、读写分离等。
Mycat技术
MyCat练手项目以及简单分页功能实现

Swagger 技术

接口文档对于前后端开发人员都十分重要。尤其近几年流行前后端分离后接口文档又变成重中之重。接口文档固然重要,但是由于项目周期等原因后端人员经常出现无法及时更新,导致前端人员抱怨接口文档和实际情况不一致。

很多人员会抱怨别人写的接口文档不规范,不及时更新。当时自己写的时候确实最烦去写接口文档。这种痛苦只有亲身经历才会牢记于心。如果接口文档可以实时动态生成就不会出现上面问题。Swagger 可以完美的解决上面的问题。

个人觉得Swagger其实就是在管理Controller中的Handle所对应的接口,
由于管理后的描述文件是 json/yml格式不易观看, 所以引入了一个Swagger UI图形化管理页面
方便开发人员操作使用, 后端人员只需要引入Swagger和UI的坐标并在启动类添加@EnableSwagger2注解,
前端人员只需要访问 UI页面就可以实时的动态的知晓最新的接口信息, 减少人员沟通, 提升开发效率

通过使用相关注解, 可以方便我们快捷的对UI 页面的信息进行有解释的有选择的显示
Swagger技术

Docker技术初级

Docker的主要目标是“Build,Ship and Run Any App,Anywhere”,
也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的APP(可以是一个WEB应用或数据库应用甚至是Centos操作系统等)及其运行环境能够做到“一次构建,到处运行”。

Linux 容器技术的出现就解决了这样一个问题,而 Docker 就是在它的基础上发展过来的。
将应用运行在 Docker 容器上面,而 Docker 容器在任何操作系统上都是一致的,
这就实现了跨平台、跨服务器。只需要一次配置好环境,换到别的机子上就可以一键部署好, 大大简化了操作

Union 文件系统是 Docker 镜像的基础。Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统, 它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。镜像可以通过分层来进行继承. 基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。UnionFS一次同时可以加载多个文件系统,但从外面看起来,只能看到一个文件系统. 联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

Docker是解决运行环境和配置问题的软件容器 , 方便做持续集中并有助于整体发布的容器虚拟化技术.方便我们以镜像文件的形式安装tomcat, jdk, Nginx, redis 等软件甚至是centeros ,redhat等操作系统
Docker技术( 容器虚拟化技术 )

技巧合集系列

常用jar包坐标介绍

在学习完毕之后又进对常用的jar包坐标进行了梳理方便以后使用
Maven项目中常用jar包的坐标以及用法

基于RPC实现服务的注册、发布和消费

介绍了基于RMI的案例和Dobbo实现RPC服务的发布与消费和集群服务的消费,个人感觉是SpringBoot中Eureka注册中心客户端与服务端的前身
基于RPC实现服务的注册、发布和消费

逆向工程使用

逆向工程,电商项目的根本, 它的作用是根据数据库表以及表与表之间的关系自动生成对应的实体类以及Mapper接口以及映射文件并自动生成几乎我们所能用到的所有的Curd的方法, 但是它的缺点是只能进行单表操作.
MyBatis Generator( 逆向工程以及源码分析 )

分布式项目环境搭建

在学习了电商项目的时候,抽时间总结了基于Dubbo和zookeeper注册中心的分布式环境搭建
手把手教你搭建分布式项目环境

分布式项目服务发布

在学习了电商项目后, 抽时间总结了在虚拟机中发布基于Dobbo的分布式项目以及使用nginx为其进行服务的负载均衡的代理
基于Dubbo的服务提供者与消费者的发布(在虚拟机中)以及使用nginx对项目进行负载均衡优化

结语

学习了那么多, 有感而发写了这些东西,希望多少对自己的技术有点提升吧。本人虽然老是忘事,但是唯一坚信的便是,只要付出便会有回报。希望能够将这些东西化为己用,今后道路漫漫,这篇博文应该会持续更新,伴我成长!
附本人标准结尾: 岁月虽静好,仍需负重行~~~

已标记关键词 清除标记
<p> <span style="color:#337FE5;font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;font-size:11pt;line-height:normal;background-color:#FFFFFF;">内容简介:</span> </p> <p> <span><span style="font-family:'Microsoft YaHei', 'PingFang SC', Helvetica, Tahoma, Arial, 'Hiragino Sans GB', 'Microsoft YaHei', SimSun, Heiti, sans-serif;color:#222226;font-size:13.3333px;background-color:#FFFFFF;"> </span></span> </p> <p class="ql-long-39788408" style="font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;font-size:11pt;color:#494949;"> <span class="ql-author-39788408"></span> </p> <p style="font-family:'PingFang SC', 'Lantinghei SC', 'Microsoft Yahei', 'Hiragino Sans GB', 'Microsoft Sans Serif', 'WenQuanYi Micro Hei', Helvetica, sans-serif;color:#353535;font-size:15px;"> <span style="line-height:22.5px;"></span> </p> <p style="font-family:arial, 宋体, sans-serif;font-size:14px;color:#333333;"> <span style="line-height:24px;color:#333333;font-family:arial, 宋体, sans-serif;font-size:14px;background-color:#FFFFFF;">Spring框架是一个开放源代码的</span><a target="_blank" href="https://baike.baidu.com/item/J2EE/110838">J</a><span style="line-height:normal;">2EE</span><span style="line-height:24px;color:#333333;font-family:arial, 宋体, sans-serif;font-size:14px;background-color:#FFFFFF;">应用程序框架</span><span style="line-height:24px;color:#333333;font-family:arial, 宋体, sans-serif;font-size:14px;background-color:#FFFFFF;">。Spring解决了开发者在J2EE开发中遇到的许多常见的问题,提供了功能强大IOC、</span><span style="color:#333333;font-family:arial, 宋体, sans-serif;font-size:14px;background-color:#FFFFFF;line-height:normal;">AOP</span><span style="line-height:24px;color:#333333;font-family:arial, 宋体, sans-serif;font-size:14px;background-color:#FFFFFF;">及Web MVC等功能。Spring可以单独应用于构筑应用程序,也可以和Struts等众多Web框架组合使用,并且可以与 Swing等桌面应用程序AP组合。因此, Spring不仅仅能应用于JEE应用程序之中,也可以应用于桌面应用程序以及小应用程序之中。</span> </p> <p style="font-family:arial, 宋体, sans-serif;font-size:14px;color:#333333;"> <span>本章首先会从Spring前世今生和Spring中重要的设计思想开始讲起。逐步介绍Spring新特性,手写代码带领大家理解spring源码,并且会集成security等框架,为后续学习Spring Boot打下基础。</span> </p> <span style="color:#222226;font-family:PingFangSC-Regular, 'PingFang SC';font-size:14px;line-height:22px;background-color:#FFFFFF;"></span> <p style="font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;color:#222226;font-size:14px;background-color:#FFFFFF;"> <br /> </p> <p class="ql-long-39788408" style="font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;font-size:11pt;color:#494949;background-color:#FFFFFF;"> <span style="color:#337FE5;">为什么需要学习这门课程?</span> </p> <div class="_3uBK1dPI_0 _18IFJWYN_0" style="color:#333333;font-family:'PingFang SC', 'Lantinghei SC', 'Microsoft Yahei', 'Hiragino Sans GB', 'Microsoft Sans Serif', 'WenQuanYi Micro Hei', Helvetica, sans-serif;font-size:16px;background-color:#FFFFFF;"> <div class="_3CegnU7h_0" style="font-size:15px;color:#353535;"> <p> 目前,Spring已经成为Java后端开发的行业标准,绝大多数的公司选择Spring作为基础的开发框架,在日常的工作中都会用到Spring。学会使用Spring,也成为了JAVA工程师必备要求。 </p> <div> <br /> </div> </div> </div> <p class="ql-long-39788408" style="font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;font-size:11pt;color:#494949;background-color:#FFFFFF;"> <span style="color:#337FE5;">课程大纲:</span> </p> <p class="ql-long-39788408" style="font-family:'PingFang SC', 'Hiragino Sans GB', Arial, 'Microsoft YaHei', Verdana, Roboto, Noto, 'Helvetica Neue', sans-serif;font-size:11pt;color:#494949;background-color:#FFFFFF;"> <span class="ql-author-39788408">为了让大家快速系统了解Spring知识全貌,我为您总结了思维导图,帮您梳理学习重点,建议收藏!<img src="https://img-bss.csdnimg.cn/202006240621286399.jpg" alt="" /></span> </p> <br /> <p> <br /> </p>
相关推荐
©️2020 CSDN 皮肤主题: 博客之星2020 设计师:CY__ 返回首页