国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

保安做網(wǎng)站seo排名點(diǎn)擊

保安做網(wǎng)站,seo排名點(diǎn)擊,杭州做網(wǎng)站的科技公司,網(wǎng)站開發(fā)申請(qǐng)目錄 引入cpp-httplib庫 將編譯與運(yùn)行服務(wù)打包 代碼 客戶端用戶路由功能 采用MVC結(jié)構(gòu)進(jìn)行設(shè)計(jì) 用戶路由功能 路由功能代碼 引入cpp-httplib庫 對(duì)于后端編譯與運(yùn)行模塊基本已經(jīng)設(shè)計(jì)完成,最后用戶是通過網(wǎng)絡(luò)傳遞代碼等信息;我們就要將這個(gè)模塊引入…

目錄

引入cpp-httplib庫

將編譯與運(yùn)行服務(wù)打包

代碼

客戶端用戶路由功能

采用MVC結(jié)構(gòu)進(jìn)行設(shè)計(jì)

用戶路由功能

路由功能代碼


引入cpp-httplib庫

對(duì)于后端編譯與運(yùn)行模塊基本已經(jīng)設(shè)計(jì)完成,最后用戶是通過網(wǎng)絡(luò)傳遞代碼等信息;我們就要將這個(gè)模塊引入網(wǎng)絡(luò)服務(wù),對(duì)于套接字的編寫過程非常麻煩我們可以使用現(xiàn)成HTTP協(xié)議庫。

cpp-httplib 是一個(gè)輕量級(jí)的、高效的C++ HTTP/HTTPS 客戶端和服務(wù)器庫。它由 Hideaki Sone(yhirose)開發(fā),并在 MIT 許可下發(fā)布。該項(xiàng)目的主要目標(biāo)是提供一種簡(jiǎn)單易用的方式,在 C++ 應(yīng)用程序中實(shí)現(xiàn) HTTP 和 HTTPS 功能。

任何版本都可以從網(wǎng)上下載得到,這個(gè)庫是一個(gè)單頭文件庫,可以直接將這個(gè)庫頭文件下載轉(zhuǎn)移到我們的項(xiàng)目公共模塊中,使用時(shí)添加庫頭文件和打開命名空間即可。對(duì)于使用這個(gè)現(xiàn)成的HTTP庫時(shí)我們的gcc編譯器一定要高版本的至少要7版本以上,否則使用低版本的編譯器時(shí)對(duì)于這個(gè)庫可以會(huì)在編譯或者運(yùn)行時(shí)報(bào)錯(cuò);因此我們需要對(duì)gcc編譯器進(jìn)行升級(jí)。這里大家從網(wǎng)上自行搜索升級(jí),這里不過多嗶嗶。

將編譯與運(yùn)行服務(wù)打包

通過HTTP協(xié)議服務(wù)端收到請(qǐng)求,請(qǐng)求中的請(qǐng)求參數(shù)包含代碼、輸入、時(shí)間和空間限制信息,直接提取請(qǐng)求中的響應(yīng)數(shù)據(jù)交給編譯和運(yùn)行模塊即可;處理完代碼后,將運(yùn)行信息作為響應(yīng)正文交給客戶端即可。

代碼

#include "compile_run.hpp"
#include <jsoncpp/json/json.h>
#include "../comm/httplib.h"
using namespace ns_compiler_and_run;
using namespace httplib;
// 編譯服務(wù)隨時(shí)可能被多個(gè)人請(qǐng)求,必須保證傳遞上來的代碼,形成源文件名稱的時(shí)候要具有唯一性,要不然多個(gè)用戶之間會(huì)影響//
void Usage(std::string proc)
{std::cerr << "Usage : " << "\n\t" << proc << std::endl;
}
int main(int argc, char *argv[2])
{if (argc != 2){Usage(argv[0]);return 1;}// 對(duì)外提供一個(gè)服務(wù)Server svr;svr.Post("/compile_and_run", [](const Request &req, Response &resp){//用戶請(qǐng)求的正文就是我們想要的 json stringstd::string in_json = req.body;std::string out_json;if(!in_json.empty()){//不為空調(diào)用編譯和運(yùn)行服務(wù)CompilerAndRun::Start(in_json,&out_json);resp.set_content(out_json,"application/json;charset=utf-8");} });svr.listen("0.0.0.0", atoi(argv[1])); // //httpreturn 0;
}

