首頁 > Java > java教程 > 主體

為什麼在線上程式設計競賽期間線上評測系統會崩潰?

WBOY
發布: 2023-08-27 15:57:06
轉載
1430 人瀏覽過

為什麼在線上程式設計競賽期間線上評測系統會崩潰?

我們都清楚現在的各種編碼平台都包含競爭性編碼,例如 GeeksforGeeks、CodeChef、Codeforces、atCoder、SPOJ、HackerRank、HackerEarth 等等,他們應該自己編碼。要么附加本機編輯器文件(例如 Sublime 編輯器),要么直接在各自的編輯器上編寫。

那麼如何存取這些測試案例,或者以一種簡單的方式我們可以說我們的程式碼正在編譯和運行?在這些程式設計競賽平台上,線上評審充當程式碼編譯和運行的中堅力量。

線上評判

對使用者提交的程式碼進行評判,接下來要在同質環境中進行編譯和測試,是由線上評審來完成的。線上評審分為各種系統,這些系統支援建立競爭性程式設計競賽、加強教育和招募流程、促進解決資料探勘挑戰、線上編譯器和作為其他客製化系統組件整合的開發平台。因此,它將作為一個有效的系統來實施,幫助學生獲得資料結構和程式設計技能的知識。該系統包括使用者介面、沙盒評審環境、評估分數和將報告更新到資料庫的功能。在這篇文章中,我們將討論線上評審在程式設計比賽中如何崩潰。這張圖片將幫助我們更好地解釋它是如何崩潰的。

  • 時間限製完成 - 程式碼應在特定時間執行。預設情況下,我們可以在作業系統上執行執行緒時設定時間限制嗎?

  • 記憶體限製完成 - 程式不應佔用 CPU 上的所有記憶體。我們怎麼能以更簡單的方式改變這一點?

  • Stack Overflow Error - 追蹤程式後,系統將了解程式是否成功運作。那麼這些資訊是如何到達我們手中的呢?

以上幾點都說明了系統檢查和執行程式時出現的問題。使用者可以提交程式中的任何程式碼。我們如何確定提交的程式碼是否惡意或惡意程度如何。

某些程式碼可以執行不同的進程,或者可以調查您的文件目錄,並獲取一些信息,或者可以運行管理命令,或者可以消耗伺服器的頻寬,程式碼可以執行多種操作。我們不需要允許系統這樣做。那麼問題來了,我們該如何將這些許可指南付諸實行呢?為了處理上述情況,我們將解釋以下方法 -

方式

用於應用系統權限和硬體的技術稱為程式碼沙箱。 Web 決定透過兩種方式進行程式碼沙箱處理上述不同場景。

  • 蹩腳的方式

  • #漫長的歷史之路

#方式 1:蹩腳方式

很少有可見的線上決策措施可以讓開發人員在執行程式碼之前嘗試發現程式碼上的惡意功能。例如,如果我們的程式碼是基於 C 的,則決策將首先查看是否有任何程式碼行使用了「system」短語。這個答案不會因為不同的原因而繪製,因為許多程式語言不會以相同的方式繪製。您可以動態生成特徵並用幾種程式語言接觸它,因此過濾不會在程式碼中繪製。另一件事,如果你想列印“system”作為輸出怎麼辦?這個答案會說該程式碼是惡意的,但事實並非如此。

方式 2:漫長的歷史之路

在這種方法中,網路決定的最大值有效。這個答案與完全基於Linux 的系統有關。堆疊溢位/運行時錯誤可以透過程式的傳回成本的方式進行檢查。如果遠為0,那麼我們可以說系統能夠成功運行,如果在其他情況下崩潰了。

透過使用各種基於Unix的完整函式庫,可以提供Memory Limit麻煩和時間限制限制。某些程式語言透過預設方式啟用限制標誌的此功能,例如Java。時間限制邊界和記憶體限制缺陷可以透過使用許多基於 Unix 的完全函式庫來解決。有些程式語言預設支援這種類型的邊界標誌,例如 Java。

在 Linux 上,目錄權限很簡單。我們可以簡單地建立一個使用者並允許該使用者存取一些目錄和一些讀取/寫入權限。然後,透過執行該使用者的使用情況的應用程序,可以解決文件清單的麻煩。此外,該程式碼無法運行一些管理命令。

使用一些函式庫(例如 Trickle)同樣可以限制社群技能。為了簡單地彌補一個安全漏洞,我們可以設定不同的函式庫並編寫不同的程式碼。

結論

如果我們使用完全基於VM(虛擬機器)的Docker或box,以上所有問題都可以解決。如果我們想要有一個初步的記憶,我們可以創建一個盒子,並預設盒子的社區權限、時間限制。有了虛擬機器的幫助,所有的麻煩都可以被忽略。可以有開發人員知道的替代方案。在這個解決方案中,整個判斷機器也可能看起來比其他技術慢,但絕對在大規模上它比任何其他解決方案都要快得多,而且更安全、更淨化。你可以看看這個 GitHub Repo 來了解如何使用 docker 來判斷。

整個評判方式是在線評判最重要的部分之一。為了執行一台判斷機器,人們需要了解作業系統如何運作,或程式語言如何運作。

以上是為什麼在線上程式設計競賽期間線上評測系統會崩潰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:tutorialspoint.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板