自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 黑马点评详细笔记 -- 分布式锁

Redisson是一个在Redis基础上实现的java驻内存数据网络,不仅提供了一系列分布式的java常用对象,还提供了许多分布式服务。的锁(使用同一个锁监视器),用于在多个节点之间协调对共享资源的访问,确保在任意时刻只有一个节点能够执行特定的操作。Redis的Lua脚本:在一个脚本中编写多条Redis命令,确保多条命令执行时的原子性。是 Redisson 提供的一种分布式锁机制,允许同时操作多个锁,确保所有指定的锁都被成功获取后才能执行业务逻辑。误删问题指的是一个线程或进程删除了本不应该由它删除的锁。

2025-12-24 19:20:04 878

原创 力扣刷题 -- 手撕进制转换的核心逻辑

正整数:除基取余,逆序排列(通用);负整数(补码):位运算逐段截取(适配计算机存储规则);小数:乘基取整,顺序排列;力扣题技巧:优先考虑位运算(高效),特殊进制需适配余数/商的计算规则。其实进制转换就像“翻译”,把数字从十进制的“语言”翻译成其他进制的“语言”,掌握了核心规则,再奇葩的进制题也能轻松拿捏!

2025-12-22 22:09:53 592

原创 黑马点评详细笔记 -- 优惠券秒杀

当这些请求涉及到共享资源(如数据库记录、缓存项等)的操作时,如果没有适当的同步机制,就可能出现并发安全问题。注意:封装为方法后,在方法内加锁,方法上加事务。当方法执行后事务才会提交,但在此之前锁已经释放了,此时会有其他线程进入,依然存在线程安全问题。弊端:成功率过低,线程同时查到库存,但只有一个线程能修改,其他默认失败,但业务能实现成功扣减。要求同一优惠券,一个用户只能下一单:先于扣减库存之前判断,但一定要保证操作的原子性。解决:先获取锁,再进入方法执行下单操作,保证事务提交后锁才会释放。

2025-12-18 21:16:41 679

原创 黑马点评超详细笔记 -- 缓存

在查询数据库之前添加判断是否为空值的判断:如果之前查询过不合理数据,Redis缓存已置为null,再次发送时从Redis中查询到的是null,此时通过该判断直接返回错误信息,不再查询数据库,能有效防止大量无效请求打到数据库。在缓存中存储空值或特殊标记:当数据在缓存和数据库中都不存在,到达数据库后数据库返回一个空值null缓存在Redis,此时用户再次发送不合理请求会直接从Redis中得到null值(可设置一个短期有效时间TTL)。在数据发生变化时,应用程序主动维护缓存的一致性,一致性好,但维护成本较高。

2025-12-12 21:38:04 919

原创 黑马点评超详细笔记--短信登录 + 代码创新

问题:登录时需要检验验证码和手机号,所有用户的验证码都存储在同一个键下,可能会出现用户登录其他手机号的风险,以及用户A获取验证码后,用户B使用相同验证码登录。调用链路:用户提交手机号和验证码 --> 系统从 Redis 中获取验证码进行验证 --> 验证成功后创建用户或查询现有用户 --> 返回 JWT 令牌给客户端。校验手机号和验证码 --> 根据手机号查询用户 --> 不存在创建新用户 --> 保存用户到数据库。:是一种服务器端的存储机制,用于跟踪用户的会话状态。(不合法提醒重新输入手机号)

2025-12-09 20:53:43 893

原创 LeetCode动态规划题解(2)

dp[i][j] 表示从起点(0, 0)到达(i, j)的路径总数。3、

2025-12-06 23:35:03 950

原创 LeetCode刷题动态规划---Java

动态规划(Dynamic Programming,简称 DP)是算法面试中的 “高频王者”,核心优势是通过 “记忆化存储” 避免重复计算,将复杂问题拆解为重叠子问题,用递推方式高效求解。它不像贪心算法那样 “短视”,也不像暴力搜索那样 “低效”,而是介于两者之间的 “聪明解法”—— 关键在于找到问题的 “状态” 和 “状态转移规律”。

2025-12-06 23:34:41 334

原创 后端项目打包(Spring boot + 数据库 + nginx + 静态前端)

解决:(1) 使用 mvn dependency:tree (Maven)或 gradle dependencies (Gradle)分析依赖树,排除冲突的依赖。2、编辑nginx配置文件:在location中配置前端打包后的静态资源存放路径;打包完成后,Jar 包生成在项目根目录的 target 文件夹下,文件名一般为 项目名-版本号.jar。在开发环境中,使用数据库管理工具导出数据库的结构和初始数据。在项目的pom.xml文件中,确保引入了Spring boot的Maven打包插件。

2025-11-23 21:55:21 243

原创 算法思路积累----快速幂

当给出的幂运算过于大时,使用循环疯狂相乘,要么超时炸内存,要么数字大到直接溢出,这就是普通幂运算的弊端,而快速幂,就是专治各种疑难杂症的"妙算大神"。

2025-11-11 21:19:01 602 1

原创 LeetCode刷题--Java

定义first与second,表示一二层方法数,当楼梯阶数大于3时进入循环,third = first + second即每一层等于前两层相加。分析:从第三项开始,都等于f(n-1) + f(n-2),返回fib(n - 1) + fib(n - 2),反复调用函数,再返回递归调用逐步返回并计算最终结果。创建一个长度为n + 1的数组,从0开始存储,则第n个数就对应数组索引为n的值。缺点:存在大量重复计算,时间复杂度较高,导致性能问题。规律:除一二层外,每一层都等于其前两层方法数相加。

2025-03-02 21:04:50 283

原创 JavaScript案例--随机点名

设置事件监听,在监听函数内设置定时器(500毫秒更新一次),实现随机展示学生姓名,此时问题界面隐藏(qst.style.display='none'),选人界面显示(name.style.display='block'),random为生成的随机数,生成[0,students)之内的随机整数,方便数组选人;qsts: begin.disabled = false, end1.disabled = false,将已禁用的按钮启用(当学生均被选到时按钮禁用,在刷新问题时要重新启用按钮);

2025-02-14 19:37:05 631

空空如也

空空如也

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

TA关注的人

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