來練手吧,一個(gè)類似力扣的在線測評(píng)項(xiàng)目
程序員對(duì)力扣應(yīng)該都熟悉的,在上面可以使用任意一門熟悉的編程語言寫代碼,在線執(zhí)行代碼,提交,看到擊敗超過 90%,你會(huì)不會(huì)心跳一下?用的同時(shí),你是否想過力扣背后的設(shè)計(jì)和實(shí)現(xiàn),假如讓你自己設(shè)計(jì)一個(gè)類似力扣的系統(tǒng)呢?你可以把這個(gè)當(dāng)作系統(tǒng)設(shè)計(jì)的面試題,思考如何回答。
最好的回答,就是自己真正動(dòng)手設(shè)計(jì)一個(gè),當(dāng)然這太難了,不過 GitHub 上有現(xiàn)成的,你只需要自己部署下,然后用一用,對(duì)照著功能,閱讀源碼,最后覺得不爽的話,自己改一改源碼。這個(gè)過程,一定能學(xué)到很多知識(shí)。我的 Web 技能就是從別人的項(xiàng)目那里學(xué)到的。
先來個(gè)截圖:
通過這個(gè)項(xiàng)目,你可以學(xué)習(xí)到 Docker、Django、Django REST Framework、Vue、Redis、PostgreSQL 技術(shù)棧,前后端分離,模塊化編程,微服務(wù)等設(shè)計(jì)實(shí)踐。
功能點(diǎn)
1、ACM/OI 兩種比賽模式、實(shí)時(shí)/非實(shí)時(shí)評(píng)判 任意選擇
2、豐富的可視化圖表,一圖勝千言
3、支持 Template Problem,可以添加函數(shù)題甚至填空題
4、更細(xì)致的權(quán)限劃分,超級(jí)管理員和普通管理員各司其職
5、多語言支持:C, C++, Java, Python2, Python3,題目可以選擇使用的語言
6、Markdown & MathJax 支持
7、比賽用戶IP限制 (CIDR ranges)
安裝部署
無論你是 Linux、MacOS 還是 Windows,請(qǐng)先安裝 Docker、Python、pip、git、docker-compose 工具,確保在命令行可以執(zhí)行 docker、python、pip、git、docker-compose 命令,安裝方法自行搜索。
請(qǐng)選擇磁盤空間富余的位置,克隆項(xiàng)目,并進(jìn)入目錄:
- git clone -b 2.0 https://github.com/QingdaoU/OnlineJudgeDeploy.git && cd OnlineJudgeDeploy
Docker 一鍵部署:
- docker-compose up -d
想知道到底啟動(dòng)了那些服務(wù),可以看文件 docker-compose.yml 的內(nèi)容,看不懂就去 Doker 官方文檔看每一個(gè)命令的解釋。
根據(jù)網(wǎng)速情況,大約 5 到 20 分鐘就可以自動(dòng)搭建完成,全程無需人工干預(yù)。
等命令執(zhí)行完成,然后運(yùn)行 docker ps -a,當(dāng)看到所有的容器的狀態(tài)沒有 unhealthy 或 Exited (x) xxx 就代表已經(jīng)啟動(dòng)成功。
瀏覽器打卡 http://localhost/ 就可以看到:
注冊(cè)后,可以在個(gè)人設(shè)置頁面設(shè)置系統(tǒng)為中文語言。
截圖
源代碼
在線測評(píng)項(xiàng)目源代碼:
后端(Django): https://github.com/QingdaoU/OnlineJudge
前端(Vue): https://github.com/QingdaoU/OnlineJudgeFE
判題沙箱(Seccomp): https://github.com/QingdaoU/Judger
判題服務(wù)器(對(duì)Judger的封裝): https://github.com/QingdaoU/JudgeServer