色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

C++ Web開發中一個輕量級、高性能的大利器

Linux愛好者 ? 來源:高效程序員 ? 作者:Waleon ? 2021-10-29 10:40 ? 次閱讀

說起 Web 開發,大多數人會想到 JavaPython、Golang ...因為它們的主流 Web 框架有很多,Java 有非常知名的 Spring 全家桶,Python 有大而全的 Django、小而精的 Flask、高性能的 Tornado,Golang 也有快速靈活的 Gin、Echo 等框架。

相比之下,C/C++ 陣營則遜色不少。之前,我曾寫過一篇《C++ Web(HTTP)開發 10 大利器》,其中介紹了一些 C/C++ Web 框架。有一個名為Oat++的很不錯,輕量、跨平臺、高性能、完全零依賴,非常值得學習!

Oat++ 介紹

要深入了解Oat++離不開這幾個網址:

  • Oat++ 主頁:https://oatpp.io

  • Oat++ 文檔:https://oatpp.io/docs/start

  • GitHub 地址:https://github.com/oatpp/oatpp

其主要特性有:

  • 隨處運行

    Oat++ 沒有任何依賴性,可以很容易地移植到各種支持的平臺上(Linux、MacOS、Windows)。
  • 構建健壯的api

    使用 Oat++ Simple-API,構建靈活而健壯的 API 既簡單又有趣。
  • 處理 500 萬個連接

    使用 Oat++ Async-API,可以在單個服務器上處理超過 500 萬個并發連接。
  • 訪問數據庫

    Oat++ ORM 提供了一種簡單而統一的方式來訪問數據庫
  • 保持代碼一致

    Oat++ 在整個代碼庫中依靠對象映射來確保 API 和數據模型的一致性
  • 生成 API 文檔

    使用 Swagger-UI 和 OpenAPI 3.0.0 自動記錄 endpoints

最吸引我的是 HTTP/HTTPS、文件上傳/下載、以及強大的 Swagger API 功能。
2

編譯 Oat++

進入 Oat++ 的 GitHub 頁面,你會發現 Star 多達 4K+,貢獻者有 30 多個,且最近幾天還有代碼提交,所以不用擔心熱度和活躍度,這個框架一直有人在積極地維護。

環境要求

Oat++ 的編譯過程很簡單,只需要有基本的開發環境就行了:

  • Git

  • 編譯器支持的 C++ 版本 >= 11

  • Make

  • CMake 版本 >= 3.1

如果沒有的話,按照下述步驟安裝,以 Ubuntu 為例:

$sudoaptinstallgit
$sudoaptinstallcmake
$sudoaptinstallbuild-essential

編譯安裝

下載 Oat++ 源碼:

$gitclonehttps://github.com/oatpp/oatpp.git

隨后,執行編譯安裝四部曲:

$cdoatpp/
$mkdirbuild&&cdbuild
$cmake..
$sudomake&&sudomakeinstall

3

示例程序

為了演示 Oat++,我們從最簡單的“Hello, World!”開始!

創建一個 CMake 項目,CMakeLists.txt 配置如下:

cmake_minimum_required(VERSION3.1)
project(helloworld)

set(CMAKE_CXX_STANDARD11)
set(SOURCE_FILESmain.cpphandler.h)

#查找oatpp依賴
find_package(oatppREQUIRED)

add_executable(${PROJECT_NAME}${SOURCE_FILES})

#將目標文件與庫文件進行鏈接
target_link_libraries(${PROJECT_NAME}oatpp::oatpp)

默認情況下,Oat++ 會對客戶端請求響應 404,除此之外什么都不做。

若要添加自定義響應,必須實現 HttpRequestHandler:

//handler.h
#ifndefHANDLER_H
#defineHANDLER_H

#include"oatpp/web/server/HttpRequestHandler.hpp"

#defineO_UNUSED(x)(void)x;

//自定義請求處理程序
classHandler:publicoatpp::HttpRequestHandler
{
public:
//處理傳入的請求,并返回響應
std::shared_ptrhandle(conststd::shared_ptr&request)override{
O_UNUSED(request);

returnResponseFactory::CODE_200,"Hello,World!");
}
};

#endif//HANDLER_H
有了處理程序之后,需要通過 Router 將請求路由到它:
//main.cpp
#include"oatpp/web/server/HttpConnectionHandler.hpp"
#include"oatpp/network/tcp/server/ConnectionProvider.hpp"
#include"oatpp/network/Server.hpp"
#include"handler.h"

