- Redis
Lin_Miao_09
技术架构Redisredis数据库缓存
目录一、Redis基础知识数据持久化高可用性和扩展性性能优化应用场景二、Redis的Java常用客户端JedislettuceRedisson三、Redis实战Jedis1.添加依赖2.基本使用例子3.使用连接池优化性能spring-boot-starter-data-redis1.添加依赖2.配置文件设置3.使用RedisTemplate或Repository使用RedisTemplate使用R
- 探索TypeScript设计模式:构建更健壮的软件基石
任蜜欣Honey
探索TypeScript设计模式:构建更健壮的软件基石TypeScript-Design-PatternsCoderepositoryforTypeScriptDesignPatterns,publishedbyPackt项目地址:https://gitcode.com/gh_mirrors/typ/TypeScript-Design-Patterns在编程的世界里,设计模式是开发者们的指南灯,它
- android studio 使用maven-publish 插件上传aar到远程maven仓库
-优势在我
androidstudiomavenandroid
上传插件编写1、在工程目录下添加upload.gradle文件applyplugin:'maven-publish'defRELEASE_REPOSITORY_URL='http://xxx.xx.com/artifactory/repository/release/'defSNAPSHOT_REPOSITORY_URL='http://xxx.xx.com/artifactory/reposit
- org.pentaho:pentaho-aggdesigner-algorithm:jar:5.1.5-jhyde Maven下载不下来
百夜﹍悠ゼ
mavenjarjava
找了很多文章都提供以下两种方式1)设置maven镜像仓库aliyunmaven*阿里云spring插件仓库https://maven.aliyun.com/repository/spring-pluginnexus-aliyun*Nexusaliyunhttp://maven.aliyun.com/nexus/content/groups/public2)pom文件增加springhttps://
- SpringWebFlux结合多线程编写流式处理异步返回接口
starsAreCloser
springWebFlux多线程编排springmvcspringboot
文章目录概要整体架构流程技术细节小结概要java使用多线程为关系型数据库结合spring响应式编程模拟流式处理整体架构流程使用webFlux的时候如果涉及到数据库操作是需要数据库支持的,非关系型数据库对此支持比较友好如redis的ReactiveStringRedisTemplate和MongoDB的ReactiveMongoRepository就支持该功能,但是关系型数据库oracle,mysq
- ubuntu20.04安装Android Studio
源代码杀手
C/C++ubuntuandroidstudioandroidandroid-studio
1、安装方式一:在线安装sudoadd-apt-repositoryppa:maarten-fonville/android-studiosudoaptupdatesudoaptinstallandroid-studio启动:/opt/android-studio/bin…/studio.sh创建快捷方式sudoln-s/opt/android-studio/bin/studio.sh/usr/b
- Ubuntu 20.04 安装AppImage格式的文件
viacm
Ubuntu
问题描述:修改AppImage权限,增加可执行权限,双击无法安装的话看下述教程安装appimagelauncher#addthisppatosystemsudoadd-apt-repositoryppa:appimagelauncher-team/stablesudoapt-getupdate#installappimagelauncheraptinstallappimagelauncher使用a
- Linux下安装使用f.lux
NearXDU
杂谈fluxubuntu
f.lux:全天候保护你的眼睛。Windows下用起来非常好了,最近在Ubuntu工作比较多,就想装一个Linux版本的。环境:Ubuntu14.0464位步骤:1.添加PPA到系统sudoadd-apt-repositoryppa:kilian/f.lux错误:unabletolocatepackageadd-apt-repository上网查了一下需要先安装python-software-pr
- git bash在github的库中上传或更新本地文件
misty youth
gitbashgithub
一、将本地文件上传到GitHub仓库1.创建GitHub仓库如果你还没有在GitHub上创建仓库,首先需要创建一个新的仓库:登录到GitHub。点击右上角的+按钮,选择Newrepository。给你的仓库起个名字,并选择Public或Private,然后点击Createrepository。2.初始化本地Git仓库如果你还没有将本地文件夹初始化为Git仓库,可以通过以下命令在本地初始化Git仓库
- github与git bash绑定问题
misty youth
githubgitbash
当输入$ssh-Tgit@github.com时,返回ssh:connecttohostgithub.comport22:Connectionrefused,解决方法:使用HTTPS代替SSH如果你无法通过SSH连接,你可以改用HTTPS克隆仓库,而不是SSH。使用gitclonehttps://github.com/username/repository.git来替代使用SSH链接的方式。使用G
- github - 使用
wishfly
linuxgithub
注册账户以及创建仓库要想使用github第一步当然是注册github账号了,github官网地址:https://github.com/。之后就可以创建仓库了(免费用户只能建公共仓库),CreateaNewRepository,填好名称后Create,之后会出现一些仓库的配置信息,这也是一个git的简单教程。Github安装下载gitOSX版下载gitWindows版下载gitLinux版配置Gi
- Tritonserver 在得物的最佳实践
运维
一、Tritonserver介绍Tritonserver是Nvidia推出的基于GPU和CPU的在线推理服务解决方案,因其具有高性能的并发处理和支持几乎所有主流机器学习框架模型的特点,是目前云端的GPU服务高效部署的主流方案。Tritonserver的部署是以模型仓库(ModelRepository)的形式体现的,即需要模型文件和配置文件,且按一定的格式放置如下,根目录下每个模型有各自的文件夹。.
- 2024.1.2版本Android Studio gradle下载超时问题处理
粤M温同学
Androidandroidstudioandroid
一、问题背景在项目的根build.gradle里面配置了以下地址后,依旧下载gradle包失败,平常如果出现第三方库或者gradle下载失败,配置以下地址,一般可以下载成功maven{url'https://maven.aliyun.com/repository/public'}maven{url'https://maven.aliyun.com/nexus/content/groups/publ
- Ubuntu 上安装和配置 Nexus Repository Manager
java 凯
ubuntulinux运维
在Ubuntu上安装和配置NexusRepositoryManager(SonatypeNexus)通常用于管理Maven、npm、Docker等包的私有仓库。以下是详细步骤:1.系统准备更新系统并安装必要依赖:在终端运行以下命令:sudoaptupdatesudoaptupgrade-ysudoaptinstall-ywgetopenjdk-11-jdkunzip确保安装了Java(Nexus需
- Ubuntu 上安装 MySQL 8.0.22
java 凯
ubuntumysqladb
在Ubuntu上安装MySQL8.0.22,可以通过以下步骤完成:步骤1:更新系统软件包sudoaptupdatesudoaptupgrade-y步骤2:下载MySQL官方APT仓库包前往MySQL官方下载页面获取APT仓库配置包的链接:MySQLAPTRepository使用以下命令下载:wgethttps://dev.mysql.com/get/mysql-apt-config_0.8.24-
- SAP BTP 参考架构项目教程
滑辰煦Marc
SAPBTP参考架构项目教程sap-btp-reference-architecturesThisrepositorycontains"SAPBTPreferencearchitectures"basedontheofficialBTPsolutiondiagramsandicons..项目地址:https://gitcode.com/gh_mirrors/sa/sap-btp-reference
- 【SpringBoot】SpringBoot:打造现代化微服务架构
E绵绵
Everything架构springboot微服务
文章目录引言微服务架构概述什么是微服务架构微服务的优势使用SpringBoot构建微服务创建SpringBoot微服务项目示例:创建订单服务配置数据库创建实体类和Repository创建服务层和控制器微服务间通信使用RestTemplate进行同步通信示例:调用用户服务使用Feign进行声明式通信示例:使用Feign调用用户服务服务发现与注册配置EurekaServer配置EurekaClient
- Ansible与Shell结合使用
斯内克@张伟字益达
Ansibleansiblelinux服务器
利用Shell脚本运行Ansible命令:本实验采用rhel8.3。这次将使用yum_repository模块远程写入仓库配置。写入仓库:Shell脚本:#!/bin/bashansibledev-myum_repository-a'name=myBasedescription="myTestRepo\baseurl="/mnt/BaseOS"gpgcheck=noenabled=no'ansib
- C# 面试问题高级:052 - 什么是仓储模式(Repository Pattern) ?
caifox菜狐狸
C#面试问题高级log4jc#开发语言设计模式面试仓储模式Repository
在现代软件开发中,数据访问层的设计和实现变得越来越复杂。为了更好地分离关注点、提高代码的可维护性和测试性,许多设计模式应运而生。仓储模式(RepositoryPattern)是其中一种非常流行的设计模式,特别适用于数据持久化操作。1.什么是仓储模式?1.1定义仓储模式是一种设计模式,用于抽象和封装数据访问逻辑。它将数据访问的具体实现与业务逻辑分离,使得应用程序可以更容易地进行单元测试和维护。仓储模
- centos 搭建maven私服(安装Nexus)
云南吴小黑
mavenlinux自动化部署centoslinux
环境搭建1.安装jdk,注意版本要求;2.选择nexus版本,它有两个版本,NexusRepositoryManagerOSS和NexusRepositoryManagerPro,一般使用前者即可;3.本地下载:https://www.sonatype.com/download-oss-sonatype(或者使用wget命令下载:wgethttps://sonatype-download.glob
- Centos安装Sonatype Nexus Repository教程
Tw.Src
1024程序员节centos
目录0x00Nexus简介0x01详细安装步骤1.更新系统2.安装Java3.解压Nexus4.移动目录5.创建Nexus用户和组6.修改Nexus目录权限7.配置Nexus作为服务8.启用Nexus服务9.访问Nexus0x00Nexus简介Nexus是一个开源的仓库管理器(repositorymanager),用于管理和分发软件组件、构建和部署制品。它是一个用于构建和管理软件开发生命周期的工具
- You can prevent this from appearing by disabling DEBUG logging for ...
小昊子的iPhone
springspringlogging
关于spring报类似于如下信息的处理:YoucanpreventthisfromappearingbydisablingDEBUGloggingfororg.springframework.session.web.http.SessionRepositoryFilter.SESSION_LOGGER上句的解释为:可以通过调整org.springframework.session.web.http
- FaceLit: Neural 3D Relightable Faces 项目教程
孙双曙Janet
FaceLit:Neural3DRelightableFaces项目教程ml-facelitOfficialrepositoryofFaceLit:Neural3DRelightableFaces(CVPR2023)项目地址:https://gitcode.com/gh_mirrors/ml/ml-facelit1.项目介绍FaceLit:Neural3DRelightableFaces是由App
- MVVM架构:LiveData + ViewModel + Repository搭配的三种解决方案
2401_86964502
架构
publicvoidloadData1(){repository.getData1();}publicvoidloadData2(){repository.getData2();}}Type1Repository负责提供livedata变量比如mLiveData1、mLiveData2,已经具体获取数据的方法如getData1、getData2;publicclassType1Repository
- Ansible常用模块
时羽天
Ansiblelinuxansible运维
文章目录ansible模块常用模块1、user2、shell3、copy4、template5、file6、lineinfile7、yum_repository8、yum9、service10、fetch11、firewalld12、replace13、parted14、filesystem15、mount16、lvg17、lvol18、sefcontext19、debug20、cron21、ge
- Java 代码实现pdf转word文件 | 无水印 | 无页数限制
泰山AI
Java高级技术java开发语言pdfword
一、前言学习概述:简单的介绍一下本篇文章要讲解的Java知识点学习目标:读者读完这篇文章之后,你希望他掌握你讲解的哪些重要的知识点二、jar破解1.项目远程仓库配置aspose-pdf这个需要配置单独的仓库地址才能下载,不会配置的可以去官网直接下载jar引入项目代码中。AsposeJavaAPIAsposeJavaAPIhttps://repository.aspose.com/repo/1.po
- 探索iOS开发新境界:VIPER架构实战应用
萧书泓
探索iOS开发新境界:VIPER架构实战应用iOS-Viper-ArchitectureThisrepositorycontainsadetailedsampleappthatimplementsVIPERarchitectureiniOSusinglibrariesandframeworkslikeAlamofire,AlamofireImage,PKHUD,CoreDataetc.项目地址:h
- iOS-Viper-Architecture: 深入探索VIPER架构的实践与应用
杜薇剑Dale
iOS-Viper-Architecture:深入探索VIPER架构的实践与应用iOS-Viper-ArchitectureThisrepositorycontainsadetailedsampleappthatimplementsVIPERarchitectureiniOSusinglibrariesandframeworkslikeAlamofire,AlamofireImage,PKHUD,
- Rust unresolved import `crate::xxx` 报错解决
Benaso
rust学习问题解决rust开发语言后端actix
问题阐述该问题出现在我使用actix编写的crud后端api中,我的后端结构如下:D:.|handle_err.rs|lib.rs|main.rs|+---application|mod.rs|user_service.rs|+---domain|dto.rs|mod.rs|user.rs|+---infrastructure|mod.rs|repository.rs|\---interfacem
- SpringBoot整合Mybatis时报error creating bean with name ‘XXX‘错误的原因和解决办法。
Order pipul
springbootjava后端
一、问题分析这样的错误一般是配置的问题,第一依据日志上查找,看Controller和Service(实现类)注解是否都已经加上了,没有就加上再运行,已经加上了,就不它们的问题。还没解决就看看Mapper或者dao的类是否加上了@Mapper或者@Repository注解,有了就看看启动类上是否加上了@MapperScan("个人的mapper类路径")注解,如@MapperScan("com.ex
- jQuery 键盘事件keydown ,keypress ,keyup介绍
107x
jsjquerykeydownkeypresskeyup
本文章总结了下些关于jQuery 键盘事件keydown ,keypress ,keyup介绍,有需要了解的朋友可参考。
一、首先需要知道的是: 1、keydown() keydown事件会在键盘按下时触发. 2、keyup() 代码如下 复制代码
$('input').keyup(funciton(){
- AngularJS中的Promise
bijian1013
JavaScriptAngularJSPromise
一.Promise
Promise是一个接口,它用来处理的对象具有这样的特点:在未来某一时刻(主要是异步调用)会从服务端返回或者被填充属性。其核心是,promise是一个带有then()函数的对象。
为了展示它的优点,下面来看一个例子,其中需要获取用户当前的配置文件:
var cu
- c++ 用数组实现栈类
CrazyMizzz
数据结构C++
#include<iostream>
#include<cassert>
using namespace std;
template<class T, int SIZE = 50>
class Stack{
private:
T list[SIZE];//数组存放栈的元素
int top;//栈顶位置
public:
Stack(
- java和c语言的雷同
麦田的设计者
java递归scaner
软件启动时的初始化代码,加载用户信息2015年5月27号
从头学java二
1、语言的三种基本结构:顺序、选择、循环。废话不多说,需要指出一下几点:
a、return语句的功能除了作为函数返回值以外,还起到结束本函数的功能,return后的语句
不会再继续执行。
b、for循环相比于whi
- LINUX环境并发服务器的三种实现模型
被触发
linux
服务器设计技术有很多,按使用的协议来分有TCP服务器和UDP服务器。按处理方式来分有循环服务器和并发服务器。
1 循环服务器与并发服务器模型
在网络程序里面,一般来说都是许多客户对应一个服务器,为了处理客户的请求,对服务端的程序就提出了特殊的要求。
目前最常用的服务器模型有:
·循环服务器:服务器在同一时刻只能响应一个客户端的请求
·并发服务器:服
- Oracle数据库查询指令
肆无忌惮_
oracle数据库
20140920
单表查询
-- 查询************************************************************************************************************
-- 使用scott用户登录
-- 查看emp表
desc emp
- ext右下角浮动窗口
知了ing
JavaScriptext
第一种
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/
- 浅谈REDIS数据库的键值设计
矮蛋蛋
redis
http://www.cnblogs.com/aidandan/
原文地址:http://www.hoterran.info/redis_kv_design
丰富的数据结构使得redis的设计非常的有趣。不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与。redis的DBA需要熟悉数据结构,并能了解使用场景。
- maven编译可执行jar包
alleni123
maven
http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven
<build>
<plugins>
<plugin>
<artifactId>maven-asse
- 人力资源在现代企业中的作用
百合不是茶
HR 企业管理
//人力资源在在企业中的作用人力资源为什么会存在,人力资源究竟是干什么的 人力资源管理是对管理模式一次大的创新,人力资源兴起的原因有以下点: 工业时代的国际化竞争,现代市场的风险管控等等。所以人力资源 在现代经济竞争中的优势明显的存在,人力资源在集团类公司中存在着 明显的优势(鸿海集团),有一次笔者亲自去体验过红海集团的招聘,只 知道人力资源是管理企业招聘的 当时我被招聘上了,当时给我们培训 的人
- Linux自启动设置详解
bijian1013
linux
linux有自己一套完整的启动体系,抓住了linux启动的脉络,linux的启动过程将不再神秘。
阅读之前建议先看一下附图。
本文中假设inittab中设置的init tree为:
/etc/rc.d/rc0.d
/etc/rc.d/rc1.d
/etc/rc.d/rc2.d
/etc/rc.d/rc3.d
/etc/rc.d/rc4.d
/etc/rc.d/rc5.d
/etc
- Spring Aop Schema实现
bijian1013
javaspringAOP
本例使用的是Spring2.5
1.Aop配置文件spring-aop.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmln
- 【Gson七】Gson预定义类型适配器
bit1129
gson
Gson提供了丰富的预定义类型适配器,在对象和JSON串之间进行序列化和反序列化时,指定对象和字符串之间的转换方式,
DateTypeAdapter
public final class DateTypeAdapter extends TypeAdapter<Date> {
public static final TypeAdapterFacto
- 【Spark八十八】Spark Streaming累加器操作(updateStateByKey)
bit1129
update
在实时计算的实际应用中,有时除了需要关心一个时间间隔内的数据,有时还可能会对整个实时计算的所有时间间隔内产生的相关数据进行统计。
比如: 对Nginx的access.log实时监控请求404时,有时除了需要统计某个时间间隔内出现的次数,有时还需要统计一整天出现了多少次404,也就是说404监控横跨多个时间间隔。
Spark Streaming的解决方案是累加器,工作原理是,定义
- linux系统下通过shell脚本快速找到哪个进程在写文件
ronin47
一个文件正在被进程写 我想查看这个进程 文件一直在增大 找不到谁在写 使用lsof也没找到
这个问题挺有普遍性的,解决方法应该很多,这里我给大家提个比较直观的方法。
linux下每个文件都会在某个块设备上存放,当然也都有相应的inode, 那么透过vfs.write我们就可以知道谁在不停的写入特定的设备上的inode。
幸运的是systemtap的安装包里带了inodewatch.stp,位
- java-两种方法求第一个最长的可重复子串
bylijinnan
java算法
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class MaxPrefix {
public static void main(String[] args) {
String str="abbdabcdabcx";
- Netty源码学习-ServerBootstrap启动及事件处理过程
bylijinnan
javanetty
Netty是采用了Reactor模式的多线程版本,建议先看下面这篇文章了解一下Reactor模式:
http://bylijinnan.iteye.com/blog/1992325
Netty的启动及事件处理的流程,基本上是按照上面这篇文章来走的
文章里面提到的操作,每一步都能在Netty里面找到对应的代码
其中Reactor里面的Acceptor就对应Netty的ServerBo
- servelt filter listener 的生命周期
cngolon
filterlistenerservelt生命周期
1. servlet 当第一次请求一个servlet资源时,servlet容器创建这个servlet实例,并调用他的 init(ServletConfig config)做一些初始化的工作,然后调用它的service方法处理请求。当第二次请求这个servlet资源时,servlet容器就不在创建实例,而是直接调用它的service方法处理请求,也就是说
- jmpopups获取input元素值
ctrain
JavaScript
jmpopups 获取弹出层form表单
首先,我有一个div,里面包含了一个表单,默认是隐藏的,使用jmpopups时,会弹出这个隐藏的div,其实jmpopups是将我们的代码生成一份拷贝。
当我直接获取这个form表单中的文本框时,使用方法:$('#form input[name=test1]').val();这样是获取不到的。
我们必须到jmpopups生成的代码中去查找这个值,$(
- vi查找替换命令详解
daizj
linux正则表达式替换查找vim
一、查找
查找命令
/pattern<Enter> :向下查找pattern匹配字符串
?pattern<Enter>:向上查找pattern匹配字符串
使用了查找命令之后,使用如下两个键快速查找:
n:按照同一方向继续查找
N:按照反方向查找
字符串匹配
pattern是需要匹配的字符串,例如:
1: /abc<En
- 对网站中的js,css文件进行打包
dcj3sjt126com
PHP打包
一,为什么要用smarty进行打包
apache中也有给js,css这样的静态文件进行打包压缩的模块,但是本文所说的不是以这种方式进行的打包,而是和smarty结合的方式来把网站中的js,css文件进行打包。
为什么要进行打包呢,主要目的是为了合理的管理自己的代码 。现在有好多网站,你查看一下网站的源码的话,你会发现网站的头部有大量的JS文件和CSS文件,网站的尾部也有可能有大量的J
- php Yii: 出现undefined offset 或者 undefined index解决方案
dcj3sjt126com
undefined
在开发Yii 时,在程序中定义了如下方式:
if($this->menuoption[2] === 'test'),那么在运行程序时会报:undefined offset:2,这样的错误主要是由于php.ini 里的错误等级太高了,在windows下错误等级
- linux 文件格式(1) sed工具
eksliang
linuxlinux sed工具sed工具linux sed详解
转载请出自出处:
http://eksliang.iteye.com/blog/2106082
简介
sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾
- Android应用程序获取系统权限
gqdy365
android
引用
如何使Android应用程序获取系统权限
第一个方法简单点,不过需要在Android系统源码的环境下用make来编译:
1. 在应用程序的AndroidManifest.xml中的manifest节点
- HoverTree开发日志之验证码
hvt
.netC#asp.nethovertreewebform
HoverTree是一个ASP.NET的开源CMS,目前包含文章系统,图库和留言板功能。代码完全开放,文章内容页生成了静态的HTM页面,留言板提供留言审核功能,文章可以发布HTML源代码,图片上传同时生成高品质缩略图。推出之后得到许多网友的支持,再此表示感谢!留言板不断收到许多有益留言,但同时也有不少广告,因此决定在提交留言页面增加验证码功能。ASP.NET验证码在网上找,如果不是很多,就是特别多
- JSON API:用 JSON 构建 API 的标准指南中文版
justjavac
json
译文地址:https://github.com/justjavac/json-api-zh_CN
如果你和你的团队曾经争论过使用什么方式构建合理 JSON 响应格式, 那么 JSON API 就是你的 anti-bikeshedding 武器。
通过遵循共同的约定,可以提高开发效率,利用更普遍的工具,可以是你更加专注于开发重点:你的程序。
基于 JSON API 的客户端还能够充分利用缓存,
- 数据结构随记_2
lx.asymmetric
数据结构笔记
第三章 栈与队列
一.简答题
1. 在一个循环队列中,队首指针指向队首元素的 前一个 位置。
2.在具有n个单元的循环队列中,队满时共有 n-1 个元素。
3. 向栈中压入元素的操作是先 移动栈顶指针&n
- Linux下的监控工具dstat
网络接口
linux
1) 工具说明dstat是一个用来替换 vmstat,iostat netstat,nfsstat和ifstat这些命令的工具, 是一个全能系统信息统计工具. 与sysstat相比, dstat拥有一个彩色的界面, 在手动观察性能状况时, 数据比较显眼容易观察; 而且dstat支持即时刷新, 譬如输入dstat 3, 即每三秒收集一次, 但最新的数据都会每秒刷新显示. 和sysstat相同的是,
- C 语言初级入门--二维数组和指针
1140566087
二维数组c/c++指针
/*
二维数组的定义和二维数组元素的引用
二维数组的定义:
当数组中的每个元素带有两个下标时,称这样的数组为二维数组;
(逻辑上把数组看成一个具有行和列的表格或一个矩阵);
语法:
类型名 数组名[常量表达式1][常量表达式2]
二维数组的引用:
引用二维数组元素时必须带有两个下标,引用形式如下:
例如:
int a[3][4]; 引用:
- 10点睛Spring4.1-Application Event
wiselyman
application
10.1 Application Event
Spring使用Application Event给bean之间的消息通讯提供了手段
应按照如下部分实现bean之间的消息通讯
继承ApplicationEvent类实现自己的事件
实现继承ApplicationListener接口实现监听事件
使用ApplicationContext发布消息