fyzn12
RSS SITEMAP

Articles

  • 单例模式

    单例模式的介绍 1 单例模式的原理 确保一个类最多只有一个实例,并提供一个全局的访问点 2 单例模式的创建方式 2.1 饱汉模式(懒汉模式) public class SingleTon{ private SingleTon(){} //实例化放在静态代码块里,可提高程序的执行效率,但也可能更占空间 private final static SingleTon instance = new SingleTon(); //公共结果,获取对象的实例 public static SingleTon getInstance(){ return instance; } } 饱汉模式的优点和缺点 优点: 在多线程的情况下,可以保证SingleTon的对象唯一 缺点:在多实例或者有其他静态方法时,在启动时没有使用它的时候就已经加载好了,浪费内存。 2.2 饥汉模式 public class SingleTon{ private SingleTon(){} private static SingleTon instance = null; public static synchronized SingleTon getInstance(){ if(instance == null){ instance = new SingleTon(); } return instance; } } 饥汉模式的优点和缺点 优点:饥汉模式解决了对象没被使用但却分配了内存空间的问题
  • 工厂模式

    工厂模式的简单介绍 1 简单的工厂模式 原理:定义一个工厂类,根据不同的参数,创建并返回不同的类。其中这些类具有一个公共的父类或是一个接口。
  • 装饰者模式

    装饰者模式的简单实现 1 装饰者模式的原理 原理:动态的将新功能添加到对象上。在对象扩展方面,他比继承更具有弹性。 别人写了一篇易懂的文章装饰者模式
  • SpringBoot整合Redis使用注解实现同步缓存

    1 SpringBoot整合Redis的环境配置 1.1 添加依赖 <properties> <java.version>1.8</java.version> <druid.version>1.1.9</druid.version> <!-- mybatis的版本 --> <mybatis.version>3.4.6</mybatis.version> </properties> <dependencies> <!-- 配置web启动器--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!-- 配置mybatis--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>8.0.15</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.2.0</version> </dependency> <!-- 配置数据库连接池 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>${druid.version}</version> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> <exclusions> <!--不依赖Redis的异步客户端lettuce--> <exclusion> <groupId>io.lettuce</groupId> <artifactId>lettuce-core</artifactId> </exclusion> </exclusions> </dependency> <!
  • 观察者模式

    1 观察者模式 观察者模式(又被称为发布-订阅模式),属于行为模式的一种,他定义了一种一对多得依赖关系, 让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象, 使他们能够自动更新自己 观察者主要包括以下四个部分 Subject:抽象主题,他把所有观察者对象保存在一个集合里,可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。意思就是明星把所有的粉丝都保存在一个账号里面,粉丝数量不限,可以新增粉丝也可以拉黑粉丝。 ConcreteSubject:具体主题,该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。意思是我们的明星一有动态,就会把消息给粉丝。 Observer:抽象观察者,是观察者者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。这就是我们所有粉丝的抽象。 ConcrereObserver:具体观察者,实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态。具体每一个粉丝。