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

電子發燒友App

硬聲App

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

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

3天內不再提示
電子發燒友網>電子資料下載>電子資料>CO是高效的C++基礎庫

CO是高效的C++基礎庫

2022-06-21 | zip | 0.37 MB | 次下載 | 2積分

資料介紹

授權協議 MIT
開發語言 C/C++
操作系統 跨平臺
軟件類型 開源軟件
所屬分類 程序開發常用工具包

軟件簡介

Basic

CO?是一個優雅、高效的 C++ 基礎庫,支持 Linux, Windows 與 Mac 平臺。CO?追求極簡、高效,不依賴于?boost?等三方庫。

CO?包含協程庫(golang-style)、網絡庫(tcp/http/rpc)、日志庫、命令行與配置文件解析庫、單元測試框架、json 庫等基本組件。

參考文檔

亮點功能

  • co

    co?是一個?golang?風格的 C++ 協程庫,有如下特性:

    • 支持多線程調度,默認線程數為系統 CPU 核數.

    • 協程共享線程棧(默認大小為 1MB),內存占用極低,單機可輕松創建數百萬協程.

    • 支持系統 api hook (Linux & Mac).

    • 支持協程鎖?co::Mutex.

    • 支持協程同步事件?co::Event.

    • 支持協程池?co::Pool.

    • 用?go()?創建協程:

    void fun() {
        std::cout << "hello world" << std::endl;
    }
    
    go(fun);
  • so

    so?是基于協程的 C++ 網絡庫,可輕松實現同時支持?ipv4?與?ipv6?的網絡程序,包含如下幾個模塊:

    • tcp 模塊, 支持一般的 tcp 編程.

    • http 模塊, 支持基本的 http 編程.

    • rpc 模塊,基于 json 的 rpc 框架,單線程 qps 可達到 12w+.

    • 實現靜態?web server:

    #include "co/flag.h"
    #include "co/log.h"
    #include "co/so.h"
    
    DEF_string(d, ".", "root dir"); // 指定 web server 根目錄
    
    int main(int argc, char** argv) {
        flag::init(argc, argv);
        log::init();
    
        so::easy(FLG_d.c_str()); // mum never have to worry again
    
        return 0;
    }
    • 實現一般的 http server:
    http::Server serv("0.0.0.0", 80);
    
    serv.on_req(
        [](const http::Req& req, http::Res& res) {
            if (req.is_method_get()) {
                if (req.url() == "/hello") {
                    res.set_status(200);
                    res.set_body("hello world");
                } else {
                    res.set_status(404);
                }
            } else {
                res.set_status(501);
            }
        }
    );
    
    serv.start();
  • log

    log?是一個超級快的本地日志系統,打印日志比?printf?更安全:

    LOG << "hello " << 23;  // info
    ELOG << "hello again";  // error

    下面直觀感受一下?log?的性能:

    log vs glog google glog co/log
    win2012 HHD 1.6MB/s 180MB/s
    win10 SSD 3.7MB/s 560MB/s
    mac SSD 17MB/s 450MB/s
    linux SSD 54MB/s 1023MB/s

    上表是單線程連續打印 100 萬條 info 日志(每條 50 字節左右)的測試結果,co/log?幾乎快了?glog?兩個數量級。

    為何如此快?一是 log 庫內部基于比?sprintf?快 8-25 倍的?fastream?實現,二是 log 庫幾乎沒有什么內存分配操作。

  • flag

    flag?是一個方便、易用的命令行及配置文件解析庫,支持自動生成配置文件。

    #include "co/flag.h"
    
    DEF_int32(i, 32, "comments");
    DEF_string(s, "xxx", "string type");
    
    int main(int argc, char** argv) {
        flag::init(argc, argv);
        std::cout << "i: " << FLG_i << std::endl;
        std::cout << "s: " << FLG_s << std::endl;
        return 0;
    }

    編譯后運行:

    ./xx                          # 以默認參數啟動
    ./xx -i=4k -s="hello world"   # 整數類型可以帶單位 k,m,g,t,p, 不分大小寫
    ./xx -i 4k -s "hello world"   # 與上等價
    ./xx --mkconf                 # 自動生成配置文件 xx.conf
    ./xx -config=xx.conf          # 從配置文件啟動
  • json

    json?是一個速度堪比?rapidjson?的 json 庫,如果使用?jemallocparse?與?stringify?的性能會進一步提升。此庫對 json 標準的支持不如 rapidjson 全面,但能滿足程序員的基本需求,且更容易使用。

