
算法
文章平均质量分 71
萤火虫的星光
这个作者很懒,什么都没留下…
展开
-
leecode题集 —— 两个可能有环链表相交找交点
两个可能有环链表相交找交点这是几道题的一个综合面试题 02.07 链表相交剑指offer 52 两个链表的第一个公共节点142 环形链表2 解题思路首先我们先来分析一下无环情况如何找到交点首先判断是否相交 --> 两个链表的最后一个节点是否相同,若相同则一定是相交的若相交,找交点 --> 将链表差值得出,长链表先走差值这么多,然后两个链表一起走,第一个相等的节点就是交点接下来我们分析如何判断链表有环思路一、 遍历链表将节点一个一个放入set集合,当放入的节原创 2021-01-27 11:10:18 · 861 阅读 · 0 评论 -
集合的安全性分析和阻塞队列的使用
集合的读写安全性1. list 集合线程不安全的解决方案synchronized 同步代码块使用 vector 保证线程安全使用Collections 工具类 包装集合 保证线程安全ps 这两种方法其实是一种都是给方法加上同步代码块使用锁机制 (Lock)使用读写锁 同步读写操作 保证线程安全使用CopyOnWrite使用 CopyOnWriteArrayList 读写分离 保...原创 2020-04-04 17:46:51 · 188 阅读 · 0 评论 -
juc线程池前世今生
juc线程池Executor接口 是整个线程池的父接口ExecutorService是他的子接口 其下面有两个实现类的分支 :1. ThreadPoolExecutor2. ForkJoinPool1. ThreadPoolExecutorjuc工具类中提供了三种默认的poolExecutor创建方式 : ExecutorService executor = Executors.n...原创 2020-04-04 17:01:51 · 149 阅读 · 0 评论 -
设计模式系列之--职责链模式
职责链模式职责链模式是一种拦截器机制 他将多层的if/elseif进行拆分为一个个的拦截器链式调用来达到if/else的功能拦截器只负责拦截 这样可以将功能独立出来 达到解耦的目的javaweb中拦截器机制(通过重写doChain方法来进行链式调用) 和springmvc中的拦截器机制 都是这个原理角色 :拦截器类拦截器组装类请求类以拦截器拦截请求为例//拦截器组装类publi...原创 2020-04-01 14:35:32 · 164 阅读 · 0 评论 -
设计模式系列之--策略模式
策略模式这种模式属于行为型模式, 他调整了方法的合理调用策略模式将具体类和具体功能分开 使用组合的方式进行关联 这样减小了耦合 和代码冗余状态模式是将不同状态以不同对象的形式展示 策略模式是将不同实现的方式以对象的形式展示角色 :Context上下文(具体类) : 用于封装策略对象策略接口 : 抽象策略规则具体策略角色(具体功能) : 策略的具体实现以Arrays工具类的sort方...原创 2020-04-01 13:01:38 · 103 阅读 · 0 评论 -
设计模式系列之--状态模式
状态模式这种类型的设计模式属于行为型模式,它他解决了方法的合理调用状态模式用于一个事件或对象有很多状态,状态之间会互相转换,对不同状态有不同的行为的情况状态模式将不同的情况封装为一个类 这样避免了if/else的多次调用 而且增加新的情况不改变原有代码这样可以通过只一次判断状态就可以完成相应方法的调用需要的成员 :状态类 : 写一个状态类的接口提供基本标准 让不同状态类实现接口 产生不...原创 2020-03-31 21:07:32 · 140 阅读 · 0 评论 -
设计模式系列之--解释器模式
解释器模式这种类型的设计模式属于行为型模式,它他解决了方法的合理调用解释器模式用于对表达式(字符串的解析),如espl 正则表达式等可以通过自定义规则来使用解释器创建一种语法简易代码(如espl)解释器需要的角色:解析器类 : 用来制定规则按情况调用不同的表达式类完成解析抽象表达式类 : 在此类生成结果具体表达式 类: 通过不同的抽象表达式子类解析不同的符号并运算终结符表达式类 :...原创 2020-03-31 16:02:59 · 187 阅读 · 0 评论 -
设计模式系列之--观察者模式
观察者模式这种类型的设计模式属于行为型模式,它他解决了方法的合理调用观察者模式就是以代码实现广播功能java提供了Observe接口 里面 提供一个update方法来保证广播类可以通过调用update方法实现更新Observable广播类 里面定义一个集合(类似池原理) 通过放入Observe来进行组合(达到订阅效果,在集合中的Observe就是订阅成功的) 通过遍历集合调用Observe...原创 2020-03-30 13:05:02 · 136 阅读 · 0 评论 -
设计模式系列之--桥接模式
桥接模式这种类型的设计模式属于结构型模式,它更改或调整了代码的结构和适配器模式不同,适配器模式主要解决了插头不一样的问题,桥接模式主要是为什么要有插头的问题,桥接模式主要是用来解耦的,将不同的功能以接口的形式暴露,给不同厂商做适配提供了机会,好处1是解耦,2来生产商不用关心具体实现,提供接口即可举个例子例如 以前的游戏机游戏是嵌在主板上的只能玩一个俄罗斯方块,这样的弊端是 若想玩更多的游...原创 2020-03-24 14:17:48 · 111 阅读 · 0 评论 -
设计模式系列之--适配器模式
适配器模式这种类型的设计模式属于结构型模式,它更改或调整了代码的结构适配器顾名思义是将类与另一类进行适配,使得两个类之间兼容首先兼容的两个类肯定是有关联的适配器模式的产生 是由于对一个事情的不同标准或不同版本造成的(如类型不同的插头),若想让不同的标准可以兼容 那么就需要一个中间的一个东西同时兼顾两种标准 将两种不同标准中不同的地方进行转换(如转接插头 log4j的转换)在java中需要...原创 2020-03-22 00:31:52 · 120 阅读 · 0 评论 -
设计模式系列之--建造者模式
原型模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式。建造者模式与工厂模式很像 他们的区别是:建造者模式注重过程工厂模式注重结果建造者模式也是一种生产一类对象的模式 但是这一类对象要求生产过程或流程统一 工厂模式只提供了创建的方法具体创建方式由子工厂自己决定 而建造者模式提供了建造的基本流程(标准) 那么子工厂需要按照这些流程来生产(父类只提供基本流程详细步骤还是要子类自...原创 2020-03-21 22:59:24 · 91 阅读 · 0 评论 -
设计模式系列之--原型模式
原型模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式。是不是创建型模式的核心就是不new对象hhh原型模式与其他两种创建型模式不同 主要用于克隆对象当需要一个与原来对象一模一样的对象时就可以用原型模式进行创建主要是使用clone方法 和序列化反序列化的方式进行复制复制来的对象 要比new出来的对象效率要高 而且当需要复制的目标对象发生改变时 此时复制出来的对象就也是新状...原创 2020-03-20 18:21:09 · 143 阅读 · 0 评论 -
设计模式系列之--外观模式
单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式。与单例模式相反 当需要创建很多类 而这些类属于同一类型或相似 我们希望可以有一个类可以将重复的代码抽取出来将公有重复代码抽取通过传入标识来返回所需的对象这种模式称为工厂模式简单工厂模式将一相似的类进行统一的生产,一个简单工厂只完成一个功能(可以多个功能但是违背单一职责原则),但是若有多个功能那就需要创建多个简单工厂(而且...原创 2020-03-20 16:53:47 · 146 阅读 · 0 评论 -
马踏棋盘问题回溯算法
马踏棋盘问题思路 : 使用回溯算法遍历强行算出来描述 : 在找到结果后会直接退出 可以去掉exit语句可以找到所有符合条件的解package hourse;import java.util.Arrays;public class Hourse { private static final int size = 6; public void walk(int x,i...原创 2020-03-18 13:30:04 · 301 阅读 · 0 评论