☰
《HelloGitHub》第 61 期开源项目精选:从编译器自举到实时人像消除的 35 个入门级项目
2026/10/1 12:17:53 网站建设 项目流程
  • 技术博客
  • 文档
  • 知识库

【免费下载链接】HelloGitHub

:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.

项目地址:https://gitcode.com/GitHub_Trending/he/HelloGitHub
点击查看免费下载

本期《HelloGitHub》月刊以“兴趣是最好的老师”为理念,精选了 35 个有趣、入门级的开源项目,覆盖 C、C#、Go、Java、JavaScript、PHP、Python、Rust、Swift、人工智能等多个语言与领域。阅读完本篇,你将系统了解这些项目的核心能力与典型用法,包括可直接运行的命令行示例(如 zstd 压缩、chanify 消息推送、apkleaks 敏感信息扫描、fselect 文件查询)与关键代码片段,并掌握 HelloGitHub 仓库中月刊内容的组织方式与再生成机制,便于按图索骥找到适合自己上手学习的开源项目。

一、本期概览与月刊形态

《HelloGitHub》第 61 期 是 HelloGitHub 开源项目精选月刊中的一期,全仓库每期以独立 Markdown 文件存放在 content 目录下(如HelloGitHub61.md),并在 README.md 中按月汇总索引,官方每月28 号更新发布。

从仓库结构看,script/make_content/make_content.py 通过python make_content.py 期数(或all重新生成所有期)的方式,将各期的通用模板与具体内容合并生成最终月刊文件,这解释了为什么每一期文档都保持高度一致的排版结构:目录提示、分类标题、项目清单、示例代码块与页脚导航。因此,阅读任意一期即可快速掌握整套月刊的阅读与检索方式,本仓库还提供了英文版 content/en/HelloGitHub61.md 便于跨语言阅读。

二、C 项目:编译器自举与高性能无损压缩

1. acwj —— 教你写 C 语言编译器的实战教程

acwj 是一份注重实战、循序渐进的教程型项目,一步步引导你用 C 语言编写一个可以自己编译自己(自举)、并且能够在真实硬件上运行的 C 语言编译器。对于想深入理解编译原理、词法分析、语法分析、代码生成等底层机制的开发者,这是一条以工程实践驱动理论学习的路径。

2. zstd —— Zstandard 无损压缩算法的实现

zstd 是 Facebook 开源的快速、无损数据压缩算法 Zstandard 的实现。文档指出其压缩比接近 lzma、lzham 和 ppmx,而性能优于 lza 或 bzip2;在相近压缩比下,它的解压缩速度比同类算法更快,因而被许多知名项目和游戏采用。原文档给出了一个完整的压缩示例函数,核心调用链如下:

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); }

该示例完整展示了 Zstd 的典型编程模型:先用ZSTD_compressBound根据原始大小计算压缩后缓冲区的上界,再调用ZSTD_compress一次性完成压缩,最后将结果落盘并打印压缩前后的大小对比。注释还提示:如果需要进行多次压缩,可以复用 context(参见multiple_simple_compression.c示例),避免重复分配压缩上下文的开销。

三、C# 项目:新一代文件管理器与 NoSQL 数据库

3. Files —— 采用 Fluent Design 的全新文件管理器

Files 是一款基于 Fluent Design 和 Windows 平台最新 API 实现的文件管理器,设计风格“简约但不简单”,适合希望体验 Windows 现代化界面交互的用户,也适合想学习 WinUI/Fluent Design 桌面应用开发模式的开发者作为参考项目。

4. ravendb —— 快速、可靠的开源 NoSQL 数据库

ravendb 是一款开源的 NoSQL 数据库,强调快速与可靠性。它面向需要文档型数据存储、全文检索、事务等能力的应用场景,是学习 NoSQL 数据库设计、索引机制与分布式部署的入门素材。

四、Go 项目:刷题模板、消息推送、游戏引擎与图像处理

5. algorithm-pattern —— LeetCode 刷题集合与解题套路

algorithm-pattern 是一套 LeetCode 刷题集合项目。它从 Go 语言入门讲起,总结了一套刷题模板和解题套路,示例代码均使用 Go 编写。对准备算法面试、或想用 Go 语言系统练习数据结构的读者非常友好。

6. chanify —— 基于 Go 的 iOS 消息推送服务

chanify 是一个用 Go 实现的消息推送服务,目标设备为 iOS。使用流程为:手机上安装配套的 iOS 应用,用 Docker 方式部署服务端,之后即可通过一条命令把消息推送到 APP。原文档给出了两条可直接使用的 curl 示例:

