【Springboot知识】springboot基础-事件
文章目录
- 简介
- 一、事件类型
- 二、事件处理机制
- 三、自定义事件和监听器
- 四、异步事件处理
- 五、条件事件监听
- 如何使用
- 1. 自定义事件
- 2. 发布事件
- 3. 监听事件
- 4. 测试事件机制
- ApplicationEventPublisher接口
- 使用的设计模式
简介
在Spring Boot中,事件机制是一种基于观察者模式的设计,它允许在Spring容器内部发布和订阅消息。以下是对Spring Boot事件机制的详细解释:
一、事件类型
Spring Boot在启动和运行过程中会触发一系列事件,这些事件按照其发生的顺序和阶段进行分类。常见的事件类型包括:
- ApplicationStartingEvent:在Spring Boot应用启动时触发,但在进行任何处理之前(侦听器和初始化程序的注册除外)。
- ApplicationEnvironmentPreparedEvent:当Spring Boot的Environment已经准备完毕,但此时上下文context还没有创建时触发。
- ApplicationContextInitializedEvent:在创建applicationContext并调用ApplicationContextInitializer之后触发。
- ApplicationPreparedEvent:在Spring Boot上下文context创建完成,但此时Spring中的bean还没有完全加载完成时触发。
- ContextRefreshedEvent:在ApplicationContext更新时发布,也可以在调用ConfigurableApplicationContext接口中的refresh()方法时被触发。
- ApplicationStartedEvent:在自定义afterRefresh方法调用之后触发。
- ApplicationReadyEvent:在Spring Boot启动结束时触发,表示应用已经准备好处理请求。
- ApplicationFailedEvent:在Spring Boot启动失败时触发。
- ContextClosedEvent:当ApplicationContext被关闭时触发,此时其管理的所有单例Bean都被销毁。
此外,还有一些其他事件,如ContextStartedEvent和ContextStoppedEvent,分别在容器开始和停止时触发。
二、事件处理机制
Spring Boot的事件处理机制主要涉及事件类、发布者和监听器三个角色:
- 事件类(Event):继承自
ApplicationEvent
类(从Spring Framework 4.2开始,事件类也可以是任意对象),用于封装事件数据。 - 发布者(Publisher):注入
ApplicationEventPublisher
对象,使用publishEvent()
方法发布事件。 - 监听器(Listener):实现
ApplicationListener
接口,重写onApplicationEvent()
方法处理事件。监听器可以使用@Component
注解注册为一个Bean,也可以使用@EventListener
注解标注一个方法作为监听器。
三、自定义事件和监听器
在Spring Boot中,开发者可以自定义事件和监听器来实现特定的业务逻辑。自定义事件的步骤通常包括:
- 定义一个继承自
ApplicationEvent
的事件类,并在其中封装事件数据。 - 在业务代码中注入
ApplicationEventPublisher
对象,并调用publishEvent()
方法发布事件。 - 定义一个实现
ApplicationListener
接口的监听器类,或者使用@EventListener
注解标注一个方法作为监听器,并重写onApplicationEvent()
方法或标注的方法来处理事件。
四、异步事件处理
Spring Boot支持异步事件处理,以提高应用的响应速度。实现异步事件处理的方法包括:
- 在配置类上添加
@EnableAsync
注解,启用Spring的异步方法执行能力。 - 在监听方法上添加
@Async
注解,标明此方法是异步执行的。 - Spring会默认提供并初始化一个专门用来执行异步任务的线程池
ThreadPoolTaskExecutor
,来执行所有的异步任务。
另外,也可以使用自定义的线程池或SimpleApplicationEventMulticaster
来实现异步事件处理。
五、条件事件监听
Spring Boot还支持条件事件监听,即根据特定的条件来决定是否触发某个事件监听器。这可以通过在@EventListener
注解中添加condition
属性,并指定一个布尔值的SpEL表达式来实现。
综上所述,Spring Boot的事件机制为开发者提供了一种灵活且强大的方式来处理应用中的事件和消息。通过自定义事件和监听器,开发者可以实现业务逻辑的解耦和异步处理,从而提高应用的响应速度和可维护性。
如何使用
在Spring Boot中,事件机制的使用可以极大地提高应用的灵活性和模块间的解耦合度。以下是一个Spring Boot事件使用的具体例子,包括自定义事件、发布事件和监听事件的完整流程:
1. 自定义事件
首先,我们定义一个自定义事件类OrderEvent
,它继承自ApplicationEvent
。这个事件类用于封装与订单相关的事件数据。
public class OrderEvent extends ApplicationEvent {private Order order;public OrderEvent(Object source, Order order) {super(source);this.order = order;}public Order getOrder() {return order;}
}
在这个例子中,Order
是一个简单的实体类,它可能包含订单ID、订单号、买家ID和总金额等属性。
2. 发布事件
接下来,我们创建一个服务类OrderService
,它负责处理订单相关的业务逻辑,并在适当的时候发布订单事件。
@Service
public class OrderService {@Autowiredprivate ApplicationEventPublisher eventPublisher;public void createOrder(Order order) {// 业务逻辑处理,如保存订单到数据库等// ...// 发布订单事件eventPublisher.publishEvent(new OrderEvent(this, order));}
}
在这个例子中,ApplicationEventPublisher
是一个用于发布事件的核心接口。我们将其注入到OrderService
中,并在createOrder
方法中发布了一个OrderEvent
事件。
3. 监听事件
最后,我们创建一个事件监听器类OrderEventListener
,它实现了ApplicationListener
接口,用于监听OrderEvent
事件。
@Component
public class OrderEventListener implements ApplicationListener<OrderEvent> {@Overridepublic void onApplicationEvent(OrderEvent event) {Order order = event.getOrder();// 处理订单事件,如发送订单通知、更新库存等System.out.println("订单事件监听器接收到订单: " + order);// ...}
}
在这个例子中,OrderEventListener
类被标注为@Component
,这意味着它会被Spring容器自动扫描并注册为一个Bean。当OrderEvent
事件被发布时,Spring会自动调用onApplicationEvent
方法来处理该事件。
4. 测试事件机制
为了测试上述事件机制是否工作正常,我们可以在应用的启动类中添加一些测试代码。
@SpringBootApplication
public class SpringBootDemoApplication {public static void main(String[] args) {SpringApplication.run(SpringBootDemoApplication.class, args);// 创建订单并触发事件OrderService orderService = new AnnotationConfigApplicationContext(SpringBootDemoApplication.class).getBean(OrderService.class);Order order = new Order();// 设置订单属性,如订单号、买家ID等// order.setOrderNo(...);// order.setBuyerId(...);// ...orderService.createOrder(order);}
}
注意:在实际应用中,通常不会在启动类的main
方法中直接创建订单和触发事件。这里只是为了演示事件机制的工作原理。在实际场景中,订单的创建和事件的触发通常是由用户请求或其他业务逻辑触发的。
另外,上述测试代码中的AnnotationConfigApplicationContext
是为了获取OrderService
的Bean而创建的。在实际应用中,通常会通过注入的方式获取OrderService
的Bean,而不是在启动类中直接创建。
综上所述,通过自定义事件、发布事件和监听事件,Spring Boot的事件机制为开发者提供了一种灵活且强大的方式来处理应用中的事件和消息。这不仅可以提高应用的响应速度,还可以实现业务逻辑的解耦合和模块化。
ApplicationEventPublisher接口
// ApplicationEventPublisher 接口定义
public interface ApplicationEventPublisher {// 发布一个 ApplicationEvent 事件// 这个方法是默认的,意味着它可以在接口中直接提供实现(Java 8 及以上版本支持)// 但实际上,这个默认实现通常会调用另一个重载的 publishEvent 方法default void publishEvent(ApplicationEvent event) {// 这里的实现是假设的,实际实现会依赖于具体的 ApplicationEventPublisher 实现类// 例如,它可能会调用一个 ApplicationEventMulticaster 来多播事件给所有监听器// 但在这个接口定义中,我们只需要知道这个方法的存在和它的作用// 真正的实现会在 Spring 框架的某个类中完成publishEvent((Object) event); // 调用另一个重载的 publishEvent 方法}// 发布一个泛型事件// 这个方法允许发布任何类型的事件,如果事件不是 ApplicationEvent 的实例,// Spring 框架会将其包装在一个 PayloadApplicationEvent 中void publishEvent(Object event);// 注意:在 Spring 框架的实际实现中,// ApplicationEventPublisher 接口通常会有一个或多个实现类,// 这些实现类会负责具体的事件发布逻辑,包括将事件多播给所有匹配的监听器。// 在 Spring Boot 应用中,这个接口通常是通过依赖注入(例如使用 @Autowired 注解)// 被注入到需要发布事件的组件中。
}// 需要注意的是,上面的代码是一个简化的接口定义,
// 它并不包含 Spring 框架中 ApplicationEventPublisher 接口的实际实现细节。
// 在 Spring 框架中,ApplicationEventPublisher 接口的实现类通常是
// SimpleApplicationEventPublisher 或 ApplicationEventMulticaster 的某个子类。// 另外,ApplicationEvent 是一个标记接口,用于标识一个事件对象。
// 自定义事件类通常会继承自 ApplicationEvent 或其子类,
// 并添加一些额外的属性来表示事件的详细信息。
使用的设计模式
在Spring Boot中,事件机制主要使用到了以下设计模式:
-
观察者模式(Observer Pattern):
- 观察者模式是一种软件设计模式,其中一个目标对象管理所有依赖于它的观察者对象,并在其状态改变时主动通知这些观察者。
- 在Spring Boot的事件机制中,
ApplicationEventPublisher
负责发布事件,而事件监听器(实现了ApplicationListener
接口的类)则作为观察者订阅并处理这些事件。 - 当一个事件被发布时,Spring Boot会通知所有注册了该事件类型的监听器,并执行它们的
onApplicationEvent
方法。
-
发布-订阅模式(Publish-Subscribe Pattern):
- 发布-订阅模式是观察者模式的一种变体,它引入了一个事件通道(Event Channel)作为中介,使得发布者和订阅者之间不需要直接通信。
- 在Spring Boot中,事件通道由
ApplicationEventMulticaster
实现,它负责将事件多播给所有匹配的监听器。 - 发布者通过
ApplicationEventPublisher
发布事件,而订阅者(即事件监听器)则通过实现ApplicationListener
接口并注册到Spring容器中来订阅事件。
-
策略模式(Strategy Pattern):
- 虽然策略模式不是Spring Boot事件机制的核心,但在某些情况下,它可以与事件监听器一起使用来提供不同的处理策略。
- 例如,你可以有多个实现了相同事件监听接口的类,每个类都提供了对同一事件的不同处理策略。然后,你可以根据需要在运行时选择使用哪个策略。
-
模板方法模式(Template Method Pattern):
- 模板方法模式是一种行为设计模式,它在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中实现。
- 在Spring Boot的事件处理中,虽然模板方法模式不是直接用于事件发布和监听,但Spring框架本身提供了许多模板类(如
JdbcTemplate
、RestTemplate
等),这些模板类使用了模板方法模式来简化常见任务的执行。这些模板类与事件机制无直接关联,但它们是Spring框架中常用的设计模式之一。
需要注意的是,虽然上述设计模式在Spring Boot的事件机制中有所体现,但它们并不是孤立存在的。相反,它们通常与其他设计模式一起使用,以构建灵活、可维护和可扩展的应用程序。例如,在Spring Boot中,你可以结合使用观察者模式和策略模式来创建复杂的事件处理系统,该系统能够根据不同的条件选择不同的处理策略。
相关文章:
【Springboot知识】springboot基础-事件
文章目录 简介一、事件类型二、事件处理机制三、自定义事件和监听器四、异步事件处理五、条件事件监听 如何使用1. 自定义事件2. 发布事件3. 监听事件4. 测试事件机制 ApplicationEventPublisher接口使用的设计模式 简介 在Spring Boot中,事件机制是一种基于观察者…...
经典视觉神经网络1 CNN
一、概述 输入的图像都很大,使用全连接网络的话,计算的代价较高,图像也很难保留原本特征。 卷积神经网络(Convolutional Neural Network,CNN)是一种专门用于处理具有网格状结构数据的深度学习模型。主要应用…...
解决跨域问题方案
跨域问题在前后端分离架构下尤为常见,是每个 Web 开发者都会遇到的核心问题。本文将通过原理解析、场景剖析、解决方案详解以及最佳实践等多个维度,帮助开发者全面理解并有效应对跨域问题。 目录 **一、跨域的本质****1. 同源策略****2. 同源策略的限制范…...
【python自动化五】接口自动化基础--requests的使用
python的接口请求可以用requests库,这个介绍就不多说了,网上说得很详细。 接下来直接记录下如何使用(当然也不限于自动化的使用) 1.安装requests requests也需要安装一下 pip install requests2.requests请求 1.常用的请求方法…...
文本三剑客——grep命令
介绍 作用 Linux grep (global regular expression) 命令用于查找文件里符合条件的字符串或正则表达式。 常用选项 -i:忽略大小写进行匹配。-v:反向查找,只打印不匹配的行。-n:显示匹配行的行号。-r:递归查找子目录…...
ASP 实例:深入解析与实战应用
ASP 实例:深入解析与实战应用 引言 ASP(Active Server Pages)是一种由微软开发的服务器端脚本环境,用于动态网页设计和开发。它允许开发者创建和运行动态交互性网页,如访问数据库、发送电子邮件等。本文将深入探讨AS…...
文件的操作
什么是文件 如何是数据持久化——保存在硬盘上(文件,数据库)磁盘上的文件是文件在程序设计中,我们一般谈的文件有两种:程序文件、数据文件程序文件,比如源文件(.c文件)读a文件写到b文件里,此时a…...
【简单谈谈UCIE PHY LSM链路训练】
UCIE PHY LSM链路训练 1 UCIE PHY LSM1.1 RESET1.2 SBINT1.3 MBINT1.3.1 MBINT.PARAM1.3.2 MBINIT.CAL1.3.3 MBINIT.REPAIRCLK1.3.4 MBINIT.REPAIRVAL1.3.5 MBINIT.REVERSALMB1.3.6 MBINIT.REPAIRMB 1.4 MBTRAIN1.5 LINKINIT1.6 ACTIVE1.7 L1/L21.8 PHY.RETRAIN1.9 TRAIN.ERROR…...
数学二常用公式(高等数学+线性代数)
目录 高等数学第一章 函数、极限和连续第二章 一元函数微分学第三章 一元函数积分学第四章 多元函数微分学第五章 多元函数积分学第六章 常微分方程 线性代数线性代数篇章涉及的知识内容及常用公式第一章 行列式第二章 矩阵第三章 向量第四章 线性方程组第五章 矩阵的相似化简第…...
【Java计算机毕业设计】Springboot+vue动物保护协会管理系统【源代码+数据库+LW文档+开题报告+答辩稿+部署教程+代码讲解】
源代码数据库LW文档(1万字以上)开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统:Window操作系统 2、开发工具:IntelliJ IDEA或者Eclipse 3、数据库存储:…...
鸿蒙面试---1208
HarmonyOS 三大技术理念 分布式架构:HarmonyOS 的分布式架构使得设备之间能够无缝协同工作。例如,它允许用户在不同的智能设备(如手机、平板、智能手表等)之间共享数据和功能。比如,用户可以在手机上开始编辑文档&…...
【论文阅读】一名系统研究者的攀登之路
作者:陈海波 陈海波是操作系统、系统结构、并行与分布式系统方向大牛,上海交通大学大牛团队 学习体会: 计算机系统论文准备周期较长,十有八九都是在解决新问题的路上~ 因此学习大佬的学习经验,少踩坑,把主…...
MySQL 索引(B+树)详解
MySQL 索引(B树)详解 MySQL逻辑架构对比InnoDB与MyISAM存储结构存储空间可移植性、备份及恢复事务支持AUTO_INCREMENT表锁差异全文索引表主键表的具体行数CRUD操作外键 sql优化简介什么情况下进行sql优化sql语句执行过程sql优化就是优化索引 索引索引的优…...
【不稳定的BUG】__scrt_is_managed_app()中断
【不稳定的BUG】__scrt_is_managed_app函数中断 参考问题详细的情况临时解决方案 参考 发现出现同样问题的文章: 代码运行完所有功能,仍然会中断 问题详细的情况 if (!__scrt_is_managed_app())exit(main_result);这里触发了一个断点很奇怪,这中断就发生了一次,代…...
护网蓝队日志分析
Windows日志分析 一、事件查看器 在「事件查看器」中,可以查看系统中记录的所有事件日志。操作步骤如下: 1、打开 Windows 事件查看器 1、使用Windows R快捷键打开「运行」对话框,输入eventvwr.msc,然后按回车键打开事件查看…...
滤波器设计(八)-McClellan-Parks design algorithm
步骤 Initialization: Choose an extremal set of frequences {ωi(0)}.Finite Set Approximation: Calculate the best Chebyshev approximation on the present extremal set, giving a value δ(m) for the min-max error on the present extremal set.Interpolation: Calc…...
ElasticSearch常见的索引_集群的备份与恢复方案
方案一:使用Elasticsearch的快照和恢复功能进行备份和恢复。该方案适用于集群整体备份与迁移,包括全量、增量备份和恢复。 方案二:通过reindex操作在集群内或跨集群同步数据。该方案适用于相同集群但不同索引层面的迁移,或者跨集…...
C#对Excel表csv文件的读写操作
C#对Excel表csv文件的读写 一、变量定义二、加载主窗口三、创建表头四、向表中添加数据五、从表中读取数据六、单击按钮向表中添加数据七、测试验证 一、变量定义 #region 变量定义 private string CurAppExeDir System.AppDomain.CurrentDomain.BaseDirectory; private strin…...
【MySQL】mysql服务器架构
目录 1、背景2、mysql服务器架构解释3、总结 1、背景 简单理解一下mysql的服务器架构。 2、mysql服务器架构解释 mysql的架构图如下: 主要分为三部分:客户端、服务端、存储引擎。接下来我们来解释一下各个部分: 客户端 用来连接mysql服务…...
Vue Web开发(三)
1. 添加el-menu样式 将Home.vue文件重新命名为Main.vue文件,本节涉及新的home目录和User目录下的index.js文件,因为侧边导航栏Aside和顶部Header是在每一个页面都存在的,所以重新命名为Main,而home文件夹下的index.js则对应系统首…...
Java项目实战II基于微信小程序的小区租拼车管理信息系统 (开发文档+数据库+源码)
目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发,CSDN平台Java领域新星创作者,专注于大学生项目实战开发、讲解和毕业答疑辅导。 一、前言 随着城市化进程的加速,小区居民对于出行方…...
云安全:云计算安全
目录 云安全的定义和重要性 云安全的关键组成部分 云安全技术实现 云安全最佳实践 云安全的定义和重要性 云安全是指在云计算环境中保护数据、应用程序和相关服务不受威胁的一系列策略、技术和控制措施。随着云计算的快速发展,云安全已成为企业和个人用户最关心…...
git clone加速(亲测好用)
用公司网git clone特别卡,本以为宿舍网会好一点,回来下的时候也只有几十kb. 然后找到了一种方法,就是在原始下载命令前加一个gitclone 比如 git clone https://github.com/infiniflow/ragflow.git替换成 git clone https://gitclone.com/gi…...
Python 网络爬虫进阶:突破数据采集的边界
在成功踏入 Python 网络爬虫的入门之境后,我们犹如初窥宝藏的探险家,领略到了数据采集世界的奇妙与潜力。而此刻,进阶之路在脚下徐徐展开,它将引领我们深入这片领域的更深处,挖掘出更为强大和精妙的爬虫技艺࿰…...
【网络安全】网站常见安全漏洞 - 网站基本组成及漏洞定义
文章目录 引言1. 一个网站的基本构成2. 一些我们经常听到的安全事件3. 网站攻击者及其意图3.1 网站攻击者的类型3.2 攻击者的意图 4. 漏洞的分类4.1 按来源分类4.2 按危害分类4.3 常见漏洞与OWASP Top 10 引言 在当今的数字化时代,安全问题已成为技术领域不可忽视的…...
[论文解读]Street Gaussians: Modeling Dynamic Urban Scenes with Gaussian Splatting
Street Gaussians是年初的一篇动态场景重建论文, 在当时是做到了SOTA,至今为止很多自动驾驶或者动态场景重建的文章都会将Street Gaussians作为实验的比较对象,这也表明了这篇文章的重要性,今天就一起来看看这篇文章; …...
在Github上上传大文件的办法(图文版)
在上一篇笔记中,笔者用图文的形式介绍了如何在GITHUB中上传文件夹。 可参考这篇笔记 在GITHUB上传本地文件指南(详细图文版)-CSDN博客 但接下来,笔者在继续上传别的文件的过程中,遇到了新的问题,gitbash…...
关于springBoot+vue项目中配置SSL证书问题
前端可以通过https进行访问 1.前端在访问后端接口时,使用https进行访问,在request.js配置文件中,这个文件是配置axios的基本请求的,在基础请求地址中改为https方式 2.需要在Linux中的nginx中配置ssl证书,具体请参考&…...
GitLab
Git服务器 一、概念 C/S 架构的 Git 服务端是存放代码的公用平台是多人并行协作的核心部分通常单独部署在一台独立的服务器上客户端可以通过网络访问服务器上的仓库 GitLab搭建 一、部署 1、安装依赖包 [rootGitLab ~]# yum -y install policycoreutils-python-utils.noarc…...
TCP客户端服务器端通信(线程池版)
1、什么是监听套接字,和UDP相比,TCP为什么文件描述符变多了? 在网络编程中,TCP和UDP是两种常见的传输协议,它们之间最大的不同之一在于连接的管理方式。为了更好地理解这个区别,我们可以用一个生动的比喻来…...
go语言的成神之路-标准库篇-fmt标准库
目录 一、三种类型的输出 print: println: printf: 总结: 代码展示: 二、格式化占位符 %s:用于格式化字符串。 %d:用于格式化整数。 %f:用于格式化浮点数。 %v࿱…...
高级java每日一道面试题-2024年12月08日-JVM篇-什么是类加载器?
如果有遗漏,评论区告诉我进行补充 面试官: 什么是类加载器? 我回答: 在Java高级面试中,类加载器(ClassLoader)是一个重要的概念,它涉及到Java类的加载和初始化机制。以下是对类加载器的详细解释: 定义与作用 类加…...
数据库之连接池Druid
Druid是一个由阿里巴巴开源的高性能数据库连接池组件,它在许多项目中都是首选的连接池实现。Druid不仅提供了高效的连接管理,还具备丰富的监控和统计功能,以及强大的安全特性。 一、功能介绍 1、高效连接管理 Druid采用了高效的连接管理机…...
【如何审稿】Notes on Constructive and Positive Reviewing
学习体会: 用chatgpt翻译的2005年审稿人如何审稿的一篇文章, 学着用审稿人的角度评审自己写的稿件~ 全文摘录: 作为审稿人,您代表的是您的社区,您的审稿意见应当是专业和建设性的。会议的质量取决于审稿的质量。审稿人的任务是选出高质量、创…...
1.文本方块方法(Spacy Text Splitter 方法)Can‘t find model ‘zh_core_web_sm‘
一、概述 执行如下: def split_spacy(text):import spacynlp spacy.load( "zh_core_web_sm" ) doc nlp(text) for s in doc.sents: print(s) # d:\programdata\anaconda3\envs\python310\lib\site-packages if __name__"__main__":text &q…...
IT类项目实施流程
一、项目启动准备阶段 (一)甲方组建项目委员会 **甲方委员会确立:**指定负责人,全权负责整个项目人员、启动及时间调配、需求确定及需求变更、项目节点的验收、项目款项的支付工作。 (二) 乙方组建项目实施工作组 **乙方实施工作组确立:**工作组主要包括项目经理、需…...
数据分析平台业务落地痛点分析
在当今数字化时代,数据已成为企业决策和运营的核心驱动力。数据分析平台作为数据处理和洞察的重要工具,其业务落地过程中的痛点分析对于企业的数据战略至关重要。本文将通过概述、功能点、背景、业务点、底层原理等多个方面,深入剖析数据分析…...
java语言学习(5)
第九章 目录 类变量和类方法 理解main方法语法 代码块 单列设计模式 final关键字 抽象类 接口 类变量/静态变量 该变量最大的特点就是会被本类的所有对象实例共享,类变量可以通过类名来访问 分析代码,探讨内存的分配 class Child{private Str…...
基于SSM框架点餐管理系统(计算机毕业设计)论文,Java
系统合集跳转 源码获取链接 一、系统环境 运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境: Eclipse,Myeclipse,IDEA或者Spring Tool Suite都可以 tomcat环境: Tomcat 7.x,8.x,9.x版本均可 操作系统…...
独家首发 | 基于 KAN、KAN卷积的轴承故障诊断模型
往期精彩内容: Python-凯斯西储大学(CWRU)轴承数据解读与分类处理 基于FFT CNN - BiGRU-Attention 时域、频域特征注意力融合的轴承故障识别模型-CSDN博客 基于FFT CNN - Transformer 时域、频域特征融合的轴承故障识别模型-CSDN博客 P…...
nginx-proxy-manager初次登录502 bad gateway
nginx-proxy-manager初次登录502 bad gateway 按照官方docker-compose安装后,页面如下: 默认账户密码: adminexample.com/changeme点击sign in,提示Bad Gateway 打开调试 重装后依然如此,最后查阅githup issue 找到答案 https://github.com/NginxProxyManager/nginx-proxy-…...
棋牌项目Go的日志打印问题
棋牌项目Go的日志打印问题 项目使用 go work 管理模块 github.com/spf13/viper 通过 application.yml 加载配置 $ tree . ├── README.md ├── common │ ├── application.yml │ ├── config │ │ └── config.go │ ├── go.mod │ ├── go.su…...
基于SpringBoot校园台球厅人员与设备管理系统设计与实现
1.1课题背景与意义 在Internet高速发展的今天,计算机的应用几乎完全覆盖我们生活的各个领域,互联网在经济,生活等方面有着举足轻重的地位,成为人们资源共享,信息快速传递的重要渠道。在中国,网上管理的兴起…...
样品前处理工作站自动化操作
样品前处理工作站通过集成多种技术和自动化模块,实现了对样品的高效、精准处理。以下是实现自动化操作的关键步骤和原理: 1、集成多种技术:工作站通常集成了液体处理、固相萃取、离心、过滤等多种技术。这些技术的结合使得工作站能够完成从样…...
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退
在 Vue 3 中实现点击按钮后禁止浏览器前进或后退,我们可以通过 ref 和 watch 来管理状态,同时使用 onBeforeUnmount 来清理事件监听。 使用 Vue 3 实现: <template><div><button click"disableNavigation">点击…...
【Redis集群】使用docker compose创建docker集群,并暴露外部接口
使用 Docker Compose 创建一个 Redis 集群并暴露外部接口需要配置 docker-compose.yml 文件。以下是一个基本的步骤,包括 Redis 集群的创建和外部接口的暴露。 1、创建 docker-compose.yml 首先,您需要创建一个 docker-compose.yml 文件,配…...
RabbitMq 基础
文章目录 一、初识 MQ1.1 同步调用:1.2 异步调用: 二、RabbitMQ三、SpringAMQP3.1 依赖和配置文件3.2 消息发送和接收:3.2.1 消息发送:3.2.2 消息接收: 3.3 WorkQueues 模型:3.4 交换机类型:3.4…...
类文件结构详解
一、引言 Java 类文件是 Java 虚拟机执行的基本单元。它包含了 Java 程序的字节码以及其他重要的元数据信息。了解类文件结构可以帮助我们更好地理解 Java 程序的编译过程、运行机制以及如何进行优化。 二、类文件结构概述 Java 类文件采用一种紧凑的二进制格式,主…...
01_Linux
一.Linux简介 1.1 Linux介绍 Linux是一套免费使用和自由传播的操作系统。说到操作系 统,大家比较熟知的应该就是Windows和MacOS操作系统, 我们今天所学习的Linux也是一款操作系统 1.2 Linux发展历史 时间:1991年 地点:芬兰赫尔…...
区块链与AI结合:驱动Web3的未来发展
Web3作为下一代互联网的核心理念,强调去中心化、用户主权和透明性。而区块链技术和人工智能(AI)则是推动Web3发展的两大关键力量。两者的结合不仅为Web3带来了新的可能性,还推动了智能化、透明化、自治化等特点的实现。本文将探讨…...