自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(10)
  • 收藏
  • 关注

原创 java设计模式之观察者模式

/ 3.如果观察者依赖于主题的状态并且主题以意外的方式更改,则观察者可能处于不一致的状态。// 1.对象之间的松耦合,使得可以轻松添加或删除观察者,而不影响主题或其他观察者。// 2.支持开放/封闭原则,允许添加新的观察者而不修改主题。// 1.主题可能发送对某些观察者不相关的通知,导致资源浪费。// 2.通知观察者的顺序可能很重要,但该模式不支持此功能。// 观察者模式允许对象在另一个对象的状态更改时得到通知。// 3.支持单一职责原则,将主题和观察者的关注点分离。

2023-04-18 11:38:22 82

原创 java设计模式之责任链模式

1.降低耦合度,将请求的发送者和接收者解耦;2.简化了对象,使得对象不需要知道链的结构;3.增强了系统的可扩展性,可以增加新的请求处理类;4.增加新的请求处理类很方便,无需修改原有代码;5.灵活性增强,可以根据需要自由组合链和具体处理类;6.可以对请求的处理顺序进行灵活的控制。:1.不能保证每个请求一定被处理;2.对于比较长的责任链,请求的处理可能涉及多个处理对象,系统性能将受到一定影响;3.责任链建立的合理性要靠客户端来保证,增加了客户端的复杂性;4.可能会造成循环调用,导致系统陷入死循环。

2023-04-18 11:29:18 90

原创 java设计模式之适配器模式

缺点:对于Java、C#等不支持多重继承的语言,一次最多只能适配一个适配者类,而且目标抽象类只能为抽象类,不能为具体类,其使用有一定的局限性,不能将一个适配者类和它的子类都适配到目标接口。优点:可以适配多个不同的适配者和适配目标,且适配者和适配目标之间无需继承或者实现特定的接口。同时,由于适配器和适配者之间是关联关系,所以如果适配者的接口发生改变,适配器也需要做相应的修改。优点:可以适配多个不同的适配者和适配目标,且适配者和适配目标之间无需继承或者实现特定的接口。

2023-04-18 11:22:25 90

原创 java设计模式之五种单例模式

3.双重校验锁单例模式。4.静态内部类单例模式。

2023-04-18 11:14:32 63

原创 设计模式之建造者+策略模式

2. 建造者模式将对象的创建过程与对象本身分离开来,可以使用相同的创建过程来得到不同的产品对象,也可以通过相同的产品建造过程得到不同的产品,方便扩展。* 1. 建造者模式将复杂产品的创建过程封装起来,使得用户只需要知道所需建造者的类型即可,无须关心产品对象的具体创建过程,大大降低了系统的耦合度。* 2. 策略模式将算法的使用与算法的实现分离开来,使得算法的使用方便修改和替换,也方便单元测试。* 3. 建造者模式通过组合不同的建造者和不同的零件,可以创建出更加复杂功能的产品对象。

2023-04-18 11:07:33 144

原创 java设计模式之工厂模式

/ 3. 工厂模式可以帮助我们遵循开放封闭原则,因为我们可以通过添加新的工厂方法来创建新的对象类型,而不需要修改现有的代码。// 2. 工厂模式可以帮助我们隐藏对象的创建细节,因为客户端只需要知道如何使用工厂方法来创建对象即可。// 1. 工厂模式可以帮助我们在创建对象时更加灵活,因为我们可以通过工厂方法来创建不同类型的对象。// 在工厂模式中,我们创建对象而不是直接实例化对象,这样可以帮助我们在创建对象时更加灵活。// 下面是一个简单的工厂模式示例,其中我们使用工厂方法来创建不同类型的汽车对象。

2023-04-18 11:02:53 60

原创 java常用的设计模式

职责链模式:将请求的发送者和接收者解耦,使得多个对象都有机会处理这个请求。* 适配器模式:将一个类的接口转换成客户希望的另一个接口。* 观察者模式:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新。* 工作中最常用的设计模式有:单例模式、工厂模式、适配器模式、装饰器模式、观察者模式、策略模式、职责链模式。* 工厂模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。* 单例模式:确保一个类只有一个实例,并提供全局访问点。

2023-04-18 10:59:49 89 1

原创 volatile到底如何保证可见性和禁止指令重排序的

摘自《深入理解Java虚拟机》“观察加入volatile关键字和没有加入volatile关键字时所生成的汇编代码发现,加入volatile关键字时,会多出一个lock前缀指令”  lock前缀指令实际上相当于一个内存屏障(也成内存栅栏),内存屏障会提供3个功能:  1)它确保指令重排序时不会把其后面的指令排到内存屏障之前的位置,也不会把前面的指令排到内存屏障的后面;即在执行到内存屏障这句指令时,在它前面的操作已经全部完成;  2)它会强制将对缓存的修改操作立即写入主存;  3)如果是写操

2022-03-09 16:11:45 258

原创 线程池参数配置详解

/** * Creates a new {@code ThreadPoolExecutor} with the given initial * parameters. * * @param corePoolSize the number of threads to keep in the pool, even * if they are idle, unless {@code allowCoreThreadTimeOut} is set .

2022-02-21 18:10:49 3795 1

原创 JAVA多线程--信号量(Semaphore)

简介信号量(Semaphore),有时被称为信号灯,是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,...

2022-02-10 15:48:47 267

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除