国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

寫了 7 年代碼,第一次見這么狗血的小 Bug!

2023-06-02 14:16 作者:程序員魚皮  | 我要投稿

剛剛修我們魚聰明 AI 助手平臺的一個 Bug,結(jié)局很狗血!趕緊給大家分享一下,順便也分享下標準的排查 Bug 思路。

事情是這樣的,有小伙伴在魚聰明平臺(https://www.yucongming.com)創(chuàng)建了一個 AI 助手,名稱為【軟件開發(fā)人員】。當我搜索 “軟件開發(fā)” 時,能搜出這個模型:

魚聰明 AI 助手

結(jié)果搜索 “軟件開發(fā)人員”,也就是助手的全名稱時,竟然搜不出結(jié)果了?!

魚聰明 AI 助手

遇到這種事,先從前端出發(fā):第一時間確認前端發(fā)送的請求參數(shù)是否正確。

按 F12 打開網(wǎng)絡控制臺,發(fā)現(xiàn)搜索關鍵詞傳的沒毛?。?/p>

然后魚皮順著網(wǎng)線爬到后端,先要確認一下從數(shù)據(jù)庫中有沒有查出最原始的數(shù)據(jù),再考慮是不是被業(yè)務代碼過濾掉了。

在本地開啟數(shù)據(jù)庫的查詢?nèi)罩?,用的?MyBatis Plus 框架,開啟日志的代碼如下:

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

再次執(zhí)行搜索,打印出的 SQL 記錄如圖:

把參數(shù)拼到 SQL 語句模板中,就是 name like '%軟件開發(fā)人員%',看上去沒有任何問題。

再次驗證,接下來我們把拼接好的 SQL 放到數(shù)據(jù)庫控制臺進行真實查詢:

結(jié)果查詢結(jié)果為 0:

奇怪了,難道數(shù)據(jù)庫中沒有這條記錄?但是為啥搜索 “軟件開發(fā)” 的時候,能搜出這個助手呢?

然后我又用助手的 id 去數(shù)據(jù)庫中查詢,發(fā)現(xiàn)確實有名稱為 “軟件開發(fā)人員” 的數(shù)據(jù)。

氣了氣了,為啥查不出來啊?!大家也可以猜一猜。

這個時候我其實已經(jīng)有想法了,難道是數(shù)據(jù)庫中存儲的 name 和我們看到的 name 格式(或者字符)不一致?于是我就從數(shù)據(jù)庫中把 name 的值復制出來,如圖:

結(jié)果,從數(shù)據(jù)庫中復制出來的 name 作為查詢條件,是能查出結(jié)果的!

于是就有了下面這張神奇的截圖,兩個 “一模一樣” 的 SQL 語句,一個有結(jié)果,一個沒結(jié)果:

基本就可以確認了,此 “軟件開發(fā)人員” 非彼 “軟件開發(fā)人員”,這兩個字符串是不一致的!

于是我分別用這兩個字符串來生成 MD5 Hash 碼,發(fā)現(xiàn) Hash 碼不同,說明原字符串不同。

再進行更精確地對比,發(fā)現(xiàn)是 “人” 字不同:

坑??!誰能看出來這兩個 “人” 字有區(qū)別!

到底有啥區(qū)別呢?問下魚聰明 AI 吧~

結(jié)果一秒破案:原來第一個 “人” 是全角字符,這真的是。。。泰褲辣!

大概整個案件就是這樣。所以說,我們看到得未必是真實的,這個 Bug 讓我想起了很多朋友初上大學時經(jīng)常把中英文逗號、中英文冒號搞混,這種 Bug 真是讓人哭笑不得。希望各位程序員朋友們,盡量不要遇到吧,遇到了的話,想想我這篇文章,說不定就有了解決的思路呢。


寫了 7 年代碼,第一次見這么狗血的小 Bug!的評論 (共 條)

分享到微博請遵守國家法律
郑州市| 社旗县| 孟州市| 锡林郭勒盟| 文安县| 寻甸| 朔州市| 瑞昌市| 鄂托克旗| 临澧县| 武川县| 长沙县| 浪卡子县| 黔江区| 东宁县| 霍城县| 佛教| 仙游县| 五峰| 嵩明县| 汉中市| 茂名市| 朔州市| 新宁县| 石楼县| 陈巴尔虎旗| 洪泽县| 东辽县| 平江县| 福海县| 诏安县| 灵台县| 唐河县| 平武县| 股票| 绥中县| 余庆县| 宝兴县| 巴里| 洛阳市| 慈利县|