一个bug引发的人生感悟
文章目錄
- 問題現(xiàn)象
- 原因分析
- 節(jié)目id和節(jié)目路徑映射關(guān)系
- uuid數(shù)據(jù)
- 流程分析
- 發(fā)包機
- 解決辦法
- 感悟
問題現(xiàn)象
發(fā)包機 結(jié)果csv文件,不同progid指向同一視頻路徑問題
原因分析
節(jié)目id和節(jié)目路徑映射關(guān)系
設(shè)計上,使用uuid作為節(jié)目id,然后與節(jié)目路徑生成一一映射,保存在std::map<std::string,std::string>中,所以理論上不會出現(xiàn)多對一。
uuid數(shù)據(jù)
UUID是一個16字節(jié)的二進制數(shù)據(jù),通過uuid_unparse()將UUID裝換成可讀的字符串(36字節(jié))。例如,“00a14a12-a6c2-4484-93f4-c6bcd58efa70”。注意:UUID的二進制原始數(shù)據(jù) 和 轉(zhuǎn)換后的可讀字符串。
流程分析
發(fā)包機
發(fā)包機對progid的處理可以概括為
步驟1:建立progid-視頻路徑的映射表
步驟2:接收收包機的progid,從映射表中找到progid對應(yīng)視頻路徑
步驟1:映射表創(chuàng)建的實現(xiàn)
std::map<std::string, std::string> progid_filename;char ac_str[64] = {0}; char uuid[16] = {0}; uuid_generate((unsigned char*)uuid); // 問題就出現(xiàn)在這一句 // 將uuid的二進制數(shù)據(jù)作為映射表的progid progid_filename.insert(std::pair<std::string, std::string>(uuid, file_name));將UUID的二進制數(shù)據(jù)裝成std::string,會出現(xiàn)數(shù)據(jù)異常,UUID中的二進制數(shù)據(jù)被當作字符串處理,由于二進制數(shù)的隨機性,就可能會導(dǎo)致string(uuid)數(shù)據(jù)的隨機性。如下圖所示:
解決辦法
std::map<std::string, std::string> progid_filename;char ac_str[64] = {0}; char uuid[16] = {0}; uuid_generate((unsigned char*)uuid); // 將uuid的unparse后的字符串作用映射表的progid uuid_unparse((const unsigned char*)uuid, ac_str); progid_filename.insert(std::pair<std::string, std::string>(ac_str, file_name));感悟
雖然問題解決了,但是在定位這個問題的過程中,花費了大概5小時的時間。這是自己內(nèi)心不可接受的地方,復(fù)盤了一下自己定位問題的過程,雖然最開始就是先從源頭開始查找問題原因,檢查步驟1中創(chuàng)建的映射表是否正確,雖說思路是對的,但是在具體執(zhí)行過程中出現(xiàn)了一些偏差,導(dǎo)致得到了步驟1的結(jié)果是正確的錯誤結(jié)論,使得將自己的查找重心放到其他地方,而南轅北轍,浪費了時間。在和小輝輝(我同事)分享這個事情的經(jīng)過時,他說到:你就是懶唄。看似無心的一句話,卻引起了我的反思,的確,就是因為懶,懶得再寫幾行調(diào)試代碼,沒有將創(chuàng)建完的映射表,直接打印看看。如果這樣的話,可能5分鐘就能定位到問題了,效率提高60倍,難道不香么!
定位bug是一個綜合性的梳理過程,憑借著自己的知識、技能、經(jīng)驗,驗證每一個步驟的正確性,如果某一個步驟的結(jié)論誤認為正確,會導(dǎo)致后面步驟的驗證全是白費,一定要遵從客觀規(guī)律。而這個過程,我似乎也能讀到人性,讀到人生,我是覺得,人的一生一直伴隨著和自己的內(nèi)心深處的惰性做抗爭,人生的每一個階段就是一個步驟,如果因為懶惰或者妄想,不能驗證好每一個步驟,可能就需要花費60倍甚至更大的代價來彌補,然而,時光一去不復(fù)返。
技術(shù)是一面人性的照妖鏡,在它面前,你就是你,來不得半點虛假。
總結(jié)
以上是生活随笔為你收集整理的一个bug引发的人生感悟的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 姣婆遇着姿粉客~
- 下一篇: 紫光展锐发布系统级安全的高性能5G So