- golang 加密
大鲤余
Golanggolang开发语言后端
代码示例packageutilsimport("crypto/md5""encoding/hex""golang.org/x/crypto/bcrypt")//BcryptHash使用bcrypt对数据进行加密funcBcryptHash(passwordstring)string{bytes,_:=bcrypt.GenerateFromPassword([]byte(password),bcry
- javascript实现SM2加密解密
人生在勤,不索何获
javascript前端jquery
前提JavaWeb环境前端代码window.sm2=function(t){functioni(e){if(r[e])returnr[e].exports;varn=r[e]={i:e,l:!1,exports:{}};returnt[e].call(n.exports,n,n.exports,i),n.l=!0,n.exports}varr={};returni.m=t,i.c=r,i.d=fu
- TLS/SSL工作原理
penrryw
信息安全
HTTPS协议的主要功能基本都依赖于TLS/SSL协议,本节分析TLS/SSL协议工作原理。TLS/SSL的功能实现主要依赖于三类基本算法:散列函数Hash、对称加密和非对称加密,其利用非对称加密实现身份认证和密钥协商,对称加密算法采用协商的密钥对数据加密,基于散列函数验证信息的完整性。散列函数Hash常见的有MD5、SHA1、SHA256,该类函数特点是函数单向不可逆、对输入非常敏感、输出长度固
- nginx配置ssl证书
Apex Predator
nginxnginxssl运维
一、前言相对于http来说,使用ssl证书加密的https更为安全,http传输的数据是明文的,容易被窃听和篡改,而https通过SSL/TLS加密,防止了中间人攻击和数据泄露,保障了通信的机密性和完整性,提供了更高的安全性,但是相对来说http由于不涉及加密解密等过程,通常比HTTPS稍微快一些二、配置需要ssl的公有证书,可以在阿里云上免费申请一个,将证书解压后,放在nginx.conf的同级
- 【插件html2canvas】页面元素生成图片
不吃香菜的蟹老板
前端javascriptvue
插件html2canvas将页面元素转换成图片点击【复制】按钮,将页面某个区域的内容以图片的形式复制到剪切板,粘贴后是一张图片。点击【下载】按钮,将页面某个区域的内容以图片的形式下载到本地。1安装插件npmihtml2canvas2目标页面元素html2canvas复制下载3核心逻辑3.1html2canvas绘制页面元素通过插件【html2canvas】转换成图片base64letcanvas=
- uniapp小程序上传oss
Tanjc518
uni-app小程序
uniapp上传小程序代码importcryptofrom'crypto-js';import{Base64}from'js-base64/base64.js';//计算oss签名。functioncomputeSignature(accessKeySecret,canonicalString){returncrypto.enc.Base64.stringify(crypto.HmacSHA1(c
- html前端的几种加密/解密方式
可爱的秋秋啊
js前端html
HTML前端的加密解密方式有以下几种:一、base64加密Base64编码:Base64是一种将二进制数据转换为可打印字符的编码方式。在前端,可以使用JavaScript的btoa()函数进行Base64编码,使用atob()函数进行解码。varstr="hello";varstr64=window.btoa("hello");console.log("定义的字符串为:"+str);console
- 对base64理解
AndyFrist
编码实现步骤1.找到中文在操作系统中对应的编码(GBK/GB2312/UTF-8/BIG5)2.找到对应的十进制的值,转化成二进制3.对二进制进行重编码4从base64编码表中查找其对应的字符例如:新年快乐(Gb2312)
- freemark中插入图片
wyazyf
代码freemark中插入图片freemark导出wordjava
freemark文件中的图片格式是BASE64,模板中的图片代码块,${(img)!}是图片变量${(img)!}生成${(img)!}图片变量(BASE64格式)publicStringgetEmpAutograph(StringfilePath){Stringimg=null;if(StringUtils.isNotEmpty(filePath)){InputStreamin=null;byt
- 报文加密的对称方式和非对称分享
zw3e
我们和多部门之间联调经常需要涉及报文加解密的场景,梳理出一部分常用的加解密实用文档供参考加密算法(DES,AES,RSA,MD5,SHA1,Base64)比较和项目应用加密技术通常分为两大类:"对称式"和"非对称式"。对称性加密算法:对称式加密就是加密和解密使用同一个密钥。信息接收双方都需事先知道密匙和加解密算法且其密匙是相同的,之后便是对数据进行加解密了。对称加密算法用来对敏感数据等信息进行加密
- Qt 通过pdfium将网络上的pdf显示为图片
阿达和自己
C++Qtqtpdf开发语言
前言遇到个需求,就是在qt客户端显示服务器上的pdf文档,文档以base64格式返回给客户端。以下是实现方法:1、在pro文件增加以下代码:INCLUDEPATH+=$$PWD/PDFiumSDK/include/publicDEPENDPATH+=$$PWD/PDFiumSDK/include/publicLIBS+=-l$$PWD/PDFiumSDK/lib/x86/pdfium2、pdf转图
- vue如何解析后台传回的文件流
我还能再卷一点
vue.js前端javascript
一、配置axios的响应类型请求拦截器中增加代码,判断如何调用的接口是文件下载接口将响应类型设置成blobconfig.responseType='blob'二、将获取回来的文件流转换成base64blobToBase64(blob){returnnewPromise((resolve,reject)=>constfileReader=newFileReader();fileReader.onlo
- 查看android keystore的md5以及其他信息的命令
前方路远
服务器运维
keytool-list-v-keystorexxx.keystorekeytool-exportcert-keystorexxx.keystore|openssldgst-md5
- 在Linux/Ubuntu/Debian中计算MD5,SHA256的方法
理工男老K
计算机相关linuxubuntudebianmd5sha256
MD5(消息摘要算法5)和SHA-256(安全哈希算法256位)等流行的哈希算法广泛用于从任意数据生成固定大小的哈希值或校验和。以下是这些算法及其计算方式的简要概述:MD5(消息摘要算法5):算法:MD5是一种广泛使用的加密哈希函数,可生成128位(16字节)哈希值,通常表示为32个字符的十六进制数。Linux/Unix中的计算:md5sumyour_file此命令计算指定文件的MD5哈希值。SH
- golang用字符串数据生成http的pcap文件
weixin_42094764
golanghttp开发语言
因为我有的只是pyload里面的字符串数据。没有协议头的部分,所以只能自己创建协议头的数据。主要使用的就是go的gopacket和gopcap包。下面直接上代码packagemainimport("bytes""encoding/base64""fmt""log""math/rand""time""github.com/google/gopacket""github.com/google/gopa
- vue 2.0+element ui 使用el-upload图片上传
TJJ.yaml
程序员vuevue.jsui前端vue
el-upload标签上传图片有两种方式:1、上传图片到服务器上,在数据库中存一个url;(以后迁环境的时候,必须将指定的文件夹一起迁移,比较繁琐2、将图片转为base64形势存放到数据库中;(较低一点很方便)两者在前端img标签中使用src,都可将图片展示出**下面介绍的是第二种方法**使用el-upload将图片加载成Base64格式,通过form统一上传给后端1、创建通用componentI
- 用JS进行Base64编码、解码
avoidaily
javascript开发语言ecmascript
vue里面可以引入require('js-base64').Base64js中的话可以使用window.btoa()//编码window.atob()//解码兼容IE10+,浏览器就原生提供了Base64编码、解码方法,不仅可以用于浏览器环境,ServiceWorker环境也可以使用。方法名就是atob和btoa;当下,仍有不少PC项目还需要兼容IE9,所以,我们可以专门针对这些浏览器再引入一段p
- 从0开始python学习-54.python中flask创建MD5和base64加密校验的接口
不会代码的小测试
pythonpython学习flask测试工具开发语言后端
MD5加密接口importhashlibfromflaskimportFlask,request,jsonify#初始化一个flask的对象app=Flask(__name__)#MD5加密校验数据请求#定义用户数据user_data=[{"username":"admin1","password":"E10ADC3949BA59ABBE56E057F20F883E"},#123456{"user
- 【国产化】禁止使用不安全的密码算法:DES、RC2,RSA(1024位及以下),MD5,SHA1
python
一、引言随着互联网的普及和技术的发展,网络安全问题日益严重。密码算法作为网络安全的基石,其安全性直接关系到用户数据的安全。一些不安全的密码算法不断被曝光,给用户带来了极大的安全隐患。二、不安全的密码算法1.DESDES(DataEncryptionStandard)是一种对称加密算法,自1977年发布以来,一直是全球最广泛使用的加密算法之一。然而,随着计算机处理能力的提高,DES的密钥长度(56位
- python用socket传输图片
Aix959
python开发语言websocket
本来想一次连接发送多张图片,但由于处理间隔的逻辑容易导致图片丢失等问题,所以这里采用的是每次连接只发送一张图片发送的形式是base64编码,可以有效的适用于各种项目客户端importtimeimportcv2importosimportbase64fromsocketimport*classClient:def__init__(self,host="127.0.0.1",port=8001):se
- springboot上传base64大图,接收的字段值为null 解决办法
又起风了
spring学习springboot
问题描述通过mui.ajax方法上传base64格式的图片和用户id时,springboot后端接收的数据有时为空,而且两个字段是同时有或者同时没有。查看上传成功的图片,最大的大小是1.13M。故猜测是由于springboot或者tomcat限制了请求时上传图片的大小,限制的值应该是2M。mui.ajax(app.serverUrl+"/user/uploadFaceBase64",{data:{
- springboot接收base64文件并上传
脑壳疼___
springboot后端java
1.前言在常见的开发场景中,前端往往对文件进行base64编码,采用json格式发送给后端,后端收到base64文件的字符串后进行保存实现步骤:后端直接通过Base64工具类对字符串进行解码,解码后获取字节数组。将字节数组保存到文件我想都应该会吧2.实现/***保存base64图片*@parambase64Strbase64文件*@paramimgFilePath上传地址(示例:D:\\1.png
- java 出现 Illegal base64 character 2d
述清-架构师之路
java开发语言
记一下解决思路:base64编码出现的问题。加解密这样写:/***base64解密**@paramvalue解密字符串*@return*/publicstaticStringbase64Decode(Stringvalue){Base64.Decoderdecoder=Base64.getMimeDecoder();returnnewString(decoder.decode(value.getB
- 推荐几个程序员常驻收藏夹即用即走的在线工具
程序员阿瓜
后端软件开发前端个人开发工具在线工具程序员网站
不需要自己搭建或开发,并且打开即用的在线工具推荐,其中一定有一个适合你。二维码可以快捷生成二维码的在线工具。https://cli.im/Json能够帮你应付大部分的Json处理场景,除了Json处理还有其他好用功能。https://www.bejson.com/在线加解密提供各类加解密算法处理。http://www.jsons.cn/base64/Maven搜索由一位b站up主鲁班大叔搭建的Ma
- 保姆级教程:SpringBoot 对接支付宝完成扫码支付,完整流程梳理!
z.jiaminf
springbootmicrosoft后端
文章目录1、支付方式选择2、交互流程3、1.对接准备2.加密解密+签名验签3.沙箱环境4、内网穿透5、二维码6、下单7、异步通知回调8、查询支付结果9、退款10、通用版SDK需求:系统A对接支付宝,实现支持用户扫码支付1、支付方式选择对接的API文档:https://open.alipay.com/api可选的支付方式有:扫码付:出示付款码或者用户扫码付款APP支付:在APP中唤起支付宝手机网站支
- 304_C++_open打开文件,获取文件大小,读取st_size大小数据到一个数组buf,然后对其中数据进行Base64编码【涉及C++中的字符串处理和Base64编码】
扳手的海角
C++物联网珠海c++开发语言
std::stringTransfer;/*开始读取文件内容*/intitmpFd=-1;itmpFd=open(info->arcBuf,O_RDONLY);if(itmpFd<0
- NSSCTF-MISC [SWPU 2019]神奇的二维码
不叫李嘉图
ctfpython前端javascript
得到一个二维码扫一下得到得到一个类似flag的东西提交错误我们拖进kali里面看看strings看一下发现有文件这里我开始使用foremost分离分离没成功我们在使用binwalk分离成功我们看flag.jpg没有隐藏信息了看flag.doc是base64编码但是我们解码之后还有加密我们使用脚本让他循环去跑importbase64defdecode(f):n=0whileTrue:try:f=ba
- 【BUUCTF】[SWPU2019]神奇的二维码
shane_seven
ctfwp
0x00 刚拿到这题的时候,还以为很简单的样子,结果发现才是一坑接一坑,套娃坑套娃。(出题人友好点儿吧,球球了>_<)0x01 惯例下好文件,是个rar,打开发现是个“神奇的二维码”,直接扫描无果,拿到winhex下查看,发现好几个rar文件 分别手动复制粘贴到新文件,保存,共有四个rar,按照在文件里的位置先后顺序排列 1.rar打开是一行base64编码的字符串,解码后为 打开2.rar,里面
- [SWPU 2019]神奇的二维码
王八七七
安全
1.直接扫码得到fakeflag——swpuctf{flag_is_not_here}2.使用kali中的binwalk命令,将图片中的隐藏内容显示出来打开encode.txt文件,得到一串base64的密文、解密后得到将flag.jpg解压出来得到,并放入winhex进行分析挨个查找发现18394压缩包中存在音频文件,使用刚刚解出来的密码显示密码错误查看flag.doc,猜测应该是base64套
- BUUCTF misc 专题(30)webshell后门
tt_npc
python网络安全安全
看题目,又是一道后门查杀的题目,下载了资源以后我们发现是一个rar的文件解压里面的文件后打开D盾进行后门查杀在这里找到了,并根据路径打开所在的文件夹,找到文件根据题目提示,我们在这里找到了md5再根据md5中的pass我们可以找到pass包上flag就是答案了flag{ba8e6c6f35a53933b871480bb9a9545c}
- Enum 枚举
120153216
enum枚举
原文地址:http://www.cnblogs.com/Kavlez/p/4268601.html Enumeration
于Java 1.5增加的enum type...enum type是由一组固定的常量组成的类型,比如四个季节、扑克花色。在出现enum type之前,通常用一组int常量表示枚举类型。比如这样:
public static final int APPLE_FUJI = 0
- Java8简明教程
bijian1013
javajdk1.8
Java 8已于2014年3月18日正式发布了,新版本带来了诸多改进,包括Lambda表达式、Streams、日期时间API等等。本文就带你领略Java 8的全新特性。
一.允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添
- Oracle表维护 快速备份删除数据
cuisuqiang
oracle索引快速备份删除
我知道oracle表分区,不过那是数据库设计阶段的事情,目前是远水解不了近渴。
当前的数据库表,要求保留一个月数据,且表存在大量录入更新,不存在程序删除。
为了解决频繁查询和更新的瓶颈,我在oracle内根据需要创建了索引。但是随着数据量的增加,一个半月数据就要超千万,此时就算有索引,对高并发的查询和更新来说,让然有所拖累。
为了解决这个问题,我一般一个月会进行一次数据库维护,主要工作就是备
- java多态内存分析
麦田的设计者
java内存分析多态原理接口和抽象类
“ 时针如果可以回头,熟悉那张脸,重温嬉戏这乐园,墙壁的松脱涂鸦已经褪色才明白存在的价值归于记忆。街角小店尚存在吗?这大时代会不会牵挂,过去现在花开怎么会等待。
但有种意外不管痛不痛都有伤害,光阴远远离开,那笑声徘徊与脑海。但这一秒可笑不再可爱,当天心
- Xshell实现Windows上传文件到Linux主机
被触发
windows
经常有这样的需求,我们在Windows下载的软件包,如何上传到远程Linux主机上?还有如何从Linux主机下载软件包到Windows下;之前我的做法现在看来好笨好繁琐,不过也达到了目的,笨人有本方法嘛;
我是怎么操作的:
1、打开一台本地Linux虚拟机,使用mount 挂载Windows的共享文件夹到Linux上,然后拷贝数据到Linux虚拟机里面;(经常第一步都不顺利,无法挂载Windo
- 类的加载ClassLoader
肆无忌惮_
ClassLoader
类加载器ClassLoader是用来将java的类加载到虚拟机中,类加载器负责读取class字节文件到内存中,并将它转为Class的对象(类对象),通过此实例的 newInstance()方法就可以创建出该类的一个对象。
其中重要的方法为findClass(String name)。
如何写一个自己的类加载器呢?
首先写一个便于测试的类Student
- html5写的玫瑰花
知了ing
html5
<html>
<head>
<title>I Love You!</title>
<meta charset="utf-8" />
</head>
<body>
<canvas id="c"></canvas>
- google的ConcurrentLinkedHashmap源代码解析
矮蛋蛋
LRU
原文地址:
http://janeky.iteye.com/blog/1534352
简述
ConcurrentLinkedHashMap 是google团队提供的一个容器。它有什么用呢?其实它本身是对
ConcurrentHashMap的封装,可以用来实现一个基于LRU策略的缓存。详细介绍可以参见
http://code.google.com/p/concurrentlinke
- webservice获取访问服务的ip地址
alleni123
webservice
1. 首先注入javax.xml.ws.WebServiceContext,
@Resource
private WebServiceContext context;
2. 在方法中获取交换请求的对象。
javax.xml.ws.handler.MessageContext mc=context.getMessageContext();
com.sun.net.http
- 菜鸟的java基础提升之道——————>是否值得拥有
百合不是茶
1,c++,java是面向对象编程的语言,将万事万物都看成是对象;java做一件事情关注的是人物,java是c++继承过来的,java没有直接更改地址的权限但是可以通过引用来传值操作地址,java也没有c++中繁琐的操作,java以其优越的可移植型,平台的安全型,高效性赢得了广泛的认同,全世界越来越多的人去学习java,我也是其中的一员
java组成:
- 通过修改Linux服务自动启动指定应用程序
bijian1013
linux
Linux中修改系统服务的命令是chkconfig (check config),命令的详细解释如下: chkconfig
功能说明:检查,设置系统的各种服务。
语 法:chkconfig [ -- add][ -- del][ -- list][系统服务] 或 chkconfig [ -- level <</SPAN>
- spring拦截器的一个简单实例
bijian1013
javaspring拦截器Interceptor
Purview接口
package aop;
public interface Purview {
void checkLogin();
}
Purview接口的实现类PurviesImpl.java
package aop;
public class PurviewImpl implements Purview {
public void check
- [Velocity二]自定义Velocity指令
bit1129
velocity
什么是Velocity指令
在Velocity中,#set,#if, #foreach, #elseif, #parse等,以#开头的称之为指令,Velocity内置的这些指令可以用来做赋值,条件判断,循环控制等脚本语言必备的逻辑控制等语句,Velocity的指令是可扩展的,即用户可以根据实际的需要自定义Velocity指令
自定义指令(Directive)的一般步骤
&nbs
- 【Hive十】Programming Hive学习笔记
bit1129
programming
第二章 Getting Started
1.Hive最大的局限性是什么?一是不支持行级别的增删改(insert, delete, update)二是查询性能非常差(基于Hadoop MapReduce),不适合延迟小的交互式任务三是不支持事务2. Hive MetaStore是干什么的?Hive persists table schemas and other system metadata.
- nginx有选择性进行限制
ronin47
nginx 动静 限制
http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;...
server {...
location ~.*\.(gif|png|css|js|icon)$ {
- java-4.-在二元树中找出和为某一值的所有路径 .
bylijinnan
java
/*
* 0.use a TwoWayLinkedList to store the path.when the node can't be path,you should/can delete it.
* 1.curSum==exceptedSum:if the lastNode is TreeNode,printPath();delete the node otherwise
- Netty学习笔记
bylijinnan
javanetty
本文是阅读以下两篇文章时:
http://seeallhearall.blogspot.com/2012/05/netty-tutorial-part-1-introduction-to.html
http://seeallhearall.blogspot.com/2012/06/netty-tutorial-part-15-on-channel.html
我的一些笔记
===
- js获取项目路径
cngolon
js
//js获取项目根路径,如: http://localhost:8083/uimcardprj
function getRootPath(){
//获取当前网址,如: http://localhost:8083/uimcardprj/share/meun.jsp
var curWwwPath=window.document.locati
- oracle 的性能优化
cuishikuan
oracleSQL Server
在网上搜索了一些Oracle性能优化的文章,为了更加深层次的巩固[边写边记],也为了可以随时查看,所以发表这篇文章。
1.ORACLE采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前,那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾。(这点本人曾经做过实例验证过,的确如此哦!
- Shell变量和数组使用详解
daizj
linuxshell变量数组
Shell 变量
定义变量时,变量名不加美元符号($,PHP语言中变量需要),如:
your_name="w3cschool.cc"
注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编程语言都不一样。同时,变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用ba
- 编程中的一些概念,KISS、DRY、MVC、OOP、REST
dcj3sjt126com
REST
KISS、DRY、MVC、OOP、REST (1)KISS是指Keep It Simple,Stupid(摘自wikipedia),指设计时要坚持简约原则,避免不必要的复杂化。 (2)DRY是指Don't Repeat Yourself(摘自wikipedia),特指在程序设计以及计算中避免重复代码,因为这样会降低灵活性、简洁性,并且可能导致代码之间的矛盾。 (3)OOP 即Object-Orie
- [Android]设置Activity为全屏显示的两种方法
dcj3sjt126com
Activity
1. 方法1:AndroidManifest.xml 里,Activity的 android:theme 指定为" @android:style/Theme.NoTitleBar.Fullscreen" 示例: <application
- solrcloud 部署方式比较
eksliang
solrCloud
solrcloud 的部署其实有两种方式可选,那么我们在实践开发中应该怎样选择呢? 第一种:当启动solr服务器时,内嵌的启动一个Zookeeper服务器,然后将这些内嵌的Zookeeper服务器组成一个集群。 第二种:将Zookeeper服务器独立的配置一个集群,然后将solr交给Zookeeper进行管理
谈谈第一种:每启动一个solr服务器就内嵌的启动一个Zoo
- Java synchronized关键字详解
gqdy365
synchronized
转载自:http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html
多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。
同步机制可以使用synchronized关键字实现。
当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。
当s
- js实现登录时记住用户名
hw1287789687
记住我记住密码cookie记住用户名记住账号
在页面中如何获取cookie值呢?
如果是JSP的话,可以通过servlet的对象request 获取cookie,可以
参考:http://hw1287789687.iteye.com/blog/2050040
如果要求登录页面是html呢?html页面中如何获取cookie呢?
直接上代码了
页面:loginInput.html
代码:
<!DOCTYPE html PUB
- 开发者必备的 Chrome 扩展
justjavac
chrome
Firebug:不用多介绍了吧https://chrome.google.com/webstore/detail/bmagokdooijbeehmkpknfglimnifench
ChromeSnifferPlus:Chrome 探测器,可以探测正在使用的开源软件或者 js 类库https://chrome.google.com/webstore/detail/chrome-sniffer-pl
- 算法机试题
李亚飞
java算法机试题
在面试机试时,遇到一个算法题,当时没能写出来,最后是同学帮忙解决的。
这道题大致意思是:输入一个数,比如4,。这时会输出:
&n
- 正确配置Linux系统ulimit值
字符串
ulimit
在Linux下面部 署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用 其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进
- hibernate调用返回游标的存储过程
Supanccy2013
javaDAOoracleHibernatejdbc
注:原创作品,转载请注明出处。
上篇博文介绍的是hibernate调用返回单值的存储过程,本片博文说的是hibernate调用返回游标的存储过程。
此此扁博文的存储过程的功能相当于是jdbc调用select 的作用。
1,创建oracle中的包,并在该包中创建的游标类型。
---创建oracle的程
- Spring 4.2新特性-更简单的Application Event
wiselyman
application
1.1 Application Event
Spring 4.1的写法请参考10点睛Spring4.1-Application Event
请对比10点睛Spring4.1-Application Event
使用一个@EventListener取代了实现ApplicationListener接口,使耦合度降低;
1.2 示例
包依赖
<p