编程语言

C

共 183 个项目
← 项目库
86Box
C第 124 期

86Box

复古 PC 模拟器。这是一款开源的复古电脑模拟器,可自由搭配、模拟各种经典硬件,比如奔腾、赛扬处理器、声卡、显卡等。支持运行 DOS、Windows 98、Windows XP 等早期操作系统和同时代的软件。

simplewall
C第 124 期

simplewall

小巧的 Windows 网络管控工具。这是一款用于管理和控制 Windows 网络活动的工具,体积小、没广告、完全免费。它基于 WFP 实现网络过滤,不依赖系统自带防火墙,支持自定义规则、IPv6、拦截名单等功能。

暂无截图
C第 123 期

keyd

Linux 系统级改键工具。这是一个 Linux 上的系统级键盘重映射守护进程,基于内核输入层(evdev/uinput)实现,无需依赖桌面环境,配置在 X11、Wayland 和 TTY 终端中均可生效。支持按下、长按设置不同动作、自定义按键组合,以及为不同键盘单独配置按键映射规则等功能。

暂无截图
C第 123 期

mbedtls

灵活易用的 TLS 库。该项目是用 C 语言编写的加密库,可用于实现加密原语、X.509 证书操作以及 SSL/TLS 和 DTLS 协议。它体积小巧、易于移植,并提供丰富的示例,适用于物联网和嵌入式系统等资源有限的设备。

ds4
C第 122 期

ds4

Redis 作者写的 DeepSeek 专用推理引擎。该项目是 Redis 作者用 C 语言开发,专为 DeepSeek-V4-Flash 模型设计的本地轻量级推理引擎。它并非简单的 GGUF 运行工具,而是功能齐全的独立推理引擎,支持 Metal、CUDA 硬件加速、2-bit 量化、磁盘 KV 缓存持久化、HTTP API 服务和编程智能体等功能。

egos-2000
C第 122 期

egos-2000

仅 2000 行的教学操作系统。这是一个仅用 2000 行代码实现的极简操作系统,内含 9 个课程实验,旨在让每位学生都能看完并理解操作系统的全部源码。它体积小、结构清晰,可以在 QEMU 模拟器和 RISC-V 开发板上运行,实现了内存管理、进程控制、系统调用、文件系统、网络通信和 Shell 等核心组件。

systeminformer
C第 121 期

systeminformer

免安装的 Windows 监控工具。这是一款免安装的开源 Windows 系统监控与调试工具,可实时查看进程资源占用、网络活动、磁盘读写等信息,支持定位占用文件的进程、查看内核级调用栈和管理系统服务等功能。遇到文件无法删除?一查便知是被哪个进程占着。

printf-tac-toe
C第 120 期

printf-tac-toe

把井字棋塞进一次 printf 调用。这是一个展示 C 语言黑魔法的开源项目,在单个 printf 调用内完成了游戏逻辑运算、变量赋值、胜负判断和界面渲染,同时支持数字键落子、走法检测和刷新棋盘功能。

voidImageViewer
C第 119 期

voidImageViewer

比图片还小的免费看图工具。这是一款用 C 语言编写的 Windows 轻量级图片查看工具,让你几乎感受不到等待。它体积小、启动快,拥有极快的图片加载和切换速度,支持 JPG、PNG、WEBP、BMP、GIF、ICO、TIF 等主流图片格式。

来自 @刘睿华 的分享
zenc
C第 119 期

zenc

像高级语言一样写 C 代码。这是一个现代系统编程语言,写起来像高级语言又能像 C 语言一样运行。它通过编译生成 GNU C/C11 代码,兼容 C ABI(应用程序二进制接口),支持无缝集成到现有的 C 语言生态,在保持 C 语言运行效率的基础上,提升开发体验。```import "std/net/tcp.zc"fn main() {"Echo Server listening on :8080";let listener = TcpListener::bind("127.0.0.1", 8080).unwrap();loop {// Accept new connections let stream = listener.accept().unwrap();let buf: char[1024];while true {let n = stream.read(&buf[0], 1024).unwrap();if n == 0 { break; }stream.write(&buf[0], n);}}}```

clifm
C第 118 期

clifm

纯命令行的文件管理器。这是一款 C 语言写的命令行文件管理工具,使用起来比 Shell 更高效、比 TUI 工具更轻便。它没有复杂的菜单和图形界面,用户只需输入简单的命令即可快速完成文件操作,支持条目数字索引、自动补全、语法高亮和文件预览等功能。

Hexecute
C第 117 期

Hexecute

Linux 桌面鼠标手势启动器。这是一款基于 Wayland 的手势启动器,可通过鼠标绘制图案快速启动应用。新手势录入只需一条命令并重复绘制 3 次,操作简单直观。所有手势数据均以 JSON 文件形式存储,方便编辑、备份和迁移。

TaskExplorer
C第 117 期

TaskExplorer

更强大的 Windows 任务管理器。这是一款适用于 Windows 平台的高级任务管理工具,相比系统自带的任务管理器,能够实时显示更详细的进程信息,包括线程堆栈、文件句柄和网络连接等。

暂无截图
C第 116 期

sj.h

极简的 C 语言 JSON 解析库。这是一个轻量级的 C 语言 JSON 解析库,提供可靠的 JSON 遍历和基础解析功能。它仅 150 行代码、无外部依赖,采用零内存分配策略,直接在原数据上进行解析,速度快且无内存泄漏风险,适用于嵌入式、物联网和游戏开发等场景。```c char *json_text = "{ \"x\": 10, \"y\": 20, \"w\": 30, \"h\": 40 }";typedef struct { int x, y, w, h; } Rect;bool eq(sj_Value val, char *s) {size_t len = val.end - val.start;return strlen(s) == len && !memcmp(s, val.start, len);}int main(void) {Rect rect = {0};sj_Reader r = sj_reader(json_text, strlen(json_text));sj_Value obj = sj_read(&r);sj_Value key, val;while (sj_iter_object(&r, obj, &key, &val)) {if (eq(key, "x")) { rect.x = atoi(val.start); }if (eq(key, "y")) { rect.y = atoi(val.start); }if (eq(key, "w")) { rect.w = atoi(val.start); }if (eq(key, "h")) { rect.h = atoi(val.start); }}printf("rect: { %d, %d, %d, %d }\n", rect.x, rect.y, rect.w, rect.h);return 0;}```

iotop
C第 115 期

iotop

终端下的 IO 资源监控工具。这是一款用于监控 Linux 系统 I/O 的命令行工具,拥有类似 top 命令的交互界面和操作方式,支持实时按 I/O 使用率对进程进行排序和展示。

libsodium
C第 115 期

libsodium

开箱即用的 C 语言加密库。这是一个现代易用、跨平台的 C 语言加密库,为开发者提供全面的加密操作 API。它集成了多种加密、签名和哈希算法,适用于安全通信、数据保护等场景。

来自 @沐怡旸 的分享
fastfetch
C第 114 期

fastfetch

更快的系统信息查看工具。这是一个类似 neofetch 的命令行工具,可以在终端里概览系统的相关信息。它采用 C 语言编写,相较于 bash 写的 neofetch 更快,显示的信息包括操作系统、Shell、内核、CPU、GPU、内存等,目前支持 Linux、Android、FreeBSD、macOS 和 Windows 7+ 操作系统。

暂无截图
C第 114 期

miniaudio

极简易用的 C 语言音频库。这是一个单文件、零依赖、跨平台的 C 语言音频库。它将各种主流操作系统的底层音频 API 封装成简单易用的接口,让你轻松实现音频播放、录制和处理等功能,适用于游戏引擎、实时通讯、嵌入式、离线批处理等场景。```c#include "miniaudio/miniaudio.h"#include int main(){ma_result result;ma_engine engine;result = ma_engine_init(NULL, &engine);if (result != MA_SUCCESS) {return -1;}ma_engine_play_sound(&engine, "sound.wav", NULL);printf("Press Enter to quit...");getchar();ma_engine_uninit(&engine);return 0;}```

暂无截图
C第 113 期

nob.h

单文件的 C 语言构建系统。这是一个仅头文件的 C 语言库,支持通过 C 代码直接定义构建逻辑,实现自动化编译和构建,无需依赖外部工具,仅用 C 编译器即可完成项目构建。

pogocache
C第 113 期

pogocache

