1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        分享10個(gè)適合初學(xué)者學(xué)習(xí)的C開(kāi)源項(xiàng)目代碼

        共 2558字,需瀏覽 6分鐘

         ·

        2021-08-30 02:02

        來(lái)源 | 嵌入式arm



        十個(gè)最值得閱讀學(xué)習(xí)的C開(kāi)源項(xiàng)目代碼





        1.Webbench

        2. Tinyhttpd

        3. cJSON

        4. CMockery

        5. Libev

        6. Memcached

        7. Lua

        8. SQLite

        9. UNIX v6

        10. NETBSD







        1. Webbench



        Webbench 是一個(gè)在 linux 下使用的非常簡(jiǎn)單的網(wǎng)站壓測(cè)工具。它使用 fork ()模擬多個(gè)客戶(hù)端同時(shí)訪問(wèn)我們?cè)O(shè)定的 URL,測(cè)試網(wǎng)站在壓力下工作的性能,最多可以模擬 3 萬(wàn)個(gè)并發(fā)連接去測(cè)試網(wǎng)站的負(fù)載能力。Webbench 使用C語(yǔ)言編寫(xiě), 代碼實(shí)在太簡(jiǎn)潔,源碼加起來(lái)不到 600 行。


        下載鏈接:

        http://home.tiscali.cz/~cz210552/webbench.html




        2. Tinyhttpd



        tinyhttpd 是一個(gè)超輕量型 Http Server,使用C語(yǔ)言開(kāi)發(fā),全部代碼只有 502 行(包括注釋),附帶一個(gè)簡(jiǎn)單的 Client,可以通過(guò)閱讀這段代碼理解一個(gè) Http Server 的本質(zhì)。


        下載鏈接:

        http://sourceforge.net/projects/tinyhttpd/



        3. cJSON



        cJSON 是C語(yǔ)言中的一個(gè) JSON 編解碼器,非常輕量級(jí),C文件只有 500 多行,速度也非常理想。


        cJSON 也存在幾個(gè)弱點(diǎn),雖然功能不是非常強(qiáng)大,但 cJSON 的小身板和速度是最值得贊賞的。其代碼被非常好地維護(hù)著,結(jié)構(gòu)也簡(jiǎn)單易懂,可以作為一個(gè)非常好的C語(yǔ)言項(xiàng)目進(jìn)行學(xué)習(xí)。


        項(xiàng)目主頁(yè): 

        http://sourceforge.net/projects/cjson/




        4. CMockery



        cmockery 是 google 發(fā)布的用于C單元測(cè)試的一個(gè)輕量級(jí)的框架。它很小巧,對(duì)其他開(kāi)源包沒(méi)有依賴(lài),對(duì)被測(cè)試代碼侵入性小。cmockery 的源代碼行數(shù)不到 3K,你閱讀一下 will_return 和 mock 的源代碼就一目了然了。


        主要特點(diǎn):

        免費(fèi)且開(kāi)源,google 提供技術(shù)支持; 

        輕量級(jí)的框架,使測(cè)試更加快速簡(jiǎn)單; 

        避免使用復(fù)雜的編譯器特性,對(duì)老版本的編譯器來(lái)講,兼容性好; 

        并不強(qiáng)制要求待測(cè)代碼必須依賴(lài) C99 標(biāo)準(zhǔn),這一特性對(duì)許多嵌入式系統(tǒng)的開(kāi)發(fā)很有用 

        下載鏈接:

        http://code.google.com/p/cmockery/downloads/list



        5. Libev



        libev 是一個(gè)開(kāi)源的事件驅(qū)動(dòng)庫(kù),基于 epoll,kqueue 等 OS 提供的基礎(chǔ)設(shè)施。其以高效出名,它可以將 IO 事件,定時(shí)器,和信號(hào)統(tǒng)一起來(lái),統(tǒng)一放在事件處理這一套框架下處理?;?Reactor 模式,效率較高,并且代碼精簡(jiǎn)(4.15 版本 8000 多行),是學(xué)習(xí)事件驅(qū)動(dòng)編程的很好的資源。


        下載鏈接:

        http://software.schmorp.de/pkg/libev.html




        6. Memcached



        Memcached 是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),用于動(dòng)態(tài) Web 應(yīng)用以減輕數(shù)據(jù)庫(kù)負(fù)載。它通過(guò)在內(nèi)存中緩存數(shù)據(jù)和對(duì)象來(lái)減少讀取數(shù)據(jù)庫(kù)的次數(shù),從而提供動(dòng)態(tài)數(shù)據(jù)庫(kù)驅(qū)動(dòng)網(wǎng)站的速度。Memcached 基于一個(gè)存儲(chǔ)鍵/值對(duì)的 hashmap。Memcached-1.4.7 的代碼量還是可以接受的,只有 10K 行左右。


        下載地址:

        http://memcached.org/



        7. Lua



        Lua 很棒,Lua 是巴西人發(fā)明的,這些都令我不爽,但是還不至于臉紅,最多眼紅。


        讓我臉紅的是 Lua 的源代碼,百分之一百的 ANSI C,一點(diǎn)都不摻雜。在任何支持 ANSI C 編譯器的平臺(tái)上都可以輕松編譯通過(guò)。我試過(guò),真是一點(diǎn)廢話(huà)都沒(méi)有。Lua 的代碼數(shù)量足夠小,5.1.4 僅僅 1.5W 行,去掉空白行和注釋估計(jì)能到 1W 行。


        下載地址:

        http://www.lua.org/




        8. SQLite



        SQLite 是一個(gè)開(kāi)源的嵌入式關(guān)系數(shù)據(jù)庫(kù),實(shí)現(xiàn)自包容、零配置、支持事務(wù)的 SQL 數(shù)據(jù)庫(kù)引擎。其特點(diǎn)是高度便攜、使用方便、結(jié)構(gòu)緊湊、高效、可靠。足夠小,大致 3 萬(wàn)行C代碼,250K。


        下載地址:

        http://www.sqlite.org/ 。



        9. UNIX v6



        UNIX V6 的內(nèi)核源代碼包括設(shè)備驅(qū)動(dòng)程序在內(nèi)約有 1 萬(wàn)行,這個(gè)數(shù)量的源代碼,初學(xué)者是能夠充分理解的。有一種說(shuō)法是一個(gè)人所能理解的代碼量上限為 1 萬(wàn)行,UNIX V6 的內(nèi)核源代碼從數(shù)量上看正好在這個(gè)范圍之內(nèi)??吹竭@里,大家是不是也有“如果只有 1 萬(wàn)行的話(huà)沒(méi)準(zhǔn)兒我也能學(xué)會(huì)”的想法呢?


        另一方面,最近的操作系統(tǒng),例如 Linux 最新版的內(nèi)核源代碼據(jù)說(shuō)超過(guò)了 1000 萬(wàn)行。就算不是初學(xué)者,想完全理解全部代碼基本上也是不可能的。


        下載地址:

        http://minnie.tuhs.org/cgi-bin/utree.pl?file=V6




        10. NETBSD



        NetBSD 是一個(gè)免費(fèi)的,具有高度移植性的 UNIX-like 操作系統(tǒng),是現(xiàn)行可移植平臺(tái)最多的操作系統(tǒng),可以在許多平臺(tái)上執(zhí)行,從 64bit alpha 服務(wù)器到手持設(shè)備和嵌入式設(shè)備。NetBSD 計(jì)劃的口號(hào)是:”O(jiān)f course it runs NetBSD”。它設(shè)計(jì)簡(jiǎn)潔,代碼規(guī)范,擁有眾多先進(jìn)特性,使得它在業(yè)界和學(xué)術(shù)界廣受好評(píng)。


        由于簡(jiǎn)潔的設(shè)計(jì)和先進(jìn)的特征,使得它在生產(chǎn)和研究方面,都有卓越的表現(xiàn),而且它也有受使用者支持的完整的源代碼。許多程序都可以很容易地通過(guò) NetBSD Packages Collection 獲得。


        版權(quán)聲明:本文來(lái)源網(wǎng)絡(luò),免費(fèi)傳達(dá)知識(shí),版權(quán)歸原作者所有。如涉及作品版權(quán)問(wèn)題,請(qǐng)聯(lián)系我進(jìn)行刪除。

        ????????????????  END  ????????????????

        關(guān)注我的微信公眾號(hào),回復(fù)“加群”按規(guī)則加入技術(shù)交流群。

        瀏覽 36
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        評(píng)論
        圖片
        表情
        推薦
        點(diǎn)贊
        評(píng)論
        收藏
        分享

        手機(jī)掃一掃分享

        分享
        舉報(bào)
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            国产一级AV片| 蜜桃性爱视频| 国产理伦| 在线免费人成视频| 国产精品美女久久久久久久久| 欧美性性生交XXXXX无码| 欧美色婷婷| 91美女在线观看| 麻豆精品传媒2021md| 在线视频亚洲|