【GitHub项目推荐--不错的 C 开源项目】【转载】

大学时接触的第一门语言就是 C语言,虽然距 C语言创立已过了40多年,但其经典性和可移植性任然是当今众多高级语言中不可忽视的,想要学好其他的高级语言,最好是先从掌握 C语言入手。

今天老逛盘点 GitHub 上不错的 C语言 开源项目,分别是:

1. 云存储系统

2. 分布式文件系统

3. 太空侵略者复刻版

4. C语言教程

5. Nginx、Redis


01. 云存储系统

Seafile 是一个用 C 语言编写的云存储系统,具有隐私保护和团队协作功能。文件的集合称为库,每个库都可以单独同步。也可以使用用户选择的密码进行加密。 

同时,Seafile 还允许用户创建组并轻松地将文件共享到组中。你可以使用 seafile 快速构建自己的私有网盘。

地址:https://github.com/haiwen/seafile

02. 分布式文件系统

FastDFS 是一款开源的分布式文件系统,功能主要包括:文件存储、文件同步、文件访问等,解决了文件大容量存储和高性能访问的问题。FastDFS 特别适合以文件为载体的在线服务,如图片、视频、文档等等。

FastDFS用C语言实现,支持 Linux、FreeBSD、MacOS 等类 UNIX 系统。FastDFS 类似 google FS,属于应用级文件系统,不是通用的文件系统,只能通过专有 API 访问,目前提供了 C 和 Java SDK,以及 PHP 扩展 SDK。

FastDFS 为互联网应用量身定做,解决大容量文件存储问题,追求高性能和高扩展性。FastDFS 可以看做是基于文件的 key value 存储系统,key 为文件 ID,value 为文件内容,因此称作分布式文件存储服务更为合适。

FastDFS 的架构比较简单,如下图所示: 

地址:https://github.com/happyfish100/fastdfs

03. 太空侵略者复刻版

开源项目 si78c,用 C 语言精准复现 1978 年经典街机游戏《太空侵略者》。该项目从原始游戏的 ROM 中加载各种样式的小精灵和其他数据,但是没有使用原始游戏的逻辑代码。

si78c 用 C 语言重新复现了游戏逻辑,可以让你更容易的理解原始系统内部的工作原理。它不是对《太空侵略者》的模仿,而是一种恢复。

地址:https://github.com/loadzero/si78c

04. 游戏模拟器 mGBA

mGBA 是用于运行 Game Boy Advance 游戏的模拟器。它旨在比许多现有的 Game Boy Advance 模拟器更快、更准确,并添加其他模拟器所缺乏的功能。它还支持 Game Boy 和 Game Boy Color 游戏。

可以在 mgba.io 上找到最新的新闻和下载。

地址:https://github.com/mgba-emu/mgba

05. C 语言教程

CNote 致力于打造最易懂的 C 语言入门教程,让天下没有难学的 C 语言。同时,CNote 配套视频保姆级视频教程共计 170 节,学不会,算我输。

地址:https://github.com/coderit666/CNote

06. Nginx

Nginx 是基于 C 语言编写的开源、高性能、高可靠的 Web 和反向代理服务器,而且支持热部署,几乎可以做到 7 * 24 小时不间断运行,即使运行几个月也不需要重新启动,还能在不间断服务的情况下对软件版本进行热更新。

性能是 Nginx 最重要的考量,其占用内存少、并发能力强、能支持高达 5w 个并发连接数,最重要的是, Nginx 是免费的并可以商业化,配置使用也比较简单。

地址:https://github.com/nginx/nginx

07. Redis

Redis 是基于 C语言编写的开源存储数据库、支持网络、可基于内存、分布式、可选持久性的键值对(Key-Value)存储数据库,并提供多种语言的 API。

地址:https://github.com/redis/redis

原文链接:

GitHub上有不错的 C 开源项目? 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/339575.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

windows用msvc编译opencv、opencv-python、opencv_contrib、cuda

如要用mingw编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/135741806。 如要用Ubuntu编译opencv,参考我另外一篇文章https://blog.csdn.net/weixin_44733606/article/details/131720128。 一、安装VS2022&…

【CF比赛记录】 —— Codeforces Round 920 (Div. 3)(A、B、C、D)

🌏博客主页:PH_modest的博客主页 🚩当前专栏:CF比赛记录 💌其他专栏: 🔴每日一题 🟡 cf闯关练习 🟢 C语言跬步积累 🌈座右铭:广积粮,缓…

《红色警戒》开源:重温经典游戏! | 开源日报 No.152

electronicarts/CnC_Remastered_Collection Stars: 17.6k License: NOASSERTION CnC_Remastered_Collection 是一个提供了《泰伯利亚黎明》和《红色警戒》源代码的开源项目。 该项目的主要功能是提供经典游戏命令与征服的重新制作版本。该项目具有改进和优化过的图形和音频效…

idea添加python虚拟环境

新建一个项目 import numpy as np import matplotlib.pyplot as pltif __name__ __main__:# 生成x值,例如在[-2π, 2π]范围内x np.linspace(-2 * np.pi, 2 * np.pi, 1000)# 计算sin(x)的值y np.sin(x)# 绘制图形plt.plot(x, y)plt.title(sin(x) Function)plt.xl…

[嵌入式软件][启蒙篇][仿真平台] STM32F103实现串口输出输入、ADC采集

