Judge 0是一款免費開源的在線代碼執行工具,可以安全地運行90多種程式語言的代碼。它高效運行,支持彈性擴展,採用沙盒隔離機制,適合人工智慧代理、編程平台、在線教育、工作技術評估等場景。您可以通過其簡單的API或Python SDK輕鬆執行代碼-可以自己託管它或直接使用雲服務。使用Judge 0,您可以快速構建應用程式,而無需管理伺服器,從而節省開發時間並確保代碼測試的安全性。
在構建在線編程平台、代碼評估系統或教學工具時,一個核心問題仍然存在:
我怎麼 安全運行用戶提交的代碼 在我的伺服器上?
Judge 0正是提供了這種功能
它是一個開源在線代碼執行和評估系統,通過標準化API提供「代碼提交、-編譯、運行、-返回結果」的完整流程。
項目定位
從本質上講,Judge 0不是一個圖形軟體,而是:
RESTful代碼執行API服務
它允許外部系統通過HTTP請求提交原始碼,指定語言和運行參數,然後獲取執行結果,包括:
- 標準輸出(標準輸出)
- 標準誤差(stderr)
- 運行時
- 內存使用
- 退出狀態代碼
這使得它能夠作為後台基礎組件集成到各種平台中。
支持的語言和操作環境
Judge 0支持90多種語言和運行時配置,包括但不限於:
- C / C++
- Python
- Java
- 去
- 鏽
- JavaScript
- Kotlin
- Swift
需要注意的是,語言數量包括不同的版本和運行環境,因此「90+」更準確地理解為多種語言和多種運行配置的組合。
安全機制和執行方法
Judge 0通過容器隔離(通常基於Docker和隔離)執行代碼。
每個代碼提交在受控環境中運行,並且可以設置為:
- 時限
- 內存限制
- CPU限制
這種沙盒機制可以防止惡意代碼影響主機系統,並且是在線評估系統的關鍵功能。
如何用途:
Judge 0是API優先設計的。
典型過程如下:
- 提交代碼(Post請求)
- 獲取提交ID
- 查詢執行結果(民意調查或回調)
請求結構示例:
{
「source_code」:「print(' hello ')」,
「langue_id」:71
}
返回示例:
{
「stdout」:「hellon」,
「時間」:「0.01」,
「記憶」:12345
}
由於它是標準的REST API,因此可以用任何語言(Python、Node.js、PHP、Go等)調用。
部署方法
Judge 0提供了多種部署選項:
- Docker編寫部署
- 貨櫃化作業
- Kubernetes集群部署
- 使用官方公共API實例
如果您自己部署,則需要伺服器環境;如果您使用公共API,則可以消除基礎設施管理。
應用場景
Judge 0的常見應用包括:
- 在線評估系統(OJ)
- 編程實踐平台
- 教學自動批改系統
- 在線IDE的代碼運行後台
- 技術評價體系
- 代碼沙盒服務
在最近的應用程式中,它還可以用作人工智慧生成代碼的執行引擎,但這種用途是擴展場景,而不是項目的原始定位。
技術特點:
- 開源(麻省理工學院許可證)
- 多語言支持
- 沙盒隔離強制執行
- API驅動的設計
- 可擴展隊列機制
- 支持同步任務處理
Judge 0更像是一個「基礎設施組件」,而不是面向最終用戶的應用程式。
Github:https://github.com/judge0/judge0
管材: