周末在家值班,解决几个月前遗忘的Bug

这篇具有很好参考价值的文章主要介绍了周末在家值班,解决几个月前遗忘的Bug。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题:

周末被迫在家值班,无聊之际打开尘封已久的Bug清单,发现有Bug拖了几个月还没解决…
场景是这样子的,有个功能是拿Redis缓存热点数据进行展示,暂且称它为功能A,有个另外的功能B,它会去更新缓存中这个热点数据,另外有定时任务去执行缓存数据持久化
按理说这样子设计是没得问题的。不会出现数据一致性问题(信誓旦旦


现象:

可是问题就出在功能B更新缓存数据后,功能A展示的还是旧数据,且查看Redis缓存数据是已经更新了的 !
那为啥功能A还能拿到旧的缓存数据呢?而且还是有时会有时不会!搁着给我卡bug是吧!
当时硬是没排查出原因,把问题定位在了网络请求不稳定上面,因为控制台报了 Command timed out after 8 second(s) 这个问题,有时候请求一直掉队!
哎。后面就只是记录下来这个问题,没再去探究过了,直至今天有幸,公司给了这个“值班”机会,我才又重新去针对它!


原因

我使用了Java的stream流式操作,但是忘记加终止操作,导致流式操作过程并没有执行,所以我功能A从缓存拿数据就是不可能的!
那为啥有时候有可以了呢 ?!?
🐎嘚,我还有个定时任务呢,一分钟执行一次!靠了,当时没记起来这茬,行,马上给你这流式计算终止掉!
可恶啊,忘记去collect 终止操作来将stream映射的结果进行收集了,小样,拿捏你!
stream在Java中是一种延迟计算的操作,只有遇到终止操作,才会触发中间操作


解决步骤:

1、终止流式计算
2、排查新问题,空指针!

一、终止流式计算

在代码块后面加collect(Collectors.toList())收集结果即可
当我信誓旦旦去启动项目时,访问报错空指针…

二、排查新问题

空指针还不好解决么?小菜一碟!

我有一个map,键值对类型是Map<String, Integer>
在流式计算中,我使用get(key)方式去拿map中的value
因为拿到的数据是个Integer,我对象的属性是long类型,所以我给他转了一下。这玩意你跟我说会失败,开玩笑咯。
结果返回null…

难道真的是我map缓存中没有此值吗?

我在方法执行开头 和 流式计算里面都打印map信息
Map.forEach((key,val) -> log.info("Map:{}","key:"+key+";val:"+val))

结果你猜怎么着,数据一样,我的天

奇了怪了,咋地会发生这种逆天的事情呢?

问了一下GPT,他说这个现象很奇怪🤣

周末在家值班,解决几个月前遗忘的Bug,项目搭建问题,bug

后面还是死活找不到问题,上了个厕所回来后发现我tm对象的id属性是long类型的,我拿一个long类型的值去一个key是String类型的map去查,查都出东西就有鬼咯!肯定得先toString一下再去查啊!

Map.get(obj.getId().toString()).longValue(); 这样子才是正确的啊!
起初用的Map.get(obj.getId()).longValue(); 疯了已经…文章来源地址https://www.toymoban.com/news/detail-631017.html

这代码敲的属实太不严谨了那时候,人都给看懵了,还好,问题终于解决!

到了这里,关于周末在家值班,解决几个月前遗忘的Bug的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java根据当前时间或指定时间获取前后几天或前后几个月或前后几年的时间

    获取前后几天 获取前后几个月 获取前后几年 获取前后几天 获取前后几个月 获取年后几年

    2024年02月15日
    浏览(44)
  • 以前编写好能够正常运行的 SAP UI5 代码,几个月后忽然不能运行了该怎么办?

    以笔者本套教材为例,每一步骤的源代码都托管在本人 Github 仓库里,每次上传之前,都确保本地测试通过。 但笔者编写过程中发现,之前测试通过的代码,可能几个月之后再执行,就会遇到白屏现象,即应用无法正常加载,或者无法在调试模式下正常加载。 举个具体的例子

    2024年02月03日
    浏览(37)
  • 【嵌入式】ESP32几个反复重启的bug记录

    最近在使用ESP32开发一些无线应用,在经历重重困难能够顺利编译-下载工程后,尝试把STM32中的程序移植到ESP32中,但由于对FreeRTOS系统了解不够深入,所以遇到了很多导致板子一直Rebooting的bug,在此记录一下。 在创建一个消息队列时需要给出队列长度,同时也需要相应的读取

    2023年04月08日
    浏览(46)
  • Cisco路由器密码忘记了怎么办 CISCO路由器口令遗忘解决方法

    Cisco 路由器在网络互联中得到广泛的应用,其中2500系列路由器更是在低 端用户中被大量采用。那么,如果你不慎将2500系列路由器的超级用户密码忘掉 了,怎么办呢?不要怕,只要你按如下方法就可以恢复: 准备工作: 一台微机运行终端仿真程序(可以在Windows 95/98下启动超

    2024年02月06日
    浏览(49)
  • 电脑无法开机的6大原因,5招在家轻松解决

    电脑无法开机是我们在使用电脑时常常会遇到的问题之一。当我们按下电源按钮,却发现电脑没有任何反应,或者只是黑屏一片,这时候我们就需要找出问题的原因,并采取相应的解决方法。在本文中,我将为你介绍电脑无法开机的六大常见原因,并提供五招轻松解决的方法

    2024年02月08日
    浏览(36)
  • 监控室值班人员脱岗睡岗识别算法 yolov7

    监控室值班人员脱岗睡岗识别算法基于Yolov7深度学习神经网络算法,监控室值班人员脱岗睡岗识别算法模型可以7*24小时不间断自动人员是否在工位上(脱岗睡岗玩手机),若人员没有在工位,系统则立即抓拍告警,算法鲁棒性强。YOLOv7 的发展方向与当前主流的实时目标检测

    2024年02月05日
    浏览(90)
  • 机器学习:争取被遗忘的权利

    随着越来越多的人意识到他们通过他们经常访问的无数应用程序和网站共享了多少个人信息,数据保护和隐私一直在不断讨论。看到您与朋友谈论的产品或您在 Google 上搜索的音乐会迅速作为广告出现在您的社交媒体提要中,这不再那么令人惊讶。这让很多人感到担忧。 最近

    2024年02月10日
    浏览(50)
  • kali 登录密码遗忘/kali登录密码重置

    重新启动或启动时进入主菜单,如图: 在主菜单界面按E键,进入GNU GRUB(操作系统启动管理)界面,如图: 修改【ro quiet splash】为【re quiet splash \\\'init=/bin/bash\\\'】,所在位置如图: 按F10进入密码重置页,如图 重置密码 输入passwd 输入新密码,界面上隐藏输入字符 再次输入新密

    2024年02月05日
    浏览(36)
  • 第二章:指令:计算机的语言(防遗忘)

    指令 :计算机硬件所能理解并服从的命令。 存储程序概念 :多种类型的指令和数据均以数字形式存储于存储器中的概念。 字 :计算机中的基本访问单位,通常是32位为一组,在MIPS体系结构中与寄存器大小相同。 数据传送指令 :在存储器和寄存器之间移动数据的命令 地址

    2024年02月05日
    浏览(47)
  • 2023在家赚钱怎么做,有什么适合在家做的副业项目

    每天努力工作,但是每个月都存不到钱吗?其实存钱只有两种方式:开源或者节流。如果你每个月都没有开销,但是月底存不了钱,你需要思考如何开源。下班后不要平躺,做一些副业,每个月可以赚更多的收入。让你摆脱死工资,不用出门在家赚钱!   1.做微信公众号赚钱

    2024年02月11日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包