- 博客(14)
- 收藏
- 关注
原创 单例模式的枚举实现
单例模式是为了确保某个类只能有唯一的一个全局使用的实例。单例模式的实现方式有、以及。在这些实现方式中,枚举是最优的一种实现方式。枚举实现方式的优点在于:实现方式十分简洁、线程安全,而且最重要的,枚举实现方式能有效防止反序列化和反射对单例模式的破坏。下面一一说明。
2025-10-30 12:18:51
312
原创 不可重入锁的死锁问题
(因为锁已经被自己持有,且锁不记录 “持有线程” 的身份),因此,不是线程 “不能主动释放锁”,而是线程被自己持的不可重入锁阻塞了,根本没机会执行释放锁的操作(因为释放锁的代码在更外层的逻辑中,而线程已经卡在了内层的锁获取步骤)。是锁不能被线程主动释放?要解决这个问题,需要先了解什么是。具体来说,当一个线程已经持有锁时,如果它再次尝试获取这把锁,会被视为。(即 “不可重入”)。
2025-08-02 13:30:04
180
原创 Apifox中的401问题
突然就明白了:之前采用的是JWT令牌的登录验证方式,现在采用的是session会话的登录验证方式。这两个的token不是一个东西,session会话的token只是我们自己命的名,不是真的token,它代表的是前端代码中需要的的参数。熟悉的两个“."作为分隔,让我猛然想起了什么。把Redis中的token值添加进Authorization就好了。经过一番深思熟虑,我点开之前配置的token看了看,长这样。就算配置了token也依然响应401代码。以下是我解决问题的心路历程。
2025-07-30 16:16:41
560
原创 关于黑马点评p49“Redis实现全局唯一ID”中说的不清楚的地方
其实我个人认为是暴露不了的,因为我们最终返回的ID,是经过了位运算的,时间信息已经被混杂了、掩盖了,除非用户知道全局ID的前31位时间戳、序列号的前缀字符串("incr:keyPrefix"),不然是不能计算出时间信息的。如果仅对“incr:keyPrefix"进行自增的话,不管是什么时候下的单,比如今天下单、明天下单,甚至是明年下单,都是。在第2步“生成序列号”中,为了防止keyPrefix自增过大,添加了一个date。也就是说,需要让这个序列号进行变化,而不是写死的。进行计数,久而久之,
2025-07-30 11:15:23
228
原创 Java中lambda表达式不能修改局部变量
成员变量存储在堆内存中(与对象绑定),静态变量存储在方法区(与类绑定),它们的生命周期与对象 / 类一致,不会随方法结束而销毁。因此,lambda 对它们的捕获采用。了定义在其外部的变量时,Java 会通过特定规则 “捕获” 这些变量,确保 lambda 在执行时能正确访问到所需的值。局部变量存储在方法的栈帧中,当方法执行结束后会被销毁。因此,lambda 对局部变量的捕获采用。因此,对于成员变量/静态变量,可以再lambda函数中对其进行修改,修改操作直接作用于原变量,不存在 “副本不一致” 的问题。
2025-07-29 19:01:13
777
原创 黑马点评:For input string: “undefined“
因为这个问题是在处理session共享问题后出现的,当时对拦截器和登录验证部分的代码进行了改动,因此缩小问题代码出现的范围,在拦截器和登录验证两部分代码处加上了断点调试。,这里的请求路径本来应该是。前端的请求路径出现了。
2025-07-27 21:46:49
759
原创 Redis连接问题:ERR Client sent AUTH, but no password is set
查看服务启动界面,发现这里有一行警告,说我。进行身份验证,但 Redis 服务器。这是由于在Redis 客户端。再次运行测试代码,通过。
2025-07-25 21:33:58
355
原创 报错:Public Key Retrieval is not allowed
这个错误是由于MySQL 8.0默认使用caching_sha2_password认证插件,而旧版本的MySQL Connector/J不支持这种认证方式导致的。我的mysql下载的是8.x版本的,但这个项目中用的是5,x版本的,所以导致冲突。
2025-07-25 12:44:04
384
原创 Mapped Statements collection already contains value for...
在写工作台订单管理部分的API时,需要获取当天的订单管理数据。写的时候发现,之前已经写了一个订单管理数据的方法了,但是这个方法的形参中没有传入时间,仅根据订单状态获取。意思就是说mapper中的SQL语句已经有绑定的id了(countStatus),虽然我这里是注解,也同样会存在这个问题,因为使用注解时,mapper的id默认为方法名。这里可以将其进行修改,但是已经有3个用法了。于是想偷点懒,写一个重载方法。然后启动项目,进行接口测试。解决方式是在映射文件中写一个动态SQL。
2025-07-21 12:53:11
276
原创 解决苍穹外卖来单语音不播报的问题
意思就是说,因为没有首先与浏览器页面进行交互,所以播放失败。现代浏览器为了提升用户体验并减少不必要的流量消耗,通常会阻止自动播放音频或视频。如果界面没有来单/催单消息框,需要检查一下Websocket是否正常连接。本文探讨有消息弹窗但是语音不播报的问题。解决方法很简单,只需要在页面随意进行交互即可。然后再进行来单/催单功能测试,就能听到语音播报了。
2025-07-19 15:30:19
344
原创 /status/{status}——关于Swagger和Apifox/Postman等API测试工具的路径处理的区别
查资料,明白了是由于 Swagger 和 Apifox / Postman 等API测试工具的处理机制不同造成的。在 Apifox / Postman 中,使用真实值就好了。敲苍穹外卖时,对于视频中的路径参数的传递感觉有些困惑。我一直认为路径参数的传参方式,应当是直接写参数,例如。结果报 404 错误了。所以对这种方式感到好奇,用。,具体参数在下面以表单的形式给出。
2025-07-12 11:53:50
327
原创 报错:使用记录为@since 1.8+ 的API
进行重新设置,我这里报错是因为此时的语言级别为5,而我使用了LocalDateTime这个jdk 1.8后的新特性。经过查询,是项目设置时的问题。
2025-07-11 00:16:26
370
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