自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 21、使用AQS重写自己的锁

使用AQS重写自己的锁

2022-12-09 15:52:11 169 1

原创 18、Lock接口认识与使用

Lock接口认识与使用

2022-12-09 15:46:18 140

原创 17、jdk5提供的原子类的操作以及实现原理

原子类的操作以及实现原理

2022-12-09 15:44:25 280

原创 16、volatile的原理与使用

volatile的原理与使用

2022-12-09 15:41:53 164

原创 15、深入理解自旋锁,死锁重入锁

深入理解自旋锁,死锁重入锁

2022-12-09 15:39:42 269

原创 12、synchronized实现线程安全的原理(理论层面)

synchronized实现线程安全的原理

2022-12-09 15:33:33 300

原创 10、从线程优先级看饥饿问题

多线程合集

2022-10-29 14:39:54 135

原创 9、线程带来的风险

多线程合集

2022-10-29 14:37:31 111

原创 8、lambda并行计算

多线程合集

2022-10-29 14:36:29 239

原创 7、Spring对并发的支持

多线程合集

2022-10-29 14:35:20 185

原创 6、线程池

多线程合集

2022-10-29 14:33:35 349

原创 5、定时任务

多线程合集

2022-10-29 14:31:51 330

原创 4、带返回值的线程

多线程合集

2022-10-29 14:30:37 117

原创 3、匿名内部类

多线程合集

2022-10-29 14:27:28 108

原创 2、创建线程的第二种方式

多线程合集

2022-10-29 14:25:38 81

原创 1、创建线程的第一种方式

多线程学习合集

2022-10-29 14:24:19 111

原创 23、解释器模式

