識別演算法中的漏洞問題

2021-06-09 12:46:32 字數 1234 閱讀 6508

識別演算法中的漏洞問題

軟體研發是一件非常艱辛的工作,程式和bug就象孿生兄弟一樣,是程式就一定會有bug,有時甚至bug成了程式的代名詞,我們會發現程式設計師大部分的工作時間是在解決程式中的bug。同樣地,識別演算法中的漏洞,即bug,也是乙個讓人頭疼的問題,在這裡,結合本人在識別演算法中的研發經驗,對於識別演算法中的漏洞問題**如下幾點看法:

1、首先,不要想當然地認為我的演算法沒有bug了,由於現實問題的複雜性,導致演算法漏洞不可避免,演算法越複雜,則bug越多,這個需要我們去正視它,但是也不要懼怕它,我們唯一能做的是努力去找bug,然後努力去解決bug,努力去使bug的出現概率降到最小。

2、正是由於漏洞不可避免,所以在研發過程中需要測試持續進行,需要耐心地去解決演算法中的漏洞問題,在解決問題的過程中,要努力使演算法保持穩定,避免在效能上的波動,因此,大量的測試資料準備是非常必要的,它是使得演算法能夠保持穩定的資料基礎。

3、前期的可行性分析非常需要,前期的工作越充分、越慎重,則研發風險越小,演算法上的選擇要結合所要解決問題所處的條件限制和要求,盡量選擇自己所熟悉的演算法,很多較新的、看上去很先進的演算法對於你所要解決的問題並不一定合適,當前的識別演算法通用性差、適應性不好是眾所周知的。在前期的研發中會有大量的bug,但是只要這些bug大部分是可以解決的,則不用擔心演算法設計方向是否正確的問題,乙個好的、正確的演算法在後期的研發中產生的漏洞會是逐漸收斂的,當你發現是這種趨勢時,則可以放心地做下去了。

4、在解決演算法漏洞的過程中,會遇到演算法取捨的決策問題,當兩種演算法無法調和時,則以出現bug概率的大小為原則,去掉小概率的演算法,保留大概率的演算法,這裡概率的大小也許無法精確計算,只能去估計,甚至憑經驗做出概率大小的判斷。

5、對於致命的漏洞是一定要避免的,如程式崩潰、資料錯亂、資料無法處理等等,這類漏洞在分類等級中一般是屬於最高端,是需要優先解決的,這類bug一般在研發前期會較多出現,在研發後期經常是因修改程式而導致的。

6、要做好版本控制,可以單獨為演算法設定乙個版本號並備份每個版本的**和相應文件,版本號記錄了演算法的公升級過程,在研發後期盡量避免頻繁公升級版本,在經過充分測試後再來確定是否要公升級版本,對於小概率的bug,可以累積到一定程度後再來公升級版本,以減輕測試的工作量,但是對於嚴重的bug,則一定要及時公升級版本。

我們最近開發了乙個新識別產品,誤識率由最初的百分之一,逐漸降低到千分之

二、千分之

一、萬分之五,最新測試降低到了萬分之三,這是乙個艱難的過程,我們為此曾經憂慮過、彷徨過,但終於走過來了,回首這段歷程,總結了如上幾點心得,希望對於開發新軟體識別產品的人有所幫助。

解決CAS演算法的 ABA 漏洞問題

在將如何去解決去解決cas的aba問題時,我們先來說一下什麼是cas,cas全稱 compare and swap cpu併發原語。執行是連續的,不允許被中斷,不會造成資料不一致問題。cas演算法 它包含三個引數cas v,e,n v表示要更新的變數,e表示預期值,n表示新值。僅當v值等於e值時,才...

VS中無法識別unistd h的問題

vs 無法開啟原始檔 unistd.h 許多在linux下開發的c程式都需要標頭檔案unistd.h,但vc中沒有個頭檔案,所以用vc編譯總是報錯。把下面的內容儲存為unistd.h,放在visual stdio標頭檔案路徑下,可以解決這個問題 unistd.h在unix中類似於window中的wi...

演算法中的NP問題

在乙個週六的晚上,你參加了乙個盛大的晚會。由於感到侷促不安,你想知道這一大廳中是否有你已經認識的人。你的主人向你提議說,你一定認識那位正在甜點盤附近角落的女士羅絲。不費一秒鐘,你就能向那裡掃視,並且發現你的主人是正確的。然而,如果沒有這樣的暗示,你就必須環顧整個大廳,乙個個地審視每乙個人,看是否有你...