写了 7 年代码,第一次见这么狗血的小 Bug!

这篇具有很好参考价值的文章主要介绍了写了 7 年代码,第一次见这么狗血的小 Bug!。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刚刚修我们鱼聪明 AI 助手平台的一个 Bug,结局很狗血!赶紧给大家分享一下,顺便也分享下标准的排查 Bug 思路。

事情是这样的,有小伙伴在鱼聪明平台(https://www.yucongming.com)创建了一个 AI 助手,名称为【软件开发人员】。当我搜索 “软件开发” 时,能搜出这个模型:

写了 7 年代码,第一次见这么狗血的小 Bug!

结果搜索 “软件开发人员”,也就是助手的全名称时,竟然搜不出结果了?!

写了 7 年代码,第一次见这么狗血的小 Bug!

遇到这种事,先从前端出发:第一时间确认前端发送的请求参数是否正确。

按 F12 打开网络控制台,发现搜索关键词传的没毛病:

写了 7 年代码,第一次见这么狗血的小 Bug!

然后鱼皮顺着网线爬到后端,先要确认一下从数据库中有没有查出最原始的数据,再考虑是不是被业务代码过滤掉了。

在本地开启数据库的查询日志,用的是 MyBatis Plus 框架,开启日志的代码如下:

mybatis-plus:
  configuration:
    map-underscore-to-camel-case: false
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

再次执行搜索,打印出的 SQL 记录如图:

写了 7 年代码,第一次见这么狗血的小 Bug!

把参数拼到 SQL 语句模板中,就是 name like ‘%软件开发人员%’,看上去没有任何问题。

再次验证,接下来我们把拼接好的 SQL 放到数据库控制台进行真实查询:

写了 7 年代码,第一次见这么狗血的小 Bug!

结果查询结果为 0:

写了 7 年代码,第一次见这么狗血的小 Bug!

奇怪了,难道数据库中没有这条记录?但是为啥搜索 “软件开发” 的时候,能搜出这个助手呢?

然后我又用助手的 id 去数据库中查询,发现确实有名称为 “软件开发人员” 的数据。

写了 7 年代码,第一次见这么狗血的小 Bug!

气了气了,为啥查不出来啊?!大家也可以猜一猜。

这个时候我其实已经有想法了,难道是数据库中存储的 name 和我们看到的 name 格式(或者字符)不一致?于是我就从数据库中把 name 的值复制出来,如图:

写了 7 年代码,第一次见这么狗血的小 Bug!

结果,从数据库中复制出来的 name 作为查询条件,是能查出结果的!

于是就有了下面这张神奇的截图,两个 “一模一样” 的 SQL 语句,一个有结果,一个没结果:

写了 7 年代码,第一次见这么狗血的小 Bug!

基本就可以确认了,此 “软件开发人员” 非彼 “软件开发人员”,这两个字符串是不一致的!

于是我分别用这两个字符串来生成 MD5 Hash 码,发现 Hash 码不同,说明原字符串不同。

写了 7 年代码,第一次见这么狗血的小 Bug!

再进行更精确地对比,发现是 “人” 字不同:

写了 7 年代码,第一次见这么狗血的小 Bug!

坑啊!谁能看出来这两个 “人” 字有区别!

到底有啥区别呢?问下鱼聪明 AI 吧~

结果一秒破案:原来第一个 “人” 是全角字符,这真的是。。。泰裤辣!

大概整个案件就是这样。所以说,我们看到得未必是真实的,这个 Bug 让我想起了很多朋友初上大学时经常把中英文逗号、中英文冒号搞混,这种 Bug 真是让人哭笑不得。希望各位程序员朋友们,尽量不要遇到吧,遇到了的话,想想我这篇文章,说不定就有了解决的思路呢。

鱼聪明AI - 做您强大的AI助手文章来源地址https://www.toymoban.com/news/detail-468812.html

到了这里,关于写了 7 年代码,第一次见这么狗血的小 Bug!的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 新学期第一次课

    在信息化飞速发展的今天,大数据技术的应用日益广泛,其重要性也日益凸显。对于大数据学院的同学来说,掌握行业前沿技术是至关重要的。本篇文章将详细指导同学们如何加入QQ群、云班课,并学会使用思维导图和CSDN博客。 我们有两个QQ群,分别是2021计应1班行业前沿技

    2024年02月10日
    浏览(43)
  • 树莓派第一次开机

    树莓派由英国的树莓派基金会发行,旨在通过发行这个廉价开源的可随意破解的微型计算机,推动中小学编程教育,发行之后很快在全世界的开源创客圈中流行。截止到2018年10月,最新版本的树莓派主板是3B+,国内某宝上卖230元左右,还有更微型的树莓派主板Zero,国内某宝卖

    2024年02月13日
    浏览(51)
  • 第一次作业

    作业内容:1,atd和crond的区别                   2,指定在2023/08/26 09:00将时间写入testmail.txt文件中                   3,指定在每天凌晨4:00将该时间点之前的系统日志信息备份到个目录下(/var/log/messages ),备份后日志文件名显示格式logfileYY-MM-DD HH-MM 1、运行方式不同

    2023年04月20日
    浏览(45)
  • shell第一次作业

    1、判断当前磁盘剩余空间是否有20G,如果小于20G,则将报警邮件发送给管理员,每天检查次磁盘剩余空间。 2、判断web服务是否运行    1、查看进程的方式判断该程序是否运行,    2、通过查看端口的方式判断该程序是否运行,如果没有运行,则启动该服务并配置防火墙规

    2024年02月09日
    浏览(46)
  • 第一次PR经历

         

    2024年02月13日
    浏览(46)
  • python 第一次作业

    因为笔者有一些 c/c++ 语言的基础,所以应该学 python 会稍微简单一些 输入的时候所有的输入都是字符串类型,我们需要进行类型转换 参见资源里面的第三题和第四题,为了方便起见,直接把代码贴在下面

    2024年03月25日
    浏览(55)
  • 第一次博客作业

    这学期才开始接触Java,之前只学了C语言,所以一开始写题目的代码的时候对Java的众多函数和语法不是太熟悉,一开始就上手写代码有点不适应。 ​  关于类: 1、类似C中的struct,构造函数、内置方法(函数 )都比较相似 2、尽量避免代码的重复,把private和public的方法搞清晰。

    2024年02月08日
    浏览(62)
  • 电脑第一次使用屏幕键盘

    操作流程 1.在键盘上同时按Win+R打开运行; 2.输入 control 3.找到设置中心 4.点击屏幕键盘 效果 具体怎么使用 我不咋清除 简单 测试了一下 可以用鼠标点击屏幕键盘的按键 用键盘 按字母键和数字键 是和屏幕键盘不同步的 其他 tab、shift、后退、enter好像同步

    2024年02月14日
    浏览(66)
  • 网络安全第一次作业

    1、什么是防火墙 防火墙是一种网络安全系统,它根据预先确定的安全规则监视和控制传入和传出的网络流量。其主要目的是阻止对计算机或网络的未经授权的访问,同时允许合法通信通过。 防火墙可以在硬件、软件或两者的组合中实现,并且可以配置为根据各种条件(如

    2024年02月07日
    浏览(49)
  • java第一次作业(一)

    知识点: 考查java的输入格式以及for循环 java格式 注意Main与main 代码: 知识点: for循环 数组 /输入数组 /数组比大小 代码: 知识点: println与print区别:println是输完之后转行 重点: 多重for循环 代码: 知识点: 调用函数 booean函数 重点: Scanner输入 代码: 知识点: 最后又有

    2024年03月25日
    浏览(63)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包