闭坑
老任与码
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Spring Retry
Spring Retry 是 Spring 中提供的实现重试功能的组件。可以使用基于注解的方式实现,也可以使用基于RetryTemplate的编程方式实现。本例使用基于注解的方法。原创 2025-10-16 15:34:10 · 319 阅读 · 0 评论 -
RRateLimiter的使用
工具类/*** 获取客户端真实IP地址*/// 1. 检查各种代理头信息// 2. 直接获取远程地址throw new RuntimeException("无法获取远程ip地址");/*** 验证IP地址是否有效*/return ip!= null &&!!!!/*** 处理多个IP的情况(如X-Forwarded-For: client, proxy1, proxy2)*//*** 通过token获取用户id* @return*/原创 2025-09-27 17:49:05 · 382 阅读 · 0 评论 -
@RequiredArgsConstructor使用
spring推荐通过构造方法进行注入,如果需要注入的成员变量较多,手动创建构造方法可能需要频繁修改,这时,可以使用@RequiredArgsConstructor。@RequiredArgsConstructor是lombok中提供的注解,可以为类中final或者@NotNull修饰的成员变量创建构造方法。查看编译后的源码,可以看到自动生成了带一个Cat参数的构造方法。原创 2025-09-13 23:23:07 · 235 阅读 · 0 评论 -
使用Aop和自定义注解实现SpringTask定时任务中加锁逻辑的封装
但是,项目中可能存在很多定时任务,每次使用RLock加锁比较麻烦,我们可以使用AOP+自定义注解的方式进行优化。SpringTask的定时任务,在集群环境下会多次执行,我们可以通过使用分布式锁的方式进行解决。原创 2025-09-13 21:48:15 · 298 阅读 · 0 评论 -
监听nacos配置中心数据的变化
如果需要监听nacos配置中心数据的变化,并执行对应的业务逻辑,则可以使用@NacosConfigListener注解。另外启动类或者配置类使用@EnableNacosConfig进行修饰。@RefreshScope实现nacos配置中心数据的动态刷新。@NacosConfigListener的使用。原创 2025-08-30 15:40:52 · 285 阅读 · 0 评论 -
nacos登录认证
注意:配置中nacos的用户名故意写错配置中心test.yml的配置如下:启动项目,日志中会有报错,但是项目可以正常启动,执行控制层方法,可以获取配置中心的值。原创 2025-08-29 19:01:50 · 280 阅读 · 0 评论 -
Aviator规则引擎简单使用
网上看到一个案例“非VIP用户满200减30,VIP用户满150减40,且周二全场额外95折”,针对该需求,使用if进行判断也可以实现,本例使用aviator实现。直接通过字符串设置表达式,可读性不好,我们可以定义一个.av后缀的文件,比如在resources目录下新建discount.av。严格来说,aviator属于表达式计算框架,其语法和JavaScript很像。规则引擎是一个更复杂的系统,它的核心是将业务规则与应用程序代码分离,并基于大量数据和规则进行自动化推理和决策。原创 2025-08-25 17:03:34 · 541 阅读 · 0 评论 -
jd-hotkey将对象进行缓存
如果是热key,则存在两种情况,1是返回value,2是返回null。如果不是热key,则返回null,并且将key上报到探测集群进行数量探测。2.Object get(String key),该方法返回该key本地缓存的value值,可用于判断是热key后,再去获取本地缓存的value值,通常用于redis热key缓存。3.void smartSet(String key, Object value),方法给热key赋值value,如果是热key,该方法才会赋值,非热key,什么也不做。原创 2025-08-18 13:00:00 · 163 阅读 · 0 评论 -
jd-hotkey探测热点key
选择master分支下载。原创 2025-08-16 16:21:21 · 636 阅读 · 0 评论 -
RDelayQueue实现订单超时关闭
开发中,可能存在这样的需求:如果订单长时间不支付,需要自动关闭订单。针对该需求可以通过如下一些方案实现:通过定时任务定时扫描订单表,将达到过期时间的订单关闭;通过mq发送延迟消息;通过延迟队列实现。本例,通过redisson的RDelayQueue(分布式延迟队列)实现。原创 2025-08-14 16:10:16 · 306 阅读 · 0 评论 -
斐波那契散列
经过多次测试,计算索引时,length长度必须是2^n(本博客只展示了部分测试代码,读者可以自行测试其他长度)分布均匀性:利用黄金分割比的数学特性,能够使哈希值在地址空间中分布更加均匀。计算效率:在硬件实现上通常只需要一次乘法和位移操作,效率较高。缓存路由:在数据库索引或缓存系统中,提升查询效率。促销活动:为每个用户生成唯一优惠码,避免重复领取。减少冲突:相比传统除法散列,能有效降低哈希冲突概率。抽奖系统:生成公平的抽奖号码,确保概率均等。数组长度128,相当于2^8。原创 2025-08-10 17:28:37 · 451 阅读 · 0 评论 -
关于rocketmq消费超时重试
从源码我们可以看到,我们自定义的消费者代码中,执行逻辑时间设置的70s,cleanExpireMsg()方法每60s执行一次,有可能第一次执行时,方法内计算的(当前时间的时间戳 - consumeStartTimeStamp)的值小于60s,于是没有执行重发消息的操作。不得已,只能查看源码,ProcessQueue中有个cleanExpireMsg()方法,字面意思看,是清理过期方法,咱设置的consumeTimeout=1,于是每分钟会触发一次。当70s后,逻辑结束,消息进行了其他处理。原创 2025-08-02 10:11:34 · 337 阅读 · 0 评论 -
windows中rocketmq提示“service not available now, maybe disk full”解决
执行命令 mklink /D store D:\mq\store。删除用户目录下的store目录。以命令行方式启动cmd。原创 2025-08-01 08:49:15 · 261 阅读 · 0 评论 -
fastjson反序列化时_id的处理
从输出看到,json字符串的_id转为了java对象属性的id,这不是想要的结果。于是,修改java对象,使用了@JSONField(alternateNames = {"id"})属性。这篇文章中也提到了这个问题,于是使用 @JSONField(name = "_id", alternateNames = {"id"})注解。写程序时,借助fastjson,将map对象转为json字符串,然后再通过json字符串转为对应的java对象。结果转换后,结果还是不对,上网查了资料,可以看到,结果正确。原创 2025-07-29 17:58:36 · 272 阅读 · 0 评论 -
Redisson的布隆过滤器
判断某个元素是否存在时,也是根据m个hash函数进行运算,如果m个位置的元素都为1,说明元素存在,只要某个位置存在一个0,则说明不存在。由于hash冲突,布隆过滤器可以判断元素一定不存在,但是不能保证一定存在,其存在一定的误判率。向布隆过滤器中添加元素时,根据m个hash函数对元素进行运算,得到m个位置;解决redis缓存穿透,当判断不存在该数据时,直接返回;给出一个长度是n的数组,元素的值是0或者1;布隆过滤器用来判断某个元素是否存在。将这m个位置的元素设置为1;防止内容的重复推荐;原创 2025-07-27 16:17:21 · 403 阅读 · 0 评论 -
安装docker时,yum install -y yum-utils报错的解决
centos7,安装docker时,执行yum install -y yum-utils报错。1)进入/etc/yum.repos.d目录,删除其中所有文件。3)再次执行 yum install -y yum-utils。原创 2025-07-16 19:41:33 · 378 阅读 · 0 评论 -
关于微信小程序的真机调试
勾选掉"局域网模式",但要保证电脑和手机处于同一个局域网下,也就是说它们需要连接到同一个wifi。"切换真机模式2.0",根据自己手机的系统选择对应的选项。另外,需要勾选"不校验合法域名......"原创 2025-06-22 09:41:30 · 280 阅读 · 0 评论 -
关于uniapp解析SSE响应数据的处理
从展示效果看,返回的数据都以“data:”开头,而且数据都发生了换行。这是由于后端返回大模型响应的数据时,需要换行的数据中间也使用了"\n\n",这就和SSE的数据格式产生了冲突。其中,"100 97 116 97 58"表示"data:","10 10"表示"\n\n",而且根据响应数据,我们发现SSE客户端是一次处理一批后端响应的数据。通过uniapp开发与大模型对话的微信小程序,并且后端需要通过SSE向小程序返回响应数据。其中通过正则表达式替换所有的"data:"和"\n\n"。原创 2025-06-22 09:23:18 · 735 阅读 · 0 评论
分享