![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
睡醒的土豆
这个作者很懒,什么都没留下…
展开
-
JAVA异常代码-事务回滚的使用方法
导入依赖<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>0.11.0.0</version></dependency>假设这是一个service类的片段try{//出现异常} cat.原创 2021-01-08 12:05:55 · 2030 阅读 · 0 评论 -
多线程设计模式-Count Down设计模式
Count Down设计模式jdk自带的阻塞主线程模式,类似于join的功能:通过统计执行线程的个数,来判断执行线程是否执行完成,主线程阻塞package com.ln.concurrent.chapter14;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter14 * @Name:JDKCountDown * @Author:linianest * @CreateTime:2021/1/4原创 2021-01-04 11:09:09 · 89 阅读 · 0 评论 -
多线程设计模式-生产者消费者模式(Proudcer-consumer)
生产者消费者模式(Proudcer-consumer)多线程共享资源,生产者生产到消息队列中(大小限制),消费者从中消费消费数据,如果生产者过快,当满了队列后,生产者休眠,如果队列为空,消费者休眠消息体package com.ln.concurrent.chapter13;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter13 * @Name:Message * @Author:liniane原创 2021-01-03 18:21:39 · 195 阅读 · 2 评论 -
多线程设计模式- Balking设计模式
Balking设计模式使用场景:当你去小酒馆消费,当你召唤服务生后,有好几个服务生看到,当一个远些的服务生正准备去服务时,近些的服务生发现后去服务,远一些的服务生发现后,就放弃此次服务(任务数据的状态已经发生改变)package com.ln.concurrent.chapter12;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter12 * @Name:BalkingData * @Autho原创 2021-01-03 17:36:21 · 128 阅读 · 1 评论 -
多线程设计模式-高并发请求缓存模式(Guarded Suspension)
高并发请求缓存队列设计模式一,什么是Guarded Suspension模式如果执行现在的处理会造成问题,就让执行处理的线程等待。这种模式通过让线程等待来保证实例的安全性二,实现一个简单的线程间通信的例子一个线程(ClientThread)将请求(Request)的实例传递给另外一个线程(ServerThread)Request:线程实例RequestQueue:存放请求(Request)实例的队列ClientThread:把线程实例放到队列中ServerThread:从队列中取线程示例示原创 2021-01-03 15:49:51 · 176 阅读 · 0 评论 -
多线程设计模式-未来者设计模式(Future)
未来者设计模式(Future)定义接口,返回任意类型的结果package com.ln.concurrent.chapter8;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter8 * @Name:FutureTask * @Author:linianest * @CreateTime:2020/3/25 14:56 * @version:1.0 * @Description TODO:定原创 2021-01-02 15:57:47 · 304 阅读 · 2 评论 -
多线程设计模式-不可变对象设计模式
不可变对象设计模式无锁状态的设计,比有锁的设计模式减少加锁和释放锁的时间消耗不可变对象一定是线程安全的:里面的任何属性或者引用类型的属性都不能被修改可变对象不一定是线程不安全的:StringBufferFinal关键字1、final修饰的成员变量只能初始化一次赋值。1:直接赋值 2:构造函数中赋值final修饰的成员变量是基本类型,不可被修改,引用类型也如此,地址不可被修改,但是引用对象里面的数据是可以被修改的2、final修饰的类,是不可被继承的,成员方法都会被隐式指定为final类型方原创 2021-01-02 11:12:22 · 128 阅读 · 0 评论 -
Java设计模式-单例模式实际应用场景
单例模式应用的场景单例模式应用的场景一般发现在以下条件下: 资源共享的情况下,避免由于资源操作时导致的性能或损耗等,如日志文件,应用配置。确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例,这个类称为单例类,单例模式是一种对象创建型模式。Windows的Task Manager(任务管理器)、Recycle Bin(回收站)、网站计数器单例模式应用的场景一般发现在以下条件下:1、资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如上述中的日志文件,应用配置。2、控制资源的情况原创 2021-01-02 10:19:41 · 3043 阅读 · 6 评论 -
多线程设计模式-多线程读写锁分离模式
多线程读写锁分离模式定义共享数据缓存区buffer,有线程往缓存区写数据,有线程从缓存区读取数据,读写锁分离读写锁:为了更高效的读写数据,将锁分为两种,读数据是读锁,可以并行化多线程执行,写数据是写锁,只能串行化。READWriteREADNYWriteYY读写锁ReadWriteLock/** * @ClassName:ReadWriteLock * @Author:linianest * @CreateTime:2020/3/24 11:06 *原创 2021-01-02 10:04:35 · 182 阅读 · 2 评论 -
多线程设计模式-单线程执行模式
3、单线程执行模式场景:有一个门,记录每次进入们的用户的姓名和来历package com.ln.concurrent.chapter5;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter5 * @version: 1.0 *//** * @ClassName:Gate * @Author:linianest * @CreateTime:2020/3/24 9:06 * @version原创 2021-01-02 08:57:49 · 185 阅读 · 1 评论 -
多线程设计模式-观察者模式
多线程观察者模式定义观察者事件公共接口package com.ln.concurrent.chapter4;/** * @ProjectName: java-concurrency * @Package: com.ln.concurrent.chapter4 * @Name:LifeCycleListener * @Author:linianest * @CreateTime:2021/1/1 17:30 * @version:1.0 * @Description TODO: 定义观察原创 2021-01-01 17:51:30 · 189 阅读 · 0 评论 -
多线程设计模式-单线程观察者
单线程观察者模式/** * @ClassName:Subject * @Author:linianest * @CreateTime:2020/3/23 9:38 * @version:1.0 * @Description TODO: 观察者观察的主题 */public class Subject { List<Observer> observers = new ArrayList<>(); private int state; publ原创 2021-01-01 17:49:29 · 88 阅读 · 0 评论 -
设计模式-单例模式
1、单例模式饿汉式缺点:不能懒加载/** * @ClassName:SingletonObject1 * @Author:linianest * @CreateTime:2020/3/21 10:40 * @version:1.0 * @Description TODO: 单例设计模式:饿汉式 */public class SingletonObject1 { private static final SingletonObject1 instance = new Singlet原创 2020-12-31 18:16:45 · 84 阅读 · 0 评论 -
Java设计模式-策略模式实际应用场景
Java设计模式-策略模式实际应用场景容错恢复机制容错恢复机制是应用程序开发中非常常见的功能。那么什么是容错恢复呢?简单点说就是:程序运行的时候,正常情况下应该按照某种方式来做,如果按照某种方式来做发生错误的话,系统并不会崩溃,也不会就此不能继续向下运行了,而是有容忍出错的能力,不但能容忍程序运行出现错误,还提供出现错误后的备用方案,也就是恢复机制,来代替正常执行的功能,使程序继续向下运行。 举个实际点的例子吧,比如在一个系统中,所有对系统的操作都要有日志记录,而且这个日志还需要有管理界面,这种原创 2020-12-26 18:48:55 · 306 阅读 · 0 评论