# 发送文本消息 $ curl --form-string "text=hello" "http://<address>:<port>/v1/sender/<token>" # 发送文本文件 $ cat message.txt | curl -H "Content-Type: text/plain" --data-binary @- "http://<address>:<port>/v1/sender/<token>"

第一条命令以--form-string直接携带文本内容发送消息;第二条命令通过管道把本地文件内容作为请求体发送。两处都需要替换为实际的<address>:<port>(服务地址与端口)与<token>(设备令牌),非常适合个人服务器、脚本通知等场景。

7. ebiten —— Go 语言的 2D 游戏引擎库

ebiten 是一个用 Go 语言编写的 2D 游戏引擎库,可轻松制作支持多平台的 2D 游戏。仓库内附带大量示例代码,从渲染精灵、处理输入到音频播放均有覆盖,是学习 Go 游戏开发与 Ebitengine 架构的良好起点。

8. imaging —— Go 语言的图像处理库

imaging 提供调整大小、旋转、剪切、亮度调整等常见图像处理能力,API 简洁。原文档中的两行示例即可展示其用法:

// 调整 dstImage128 := imaging.Resize(srcImage, 128, 128, imaging.Lanczos) // 锐化 dstImage := imaging.Sharpen(srcImage, 0.5)

imaging.Resize接收源图像、目标宽高与重采样滤波器(此处使用imaging.Lanczos以获得较高缩放质量);imaging.Sharpen通过强度参数控制锐化程度。这类库非常适合在服务端做图片缩放、水印与预处理流水线。

9. jql —— 用 Go 写的 JSON 数据查询工具

jql 是一个用 Go 实现的 JSON 命令行查询工具,安装方便、语法简单。原文档给出的示例展示了如何查询文件中所有国家的名称:

# 查询 test.json 文件中,所有国家的名称 cat test.json | jql '(elem "countries" (elem (keys) (elem "name")))' [ "Poland", "United States", "Germany" ]

其核心思路是以elem组合表达式逐层抽取 JSON 结构:先取countries字段,再对其每个元素取name键,最终输出数组。相比 jq 的过滤器语法,jql 采用类似 Lisp 的括号式组合,对熟悉函数式表达式的开发者更为直观。

五、Java 项目:实时推荐系统、覆盖率、代码搜索与数据清理

10. flink-recommandSystem-demo —— 基于 Flink 的商品实时推荐系统

这是一个基于 Flink 实现的商品实时推荐系统示例,用于学习和理解推荐系统的完整设计与流程。其整体架构为:Flink 处理日志并统计商品热度,处理结果写入Redis 缓存;用户画像标签与实时记录写入HBase;当用户请求推荐时,系统根据用户画像生成商品热度榜,并结合协同过滤与标签两个推荐模块,返回最终的推荐商品列表。对学习流式计算(Flink)、缓存(Redis)、列式存储(HBase)与推荐算法结合的读者是一份极佳的工程参考。

11. jacoco —— Java 代码测试覆盖率库

jacoco 是 Java 生态中广泛使用的测试覆盖率收集库,可统计行覆盖、分支覆盖等指标,并与构建工具、CI 流程集成,用于衡量单元测试对代码的覆盖程度。

12. kooder —— 开源的代码搜索服务

kooder 是一个开源代码搜索服务,为 GitLab、Gitea 等代码托管系统提供源码、仓库、Issue的搜索能力,适合企业内部搭建统一的代码检索入口。

13. OpenRefine —— 可视化数据清理桌面工具

OpenRefine 是一款用于数据清理的桌面工具,通过可视化方式分析、整理数据,支持 Windows、Linux、Mac。它提供查询、过滤、去重、分析等功能,可以把杂乱数据整理成“整洁”的电子表格,并将结果导出为多种格式。对于不会编程和 SQL 的用户,也能借助它分析海量数据。

六、JavaScript 项目:绘图、短链接、导航站与 3D 引擎

14. drawio —— 简洁强大的开源绘图工具

drawio 是一款免费开源的绘图工具,可自行部署,也可在线使用,功能上对标 Microsoft Visio。支持流程图、序列图、网络拓扑图、甘特图、思维导图、模型图等,并可导出 PNG、SVG、PDF、HTML 和VSDX(Microsoft Visio 图形格式)等多种格式。

15. kutt —— 免费开源的短链接服务

kutt 是基于 Node.js + Express + React 实现的短链接服务,提供链接管理、自定义短链接、链接密码设置、访问统计等功能,适合自建短链平台或学习全栈 Web 开发。

16. nav —— 支持 SEO 的静态导航网站

nav 是一个不依赖后端的纯前端静态导航网站项目,开箱即用、简单清爽,同时支持 SEO,适合个人或团队快速搭建网址导航首页。

