当前位置: 首页 > news >正文

项目学习总结001

1. 策略模式和工厂模式

https://mp.weixin.qq.com/s/RG-h7r69JyKUlBZylJJIFQ
在软件开发中也常常遇到类似的情况,实现某一个功能有多个途径,此时可以使用一种设计模式来使得系统可以灵活地选择解决途径,也能够方便地增加新的解决途径。这就是策略模式。

策略模式(Strategy Pattern),指的是定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化。

从上面的示例可以看出,策略模式仅仅封装算法,提供新的算法插入到已有系统中,策略模式并不决定在何时使用何种算法。在什么情况下使用什么算法是由客户端决定的。

但是,上面还遗留了一个问题,那就是UserPayServiceStrategyFactory中用来保存所有的策略类的实例的Map是如何被初始化的?各个策略的实例对象如何塞进去的呢?

Spring Bean的注册
还记得我们前面定义的UserPayServiceStrategyFactory中提供了的register方法吗?他就是用来注册策略服务的。

接下来,我们就想办法调用register方法,把Spring通过IOC创建出来的Bean注册进去就行了。

这种需求,可以借用Spring种提供的InitializingBean接口,这个接口为Bean提供了属性初始化后的处理方法,它只包括afterPropertiesSet方法,凡是继承该接口的类,在bean的属性初始化后都会执行该方法。

只需要每一个策略服务的实现类都实现InitializingBean接口,并实现其afterPropertiesSet方法,在这个方法中调用UserPayServiceStrategyFactory.register即可。

这样,在Spring初始化的时候,当创建VipPayService、SuperVipPayService和ParticularlyVipPayService的时候,会在Bean的属性初始化之后,把这个Bean注册到UserPayServiceStrategyFactory中。

2、抽象类和接口

分为两个层次:语法层面和设计层面;
语法层面:接口是多继承,抽象类是单继承,
抽象类有构造方法,接口没有,
抽象类中可以有成员方法的具体实现细节,接口只能有抽象方法
成员变量
设计层面:抽象类是对事物的抽象,整体类,接口是针对一种行为规范,是部分类(行为)的抽象,
抽象类是模版设计,接口类是辐射式设计,如果增加一个方法,抽象类只需要改它本身,而对接口而言,继承该接口的所有实现类都需要改动。

3. websocket实现web消息推送(基于Java注解实现websocket服务终端)

添加链接描述

4. 分布式事务和分布式锁

目标不同
分布式事务旨在保证跨服务操作的ACID属性,确保所有操作要么全部成功,要么全部失败。
分布式锁旨在解决并发访问共享资源的问题,保证资源的互斥访问。
实现机制不同
分布式事务通常涉及到多个服务之间的协调和通信,可能需要使用复杂的协议来达成一致。
分布式锁则更加关注于资源访问的控制,通常通过锁的获取和释放来实现。
应用场景不同
分布式事务适用于需要跨服务进行数据一致性的场景。
分布式锁适用于保护单一资源免受并发访问的场景。

5. JUC(Java并发工具包)是Java提供的一个用于处理线程的工具包。

JUC(Java并发工具包)是Java提供的一个用于处理线程的工具包,它包含了多种常用的并发工具类,这些工具类可以帮助开发人员更加高效地编写多线程程序。下面将介绍一些JUC中的常用工具类:

CountDownLatch
CountDownLatch是一个同步工具类,用于协调多个线程之间的同步操作。它允许一个或多个线程等待其他线程完成各自的操作。CountDownLatch的构造函数接受一个整数参数,表示计数器的初始值。每个线程在完成自己的操作后,会调用CountDownLatch的countDown()方法,将计数器减一。当计数器减到0时,等待在CountDownLatch上的线程就可以恢复执行。

6. •并发和多线程关系紧密,多线程是实现并发编程的重要技术途径,通过创建多个线程并行执行任务,可以实现系统级别的并发运行。

•异步和多线程也是相互关联的,多线程编程中可以实现异步操作,例如一个线程执行IO操作(如网络请求)时不阻塞主线程,而是通过回调或Future机制在操作完成时通知主线程,这就是典型的异步编程场景。

区别:
•并发关注的是任务的执行方式,强调多个任务看起来同时运行的效果,而不论底层是如何实现的(可能是多线程、协程或者其他技术)。
•多线程特指在单一进程中同时运行多个执行线程的技术细节。
•异步关注的是任务执行的流程控制,强调任务之间互不影响,无需等待即可继续执行的特点,它既可以应用于单线程环境(如事件驱动编程),也可以应用于多线程环境。

7. 在 Java 中,锁机制是实现线程同步和并发控制的重要手段,它可以确保在多线程环境下对共享资源的安全访问。

相关文章:

  • 《算法笔记》3.3小节——入门模拟->图形输出
  • Android学习总结之OKHttp拦截器和缓存
  • 【leetcode hot 100 152】乘积最大子数组
  • OpenCV图像形态学详解
  • 树莓派4B配置wifi热点,可访问http协议
  • 不再卡顿!如何根据使用需求挑选合适的电脑内存?
  • ViewModel vs AndroidViewModel:核心区别与使用场景详解
  • 云服务器10M带宽实际速度能达到多少?
  • 大唐杯省赛安排来了!还有7天,该如何准备?
  • BERT、T5、ViT 和 GPT-3 架构概述及代表性应用
  • 《从零搭建Vue3项目实战》(AI辅助搭建Vue3+ElemntPlus后台管理项目)零基础入门系列第十篇:商品管理功能实现
  • MOS管的发热原因和解决办法
  • TGRS 2024 | 基于光谱相关的高光谱图像超分辨率融合网络
  • 开源Cursor替代品——Void
  • 二维偏序-蓝桥20102,没写完
  • 996引擎-源码学习:PureMVC Lua 中的 Facade 类
  • 【状态适配器模式:级联选择器多状态数据处理完整解决方案】
  • layui中transfer两个table展示不同的数据列
  • 基于RV1126开发板实现多路网络摄像头取流方案
  • 设计模式:策略模式 - 消除复杂条件判断的利器
  • 唐山市住建局官方网站/蚂蚁bt
  • 网上做问卷报酬不错的网站是/软文广告投放平台
  • 网站的ftp管理权限是什么意思/南京 seo 价格
  • 学生做网站期末作业/10条重大新闻事件
  • 浦东新区网站优化公司/国外seo大神
  • 福州网站建设专业公司/网站建站网站