代碼構成

  • co/include

    libco?的頭文件。

  • co/src

    libco?的源代碼。

  • co/test

    一些測試代碼,每個?.cc?文件都會編譯成一個單獨的測試程序。

  • co/unitest

    一些單元測試代碼,每個?.cc?文件對應不同的測試單元,所有代碼都會編譯到單個測試程序中。

  • co/gen

    代碼生成工具,根據 proto 文件,自動生成 rpc 框架代碼。

編譯執行

xmake

CO?推薦使用?xmake?進行編譯。

  • 編譯器

  • 安裝 xmake

    windows, mac 與 debian/ubuntu 可以直接去 xmake 的?release?頁面下載安裝包,其他系統請參考 xmake 的?Installation?說明。

    xmake 在 linux 上默認禁止 root 用戶編譯,ruki?說不安全,可以在?~/.bashrc?中加上下面的一行,啟用 root 編譯:

    export XMAKE_ROOT=y
  • 快速上手

    # 所有命令都在 co 根目錄執行,后面不再說明
    xmake       # 默認編譯 libco 與 gen
    xmake -a    # 編譯所有項目 (libco, gen, co/test, co/unitest)
  • 編譯 libco

    xmake build libco       # 編譯 libco
    xmake -b libco          # 與上同
  • 編譯及運行 unitest 代碼

    co/unitest?是單元測試代碼,用于檢驗 libco 庫功能的正確性。

    xmake build unitest     # build 可以簡寫為 -b
    xmake run unitest -a    # 執行所有單元測試
    xmake r unitest -a      # 同上
    xmake r unitest -os     # 執行單元測試 os
    xmake r unitest -json   # 執行單元測試 json
  • 編譯及運行 test 代碼

    co/test?包含了一些測試代碼。co/test 目錄下增加?xxx.cc?源文件,然后在 co 根目錄下執行?xmake build xxx?即可構建。

    xmake build flag             # 編譯 flag.cc
    xmake build log              # 編譯 log.cc
    xmake build json             # 編譯 json.cc
    xmake build rapidjson        # 編譯 rapidjson.cc
    xmake build rpc              # 編譯 rpc.cc
    xmake build easy             # 編譯 so/easy.cc
    xmake build pingpong         # 編譯 so/pingpong.cc
    
    xmake r flag -xz             # 測試 flag 庫
    xmake r log                  # 測試 log 庫
    xmake r log -cout            # 終端也打印日志
    xmake r log -perf            # log 庫性能測試
    xmake r json                 # 測試 json
    xmake r rapidjson            # 測試 rapidjson
    xmake r rpc                  # 啟動 rpc server
    xmake r rpc -c               # 啟動 rpc client
    xmake r easy -d xxx          # 啟動 web server
    xmake r pingpong             # pingpong server:   127.0.0.1:9988
    xmake r pingpong ip=::       # pingpong server:   :::9988  (ipv6)
    xmake r pingpong -c ip=::1   # pingpong client -> ::1:9988
  • 編譯 gen

    # 建議將 gen 放到系統目錄下(如 /usr/local/bin/).
    xmake build gen
    gen hello_world.proto

    proto?文件格式可以參考?hello_world.proto

  • 安裝

    # 默認安裝頭文件、libco、gen
    xmake install -o pkg          # 打包安裝到 pkg 目錄
    xmake i -o pkg                # 同上
    xmake install -o /usr/local   # 安裝到 /usr/local 目錄

cmake

izhengfan?幫忙提供了 cmake 支持:

  • 默認只編譯?libco?與?gen.
  • 編譯生成的庫文件在 build/lib 目錄下,可執行文件在 build/bin 目錄下.
  • 可以用?BUILD_ALL?指定編譯所有項目.
  • 可以用?CMAKE_INSTALL_PREFIX?指定安裝目錄.
mkdir build && cd build
cmake ..
cmake .. -DBUILD_ALL=ON -DCMAKE_INSTALL_PREFIX=pkg
make -j8
make install

License

CO?以?MIT?License 發布.?CO?包含了一些其他項目的代碼,可能使用了與?CO?不同的 License,詳情見?LICENSE.md

特別致謝

  • co/context?的相關代碼取自?ruki?的?tbox,特別表示感謝!
  • co 英文參考文檔,由?Leedehai(1-10),daidai21(11-15) 與?google?翻譯,特別表示感謝!
  • ruki?幫忙改進了 xmake 編譯腳本,特別表示感謝!
  • izhengfan?提供了 cmake 編譯腳本,特別表示感謝!
