GitHub上有不錯的 C 開源項目?
大學(xué)時接觸的第一門語言就是 C語言,雖然距 C語言創(chuàng)立已過了40多年,但其經(jīng)典性和可移植性任然是當(dāng)今眾多高級語言中不可忽視的,想要學(xué)好其他的高級語言,最好是先從掌握 C語言入手。
今天老逛盤點 GitHub 上不錯的 C語言 開源項目,分別是:
1. 云存儲系統(tǒng)
2. 分布式文件系統(tǒng)
3. 太空侵略者復(fù)刻版
4. C語言教程
5. Nginx、Redis
01. 云存儲系統(tǒng)
Seafile 是一個用 C 語言編寫的云存儲系統(tǒng),具有隱私保護(hù)和團(tuán)隊協(xié)作功能。文件的集合稱為庫,每個庫都可以單獨同步。也可以使用用戶選擇的密碼進(jìn)行加密。
同時,Seafile 還允許用戶創(chuàng)建組并輕松地將文件共享到組中。你可以使用 seafile 快速構(gòu)建自己的私有網(wǎng)盤。
地址:https://github.com/haiwen/seafile
02. 分布式文件系統(tǒng)
FastDFS 是一款開源的分布式文件系統(tǒng),功能主要包括:文件存儲、文件同步、文件訪問等,解決了文件大容量存儲和高性能訪問的問題。FastDFS 特別適合以文件為載體的在線服務(wù),如圖片、視頻、文檔等等。
FastDFS用C語言實現(xiàn),支持 Linux、FreeBSD、MacOS 等類 UNIX 系統(tǒng)。FastDFS 類似 google FS,屬于應(yīng)用級文件系統(tǒng),不是通用的文件系統(tǒng),只能通過專有 API 訪問,目前提供了 C 和 Java SDK,以及 PHP 擴(kuò)展 SDK。
FastDFS 為互聯(lián)網(wǎng)應(yīng)用量身定做,解決大容量文件存儲問題,追求高性能和高擴(kuò)展性。FastDFS 可以看做是基于文件的 key value 存儲系統(tǒng),key 為文件 ID,value 為文件內(nèi)容,因此稱作分布式文件存儲服務(wù)更為合適。
FastDFS 的架構(gòu)比較簡單,如下圖所示:
地址:https://github.com/happyfish100/fastdfs
03. 太空侵略者復(fù)刻版
開源項目 si78c,用 C 語言精準(zhǔn)復(fù)現(xiàn) 1978 年經(jīng)典街機(jī)游戲《太空侵略者》。該項目從原始游戲的 ROM 中加載各種樣式的小精靈和其他數(shù)據(jù),但是沒有使用原始游戲的邏輯代碼。
si78c 用 C 語言重新復(fù)現(xiàn)了游戲邏輯,可以讓你更容易的理解原始系統(tǒng)內(nèi)部的工作原理。它不是對《太空侵略者》的模仿,而是一種恢復(fù)。
地址:https://github.com/loadzero/si78c
04. 游戲模擬器 mGBA
mGBA 是用于運行 Game Boy Advance 游戲的模擬器。它旨在比許多現(xiàn)有的 Game Boy Advance 模擬器更快、更準(zhǔn)確,并添加其他模擬器所缺乏的功能。它還支持 Game Boy 和 Game Boy Color 游戲。
可以在 mgba.io 上找到最新的新聞和下載。
地址:https://github.com/mgba-emu/mgba
05. C 語言教程
CNote 致力于打造最易懂的 C 語言入門教程,讓天下沒有難學(xué)的 C 語言。同時,CNote 配套視頻保姆級視頻教程共計 170 節(jié),學(xué)不會,算我輸。
地址:https://github.com/coderit666/CNote
06. Nginx
Nginx 是基于 C 語言編寫的開源、高性能、高可靠的 Web 和反向代理服務(wù)器,而且支持熱部署,幾乎可以做到 7 * 24 小時不間斷運行,即使運行幾個月也不需要重新啟動,還能在不間斷服務(wù)的情況下對軟件版本進(jìn)行熱更新。
性能是 Nginx 最重要的考量,其占用內(nèi)存少、并發(fā)能力強(qiáng)、能支持高達(dá) 5w 個并發(fā)連接數(shù),最重要的是, Nginx 是免費的并可以商業(yè)化,配置使用也比較簡單。
地址:https://github.com/nginx/nginx
07. Redis
Redis 是基于 C語言編寫的開源存儲數(shù)據(jù)庫、支持網(wǎng)絡(luò)、可基于內(nèi)存、分布式、可選持久性的鍵值對(Key-Value)存儲數(shù)據(jù)庫,并提供多種語言的 API。
地址:https://github.com/redis/redis