- 博客(60)
- 收藏
- 关注
原创 天机学堂8--优惠券发放MQ+Lua分布式锁
把优惠券相关数据缓存到Redis中,基于Redis完成资格校验最终返回的是递增操作完成后该字段的新值。例如,若该字段原本存储的值为 5,执行此操作后,该字段的值会更新为 6,并且该方法会返回 6。直接调用了userCouponService.checkAndCreateUserCoupon()这个方法。
2025-01-22 12:11:10
879
原创 黑马点评关键代码解析
UserDTO:Long id , nickname, icon验证码登录redis数据本身就是共享的,就可以避免session共享的问题了对应的发送验证码:登录凭证保存在前端浏览器,所以不能用phone之类的个人数据Redis情况:点赞Blog.userId和Use.id关联给Blog类中添加一个isLike字段,标示是否被当前用户点赞判断这篇笔记是否被点赞过:点赞功能的实现:两个地方需要用到:首页搜索推荐的分页查询 和 点进该笔记判断是否点赞过,只需要笔记ID即博客ID,获取
2025-01-22 12:10:29
1067
原创 天机学堂7--Redisson自定义注解AOP以及SPEL表达式实现分布式锁
通知类:里面的切点表达式,public是方法返回类型,路径…*是service及其子包下的类 后面的.*是任意方法 (…)指任意参数(@annotation(路径.实现类中方法的注解)@Around("@annotation(xxx类)")以上图为例,只要方法加了@printTime注解,方法就是切点,再走这个方法之前就会走环绕通知@Around()around()方法。
2025-01-21 17:27:38
1170
原创 天机学堂4-点赞实现
因此,这里我们计划使用SortedSet结构。事实上这也是大多数合并写请求业务面临的问题,而多数情况下,我们只能通过定时任务,定期将缓存的数据持久化到数据库中。服务之间的Feign调用没有用户信息,所以设置Feign拦截器获取用户信息,加到请求头,后面feign调用才有。如果 Feign.class 不存在,Spring Boot 会跳过该配置类的加载,避免无关配置或启动错误。
2025-01-17 00:59:56
661
原创 天机学堂3-ES+Caffeine
只要你的项目配置正确,Feign会自动处理接口的实现,并通过HTTP请求调用远程服务。本地缓存简单来说就是JVM内存的缓存,比如你建立一个HashMap,把数据库查询的数据存入进去。以后优先从这个HashMap查询,一个本地缓存就建立好了。Caffeine是一个基于Java8开发的,提供了近乎最佳命中率的高性能的本地缓存库。当然,我们真正创建本地缓存的时候并不是直接使用HashMap之类的集合,因为维护起来不太方便。像这样的数据,除了建立Redis缓存以外,还非常适合做本地缓存(Local Cache)。
2025-01-14 22:46:25
869
原创 天机学堂2-高并发优化
实现了学习计划和学习进度的统计功能。特别是学习进度部分,为了更精确的记录用户上一次播放的进度,我们采用的方案是:前端每隔15秒就发起一次请求,将播放记录写入数据库。在并发较高的情况下,会给数据库带来非常大的压力在机器性能一定的情况下,提高单机并发能力就是要尽可能缩短业务的响应时间(ResponseTime),而对响应时间影响最大的往往是对数据库的操作。而从数据库角度来说,我们的业务无非就是读或写两种类型。对于写多读少的业务,大家可能较少碰到,优化的手段可能也不太熟悉,这也是我们要讲解的重点。
2025-01-13 23:28:08
729
原创 天机学堂笔记1-网关拦截器获取用户信息保存到ThreadLocal
其次,用户突然断开或者切换设备,续播的时间误差不能超过30秒,那播放进度的记录频率就需要比较高。我们会在前端每隔15秒就发起一次心跳请求,提交最新的播放进度,记录到服务端。这样用户下一次续播时直接读取服务端的播放进度,就可以将时间误差控制在15秒左右。编写一个SpringTask定时任务,定期检查learning_lesson表中的课程是否过期,如果过期则将课程状态修改为已过期。”) //秒分时日月周年。首先,要做到切换设备后还能续播,用户的播放进度必须保存在服务端,而不是客户端。有哪些可以改进的方向?
2025-01-13 20:46:22
951
原创 DP动态规划+贪心题目汇总
说明i前面没有一个满足 i 说明没有跳板能跳到i的。不要第i家的最大金额:u[i]=max(u[i-1], s[i-1]) 也可能不要第i-1家,也可能要。//f[i][j]表示能否从 nums中前i个 选出一个和恰好等于 j 的子序列.这不就是01背包。要第i家的最大金额:s[i] = u[i-1]+nums[i];从i能跳到last,那么,dp[i]就是dp[last]+1。由于f[i]只和f[i-1] g[i-1]有关,可用两个变量存。
2024-12-26 20:51:19
886
原创 Redis实战--黑马点评
SETNX是实现分布式锁的基础命令,通过它可以实现原子性操作来控制锁的获取。确保设置锁的有效期,防止死锁。使用UUID确保锁值的唯一性,防止误释放锁。分布式锁–redisson中:Redisson提供了.分布式锁的多种多样功能可重入锁(Reentrant Lock)公平锁(Fair Lock)…
2024-12-25 16:07:03
943
原创 力扣刷题【研一暑假呜】
而 n%c==0 即 slow 在环里面走的距离是环的周长的整数倍,就回到了环的入口了,而入口就是重复的数字。//candidates[j] == candidates[j - 1]是同层的,所以答案中仍然会有[1,1’,2]这样的,但是不会存在[1’,1,2]hash是统计每个元素出现次数,s是统计出现次数的个数,比如[1,1,2,2,3] s[2]=2,s[1]=1。解释:8 个乘积小于 100 的子数组分别为:[10]、[5]、[2],、[6]、[10,5]、[5,2]、[2,6]、[5,2,6]。
2024-12-20 23:00:23
748
原创 寒假刷代码随想录
给你一个 非严格递增排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。给你一个数组 nums 和一个值 val,你需要 原地 移除所有数值等于 val 的元素,并返回移除后数组的新长度。给你一个按 非递减顺序 排序的整数数组 nums,返回 每个数字的平方 组成的新数组,要求也按 非递减顺序 排序。数组的元素在内存地址中是连续的,不能单独删除数组中的某个元素,只能覆盖。给你一个整数数组 fruits ,返回你可以收集的水果的 最大 数目。
2024-02-03 16:57:13
1004
1
原创 【论文阅读】Learning to Rank Proposals for Siamese Visual Tracking
目标追踪主要对loss进行了改进
2023-03-12 21:42:39
1263
1
原创 【论文阅读】Research on video adversarial attack with long living cycle
视频对抗攻击--利用了视频编码+优化
2023-03-02 20:40:51
1211
1
原创 【论文阅读】 Few-shot object detection via Feature Reweighting
Few-shot object detection的开山之作之一
2023-02-18 21:32:08
1668
1
原创 【论文阅读】Frustratingly Simple Few-Shot Object Detection
Few-shot object detection
2023-02-17 20:23:15
1266
1
原创 计算机操作系统 - 磁盘管理&链接
计算机操作系统 - 设备管理计算机操作系统 - 设备管理磁盘结构磁盘调度算法1. 先来先服务2. 最短寻道时间优先3. 电梯算法磁盘结构盘面(Platter):一个磁盘有多个盘面;磁道(Track):盘面上的圆形带状区域,一个盘面可以有多个磁道;扇区(Track Sector):磁道上的一个弧段,一个磁道可以有多个扇区,它是最小的物理储存单位,目前主要有 512 bytes 与 4 K 两种大小;磁头(Head):与盘面非常接近,能够将盘面上的磁场转换为电信号(读
2022-12-31 16:27:31
637
原创 密文检索论文阅读
保序加密OPE 算法,密文检索“best-possible” security, i.e.,IND-OCPA security. It means that the ciphertext should reveal nothing about the underlying plaintexts other than the ordering.
2022-12-31 16:24:12
1238
1
原创 论文阅读Adversarial Sticker:Stealthy Attack in the Physical World
对抗样本在物理环境
2022-09-24 23:54:19
1168
4
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人