voidrun()
{
//為HTTP請求創建路由器
autorouter=oatpp::createShared();

//路由GET-"/hello"請求到處理程序
router->route("GET","/hello",std::make_shared());

//創建HTTP連接處理程序
autoconnectionHandler=oatpp::createShared(router);

//創建TCP連接提供者
autoconnectionProvider=oatpp::createShared({"localhost",8000,oatpp::IP_4});

//創建服務器,它接受提供的TCP連接并將其傳遞給HTTP連接處理程序
oatpp::Serverserver(connectionProvider,connectionHandler);

//打印服務器端口
OATPP_LOGI("MyApp","Serverrunningonport%s",connectionProvider->getProperty("port").getData());

//運行服務器
server.run();
}

intmain()
{
//初始化oatpp環境
oatpp::init();

//運行應用
run();

//銷毀oatpp環境
oatpp::destroy();

return0;
}

4

請求驗證

運行程序,在瀏覽器中訪問http://localhost:8000/hello,就會顯示“Hello, World!”信息了:

或者使用 curl 請求http://127.0.0.1:8000/hello,效果一樣:

$curlhttp://127.0.0.1:8000/hello
Hello,World!
責任編輯:haq

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Web
    Web
    +關注

    關注

    2

    文章

    1275

    瀏覽量

    70034
  • C++
    C++
    +關注

    關注

    22

    文章

    2115

    瀏覽量

    74176

