自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 快速搞懂LinkedHashMap,使用LinkedHashMap实现LRU

包含LinkedHashMap的基本使用和代码演示,快速上手。

2025-04-24 14:36:05 1292

原创 Caffeine——5 分钟学会 Caffeine,轻松优化你的项目

用 Caffeine结合Redis及布隆过滤器搞定缓存穿透,性能翻倍!文章附带示例代码及注释,上手容易!

2025-04-17 09:56:40 1513

原创 生产环境中如何使用Caffeine+Redis实现二级缓存(详细分析了遇到的各种情况)

本篇主要讲解的是实现Caffeine+Redis实现一个现成的使用流程。下一篇讲解什么是Caffeine以及caffeine的使用。

2025-04-16 15:03:32 1366

原创 两万字Java超高频面试八股文(包含场景题),持续更新

1. List 相关有序可重复。实现类底层数据结构特点ArrayListObject[]顺序存储,基于数组实现。支持按索引快速访问,但插入/删除操作较慢(需要移动元素)。LinkedList双向链表链式存储,增删操作较快,但访问元素时需要遍历。VectorObject[]基本与ArrayList类似,但支持线程安全,性能较低。2. Set 相关无序不重复。实现类底层数据结构特点HashSet哈希表(HashMap)使用hashCode和equals方法判断元素是否重复,存储无序。

2025-04-12 15:48:23 937

原创 函数式编程