轻量级多协议的缓存服务。这是一款专注于低延迟和低 CPU 占用的高性能缓存服务,无论单线程还是多线程均表现优异。它可作为独立服务或单文件库使用,支持 RESP、Memcache、HTTP、Postgres 等多种协议。

tinyusb
C第 113 期

tinyusb

让单片机快速实现 USB 功能的库。这是一个开源的嵌入式 USB Host/Device 协议库,专为各种微控制器(MCU)设计,提供高效、易用且可扩展的 USB 支持,兼容多种主流芯片平台。

AltSnap
C第 112 期

AltSnap

Windows 全局 Alt 键窗口管理器。这是一款将 Linux 系统中高效的窗口管理方式复刻到 Windows 平台的工具。你只需按住 Alt 键,即可用鼠标在窗口的任何位置轻松拖动、缩放和停靠,彻底告别繁琐地寻找并点击标题栏和边框的传统操作。

来自 @孤胆枪手 的分享
libpostal
C第 112 期

libpostal

兼容全球地址格式的解析库。该项目是用 C 语言编写的全球地址解析库,支持多种语言、格式和国家的地址字符串,能够将地址信息转换为结构化数据。```c#include#include#include int main(int argc, char **argv) {// Setup (only called once at the beginning of your program)if (!libpostal_setup() || !libpostal_setup_parser()) {exit(EXIT_FAILURE);}libpostal_address_parser_options_t options = libpostal_get_address_parser_default_options();libpostal_address_parser_response_t *parsed = libpostal_parse_address("781 Franklin Ave Crown Heights Brooklyn NYC NY 11216 USA", options);for (size_t i = 0; i num_components; i++) {printf("%s: %s\n", parsed->labels[i], parsed->components[i]);}// Free parse result libpostal_address_parser_response_destroy(parsed);// Teardown (only called once at the end of your program)libpostal_teardown();libpostal_teardown_parser();}```

mimikatz
C第 111 期

mimikatz

探索 Windows 安全机制的工具。这是一款采用 C 语言编写的用于研究 Windows 安全机制的工具。它能够从内存中提取明文密码、哈希值、PIN 码、Kerberos 票据等敏感信息,支持 pass-the-hash、Golden Ticket、DCSync 等高级操作,广泛应用于安全研究、渗透测试和系统安全分析等场景。

Chroma
C第 110 期

Chroma

面向游戏开发的色盲检测工具。该项目是育碧官方开源的色盲检测工具,支持实时在游戏画面上叠加三种色盲滤镜,帮助开发者直观地看到色盲用户可能遇到的视觉障碍,从而及时调整游戏设计,提升游戏的可访问性。

clay
C第 109 期

clay

零依赖 C 语言 UI 布局库。这是一个基于 C 语言实现的高性能 2D UI 布局库,能够提供微秒级的布局性能和灵活的响应式布局能力。它采用类似 flexbox 的布局模型,支持响应式设计、文本换行、滚动容器等功能。Clay 具有零依赖和轻量级的特性,核心文件仅为 2KB,且可编译为 wasm 文件(15KB),适用于游戏开发、嵌入式设备以及轻量级 Web 应用等场景。

shairport-sync
C第 109 期

shairport-sync

开源的 AirPlay 音频无缝接入方案。这是一款支持 AirPlay/AirPlay 2 协议的音频播放器,能够接收并播放来自苹果设备的 AirPlay 音频流。只需树莓派等低成本设备,就可以将普通音响升级为支持 AirPlay 的无线音响,轻松打造家庭多房间无线音频系统。

Catime
C第 108 期

Catime

简洁小巧的 Windows 计时器。这是一款轻巧易用的 Windows 计时器,集显示时间、倒计时和番茄时钟功能于一体。它采用 C 语言编写,体积小、占用少,支持透明界面。用户可以调整界面大小和位置,设置超时动作(锁屏/通知/关机),以及自定义颜色和字体,满足个性化需求。

来自 @VerSion1312 的分享
暂无截图
C第 108 期

nq

Unix 命令行任务队列工具。这是一个轻量级命令行队列工具,用户可以将任务添加到队列中,并在后台按顺序执行。它支持在 Linux、FreeBSD 和 macOS 等系统上运行,适用于需要依次执行多个脚本或命令的场景。```# 将命令加入队列并在后台执行nq COMMAND# 等待所有队列中的任务完成nq -w# 例如,将 make clean 命令加入队列nq make clean# 将 make depends 命令加入队列nq make depends# 将 make all 命令加入队列nq make all# 查看当前任务日志nqtail```

xash3d-fwgs
C第 108 期

xash3d-fwgs

带你重温《半条命》的游戏引擎。这是一款开源的游戏引擎,主要用于运行和修改 GoldSrc 引擎的游戏。GoldSrc 是 Valve 公司用于开发《半条命》等经典游戏的引擎。Xash3D FWGS 通过提供一个兼容、跨平台的游戏引擎,让用户可以在现代系统、移动设备、掌机上运行这些经典游戏,并进行深度修改和扩展,例如添加触屏控制、语音聊天和渲染器选项等功能。

来自 @天涯孤雁 的分享
earlyoom
C第 107 期

earlyoom

防止 OOM 的 Linux 守护进程。这是一款专为 Linux 设计的 OOM 守护进程,旨在弥补内核自带的 OOM Killer 仅在内存耗尽时才触发的不足。它能够提早干预(默认 10%),自动终止占用内存最多的进程,从而防止系统因内存耗尽而陷入卡死的状态。

sqlite-vec
C第 107 期

sqlite-vec

SQLite 的向量搜索扩展。这是一个体积小、零依赖的向量搜索 SQLite 扩展,为 SQLite 数据库添加了插入和查询浮点、整数和二进制向量的能力。它可以运行在任何支持 SQLite 的平台上,包括 Linux、macOS、Windows、浏览器(WASM)、树莓派等。

暂无截图
C第 106 期

sshfs

通过 SSH 挂载远程文件系统的工具。这是一个基于 SFTP 协议的文件系统工具,可通过 SSH 协议将远程文件系统挂载到本地。它操作简单,仅需一条命令,即可像访问本地文件系统一样管理远程文件和目录,兼容 Linux、BSD 和 macOS 系统。```挂载文件系统sshfs [user@]hostname:[directory] mountpoint卸载文件系统fusermount -u mountpoint```

fluent-bit
C第 105 期

fluent-bit

高效轻量的日志收集与处理工具。这是一个轻量级、高效的日志收集、处理和转发工具,支持实时收集和处理来自不同来源的日志数据,具有低内存和 CPU 占用的特性。

暂无截图
C第 105 期

write-a-hash-table

从零用 C 语言实现哈希表。该项目是讲解如何用 C 语言实现一个开放寻址和双重哈希的哈希表,代码约为 200 行,预计学习时间为 1 到 2 小时。

deskhop
C第 104 期

deskhop

基于树莓派的双机鼠标键盘共享方案。这是一款用于快速切换鼠标和键盘的桌面切换工具,解决了用户在多台计算机之间共享键盘和鼠标时遇到的繁琐和延迟问题。它通过硬件中介设备,支持在不同操作系统(Linux、macOS、Windows)之间通过拖动鼠标或使用快捷键实现输入的无缝切换。该项目完全开源,且不需要安装额外的驱动。硬件则是基于 Raspberry Pi Pico 和 USB 输入/输出协议,支持自定义配置并提供多种附加功能,如慢速鼠标模式、屏幕锁定和游戏模式。

来自 @无间之钟 的分享
kyanos
C第 104 期

kyanos

深入内核的网络流量分析工具。这是一个基于 eBPF 的网络问题分析工具,能够实时监控和分析 HTTP、Redis 和 MySQL 请求。它支持强大的流量过滤功能,可根据进程、容器、协议信息和耗时等条件进行精确过滤,并提供多维度聚合抓取的数据包信息,适用于排查远程服务慢查询等问题。

暂无截图
C第 104 期

minisign

简单易用的文件签名工具。这是一个开箱即用的文件数字签名与验证工具,只需要简单的命令即可生成和验证文件签名。它基于 Ed25519 公钥签名系统,提供可靠的文件完整性验证功能,适用于软件分发和文件共享等场景。```# 创建密钥minisign -G# 对文件进行签名minisign -Sm HelloGitHub.txt# 验证签名$ minisign -Vm HelloGitHub.txt -P xxxx```