?

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評論

查看更多

下載排行

本周

  1. 1山景DSP芯片AP8248A2數據手冊
  2. 1.06 MB  |  532次下載  |  免費
  3. 2RK3399完整板原理圖(支持平板,盒子VR)
  4. 3.28 MB  |  339次下載  |  免費
  5. 3TC358743XBG評估板參考手冊
  6. 1.36 MB  |  330次下載  |  免費
  7. 4DFM軟件使用教程
  8. 0.84 MB  |  295次下載  |  免費
  9. 5元宇宙深度解析—未來的未來-風口還是泡沫
  10. 6.40 MB  |  227次下載  |  免費
  11. 6迪文DGUS開發指南
  12. 31.67 MB  |  194次下載  |  免費
  13. 7元宇宙底層硬件系列報告
  14. 13.42 MB  |  182次下載  |  免費
  15. 8FP5207XR-G1中文應用手冊
  16. 1.09 MB  |  178次下載  |  免費

本月

  1. 1OrCAD10.5下載OrCAD10.5中文版軟件
  2. 0.00 MB  |  234315次下載  |  免費
  3. 2555集成電路應用800例(新編版)
  4. 0.00 MB  |  33566次下載  |  免費
  5. 3接口電路圖大全
  6. 未知  |  30323次下載  |  免費
  7. 4開關電源設計實例指南
  8. 未知  |  21549次下載  |  免費
  9. 5電氣工程師手冊免費下載(新編第二版pdf電子書)
  10. 0.00 MB  |  15349次下載  |  免費
  11. 6數字電路基礎pdf(下載)
  12. 未知  |  13750次下載  |  免費
  13. 7電子制作實例集錦 下載
  14. 未知  |  8113次下載  |  免費
  15. 8《LED驅動電路設計》 溫德爾著
  16. 0.00 MB  |  6656次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935054次下載  |  免費
  3. 2protel99se軟件下載(可英文版轉中文版)
  4. 78.1 MB  |  537798次下載  |  免費
  5. 3MATLAB 7.1 下載 (含軟件介紹)
  6. 未知  |  420027次下載  |  免費
  7. 4OrCAD10.5下載OrCAD10.5中文版軟件
  8. 0.00 MB  |  234315次下載  |  免費
  9. 5Altium DXP2002下載入口
  10. 未知  |  233046次下載  |  免費
  11. 6電路仿真軟件multisim 10.0免費下載
  12. 340992  |  191187次下載  |  免費
  13. 7十天學會AVR單片機與C語言視頻教程 下載
  14. 158M  |  183279次下載  |  免費
  15. 8proe5.0野火版下載(中文版免費下載)
  16. 未知  |  138040次下載  |  免費
主站蜘蛛池模板: 男男女女爽爽爽视频免费 | 98久久人妻少妇激情啪啪 | 久久久乱码精品亚洲日韩 | 久久精品在现线观看免费15 | 俄罗斯xxxxxbbbbb | 亚洲大片在线观看 | 亚洲精品第一页中文字幕 | 久久麻豆亚洲AV成人无码国产 | AV天堂午夜精品一区 | 国产精一品亚洲二区在线播放 | 亚洲一品AV片观看五月色婷婷 | 蜜臀AV色欲A片无码一区 | 与子敌伦刺激对白亂輪亂性 | 回复术士勇者免费观看全集 | 光溜溜的美女直播软件 | 国内精品久久久久久西瓜色吧 | 韩国伦理电影在线神马网 | 国模大胆一区二区三区 | 色欲国产麻豆一精品一AV一免费 | 伊人久久中文大香线蕉综合 | 国产99青草全福视在线 | 阿离被扒开双腿疯狂输出 | 亚洲第一色网 | 息与子在线交尾中文字幕 | 香蕉精品国产自在现线拍 | 免费毛片在线视频 | 久久免费国产视频 | 女人高潮被爽到呻吟在线观看 | 伊人久久大香线蕉综合亚洲 | 在线欧美免费人成视频 | 9久久免费国产精品特黄 | 二色AV天堂在线 | 欧美成 人 网 站 免费 | 內射XXX韩国在线观看 | 人妻超级精品碰碰在线97视频 | 男人插曲视频大全免费网站 | 亚洲福利电影一区二区? | 久久热最新网站获取3 | 古风H啪肉NP文 | 国产亚洲免费观看 | 免费精品国产人妻国语 |