单例模式---DCL懒汉式
摘要:单例模式: 保证一个类只有一个实例,它的关键点是构造器私有化,不过这个私有构造器可以通过反射来访问,也就是通过反射可以破坏单例。下面给出runoob.com上的介绍: 介绍 意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 主要解决:一个全局使用的类频繁地创建与销毁。 何时使用:当您想控
阅读全文
posted @
2021-02-25 10:56
李白菜
阅读(366)
推荐(0) 编辑
模板方法模式
摘要:模板方法模式:在父类中定义了一套算法的框架,框架中算法步骤由父类规定,子类去实现这些算法步骤的具体行为。模板方法模式在SpringBoot中有大量的应用。 下面给出runoob.com的介绍: 介绍 意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构
阅读全文
posted @
2021-02-25 10:00
李白菜
阅读(59)
推荐(0) 编辑
leetcode 215. 数组中的第K个最大元素(常用排序算法的回顾)
摘要:题目: 在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。 题解: 当看到TOP K问题时,脑海中应立马想到堆排序。以这个题目来回顾下排序算法。在回顾排序算法前,我们来回顾下几个术语:时间复杂度、空间复杂度、稳定性。稳定性的定
阅读全文
posted @
2021-02-24 17:06
李白菜
阅读(91)
推荐(0) 编辑
观察者模式---猫叫老鼠跑主人醒
摘要:观察者模式:又称发布-订阅模式,被广泛应用于消息中间件(Rabbitmq、Activemq、Kafka等)中。它的思想是当一个对象发生改变时,主动通知那些依赖于它的对象。下面贴上runoob.com上的介绍: 介绍 意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对
阅读全文
posted @
2021-02-24 13:10
李白菜
阅读(128)
推荐(2) 编辑
分布式Session共享
摘要:分布式session的几种实现方式 在搭建完集群环境后,不得不考虑的一个问题就是用户访问产生的session如何处理。如果不做任何处理的话,用户将出现频繁登录的现象,比如集群中存在A、B两台服务器,用户在第一次访问网站时,Nginx通过其负载均衡机制将用户请求转发到A服务器,这时A服务器就会给用户创
阅读全文
posted @
2021-02-22 17:40
李白菜
阅读(204)
推荐(1) 编辑
删除链表的倒数第 N 个结点
摘要:题目: 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。进阶:你能尝试使用一趟扫描实现吗? 题解: 看到题目首先想到的时候想到数组,因为数组删除第N个数的时间复杂度是O(1)。但是链表的存储空间不是连续的,无法通过下标直接定位到某个元素,链表的查询、删除都要一个一个节点遍历,查询删
阅读全文
posted @
2021-02-19 15:45
李白菜
阅读(30)
推荐(0) 编辑
无重复字符的最长子串
摘要:题目: 给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。 题解: 看到判断是否重复,我们首先应该想到Set,因为Set存储的是无重复的、无排序的元素。假如看到统计元素的个数,首先应该想到Map,只有使用了对的数据结构,才能使得我们的代码的运行效率更高,时间复杂度更低。在空间和时间的取
阅读全文
posted @
2021-02-19 15:13
李白菜
阅读(133)
推荐(0) 编辑
两数相加
摘要:题目: 给你两个 非空 的链表,表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的,并且每个节点只能存储 一位 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。你可以假设除了数字 0 之外,这两个数都不会以 0 开头。 题解: 求和时把进位弄清楚了问题就变得简单了,这里不需要求出
阅读全文
posted @
2021-02-19 14:51
李白菜
阅读(24)
推荐(1) 编辑
两数之和
摘要:题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。 题解: 遍历数组时,用HashMap记录当前数组下标和数组值
阅读全文
posted @
2021-02-19 14:36
李白菜
阅读(12)
推荐(0) 编辑
无重叠区间
摘要:题目: 给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。 题解:贪心区间问题。先按边界排序,再比较后一个区间的起点是否前一个区间的终点重叠。代码如下: Java版
阅读全文
posted @
2021-02-19 14:12
李白菜
阅读(31)
推荐(0) 编辑
用最少数量的箭引爆气球
摘要:题目: 在二维空间中有许多球形的气球。对于每个气球,提供的输入是水平方向上,气球直径的开始和结束坐标。由于它是水平的,所以纵坐标并不重要,因此只要知道开始和结束的横坐标就足够了。开始坐标总是小于结束坐标。 一支弓箭可以沿着 x 轴从不同点完全垂直地射出。在坐标 x 处射出一支箭,若有一个气球的直径的
阅读全文
posted @
2021-02-19 14:02
李白菜
阅读(28)
推荐(0) 编辑
买卖股票专题系列6---买卖股票的最佳时机含手续费
摘要:题目: 给定一个整数数组 prices,其中第 i 个元素代表了第 i 天的股票价格 ;非负整数 fee 代表了交易股票的手续费用。你可以无限次地完成交易,但是你每笔交易都需要付手续费。如果你已经购买了一个股票,在卖出它之前你就不能再继续购买股票了。返回获得利润的最大值。注意:这里的一笔交易指买入持
阅读全文
posted @
2021-02-19 11:45
李白菜
阅读(30)
推荐(0) 编辑
买卖股票专题系列5---最佳买卖股票时机含冷冻期
摘要:题目: 给定一个整数数组,其中第 i 个元素代表了第 i 天的股票价格 。设计一个算法计算出最大利润。在满足以下约束条件下,你可以尽可能地完成更多的交易(多次买卖一支股票): a.你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 b.卖出股票后,你无法在第二天买入股票 (即冷冻期为
阅读全文
posted @
2021-02-19 11:31
李白菜
阅读(27)
推荐(1) 编辑
买卖股票专题系列4---买卖股票的最佳时机4
摘要:题目: 给定一个整数数组 prices ,它的第 i 个元素 prices[i] 是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 k 笔交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 题解: 该题是买卖股票3的升级版本,假若理解
阅读全文
posted @
2021-02-19 11:01
李白菜
阅读(45)
推荐(0) 编辑
买卖股票专题系列3---买卖股票的最佳时机3
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定的股票在第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你最多可以完成 两笔 交易。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 题解: 前面我们一起学习了买卖股票1、2的算法,分别对应只能交易1次,可以无限次交易的
阅读全文
posted @
2021-02-19 10:22
李白菜
阅读(41)
推荐(0) 编辑
买卖股票专题系列2---买卖股票的最佳时机2
摘要:题目: 给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。 题解: 由于可以交易多次,那么只要今天的股票价格比昨天的高,那么就交
阅读全文
posted @
2021-02-19 09:50
李白菜
阅读(22)
推荐(0) 编辑
买卖股票专题系列1---买卖股票的最佳时机1
摘要:题目: 给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回
阅读全文
posted @
2021-02-19 09:36
李白菜
阅读(27)
推荐(0) 编辑