自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【总结】用树形图和剪枝操作理解完全背包问题中组合数和排列数问题

零钱兑换II首先明确:组合不强调元素之间的顺序,排列强调元素之间的顺序。如何实现统计的是组合数还是排列数呢?对于coins = {1,2,5}, amount = 5:我们先来看 外层for遍历背包(金钱总额),内层for循环遍历物品(钱币)的情况。对于amount = 4 时 我们可以计算出 dp[4] = 5 即:4 = 1 + 1 + 1 + 14 = 1 + 1 + 24 = 1 + 2 + 14 = 2 + 1 + 14 = 2 + 2画成树形图 如下:可知此时我们得到的是排列数由

2022-06-22 15:31:35 1333 2

原创 二叉树前中后序遍历非递归实现

【代码】二叉树前中后序遍历非递归实现。

2023-09-17 17:36:09 122

原创 【总结】LinkedBlockingQueue为什么可以实现双锁算法

LinkedBlockingQueue为什么可以实现双锁算法

2023-08-20 23:32:49 355 1

原创 【锁】银行存取钱情景下的乐观锁与悲观锁实现

【锁】银行存取钱情景下的乐观锁与悲观锁实现。

2023-02-25 18:54:40 282

原创 【总结】继承类的初始化顺序

1.首先要清楚子类test方法调用的是子类中的成员变量a与静态变量b。2.super() 调用父类空参构造器;,故会打印出 “子类test方法”;方法,实际上调用的是子类的。3.父类空参构造器 调用。1.调用子类的构造器;

2023-02-24 11:40:10 345

原创 【总结】静态代理与两种动态代理及其代码实现

要求委托类必须实现接口,根据接口动态生成代理对象的字节码文件;关键类及方法:InvocationHandler(invoke)、Proxy(newProxyInstance)生成的代理类会实现委托类所实现的接口并且在实现接口中的相应方法;这些相应方法会使用方法,去调用的实现类中重写的invoke()方法;

2023-02-23 20:15:10 297

原创 【总结】RateLimiter

当一个线程所需要的令牌数大于库存令牌数时, 就令此线程睡眠到nextFreeTicketMicros时间,再去预支付令牌,此时根据预支付的令牌数N,去更新nextFreeTicketMicros:nextFreeTicketMicros = N * stableIntervalMicros + nextFreeTicketMicros;下一个线程若想进行预支付,则需等到上次线程更新后的nextFreeTicketMicros时间才能进行预支付功能;

2023-02-20 14:45:27 221

原创 【Thread】手写实现简易BlockingQueue及线程池ThreadPool

【代码】手写实现简易BlockingQueue及线程池ThreadPool。

2023-02-19 19:35:30 196

原创 【Thread】ThreadLocal

如果你创建了一个ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个本地拷贝,多个线程操作这个变量的时候,实际是在操作自己本地内存里面的变量,从而起到线程隔离的作用,避免了并发场景下的线程安全问题。使用ThreadLocal类访问共享变量时,会在每个线程的本地,都保存一份共享变量的拷贝副本。ThreadLocal 适用于每个线程需要自己独立的实例且该实例需要在多个方法中被使用(相同线程数据共享),也就是变量在线程间隔离(不同的线程数据隔离)而在方法或类间共享的场景。

2022-11-02 15:45:15 268

原创 【SpringMVC】dispatcherServlet处理流程

dispatcherServlet

2022-11-02 14:08:06 75

原创 【MySql】char与vchar的对比

【MySql】char与vchar的对比

2022-11-02 11:23:07 344

原创 【SpringBoot】ApplicationContext介绍

ApplicationContext是spring继BeanFactory之外的另一个核心接口或容器,允许容器通过应用程序上下文环境创建、获取、管理bean,为应用程序提供配置的中央接口。

2022-09-27 21:43:51 1371 1

原创 【SpringBoot】controller与servlet区别

当要使用Servlet完成的复杂的功能时,需要编写多个Servlet类,并且在web.xml进行注册,这对于完成复杂的Web应用,代码编写会变得很复杂,开发成本也会很高。所以Spring提供了强大的Web开发框架Spring MVC:Spring MVC是Spring产品的一部分,Spring MVC是一个模型-视图-控制器的Web框架,建立在前端控制器servlet(DispatcherServlet),它负责发送每个请求到合适的处理程序,使用视图来返回响应结果。

2022-09-27 21:22:01 4351 3

原创 【SpringBoot】拦截器Intercepter 与 过滤器Filter 的区别

过滤器和拦截器 底层实现方式大不相同,过滤器 是基于函数回调的,拦截器 则是基于Java的反射机制(动态代理)实现的。

2022-09-27 20:35:42 306 1

原创 【SpringBoot】使用@MatrixVariable注解,手动开启矩阵变量

SpringBoot中默认是不可以使用矩阵变量的,需要手动配置。原因在于路径处理函数UrlPathHelper中的removeSemicolonContent变量默认为true,代表支持移除分号后的内容;解决方案有两种:其核心都在于将removeSemicolonContent变量设置为false。

2022-09-22 10:36:17 316 1

原创 【总结】单调栈(寻找下一个更大元素)

单调栈在算法中,能够将O(n^2)的时间复杂度优化到O(n),相对的空间复杂度会增加,因为需要动态维护一个栈。在此总结一下单调栈496.下一个更大元素I503.下一个更大元素II496.下一个更大元素I。

2022-07-25 17:27:02 284

原创 【总结】使用字典树(Trie)寻找单词最短前缀

