首先查看androidmanifest-free.xml。因为在前面自己摸索android开发的过程中都没有看见过mianfest-free的。其中第一个功能是将应用图标替换成自己的icon_free,估计这就是加后缀_free的原因吧。android:process的功能不明白,感觉像是创建了一个进程net.osmand。然后查看an'do'ri'd'manifest.xml,内容比较多,
Edge兼容性问题:Windows Edge兼容性问题修复方法
Block My Life.
bugedgewindows
Edge兼容性问题解决方案:目录1.更改Edge的兼容性视图设置2.使用IE模式浏览3.更新Edge浏览器4.禁用硬件加速5.修改注册表WindowsEdge兼容性问题修复的方法有以下几种:1.更改Edge的兼容性视图设置:如果问题是由于网站不适应新版Edge的HTML/CSS/JavaScript标准导致的,可以通过以下步骤调整兼容性视图设置:打开MicrosoftEdge浏览器,访问出现问题的
探索iCloud-Bypass:解锁新可能的实用工具
杭律沛Meris
探索iCloud-Bypass:解锁新可能的实用工具项目介绍iCloud-Bypass是一个专为解锁iTunes界面而设计的开源脚本。该项目由一位热衷于技术的开发者创建,旨在帮助用户解决与iCloud账户相关的锁定问题,让用户能够重新获得对设备的控制权。虽然目前仍在发展中,但这个创新的解决方案已引起了不少关注,并期待社区的建议和贡献。项目技术分析该脚本的核心是通过一种安全且非侵入性的方法来规避iC
centos安装mysql 5.7版本
天狼1222
虚拟机centosmysqllinux
因为要继续第二阶段的学习,windows里面的mysql版本,很多设置没有。因此弄了一个虚拟机,安装了centos,在里面安装mysql。看了《centos安装mysql5.7版本》里面有设置my.cnf文件,这个在虚拟机里面编辑,手动敲就比较麻烦,因此使用xshell进行连接,可以直接复制就比较方便。处理1,安装xshell官网就可以下载使用免费版本的2,设置虚拟机的ip《VMware设置ip》
PageInfo
河hehe
MyBatismybatis
PageInfo是MyBatis分页插件PageHelper中的一个核心类,它主要用于封装分页查询的结果,提供了一系列方法以便开发者获取分页相关的详细信息。以下是关于PageInfo的详细介绍:一、PageInfo的作用PageInfo类封装了分页查询后的结果,包括当前页的数据列表、总记录数、总页数、当前页码、每页记录数等信息。通过调用PageInfo类提供的方法,开发者可以方便地获取这些分页信息
Mybatis-Plus 自动填充功能
Tdm_888
Mybatismybatis数据库mysqlsqloraclejava
Mybatis-Plus提供了强大的自动填充功能,可以自动填充实体类中的某些字段,简化开发流程,提高代码效率。1.核心概念MetaObjectHandler:Mybatis-Plus自动填充的核心接口,需要实现该接口并覆盖两个方法:insertFill(MetaObjectmetaObject):在插入操作时自动填充字段。updateFill(MetaObjectmetaObject):在更新操作
MyBatis注解开发详解
hoypte
mybatis
MyBatis注解开发详解一、前言MyBatis是一个优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis免除了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原始类型、接口和JavaPOJO(PlainOldJavaObjects,普通的Java对象)为数据库中的记录。在MyBatis中,注解提供了一种更加简洁和直观的
MyBatis 注解
qq_36288754
后端学习springbootmybatisjava
事务注解@Transactional提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档目录事务注解@Transactional前言一、什么是事务?事务四大特性二、事务注解@Transactional的作用及用法1、作用2、用法三、为什么加在service层总结前言提示:这里可以添加本文要记录的大概内容:MyBatis中有很多注解,本文会对事务注解@Transactional进行介绍提
Mybatis注解写SQL语句
江西昊仔
达内学习mybatis
1.根据ID查询数据Mapper接口中//注意事项:映射文件和注解二选一@Select("select*fromdemo_userwhereid=#{id}")UserfindUserById(intid);Test中@AutowiredprivateUserMapperuserMapper;//根据ID查询数据@TestpublicvoidfindUserById(){Useruser=user
arcgis for javascript 帮助
萝卜耳朵
ArcGISServerArcgisJavascript
JSAPI3.4的要求à(1)IE9或以上版本否则dijit1.8.3不匹配1.如何发布ArcgisJavascriptAPI应用0.准备工作:(1).有web应用:(2).有jsapi开发包1.将jsapi目录拷贝到自己的Web应用目录下2.在页面中添加引用(2个css,1个js)3.在页面中添加加载地图的脚本dojo.ready(function(){mapObj=newesri.Map("m
一款好用的内网穿透工具--神卓互联
坚持就是胜利1986
内网穿透服务器运维
神卓互联是一款优秀的内网穿透工具,国内量大商业化做的最好的内网穿透一个是花生壳一个是神卓互联,都是自主研发,底层采用C语言,支持高并发高性能。由于Windows版本有GUI客户端,用户可以直接下载安装,操作便捷,这里记录一下Linux系统下安装神卓互联客户端的步骤:CentOS使用方法第一步,安装基础环境,很简洁,一行命令yuminstallgccgcc-c++wget-y第二步,创建一个安装目录
静雅书院 | 本周推荐书籍——《霍乱时期的爱情》
静雅课堂
本周小书给大家推荐的书籍是——《霍乱时期的爱情》。阿里萨是电话接线员,机缘使他得以与有钱人的女儿达萨邂逅相遇,并开始了初恋。但达萨的父亲不同意女儿与阿里萨接触,便带女儿长时间外出旅行。旅行结束后,由于达萨未成熟,把握不住自己的感情,对阿里萨兴趣锐减,然后负气嫁给富有而且声名显赫的乌尔维纳医生。达萨结婚后,阿里萨虽企图用其他女人来填补心中的空白,但对那一段真诚的爱情始终难以忘怀,阿里萨坚信终将得到达
《逸剑风云决》msvcr100.dll缺失错误的快速修复方法——步骤清晰的故障排除流程
Xixix777
经验分享玩游戏电脑
在尝试运行游戏《逸剑风云决》时,不少玩家可能会遇到“找不到msvcr100.dll”或者“msvcr100.dll缺失”的错误提示。这个问题通常是由于游戏所需的MicrosoftVisualC++运行时库没有正确安装或损坏导致的。以下是一些详细的步骤来帮助你解决这个问题:1.重新安装VisualC++Redistributablemsvcr100.dll是MicrosoftVisualC++201
NSIS一键安装网站环境及部署网站
成长路上的Kan
NSIS
最近研究通过NISI脚本安装一键部署网站,在这做一个学习札记~;项目:智慧校园云平台;时间:2014年7月16日;作者:KanLau;该脚本使用HMVNISEdit脚本编辑器向导产生;安装程序初始定义常量!definePRODUCT_NAME"金太阳智慧校园云平台教育软件"!definePRODUCT_EN_NAME"金太阳智慧校园云平台教育软件"!definePRODUCT_PROC_NAME"
[论文笔记] eval-big-refactor lm_eval 每两个任务使用一个gpu,并保证端口未被使用
心心喵
论文笔记restful后端
1.5B在eval时候两个任务一个gpu是可以的。7B+在evalbelebele时会OOM,所以分配时脚本不同。eval_fast.py:importsubprocessimportargparseimportosimportsocket#参数列表task_name_list=["flores_mt_en_to_id","flores_mt_en_to_vi","flores_mt_en_to_
学习笔记:VB.net动态添加控件数组并传递事件
钛合金直男
VB.netVB.net控件数组
学习笔记:VB.net动态添加控件数组并传递事件控件数组和事件“中间人”动态添加控件控件数组和事件新建一个用户窗体,在定义控件数组时,不能用Withevnets来定义数组即使可以,为每一个数组成员编写事件也是非常麻烦的,考虑通过一个“中间人”来传递事件“中间人”用继承的方法为Button控件增加一些事件、属性和方法PublicClassMyButtonInheritsSystem.Windows.
看不透与看透
布听风
不知道自己又怎么啦,是不是思维被什么扰乱了秩序?刚刚提起笔的手,现又被迫放了下来,脑子里明明有了可写的素材,只一会儿就被什么挡住了,脑子也就空白了。一遍遍地问自己:怎么啦?怎么啦……找不到回答,我知道。也无奈地怪着自己,狠狠地敲打自己的脑袋,里面还是只有空白,思维再也不在清晰,明目。我找不到源头,就开始学会了忘记,忘着忘着,差点儿连自己也忘了。现在与别人说话,真有那种‘有口难言’之苦,而我也着实找
mysql 批处理速度_mysql批处理性能优化
martingalesquare
mysql批处理速度
参考了:http://blog.csdn.net/tolcf/article/details/52102849后来根据自己情况测试一次,结果如下。1、mysqlinsert####第一种测试情况batchSize=5000;connection.setAutoCommit(false);prepStatement.addBatch();##----测试结果如下----2016-09-1014:53
MySQL批处理性能优化
javartisan
mysql性能优化数据库
rewriteBatchedStatements是MySQLJDBC驱动中的一个参数,用于开启批量处理优化功能。在默认情况下,MySQLJDBC驱动会将客户端提交的批处理命令(如多个INSERT、UPDATE或DELETE命令)逐一发送给服务器执行。这样的处理方式相对简单,但效率并不高,因为它没有充分利用MySQL的批量操作能力。通过设置rewriteBatchedStatements=true,
Mybatis-plus实现分页查询
无名指的等待712
mybatis
importcom.baomidou.mybatisplus.annotation.DbType;importcom.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;importcom.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerIntercept
自动屏蔽登录失败3次以上的用户再登录系统
巭犇
shelllinux
前言暴露在公网上Linux经常会有人暴力破解linux上的用户,通过以下脚本实现屏蔽通过密码登录linux失败超过三次的ip地址再次登录系统脚本源码/root/secure.sh#!/bin/bash#定义变量LOG_FILE="/var/log/secure"INTERVAL=600#检测间隔,单位为秒THRESHOLD=3#登录失败次数阈值#定义函数用于屏蔽IP地址block_ip(){ip=
vue.js 获取当前屏幕的宽度_js获取浏览器和屏幕的各种宽度高度
梦终会碎
vue.js获取当前屏幕的宽度
一:网页可见区域宽高,不包括工具栏和滚动条(浏览器窗口可视区域大小)1.对于IE9+、chrome、firefox、Opera、Safari:window.innerHeight浏览器窗口的内部高度;window.innerWidth浏览器窗口的内部宽度;2.对于IE8.7.6.5:document.documentElement.clientHeight:表示HTML文档所在窗口的当前高度;do
数据权限的设计与实现系列3——MybatisPlus数据权限插件实现机制及使用示例
学海无涯,行者无疆
#数据权限数据权限数据权限设计数据权限插件Mybatisplus数据权限实现
背景上篇我们深度剖析了若依开发平台关于数据权限的设计与实现,并指出了其模式的局限性。今天我们来看一下MyBatisPlus提供的数据权限插件的实现机制与使用示例。官方说明:https://baomidou.com/plugins/data-permission/实现机制在SQL执行前拦截SQL语句,并根据用户权限动态添加权限相关的SQL片段。这样,只有用户有权限访问的数据才会被查询出来。拦截S
初识liunx系统
这么牛逼的代码我写的
c语言
进行嵌入式开发,依赖的是linux(Linuxisnotunix)系统,主要以终端指令为主linux也有图形化界面,由于嵌入式编程一般只将程序移植到开发板中,无需图形化界课程前期,需要一直使用linux系统,做到从windows向linux的转换放大终端ctrlshift+缩小终端ctrl-清屏ctrlL历史命令上下箭头用户名:hqwhoami主机名:Ubuntuhostname:$中间位置当前路
ubuntu20.04安装、换源、安装软件包出现问题解决全记录(持续更新,实践可行)
IOT.FIVE.NO.1
软件安装ubuntulinux运维
我的环境:win10virtualbox7.0一、安装问题:1.安装时按钮下一步按钮不在屏幕内:解决办法:点击屏幕窗口同时按win键拖动,这样就可以把下一步按钮拖动出来。或者按tab切换到下一步按钮再enter。2.安装时在安装语言包和安装软件包出现长时间等待。解决办法:点击标题,然后点击右侧skip跳过。或者断网进入安装,选择最小安装。3.安装时全英文界面解决办法:退回最初始界面,左边向下选择到
Dosbox窗口调整大小
IOT.FIVE.NO.1
操作系统汇编
DOSBox是一个DOS模拟程序,由于它采用的是SDL库,所以可以很方便的移植到其他的平台。DOSBox的最新版本已经支持在Windows、Linux、MacOSX、BeOS、palmOS、Android、webOS、os/2等系统中运行。右键dosbox桌面图标,打开文件所在位置。使用记事本打开:DOSBox0.74Options.bat修改如下两项。然后我们就会发现,窗口已经改变成为我们需要的
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发布消息