原文標題:一個輕量級、高性能的 C++ Web 框架

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    Nginx常見面試題總結

    Nginx是 輕量級/高性能的反向代理Web服務器,用于 HTTP、HTTPS、SMTP、POP3 和 IMAP 協議。
    的頭像 發表于 03-03 09:36 ?157次閱讀
    Nginx常見面試題總結

    源代碼加密、源代碼防泄漏c/c++與git服務器開發環境

    源代碼加密對于很多研發性單位來說是至關重要的,當然每家企業的業務需求不同所用的開發環境及開發語言也不盡相同,今天主要來講c++及git開發
    的頭像 發表于 02-12 15:26 ?274次閱讀
    源代碼加密、源代碼防泄漏<b class='flag-5'>c</b>/<b class='flag-5'>c++</b>與git服務器<b class='flag-5'>開發</b>環境

    Spire.XLS for C++組件說明

    Spire.XLS for C++款專業的 C++ Excel 組件,可以用在各種 C++ 框架和應用程序中。Spire.XLS for C+
    的頭像 發表于 01-14 09:40 ?264次閱讀
    Spire.XLS for <b class='flag-5'>C++</b>組件說明

    華為云 Flexus X 實例部署安裝 HivisionIDPhoto 輕量級的 AI 證件照制作算法

    背景 最近有開源項目非?;穑褪?HivisionIDPhotos 輕量級的 AI 證件照制作算法 github 倉庫 https:
    的頭像 發表于 12-25 17:08 ?250次閱讀
    華為云 Flexus X 實例部署安裝 HivisionIDPhoto <b class='flag-5'>一</b><b class='flag-5'>個</b><b class='flag-5'>輕量級</b>的 AI 證件照制作算法

    HarmonyOS Web開發性能優化指導

    20ms收益。 | 低 | - | ArrayBuffer格式的數據傳輸。 | (二)預啟動Web渲染進程 原理介紹 此方案適用于Web頁面啟動場景。開發者需額外創建
    發表于 12-06 08:41

    為了學習內核開發,大佬手搓了輕量級操作系統YiYiYa OS

    /kernel。 在移植適配的時候基本上和這些模塊打交道比較多,同時單獨庫可以提高內核代碼復用性,內核有專門的內核庫,以便增加代碼安全,減少出錯。 01 支持荔枝派系列開發板,全志V3s,F1
    發表于 08-30 14:57

    國產芯上運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    本篇測評由優秀測評者“短笛君”提供。本文將介紹基于米爾電子MYD-YD9360商顯板(米爾基于芯馳D9360國產開發板)的TinyMaxi輕量級的神經網絡推理庫方案測試。 算力測試TinyMaix
    發表于 08-09 18:26

    基于Openharmony輕量級操作系統的分布式數據管理開發案例

    實驗內容本例程演示如何在小凌派-RK2206開發板上使用OpenHarmony輕量級操作系統進行KvStore(即分布式數據管理)數據讀寫。例程:(1)創建兩線程,
    的頭像 發表于 08-07 08:23 ?1153次閱讀
    基于Openharmony<b class='flag-5'>輕量級</b>操作系統的分布式數據管理<b class='flag-5'>開發</b>案例

    C++中實現類似instanceof的方法

    C++有多態與繼承,但是很多人開始學習C++,有時候會面臨常見問題,就是如何向下轉型,特別是不知道具體類型的時候,這個時候就希望C++
    的頭像 發表于 07-18 10:16 ?742次閱讀
    <b class='flag-5'>C++</b>中實現類似instanceof的方法

    鴻蒙語言基礎類庫:ohos.data.storage 輕量級存儲

    輕量級存儲為應用提供key-value鍵值型的文件數據處理能力,支持應用對數據進行輕量級存儲及查詢。數據存儲形式為鍵值對,鍵的類型為字符串型,值的存儲數據類型包括數字型、字符型、布爾型。
    的頭像 發表于 07-15 18:21 ?1107次閱讀

    國產芯上運行TinyMaxi輕量級的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    本篇測評由與非網的優秀測評者“短笛君”提供。本文將介紹基于米爾電子MYD-YD9360商顯板(米爾基于芯馳D9360國產開發板)的TinyMaxi輕量級的神經網絡推理庫方案測試。算力測試
    的頭像 發表于 07-05 08:02 ?2020次閱讀
    國產芯上運行TinyMaxi<b class='flag-5'>輕量級</b>的神經網絡推理庫-米爾基于芯馳D9國產商顯板

    深度詳解嵌入式系統專用輕量級框架設計

    MR 框架是專為嵌入式系統設計的輕量級框架。充分考慮了嵌入式系統在資源和性能方面的需求。通過提供標準化的設備管理接口,極大簡化了嵌入式應用開發的難度,幫助開發者快速構建嵌入式應用程序。
    發表于 04-27 02:32 ?1112次閱讀
    深度詳解嵌入式系統專用<b class='flag-5'>輕量級</b>框架設計

    未來輕量級深度學習技術探索

    除了輕量級架構設計外,作者提到了可以應用于壓縮給定架構的各種高效算法。例如,量化方法 旨在減少數據所需的存儲空間,通常是通過用8位或16位數字代替32位浮點數,甚至使用二進制值表示數據。
    發表于 04-23 15:54 ?506次閱讀
    未來<b class='flag-5'>輕量級</b>深度學習技術探索

    鴻蒙OS開發實例:【Native C++

    使用DevEco Studio創建Native C++應用。應用采用Native C++模板,實現使用NAPI調用C標準庫的功能。使用
    的頭像 發表于 04-14 11:43 ?2928次閱讀
    鴻蒙OS<b class='flag-5'>開發</b>實例:【Native <b class='flag-5'>C++</b>】

    百度智能云推出全新輕量級大模型

    在近日舉辦的百度智能云千帆產品發布會上,三款全新的輕量級大模型——ERNIE Speed、ERNIE Lite以及ERNIE Tiny,引起了業界的廣泛關注。相較于傳統的千億級別參數大模型,這些輕量級大模型在參數量上有了顯著減少,為客戶提供了更加靈活和經濟高效的解決方案。
    的頭像 發表于 03-22 10:28 ?810次閱讀
    主站蜘蛛池模板: 精品无码久久久久久国产百度 | 性欧美xxxxporn | 一本道亚洲区免费观看 | 男人一进一出桶女人视频 | caoporn 免费视频 | 青青草视频在线ac | 男人把女人桶到爽免费看视频 | 久久一级片 | 国产99久久 | 免费观看a视频 | 最美女人体内射精一区二区 | 日本午夜精品久久久无码 | 内射人妻无码色AV麻豆去百度搜 | 免费人成网站永久 | 国产精品久久久久久久久无码 | 伊人久久精品午夜 | 国产成人欧美日韩在线电影 | 久久伊人中文字幕有码 | 睡觉被偷偷进入magnet | 动漫H片在线观看播放免费 动漫H片在线播放免费高清 | 伊人久久亚洲精品一区 | 亚洲AV噜噜狠狠网址蜜桃尤物 | 老师掀开短裙让我挺进动态 | 成人免费视频在 | 香蕉eeww99国产精品 | 色拍拍噜噜噜啦啦新网站 | 18禁止看的免费污网站 | 国色天香社区视频免费高清3 | 娇妻被朋友玩得呻吟在线电影 | 狠狠色丁香婷婷久久综合五月 | 国产欧美在线亚洲一区刘亦菲 | 亚洲精品午夜VA久久成人 | 365电影成人亚洲网在线观看 | 亚洲精品AV一区午夜福利 | 嫩草www视频在线观看高清 | 国产高清-国产av | 99视频免费在线观看 | 袖珍人与大黑人性视频 | 久久天天综合 | 亚洲精品无码AV中文字幕蜜桃 | 欧美精品一卡二卡 |