C語言學習方法、學習平臺及項目推薦
1 The Algorithms - C
C語言實現各種算法,同時也可以學習下算法!
項目地址:https://github.com/TheAlgorithms/C#the-algorithms---c--mainpage
2 libhv
libhv是一個類似于libevent、libev、libuv的跨平臺網絡庫,提供了更簡單的接口和更豐富的協議。詳細介紹見項目README
精妙小巧跨平臺,簡單實用易上手
base封裝了很多跨平臺的代碼,如hatomic原子操作、hthread線程、hmutex線程同步,當然這都是基于configure/cmake自動生成的hconfig.h和hplatform.h兩個頭文件中提供的平臺宏、編譯器宏等實現的;
event模塊則實現了事件循環(包括IO、timer、idle),不同的平臺有不同的實現,如Linux使用epoll,Windows使用IOCP、Mac使用kqueue、Solaris使用evport,感興趣的可以讀一讀event下的源碼;
http模塊則基于event模塊實現了本世紀最為通用的應用層協議http協議,包括http服務端和客戶端,libhv中examples下提供的httpd,性能可媲美nginx服務;
libhv是c++編寫HTTP API服務端/客戶端最簡單的庫,沒有之一
項目地址:https://github.com/ithewei/libhv.git
3 C語言入門項目
包括C語言迷宮、24點游戲、奔跑的火柴人、超市管理系統、打字母、電子時鐘、對對碰、俄羅斯方塊、黑白棋、華容道、火車票訂票管理源碼、連連看、商品銷售系統、象棋、超級瑪麗、圖書管理系統、學生成績管理系統.......
項目地址:https://mp.weixin.qq.com/s/ZUHtQxaahrGjvAZVu5jKKg
4 C語言超級全面的學習平臺
學習C語言/C++ 的github,分享C語言/C入門、學習路線、電子書籍推薦與下載、視頻推薦、小項目、干貨文章、筆試面試、C語言/C++ 規范、開源項目等。
項目地址:https://github.com/tangtangcoding/C-CppLearning
5 C語言PAT練習
PAT習題C語言題解。全部用C語言寫,追求代碼高效簡潔。
項目地址:GitHub - OliverLew/PAT
6 Learn-Algorithms
項目主要是 C語言實現算法相關的學習筆記,包括各類知識點,鏈表、隊列、哈希表等等
項目地址:https://github.com/nonstriater/Learn-Algorithms
7 Sqlite
SQLite是一個開源的嵌入式關系數據庫,實現自包容、零配置、支持事務的SQL數據庫引擎。
不需要一個單獨的服務器進程或操作的系統(無服務器的)。
SQLite 不需要配置,這意味著不需要安裝或管理。
一個完整的 SQLite 數據庫是存儲在一個單一的跨平臺的磁盤文件。
SQLite 是非常小的,是輕量級的,完全配置時小于 400KiB,省略可選功能配置時小于250KiB。
SQLite 是自給自足的,這意味著不需要任何外部的依賴。
SQLite 事務是完全兼容 ACID 的,允許從多個進程或線程安全訪問。
SQLite 支持 SQL92(SQL2)標準的大多數查詢語言的功能。
SQLite 使用 ANSI-C 編寫的,并提供了簡單和易于使用的 API。
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中運行。
項目地址:SQLite Home Page
8 EasyLogger
目前EasyLogger支持以下功能:
日志輸出方式支持串口、Flash、文件等;
日志內容可包含級別、時間戳、線程信息、進程信息等;
支持多種操作系統,支持裸機;
各級別日志支持不同顏色顯示;
項目地址:https://gitee.com/Armink/EasyLogger
9 struct2json
struct2json 是一個開源的C結構體與 JSON 快速互轉庫,它可以快速實現 結構體對象 與 JSON 對象 之間序列化及反序列化要求。快速、簡潔的 API 設計,大大降低直接使用 JSON 解析庫來實現此類功能的代碼復雜度。
起源
把面向對象設計應用到C語言中,是當下很流行的設計思想。由于C語言中沒有類,所以一般使用結構體struct充當類,那么結構體變量就是對象。有了對象之后,很多時候需要考慮對象的序列化及反序列化問題。C語言不像很多高級語言擁有反射等機制,使得對象序列化及反序列化被原生的支持。
對于C語言來說,序列化為 JSON 字符串是個不錯的選擇,所以就得使用 cJSON 這類 JSON 解析庫,但是使用后的代碼冗余且邏輯性差,所以萌生對cJSON庫進行二次封裝,實現一個 struct 與 JSON 之間快速互轉的庫。 struct2json就誕生于此。下面是 struct2json 主要使用場景:
持久化 :結構體對象序列化為 JSON 對象后,可直接保存至文件、Flash,實現對結構體對象的掉電存儲;
通信 :高級語言對JSON支持的很友好,例如: Javascript、Groovy 就對 JSON 具有原生的支持,所以 JSON 也可作為C語言與其他語言軟件之間的通信協議格式及對象傳遞格式;
可視化 :序列化為 JSON 后的對象,可以更加直觀的展示到控制臺或者 UI 上,可用于產品調試、產品二次開發等場景;
項目地址:https://gitee.com/Armink/struct2json
10 TencentOS-tiny
TencentOS tiny主要由一個輕量級RTOS內核+多個物聯網組件構成,,從下到上主要包括:
CPU庫 :TencentOS tiny支持的CPU IP核架構,當前主要支持ARM Cortex M0/3/4/7,還有現在很火的RISC-V,當然,騰訊物聯網團隊肯定也會支持更多種類更多IP核與開發板。
驅動管理層 :包括BSP板級支持包,這些東西主要由MCU芯片廠家開發與維護,、HAL硬件抽象、Drivers設備驅動,這部分對于純粹嵌入式開發者來說還是很重要的,肯定會越來越完善的!
內核 :TencentOS tiny實時內核包括任務管理、實時調度、時間管理、中斷管理、內存管理、異常處理、軟件定時器、鏈表、消息隊列、信號量、互斥鎖、事件標志等模塊,接下來我也將寫一系列TencentOS tiny內核源碼分析的文章,敬請期待吧!
IoT協議棧 :TencentOS tiny提供lwip、AT Adapter、SAL層,支持不同的網絡硬件,如以太網、串口WIFI、GPRS、NB-IoT、4G等通信模塊。在TCP/IP網絡協議棧上提供常用的物聯網協議棧應用層,如COAP、MQTT,支撐終端業務快速接入騰訊云;
安全框架 :TencentOS tiny為了確保物聯網終端數據傳輸安全以及設備認證安全,提供了比較完整的安全解決方案。安全框架提供的DTLS和TLS安全協議加固了COAP及MQTT的傳輸層,可確保物聯網終端在對接騰訊云時實現安全認證和數據加密;另外針對低資源的終端硬件,安全框架還提供與騰訊云IoTHub配套的密鑰認證方案,確保資源受限設備也能在一定程度上實現設備安全認證;物聯網安全是非常重要的,這些框架也是必須存在的。
組件框架 :TencentOS tiny提供文件系統、KV存儲、自組網、JS引擎、低功耗框架、設備框架、OTA、調試工具鏈等一系列組件,這部分我覺得還是很不錯的,期待ing;
開放API (規劃開發中):TencentOS tiny將在協議中間件和框架層上提供開放API函數,這樣子就能很方便使用中間組件的功能,我是最喜歡這種開發的,不造輪子,能直接使用。簡單來說這個API能快速對接騰訊云,實現終端業務上云的需求,最大程度減少終端物聯網產品開發周期,節省開發成本;
示例應用 :TencentOS tiny提供的示例代碼,模塊測試代碼等,方便用戶參考使用。
騰訊云物聯網平臺(圖中最上層的部分):嚴格來說這部分不算TencentOS tiny的框架內容,這是接入平臺層了,騰訊云的物聯網平臺都是提供多種語言的SDK包,當然在嵌入式設備上肯定使用C SDK的,不過總的來說都是很不錯的。
總的來說TencentOS tiny還是非常不錯的,該有的功能都有,可以考慮使用一下這個操作系統~
項目地址:https://github.com/Tencent/TencentOS-tiny
11 ffmpeg
FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,并能將其轉化為流的開源計算機程序。采用LGPL或GPL許可證。它提供了錄制、轉換以及流化音視頻的完整解決方案。
項目地址:GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git
12 Lua
Lua 很棒,Lua 是巴西人發明的,這些都令我不爽,但是還不至于臉紅,最多眼紅。
讓我臉紅的是 Lua 的源代碼,百分之一百的 ANSI C,一點都不摻雜。在任何支持 ANSI C 編譯器的平臺上都可以輕松編譯通過。我試過,真是一點廢話都沒有。Lua 的代碼數量足夠小,5.1.4 僅僅 1.5W 行,去掉空白行和注釋估計能到 1W 行。
項目地址:http://www.lua.org/
13 cJSON
cJSON 是C語言中的一個 JSON 編解碼器,非常輕量級,C文件只有 500 多行,速度也非常理想。
cJSON 也存在幾個弱點,雖然功能不是非常強大,但 cJSON 的小身板和速度是最值得贊賞的。其代碼被非常好地維護著,結構也簡單易懂,可以作為一個非常好的C語言項目進行學習。
項目地址: http://sourceforge.net/projects/cjson/
14 CMockery
cmockery 是 google 發布的用于C單元測試的一個輕量級的框架。它很小巧,對其他開源包沒有依賴,對被測試代碼侵入性小。cmockery 的源代碼行數不到 3K,你閱讀一下 will_return 和 mock 的源代碼就一目了然了。
主要特點:
免費且開源,google 提供技術支持;
輕量級的框架,使測試更加快速簡單;
避免使用復雜的編譯器特性,對老版本的編譯器來講,兼容性好;
并不強制要求待測代碼必須依賴 C99 標準,這一特性對許多嵌入式系統的開發很有用
項目地址:http://code.google.com/p/cmockery/downloads/list
C 語言 云學院
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。