rawdrawandroid
C第 103 期

rawdrawandroid

仅用 C 语言开发 Android 应用。这是一个 Android 应用开发框架,可以让开发者不用 Java,仅用 C 和 Make 开发 Android 应用。它轻量且跨平台,支持 OpenGL ES、陀螺仪、多点触控及 Android 键盘,并能直接访问 USB 设备。

taisei
C第 103 期

taisei

免费开源的东方 Project 系列的射击游戏。该项目是基于东方 Project 世界观的弹幕射击类游戏,拥有独立原创的故事情节、音乐和游戏机制。这款名为“泰西”的游戏,采用 C11、SDL2 和 OpenGL 开发,完全免费且开源,支持在 Windows、Linux、macOS 和 Chrome 等浏览器上运行。

Ditto
C第 102 期

Ditto

Windows 的剪贴板历史管理工具。这是一款免费的 Windows 剪贴板增强工具。它能够将复制到剪贴板的内容存储到数据库中(SQLite),方便日后检索,支持设定保存日期、条目总数、合并粘贴、分组、快速搜索和热键粘贴等功能。此外,还可以通过网络共享剪贴板内容,并对传输数据进行加密保护。

来自 @Veeja Liu 的分享
FlappyBird
C第 102 期

FlappyBird

仅 100KB 的像素鸟游戏。该项目是用 C 语言编写的飞翔的小鸟游戏(Flappy Bird),它运行流畅、安装包不到 100KB,适用于 Android 5.1 及以上系统。

system-bus-radio
C第 102 期

system-bus-radio

用电脑轻松发射无线电信号。该项目通过控制计算机系统总线在特定频率上切换电流,实现了无需额外硬件设备,仅用电脑发送 AM 无线电信号的功能。

austin
C第 101 期

austin

深入 Python 程序性能分析的工具。这是一款专为 Python 程序设计的性能分析工具,无需修改代码即可轻松定位 Python 程序的性能瓶颈和内存使用情况。它是采用 C 语言编写的 CPython 帧堆栈采样器,具有体积小、运行速度快、零代码侵入等特点,支持 WebUI、TUI、VSCode 等多种可视化方式(需额外安装)。

chsrc
C第 101 期

chsrc

全平台通用的换源工具。该项目能够为常见的 Linux 发行版、编程语言和软件切换至国内镜像源,操作简单仅需一条命令。它采用 C 语言编写,具有高效和轻量级的特点,支持测速、多平台以及项目级换源等功能,适用于优化下载速度或解决源受限的场景。

来自 @ccmywish 的分享
collectd
C第 101 期

collectd

灵活的系统信息收集守护进程。这是一个功能强大的收集系统信息的守护进程,能够定期收集和统计系统信息。它支持丰富的数据收集插件,可以监控硬件使用情况、系统性能指标、网络流量等多种数据类型,包括 Apache、MySQL、电池、传感器等。并支持将收集的数据输出到 RRDtool、InfluxDB 等多种数据库和监控系统,适用于嵌入式、物联网和服务器集群监控等场景。

darktable
C第 100 期

darktable

开源的摄影后期处理工具。这是一款免费且专业的摄影作品后期处理软件。它像一个虚拟的光桌和暗房,能够帮助摄影师存储数字底片、放大查看和检索照片。该软件可以显示照片的焦距和曝光度等信息,并支持编辑历史、地图模式和打印照片等功能。

gnucash
C第 100 期

gnucash

完全开源的财务软件。这是一款适用于个人和小型企业的开源财务软件,它采用复式记账法,提供了简洁的操作界面,并支持生成报表、对账、多国货币,以及获取股票实时价格等功能,适用于 Windows、Linux 和 macOS 平台。

HandBrake
C第 99 期

HandBrake

免费的开源视频转码工具。这是一款功能强大、社区驱动的开源视频转码工具,它支持将各种不同格式的视频文件,转换为 MP4 和 MKV 等常见格式。

cmus
C第 98 期

cmus

小巧的命令行音乐播放器。这是一个专为类 Unix 系统设计的轻量级命令行音乐播放器,可以播放本地的音乐文件。它简单易用、占用资源少、启动速度快,支持多种音频格式。

Remotery
C第 98 期

Remotery

轻量级的远程实时 CPU/GPU 分析器。该项目是用于监控 CPU 和 GPU 上多线程活动的工具。它提供了一个 C 文件,可轻松集成到项目中,并配备了一个实时监控 Web 界面,可通过浏览器远程观察和分析程序的性能。适用于监控游戏的实时运行性能和分析移动端应用的性能等场景。

暂无截图
C第 97 期

freeswitch

运营商级的开源电话平台。这是一个支持 SIP、WebRTC 等多种通信协议的开源通信框架,它作为一个多用途的软交换机,可以用来创建各种语音和消息服务,比如企业电话系统、虚拟呼叫中心、视频会议服务等。

NetHack
C第 97 期

NetHack

一款历史悠久的 Roguelike 游戏。这是一款经典的 Roguelike 单机游戏,玩家将扮演一位地下城的探险者去寻找神秘的 Yendor 项链。游戏的界面由 ASCII 字符组成,具有自由度高、难度大、地图随机生成和永久死亡的特点,被玩家称为可以玩一辈子的游戏。

rt-thread
C第 97 期

rt-thread

小而美的物联网操作系统。这是一个由国人发起的开源物联网操作系统,具有优秀的可裁剪性和可扩展性。可以运行在 ARM Cortex-M0 芯片上的极小内核,到中等的 ARM Cortex-M3/4/7 系统,甚至是多核 64 位的 ARM Cortex-A、MIPS32/64 等不同架构的处理器。同时还提供了功能丰富的组件和软件包,可帮助开发者快速构建嵌入式系统产品。

来自 @阿基米东 的分享
暂无截图
C第 96 期

cosmopolitan

让 C 成为构建一次,可随处运行的语言。这个工具可以将 C 语言编写的程序,编译成可无缝运行在多种操作系统上的可执行文件。它采用自包含式二进制文件的设计,能够将程序所有依赖打包进可执行文件中,实现真正的跨平台运行,支持 Windows、macOS 和 Linux 等主流操作系统。```// 编译cosmocc -o hello hello.c// 运行./hello// 调试./hello --strace./hello --ftrace```

暂无截图
C第 96 期

linenoise

一个 C 语言写的命令行编辑库。该项目是 Redis 作者用 C 语言实现的用于提升命令行交互体验的单文件库,整体代码大约 800 多行,轻量且易上手,提供了单/多行编辑模式、左右移动光标、上下回滚输入历史记录、命令补全等功能。

来自 @9Ajiang 的分享
暂无截图
C第 96 期

xxHash

超快的非加密哈希算法。哈希算法是一种将任意长度的输入数据转换为固定长度输出哈希值的算法。xxHash 是一种专为快速计算大型数据集哈希值而设计的非加密哈希算法。它具有出色的速度、零依赖和优秀的分布特性,支持流式计算模式和多种编程语言实现,适用于对计算性能要求很高的数据完整性检查、数据流分析、键值对检索等场景。```c#include#include "xxhash.h"// Example for a function which hashes a null terminated string with XXH32().XXH32_hash_t hash_string(const char* string, XXH32_hash_t seed){// NULL pointers are only valid if the length is zero size_t length = (string == NULL) ? 0 : strlen(string);return XXH32(string, length, seed);}```

audacity
C第 95 期

audacity

一款免费、开源的音频编辑工具。该项目是最受欢迎的开源音频编辑软件之一,它拥有容易上手的界面,提供了音频的编辑和录制功能,支持多语言、录音、多音轨混音以及杂音消除等特性,适用于 Windows、macOS、GNU/Linux 操作系统。

来自 @ziming012 的分享
VeraCrypt
C第 95 期

VeraCrypt

一款开源的磁盘加密软件。该项目是基于知名、已停止维护的 TrueCrypt 开发,修复了已知的许多漏洞和安全问题。经过多年的迭代,VeraCrypt 的功能更加强大。它支持动态加密系统分区、硬件加速、隐藏加密容器、多重认证等功能,适用于 Windows、Linux 和 macOS 平台,提供了跨平台的硬盘加密开源解决方案。

暂无截图
C第 94 期

genann

