算法實現(xiàn)的后勤保障

Photo by Nathalie De Boever from Pexels

將算法實現(xiàn)后,有可能并不會像我們以為的那樣生效。比如代碼中出現(xiàn)bug必逆、計算公式寫錯幅垮、源數(shù)據(jù)異常、資源緊張導致程序運行失敗隙疚,這些情況都會導致實際的結(jié)果與我們以為的不一樣壤追。

隨著開發(fā)經(jīng)驗的增加,這些情況會越來越少供屉。但經(jīng)驗不具有復制性行冰,不能把別人的經(jīng)驗直接copy過來。這不是說別人的經(jīng)驗對你沒用伶丐,而是說很多事情只有自己經(jīng)歷過悼做,才知道是怎么回事。而且經(jīng)驗也不具有穩(wěn)定性哗魂,總可能會出現(xiàn)意外遺漏某些東西肛走。

解決這個問題最好的辦法是列出可執(zhí)行清單,原則上一份完整的清單上就能避免“事故”的出現(xiàn)录别。最能說明這點的地方就是機場朽色,每架飛機起飛時邻吞,即使機組人員對流程很熟了,還是會對著清單一項項的檢查葫男。

最近五個月抱冷,我經(jīng)歷過幾次“事故”,有自己造成的梢褐,也有別人引起的旺遮。為了減少再次掉進坑里的可能,我總結(jié)出了一些清單盈咳,這些清單就是算法真正實現(xiàn)的后勤保障耿眉。

我的清單如下:

  1. 源數(shù)據(jù)是否有過濾臟數(shù)據(jù)
  2. 每個功能函數(shù)是否都有測試用例
  3. 關(guān)鍵的中間數(shù)據(jù)是否有保存
  4. 是否在源數(shù)據(jù)以及最終輸出算法結(jié)果增加了監(jiān)控報警

任何算法實現(xiàn)的前提條件是有數(shù)據(jù)。數(shù)據(jù)中常出現(xiàn)兩個問題猪贪,一是臟數(shù)據(jù)跷敬。比如商品id本應是數(shù)字,但部分商品id出現(xiàn)了其它字符热押。

二是數(shù)據(jù)信息量不對西傀,即算法接收到的數(shù)據(jù)和實際的有偏差。數(shù)據(jù)傳輸環(huán)節(jié)越多桶癣,這種情況越有可能出現(xiàn)拥褂。

臟數(shù)據(jù)可能會導致程序報錯然后退出,使算法無法更新牙寞。所以這里要有三層保障饺鹃,一是過濾臟數(shù)據(jù),這能保證算法正常更新间雀。臟數(shù)據(jù)總可能會出現(xiàn)悔详,所以第二層保障是增加監(jiān)控報警,當算法輸出的結(jié)果文件沒有更新時發(fā)送報警信息惹挟。

過濾了臟數(shù)據(jù)雖然能保證算法正常更新茄螃,但要是臟數(shù)據(jù)過多怎么辦呢?比如由于技術(shù)故障導致大面積的商品id出現(xiàn)問題连锯,在這種情況下算法更新也許還會導致更嚴重的后果归苍。

數(shù)據(jù)信息量不對這件事就難辦了,特別是正處在發(fā)展期的公司运怖。往往是出現(xiàn)了問題之后才有可能去檢查數(shù)據(jù)在傳輸過程或自己代碼中的過濾條件導致信息量不對拼弃。為了讓檢查能快速,所以可能提前保存關(guān)鍵的中間數(shù)據(jù)摇展。比如開法個性化推薦算法時吻氧,商品或用戶的匯總數(shù)據(jù)。

解決完數(shù)據(jù)的問題之后就是要保證代碼邏輯正確了。我曾經(jīng)在開發(fā)一個推薦算法時医男,把排序值的計算公式給改錯了砸狞,等線上出問題了用git查看記錄才發(fā)現(xiàn)這個問題捻勉。

而解決邏輯問題最有效的辦法就是寫測試用例镀梭,正常情況下每一個函數(shù)應該至少準備一個測試用例。這樣做的前提是你開發(fā)的算法代碼不是只有一個主函數(shù)踱启,主函數(shù)中的每個功能盡可能的寫成函數(shù)的形式报账,這樣通過主函數(shù)就能了解整個算法的邏輯,而測試用例能確保每個功能函數(shù)是按正確的想法實現(xiàn)的埠偿。

由于數(shù)據(jù)是大家共用的透罢,所以很多數(shù)據(jù)的問題,即使自己沒發(fā)現(xiàn)冠蒋,別的同事也能發(fā)現(xiàn)并修正羽圃。但代碼邏輯是否正確卻只能靠開發(fā)者自己。所以是需要開發(fā)者花大精力去保障邏輯的正確性的抖剿。像上面說的那種錯誤朽寞,其實只需要一個測試用例就能找出問題所在。

清單也是需要不斷完善的斩郎,每次發(fā)現(xiàn)新的問題時想辦法解決脑融,并把它加入清單。只有這樣缩宜,清單才能不斷完善肘迎,發(fā)揮其作用。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末锻煌,一起剝皮案震驚了整個濱河市妓布,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宋梧,老刑警劉巖匣沼,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異乃秀,居然都是意外死亡肛著,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進店門跺讯,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枢贿,“玉大人,你說我怎么就攤上這事刀脏【旨裕” “怎么了?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長耀态。 經(jīng)常有香客問我轮傍,道長,這世上最難降的妖魔是什么首装? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任创夜,我火速辦了婚禮,結(jié)果婚禮上仙逻,老公的妹妹穿的比我還像新娘驰吓。我一直安慰自己,他們只是感情好系奉,可當我...
    茶點故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布檬贰。 她就那樣靜靜地躺著,像睡著了一般缺亮。 火紅的嫁衣襯著肌膚如雪翁涤。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天萌踱,我揣著相機與錄音葵礼,去河邊找鬼。 笑死虫蝶,一個胖子當著我的面吹牛章咧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播能真,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼赁严,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粉铐?” 一聲冷哼從身側(cè)響起疼约,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蝙泼,沒想到半個月后程剥,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡汤踏,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年织鲸,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溪胶。...
    茶點故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搂擦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出哗脖,到底是詐尸還是另有隱情瀑踢,我是刑警寧澤扳还,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布,位于F島的核電站橱夭,受9級特大地震影響氨距,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜棘劣,卻給世界環(huán)境...
    茶點故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一俏让、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧呈础,春花似錦舆驶、人聲如沸橱健。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽拘荡。三九已至臼节,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間珊皿,已是汗流浹背网缝。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蟋定,地道東北人粉臊。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像驶兜,于是被迫代替她去往敵國和親扼仲。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容