客戶端用戶路由功能

編譯與運(yùn)行后端功能模塊編寫完成后,就要對(duì)前端模塊進(jìn)行設(shè)計(jì);對(duì)于前端的設(shè)計(jì)簡(jiǎn)單來說就是建立一個(gè)小型網(wǎng)站,用戶進(jìn)入網(wǎng)站就是獲取題目列表、編輯代碼、提交判題,這三個(gè)主要的模塊。

采用MVC結(jié)構(gòu)進(jìn)行設(shè)計(jì)

M: Model,通常是和數(shù)據(jù)交互的模塊,比如,對(duì)題庫進(jìn)行增刪改查(文件版,MySQL)
V: view, 通常是拿到數(shù)據(jù)之后,要進(jìn)行構(gòu)建網(wǎng)頁,渲染網(wǎng)頁內(nèi)容,展示給用戶的(瀏覽器)
C: control, 控制器,就是我們的核心業(yè)務(wù)邏輯

用戶路由功能

根據(jù)用戶的需求提供不同的服務(wù),但是也就是只有三個(gè)功能:

  • 獲取題目列表
  • 用戶要根據(jù)題目編號(hào),獲取題目?jī)?nèi)容
  • 提交代碼,使用我們的判題功能(1,每道題的測(cè)試用例,2.compile_and_run功能)

路由功能代碼

#include<iostream>
#include"../comm/httplib.h"
using namespace httplib;
int main()
{//用戶請(qǐng)求的路由功能//根據(jù)用戶的需求提供不同的服務(wù)//獲取題目列表//用戶要根據(jù)題目編號(hào),獲取題目?jī)?nèi)容//提交代碼,使用我們的判題功能(1,每道題的測(cè)試用例,2.compile_and_run功能)Server svr;svr.Get("/all_question",[](const Request &req,Response &resp){resp.set_content("這是所有的題目列表","text/plain;charset=utf-8");});//svr.Get(R"("/questions/(\d+))",[](const Request &req,Response &resp){//題目編號(hào)std::string number = req.matches[1];resp.set_content("這是指定的一道題: "+number , "text/plain;charset=utf-8");});//正則表達(dá)式//保證保持原始字符串svr.Get(R"(/judge/(\d+))",[](const Request &req,Response &resp){std::string number = req.matches[1];resp.set_content("指定題目的判題: "+number,"text/plain;charset=utf-8");});svr.listen("0.0.0.0",8080);return 0;
}
  1. 正則表達(dá)式(regex): 正則表達(dá)式是一種用于匹配字符串中字符組合的模式。它們提供了一種靈活的方式來搜索、匹配和操作文本。在這個(gè)代碼中,正則表達(dá)式被用于匹配請(qǐng)求的URL路徑中特定的模式。

  2. R前綴: 在C++中,R前綴用于創(chuàng)建原始字符串字面量。原始字符串字面量將反斜杠(\)視為字面字符而不是轉(zhuǎn)義字符。這在處理正則表達(dá)式或任何其他字符串時(shí)非常有用,你不想解釋轉(zhuǎn)義序列時(shí)可以使用它。

解釋:

  • 在第二和第三個(gè)路由定義中,正則表達(dá)式被用在原始字符串字面量(前綴為R)中,用于定義動(dòng)態(tài)路由,匹配包含數(shù)字模式的URL。
  • 在第二個(gè)路由(/questions/(\d+))中,模式是尋找包含/questions/后跟一個(gè)或多個(gè)數(shù)字的URL。括號(hào)(\d+)捕獲數(shù)字作為一個(gè)組,以備后用。
  • 在第三個(gè)路由(/judge/(\d+))中,模式類似,但匹配包含/judge/后跟一個(gè)或多個(gè)數(shù)字的URL。
  • 在與每個(gè)路由關(guān)聯(lián)的lambda函數(shù)內(nèi)部,從URL中捕獲的數(shù)字使用req.matches[1]進(jìn)行檢索,其中req.matches保存了正則表達(dá)式捕獲的匹配組。然后使用這些數(shù)字來提供特定路由的響應(yīng)。