C 语言写的极简神经网络库。这是一个轻量、无依赖、单文件的 C 语言神经网络库,内含丰富的示例和测试。代码简洁易读,适合作为初学者学习神经网络的入门项目。来自 [@ziming012](https://hellogithub.com/user/t7lxvuwPRDamU8p) 的分享```c#include "genann.h"/* Not shown, loading your training and test data. */double **training_data_input, **training_data_output, **test_data_input;/* New network with 2 inputs,* 1 hidden layer of 3 neurons each,* and 2 outputs. */genann *ann = genann_init(2, 1, 3, 2);/* Learn on the training set. */for (i = 0; i < 300; ++i) {for (j = 0; j < 100; ++j)genann_train(ann, training_data_input[j], training_data_output[j], 0.1);}/* Run the network and see what it predicts. */double const *prediction = genann_run(ann, test_data_input[0]);printf("Output for the first test data point is: %f, %f\n", prediction[0], prediction[1]);genann_free(ann);```

暂无截图
C第 93 期

rsync

Linux 远程同步文件的工具。该项目提供了一种快速、增量的文件传输方式,即仅传输有变动的部分,可用于远程同步和备份文件。

activate-linux
C第 92 期

activate-linux

将"Activate Windows"水印移植到 Linux 系统。这是一个可以在桌面系统的右下角,显示“激活 Linux” 字样的小工具,就是图一乐。

kew
C第 92 期

kew

一款 C 语言写的命令行音乐播放器。适用于 Linux 系统的命令行音乐播放器,支持搜索音乐、播放列表、专辑封面等功能。

barrier
C第 91 期

barrier

一套键盘鼠标控制多台电脑的工具。该项目通过模拟 KVM 切换器功能,实现多台电脑、不同操作系统,共享一套键盘鼠标,让工作流程更加高效。它安装简单使用方便,无需复杂的配置,支持自定义热键、多种操作系统、可视化操作界面等功能。

来自 @loongmonkey 的分享
clumsy
C第 91 期

clumsy

让 Windows 网络变差的工具。该项目是基于 WinDivert 实现的手动控制 Windows 网络情况的工具,它无需安装下载即用,可用于模拟网络延迟、节流、丢包等。

vlc
C第 91 期

vlc

自由、免费、跨平台的视频播放器。这是一款可播放几乎所有音视频格式的文件和各种流媒体协议的播放器,它完全免费、没有广告,无需额外安装编解码器,支持播放文件、光盘、摄像头和流媒体的内容,可运行在 Windows、Linux、macOS、Android 和 iOS 等平台。

来自 @Xuefeng Xu 的分享
BlackHole
C第 90 期

BlackHole

适用于 macOS 的虚拟音频驱动。在 macOS 上录制过视频的同学,应该都遇到过收录电脑声音的问题,采用公放的方式对环境要求极高。该项目是一款 macOS 上的虚拟音频驱动,它可以零延迟地将输出的音频传递给其他应用,从而不受周围环境的影响,轻松录制电脑的声音,支持 Intel 和 Apple 芯片。

暂无截图
C第 90 期

c4

用 4 个函数实现的 C 语言编译器。该项目仅用了 500+ 行代码、4 个函数,就实现了一个小型 C 语言编译器。但因为它的代码过于精简,所以源码阅读起来并不轻松。

暂无截图
C第 89 期

barco

用 C 语言从头写一个 Linux 容器。该项目仅依赖底层的 Linux 功能,用 C 语言实现的一个 Linux 容器,可用来了解更多关于 Linux 容器和内核的技术细节。```$ sudo ./bin/barco -u 0 -m / -c /bin/sh -a . [-v]22:08:41 INFO ./src/barco.c:96: initializing socket pair...22:08:41 INFO ./src/barco.c:103: setting socket flags...22:08:41 INFO ./src/barco.c:112: initializing container stack...22:08:41 INFO ./src/barco.c:120: initializing container...22:08:41 INFO ./src/barco.c:131: initializing cgroups...22:08:41 INFO ./src/cgroups.c:73: setting memory.max to 1G...22:08:41 INFO ./src/cgroups.c:73: setting cpu.weight to 256...22:08:41 INFO ./src/cgroups.c:73: setting pids.max to 64...22:08:41 INFO ./src/cgroups.c:73: setting cgroup.procs to 1458...22:08:41 INFO ./src/barco.c:139: configuring user namespace...22:08:41 INFO ./src/barco.c:147: waiting for container to exit...22:08:41 INFO ./src/container.c:43: ### BARCONTAINER STARTING - type 'exit' to quit #### ls bin home lib32 media root sys vmlinuz boot initrd.img lib64 mnt run tmp vmlinuz.old dev initrd.img.old libx32 opt sbin usr etc lib lost+found proc srv var# echo "i am a container"i am a container```

quake2-rerelease-dll
C第 89 期

quake2-rerelease-dll

《雷神之锤 2》官方重制版源码。《雷神之锤 2》是 id Software 在 1997 年发布的一款第一人称射击游戏,被许多玩家视为经典。该项目是官方 2023 年重新发布的 《雷神之锤 2》游戏源码。

trurl
C第 89 期

trurl

解析和操作 URL 的命令行工具。该项目是 cURL 作者的新作,可用来解析 URL、替换/提取/设置 URL 中的参数。

memreduct
C第 88 期

memreduct

小巧的内存管理应用。这是一款 Windows 内存管理工具,可以实时监控计算机内存和清理系统缓存。它体积小(6MB)、内存释放效果明显,兼容 Windows XP 及更高版本。

暂无截图
C第 88 期

naxsi

高效、易用的 Nginx 防火墙。这是一款专业的 Nginx Web 应用防火墙,可用来抵御 SQL 注入、XSS 攻击等。它采用白名单的防御方式,规则配置简单、功能强大,支持拦截和学习模式。学习模式可辅助发现未知攻击,生成、优化白名单规则。

no-more-secrets
C第 88 期

no-more-secrets

在终端中模拟电影里的数据解密效果。这是一个可以在终端中模拟 1992 年《通天神偷》电影中的数据解密效果的命令行工具。它可以将 ASCII 或 UTF-8 文本,用好莱坞式的解密效果展示。```$ ls -l | nms$ ls -l | nms -a // Set auto-decrypt flag$ ls -l | nms -s // Set flag to mask space characters$ ls -l | nms -f green // Set foreground color to green$ ls -l | nms -c // Clear screen$ nms -v // Display version```

暂无截图
C第 88 期

opencv-mobile

最小化的 OpenCV 库。这是一个比官方版本小 10 多倍的 OpenCV 库,它对模块进行了删减,仅保留了最基本的运算模块和常见的图像处理功能,适用于 Android、iOS、Windows、Linux、macOS 等平台。

暂无截图
C第 87 期

kilo

不到 1 千行代码实现的迷你文本编辑器。该项目是 Redis 作者用 C 语言写的迷你文本编辑器,支持语法高亮和搜索等功能。它不依赖第三方库、代码简洁优雅,去掉注释和空行后不到 1000 行,且只有一个文件,源码阅读起来十分清爽。

Logan
C第 87 期

Logan

面向终端的统一日志服务。由美团技术团队开源的一整套前端日志系统,包含客户端 SDK、日志处理和管理平台。它适用于移动端 APP、Web、小程序、IoT 等终端场景下的实时日志收集。

linux-wifi-hotspot
C第 86 期

linux-wifi-hotspot

功能丰富的 Linux WiFi 热点工具。这是一款拥有图形化操作界面的 Wi-Fi 创建器,它使用方便、功能丰富,支持命令行、创建热点、二维码分享网络、查看已连接设备等功能。

progress
C第 86 期

progress

查看 Linux 命令执行进度的工具。这是一个可以查看 cp、mv、dd、tar 等命令执行进度的 Linux 工具,它可以显示已处理数据的百分比、处理速度和预计完成时间,并提供了类似 top 的监控模式。

暂无截图
C第 85 期

dperf

一款能模拟巨大流量的压测工具。该项目是基于 DPDK 开发的高性能压测工具,能够每秒建立千万级的 HTTP 连接、亿级别的并发请求和数百 Gbps 的吞吐量。

ExplorerPatcher
C第 85 期

ExplorerPatcher

自由切换 Windows11 开始菜单样式的工具。这是一款能够让 Windows 11 的开始菜单栏(Explorer) 重回 Windows 10 样式的扩展工具,除此之外还支持禁用 Windows 11 的上下文菜单和命令栏等功能,让你在 Windows 上拥有更舒适的工作环境。

ImageMagick
C第 85 期

ImageMagick

一款强大的编辑和处理图像的桌面工具。该项目可用于创建、调整大小、裁剪、颜色校正和合成图像,支持超过 200 种的图像文件格式,其强大之处在于提供了处理复杂图像处理任务的 CLI 和 API。ImageMagick 被广泛应用于平面设计、科学研究、医学影像、天文等领域,适用于 Windows、Linux 和 macOS 系统。

来自 @孤胆枪手 的分享
暂无截图
C第 84 期

linked-list-good-taste

Linus Torvalds 解释编码品味的链表论证。在 2016 年的 TED 访谈中,Linus Torvalds 谈到了他认为好的编码品味,并举了一个例子:在单向链表中移除项目的两种实现。为了从链表中删除第一项,其中一个实现需要处理特殊情况,而另一个则不需要,Linus 更喜欢后者。

rpi4-osdev
C第 84 期

rpi4-osdev

为树莓派 4 编写操作系统的教程。这是一份 RealVNC 的 CTO 在树莓派 4 裸机上,编写操作系统的教程。内容分为 15 个章节,每章完成操作系统的一个部分,并提供了源码和讲解。

来自 @刘三非 的分享
暂无截图
C第 84 期

xdotool

模拟键盘和鼠标操作的命令行工具。该项目可以通过命令的方式,模拟键盘输入、鼠标点击,以及移动、聚焦和调整窗口大小等操作,搭配上 shell 就是 DIY 的按键精灵,支持 Ubuntu、macOS、FreeBSD 等系统。```// 打字xdotool type "HelloGitHub"// 组合键xdotool key ctrl+l// 移动鼠标xdotool mousemove x y// 关闭窗口xdotool selectwindow windowclose```

暂无截图
C第 83 期

sds

简单的 C 语言动态字符串库。Redis 作者写的 C 语言字符串库,它相较于 C 字符串,使用起来更加方便。具有速度快(常数复杂度获取字符串长度)、二进制安全(图片、音频等)、兼容部分 C 字符串函数等特点。```c sds mystring = sdsnew("Hello World!");printf("%s\n", mystring);sdsfree(mystring);output> Hello World!```

sigma-file-manager
C第 83 期

sigma-file-manager

一款先进的文件管理器。这是一款免费的文件管理器,由开源社区维护。支持智能搜索、自定义主页、文件共享、文件下载、智能拖放、文件保护等功能,适用于 Windows 和 Linux。

ttyd
C第 83 期

ttyd

简单的网络共享终端的命令行工具。基于 libuv 和 WebGL2 构建的 Web 共享终端工具,安装简单使用方便,支持 SSL、文件传输、Sixel 图像输出等功能。可运行在 Windows、macOS、Linux、OpenWrt 等操作系统上,适用于远程运维、在线管理设备等场景。

来自 @孤胆枪手 的分享
bare-metal-programming-guide
C第 82 期

bare-metal-programming-guide

裸机编程指南。这是一份教你如何在不依赖 IDE 的情况下,进行单片机开发的教程。内容先是介绍了寄存器、向量表、启动代码、链接脚本等知识点,最后实现了一个带设备仪表盘的 Web 服务器。

sumatrapdf
C第 82 期

sumatrapdf

免费小巧的开源 PDF 阅读器。这是一款体积小、占用内存少、启动速度快的 Windows PDF 阅读工具,拥有日常所需的所有功能和简约大方的界面,这一切不多不少刚刚好。

来自 @Tianchi Gao 的分享
ZSWatch
C第 82 期

ZSWatch

自制开源智能手表。该项目是基于开源 Zephyr 的智能手表,设备包含了一个分辨率为 240x240 的 IPS TFT 圆形屏幕和 3 个按钮(上一页/下一页/进入),支持计步、血氧仪、心率仪、蓝牙等功能。

ecapture
C第 81 期

ecapture

一款无需 CA 证书即可抓取 HTTPS 明文的工具。该项目基于 eBPF 技术实现了 TLS 加密的明文捕获,可用于 MySQL 数据库的查询审计、bash 命令捕获等场景,仅支持 Linux 和 Android 系统。

FSHistory
C第 81 期

FSHistory

最早的微软模拟飞行游戏。该项目提供了 1982 年发行的怀旧游戏《微软模拟飞行》,支持在线试玩、共有 4 个版本可供选择。

暂无截图
C第 81 期

iodine

一款可快速创建 DNS 隧道的工具。该项目包含 C 语言写的 DNS 隧道服务器和客户端,可快速搭建 DNS 隧道传输 IPv4 数据,常用于绕过防火墙等场景。因为一般情况下防火墙的 DNS 端口是打开的,所以将流量伪装成 DNS 数据包,就可以突破防火墙限制啦。

tinyriscv
C第 81 期

tinyriscv

从零开始写 RISC-V 处理器。该项目是采用 Verilog 语言实现一个单核 32 位的小型 RISC-V 处理器核,包含全部代码和详细的教程。RISC-V 是一种开源指令集架构,它允许任何人设计、制造和销售 RISC-V 芯片和软件。

cockpit
C第 80 期

cockpit

基于 Web 的服务器图形界面。这是一款开源的服务器管理工具,让你可以通过 Web 界面轻松管理 Linux 服务器,支持配置防火墙、Web 终端、容器管理、查看系统日志等功能。

暂无截图
C第 79 期

masscan

超快的 IP 端口扫描工具。异步的 TCP 端口扫描器,特点就是快。最快能在 5 分钟内扫描完整个互联网,但要小心别把本机打挂了。```shell# 扫描指定 IP 的全部端口masscan -p 0-65535 IP --rate=1000```

暂无截图
C第 79 期

sysbench

基于 LuaJIT 的可编写脚本的多线程基准测试工具。多用于数据库基准测试的命令行工具,经常出现在各种知名数据库的性能对比报告中。支持丰富的测试选项,比如表数量、数据条数、生成只读 SQL 等。

acl
C第 78 期

acl

一款跨平台的网络通信库和服务器框架。它既可以做网络通信的客户端,也可以编写服务器端,支持 HTTP、SMTP、ICMP、MQTT、Redis、Memcache 多种常见协议,以及 XML、JSON、BASE64 等编码格式。- lib_acl:最基础的库- lib_protocol:实现了 HTPP 协议及 ICMP/PING 协议- lib_fiber:该库为支持协程库,直接 hook 系统 read/write 等 API,与 epoll 配合支持高并发网络编程

CPU-X
C第 78 期

CPU-X

一款显示电脑 CPU、主板等信息的免费工具。能够显示设备的 CPU、主板、内存、显卡、操作系统等信息,支持 GUI 和命令行两种启动方式,适用于 Linux 和 FreeBSD 操作系统。

暂无截图
C第 78 期

gifsicle

压缩和编辑 GIF 图片的工具。它是一款体积小、功能强大的 GIF 图片处理工具,不仅可以压缩 GIF 图片,还支持合并多个 GIF、导出所有帧、查看图片信息、减少帧数、设置循环次数、延迟、编辑某一帧等功能。```shell# 安装brew install gifsicle# 查看gifsicle -I input.gif | head# 优化/压缩gifsicle input.gif -O3 -o output.gif```

EasyLogger
C第 77 期

EasyLogger

超轻量级 C/C++ 日志库。占用资源少适合物联网和单片机等项目,功能简单容易上手,能够通过插件形式扩展功能。特性:- 支持终端、文件、串口、Flash 等多种输出方式- 支持多种操作系统- 线程安全- 不同颜色显示

foolrenderer
C第 77 期

foolrenderer

用 C 语言从零实现的软件渲染器。不用图形 API 仅用几千行 C 代码,实现了一套类似 OpenGL 的基本图形功能,以及应用于游戏开发的实时渲染技术,如阴影、切线空间法线映射、基于物理的材质系统等。该项目包含丰富的注释和数学计算推导过程的说明,可用于帮助理解和学习 GPU 的基本工作原理、基础渲染知识和着色器原理。

暂无截图
C第 77 期

unicorn

轻量级的多平台、多架构 CPU 仿真器框架。基于 QEMU 开发的 CPU 模拟器,多用于逆向、执行恶意代码等。特点:- 多架构:ARM、ARM64、RISC-V、TriCore 等- 多种编程语言:Python、Rust、Java、Go、JS 等- 支持各种级别的细粒度检测

gb-studio
C第 76 期

gb-studio

简单好玩的 Game Boy 游戏制作工具。这是一款可视化游戏构建工具。无需编程基础即可通过拖拽的方式,快速制作出复古风格的 Game Boy 游戏。不仅支持导出游戏 ROM,还可以直接构建成在线游戏。

jq
C第 76 期

jq

轻快的命令行 JSON 处理器。JSON 作为最常见的序列化格式,日常开发中经常会遇到。这个项目可以通过简单的命令对 JSON 数据进行格式化、过滤等操作,还支持直接解析接口的 JSON 数据,十分灵活和方便。

libvips
C第 76 期

libvips

极快的多线程图像处理库。具有占用内存小、处理速度快等特点的图像处理底层库。它能够处理多种图像和像素格式,为了使用方便不仅支持命令行调用,官方还提供了 Ruby、Python 等多种编程语言的 SDK。

fontforge
C第 75 期

fontforge

免费开源的字体编辑器。适用于 Windows、macOS、Linux 的编辑字体桌面工具,支持创建和编辑多种格式的字体,可用来构建自己的字体。

micropython
C第 75 期

micropython

可运行在单片机上的 Python。众所周知 Python 是一门语法非常简单的编程语言,如果能用 Python 操控硬件岂不美哉!该项目就是单片机上的“迷你” Python,通过它就可以用 Python3 进行单片机开发了,大大地降低了硬件开发的入门门槛。

TobudOS
C第 75 期

TobudOS

腾讯开源的物联网终端操作系统。精简的实时操作系统(RTOS)内核,可移植到多种主流单片机,内部集成了多种物联网协议栈,具有占用资源少、低功耗、模块化、易移植、安全等特点。

暂无截图
C第 74 期

entr

在文件有改动时自动触发任意命令的工具。采用 kqueue 或 inotify 事件通知接口监听文件改动事件,避免轮询造成的资源浪费,可用于实现自动编译、重启、测试、同步等功能```# 自动 make find src/ | entr sh -c 'make | head -n 20'# 自动重启服务ls *.js | entr -r node app.js```

FreeRDP
C第 74 期

FreeRDP

完全免费的远程桌面管理工具。此项目为远程桌面协议(RDP)的一个开源实现,通过它可以轻松实现 macOS 或 Linux 远程操作 Windows 桌面系统反之亦可,使用起来十分方便和流畅。[下载地址](https://github.com/FreeRDP/FreeRDP/wiki/PreBuilds)

暂无截图
C第 74 期

open-gpu-kernel-modules

英伟达开源的 Linux GPU 内核驱动。关于开源的原因网友们众说纷纭黑客勒索、被 Linus 骂的、拥抱开源,但无论如何这是件好事,至于这件事后续对 Linux 系统的影响就让我们拭目以待吧

ServerStatus
C第 74 期

ServerStatus

多服务器云监控。轻松监控多台服务器状态的工具,用于解决多个不同平台下的服务器状态监控问题

sioyek
C第 74 期

sioyek

免费开源的 PDF 阅读器。支持交互式快速搜索文档,而且就算文档中的引用没有链接也可以直接跳转,特别适合 PC 端阅读和研究论文、技术文档等

lvgl
C第 73 期

lvgl

美观易用的轻量级嵌入式系统图形库- 拥有丰富的图形组件:按键、图表、图片等- 支持多种输入设备:触摸屏、键盘、按键等- 最低资源占用:64 kB ROM、16 kB RAM- 不依赖特定的硬件平台,可在多种显示屏上运行- 支持多语种:中文、韩文、阿拉伯文等- 丰富详细的示例

暂无截图
C第 73 期

uthash

为 C 语言提供哈希表的库。由于 C 语言中没有类似字典的数据结构,该库提供了哈希表常见的查询、插入、删除、排序等函数。使用方法简单,仅需引入一个头文件```c#include "uthash.h"struct my_struct {int id; /* we'll use this field as the key */char name[10];UT_hash_handle hh; /* makes this structure hashable */};struct my_struct *users = NULL;void add_user(struct my_struct *s) {HASH_ADD_INT( users, id, s );}```

warpd
C第 73 期

warpd

用键盘代替鼠标的工具。拥有多种操作模式比如方向键移动鼠标和区域选择,但仅支持 Linux 和 macOS 系统

hashcat
C第 72 期

hashcat

一款强大的密码恢复工具。破解速度超快支持多种算法,适用于 Linux、macOS 和 Windows 操作系统```安装:brew install hashcat常用参数:-a 指定破解模式:“-a 0”字典攻击,“-a 1” 组合攻击;“-a 3”掩码攻击-m 指定要破解的 hash 类型:默认为 MD5--force 忽略破解过程中的警告常用破解模式:0:Straight(字典破解)1:Combination(组合破解)3:Brute-force(掩码暴力破解)6:Hybrid Wordlist + Mask(字典+掩码破解)7:Hybrid Mask + Wordlist(掩码+字典破解)常用掩码设置:l:纯小写字母 abcdefghijklmnopqrstuvwxyz u:纯大写字母 ABCDEFGHIJKLMNOPQRSTUVWXYZ d:纯数字 0123456789举例:破解 8 位数字密码hashcat -a 3 -m 0 --force 0D7002A70CCDE8BF4BA2A4A5572A85E9(密码md5字符串) ?l?l?l?l?l?l?l?l?l?l?l(11 位密码的掩码)```

reptyr
C第 72 期

reptyr

能够把旧终端运行中的程序,迁移到新终端窗口的实用工具

暂无截图
C第 71 期

chibicc

迷你 C 编译器。虽然它只是一个玩具级的编译器,但是实现了大多数 C11 特性,而且能够成功编译几十万行的 C 语言项目,其中包括 Git、SQLite 等知名项目。而且它项目结构清晰、每次提交都是精心设计、代码容易理解,对编译器感兴趣的同学可以从[第一个提交](https://github.com/rui314/chibicc/commit/0522e2d77e3ab82d3b80a5be8dbbdc8d4180561c)开始学习

h2o
C第 71 期

h2o

高性能 HTTP 服务器。相较于传统 Web 服务器,它充分利用了 HTTP/2 的资源加载优先级和服务器推送技术,所以在静态文件方面性能明显优于 Nginx 服务器

daytripper
C第 70 期

daytripper

上班摸鱼神器之激光绊脚器。它分为发射器和接收器两部分,设置好后会在有人路过绊脚器时,自动触发隐藏桌面、切换应用等操作

暂无截图
C第 70 期

tinyssh

极简 SSH 服务器。为了便于学习仅保留了基础功能,而且抛弃了较旧的加密算法。该项目的学习价值大于实用价值,适合对 SSH 和加密知识感兴趣的小伙伴

暂无截图
C第 69 期

minilisp

用 1000 行 C 语言写的 Lisp 解释器。实现了整数、符号、局部变量、条件语句、宏和垃圾回收等功能,为了让读者更好地理解项目,代码中包含了丰富的注释```lisp(println 3) ; prints "3"(+ 1 2 3) ; -> 6(define a (+ 1 2))(+ a a) ; -> 6```

mpv
C第 69 期

mpv

功能强大、免费开源、支持多平台的极简播放器。底层采用了 MPlayer、mplayer2 和 FFmpeg 等开源项目,支持多种音视频格式、高清视频、GPU 解码、自定义等功能,追求极简的命令行启动+快捷键操作方式,让它成为了技术爱好者的首选视频播放器

quadsort
C第 69 期

quadsort

一种比快速排序快,稳定的归并排序算法。项目包含原理讲解、C 语言实现、性能对比和排序过程

暂无截图
C第 68 期

the_silver_searcher

比 ack 更快的命令行搜索工具。速度快、功能强大、使用简单,支持 Linux、Windows、macOS 操作系统,还能够整合到 Vim 和 Emacs 等编辑器```ack test_blah ~/code(8G)/ 104.66s user 4.82s system 99% cpu 1:50.03 total ag test_blah ~/code(8G)/ 4.67s user 4.58s system 286% cpu 3.227 total```

暂无截图
C第 68 期

toybox

该项目将 200 多个常用的 Linux 命令行工具,做成一个可执行文件。从而可以让 Android 这种原本不支持 Linux 命令的系统,也得以用上 ls、find、ps 等命令。还可以用于快速构建最小的 Linux 环境

WindTerm
C第 68 期

WindTerm

支持 SSH/Telnet/Serial/Shell/Sftp 的终端工具。虽然该软件完全免费,但部分代码尚未完全开源,对安全敏感的同学可以再观望下

bytehound
C第 67 期

bytehound

更强大的 Linux 内存分析工具。它能够显示内存变化曲线、占用详情、完整的堆栈记录等信息,有助于解决内存泄漏等问题

nnn
C第 67 期

nnn

几乎不需要配置就能用的终端文件管理工具。它运行仅需极少的内存但功能却不少,支持文件实时预览、搜索、批量操作文件、排序等,不仅如此它还能作为插件整合进 Vim

HEX-LINK
C第 66 期

HEX-LINK

自制电脑游戏的体感设备。该项目包含制作时需要的硬件设计和全部源码```.├─firmware # 软件(根据自己使用的工具选择如下一种工程即可)│ ├─ArduinoIDE_Proj # Arduino IDE版工程│ │ ├─Additional_Libraries # 里面的文件夹需要复制到Arduino IDE安装目录下的libraries文件夹│ │ ├─Hex_Link_Leonardo # 需要下载至接收端的程序│ │ └─Hex_Link_Nano # 需要下载至发送端的程序│ ├─Bootloaders # 需要下载至芯片的arduino bootloader│ └─Vscode_PlatformIO_Proj # VScode PlatformIO版工程│ ├─Hex_Link_Leonardo # 需要下载至接收端的程序│ └─Hex_Link_Nano # 需要下载至发送端的程序├─hardware # 硬件(PCB工程)│ ├─BOM # PCB的物料清单,包含参考的购买链接(链接仅作参考,在其他任何店铺购买相同型号即可)│ ├─Hex_Link_Rec # 接收端PCB工程│ ├─Hex_Link_Trans # 发送端PCB工程│ └─Nano_Jtag_Pin # 转接板:用来烧录Nano bootloader的Jtag口转接板├─model # 接收端外壳3维模型│ ├─Solidworks_Project # 2018版本Solidworks工程│ └─STL_TAP # STL文件,可直接用于3D打印.TAP文件是顶层亚克力板的CNC加工文件├─references # 参考文档└─tools # 额外的脚本工具```

X-TRACK
C第 64 期

X-TRACK

开源的 GPS 自行车码表。功能齐全且拥有美观的界面,支持离线地图、显示轨迹等功能。[在线观看](https://www.bilibili.com/video/BV1GB4y1K7VV)

mgba
C第 63 期

mgba

用 C 语言实现的 GBA 模拟器。唤起你童年回忆的同时,还能边学边玩,然后再约上三两好友一起看看源码和实现,快乐就是这么简单

暂无截图
C第 62 期

discount

一个用 C 语言编写的 Markdown 实现,可以轻松将 MD 文档转换为 HTML 格式

acwj
C第 61 期

acwj

教你写 C 语言编译器的实战教程。教程注重实战循序渐进,一步步教你如何用 C 语言写一个可以自己编译自己(自举)、能够在真正的硬件上运行的 C 语言编译器

zstd
C第 61 期

zstd

快速、无损的数据压缩算法 Zstandard 的实现。Zstd 的压缩比接近 lzma、lzham 和 ppmx,并且比 lza 或 bzip2 性能更好。在相似的压缩比情况下,它解压缩的速度比其他的算法都要快。很多知名项目和游戏都有这个算法的身影,示例代码:```c static void compress_orDie(const char* fname, const char* oname){size_t fSize;void* const fBuff = mallocAndLoadFile_orDie(fname, &fSize);size_t const cBuffSize = ZSTD_compressBound(fSize);void* const cBuff = malloc_orDie(cBuffSize);/* Compress.* If you are doing many compressions, you may want to reuse the context.* See the multiple_simple_compression.c example.*/size_t const cSize = ZSTD_compress(cBuff, cBuffSize, fBuff, fSize, 1);CHECK_ZSTD(cSize);saveFile_orDie(oname, cBuff, cSize);/* success */printf("%25s : %6u -> %7u - %s \n", fname, (unsigned)fSize, (unsigned)cSize, oname);free(fBuff);free(cBuff);}```

rtty
C第 60 期

rtty

能够通过 Web 登录 Linux 终端的开源项目。采用 C 语言实现,算上依赖库体积不到 100KB,可用于嵌入式 Linux 设备。拥有 Web 管理界面,用此项目可以方便地远程维护 Linux 设备

si78c
C第 60 期

si78c

用 C 语言实现的《太空侵略者》命令行游戏

TIC-80
C第 59 期

TIC-80

复古游戏引擎模拟器。TIC-80 支持 Windows、Linux、Mac 等主流平台,通过它你可以运行多种复古小游戏,觉得没意思?它不仅可以玩游戏还可以制作游戏,支持多种编程语言,还有地图、声音编辑器等,就是一个回到过去的“神奇迷你电脑”

ngx_waf
C第 57 期

ngx_waf

一个 Nginx 防火墙模块。我差点就错过了的宝藏项目,它使用简单不需要复杂的配置,支持的功能直戳我的痛点。你看:- 支持 IPV4、IPV6 和 IP 段黑白名单- CC 防御即自动拉黑 IP 一段时间- 支持 GET、POST、URL、Cookie 等黑名单(正则)

暂无截图
C第 56 期

ucore

清华大学操作系统课程,配套实验项目。推荐给有计算机结构原理、C 和汇编、数据结构基础并对操作系统感兴趣的同学,项目中包含教学视频、练习题、实验指导书等

htop
C第 55 期

htop

交互式进程查看工具,可代替 top 命令。用了这库后,我基本不用 top 命令了

暂无截图
C第 54 期

libevent

C 语言实现的轻量级、高性能事件通知库。基于事件驱动,支持多种 I/O 多路复用技术:epoll、poll、select、kqueue 等。libevent 就是这些系统基础库的统一封装,提供更高级的 API 并解决跨平台的问题

baulk
C第 53 期

baulk

一个用 C 编写的极简 Windows 包管理器。易于使用、免安装、不修改系统环境变量,能够和 Windows Terminal 集成、添加到右键菜单。可以说是一个精简版的 Scoop

LCUI
C第 53 期

LCUI

一个使用 C 开发的图形界面开发库。可借助 XML 和 CSS 构建简单的跨平台桌面应用,提供与网页类似的开发体验。因此,你可以使用它轻松做出十分漂亮的界面。与 Electron 不同,它只是一个应用了部分 Web 技术的传统 GUI 开发库

暂无截图
C第 52 期

raspberry-pi-os

基于树莓派的操作系统开发教程(还未完结)。你的树莓派在吃灰吗?把它插上电用来学习开发操作系统吧

SimpleKernel
C第 52 期

SimpleKernel

一个用来练手的简单内核项目。提供了各个阶段完成度不同的内核,可以选择从自己喜欢的地方开始

暂无截图
C第 49 期

switch-lan-play

在局域网玩 Switch 游戏的工具。让您和您的朋友像在局域网中一样玩 switch 游戏。

DungeonRush
C第 48 期

DungeonRush

元气贪吃蛇游戏。作者受到元气骑士的启发,基于贪吃蛇进行一些玩法上的创新。该项目适用于 C 语言初学者、第一次尝试使用跨平台图形库的同学,参考本项目就可以写出一个可玩性高的游戏,收获满满成就感

暂无截图
C第 48 期

libhv

一个跨平台、简单易用的非阻塞 IO 事件循环库。用它可以快速的编写 HTTP 客户端/服务端,可提供高性能的 httpd 服务。项目模块划分清晰,代码可读性高,快去看下源代码吧。示例代码:```c++#include "HttpServer.h"int http_api_echo(HttpRequest* req, HttpResponse* res) {res->body = req->body;return 0;}int main() {HttpService service;service.base_url = "/v1/api";service.AddApi("/echo", HTTP_POST, http_api_echo);http_server_t server;server.port = 8080;server.service = &service;http_server_run(&server);return 0;}```

暂无截图
C第 48 期

myscan

开源的多线程 socket 扫描 IP 端口的程序。目前仅支持 Windows 系统,代码简单可作为初学者学习项目```命令:myscan -p Port1[,Port2,Port3...] [-t Thread](default 10) [-d] (DEBUG) StartIp EndIp例子:myscan -p 80 192.168.1.1 192.168.1.254 myscan -p 21,22,23,80,443,8080 -t 256 192.168.1.1 192.168.1.254```

暂无截图
C第 46 期

freebsd-src

FreeBSD 操作系统源码仓库。快拉住我,我有点飘了竟然敢点开操作系统看源码 😅

smartdns
C第 45 期

smartdns

一个运行在本地的 DNS 服务器。能够提高网络访问速度等诸多妙用,架构图如下:

xmake
C第 45 期

xmake

一个基于 Lua 的轻量级跨平台自动构建工具。支持在各种主流平台上构建项目,主要用于解决 C/C++ 项目的跨平台构建,同时支持与其他语言的混合编译。工程配置语法简单易读,对初学者友好、上手方便```bash add_requires("libuv master", "ffmpeg", "zlib 1.20.*", "tbox >1.6.1")target("test")set_kind("shared")add_files("src/*.c")add_packages("libuv", "ffmpeg", "tbox", "zlib")```

netdata
C第 44 期

netdata

一款免费开源的 Linux 系统性能实时监控工具。它易于安装、占用资源少、功能强大,支持监控多种服务

scrcpy
C第 44 期

scrcpy

一款可以用电脑显示并控制 Android 手机的开源工具。连接方便使用方便,手机无需 root、无需安装任何应用。支持 USB、Wi-Fi 两种方式连接,支持 Windows、macOS、Linux 三种操作系统。注意电脑端需要安装 adb 工具

tmux
C第 43 期

tmux

一个终端复用工具,可极大的提高工作效率。- 提供了强劲的、易于使用的命令行界面- 可横向和纵向分割窗口- 窗格可以自由移动和调整大小,或直接利用四个预设布局之一- 可在多个缓冲区进行复制和粘贴- 可通过交互式菜单来选择窗口、会话及客户端- 等等

linq4c
C第 42 期

linq4c

如果你想在 C 中使用隔壁 C# 的 linq 方法,那么不妨来使用这个项目!这是它的 C 语言版。实现了 linq 的大部分方法(60+)。现在它还在不断完善中,欢迎更多的小伙伴加入共同维护```c bool WhereCallback(void *item) {char *str= (char *)item;return str[0] == 'h';}void *SelectCallback(void *item) {return newStr("%s_1", (char *)item);}char *str1 = "huang", *str2 = "hai", *str3 = "feng";ArrayList array = arrlist_new();arrlist_append(array, str1);arrlist_append(array, str2);arrlist_append(array, str3);Linq *lq = From(array);ArrayList result =lq->Where(lq, WhereCallback)->Select(lq, SelectCallback)->ToArray(lq);for(int i = 0; i

暂无截图
C第 40 期

SuperWeChatPC

这是一个超级微信电脑客户端。没错,是超级!因为它不仅是一个微信电脑客户端,还支持以下功能:- 无限多开- 消息防撤销- 语音消息备份- 等等项目里还有相关技术内幕的文章链接,快前去学习吧

暂无截图
C第 40 期

TDengine

一个专门针对物联网等行业以及应用监控进行设计优化的大数据平台。它的数据库插入、查询操作比其它的数据库快了 10 倍!消耗的成本也非常低,和其他典型的此类解决方案相比。TDengine 只需要不到 1/5 的计算资源,它还提供了 Java、C/C++、Python、Go、RESTful API 等用于开发的接口。还在为数据的写入、读取、计算的性能发愁吗?有了它相信你的头发存活率会大大提高

暂无截图
C第 33 期

json-tutorial

由[Milo Yip](https://github.com/miloyip/json-tutorial#%E5%85%B3%E4%BA%8E%E4%BD%9C%E8%80%85)发起的用 C 从零开始编写 JSON 库教程。大纲:1. 启程:编译环境、JSON 简介、测试驱动、解析器主要函数及各数据结构。2. 解析数字:JSON number 的语法3. 解析字符串:使用 union 存储 variant、自动扩展的堆栈、JSON string 的语法、valgrind 4. Unicode:Unicode 和 UTF-8 的基本知识、JSON string 的 unicode 处理5. 解析数组:JSON array 的语法6. 解析对象:JSON object 的语法、重构 string 解析函数7. 生成器:JSON 生成过程、注意事项。练习完成 JSON 生成器8. 访问与其他功能:JSON array/object 的访问及修改

nvtop
C第 32 期

nvtop

NVIDIA GPU 类 (h)top 的任务监控工具,它可以监控多个 GPU 并以熟悉的方式(类 htop 方式)打印有关它们的信息

暂无截图
C第 31 期

C

各种基础算法、数据结构的 C 语言实现。这个[TheAlgorithms](https://github.com/TheAlgorithms) 开源组织的项目包含基础算法的各种编程语言的示例代码

obs-studio
C第 31 期

obs-studio

由 OBS 项目维护的免费开源流媒体和录制程序。该程序支持 Windows 7、macOS 10.10、Ubuntu 14.04 操作系统。可用于直播和屏幕录制,[下载地址](https://github.com/obsproject/obs-studio/releases)

暂无截图
C第 29 期

libaco

一个极速、轻量级、C语言非对称协程库。[中文文档](https://github.com/hnes/libaco/blob/master/README_zh.md),项目介绍:- 生产级别的 C 协程库- 核心实现不超过 700 行代码,实现了一个协程库应该有的全部功能- 在 AWS c5d.large 机器上的性能测试,一次协程间上下文切换仅耗时 10 ns (独立执行栈)- 一千万个协程并发执行仅消耗2.8GB的物理内存

暂无截图
C第 29 期

redis-3.0-annotated

[黄健宏](https://github.com/huangz1990) 在编写《Redis 设计与实现》期间,阅读 Redis 3.0 源码过程中写的注释。相信对于想要阅读 redis 源码的同学,会有很大的帮助

swipe-workspace
C第 25 期

swipe-workspace

基于 libinput 实现 Linux 系统下通过二指滑动控制面板,切换屏幕的程序。虽然功能简单,且不支持全平台。但是十分推荐这种自己动手实现一个实用的功能这种行为,这是非常有成就感的事情

暂无截图
C第 21 期

kcp

纯算法实现的快速可靠协议。能以比 TCP 浪费 10%-20% 的带宽为代价,换取平均延迟降低 30%-40%,且最大延迟降低 3 倍的传输效果

暂无截图
C第 16 期

Tinyhttpd

一个不到 500 行的超轻量型 HTTP Server,可以用来理解服务器程序的原理和本质。快看 C语言 的入门级项目!

暂无截图
C第 14 期

ip2region

IP 到地区的映射库,速度快(毫秒级)、准确性高(99.9%),妈妈再也不用担心我的 IP 地址定位,示例代码:```cd binding/c/gcc -g -O2 testSearcher.c ip2region.c./a.out ../../data/ip2region.db```

暂无截图
C第 13 期

awesome-c-cn

C 资源大全中文版,包括了:构建系统、编译器、数据库、加密、初中高的教程/指南、书籍、库等。

暂无截图
C第 12 期

tbox

一个用 C 语言实现的跨平台开发库,用于解决不同操作系统的兼容问题,并且充分利用了各个平台独有的一些特性进行优化。[中文说明](https://github.com/tboox/tbox/blob/master/README_zh.md)

暂无截图
C第 11 期

wrk

现代 HTTP 基准测试(实现对一类测试对象的某项性能指标进行定量的和可对比的测试)工具,使用示例:```sh# 输入命令wrk -t12 -c400 -d30s http://127.0.0.1:8080/index.html# 输出Running 30s test @ http://127.0.0.1:8080/index.html 12 threads and 400 connections Thread Stats Avg Stdev Max +/- Stdev Latency 635.91us 0.89ms 12.92ms 93.69%Req/Sec 56.20k 8.07k 62.00k 86.54%22464657 requests in 30.00s, 17.76GB read Requests/sec: 748868.53 Transfer/sec: 606.33MB```

暂无截图
C第 7 期

BaiduPCS

C 写的百度网盘命令行工具,[在线文档](https://github.com/GangZhuo/BaiduPCS/wiki/BaiduPCS-基本使用)