项目学习总结001

1. 策略模式和工厂模式

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

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

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

工厂模式:这个UserPayServiceStrategyFactory中定义了一个Map,用来保存所有的策略类的实例,并提供一个getByUserType方法,可以根据类型直接获取对应的类的实例。

但是,上面还遗留了一个问题,那就是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 中,锁机制是实现线程同步和并发控制的重要手段,它可以确保在多线程环境下对共享资源的安全访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值