- 【python自动化运维】python第三方运维模块应用
leo__programmer
python自动化运维运维python自动化
一、pymysql模块——数据库编程1、介绍第三方模块作用:连接MySQL数据库1.1、操作流程创建数据库连接基于连接创建游标cursor数据库读写操作关闭游标关闭数据库连接2、pymysql模块的使用2.1、准备工作准备MySQL数据库安装pymysql模块pipinstallpymysql安装配置MySQL数据库[root@localhost~]#yuminstall-ymariadb-ser
- httpslocalhostindex 配置的nginx,一刷新就报404了
m0_74824112
nginx运维
当你的Nginx配置导致页面刷新时报404错误时,通常是由于以下几个原因造成的:静态文件路径配置错误:Nginx没有正确地指向静态文件的目录。前端路由问题:如果是SPA(单页应用),刷新页面时Nginx没有正确地将请求重定向到入口文件(如index.html)。反向代理配置错误:如果Nginx作为反向代理,后端服务可能没有正确处理请求。检查和解决步骤1.检查静态文件路径配置确保Nginx配置文件中
- /usr/bin/env: “python”: 没有那个文件或目录
@倾尽天下
python开发语言机器人自动驾驶人工智能
在尝试IMU和激光雷达融合时,运行launch文件时一直报错,具体显示为:process[master]:startedwithpid[5473]ROS_MASTER_URI=http://localhost:11311setting/run_idtob573386e-57d8-11ef-9dc7-6b58bd0346b8process[rosout-1]:startedwithpid[5483]
- stm32+w5500实现web服务_【NodeJS】简单静态WEB服务器实现
weixin_39711441
说明利用HTTP模块URl模块Path模块Fs模块创建在项目文件夹下,创建文件夹static,下面创建index.html//引入http模块var http=require('http');//fs模块var fs=require('fs');http.createServer(function(req,res){ //http://localhost:8001/news.html/new
- http协议之方法与状态码
线程A
httpshttpmysql
http协议分为两个部分,第一个部分是请求,第二个部分是响应请求:请求行(请求方法,路径,协议名称)头信息(key:value)空行然后主体信息(发送内容)POST10606/02.phpHTTP/1.1HOST:localhostcontent-type:application/x-www-from-urlencodedcontect-length:24username=zhangsan&age
- MySQL:报错1130-host ... is not allowed to connect to this MySql server
m0_74824823
mysqladbandroid
报错:1130-host…isnotallowedtoconnecttothisMySqlserver1、改表法可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改“mysql”数据库里的“user”表里的“host”项,从"localhost"改称"%"mysql-uroot-pvmwaremysql>usemysql;my
- linux中网卡配置,两张网卡,分别用于内网和外网的通信
橘橘子~
Linuxlinux
环境:centos7、VMware一、一张网卡实现内网通信(不能访问外网):1.首先查看已有的网卡:[root@localhost~]#ipaddr我的默认网卡是ens332.VMware右下角打开设置第一张网卡ens33:3.选择VMnet14.打开真机的网络连接查看网段,我的为112网段:5.配置网卡文件:<
- PyMySQL 详解
一只猪皮怪5
SQL数据库mysqlpython
PyMySQL是一个纯Python实现的MySQL客户端操作库,支持事务、存储过程、批量执行等。PyMySQL遵循Python数据库APIv2.0规范,并包含了pure-PythonMySQL客户端库。安装pipinstallPyMySQL创建数据库连接importpymysqlconnection=pymysql.connect(host='localhost',port=3306,user='
- jmeter录制 过滤_Jmeter录制pc脚本
weixin_39757040
jmeter录制过滤
1.打开jmeter后可以看到左边窗口有个“测试计划”和“工作台”,右键“测试计划”,添加Threads(Users)→线程组,再右键线程组→添加配置元件→Http请求默认值Http请求默认值窗口下---在web服务器处的“服务器名称或IP”填上网址或IP(本地就填localhost的IP,端口填你部署的服务器端口,路径就填写域名后面的路径。2.可以有可以无。[作用:清楚所有录制的记录信息]3.右
- python与mysql交互_Python和Mysql交互
weixin_39703561
python与mysql交互
安装引入模块~安装mysql模块sudoapt-getinstallpython-mysqldb~在文件中引入模块importMySQLdbConnection对象用于建立与数据库的连接,创建对象:调用connect()方法conn=MySQLdb.connect(参数列表)其中参数列表有:host:连接的mysql主机,如果本机是'localhost';port:连接的mysql主机的端口,默认
- java获取IP为0:0:0:0:0:0:0:1的情况
某科学的南条
java2
0:0:0:0:0:0:0:1是ipv6的表现形式,对应ipv4来说相当于127.0.0.1,也就是本机访问时是通过localhost来访问,用java获取ip地址可能会出现该问题,这时获取的ip将是0:0:0:0:0:0:0:1要是机器在局域网中,访问时使用自己的ip访问,如我的ip是:192.168.2.177访问url:http://192.168.2.177:8080这时候请求会经过路由器
- 麒麟操作系统基础知识保姆级教程(五)系统优化
小屁不止是运维
基础知识架构linux运维服务器
如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情1、查看系统版本两种方法1、使用命令查看[root@localhost~]#hostnamectl Statichostname:localhost.localdomain Iconname:computer-vm Chassis:vm MachineID:372f0bb3bfcd4bd09688fd725b9a085
- jdbc连接出现ServerTimezone问题
一个小坑货
常见错误积累mysqljava
代码中添加时区需要在jdbc的url连接中添加serverTimezone=Asia/Shanghai。例如:jdbc:mysql://localhost:3306/db1?serverTimezone=Asia/Shanghaijdbc:mysql://localhost:3306/db1?serverTimezone=GMTIdea链接mysql错误Idea链接mysql错误—Goto‘Adv
- 【appium】成功解决无法连接到服务器....
keira674
UI自动化服务器运维
现象:remotehost填写了0.0.0.0点击开始会话报错如下无法连接到服务器;您确定它正在运行吗?如果您正在使用浏览器版本,同时也确保您的Appium服务器使用--allow-cors启动。localhost解决:remotehost填写了localhost点击开始会话成功连接
- 如何修改 Angular 运行的主机和端口 ?
angular
在Angular中,host指的是应用程序可访问的域名或IP地址,而port指的是应用程序通过它与网络通信的特定网关。默认情况下,Angular应用运行在localhost上,端口号是4200。在某些情况下,更这些默认设置是必要的,例如在不同的环境中部署应用程序或避免端口冲突的情况下。使用AngularCLIAngularCLI提供了一种简单的方式来修改这些设置。在不同的port上启动Angula
- Java连接TDengine和MySQL双数据源
NUZGNAW
javatdenginemysql
git文件地址:项目首页-SpringBoot连接TDengine和MySQL双数据源:SpringBoot连接TDengine和MySQL双数据源-GitCode1、yml配置spring:datasource:druid:mysql:driver-class-name:com.mysql.cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/testuse
- SpringBoot 使用ElasticsearchRestTemplate
hbzslb
springbootjavamybatis
1.pom.xml添加org.springframework.bootspring-boot-starter-data-elasticsearch2.6.22.配置文件配置地址spring:data:elasticsearch:cluster-name:elasticsearchcluster-nodes:localhost:92003.开始使用3.0.创建实体类@Data@AllArgsCons
- [问题处理][Mysql]ERROR 1045(28000):Access denied for user ‘???‘@‘localhost‘ (using password Yes)
wingaso
数据库经验总结mysql数据库
前言新建用户后,尝试登录,显示密码正确,但是无法成功登录。ERROR1045(28000):Accessdeniedforuser‘???‘@‘localhost‘(usingpasswordYes)一、检查用户是否存在SELECThost,user,authentication_stringFROMmysql.userWHEREuser='';如果不存在,那就重新创建,使用root用户执行以下语
- Jeecgboot抵御XSS攻击
码商行者
xss安全springboot
1.问题描述jeecgboot后台启动后,在浏览器输入地址http://localhost:8080/jeecg-boot/jmreport/view/')%22οnmοuseοver=alert('hacking')%20%20(弹出对话框2.试验环境jeecgboot3.03.增加配置类在jeecg-boot-module-system的config包下,新建xss包,并新增几个类类的具体代码
- ubuntu 系统 ,docker建的服务 ,其他局网机器可以通过IP:端口的方式访问。不是docker的不行。
PyAIGCMaster
我买了个服务器ubuntudockertcp/ip
根据您的描述,docker建的服务可以通过IP:端口的方式被局网其他机器访问,而非docker的服务不行,以下是可能的原因及解决方法:网络配置方面•检查非docker服务的网络监听配置:确保非docker服务是监听在0.0.0.0上,而不是仅监听在127.0.0.1(localhost)上。如果服务只监听在127.0.0.1上,那么只有本机能够访问,局网其他机器无法访问。您可以通过查看服务的配置文
- oracleADG增加备库,由一主一从变为一主多从
小渣渣呦
oracleRACADG数据库linuxsql
oracleADG增加备库新增备库主机:192.168.66.44主机名:dgdsid:orcl网络别名:orcl_sd下文中称之为“备2”1,更改现在的主备文件hosts文件,tnsnames.ora文件,initorcl.ora文件1.1,更改hosts文件把新增的主机加上主:[oracle@dbdbs]$cat/etc/hosts127.0.0.1localhostlocalhost.loc
- Xserver v1.4.4 发布—— 创建站点更加方便快捷
距离上次更新(2024-11-10)4天之后,今天给大家带来1.4.4的更新。支持localhost域名。之前的版本只支持test.com这种类型的域名,现在我们添加了localhost域名的支持。支持域名后自定义端口号。之前的版本只支持test.com这种类型的域名,现在我们添加了localhost:8080、test.com:81这种域名的支持。进一步丰富了创建、编辑站点的表单检查规则,创建表
- Sonatype Nexus OSS 构建私有docker 仓库
UTF杠8
docker容器运维开源
1.DockerEngine配置{"builder":{"gc":{"defaultKeepStorage":"20GB","enabled":true}},"dns":["8.8.8.8","114.114.114.114"],"experimental":false,"features":{"buildkit":true},"insecure-registries":["localhost:3
- mysql禁用远程登录
igotyback
mysql
去mysql库中的user表里,将host都改成localhost之后刷新权限FLUSHPRIVILEGES;
- Tomcat 中 catalina.out、catalina.log、localhost.log 和 access_log 的区别
金色888
打开Tomcat安装目录中的log文件夹,我们可以看到很多日志文件,这篇文章就来介绍下这些日记文件的具体区别。catalina.out日志#catalina.out日志文件是Tomcat的标准输出(stdout)和标准出错(stderr)输出的“目的地”。我们在应用里使用System.out打印的内容都会输出到这个日志文件中。另外,如果我们在应用里使用其他的日志框架,配置了向Console输出日志
- MySQL用户权限管理
hzw0510
MySQLmysqloracle数据库
创建/授权用户创建用户格式创建用户命令一般格式:createuser[用户名]@[访问地址]identifiedby[密码]举例1:创建zhangsan用户,只是创建用户并没有权限,'localhost'表示只能在本地登录,无法通过远程连接;密码是passwordCREATEUSER'zhangsan'@'localhost'
- 2020-11-12 写单片机内存的脚本 nc openocd 事务自动测试
linuxScripter
这是写单片机内存的脚本:z@z-ThinkPad-T400:~/zworkT400/EDA_heiche/zREPOgit/simple-gcc-stm32-project$catz.wholeRun.oneCase.cmdcattmp6.toWrite|awk'{system("echomwb"$1""$2"|nclocalhost4444");}'catUSER/DEBUG/debug.h|g
- qiankun 结合 vue3, 小白快速上手体验
陈y_d
vue.js前端javascript
一、主应用改造首先需要维护一份微应用列表,里面包含了微应用的名称、入口和生效规则,若需要给子应用传递内容,可以在props传入对应的内容//app.jsconstapps=[{name:'micro-vue-app3',entry:'//localhost:3013',container:'#micro-vue-app3',activeRule:'/micro-vue3-app3',props:{
- Elasticsearch7.7.0 配置用户名和密码
i0208
Elasticsearch
配置用户和密码需要在配置文件中开启x-pack验证,修改config目录下面的elasticsearch.yml文件,在里面添加如下内容,并重启ES[root@localhostesuser]#vim/opt/es/elasticsearch-7.7.0/config/elasticsearch.ymlxpack.security.enabled:truexpack.license.self_ge
- Linux实操篇_实用指令_压缩和解压类指令
Shaw_Young
压缩和解压缩类gzip/gunzip指令gzip用于压缩文件,gunzip用于解压的基本语法语法功能描述gzip文件压缩文件,只能将文件压缩成为*.gz文件gunzip文件.gz解压缩文件命令应用实例案例1:gzip压缩,将/home下的hello.txt文件进行压缩[root@localhosthome]#gziphello.txt案例2:gunzip压缩,将/home下的hello.txt.g
- 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发布消息