- 博客(25)
- 收藏
- 关注
原创 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 三数之和
如果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 字母异位词分组
可以使用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
原创 关于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
空空如也
Pycharm 导入库时乱码
2024-11-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