- Supervisor 入门指南一篇就够 —— 安装、项目配置与常见报错速查
逻极
python开发工具笔记python运维工具开发supervisor
Supervisor入门指南一篇就够——安装、项目配置与常见报错速查一、Supervisor是什么在服务器进程管理中,Supervisor是一款用Python编写的进程守护与管理工具。它的核心功能是将普通的命令行进程转变为后台daemon进程,并且在进程因意外情况退出时,能够自动将其重启,保证进程的持续运行。在实际应用中,它常出现在多层架构里。比如在Nginx→Gunicorn/Django→Su
- 记录centos6挂载Samba服务失败问题
熬夜波比a
linuxlinux运维服务器
1.环境前提在centos6挂载truenas,centos7可以正常挂载,在centos6系统上报错如下2.网上查证centos6不支持Samba2.3协议在truenas页面打开Samba1协议3.继续挂载报错如下4.网上查证需要加个参数sec=ntlmssp5.可以正常挂载6.完整命令mount-v-tcifs//192.168.10.10/nfs/挂载路径-ousername=nfs,se
- flutter app内跳转到其他安卓 app的方法
Wuxiaoming135
flutterandroid前端
flutter内的关键代码导包:url_launcher:^6.3.1跳转逻辑:onPressed:()async{awaitlaunchUrl(Uri.parse('demoname://'));},安卓内的关键代码安卓中仅仅添加如上代码便可以实现让外部app跳转,但是并不会新开一个应用,点击跳转按钮会发现仍旧处在原来的app中,如下:默认情况下,scheme跳转会复用已有的任务栈(Task),
- linux proc/pid/stat解析
虚极静笃13
Linuxlinux
proc/pid/stat用于获取某一个进程的统计信息,实现过程见fs/proc/array.c的do_task_stat()1.stat数据$adbshellcat/proc/8385/stat1557(system_server)S82382300-11077952832//1~92085481152482003271661141296842630//10~1710-1022102284279
- 关于JS中回调函数的个人理解
Jack_陈
近期在看到jQuery中test(index,test)的用法涉及到回调函数,之前未有涉及,于今晚专门看看了看,将个人对于回调函数的理解感悟记录一下,有不正确的地方希望指出。回调函数(callback),英文中的解释其实更容易理解:Acallbackisafunctionthatispassedasanargumenttoanotherfunctionandisexecutedafteritspa
- CAN-位填充
位填充定义(BitStuffing)当CAN节点发送逻辑电平(显性dominant或隐性recessive)为持续相同的5位时,它必须添加一位反向电平。CAN接收节点会自动删除这个新增的额外电平位。位填充作用1---位填充是为了防止突发错误而设定的功能。当某一个节点发生主动错误时,将把总线拉低6个bit宽度的显性电平“0”,及时向总线上其他单元汇报错误。2---位填充是为了缩短从同步周期。重同步机
- 【Oracle】Oracle 11g打补丁时遇到opatch apply命令无法识别
瑞琪姐
大数据模块oracle数据库
⚙️1.使用完整路径执行命令问题原因:若未将$ORACLE_HOME/OPatch加入系统PATH环境变量,直接输入opatchapply会因系统无法定位命令而报错。解决方案:改用绝对路径执行:$ORACLE_HOME/OPatch/opatchapply例如:/u01/app/oracle/product/11.2.0/db_1/OPatch/opatchapply注:此方法在Windows/L
- 2020-02-10
92637e1c8b2f
disciplinemattersmosttowhatwillbeachievedinwardly,changingtheoutwardreality.
- American life
享悦moonlight
Word:Bummer->whatashame=太可惜了[ˈbʌmɚ]adisappointingsituation/糟糕->Itisarealbummerbombthetest->failthetesthangouthanginSubject:physicsphysicaleducationError:warmheart->warmheartedwords
- Gradle:Cannot add task ‘clean‘ as a task with that name already exists.
海阔天空6688
开发工具Androidgradleandroid
Gradle编译项目报错:Cannotaddtask'clean'asataskwiththatnamealreadyexists.提示的是gradle中的clean方法已经存在了,冲突了,把项目中build.gradle的clean方法注释掉或者删掉重新编译就也可以了。buildscript{repositories{}dependencies{classpath'com.android.too
- 【Java-多线程】如何提交一个线程到线程池?
Java自学之旅
大白话说Javajava开发语言
要将线程提交到线程池,主要通过Java的ExecutorService接口实现。以下是具体步骤和原理说明:一、核心步骤创建线程池ExecutorServiceexecutor=Executors.newFixedThreadPool(4);//创建固定4线程的池定义任务//Runnable接口(无返回值)Runnabletask=()->System.out.println("Runnable任务
- vue3 TypeError: Failed to fetch dynamically imported module 报错解决
海天胜景
vue.js前端javascript
TypeError:Failedtofetchdynamicallyimportedmodule:引入组件时,没有添加.vue后缀或.js后缀,引入的组建是否被使用
- # TF Eager Execution 阅读笔记
tsiic
TFEagerExecution阅读笔记@[TensonFlow]看了半天不知道Eager是啥,这哪能看下去。所以Google了一下,在知乎发现如下解释:......就开启了Eager模式,这时,TensorFlow会从原先的声明式(declarative)编程形式变成命令式(imperative)编程形式。当写下语句"c=tf.matmul(a,b)"后(以及其他任何tf开头的函数),就会直接执
- Kotlin泛型之 循环引用泛型(A的泛型是B的子类,B的泛型是A的子类)
IDE(编辑器)报错循环引用泛型是我起的名字,不知道官方的名字是什么。这个问题是我在定义Android的MVP时提出来的。具体是什么样的呢?我们看一下我的基础的MVP定义:interfaceIPresenter{fungetView():V}interfaceIView{fungetPresenter():P}这里我定义了一个View和Presenter的接口,但是实际上这两个东西现在没什么关联。
- 解决SpringBoot 连接数据库失败,报错Error querying database.
在SpringBoot项目中,想连接数据库查询数据时,发现页面报出“WhitelabelErrorPageThelastpacketsentsuccessfullytotheserverwas0millisecondsago.Thedriverhasnotreceivedanypacketsfromtheserver…”的错误,大致意思是:在连接数据库时出现意外,导致无法连接。出现上述情况,极大可
- 微信小程序报错41002
远望樱花兔
微信小程序小程序
1.报错:410022.原因:微信开发者工具的bug,如果有弹窗说更新,就更可能是bug的原因导致的3.解决方案:有论坛说重启微信开发者工具,就行,我当时的解决方案是重启小程序,并且重启一下电脑,完美解决3.经验总结:微信小程序的官网有官方的报错码的解释而且有论坛,上面就能直接看到专门的微信小程序开发的报错讨论TODO:拓展论坛平台+找各种官方的报错码的解释
- gradle在build时输出:Could not connect to Kotlin compile daemon
yzpyzp
kotlinandroidgradle
FailedtocompilewithKotlindaemon:java.lang.RuntimeException:CouldnotconnecttoKotlincompiledaemonatorg.jetbrains.kotlin.compilerRunner.GradleKotlinCompilerWork.compileWithDaemon(GradleKotlinCompilerWork
- 【深度强化学习】MIP-DQN 实现案例(完整Python代码)
目录MIP-DQN算法概述建模基础训练阶段(Training)部署阶段(OnlineExecution)DNN网络转化为MIP表达式性能指标完整Python代码实现主函数:random_generator_battery模型函数:MIP_DQN基础/专用库包安装模型运行(完整Python代码)参数设置函数:Parameters参考本博客根据论文《Optimalenergysystemschedul
- 生产故障排查记录:Redis 中间件疑难错误排查与修复
韩先超
redis中间件php数据库缓存
欢迎关注我的公众号「DevOps和k8s全栈技术」,进公众号【服务】栏,可以看到技术群,点击即可加入学习交流群。↓↓↓一、问题描述某生产环境中,Redis集群出现间歇性超时(timeout)和高延迟,部分应用侧出现READONLYYoucan'twriteagainstaread-onlyreplica错误。二、问题分析1.错误现象1)应用层报错:Timeoutwaitingforconnecti
- python线程嵌套线程_Python中的嵌套并行性
weixin_39923262
python线程嵌套线程
1)WhatamImissinghere;whyshouldn’taPoolbesharedbetweenprocesses?并不是所有的对象/实例都是可挑选的/可序列化的,在这种情况下,池使用的是不可挑剔的thread.lock:>>>importthreading,pickle>>>pickle.dumps(threading.Lock())Traceback(mostrecentcallla
- 解决报错:node:internal/errors:496 ErrorCaptureStackTrace(err);
lvchaoq
debugvue
报错信息我使用npminitvue@latest创建项目时出现如下报错node:internal/errors:496ErrorCaptureStackTrace(err);^TypeError[ERR_IMPORT_ASSERTION_TYPE_MISSING]:Module“file:///D:/develop/nodejs/node_cache/_npx/2f7e7bff16d1c534/n
- Unit 1 My day (4)教学设计
cherry_1296
Unit1Myday第四课时一、教学内容PartBLet’stry&Let’stalk二、教学目标1.能够完成听录音选择图片的活动。2.能够听、说、认读以下词汇:why,shop,work,last,sound,also,busy,need。3.能够正确运用句型:Whatdoyoudoontheweekend?IoftenwatchTVandplayping-pongwithmyfather.三、
- 深入理解Linux内核-进程
苦茶子12138
Linux上岸手册linux服务器运维
1、进程的静态特性进程:程序执行时的一个实例进程描述符(task_struct):进程的基本信息(thread_info)、指向内存区描述符的指针(mm_struct)、进程相关的tty(tty_struct)、当前目录(fs_struct)、指向文件描述符的指针(files_struct)、所接收的信号(signal_struct)进程状态:1、可运行状态(TASK_RUNNING):正在运行或
- Selenium 处理动态网页与等待机制详解
二向箔reverse
okhttp
在使用Selenium进行网页自动化操作时,动态网页往往是开发者遇到的第一个“拦路虎”。想象一下:你明明在代码中写好了元素定位逻辑,运行时却频繁报错“元素不存在”,但手动打开网页时元素明明就在眼前——这很可能是因为网页还没加载完成,Selenium就急着执行下一步操作了。本文将深入解析动态网页的特性,系统讲解Selenium的三种等待机制,并通过实战案例告诉你如何优雅地处理动态内容加载问题。一、动
- 如何解决一个flink on yarn集群上已经跑了一个job,再提交第二个job的时候,task报java heap size oom的问题
fzip
Flinkflinkjava大数据
在FlinkonYARN集群中提交第二个Job时出现Task的JavaHeapSizeOOM(内存溢出),核心原因是集群资源不足(第一个Job已占用大量资源,第二个Job分配的内存不够)或Job资源配置不合理(单个Job申请资源过多,或内存参数设置与实际需求不匹配)。解决需从“资源排查”“Job配置优化”“集群资源扩容”三个维度入手,具体步骤如下:一、先排查核心原因:确认资源占用与配置是否匹配1.
- flink sql读hive catalog数据,将string类型的时间戳数据排序后写入kafka,如何保障写入kafka的数据是有序的
fzip
Flinkflinksqlhive
在FlinkSQL中,要确保从Hive读取的STRING类型时间戳数据排序后有序写入Kafka,需要结合批处理模式、时间类型转换、单分区写入和Kafka生产者配置。以下是完整解决方案:一、核心解决方案1.批处理模式+全局排序将作业设置为批处理模式,并对字符串时间戳进行类型转换后排序:--设置为批处理模式(关键!)SET'execution.runtime-mode'='batch';--从Hive
- Sqli-labs全套(1-65)-通关笔记
TyRant_Xx
WEB安全笔记web安全sql
BasicChallenges01-ErrorBased-SinglequotesErrorBased:可以通过报错知道闭合方式>paylod:?id=1')and;--+源码拼接后:SELECT*FROMusersWHEREid=('$id')LIMIT0,1;SELECT*FROMusersWHEREid=('1')and;--')LIMIT0,1;>err:Youhaveanerroriny
- python ffmpeg pipe,管道的ffmpeg的输入和输出在python
呼呼啦啦就瘸了
pythonffmpegpipe
I'musingffmpegtocreateavideo,fromalistofbase64encodedimagesthatIpipeintoffmpeg.Outputtingtoafile(usingtheattachedcodebelow)worksperfectly,butwhatIwouldliketoachieveistogettheoutputtoaPythonvariableins
- Mybatis嵌套foreach的坑
MiaeLKK
今天用xml写sql出现问题,mapper入参为集合,其中要获取集合中每个元素的某个属性,这个属性也是个集合。本来按照以前foreach写法,给集合项取个变量名,直接用这个变量名.属性名即可,但如果属性为集合好像就会报错。错误代码示例:andttask.fcreatetime>#{task.createtime[0]}andttask.fcreatetime<#{task.create
- DNS 服务器简单介绍
Risehuxyc
#Windows运维服务器前端linux
DNS服务器分类:根域名服务器顶级域名服务器权威域名服务器本地域名服务器国内公共域名腾讯:DNSPod-免费智能DNS解析服务商-电信_网通_教育网,智能DNS-烟台帝思普网络科技有限公司119.29.29.29和182.254.118.118阿里:阿里公共DNS223.5.5.5和223.6.6.6whatisdnsdnsmeaning百度:百度iDNS-帮助中心-公共DNS180.76.76.
- 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发布消息