- systemd和OpenSSH
SEP5010
SystemsystemdOpenSSH
1systemd1.1配置文件/etc/systemd/system,AmbientCapabilities=CAP_SYS_NICECAP_NETCAP_NET_RAWCAP_NET_ADMINCAP_NET_BROADCAST/lib/systemd/system/run/systemd/system/usr/lib/systemd/user1.2commandssystemctllist-u
- Android13 研究可以静态注册的广播
峥嵘life
android广播接收者android
Android13研究可以静态注册的广播文章目录Android13研究可以静态注册的广播一、前言二、静态注册和代码示例1、AI搜到可静态注册的常见系统广播类型三、静态注册、动态注册对比示例1、AndroidManifest.xml代码2、MyBroadcast.java3、MySerivce.java4、MainActivity.java代码5、验证过程(1)开机重启后应用启动的广播日志(2)开关
- GPU网络运维
一行代码通万物
网络运维GPU
一、GPU网络架构与核心技术GPU集群网络需适配分布式训练中“多节点数据同步”(如all-reduce、broadcast)的高频、大流量需求,主流技术方案及特点如下:网络技术核心优势适用场景运维重点InfiniBand低延迟(~1us)、高带宽(400Gb/s)、原生RDMA支持超大规模集群(≥1000节点)、千亿参数模型训练子网管理、固件兼容性、链路健康RoCE(RDMAoverConverg
- 【Android】安卓四大组件之广播接收器(Broadcast Receiver):从基础到进阶
m0_59734531
AndroidandroidjavaBoradcast安卓四大组件
在Android开发中,广播接收器(BroadcastReceiver)是一个非常重要的组件,它能帮助应用接收来自系统或其他应用的事件通知,实现跨组件、跨应用的通信。大家可以把广播接收器想象成一个“收音机”。它的作用是监听系统或应用发出的“广播消息”,并在收到消息后执行相应的操作。(一)基础概念BroadcastReceiver用于监听系统或应用发出的广播事件,实现跨组件通信。其特点是发送方无需关
- 【Android】Android四大组件
Android四大组件ActivityServiceBroadcastReceiverContentProvider
- Android 通过adb发广播的形式开启activity
li_xianyuan
androidshell界面adb
Android中有很多时候需要通过adb中打开一个界面,这个时候就需要通过发广播的形式,开启一个界面了例如通过广播开启一个特定界面adbshellambroadcast-aandroid.settings.ACTION_NOTIFICATION_LISTENER_SETTINGSadbshellam具体参数如下amusage:am[subcommand][options]startanActivi
- Android四大组件:Broadcast
giaoho
安卓开发学习android
Android四大组件:Broadcast-1.标准广播(Normalbroadcasts)执行特性:完全异步,广播发出后,所有接收器几乎同时接收,无先后顺序。效率与拦截:效率高,但无法被截断。流程:发出广播后,多个接收器同时接收,中“发出广播”向“广播接收器1、2、3”同时传递。有序广播(Orderedbroadcasts)执行特性:同步执行,同一时刻仅一个接收器接收,执行完逻辑后广播才继续传递
- NumPy:科学计算的超能引擎[特殊字符](深入剖析+实战技巧)
码海漫游者8
numpy其他
文章目录为什么NumPy是Python科学计算的绝对核心?三维痛点直击ndarray:NumPy的核武器剖析内存布局揭秘(超级重要‼️)维度操作黑科技广播机制(Broadcasting)性能屠杀现场️高级技巧武装包️内存映射大文件爱因斯坦求和约定结构化数组真实世界应用场景图像处理机器学习数据预处理踩坑预警⚠️视图vs副本整数溢出性能压榨终极指南避免复制四法则终极加速方案你知道吗?就在你刷短视频的几
- python中的函数:apply、map、reduce、lambda函数
一、apply函数定义:apply函数在Pandas库中函数,应用对象是DataFrame或Series的行或列上,并返回一个新的DataFrame或Series。主要有两方面的功能:一是直接对DataFrame或者Series应用函数,二是对pandas中的groupby之后的聚合对象apply函数DataFrame.apply(func,axis=0,broadcast=None,raw=Fa
- 【Pytorch学习笔记(三)】张量的运算(2)
一、引言在《张量的运算(1)》中我们已经学习了几种张量中常用的非算数运算如张量的索引与切片,张量的拼接等。本节我们继续学习张量的算术运算。二、张量的算术运算(一)对应元素的加减乘除在PyTorch中,张量的对应元素的算术运算包括加法、减法、乘法、除法等常见的数学运算。这些运算可以对张量进行逐元素操作(element-wise),也可以进行张量之间的广播运算(broadcasting)。1.逐元素操
- Spark 之 UT
zhixingheyi_tian
sparkspark大数据分布式
AQEOFFpartitionpruninginbroadcasthashjoinswithaliases==OptimizedLogicalPlan==Project[date_id#5283,pid#5281,sid#5282]+-JoinInner,(si
- Android应用的基本构造及威胁(apk)
墨痕诉清风
安全文献android
目录APK文件是什么apk文件解压后的目录结构apk文件的存储位置如何从设备上提取特定的应用Android应用的组件Activity(活动)Service(服务)BroadcastReceive(广播接收者)ContentProvider(内容提供者)Android应用的构建过程应用运行时发生了什么理解应用沙盒安卓应用简介web应用原生应用混合应用移动应用威胁建模移动应用架构微软公司安全开发流程威
- python pytorch 张量 (Tensor)
Python虫
pythonpytorch人工智能
目录前言张量Tensor1.张量的基本概念2.创建张量从Python列表或NumPy数组生成特定形状的张量指定设备(CPU/GPU)指定数据类型(dtype)3.张量的属性4.张量的操作数学运算形状操作索引与切片广播机制(Broadcasting)5.自动微分(Autograd)6.与NumPy的互操作7.张量的存储8.其他方法1.`.item()`方法2.`.tolist()`方法`.numpy
- android设计——功能临时开启与永久管控
通信侠
代码小技巧android
摘要:本文基于android平台,设计一种框架并实现对功能的管控和临时的开启。首先,使用SharedPreferences来保存默认状态,因为需要持久化存储,即使在重启或掉电后也能恢复。默认状态是永久开启或关闭,所以需要有一个地方存储当前的默认状态:表示是永久开启还是永久关闭。其次,创建一个BroadcastReceiver,监听指定的广播动作。当接收到广播时,解析三个参数,并进行参数校验。例如,
- BLE协议栈的解析
目录概述1BLE协议栈层次结构1.1控制器(Controller)1.2主机(Host)1.3应用层(Application)1.3.1业务层功能1.3.2实现方法2重要属性介绍2.1GATT属性2.2服务(Service)2.3特征值(Characteristic)2.4描述符(Descriptor)2.5数据交互方式3蓝牙设备角色3.1BLE广播者(Broadcaster)3.2BLE观察者(
- Linux 命令大全之 ifconfig命令
传说三哥
linux基础入门linux运维Linux基础Linux命令ifconfig
Linuxifconfig命令用于显示或设置网络设备。ifconfig可设置网络设备的状态,或是显示目前的设置。语法ifconfig[网络设备][downup-allmulti-arp-promisc][add][del][][io_addr][irq][media][mem_start][metric][mtu][netmask][tunnel][-broadcast][-pointopoint
- 【ROS2】tf2_ros:坐标变换、坐标系跟踪
郭老二
ROSROS2
【ROS】郭老二博文之:ROS目录1、简介在机器人导航中,tf2用于管理和转换机器人、传感器和环境之间的坐标系;在传感器数据融合中,它帮助同步和整合不同传感器的数据2、接口常用接口如下:1)tf2_ros::StaticTransformBroadcaster说明:用于广播静态坐标变换的类;方法:sendTransform(std::vector)用于发送一个静态的坐标变换的消息。参数:geome
- 在 Actix-web 中使用 Server-Sent Events (SSE) 实现实时通知
朝阳581
rust前端服务器运维
在Actix-web中使用Server-SentEvents(SSE)实现实时通知介绍Server-SentEvents(SSE)是一种服务器向客户端推送实时更新的技术,适用于服务器到客户端的单向通信。以下是如何在Actix-web中实现SSE的示例,并在更新用户信息时主动向客户端发送通知。服务器端实现1.定义SseNotifier结构体usetokio::sync::broadcast;#[de
- OBS Studio是什么?应用场景有哪些?
OBSStudio(OpenBroadcasterSoftwareStudio)是一款开源、免费的专业级直播与录屏软件,由社区驱动开发,支持跨平台(Windows、macOS、Linux),广泛用于游戏直播、在线教学、视频创作、企业会议等场景。它以高性能、高自定义性和丰富的功能生态著称,是个人创作者、主播、教育工作者及企业的常用工具。一、OBSStudio的核心功能OBSStudio的设计围绕“实
- spark driver: Failed to allocate
qq_40841339
sparkamabrihivesparkjava大数据分布式
异常sparkdriver端包括:pageallocationfailure,分析:由于sparkdriver开启broadcast后,应发driverjvm大小从最小128m向设置最大内存申请,但由于存在cpu内存脏数据,无法回收,尽管cpu内存资源显示是够的,但是没有高阶内存页,依旧会发生申请不到cpu资源的情况内存页详情显示:内存页详解:●检查系统缺乏高阶内存#cat/proc/buddyi
- 【Android基础回顾】五:AMS(Activity Manager Service)
程序员-薯片
Androidandroid
Android的AMS(ActivityManagerService)是Android系统中的核心服务之一,负责管理整个应用生命周期、任务栈、进程和四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的运行。它运行在系统进程system_server中,是AndroidFramework层的关键服务。1AMS的基本职责AMS是Framew
- Rocket消息机制和ACL权限控制
cubicjin
RocketMQrocketmqjava
普通消息(cluster模式默认)consumer.setMessageModel(MessageModel.CLUSTERING);当多个消费者组订阅了同一个Topic时,每个组中其中一个消费者都会收到这条消息的副本。由broker以消费组为单位维护消费进度也就是消费位点广播消息(broadcasting模式)consumer.setMessageModel(MessageModel.BROAD
- 【1】Pytorch基本知识
Clichong
深度学习:从入门到精通pythonpytorch机器学习
文章目录1.创建Tensor的基本操作2.索引与切片操作3.维度变换操作4.Broadcast广播机制5.拼接与拆分6.基本运算7.统计属性8.高级用法9.类型转换importtorch基本的数据类型如图所示1.创建Tensor的基本操作#Importfromnumpytorch.from_numpy#uninitializedtorch.emptytorch.Tensortorch.IntTen
- Linux线程同步实战:多线程程序的同步与调度
chian-ocean
Linuxlinuxredis运维
个人主页:chian-ocean文章专栏-LinuxLinux线程同步实战:多线程程序的同步与调度个人主页:chian-ocean文章专栏-Linux前言:为什么要实现线程同步线程饥饿(ThreadStarvation)示例:抢票问题条件变量条件变量的工作原理常用操作:`pthread_cond_wait``pthread_cond_signal``pthread_cond_broadcast`基
- Android四大组件:BroadcastReceiver的应用
键盘小码哥
androidkotlin
BroadcastReceiver的应用本文是Android四大组件系列的第四篇,主要介绍BroadcastReceiver的基本概念、使用方式以及实际应用场景。一、BroadcastReceiver基础概念BroadcastReceiver(广播接收器)是Android四大组件之一,主要用于接收和响应系统或应用发出的广播消息。它允许应用程序接收来自Android系统或其他应用程序的通知,从而实现
- EventBus使用入门
sxyuzg
转载androidEventBus事件总线
转载自:http://bbs.itcast.cn/thread-83609-1-1.html传智播客什么是EventBusEventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口函数在Fragment,Activity,Service,线程之间传递数据,执行方法。特点是代码简洁,是一种发布订阅设计模式(Publish
- Android安全——客户端安全要点,已拿offer附真题解析
m0_63935374
程序员面试android移动开发
localBroadcastManager.registerReceiver(myReceiver,filter);发送本地广播Bundlebundle=newBundle();bundle.putParcelable(“DATA”,content);Intentintent=newIntent();intent.setAction(“MY_ACTION”);intent.putExtras(bu
- Android 白学了。。。_kotlin中的coroutines,它与线程有什么区别 有哪些优点
omofun5541
androidkotlin开发语言
Android四大组件相关Activity与Fragment之间常见的几种通信方式?LaunchMode的应用场景?BroadcastReceiver与LocalBroadcastReceiver有什么区别?对于Context,你了解多少?IntentFilter是什么?有哪些使用场景?谈一谈startService和bindService的区别,生命周期以及使用场景?Service如何进行保活?
- SNTP 协议详解:网络时间同步的轻量级解决方案
yayaer2
通信技术计算机网络物联网SNTP网络协议
目录一、背景二、SNTP的起源与定位2.1与NTP的关系2.2应用场景三、SNTP技术原理3.1时间同步的核心逻辑3.2时间戳与时间表示3.3协议交互流程四、SNTP协议报文格式关键字段解析:五、SNTP的工作模式5.1单播模式(Unicast)5.2广播模式(Broadcast)5.3对称模式(Symmetric)六、SNTP的同步精度与影响因素七、SNTP的安全挑战与应对措施7.1安全风险7.
- python Socket服务器转发
AIOT魔法师
Pythonsocketpython
基于多线程Server:importsocketimportthreading#接收数据defrecive(sock):whileTrue:try:data=sock.recv(1024)print("Recive:{}".format(data.decode("utf-8")))T_trans=threading.Thread(target=broadcast_data,args=(sock,d
- 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