2018-01-16创建人:Ruo_Xiao开发环境:VS2010一、源代码#include"stdafx.h"#includeusingnamespacestd;int_tmain(intargc,_TCHAR*argv[]){boolisOK1=true;_BoolisOK2=false;BOOLisOK3=TRUE;cout<<"sizeof(bool)="<
DYCom多平台聊天室Sample
内Cool超人
聊天平台silverlightmobilewindows2010
本示例演示了如何通过DYcom开发一个多平台的简单聊天室。本演示包括了一个silverlight客户端,一个Win客户端和一个windowMobile客户端。以下是应用截图:登陆后可从本文下载源代码。运行本示例前请先确定连接ip地址与你本机的地址一致。本示例两含两个项目。一个项目使用vs2010篇写,另一个windowsmobile项目使用的是vs2008篇写,请各位注意。谢谢。欢迎您参与更多关于
codefirst连接mysql_codefirst 连接数据库
每天痛苦与更好的
EFCodeFirst初体验原文:EFCodeFirst初体验CodeFirst顾名思义就是先代码,再由代码生成数据库的开发方式。废话不多说,直接来一发看看:在VS2010里新建一个空白解决方案,再依次添加两个类库项目:Model、DataAccess和一个控制台项目BreakAwayConsole。分别是实体...文章杰克.陈2014-02-25884浏览量EntityFramework5.0系
Learning hard C#学习笔记 孤军深入
GarfieldEr007
C#C#学习笔记
第2章来点C#的感觉在介绍C#语言的基本特性之前,让我们来点C#的感觉,通过亲手创建一个简单的控制台程序,叩开C#的大门!控制台应用程序没有图形化的界面,它类似于Windows操作系统中的命令行窗口。2.1开发环境的搭建用C#语言开发应用程序,首先要搭建好相应的开发环境。学过C语言的人都知道,TurboC是C语言的开发工具,而VisualStudio2010(简称VS2010)或者VisualSt
Windows Update检查更新时提示错误
Jelly-小丑鱼
windowswindows更新
我为什么要进行windows更新呢,是因为我要安装VS2010,没有更新就安装不了VS2010,其实如果不是必须要更新的,建议不用更新。WindowsUpdate检查更新时提示错误:【WindowsUpdate当前无法检查更新,因为未运行服务。你可能需要重新启动计算机。】如图所示怎样解决WindowsUpdate当前无法检查更新的问题方法/步骤1、依次单击【开始】——【所有程序】——【附件】——【
Vscode移植到VS2010遇到的问题C++
饿了就去喝水
c++开发语言visualstudiovscode
如果在vscode能运行,就是C++版本的问题,VS2010仅支持部分C++11及以上的功能,仍然有一小部分不支持,但是他的警告信息和错误信息又很不明显,所以花了很多时间纠错。总结:看这三种for循环for(constProduct&product:products){ if(product.type==TYPE_A){ sumA+=product.price; coun
Gnuplot安装与配置
饿了就去喝水
c++visualstudio编辑器
安装默认选项,下一步配置环境变量找到系统环境变量,找到PATH新建浏览将bin目录加进去如图再按win+R,输入cmd打开终端,输入gnuplot,如果提示以下信息就可以绘图如果要在VisualStudio中结合代码使用,需要把gunplot的安装包的c文件复制到VS的路径或者添加到头文件内(在属性配置),vscode同理。注意:仅C++11及以上版本支持!如果是vs2010建议升级编译器
GraphicsMagick 的 OpenCL 开发记录(二十五)
遍地是牛
GraphicsMagick的OpenCL开发GraphicsMagickImageMagickOpenCLc++windows
文章目录如何修复`R6025purevirtualfunctioncall`问题如何修复R6025purevirtualfunctioncall问题运气好,修复了这个问题。即,在ExitInstance()函数中调用一下MagickLib::DestroyMagick();即可。过程中也经历了尝试vs2010编译,尝试更换电脑环境等,均没有找到原因,同时我也在怀疑会不会是IMDisplay.exe
【C#】简单窗体程序,判断是否闰年,禁止窗体调整大小,关闭窗体前的判断
yongh701
C#C#窗体WinForm事件闰年
利用VS2010的C#.NET能够很简单创建一个窗体。同时可以很轻松地为这个窗体布局,添加事件,下面用一个简单的窗体程序,判断是否闰年,来说明这个问题。同时加一个关闭事件,在用户关闭窗体之前弹出对话框询问用户是否关闭此窗体?如下图:具体做法如下。1、打开VS2010之后,文件->新建->项目->选择其它语言中的->VisualC#->Windows->Windows窗体应用程序在最下方命名此项目的
Windows平台vs2010编译OpenSSL1.1.1
pony12
OpenDDS拓展开发指南OpenSSL1.1.1VC-WIN32libcrypto-1_1libssl-1_1.dllOpenDDS入门
OpenSSL1.1.1下载,https://www.openssl.org/source/old/1.1.1/openssl-1.1.1.tar.gz或https://www.openssl.org/source/openssl-1.1.1m.tar.gz,解压到E:\openssl-1.1.1l或E:\openssl-1.1.1m目录。(一)编译OpenSSL1.1.1x的前提准备条件:1)安
VC++ VS2010 MFC 配合串口控件MSCOMM 复选框CheckBox 下拉ComboBox来选择打开串口端口
jomoly
MFCMSCOMM复选框CheckBox下拉ComboBox打开串口端口
习惯性把例程放在评论一楼。关于串口的定义,声明和初始化,详见前几天贴的《VC++MFCMSCOMMVS2010手把手学会串口收发含例程》http://blog.csdn.net/jomoly/article/details/55046738多说两句,在VS2010中,使用MSComm控件,要注意:1)在资源视图右键->插入ACTIVEX控件:2)类向导-添加类-ActiveX控件中的MFC类;3)
VC++ VS2010 MFC配合串口控件MSCOMM 的实际应用 - 打码机上位机软件 Demo 含例程
jomoly
VC++VS2010串口控件MSCOMM打码机上位机例程
老习惯,例程在一楼.所谓打码机,其实就是一个输入设备,每次输入特定格式的一个字符串,并用显而易见的开头结尾标记来让上位机识别,从而实现输入输出的自动化。从这个角度讲,其实打码机的上位机软件,与其他串口助手一类的工具,只是多了一个对于字符串的分解分析和重新组合的过程。所谓Demo,就是说与实际的生产工具,还是有一定区别的,比如例程内,对于单个字串结束的字符的标记是连续两个‘1’,而生产中常用的是‘\
VC++ VS2010 MFC CString 追加append 写入文件 txt 捕捉键盘按键消息
jomoly
VC++VS2010MFC键盘按键写入文件
老规矩,例程在评论的一楼。如果键盘消息(以及HID键盘设备)的字符源源不断的涌来,那么单纯的把字符发到界面中是不够的,而且有些项目中,并不需要我们看到输入本身,只需要把相关的数据保存起来。这样,如何把输入字符进行一定的格式处理,并进一步保存在文件中就有意义了。每一个按键消息,都对应到虚拟按键表格中的一个键值,那么可以通过判断键值,利用WINDOWS的消息系统的WM_KEYDOWN消息,来实现字符的
VC++ MFC MSCOMM VS2010 手把手学会串口收发 含例程
jomoly
VC++VS2010MSCOMM手把手例程
老习惯,例程链接放在评论一楼。大部分情况下(毕设,实验室常用设备或传感器的上位机编程,工厂打码机/喷码机上位机编程,自己学习做串口助手的demo,等等90%情况),用到的都是占用一个端口的异步通讯。而这类工作用MSCOMM控件可以很方便的实现,并且在VS下面可以自己做一些定制的工作。而不少做这类工程的,都不是计算机科班,所以有一份好的教程和跑得通,并且逻辑清楚的完整源码,可以节约大把的时间。以下基
VC++ VS2010对比VC6 串口控件的方法变更
jomoly
VS2010对比VC6串口控件方法变更
这两天整理以往项目代码,正好朋友有个win平台下串口项目需求,不过他对win下面的开发IDE平台和MFC架构都没有概念,于是就开贴对部分demo做了手把手的备注。朋友使用的时候碰到了一些问题,这里梳理一下。也因为MSDN里面没有对VC++下面的CMSCOMM(或者新版本叫IMSCOMM)做出说明,这样有一份可用的相对正确的参考就很重要。1)部分源码是在VC6下面的,用VS2010可以直接兼容打开低
EtherNet/IP开发:JAVA、C#和C++开发源代码
金南瓜工业互联EAP SECS
tcp/ipc#c++
示例使用VS2010开发EtherNet/IP开发语言使用C++为什么选择C++呢?C++开发出来的程序,提供C标准API后,将可以提供给Dlphi、Labview、VB、QT、C#、C\C++、C#、Java等几乎所有编程语言使用。效率问题①在底层我们将采用socket和多线程方式开发,在数据处理方面使用指针为主。②EtherNet/IP在设计之初就是为高效,低延迟而设定③采用最基础的C++标准
使用c#.net实现打地鼠游戏和翻牌游戏
前端搬砖达人
c#.net知识运用c#.net小游戏实现翻牌游戏打地鼠游戏
***本程序通过vs2010建立窗体应用程序,通过控件建立记忆纸牌及打地鼠游戏窗口需求分析:为了用户给用户提供美观的游戏界面,本项目在游戏的开发实践中注重对界面的美观设计,并配有背景音乐,在打地鼠游戏中将指针变为锤子,满足玩家打地鼠的需求。游戏界面图如下***[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8zuBKBfQ-1698114536747)(https:/
清除 VS 最近使用的项目和解决方案
csdn_now
工程管理
在.txt中,添加脚本,将txt后缀更为.bat。VS2010@echooffcd\@echoon@REGDeleteHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\FileMRUList/va/f@REGDeleteHKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\Proje
清除VS2015工程不需要的文件
csdn_now
工程管理
以下为.bat文件的代码参考清除VS2010工程不需要的文件_u013719984的博客-CSDN博客echo正在清理VS2015工程中不需要的文件echo开始清理请稍等......@echooffrem清理attrib-s-h-r*opendbdel/s/q*.opendbdel/s/q*.dbdel/s/q.\ipch\*.*rd/s/q.\ipch\del/s/q.\Debug\*.*rd/
openmp matlab,matlab – 为什么在mex文件中的OpenMP只产生1个线程?
立夏之光
openmpmatlab
我是OpenMP的新手.我有以下代码使用配置了MSVS2010的Matlabmex进行编译.计算机有8个处理器(我也使用matlabpool检查过).#include"mex.h"#includetypedefunsignedcharuchar;typedefunsignedintuint;//Takesauint8inputarrayanduint32indexarrayandprealloca
初步了解win32界面库DuiLib
bcbobo21cn
VC++win32界面库duilibdirectUI
DuiLib是一个开源win32界面库;下载地址:https://github.com/duilib/duilib可以做类似一些杀毒软件的界面;效果还是比较好;先下载一个demo看一下;当前开发工具只有VS2010Express版本;打开看一下;DuiLib项目是源码;MFCDemo是示例;VS2010Express不支持MFC,所以有问题,不能运行demo;在解决方案中添加一个win32项目,空
视觉OpenCV-WIN7版本安装配置
老王工控笔记
视觉OpenCV-WIN7版本安装配置开源的OpenCV,有好多版本,最新是2020年12月的4.5.1版本,支持的VS版本最低V14以上,VS2015版本安装在WIN7上好像有点麻烦,所以只能下载个2015年4月的2.4.11版本,支持VS2010版本350M,以下是官方下载链接:https://opencv.org/releases/page/5/1.计算机--属性--高级系统设置--环境变量
多文档 添加菜单栏 工具栏 删除ribbon
密树
VS:vs2010工程类型:mfc多文档officeoffice20071、去掉ribbon在CMainFrame::OnCreate中删除//m_wndRibbonBar.Create(this);//Deletebypsq//m_wndRibbonBar.LoadFromResource(IDR_RIBBON);2、添加菜单栏删除ribbon,有时菜单栏就有了,要显示那个菜单栏在BOOL工程名
C/C++指针错误与调试相关学习总结
bcbobo21cn
VC++c语言指针visualstudio2010调试
使用VS2010调试技巧让C指针无处遁形http://blog.csdn.net/21aspnet/article/details/6723758Linux下调试远没有windows下的VS方便,不管是VC++6还是VS2003,2005,2008,2010,2012.VS2012自动格式化代码Ctrl+K+DVS下调试一定要注意尽量不要用F11,要用F10!不然需要引入库文件,提示的警告信息可以
mfc入门基础(四)对话框添加控件、创建对话框类和为对话框控件添加变量
Littlehero_121
MFC初学mfcc++
参考博客:VS2010/MFC编程入门之七(对话框:为对话框添加控件)-软件开发-鸡啄米VS2010/MFC编程入门之八(对话框:创建对话框类和添加控件变量)-软件开发-鸡啄米基于基础(三)中写的应用程序test02来讲,一、对话框添加控件1、找到资源视图,如下:进行双击2、删除系统给你新建好的静态文本框,找到工具箱,找到StaticText来进行拖动到界面上,实现效果如下:3、选中当前拖动过来的
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发布消息