17. npkill —— 快速查找并删除 node_modules 的工具

npkill 用于快速查找和轻松删除磁盘上的node_modules文件夹,解决 node_modules 占用大量磁盘空间、以及难以手动定位无用依赖目录的痛点。它以交互式列表展示候选目录,可一键清理。

18. taro —— Web 轻量级 3D 游戏引擎

taro 是一款 Web 轻量级 3D 游戏引擎,底层基于 three.js 与 cannon-es,支持 3D 刚体物理引擎,适合在浏览器中开发 3D 交互与游戏场景。

七、PHP 项目:免费开源的问答平台

19. question2answer —— 采用 PHP + MySQL 实现的问答平台

question2answer(Q2A)是免费开源的问答平台,采用 PHP + MySQL 构建。原文档明确列举了其核心能力:

  • 支持回答投票、评论、最佳回答、关注和关闭问题
  • 完备的用户和权限管理
  • 多语言支持
  • 搜索时的相似问题匹配

它覆盖了主流问答平台的主要功能,适合作为搭建社区问答系统的起点,也是研究 PHP 服务端应用架构的参考项目。

八、Python 项目:APK 安全扫描、GraphQL 集成与调试可视化

20. apkleaks —— 扫描 APK 敏感信息的命令行工具

apkleaks 是用于扫描 APK 文件是否包含敏感信息的命令行工具,通过自定义规则(正则)匹配密钥、Token 等敏感内容。原文档给出的规则文件与调用方式如下:

// custom-rules.json { "Amazon AWS Access Key ID": "AKIA[0-9A-Z]{16}", ... } $ apkleaks -f /path/to/file.apk -p rules.json -o ~/Documents/apkleaks-results.txt

其中-f指定 APK 文件路径,-p指定自定义规则文件,-o指定结果输出文件。规则文件以“名称 → 正则”的键值对形式定义敏感信息的匹配模式,例如示例中用AKIA[0-9A-Z]{16}匹配 AWS Access Key ID,可用于移动应用安全自查。

21. graphene-django —— 将 GraphQL 整合进 Django 的库

graphene-django 是 GraphQL 的 Python 实现(graphene)与 Django 的集成库,让你可以轻松地在 Django 项目中定义 Schema、Query 与 Mutation,把 GraphQL API 无缝接入既有 ORM 体系。

22. tomato-clock —— 命令行番茄工作法定时器

tomato-clock 是一个用 Python 编写的命令行番茄工作法定时器,代码仅 100 多行,不依赖任何第三方库。原文档展示了其运行时输出:

🍅 tomato 25 minutes. Ctrl+C to exit 🍅🍅---------------------------------------------- [8%] 23:4 ⏰

它以纯文本进度条展示番茄钟的进行状态(如[8%])与剩余时间,非常适合作为阅读小型 Python 源码、学习终端交互与时间管理工具实现的入门项目。

23. vardbg —— 把 Python 执行过程导出为视频/动图的调试工具

vardbg 能够把 Python 程序的执行过程导出成视频或动图,可用于动画演示算法、制作代码讲解视频等场景。对教学、技术分享与可视化调试非常有价值。

九、Rust 项目:用类 SQL 语法查找文件

24. fselect —— 类 SQL 的命令行文件查找工具

fselect 是一个用 Rust 编写的命令行工具,允许用类似 SQL 的语法查找文件,兼顾查询表达能力与易用性。原文档给出了三条可直接运行的示例:

fselect size, path from /home/user where name = '*.cfg' or name = '*.tmp' fselect size, abspath from ./tmp where size gt 2g fselect hsize, abspath from ./tmp where size lt 8k

第一条按名称模式(*.cfg或*.tmp)在/home/user下查找并输出文件大小与路径;第二条筛选大于 2G 的文件并输出绝对路径;第三条筛选小于 8k 的文件并以人类可读大小(hsize)展示。gt/lt等比较运算符让条件过滤贴近 SQL 直觉,适合在终端中做精细化的文件检索。

十、Swift 项目:iOS 资源集合、抓包工具与 SwiftUI 入门

25. awesome-ios —— 超棒的 iOS 开源项目集合

awesome-ios 是非常全面的 iOS 开源项目集合,涵盖 Objective-C 与 Swift 项目,按网络、UI、JSON、数据库、音视频等分类组织,是 iOS 初学者寻找开源项目与轮子资源的好去处。

26. Knot —— iOS 抓包工具

Knot 是一款 iOS 抓包工具,实现了 HTTP(S) 解析、流量解析、多格式导出、证书管理以及过程分析等功能,可用于移动端接口调试与流量分析。