上一篇:[嵌入式软件][启蒙篇][仿真平台] STM32F103实现LED、按键 文章目录 一、串口输出(1) 简介(2) 示例代码(3) 仿真效果 二、串口输入(1) 简介(2) 示例代码(3) 仿真效果 三、ADC采集(1) 简介(2) 示例代码(电压)(3) 仿真效果 (…

STM32CubeMX配置定时器输入捕获功能

STM32CubeMX配置定时器输入捕获功能 0.前言一、方法简介二、STM32CubeMX配置1.生成PWM信号2.配置TIM3_CH1进行采样3.占空比计算 三、总结 参考文章:CubeMX系列教程——11 定时器输入捕获 0.前言 最近在学习江科大STM32教程的原理部分时,发现该教程中使用…

【EI会议征稿通知】2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024)

2024年第四届数字信号与计算机通信国际学术会议(DSCC 2024) 2024 4th International Conference on Digital Signal and Computer Communications 第四届数字信号与计算机通信国际会议(DSCC 2024)将于2024年4月12日至14日在中国-香港举行。DSCC 2024旨…

使用Rancher管理Kubernetes集群

部署前规划 整个部署包括2个部分,一是管理集群部署,二是k8s集群部署。管理集群功能主要提供web界面方式管理k8s集群。正常情况,管理集群3个节点即可,k8s集群至少3个。本文以3节点管理集群,3节点k8s集群为例 说明部署过…

【大模型研究】(1):从零开始部署书生·浦语2-20B大模型,使用fastchat和webui部署测试,autodl申请2张显卡,占用显存40G可以运行

1,演示视频 https://www.bilibili.com/video/BV1pT4y1h7Af/ 【大模型研究】(1):从零开始部署书生浦语2-20B大模型,使用fastchat和webui部署测试,autodl申请2张显卡,占用显存40G可以运行 2&…

【Web前端开发基础】CSS的盒子模型

CSS的盒子模型 一、学习目标 能够认识不同选择器的优先级公式能够进行CSS权重叠加计算,分析并解决CSS 冲突问题能够认识盒子模型的组成部分能够掌握盒子模型的边框、内边距、外边距的作用及简写形式能够计算盒子的实际大小能够了解外边距折叠现象,并知…

【Go面试向】rune和byte类型的认识与使用

【Go】rune和byte类型的认识与使用 大家好 我是寸铁👊 总结了一篇rune和byte类型的认识与使用的文章✨ 喜欢的小伙伴可以点点关注 💝 byte和rune类型定义 byte,占用1个字节,共8个比特位,所以它实际上和uint8没什么本质区别,它表示…

第十四课:eNSP AAA配置教程

一、AAA介绍 AAA是Authentication(认证)、Authorization(授权)和Accounting(计费)的简称,是一种管理框架,它提供了授权部分用户访问指定资源和记录这些用户操作行为的安全机制。因其…

ip_vs 的管理以及 keepalived + lvs 案例

ip_vs 的管理 ipvsadm 与 keepalived for lvs ipvsadm 命令及参数介绍 部署和配置LVS服务会经常用到一些命令,如ipvsadm,可以使用“ipvsadm -help”命令查看使用帮助。 ipvsadm 命令的常用参数及其说明如下: # 添加虚拟服务器# 语法&#x…

计算机网络自顶向下Wireshark labs1-Intro

Wireshark labs1 实验文档:http://www-net.cs.umass.edu/wireshark-labs/Wireshark_Intro_v8.0.pdf 介绍 加深对网络协议的理解通常可以通过观察协议的运行和不断调试协议来大大加深,具体而言,就是观察两个协议实体之间交换的报文序列&…

python系列-顺序/条件/循环语句

🌈个人主页: 会编程的果子君 ​💫个人格言:“成为自己未来的主人~” 目录 顺序语句 条件语句 什么是条件语句 语法格式 缩进和代码块 空语句pass 循环语句 while循环 for循环 continue break 顺序语句 默认情况下,Python的代码执行…

精准核酸检测 - 华为OD统一考试

OD统一考试(C卷) 分值: 100分 题解: Java / Python / C 题目描述 为了达到新冠疫情精准防控的需要,为了避免全员核酸检测带来的浪费,需要精准圈定可能被感染的人群。 现在根据传染病流调以及大数据分析&a…

Linux第34步_TF-A移植的第2步_修改设备树和tf-a.tsv

在虚拟机中,使用VSCode打开linux /atk-mp1/atk-mp1/my-tfa/目录下tf-a.code-workspace”; 找到“tf-a-stm32mp-2.2.r1/fdts”目录,就是设备树文件所在的目录。 见下图: 一、修改“stm32mp157d-atk.dts” 修改后,见下…

日志平台搭建手册

1. Java环境安装和配置 JDK要求安装1.8版本,安装可以参考《Linux安装JDK完整步骤》。 2. 创建用户 创建elk用户,用来管理elk相关的服务,包括:filebeat、logstash、elasticsearch、kibana。执行命令: useradd elk …

VC++中使用OpenCV进行人脸检测

VC中使用OpenCV进行人脸检测 对于上面的图像,如何使用OpenCV进行人脸检测呢? 使用OpenCV进行人脸检测十分简单,OpenCV官网给了一个Python人脸检测的示例程序, objectDetection.py代码如下: from __future__ import p…

计算机网络-分层结构,协议,接口,服务

文章目录 总览为什么要分层怎样分层正式认识分层概念小结 总览 为什么要分层 发送文件前要做的准备工作很多 把这个准备工作分层小问题解决,也就分层解决 怎样分层 每层相互独立,每层做的工作不同 界面自然清晰,层与层之间的接口能够体现…