自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 中介者模式

概念定义: 用一个中介对象封装一系列的对象交互,使各个对象不需要显示的相互作用,从而使其耦合松散,而且可以独立的改变它们之间的交互优点: 减少类之间的以来,降低了类之间的耦合缺点:同事类越多,中介者的逻辑越复杂,中介者会膨胀的很大使用场景:中介者模式适用于多个对象之间紧密耦合的情况,紧密耦合的标准是:在类图中出现了蜘蛛网状结构,中介者模式有利于将蜘蛛网状结构转化为星型结构,使原本复杂魂落...

2020-01-20 10:15:18 149

原创 责任链模式

概念定义:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止优点:将请求和处理分开:请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌缺点:性能问题:每个请求都是从链头遍历到链尾,如果责任链较长,性能是一个非常大的问题调试不方便:链条较长的情况下,调试比较复杂注意事项:链中节点过多的...

2020-01-19 11:27:23 106

原创 原型模式

概念定义:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象优缺点:性能优良:原型模式是在内存二进制流的拷贝,比直接new一个对象性能要好很多逃避构造函数的约束(既是优点也是缺点)适用场景:资源优化场景:类的初始化需要耗费非常多的资源的情况性能和安全要求的场景:new一个对象需要繁琐的数据准备或者访问权限的情况一个对象多个修改者的场景:一个对象需要提供给其他对象访问,...

2020-01-19 09:39:52 127

原创 模版方法模式

概念定义:定义一个操作中的算法的框架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些步骤优点:封装不变部分,扩展可变部分提取公共代码,便于维护行为由父类控制,子类实现缺点:增加代码阅读难度适用场景:多个子类有公有的方法,且逻辑基本相同重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能由各个子类实现重构时,把相同的代码抽取到父...

2020-01-09 15:32:33 77

原创 迭代器模式

概念定义:迭代器模式提供一种方法访问一种容器对象中的各个元素,而又不需要暴露该对象内部的细节代码实现public interface Iterator<E> { E next(); boolean remove(); Boolean hasNext();}public class List2Iterator<E> implements Ite...

2020-01-08 16:13:18 65

原创 装饰者模式

概念定义:在不改变原有对象的基础上,动态的给一个动向添加一些额外的职责优点:(1)装饰类和被装饰类可以独立发展,不相互耦合(2)装饰模式是继承关系的一个替代方案(3)装饰模式可以动态的扩展一个实现类的功能缺点(1)多层装饰比较复杂(2)出现了更多的类,增加了代码的复杂性使用场景(1)需要动态的扩展一个类的功能,或给一个类增加附加功能(2)需要动态的给一个对象增加功能,这些功...

2020-01-07 11:00:41 94

原创 leetcode刷题-算法

leetcode刷题-算法两数之和两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9...

2020-01-07 09:19:04 172

原创 leetcode刷题-SQL

编写一个 SQL 查询来实现分数排名。如果两个分数相同,则两个分数排名(Rank)相同。请注意,平分后的下一个名次应该是下一个连续的整数值。换句话说,名次之间不应该有“间隔”。+----+-------+| Id | Score |+----+-------+| 1 | 3.50 || 2 | 3.65 || 3 | 4.00 || 4 | 3.85 || 5 ...

2020-01-06 17:20:50 148

原创 观察者模式

概念定义:观察者模式也叫做发布订阅模式。定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖他的对象都会得到通知并自动更新优点:观察者和被观察者之间是抽象耦合建立一套触发机制缺点:观察者较多的时候通知的效率问题Java中消息的通知默认是顺序执行,一个观察者卡壳,会影响整体的执行效率(考虑使用异步处理)实现代码1public class Obser...

2020-01-06 15:35:47 102

原创 【面试题】实现一个栈,要求Push(入栈),Pop(出栈),Min/Max(返回最小/大值的操作)的时间复杂度为O(1)

【面试题】实现一个栈,要求Push(入栈),Pop(出栈),Min/Max(返回最小/大值的操作)的时间复杂度为O(1)方案一:使用一个栈,每次push/pop的时候,都把当前的元素和最大/小值进行入栈/出栈操作操作s1minpush 44,44push 34,4,3,33push 54,4,3,3,5,33pop4,4,3,33...

2019-12-26 15:10:43 397

原创 递归导致堆栈溢出

递归导致堆栈溢出产生原因:当递归深度过大时,不断的调用方法没有返回数据,每次调用都会将方法的临时变量封装为栈帧存入内存栈,等方法返回的时候才会出栈,所以就会出现一直入栈导致爆栈或者内存溢出的情况解决办法:如果无法控制递归的深度,就要避免使用递归,可以采用循环+栈结构代替递归的方式参考聊聊面试必考-递归思想与实战如何利用循环代替递归以防止栈溢出...

2019-11-24 08:38:49 4276 1

空空如也

空空如也

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

TA关注的人

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