27. SwiftUITodo —— 用 SwiftUI 实现的 Todo 示例项目

SwiftUITodo 是一个用 SwiftUI 实现的 Todo 应用示例项目,帮助新手掌握 SwiftUI 的状态管理、列表渲染与交互设计等基础能力。

十一、人工智能:学习路线图与浏览器实时人像消除

28. AI-Expert-Roadmap —— 人工智能学习路线图

AI-Expert-Roadmap 以路线图的形式梳理人工智能领域的学习路径,涵盖数学基础、机器学习、深度学习、计算机视觉、自然语言处理等方向的知识体系与进阶顺序,适合规划 AI 学习路线。

29. Real-Time-Person-Removal —— 在浏览器中实时移除人像

Real-Time-Person-Removal 采用 JavaScript + TensorFlow.js 实现 Web 浏览器中的实时人像移除——“凭空消失”效果。它演示了如何在浏览器端完成人体分割(Person Segmentation)等深度学习推理,是学习 TensorFlow.js 与实时视觉应用的优秀示例。

十二、其它领域:音乐插件、BT 下载与游戏源码

30. cloudmusic-vscode —— 网易云音乐 VS Code 插件

cloudmusic-vscode 是基于网易云网页 API 实现的 VS Code 插件,支持:

  • 歌曲播放、收藏、喜欢
  • 心动模式、私人 FM
  • 评论(单曲、歌单等)
  • 歌词显示
  • 搜索(热搜/单曲/专辑/歌手等)

让开发者在不离开编辑器的前提下听歌、看歌词,也是学习 VS Code 插件 API 与第三方音乐接口对接的实例。

31. LIII —— 免费开源的 BT 下载工具

LIII 是一款免费开源的 BT 下载工具,主打无广告、无 VIP 提速限制,提供简单好用的下载体验,适合厌倦商业下载器打扰的用户。

32. shapez.io —— Steam 游戏《异形工厂》源码

shapez.io 是 Steam 上模拟建造游戏《异形工厂》的开源代码。玩法是在无边地图上开采资源、放置设施、组合图形、相互搭配,扩建自己的异形工厂。游戏轻松但富有挑战性,源码对研究游戏开发、图形渲染与模拟经营逻辑很有参考价值。

十三、开源书籍:贝叶斯方法、TensorFlow 2 与 64 位操作系统

本期还推荐了 3 本开源书籍,均可免费阅读源码与在线版本:

  • Probabilistic-Programming-and-Bayesian-Methods-for-Hackers:《黑客的贝叶斯方法:以 Python 为例》,以实战代码讲解概率编程与贝叶斯方法。
  • tensorflow-handbook:《简明的 TensorFlow 2》,面向 TensorFlow 2 的简明教程手册,可在线阅读。
  • The-design-and-implementation-of-a-64-bit-os:《一个 64 位操作系统的设计与实现》,通过工程实践讲解 64 位操作系统的设计与实现过程。

十四、如何在仓库中继续深入

本期内容全部收录于 content/HelloGitHub61.md,你可以在仓库中按以下方式继续探索:

  • 跨期阅读:README.md 的“内容”表格按期刊索引了全部已发布期号(如第 124 期、第 123 期等),点击对应路径即可切换阅读其他各期月刊。
  • 英文版对照:content/en/HelloGitHub61.md 提供了本期的英文版本,适合对照学习或用于国际交流。
  • 理解月刊生成机制:script/make_content/make_content.py 是月刊生成脚本,支持python make_content.py 期数或python make_content.py all两种用法(需在仓库根目录下运行);其配套说明见 script/make_content/README.md。脚本通过{{ hello_github_content }}与{{ hello_github_num }}两个占位符把模板和每期内容拼接成最终文件,这也是各期格式高度统一的原因。
  • 了解项目素材收集方式:script/github_bot/github_bot.py 及其说明 script/github_bot/README.md 展示了作者如何通过 GitHub API 收集关注项目的 star 动态、过滤并汇总热点项目,可作为选品与素材采集流程的参考。

综上,第 61 期覆盖了从底层(编译器、压缩算法、操作系统书籍)到应用层(推送、绘图、下载、抓包、游戏引擎)的完整技术光谱,每一类都提供了可复现的示例代码或命令。无论你是初学者寻找第一个上手项目,还是进阶者想研究某个领域的具体实现,都可以从这份清单中按图索骥、循序渐进地展开学习。

  • 技术博客
  • 文档
  • 知识库

【免费下载链接】HelloGitHub

:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.

项目地址:https://gitcode.com/GitHub_Trending/he/HelloGitHub
点击查看免费下载

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询