自己使用哈希表手实现了字典树的添加单词*addWord()方法和查找单词最短前缀searchPrefix()*方法.此贴源于力扣第648题.单词替换

2022-07-07 15:55:54 140

原创 【总结】理清0-1背包问题和完全背包问题

最近刷了力扣动态规划题目,在此总结一下0-1背包问题和完全背包问题之间的区别从上表可以发现两个背包问题的状态转移方程的区别在于 dp[ i - 1 ] [ j - weight[ i ] ] + value [ i ]) 和 dp[ i ] [ j - weight[ i ] ] + value [ i ]),这是因为1.2.3 一维数组代码实现小结对比两个问题的一维数组的实现方式,可以发现在循环遍历背包容量时(内层循环):0-1背包问题是从大到小进行遍历(逆序遍历),而完全背包问题是

2022-06-22 15:15:39 971 2

原创 【LeetCode】每日一题:剑指Offer ll 029.排序的循环链表,清晰易理解:先找到最小节点,再寻找应当插入的位置

目标明确:先找到最小节点,再寻找应当插入的位置,特别地要注意当插入值是比 最大值还大的值 或者 是比最小值还小的值 的处理,注意避免进入死循环!!,代码中已经给出详细注释~运行结果:...

2022-06-18 15:56:50 75

原创 【LeetCode】每日一题 1089题 复写零:利用左右双指针确定截断位置,再依次进行原地修改

(1)对于长度为n的数组在i位置遇到0就要在该位置的后面插入一个0,则等价于先将i+1至n-1视为整体,将其向后移动1个位置,整体坐标变为i+2至n,由于数组大小不可变,则将应将尾部元素舍弃,如下图所示:(2)因此可以利用左右双指针来确定总共需要舍弃几个元素,即找到截断的位置,具体做法为:1.初始化左右指针:left = 0, right = arr.length;2.当arr[left] == 0 时,可以明确此时需要从尾部舍弃一个元素,则令 right–,即将右指针指向需要舍弃的元素;3.当l

2022-06-17 14:28:57 253

原创 【LeetCode】每日一题 第498题.对角线遍历,使用广度优先搜索进行解题

力扣第498道题:对角线遍历,此题的题解中基本都是寻找坐标变化规律进行解题,没有用到数据结构中的知识进行解题,在此提出一种广度搜索遍历方法实现层序遍历进行解题。

2022-06-14 13:31:22 241

原创 【LeetCode】剑指 Offer 33. 二叉搜索树的后序遍历序列

【力扣】剑指 Offer 33. 二叉搜索树的后序遍历序列前言一、题目分析1.1 题目描述1.2解题思路分析二、代码实现总结前言记录一下此题目自己不同于网站题解的解题思路。一、题目分析1.1 题目描述输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。1.2解题思路分析因为为二叉搜索树,且任意两个数字都互不相同,则我们对后序遍历数组进行升序排序即可得到中序遍历数组。在得到中序遍历数组后

2022-05-08 21:53:35 342

原创 【数据结构】根据后序遍历的特点,实现后序线索化二叉树后的遍历方法(仅适用于完全二叉树)

【数据结构】根据后序遍历的特点,实现后序线索化二叉树后的遍历方法文章目录【数据结构】根据后序遍历的特点,实现后序线索化二叉树后的遍历方法前言一、明确后序遍历的特点二、代码实现前言在博客里https://blog.csdn.net/ZHECSDN/article/details/116655099看到博主说“后序线索化二叉树遍历需在Node类中加入parent域,记录当前结点的父节点,否则无法实现遍历。”在这里提出一种不需要记录当前节点的父节点的方法;提示:以下是本篇文章正文内容,下面案例可供参考

2022-04-23 16:48:21 624 2

原创 【数据结构】斐波那锲查找算法

【数据结构】斐波那锲查找算法在写斐波那锲查找算法时遇到ArrayIndexOutOfBoundsException错误,错误提示如下图,即出现了k=0,程序查询第k-1个斐波那锲数列的值时出现了索引越界。下面是修改错误后运行正确的斐波那锲查找算法import java.util.*;/** * @author Calculus * @create 2022-04-21 20:22 */public class FibonacciSearch { public static vo

2022-04-21 22:25:51 611

原创 【数据结构】快速排序

【数据结构】快速排序:问题描述在写快速排序时,遇到了很多bug,调试了一上午,终于解决,在此记录一下遇到的bug以及解决方案。下面是修正完好的快排代码:public static void quickSortS2L(int[] arr, int left, int right) { if (left > right) { //!!!!必须要有等于号 否则(0, -1)-> (0, 0) -> d = [-1, 1] -> (0, -1)....陷入死循环,栈

2022-04-20 12:41:06 465

原创 【JavaSE学习笔记】多进程同步经典题目:生产者与消费者

自己手写了一遍生产者与消费者经典题目:

2022-04-09 23:17:27 562

原创 【JavaSE学习笔记】Java中的多态及其引出的Upcast和Downcast问题

JAVASE学习笔记:JAVA中的多态及其引出的Upcast和Downcast提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录JAVASE学习笔记:JAVA中的多态及其引出的Upcast和Downcast前言一、JAVA中的多态二、Upcast & Downcast总结前言提示:这里可以添加本文要记录的大概内容:最新跟随康老师学习JAVASE,碰到了JAVA特性之一:多态,并且对多态引出的类型转换问题很迷茫,故在此记录一下。提示:以下是本篇文章正文内容,下面

2022-04-06 22:08:23 1146

空空如也

空空如也

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

TA关注的人

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