基础
文章平均质量分 82
结构划分
苹果香蕉西红柿
这个作者很懒,什么都没留下…
展开
-
MySQL索引与EXPLAIN查看执行计划与慢查询的开启
一. MySQL 索引概述假设执行一条查询语句,在没有索引的情况下默认会通过全表搜秒,将获取到的数据与查询语句中的查询条件进行判断,假设表中的数据时百万级,效率会非常慢,所以创建索引,通过索引查询可以简单理解为为了提高查询效率,给添加一个或多个索引,创建一个像目录一样的索引文件,是存在硬盘上的mysql 索引数据结构支持 :hash, 平衡二叉树, b树, b+树等,通常采用b+树实现L...原创 2020-04-23 20:46:50 · 554 阅读 · 0 评论 -
dubbo 负载策略,容错策略等常见问题
目录一. dubbo 概述dubbo中的角色分析:dubbo 以 Zookeeper作为注册中心时的执行流程dubbo 负载均衡策略xml 方式配置负载均衡策略SpringBoot yml 文件配置 dubbo 负载配置示例dubbo 容错xml 方式配置容错重试注解方式配置容错重试二. SpringBoot 整合 dubbo 的yml配置服务提供方服务消费方yml一. dubbo 概述一款...原创 2020-04-23 20:31:29 · 884 阅读 · 0 评论 -
ZooKeeper 实现分布式锁的简单示例
目录一. 分布式锁概述二. ZooKeeper 实现分布式锁ZooKeeper 实现分布式锁原理实现分析代码示例一. 分布式锁概述在分布式环境中,服务器集群,多个jvm运行,如果使用Lock或synchronized多个jvm是无法保证线程安全的什么是分布式锁: 用来控制同一个任务的是执行,或设置任务顺序执行,保证同一时间内只有一个jvm执行某一个任务分布式锁的实现方案: 基于数据库(效...原创 2020-08-25 19:06:11 · 350 阅读 · 0 评论 -
ZooKeeper 分布式协调工具
一. Zookeeper 概述什么是Zookeeper: 分布式协调工具,(java语言编写的开源框架)Zookeeper的使用场景:注册中心(命名服务,将服务以持久节点.临时节点存入Zookeeper中),基于Zookeeper 实现负载均衡基于Zookeeper 实现分布式锁Zookeeper实现分布式配置中心,动态的管理配置文件(Apollo配置中心,SpringClou...原创 2020-04-18 16:00:12 · 198 阅读 · 0 评论 -
Lock 锁与 ReentrantReadWriteLock 源码解析
目录一. LockLock 锁与 synchronized 的区别Lock 常用方法与使用示例二. ReentrantReadWriteLock一. LockLock 锁与 synchronized 的区别两种锁都是重入锁synchronized在代码执行完毕,或抛出异常时会自动释放锁,Lock锁在代码执行完毕或抛出异常不会自动释放锁,需要手动调用unlock()方法手动释放锁Lock...原创 2020-08-25 19:10:55 · 122 阅读 · 0 评论 -
Callable与Future模式
目录使用示例Future 原理先解释使用场景: 在多线程时,使用继承Thread类,或实现Runnable接口创建线程类,重写run()方法,方法中调用需要多线程处理的代码,执行时调用start() 方法,但是会发现一个问题,run()方法没有返回值,假设逻辑代码执行完毕后需要返回值怎么办通过实现 Callable 接口创建线程类,Callable接口中的泛型就是返回值类型,重写接口中的ca...原创 2020-04-16 00:33:05 · 288 阅读 · 0 评论 -
队列基础使用示例与通过队列实现线程通信
目录一. 队列阻塞队列与非阻塞队列的区别:1. ConcurrentLinkedDeque并发非阻塞式队列2. BlockingQueue阻塞队列ArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueSynchronousQueue3. 通过队列实现线程通讯二. 线程池线程池的分类:线程池原理分析Executors 创建线程池自定义线程...原创 2020-04-15 16:54:02 · 373 阅读 · 0 评论 -
线程通信基础示例(synchronized 与 Lock + Condition实现线程通信)
目录总结使用 wait() 与 notify() 实现线程通讯的原理线程通讯示例使用 Condition 设置线程通讯总结什么是线程通讯,可以将线程分为生产者线程与消费者线程,生产者线程创建共享数据(写),给消费者线程使用(读),注意是生产一个消费一个wait() 方法: 当调用该方法时当前线程进入等待,并释放锁notify() 方法: 当调用该方法时,唤醒当前对象锁池中等待的线程, 注...原创 2020-04-15 00:26:01 · 218 阅读 · 0 评论 -
职责链模式
职责链模式职责链模式概述职责链模式解决的问题角色分析职责链模式优点代码示例源码中的职责链模式使用案例职责链模式概述职责链模式解决的问题案例 : 一个贷款审批案例,假设贷款额度小于5万时由客户负责人审核放款,当贷款额度大于5万小于10万时由项目经理负责审批,当贷款额度大于10万小于20万时由审核团队来审批问题 : 由谁来审批是通过贷款金额大小来决定的,在传统模式中,通常会使用 if - el...原创 2020-04-02 14:32:51 · 109 阅读 · 0 评论 -
解释器模式
解释器模式解释器模式概述解释器模式概述什么是解释器: 定义一个语言,并定义该语言的文法表示,再设计一个解析器来解释语言中的句子,简单来说,就是为了解释一种语言,为这个语言创建的解释器,例如java语言,C语言,各种语言都有对应的编译器进行编译,这个编译器就相当于解释器...原创 2020-04-23 21:07:49 · 81 阅读 · 0 评论 -
策略模式
策略模式通过案例了解策略模式策略模式 Strategy 基本介绍策略模式角色分析通过策略模式实现商场售卖策略模式与状态模式的区别JDK 中策略模式的使用案例通过案例了解策略模式**案例: **商场售卖,在正常情况下按照正常价格售卖,在节假日时按照打折促销价格售卖,售卖方式就可以看为是一种策略,正常售卖时使用正常策略,节假日时使用节假日策略,例如618打八折,双十一满减等策略模式 Strate...原创 2020-04-02 02:23:56 · 79 阅读 · 0 评论 -
状态模式
状态模式状态模式 State 概述基本介绍状态模式角色分析示例案例分析案例(不是太严谨,只关注设计模式)代码状态模式 State 概述基本介绍状态模式主要用来解决对象在多种状态之间转换时,不同状态,行为不同的问题,当一个对象的内在状态发生改变时,该对象的行为也会发送相应的改变,在传统模式下通常使用一个字段来标识一个类的状态,然后通过逻辑代码去判断获取相应的状态,执行相应的操作,假设后续更改...原创 2020-04-01 23:06:28 · 225 阅读 · 0 评论 -
中介者模式
中介者模式中介者模式 Mediator 概述示例根据代码分析理解JDK 中 中介者模式的使用案例中介者模式 Mediator 概述什么是中介者中介者又被称为调停者,调节者,协调者举例说明: 例如QQ发送消息给对方,例如发送短信,我们是将消息发送给QQ这个平台,通过这个平台找到接收者,这个平台就相当于中介角色协调者角色,发送消息与接收消息的双方被称为"同事",又被称为被协调者,例如当接收到某个...原创 2020-03-30 22:38:04 · 351 阅读 · 0 评论 -
备忘录模式
备忘录模式备忘录模式 Memento 概述备忘录模式示例备忘录模式 Memento 概述什么是备忘录模式提供一种状态恢复机制,可以保存某个历史时刻的状态,并且状态可以方便的恢复到某个特定的历史时刻,例如数据备份与还原,编辑与撤销,虚拟机生成快照,与根据快照进行恢复在不破坏封装性的前提下,捕获对象的内部状态,并在该对象之外保存这个状态后续将该对象恢复到原先保存的状态备忘录模式角色分析原...原创 2020-03-30 16:08:39 · 173 阅读 · 0 评论 -
观察者模式
观察者模式根据案例分析传统模式中可能存在的问题观察者模式根据案例分析传统模式中可能存在的问题案例调用第三方接口获取天气预报信息,在我方页面上进行展示,考虑问题,第三个的天气信息是定时更新的,怎么获取最新的天气,通过定时方法,定时出发调用第三方接口获取,更新到我方库中进行展示我方天气展示//我方天气展示,可以将这个类先理解为Controllerclass CurrentConditi...原创 2020-03-28 17:57:17 · 109 阅读 · 0 评论 -
迭代器模式
迭代器模式 一. 复习java提供的迭代器二. 迭代器模式概述三. 案例示例一. 复习java提供的迭代器在import java.util.Iterator 提供了迭代器接口,该接口被其子类实现并重写抽象方法,主要关注 hashNext(), next(),remove(),方法等已ArrayList集合为例,该集合继承AbstractList抽象类,在AbstractList中通过一个...原创 2020-03-27 00:54:19 · 114 阅读 · 0 评论 -
访问者模式
访问者模式 Visitor一. 根据实际案例分析传统模式中可能存在的问题二. 访问者模式讲解与示例使用访问者模式修改案例访问者模式角色分析流程图Spring 中访问者模式的使用案例一. 根据实际案例分析传统模式中可能存在的问题案例: 现有员工Employee, 管理员工ManagementEmployee, 需求,对每个员工增加奖金,每个员工的等级*100,是奖金的算法,计算每个员工的奖金,...原创 2020-03-27 00:41:16 · 102 阅读 · 0 评论 -
命令模式
命令模式 Template Method命令模式概述命令模式概述什么是命令模式: 是一种行为型设计模式,将命令与具体实现进行解耦,将命令封装为对象数据进行传递,命令只关注与"执行",“撤销执行”,而命令具体执行的是什么,有下一层的接收者根据命令对象的不同来决定命令模式的优点: 将请求与具体行为解耦,提高扩展性方便添加新的命令,可以比较容易的设置组合命令,记录命令,...原创 2020-03-25 14:24:25 · 117 阅读 · 0 评论 -
模板方法模式
模板方法模式 Template Method根据实际案例解释模板方法模式代码示例模板方法中的钩子方法Spring 中模板方法的使用案例根据实际案例解释模板方法模式案例: 生产不同口味的豆浆,现有"红豆",“黄豆”,"绿豆"三种不同口味,虽然口味不同但是生产豆浆的步骤是相同的,选择豆子- - ->添加配料- - - >浸泡豆子- - ->打碎生成豆浆模板方法模式属于行为型模...原创 2020-03-24 15:57:29 · 74 阅读 · 0 评论 -
代理模式
代理模式代理模式概述静态代理JDK动态代理代码示例Cglib动态代理Spring代理的选择代理模式与其它相关设计模式代理模式概述什么是代理模式: 为目标对象提供一种代理,通过代理控制对目标对象的访问,代理对象在发起访问的客户端与需要访问的目标对象之间起到中介的作用通过案例解释代理对象: 房客通过中介租房子,房客相当于发起访问的客户端,中介相当于代理类,房东相当于被代理的目标对象,房客只与中...原创 2020-03-24 14:00:33 · 101 阅读 · 0 评论 -
享元模式
享元设计模式 Flyweight 根据案例分析传统模式中可能存在的问题享元模式中主要关注的问题代码示例根据实际案例分析享元模式的角色及优点JDK 中享元模式的应用案例根据案例分析传统模式中可能存在的问题案例: 生成合同: 不同用户生成不同类型合同,根据合同类型,生成对应的 world 合同模板,获取用户数据填充进合同模板传统模式: 每个用户生成合同,都会去执行一次生成world合同模板的操作...原创 2020-03-23 17:41:33 · 82 阅读 · 0 评论 -
外观设计模式
外观设计模式 根据实际案例分析外观模式 Facade示例根据实际案例分析外观模式 Facade案例: 假设一个放电影功能,在播放电影时,需要放下窗帘,打开空调,打开播放机,打开音响,考虑用户观影时间较长时,提供暂停播放,窗帘上升,关闭音响,关闭空调,当播放完毕后,升起窗帘全部关闭传统模式下客户端可能需要一个一个的进行调用,客户端调用比较繁琐,外观模式: 对子系统中的接口进行分组,对一组接...原创 2020-03-23 11:26:17 · 84 阅读 · 0 评论 -
组合模式
组合设计模式 组合模式 Composite Pattern 概述组合模式示例实现思路代码示例JDK 中组合模式的应用案例组合模式 Composite Pattern 概述什么是组合模式: 部分与整体的一种层次结构型设计模式,设计单个对象与组合对象使用一致的处理方式,然客户以一致的方式处理个别对象与组合对象通过实际案例解释组合模式: 例如目录,在目录下面可能还有子目录,在子目录下方可能还有文...原创 2020-03-23 10:06:44 · 75 阅读 · 0 评论 -
装饰者模式
装饰者设计模式 什么是装饰者设计模式 DecoratorPattern根据上面点咖啡进行代码示例JDK 中装饰者设计模式使用案例什么是装饰者设计模式 DecoratorPattern在不改变对象的功能结构情况下动态的给该对象添加职责,关注与动态的,动态是可撤销的,提供不同的装饰类,通过不同的行为组合,实现职责添加,比继承方式更加灵活装饰者设计模式中角色的区分: 被装饰者,装饰者,根据需求,...原创 2020-03-22 14:40:17 · 86 阅读 · 0 评论 -
桥接模式
桥接模式 Bridge 一. 分析传统模式下可能存在的问题二. 桥接模式实现步骤一. 分析传统模式下可能存在的问题案例: 根据品牌,与样式操作手机,品牌现有"小米",“华为”,手机样式有"折叠",“滑盖”在传统模式下根据品牌样式的不同,你可能会创建不同的实体类"小米折叠",“小米滑盖”, “华为折叠”,“华为滑盖”可能存在的问题: 需要创建比较多的实体类,假设此时要增加一个"全屏"样式,...原创 2020-03-20 16:47:20 · 194 阅读 · 0 评论 -
适配器模式
适配器模式 Adapter Pattern适配器模式概述一. 类适配器模式实现要点代码示例分析类适配器模式二. 对象适配器模式什么是对象适配器代码示例三. 接口适配器模式代码示例SpringMVC框架适配器模式适用案例适配器模式概述什么是适配器模式:假设想要调用A类中的某个方法,但是该方法需要一个B类型的参数,而A类中只能拿到A类型的参数,将A类型的参数合理的转换为B类型的参数,这个转换过程...原创 2020-03-20 09:18:48 · 274 阅读 · 0 评论 -
建造者模式
根据案例分析传统模式下可能出现的问题案例建造房子,假设可以建造普通房子与高楼两种,建造步骤是: 做地基,做墙,做屋顶代码示例普通房子与高楼可以看为是两种不同的产品,抽象出公共的接口或抽象类//抽象建造者(根据产品的不同在各个产品子类中进行具体实现)abstract class AbstractHouse{ //地基 public abstract void bulidBasic...原创 2020-03-19 14:43:07 · 78 阅读 · 0 评论 -
原型模式
原型模式根据实际案例分析原型模式的优点浅克隆代码示例测试分析深克隆代码示例测试分析原型模式的优点Spring框架中原型模式案例根据实际案例分析原型模式的优点在传统模式下,假设需要克隆对象,动态的获取原有对象的值(一个副本不是引用传递,修改克隆出的新对象不会影响原有的),例如:对现有的Persion对象进行克隆, Persion persion = new Persion("小明",18);...原创 2020-03-18 14:04:21 · 65 阅读 · 0 评论 -
工厂方法模式与抽象工厂模式
工厂方法模式工厂方法模式解决的问题工厂方法模式示例案例实现步骤代码示例(比较冗余,只是看设计模式的思想)根据案例分析工厂方法模式工厂方法模式解决的问题分析简单工厂模式中的合同签署案例,已产品为维度,创建工厂类,根据信息不同使用工厂类创建不同的产品对象,假设增加维度呢,是不是要创建第二个简单工厂,假设增加是个维度呢?,不容易扩展,工厂方法模式示例案例客户签署合同,产品AAA,产品BBB分别...原创 2020-03-17 23:13:18 · 647 阅读 · 0 评论 -
设计模式概述
设计模式的重要性以实际工作举例: 给用户开,开发完成后客户增加新的功能,例如原本程序适配两个产品,增加第三个产品(程序可扩展性)程序开发完成后的后续维护(规范性,可读性)总结: 高内聚,低耦合,可维护性,可扩展性,类与类之间的关系依赖: 类A中用到了类B 则为依赖关系(类B在类中以成员变量,方法形参,方法返回值存在,或在方法中使用到了)泛化: 继承关系,特殊的依赖实现: 实现接...原创 2020-03-15 22:53:03 · 75 阅读 · 0 评论 -
简单工厂模式
@TOC根据案例分析传统模式可能存在的问题需求分析: 以合同签署为例: 有两个不同的产品"AAA"与"BBB",客户进行合同签署,根据产品的不同,进行不同的业务处理,签署合同传统模式创建多个产品抽象出的公共接口//产品抽象接口interface ProductInterface{ //获取产品类型 String getProductType();}创建产品类...原创 2020-03-15 22:50:43 · 258 阅读 · 0 评论 -
单例设计模式
单例模式一. 单例模式介绍什么是单例模式及优点:使用场景JDK源码分析单例模式二. 单例模式的八种实现方法1. 饿汉式实现步骤分析优缺点代码示例2. 懒汉式一(双重检查式解决线程安全问题)实现步骤分析优缺点代码示例3. 懒汉式二(静态内部类式)原理及优点实现步骤代码示例4. 通过枚举实现单例模式原理代码示例一. 单例模式介绍什么是单例模式及优点:保证某个类在项目中只存在一个实例,并且该类只提...原创 2020-03-15 16:24:24 · 119 阅读 · 0 评论 -
java8 Optional 包装类
java8 Optional 包装类一. 概述Optional二. Optional使用1. 方法概述2. 代码示例Optional的 map(), flatMap(), filter(), 集合遍历等一. 概述OptionalOptional 是一个容器类,在java.util.Optional,可以保持类型T的值,并且可以很好的处理空指针问题,例如调用isPresent()方法如果有值的话......原创 2020-03-14 13:26:26 · 403 阅读 · 1 评论 -
java8 Stream API
java8 Stream API一. Stream API 概述二. Stream实例化方式创建Stream流的方式代码示例三. Stream 中间操作(通过Stream操作数据)概述1. 筛选切片2. 映射3. 排序四. Stream 的终止操作终止操作,生成流的执行结果1. 查找与匹配2. 规约3. 收集一. Stream API 概述jva8在java.util.stream包下,通过S...原创 2020-03-08 21:23:02 · 779 阅读 · 1 评论 -
java8 函数式接口与 Lambda 表达式
函数式接口与 Lambda 表达式1.函数式接口举例复习接口的匿名实现函数式接口2. Lambda表达式什么是Lambda:Lambda的几种编写规则解释示例Lambda 的方法引用与构造器引用方法引用的解释与编写:方法引用示例:构造器引用示例Lambda 使用示例1.函数式接口举例复习接口的匿名实现假设有接口 InterfaceA , 该接口中有抽象方法 T methodA(T t...原创 2020-03-08 16:42:51 · 314 阅读 · 0 评论 -
java8日期时间相关
java8时间相关api一. java8时间相关api出现的原因二. LocalDate, LocalTime, LocalDateTime的使用1. 解释:2. 学习点:3. 代码示例三. Instant1. 解释2. 学习点3. 代码示例四. DateTimeFormatter 日期格式化类1. 解释:2. 学习点3. 代码示例五. 时间间隔计算1. 解释:2. 示例一. java8时间相关...原创 2020-02-23 22:58:16 · 686 阅读 · 0 评论