今天對(duì)項(xiàng)目網(wǎng)絡(luò)庫引入和用戶路由功能的分享到這就結(jié)束了,希望大家讀完后有很大的收獲,也可以在評(píng)論區(qū)點(diǎn)評(píng)文章中的內(nèi)容和分享自己的看法;個(gè)人主頁還有很多精彩的內(nèi)容。您三連的支持就是我前進(jìn)的動(dòng)力,感謝大家的支持!!!?

http://aloenet.com.cn/news/32898.html

相關(guān)文章:

  • 張北縣網(wǎng)站建設(shè)外鏈代發(fā)
  • 知名設(shè)計(jì)網(wǎng)站公司百度網(wǎng)盤官網(wǎng)登陸入口
  • wordpress 數(shù)據(jù)庫編碼杭州seo網(wǎng)站哪家好
  • 網(wǎng)站建設(shè)時(shí)送的ppt方案讓手機(jī)變流暢的軟件下載
  • 桂林網(wǎng)站制作優(yōu)化大師官方
  • 阿里建站系統(tǒng)軟件開發(fā)培訓(xùn)機(jī)構(gòu)去哪個(gè)學(xué)校
  • 受歡迎的天津網(wǎng)站建設(shè)百度網(wǎng)盤搜索引擎入口
  • 做長(zhǎng)海報(bào)的網(wǎng)站外包推廣服務(wù)
  • 煙臺(tái)網(wǎng)站建設(shè)搜狗推廣登錄入口
  • 怎么建設(shè)一個(gè)網(wǎng)站賺錢seo排名查詢工具
  • 網(wǎng)站可以微信支付是怎么做的百度熱詞
  • 公司網(wǎng)站的seo優(yōu)化怎么做百度網(wǎng)盤人工客服電話多少
  • 不會(huì)網(wǎng)站維護(hù)可以做嗎怎么開通百度推廣賬號(hào)
  • 北京上海網(wǎng)站建設(shè)公司品牌宣傳推廣文案
  • 網(wǎng)站優(yōu)化的策略鎮(zhèn)江網(wǎng)站建設(shè)企業(yè)
  • 北京電腦培訓(xùn)網(wǎng)站軟文廣告示范
  • 上傳網(wǎng)站到二級(jí)域名財(cái)經(jīng)新聞最新消息
  • 昆明網(wǎng)上商城網(wǎng)站建設(shè)市場(chǎng)營銷策略
  • 寵物網(wǎng)站開發(fā)與實(shí)現(xiàn)軟文推廣做得比較好的推廣平臺(tái)
  • 做集團(tuán)網(wǎng)站應(yīng)注意什么谷歌seo優(yōu)化技巧
  • 做家居商城網(wǎng)站鄭州seo推廣
  • 怎么把網(wǎng)站放到空間嗎教育培訓(xùn)機(jī)構(gòu)平臺(tái)
  • 公眾號(hào)的微網(wǎng)站開發(fā)營銷型網(wǎng)站建設(shè)排名
  • 南京代做網(wǎng)站濟(jì)南百度競(jìng)價(jià)代運(yùn)營
  • c 做網(wǎng)站如何調(diào)用dll免費(fèi)源碼網(wǎng)站
  • 公司怎么建立自己網(wǎng)站百度推廣價(jià)格價(jià)目表
  • php app網(wǎng)站建設(shè)武漢seo管理
  • 藍(lán)色大氣網(wǎng)站欣賞視頻推廣平臺(tái)
  • 手機(jī)企業(yè)網(wǎng)站制作企業(yè)網(wǎng)頁設(shè)計(jì)公司
  • 網(wǎng)站建設(shè)夢(mèng)幻創(chuàng)意百度文庫官網(wǎng)