前两天看spring Event 与Listener 一直不知道到底能用在什么地方,就从本质上的区别来思考,传统的方式就是过程处理,一个完成调用另一个处理,Event和Listener则是把前者和后者分开,达到一种解耦,考虑到它本事就是发布订阅模式,所以网上找到这篇文章,看了彻底明白了,跟我理解我完全一致。
请阅读:http://blog.sina.com.cn/s/blog_86be1b7c0100vcw6.html
发布订阅就是为了解耦,把复杂的关系得到控制,是发布端relase了,接收端也根据自己感兴趣的事件处理自己相关的业务。
对于单线程业务,没有事物控制顾虑,
对于多线程业务,比如网页注册后,发短信,可能是另起线程发短信。也不用去控制事物,之前的顾虑仔细一想,也没有了,ok。哈哈
转自:http://blog.sina.com.cn/s/blog_86be1b7c0100vcw6.html
一、 订阅杂志
我们很多人都订过杂志,其过程很简单。只要告诉邮局我们所要订的杂志名、投递的地址,付了钱就OK。出版社定期会将出版的杂志交给邮局,邮局会根据订阅的列表,将杂志送达消费者手中。这样我们就可以看到每一期精彩的杂志了。
仔细思考一下订杂志的过程,我们会发现这样几个特点:
1、 消费者订杂志不需要直接找出版社;
2、 出版社只需要把杂志交给邮局;
3、 邮局将杂志送达消费者。
邮局在整个过程中扮演了非常重要的中转作用,在出版社和消费者相互不需要知道对方的情况下,邮局完成了杂志的投递。
二、 发布-订阅消息模式
刚刚讲了订阅杂志,下面我们会讲传统调用模式演化到发布-订阅消息模式。
有些网站在注册用户成功后发一封激活邮件,用户收到邮件后点击激活链接后才能使用该网站。一般的做法是在注册用户业务逻辑中调用发送邮件的逻辑。这样用户业务就依赖于邮件业务。如果以后改为短信激活,注册用户业务逻辑就必须修改为调用发送短信的逻辑。如果要注册后给用户加点积分,再加一段逻辑。经过多次修改,我们发现很简单的注册用户业务已经越来越复杂,越来越难以维护。相信很多开发者都会有类似痛苦的经历。
即使用户业务实现中对其他业务是接口依赖,也避免不了业务变化带来的依赖影响。怎么办?解耦!将注册用户业务逻辑中注册成功后的处理剥离出来。
再回头看看“订阅杂志”,如果没有邮局,出版社就必须自己将杂志送达所有消费者。这种情形就和现在的注册用户业务一样。我们发现问题了,在用户业务和其他业务之间缺少了邮局所扮角色。
我们把邮局抽象成一个管理消息的地方,叫“消息管理器”。注册用户成功后发送一个消息给消息管理器,由消息管理器转发该消息给需要处理的业务。现在,用户业务只依赖于消息管理器了,它再也不会为了注册用户成功后的其他处理而烦恼。
注册用户的改造就是借鉴了“订阅杂志”这样原始的模式。我们再进一步抽象,用户业务就是消息的“生产者”,它将消息发布到消息管理器。邮件业务就是消息的“消费者”,它将收到的消息进行处理。邮局可以订阅很多种杂志,杂志都是通过某种编号来区分;消息管理器也可以管理多种消息,每种消息都会有一个“主题”来区分,消费者都是通过主题来订阅的。
发布-订阅消息模式已经呈现在我们面前,利用它可以产生更灵活、更松散耦合的系统。
分享到:
相关推荐
Spring AOP,即Spring的面向切面编程模块,是Spring框架的重要组成部分,它允许开发者在不修改源代码的情况下,对程序进行功能增强或统一处理。在这个主题中,我们主要关注四个核心的jar包,它们是实现Spring AOP...
Spring 4.x 是一个重要的Java框架,专注于简化企业级应用程序开发。这个版本的Spring框架引入了许多新特性,改进和优化,以适应不断变化...无论是传统的MVC模式,还是现代的微服务架构,Spring 4.x都能提供有力的支持。
【标题】"Maven 整合SringMVC及MyBatis" 在现代Java开发中,Maven、SpringMVC和MyBatis是常见的技术栈,它们分别负责项目构建、Web层控制和数据访问。Maven作为一个强大的项目管理工具,能够帮助开发者管理依赖、...
本项目是一个基于Java源码的SSM框架医院预约挂号系统,旨在利用现代信息技术优化医院的挂号流程,提升患者就医体验。系统采用了Spring、Spring MVC和MyBatis三大框架技术,实现了前后端的分离与高效交互。主要功能包括用户注册与登录、医生信息查询、预约挂号、挂号记录查看以及系统管理等。用户可以通过系统便捷地查询医生的专业背景和出诊时间,并根据自己的需求进行预约挂号,避免了长时间排队等候的不便。系统还提供了完善的挂号记录管理,用户可以随时查看自己的预约情况,确保就医计划的顺利执行。此外,系统管理模块支持管理员对医生信息和挂号数据进行维护和管理,确保系统的稳定运行和数据的准确性。该项目不仅提升了医院的运营效率,也为患者提供了更加便捷的服务体验。项目为完整毕设源码,先看项目演示,希望对需要的同学有帮助。
内容概要:本文探讨了通过建模前后脑区之间的因果动态关系来识别阿尔茨海默病患者与对照组的显著不同特征,从而协助临床诊断。具体方法是利用主动力模式(PDM)及其相关非线性函数(ANF),并采用Volterra模型和Laguerre展开估计来提取全局PDM。实验结果表明,特别是对应于delta-theta和alpha频带的两个特定PDM的ANF可以有效区分两组。此外,传统信号特征如相对功率、中值频率和样本熵也被计算作为对比基准。研究发现PDM和传统特征相结合能实现完全分离患者和健康对照。 适合人群:医学影像和神经科学领域的研究人员,临床医生以及对脑电信号处理感兴趣的学者。 使用场景及目标:本研究旨在为阿尔茨海默病提供一种客观、无创且经济有效的辅助诊断手段。适用于早期诊断和监测疾病进展。 阅读建议:本文重点在于PDM模型的构建及其在阿尔茨海默病脑电数据中的应用。对于初学者,建议先熟悉脑电信号的基本概念和Volterra模型的基本理论。对于有经验的研究人员,重点关注PDM提取方法和分类性能评估。
ST traction inverter
内容概要:本文介绍了WebRTC(Web Real-Time Communication)的发展背景和技术特点。WebRTC是一种用于浏览器和其他应用程序实现实时音频、视频和数据通信的技术栈。自2011年被纳入Chrome项目以来,WebRTC已经从一种提供基础通话能力的工具,发展成为支持多种应用场景的强大平台,如云游戏、AR/VR体验和大规模直播服务。文章还详细解释了WebRTC的关键组件,包括ICE协议、DTLS与SRTP安全协议、编解码器标准以及数据通道功能。 适合人群:对实时通信技术感兴趣的软件开发者、IT专业人员、网络安全专家。 使用场景及目标:帮助企业构建自己的RTC解决方案,提升用户体验;研究RTC相关技术的发展趋势;促进互联网应用创新。特别是在疫情期间,WebRTC使得远程协作变得更加便捷。 其他说明:文中提到,WebRTC不仅促进了各种新型交互服务的出现,也为全球范围内的沟通交流提供了重要支撑。
2023-04-06-项目笔记-第三百六十一阶段-课前小分享_小分享1.坚持提交gitee 小分享2.作业中提交代码 小分享3.写代码注意代码风格 4.3.1变量的使用 4.4变量的作用域与生命周期 4.4.1局部变量的作用域 4.4.2全局变量的作用域 4.4.2.1全局变量的作用域_1 4.4.2.359局变量的作用域_359- 2024-12-28
资源说明: 1:29页图文详解文档(从零开始项目全套环境工具安装搭建调试运行部署,保姆级图文详解)。 2:32页毕业设计论文,万字长文,word文档,支持二次编辑。 3:24页答辩ppt,pptx格式,支持二次编辑。 4:工具环境、ppt参考模板、相关教程资源分享。 5:资源项目源码均已通过严格测试验证,保证能够正常运行,本项目仅用作交流学习参考,请切勿用于商业用途。 6:项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通。 内容概要: 本系统基于 B/S 网络结构,在 IDEA 中开发。服务端用 Java 并借 Spring Boot 框架搭建后台。前台采用支持 HTML5 的 VUE 框架。用 MySQL 存储数据,可靠性强。 能学到什么: 理解 B/S 结构在分布式系统优势,熟练运用 IDEA 及相关工具流程开发 Java 项目。后端可掌握 Java 编程技巧,学会用 Spring Boot 搭建后台,体会便利以提升效率、专注业务。前端能掌握 VUE 框架构建交互界面,还会使用 MySQL 存储管理数据。此外,能了解前后端数据交互,掌握打包部署流程。
c语言坑爹大冒险
内容概要:本文提出了一种用于视频序列中对象跟踪的层次模型融合(Hierarchical Model Fusion, HMF)框架。扩展了贝叶斯跟踪方程,以应对多模态分布的挑战,并开发了一种基于粒子滤波器的高效算法。该框架通过分层更新多个对象模型,减少了计算复杂度,同时提供了一种自适应方法来处理对象外观变化。实验结果验证了该方法在各种困难条件下的有效性,包括背景杂乱、光照变化、部分遮挡等。 适合人群:从事计算机视觉、目标检测与跟踪研究的专业人士,以及对机器学习特别是粒子滤波方法感兴趣的研究生及以上水平的研究人员。 使用场景及目标:适用于需要在复杂的现实环境中进行目标跟踪的应用,如智能监控、人机交互等。目标是提高跟踪的鲁棒性和效率。 其他说明:论文详细介绍了HMF框架的理论基础和具体实现步骤,并与其他常见的跟踪算法进行了对比实验,展示了其优越性能。
本项目是一个基于Java源码的SSM框架人事员工考勤签到请假管理系统,旨在为企事业单位提供一个高效、便捷的人事管理解决方案。系统集成了员工考勤、签到、请假等多项功能,通过自动化的数据处理和管理,大大减轻了人力资源部门的工作负担。 系统采用SSM框架(Spring+Spring MVC+MyBatis)进行开发,确保了系统的稳定性和可扩展性。主要功能包括员工信息管理、考勤记录管理、签到签退管理、请假申请与审批、考勤统计与分析等。通过这些功能,系统能够实时监控员工的出勤情况,自动生成考勤报表,并支持灵活的请假审批流程,满足不同企业的个性化需求。 项目为完整毕设源码,先看项目演示,希望对需要的同学有帮助。
智慧林业的兴起与内涵 智慧林业,作为林业现代化的重要标志,是信息技术在林业领域的深度融合与应用。它不仅仅是技术的堆砌,更是林业管理方式的根本性变革。智慧林业强调集中展现、数据整合、万物互联、人工智能、云计算等先进技术的综合运用,以实现林业资源的高效监管、灾害的及时预警和生态的可持续发展。通过数据分析和智能分析,智慧林业能够实现对林业资源的精确掌握和科学规划,为决策者提供强有力的数据支持。 在智慧林业的视角下,林业资源的监管变得更加智能化和精细化。利用卫星遥感、无人机巡查、物联网监测等手段,可以实现对林业资源的全天候、全方位监控。同时,结合大数据分析和人工智能技术,可以对林业数据进行深度挖掘和分析,发现潜在的风险和问题,为林业资源的保护和管理提供科学依据。 智慧林业的构建与管理 智慧林业的构建是一个系统工程,需要从多个方面入手。首先,需要建立完善的林业信息化基础设施,包括网络、数据中心、应用平台等。其次,要推动林业数据的整合和共享,打破信息孤岛,实现数据的互联互通。此外,还需要加强林业信息化人才的培养和引进,为智慧林业的发展提供有力的人才保障。 在智慧林业的管理方面,需要建立科学的管理体系和运行机制。一方面,要加强林业信息化的标准化建设,制定统一的数据标准和交换规范,确保数据的准确性和一致性。另一方面,要建立完善的信息安全体系,保障林业数据的安全和隐私。同时,还需要推动林业信息化的创新和应用,鼓励企业和科研机构积极参与智慧林业的建设和发展。 在具体的管理实践中,智慧林业可以通过建立智能预警系统、虚拟现实展示平台、数据分析应用平台等,实现对林业资源的实时监测、预警和决策支持。这些平台不仅能够提高林业管理的效率和准确性,还能够增强公众的参与感和满意度,推动林业事业的可持续发展。 智慧林业的典型应用与前景展望 智慧林业已经在全球范围内得到了广泛应用。例如,在德国,FIRE-WATCH林业火灾自动预警系统的应用有效提高了火灾的预警和响应能力;在美国,利用卫星和无人机进行林业资源的监测和灾害预警已经成为常态;在加拿大,智慧林业技术的应用也取得了显著成效。 在中国,智慧林业的应用也在不断深入。通过智慧林业系统,可以实现对林业资源的精准监管和高效利用。例如,云南昆明的平安森林监控项目通过视频监控和数据分析技术,有效提高了森林资源的保护和管理水平;西藏林业厅木材检查站项目则通过信息化手段实现了对木材运输的全程监管和追溯。 展望未来,智慧林业将继续在林业现代化进程中发挥重要作用。随着物联网、大数据、人工智能等技术的不断发展,智慧林业的应用将越来越广泛和深入。通过不断创新和应用,智慧林业将推动林业资源的可持续利用和生态文明的建设,为人类的可持续发展做出更大贡献。同时,智慧林业的发展也将为写方案的读者提供丰富的灵感和案例借鉴,推动更多创新方案的涌现。
本项目是一个基于微信小程序的在线考试系统,名为“云上考场”。该项目旨在为教育机构和学校提供一个便捷、高效、安全的在线考试平台,以便更好地服务于教师和学生。系统的主要功能包括用户管理、题库管理、试卷生成、在线考试、自动评分以及成绩统计等。通过这些功能,教师可以轻松地创建和管理试卷,学生则可以在规定的时间内完成考试并查看成绩。 在技术架构上,该项目采用了微信小程序作为前端,后端则使用了云开发技术,实现了数据的实时存储和处理。此外,系统还引入了权限管理机制,确保考试过程的安全性和公正性。通过这个项目,学生和教师可以更加便捷地进行考试和教学活动,同时也为教育信息化提供了一个新的解决方案。 项目为完整毕设源码,先看项目演示,希望对需要的同学有帮助。
本项目是一个基于微信小程序的一次性环保餐具销售系统,旨在通过线上平台推广和销售环保餐具,提高公众对环保餐饮的认知度和参与度。系统主要功能包括用户注册与登录、餐具商品展示、在线购买、订单管理、支付接口集成以及用户评价反馈等。用户可以在小程序首页浏览推荐的热门环保餐具,通过搜索功能查找特定商品,查看详细信息并加入购物车。系统支持多种支付方式,确保交易的安全便捷。开发者采用了微信小程序框架,结合云开发技术,实现了数据的高效存储和处理,优化了用户的使用体验。项目还包括后台管理系统,方便商家管理商品信息和订单处理。通过这个系统,商家能够更好地管理销售流程,用户也能更方便地选择和使用环保餐具。项目为完整毕设源码,先看项目演示,希望对需要的同学有帮助。
c语言扔香蕉的大猩猩
内容概要:本文探讨了基于WebRTC(Web实时通信)的应用程序的质量体验(QoE)。文章详细分析了不同WebRTC拓扑结构对用户体验的影响,提出了用于估计WebRTC应用QoE的关键性能指标(KPI),并进行了系统文献回顾来评估当前的研究现状和技术方法。主要贡献在于深入理解和建模QoE,并提供了一套评估QoE的方法。 适合人群:具备一定网络和多媒体技术背景的研发人员、研究WebRTC应用质量的学者和工程技术人员。 使用场景及目标:本研究旨在为开发者和研究人员提供一套完整的QoE评估方法和工具,帮助他们优化WebRTC应用程序的性能,提升最终用户的满意度。具体目标包括:①理解不同的WebRTC拓扑结构对QoE的影响;②识别关键的QoE评估参数;③制定有效的监测和控制策略,以实现实时通信的最佳QoE。 其他说明:文中提到的关键性能指标包括建立通话时间(tsetup)、端到端延迟(de2e)、音频质量(Qa)、视频质量(Qv)和音视频质量(Qav),这些都是评估WebRTC应用QoE的重要因素。此外,文章还介绍了当前主流的QoE评估方法及其优缺点。
内容概要:本文提出了一种新的 Retinex 图像增强算法,它解决了经典算法中的不足之处,尤其是光照分量估计准确性的问题。新算法通过分解全局光照和局部光照,使处理后的图像亮度和细节表现更加优异,色彩保真度显著提升,适用于高动态范围图像及雾天退化图像的处理。 适合人群:从事图像处理、机器视觉相关研究和技术开发的专业人士及研究人员。 使用场景及目标:用于图像增强处理场合,特别是在需要恢复图像真实色彩、提高图像亮度、增加对比度的情况下。主要应用包括但不限于:医学图像处理、安防监控视频、户外摄影等领域。通过对不同条件下的图片进行测试证明,该算法能够提供更自然的色彩再现和更高的视觉质量。 其他说明:相较于传统Retinex算法和其他改进算法(如MSRCR),新方法通过精准估计照明组件,克服了色彩失真和饱和度下降的问题。同时,文中给出了具体的算法实现步骤及其参数选择方法,具有很高的实用价值。此外,通过实验对比展示了该算法与其他现有技术相比的优势所在。
【端口+防火墙】获取教学.mp4
本项目是一个基于微信小程序的智能社区服务小程序,旨在为社区居民提供便捷、高效的生活服务体验。通过这款小程序,居民可以轻松管理自己的社区生活,包括但不限于物业缴费、报修服务、社区活动报名等。此外,小程序还集成了周边商业信息查询、邻里互助平台等功能,进一步增强了社区的互联互通和居民之间的互动交流。 技术框架方面,项目采用了微信小程序原生开发技术,结合了云开发能力,实现了数据的实时更新与存储。后台管理系统则使用了Node.js进行开发,确保了系统的稳定性和扩展性。项目的开发不仅提升了社区管理的智能化水平,也为居民带来了更加便捷的生活服务体验。 项目为完整毕设源码,先看项目演示,希望对需要的同学有帮助。