解释器(Interpreter)模式:定义一个语言的文法,并且建立一个解释器来解释该语言中的句子,这里的“语言”是指使用规定格式和语法的代码。解释器模式是一种行为型模式。public interface Expression { public int interpret(Context context); } public class Plus implements Expression { @Override public int interpret(Context conte

2021-06-22 15:01:49 91

原创 22、中介者模式

中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用public interface Mediator { public void createMediator(); public void workAll(); } public class MyMedia

2021-06-22 15:01:33 144

原创 21、访问者模式

简单来说,访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果。public interface Visitor { public void visit(Subject sub); } public class MyVisitor implements Visitor { @Override public void visit(Subject sub) { System.out.println("v

2021-06-21 09:16:06 110

原创 20、状态模式

根据这个特性,状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),代码中包含大量与对象状态有关的条件判断时,可以根据它的状态改变而改变它的相关行为。public class State { private String value; public String getValue() {

2021-06-21 09:15:51 99

原创 19、备忘录模式

何时使用:很多时候我们总是需要记录一个对象的内部状态,这样做的目的就是为了允许用户取消不确定或者错误的操作,能够恢复到他原先的状态。public class Original { private String value; public String getValue() { return value; } public void setValue(String value) { this.value = value; } public Or

2021-06-21 09:15:30 100

原创 18、命令模式

这个很好理解,命令模式的目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开,熟悉Struts的同学应该知道,Struts其实就是一种将请求和呈现分离的技术,其中必然涉及命令模式的思想!public interface Command { public void exe(); } public class MyCommand implements Command { private Receiver receiver; public MyCommand(Receiver

2021-06-21 09:15:13 78

原创 17、责任链模式

责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。Tomcat中的Filter就是使用了责任链模式...

2021-06-21 09:10:57 77

原创 16、迭代子模式

迭代子模式:迭代子模式可以顺序访问一个聚集中的元素而不必暴露聚集的内部表象。public interface Collection { public Iterator iterator(); public Object get(int i); //取得集合元素 public int size(); //取得集合大小} public interface Iterator { public Object previous(); //前移 public Obje

2021-06-21 09:10:32 102

原创 15、观察者模式

定义观察者模式:定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖它的对象都会得到通知并自动更新。意义此设计模式最重要的作用就是 解耦!将观察者与被观察者解耦,使得他们之间的依赖性更小。public interface Observer { public void update(); } public class Observer1 implements Observer { @Override public void update() { S

2021-06-21 09:10:15 80

原创 14、模板方法模式

主要思想:定义一个算法流程,将一些特定步骤的具体实现、延迟到子类。使得可以在不改变算法流程的情况下,通过不同的子类、来实现“定制”流程中的特定的步骤。public abstract class AbstractCalculator { public final int calculate(String exp,String opt){ //final 禁止重写 主方法,实现对本类其它方法的调用 int array[] = split(exp,opt); return calculate

2021-06-21 09:09:58 69

原创 13、策略模式

策略模式的决定权在用户,系统本身提供不同算法的实现,新增或者删除算法,对各种算法做封装。因此,策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可。主要思想:使不同的算法可以被相互替换,而不影响客户端的使用优点: 1、算法可以自由切换。 2、避免使用多重条件判断。 3、扩展性良好。缺点: 1、策略类会增多。 2、所有策略类都需要对外暴露。public interface ICalculator { public int calculate(String exp); } pub

2021-06-21 09:09:34 85

原创 12、享元模式

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能。这种类型的设计模式属于结构型模式,它提供了减少对象数量从而改善应用所需的对象结构的方式public class ConnectionPool { private Vector<Connection> pool; private String url = "jdbc:mysql://localhost:3306/test"; private String username =

2021-06-21 09:09:12 97

原创 11、组合模式

经典案例:系统目录结构;文件系统由目录和文件组成。每个目录都可以装内容。目录的内容可以是文件,也可以是目录。public class TreeNode { private String name; private TreeNode parent; private Vector<TreeNode> children = new Vector<TreeNode>(); public TreeNode(String name){ this.name

2021-06-18 17:10:14 92

原创 10、桥接模式

适配器:改变已有的两个接口,让他们相容。桥接模式:分离抽象化和实现,使两者的接口可以不同,目的是分离。所以说,如果你拿到两个已有模块,想让他们同时工作,那么你使用的适配器。如果你还什么都没有,但是想分开实现,那么桥接是一个选择public interface Sourceable { public void method(); } public class SourceSub1 implements Sourceable { @Override public void met

2021-06-18 17:08:14 102

原创 9、外观模式

外观模式是为了解决类与类之间的依赖关系的,像spring一样,可以将类和类之间的关系配置到配置文件中,而外观模式就是将他们的关系放在一个Facade类中,降低了类类之间的耦合度public class CPU { public void startup(){ System.out.println("cpu startup!"); } public void shutdown(){ System.out.println("cpu shutdown!"); } }

2021-06-18 17:06:53 89

原创 8、代理模式

1.静态代理public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original method!"); } } public class Proxy implements Sourceable {

2021-06-18 17:05:41 89

原创 7、装饰器模式

public interface Sourceable { public void method(); } public class Source implements Sourceable { @Override public void method() { System.out.println("the original method!"); } } public class Decorator implements Sourceable { pri

2021-06-18 17:03:51 95

原创 6、适配器模式

(1).类的适配器:/***拓展源类*/public class Source { public void method1() { System.out.println("this is original method!"); } } /***拓展目标类*/public interface Targetable { public void method1(); public void method2(); } /***适配器*

2021-06-18 16:26:28 78

原创 5、原型模式

浅复制:将一个对象复制后,基本数据类型的变量都会重新创建,而引用类型,指向的还是原对象所指向的。 深复制:将一个对象复制后,不论是基本数据类型还有引用类型,都是重新创建的。简单来说,就是深复制进行了完全彻底的复制,而浅复制不彻底。/***浅克隆*/public class Pig implements Cloneable{ private String name; private Date birthday; @Override protected Object clone() throw

2021-06-18 16:22:41 92

原创 4、建造者模式

建造者模式(Builder Pattern) 又名生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式 是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节public class Meal { private String food; private String drink; public String g

2021-06-18 16:20:30 95

原创 3、单例模式

1、某些类创建比较频繁,对于一些大型的对象,这是一笔很大的系统开销。2、省去了new操作符,降低了系统内存的使用频率,减轻GC压力。 3、有些类如交易所的核心交易引擎,控制着交易流程,如果该类可以创建多个的话,系统完全乱了。(比如一个军队出现了多个司令员同时指挥,肯定会乱成一团),所以只有使用单例模式,才能保证核心交易服务器独立控制整个流程。public class Singleton { // 持有私有静态实例,防止被引用,此处赋值为null,目的是实现延迟加载 private stati

2021-06-18 16:17:46 86

原创 2、抽象工厂模式

简介:抽象工厂模式(Abstract Factory Pattern)是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式特点:同一产品簇下的产品用同一工厂,如:机枪和机枪子弹属于同一产品簇,手枪和手枪子弹属于同一产品簇。public interface Gift { //声明产品赠品的接口,当然也可以是抽象类,同样为了简单就不声明方法了}public class GiftA implements Gift {

2021-06-18 16:11:58 124

原创 1.工厂方法模式

**简介:**工厂方法模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。**意义:**工厂的目的是为了帮我们解决创建对象实例的问题,并且工厂能够隐藏类名及对象创建的细节,让我们无需关心对象的创建。提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。缺点:如果产品类过多,要生成很多的工厂类。public interface Provider { //接口 public Sender produce(); } pu

2021-05-28 17:30:04 79

原创 0.简单工厂模式

简介:又叫做静态工厂方法(StaticFactory Method) 模式, 但不属于 23 种设计模式之一。列在此处仅作对比用。缺点:不符合开闭原则,如果你要加一个产品类C,你就要修改工厂类里面的生成产品的代码示例public interface Product { //声明类所需继承的共同接口,也可以是抽象类}public class ProductA implements Product { public ProductA() { System.out.p

2021-05-28 17:27:27 74

空空如也

空空如也

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

TA关注的人

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