- 博客(8)
- 收藏
- 关注
原创 关于token生成
最近在一个老师那里了解到了使用MD5生成token令牌,而不是采用传统复杂的jwt令牌生成,tokenUserInfoDto.getUserId()+ StringTools.getRandomString(Constants.LENGTH_20)这里通过拼接用户id,getRandomString生成随机数字,拼接起来再通过MD5加密生成最后的token.这种方式生成token可以应用再中大型项目,经测试每秒并发生成token百万可以保持极低概率重复。
2025-03-28 22:55:09
809
1
原创 rabbitmq延时插件
使用rabbitmq的延时插件实现延时消息下载插件,一般是 ,ez 结尾的文件使用延时消息1.声明延时交换机在代码中声明一个延时交换机,指定其类型为 x-delayed-message,并设置其路由类型。2.发送延时消息在发送消息时,通过设置消息的 headers 属性来指定延时时间 (单位为毫秒)
2025-03-22 18:49:04
1156
原创 死信消息(队列ttl+死信exchange)
在rabbitmq中消息被认定为死信一般由一下几种情况发生:1.消息被消费者拒绝(通过或basic.nack),并且设置。2.消息过期,即消息在队列中的生存时间TTL 超过了设置的限制,3.队列已满,导致消息被丢弃死信exchange:死信交换机的使用可以帮助避免消息的丢失,并提供了重试和诊断问题的机制。当消息成为死信后,会被发送到死信交换机,并通过该交换机的路由规则投递到绑定的死信队列。死信交换机可以是任何一种常见类型的交换机,例如Direct Exchange。
2025-03-22 17:24:13
558
原创 双拦截器实现登录校验
第一个拦截器获取token,执行刷新,保存用户信息到ThreadLocal中,如果token为null或为空,我们直接放行,所以所不管有没有token第一个拦截器放行,它主要作用是将用户信息存到ThreadLocal中,第二个拦截器我们执行校验token,直接从ThreadLocal中获取用户信息,不存在,拦截,存在,放行,这样我们使用双拦截器,使得我们在用户登录之后每次刷新首页token都会被刷新不需要重新登录。2.查询Redish的用户,不存在,则拦截。2.查询Redish的用户,不存在,则拦截。
2025-03-17 23:07:27
391
原创 Spring Data Redis 的地理空间查询
少了一个s,这两个是两个不同的类, 第一次我们调用getContent()方法得到的是List<T>集合,这是我们的----多个店铺结果集-----,再进行遍历得到我们单个店铺结果集这里直接叫做---结果集---,第二次我们调用getContent()得到的是我们的-----具体结果列表,它俩的区别是:结果集== 具体结果列表+元数据(元数据也就是。<RedisGeoCommands.GeoLocation<String>>>集合对象,这里我们还用一次getContent(),为什么。
2025-03-15 22:18:47
362
原创 今天学习以下滚动分页查询
分页查询根据集合中score值来查询。其中 Max 是指从最大score开始查,Min指的是查询到最小的哪个score值的位置,offset 指 在[Max,Min]这个区间我需要查询的开始位置,而count指在[Max,Min]这个区间查询结束位置,跟分页查询的pageSize是一个意思。服务器实现数据分页查询,并返回给前端。下面是一段Java 实现滚动查询的逻辑。实现滚动查询主要考虑的参数主要有三个,data:查询出来的数据,offset:偏移量,mintime: 就是指score的Max值的位置。
2025-03-15 00:27:11
216
原创 使用Java8中streamApi 处理集合数据
这段代码是典型的使用streamApi来处理集合数据的代码,下面分段分析:首先申明top5是我使用redis对key进行查询查出来的一个Set集合,这里写的不是很明白。因为它是一个Set集合所以他可以调用stream(),原因是Set集合有实现Stream接口的方法我们就可以调用stream()。调用stream()方法,我们可以把top5转换成一个stream流,流是Java8引入的一种高级迭代器,与传统的循环和迭代器相比,Stream提供了更简洁、更高效、更易于并行化处理的方式。
2025-03-13 11:39:13
365
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