互动
最近评论
正在加载中...

昨天和朋友们度过了一个十分快乐的周末!!!

前天和朋友自驾去了宝泉,还一起烧烤了,感觉真的是太爽了!!!

学习底层源码 刷题的解析 面试八股文

https://github.com/doocs

五一过的好快啊,今天好困啊

抢到张杰郑州演唱会门票喽!!!

互联网公司常用框架源码赏析

读尽天下源码,心中自然无码 (gitee.io)

Java+redis,满足输入错误次数锁定账号

// 解析 JWT 获取用户 ID
Claims authorization = new JwtTokenUtil().parseToken(request.getHeader("authorization"));
Integer userId = Integer.parseInt(authorization.getSubject());

// Redis Key 的构建,存储格式为 "user:failed_attempts:{userId}"
String redisKey = "user:failed_attempts:" + userId;

// 检查 Redis 中是否有该用户的查询失败记录
String failedAttemptsStr = (String) redisService.get(redisKey);
Integer failedAttempts = failedAttemptsStr != null ? Integer.parseInt(failedAttemptsStr) : null;

if (failedAttempts != null && failedAttempts >= 5) {
    // 如果失败次数达到5次,返回锁定信息
    Long remainingTime = redisService.getExpire(redisKey, TimeUnit.MINUTES);
    return ResultData.fail("500","查询失败,次数已达上限,请在 " + remainingTime + " 分钟后再试。");
}

// 构建查询条件
QueryWrapper<ASchoolMessagePeople> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("leader_group_id_card", idCard)
        .or()
        .eq("advisor_teacher_card", idCard)
        .or()
        .eq("competition_people_card", idCard);

// 查询数据库
List<ASchoolMessagePeople> schoolMessagePeople = schoolMessagePeopleMapper.selectList(queryWrapper);

if (CollectionUtils.isEmpty(schoolMessagePeople)) {
    // 如果没有查到信息,更新 Redis 中的失败记录
    if (failedAttempts == null) {
        failedAttempts = 1;
    } else {
        failedAttempts++;
    }

    redisService.set(redisKey, String.valueOf(failedAttempts), 30, TimeUnit.MINUTES);

    int remainingAttempts = 5 - failedAttempts;
    return ResultData.fail("500","未找到相关信息,您还可以尝试 " + remainingAttempts + " 次。");
}

// 查询成功,删除 Redis 中的失败记录
if (failedAttempts != null) {
    redisService.delete(redisKey);
}

上周抽中了个halo周边,发过来发现是个本子和两个不知道叫什么的圆饼

眼泪女王真的越看越好看,第五集直接就让我水元素充盈了阿TAT

发现一个list对象根据指定字段去重的代码,因为没太理解,所有就不写文章写在这里记录了

单独的方法

static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {
    Map<Object,Boolean> seen = new ConcurrentHashMap<>();
    //putIfAbsent方法添加键值对,如果map集合中没有该key对应的值,则直接添加,并返回null,如果已经存在对应的值,则依旧为原来的值。
    //如果返回null表示添加数据成功(不重复),不重复(null==null :TRUE)
    return t -> seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;
}

使用

List<PlantEExam> newList = new ArrayList<>();
plantEExams.stream().filter(distinctByKey(PlantEExam::getExamId)) //filter保留true的值
        .forEach(newList::add);

plantEExams是需要去重的集合

空谈误国,实干兴邦

现在真是乱穿衣的季节阿,早上看到了穿短袖的,旁边就是穿小袄的

rmdir /s 文件夹名

cmd强制删除文件夹

Java 运算符——&,&& (AND) || (OR) 逻辑运算符

高木同学为什么会这样子对西片阿呜呜呜我好酸,我也好想遇到属于我的高木同学阿 TAT

你好呀我的朋友
很高兴见到你
欢迎来到我的博客
实用文章推荐(持续更新)
kettle基础使用(两个表字段不同的数据迁移)
IDEA 实用插件推荐
Java 汉字转拼音 (巨简单版)
Twikoo 使用指南
主题友链页 免责声明 代码分享
 通过sql语句实现查重功能
Mybatis 实时获取到数据库的自增id
你好啊!
avatar
avatar

你好呀
很高兴可以在这里见到你
接下来
就让我们一起学习进步吧!

小板报
音乐天地
最新评论
文章数 :
26
访问量 :
3757
建站天数 :
2024-04-13
引用到评论