​ Lambda是JDK8中一个语法糖。他可以对某些匿名内部类的写法进行简化。它是函数式编程思想的一个重要体现。让我们不用关注是什么对象。而是更关注我们对数据进行了什么操作。​ Java8的Stream使用的是函数式编程模式,如同它的名字一样,它可以被用来对集合或数组进行链状流式的操作。可以更方便的让我们对集合或数组操作。​ 我们在编写代码的时候出现最多的就是空指针异常。所以在很多情况下我们需要做各种非空的判断。if(author!=null){​ 尤其是对象中的属性还是一个对象的情况下。

2025-04-06 21:58:13 648

原创 SpringBoot中过滤器Filter的使用详解

过滤器在项目中的可以用来做什么,以及如何使用SpringBoot中的过滤器,并且对过滤器中doFilter方法的 ServletRequest 和ServletResponse类进行

2024-10-17 14:18:28 2032

原创 leetcode 轮转数组

可以看一下转换后跟原数组变化的部分在哪里,使用两次反转就能做到,因为要向右移动k位,所以移动后的元素是最后k位变成了前k位,

2024-09-23 21:30:18 277

原创 Leecode 合并区间

先将数组根据第一个元素进行排序,然后判断后面的数组的0号元素是否小于等于前面数组的1号元素,小于的话就说明有重叠区域,进行合并并删除其中一个数组,如果没有重叠直接跳过。

2024-09-22 22:15:58 257

原创 Leecode 滑动窗口最大值

输入: nums = [1,3,-1,-3,5,3,6,7], 和 k = 3 输出: [3,3,5,5,6,7] 解释过程中队列中都是具体的值,方便理解,具体见代码。队列:{3,-1,-3}。队首3对应的下标为1,L=1,R=3,有效。result=[3,3,5,5,6,7]result=[3,3,5,5,6]此时窗口已经形成,L=0,R=2,result=[3]result=[3,3,5],nums[5]=3。此时L=3,R=5,有效。

2024-09-21 13:54:59 473

原创 Leecode 最大子数组和

对于以nums[j]元素为结尾的最大字串和f(j) 只需要根据前一个元素的f(j-1)来推算,即Max(f(j-1)+nums[j], nums[j]),这样只需要遍历nums数组并使用pre数组记录以当前元素为结尾的最大子数组的和即可空间复杂度为O(n)时间复杂度为O(n),因为只需要所有子数组的最大值,pre数组可以使用一个变量代替空间复杂度为O(1),时间复杂度为O(n)先了解前缀和的概念,

2024-09-21 13:53:06 558

原创 Leecode 和为k的子数组

两种算法

2024-09-19 22:14:21 465

原创 Leecode 三数之和

如果sum=0:保存这三个数,第二个元素+1,第三个元素-1,并判断是否跟上一个元素重复。思路:如果使用三重循环会包含重复的三元素,而且时间复杂度为O(n²) ,可以换种思路。如果sum>0: 让第三个元素-1(使sum值减小)并去判断是否跟上一个元素重复。如果sum<0: 让第二个元素+1(使sum值增大)并去判断是否跟上一个元素重复。先将数组排序 时间复杂度O(n*logn)sum=三个元素相加。

2024-09-19 20:49:48 330

原创 Leecode 字符串中所有字母异位词

使用滑动窗口 ,设置一个大小为p.length大小的窗口,窗口中的字符出现的次数用一个int类型的数组记录,数组的下标代表字符ASCII码,一个字符每出现一次就让int[字符对应的ascii] +1,当滑动窗口向右移动时,只需要更新左边移出去和右边移进来的两个字符。

2024-09-18 13:56:38 330

原创 Leecode 容器能盛最多水

思路:对于左右两个木板围成的储水体积是由最短的板子决定的那么我们是将短板向内移动还是长板向内移动呢?将短板向内移动有可能增加储水体积,因为有可能短边向内移动后变成了更高的板子。将长板向内移动只能减少储水体积,因为高度是由短板决定的。

2024-09-16 22:30:02 304

原创 Leecode最长连续序列长度

讲完了HashMap,那么HashSet是基于HashMap来存储数据的,只是将数据值当作key来进行存放,可以保证数据的唯一性;代码的思路就是通过判断一个数是否是连续序列的头元素,比如【1,2,6,4,8,9,10】,这里有4个序列【1,2】和【8,9,10】【4】【6】,1、8、4、6都是连续序列的头元素(通过判断num-1是否存在数组中),若此数是头元素就判断num+1数字是否存在数组中,如果存在num++直到找到此序列的尾元素,这样就能计算这个序列的大小。

2024-09-16 21:55:26 364

原创 Leecode零移动

使用两个指针,右指针指向非零元素,左指针指向零元素,交换元素。

2024-09-16 21:34:52 234

原创 Leecode 字母异位词分组

可以使用HashMap key为排序后的字符串,value为原字符串的数组。对于每一个字符串,怎么才能判断是同一组呢?可以把每个字符串进行排序。

2024-09-14 15:36:35 152

原创 LeecodeZ字型变换

可以得出,第一行和最后一行每行中的数字间隔是2*(numRow-2)+2=根据题目所给的信息,只要找出规律即可。大家能看出来,思想有了那就写代码吧。,除了这两行其他行的规律是。

2024-09-13 20:29:42 305

原创 Leedcode 查找最长回文字符串

根据每一个有可能为中心的字符作为中心对称点向两边一步步延伸,若遇到不对称的,表明到达了以这个字符为中心的回文字符的最大长度(子字符串不是回文,那么以这个子字符串向两边延申的字符串也不是回文);这样就有两种情况,以一个字符为中心或者以两个字符为中心;这样对每个字符进行遍历一次的时间为O(n²)首先定义了一个方法用于判断是否是回文字符串;根据双层for循环寻找所有子字符串,然后把子字符串送进方法进行判断是否是回文字符串,时间复杂度太高O(n³)

2024-09-13 15:10:21 215

原创 Leecode寻找两个正序数组的中位数

创建一个数组存放遍历过的两个数组,设置两个索引index1和index2 分别表示两个数组的开头.进行循环遍历(条件是只要有一个数组遍历完就跳出)设置为两个数组长度最小的那个,如果nums1[index1]<=nums2[index2]让index1加一否则让index2加一。循环出来后一个数组遍历完了,另一个没有遍历完,继续让另一个数组遍历完。还可以进行优化:可以把存放遍历过的数组的数组result大小设置为 total/2+1,并且把循环的次数设定为 total/2+1,因为只要中位数。

2024-09-12 21:01:34 262

原创 Java中的注解和反射

注解和反射学习笔记

2024-09-12 13:26:38 378

原创 苍穹外卖项目学习遇到的问题和笔记

对于苍穹外卖学习过程中所遇到的问题以及一些笔记

2024-09-09 17:15:07 1486

原创 关于AssertionError: Torch not compiled with CUDA enabled解决办法

我使用了conda进行安装,首次安装的CUDA 11.8没有成功,is_available 还是False,最后安装CUDA12.1才成功。安装CUDA12.0 对应的Pytorch版本(我的CUDA12.0被Pytorch1.9.0以上的版本所支持)之后管理员身份进行安装 (安装前先把之前的CUDA卸载干净,在控制面板->程序中卸载)在win+R终端输入nvidia-smi出现下面截图 这里我的显卡是支持CUDA的。首先测试自己电脑是否下载cuda 下面是我电脑的情况,需要下载cuda。

2024-04-18 22:36:27 539 1

原创 Social LSTM源码阅读

对于每一个序列(20个帧,每帧的人数,每个人的数据 例如20x3x3:拿到x_seq ,_ , d_seq, numPedsList_seq, PedsList_seq通过定义的函数dataloader.convert_proper_array把x_seq变换成适合输入的形式,具体来说只是把PedId-> 0 1 2 数组下标的形式把x_seq的绝对坐标转换成相对坐标 相同的PedId的所有坐标 - 第一次出现的位置。

2024-04-15 19:02:27 714 1

原创 pytorch学习

1.更换镜像源2.若计算机里已将安装了包,直接使用安装的包。

2024-03-03 21:19:45 719

空空如也

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

TA关注的人

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