codecrafters-io/build-your-own-x · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
自行构建 >
该仓库汇集了众多编写精良的逐步指南,旨在帮助大家从零开始重新打造我们喜爱的技术。
“我无法创造的东西,就是我不理解的。”——理查德·费曼
这是一种极佳的学习方式。
- 3D渲染器
- AI模型
- 增强现实
- BitTorrent客户端
- 区块链/加密货币
- 机器人
- 命令行工具
- 数据库
- Docker
- 模拟器/虚拟机
- 前端框架/库
- 游戏
- Git
- 内存分配器
- 网络栈
- 神经网络
- 操作系统
- 物理引擎
- 处理器
- 编程语言
- 正则表达式引擎
- 搜索引擎
- Shell
- 模板引擎
- 文本编辑器
- 视觉识别系统
- 体素引擎
- 网络浏览器
- Web服务器
- 未分类
教程
自行构建 Distributed Systems
自行构建 3D Renderer
- C++: 光线追踪入门:一种生成 3D 图像的简单方法
- C++: OpenGL 的工作原理:500 行代码实现的软件渲染
- C++: 《Wolfenstein 3D》中的光线投射引擎
- C++: 基于物理的渲染:从理论到实现
- C++: 一个周末学会光线追踪
- C++: 光栅化:实用实现方法
- C# / TypeScript / JavaScript: 学习如何使用 C#、TypeScript 或 JavaScript 从零开始编写 3D 游戏引擎
- Java / JavaScript: 构建你自己的 3D 渲染器
- Java: 如何使用纯 Java 创建简单的 3D 渲染引擎
- JavaScript / 伪代码: 从零开始学习计算机图形学
- Python: 3D 模型工具
自行构建 AI Model
自行构建 Augmented Reality
- C#: 新手指南:使用 Vuforia 与 Unity 3D 开发增强现实应用 [视频]
- C#: 如何使用 Unity 开发 ARCore 应用 [视频]
- C#: 使用 Unity 制作 AR 入口教程 [视频]
- C#: 如何在 Unity ARCore 中创建增强现实中的龙 [视频]
- C#: 增强现实教程:使用 ARKit 创建上下颠倒的入口 [视频]
- Python: 使用 Python 与 OpenCV 实现增强现实
自行构建 BitTorrent Client
- C#:用 C# 从零构建 BitTorrent 客户端
- Go:用 Go 从头开始构建 BitTorrent 客户端
- Nim:编写 Bencode 解析器
- Node.js:编写你自己的 BitTorrent 客户端
- Python:Python 3.5 版本的 BitTorrent 客户端
自行构建 Blockchain / Cryptocurrency
- ATS: 功能型区块链
- Crystal: 使用 Crystal 编写属于自己的区块链与 PoW 算法
- Go: 用 Go 语言构建区块链
- Go: 用不到 200 行 Go 代码编写自己的区块链
- Java: 使用 Java 创建你的第一个区块链
- JavaScript: 用不到 1500 行代码实现加密货币
- JavaScript: 用 JavaScript 构建自己的区块链
- JavaScript: 学习并构建 JavaScript 区块链
- JavaScript: 使用 JavaScript 创建区块链
- JavaScript: 如何推出属于自己的可投入生产的加密货币
- JavaScript: 在 Node.js 中编写区块链
- Kotlin: 让我们用 Kotlin 实现一种加密货币
- Python: 通过构建区块链来学习区块链技术
- Python: 构建属于自己的区块链:Python 教程
- Python: 用 Python 实用入门区块链
- Python: 让我们构建最小的区块链
- Ruby: 循序渐进学习区块链编程(手册版)
- Scala: 如何构建基于 Actor 模型的简单区块链
- TypeScript: Naivecoin:构建加密货币的教程
- TypeScript: NaivecoinStake:基于权益证明共识构建加密货币的教程
- Rust: 使用 Rust 与 Substrate 构建区块链
构建属于自己的 Bot
- Haskell:自行开发 IRC 机器人
- Node.js:使用 API.ai 在 Node.js 中创建一个简单的 Facebook Messenger AI 机器人
- Node.js:如何打造响应式的 Telegram 机器人
- Node.js:创建一个 Discord 机器人
- Node.js:gifbot – 构建 GitHub 应用
- Node.js:利用 Web Speech API 与 Node.js 构建简单的 AI 聊天机器人
- Python:如何使用 Python 构建你的第一个 Slack 机器人
- Python:如何在 20 分钟内使用 Slack Events API 与 Django 用 Python 构建 Slack 机器人
- Python:构建一个 Reddit 机器人
- Python:如何制作一个 Reddit 机器人 [视频]
- Python:如何使用 Python 创建 Telegram 机器人
- Python:使用 Tweepy 用 Python 创建 Twitter 机器人
- Python:使用 Python 与 PRAW 创建 Reddit 机器人 [视频]
- R:使用 R 构建加密货币交易机器人
- Rust:用 Rust、C 或其他任何语言为《星际争霸》制作机器人
自行打造你的 Command-Line Tool
自行构建 Database
- C: 让我们构建一个简单的数据库
- C++: 从零开始构建你自己的 Redis
- C#: 构建你自己的数据库
- Clojure: 受考古学启发的数据库
- Crystal: 为何你应该自行构建 NoSQL 数据库
- Go: 从零开始构建你自己的数据库:3000 行代码实现从 B+Tree 到 SQL
- Go: 通过 45 个步骤编写数据库:一系列基于测试的小型编程练习
- Go: 从零开始构建你自己的 Redis
- JavaScript: Dagoba:一种内存中的图数据库
- Python: DBDB:狗床数据库
- Python: 用 Python 编写你自己的迷你版 Redis
- Ruby: 用 Ruby 构建你自己的快速、持久化的 KV 存储
- Rust: 构建你自己的 Redis 客户端与服务器
自行构建 Docker
- C: 用 500 行代码实现 Linux 容器
- Go: 用不到 100 行 Go 代码构建你自己的容器
- Go: 用 Go 从零开始构建容器 [视频]
- Python: Linux 容器工作坊:从零重建 Docker
- Python: 完全用 Python 编写的 Docker 概念验证实现
- Shell: 用约 100 行 bash 实现 Docker
自行构建 Emulator / Virtual Machine
- C: 自制的字节码解释器
- C: 用 C 语言实现虚拟机
- C: 编写你自己的虚拟机
- C: 编写 Game Boy 模拟器 Cinoop
- C++: 如何编写模拟器(CHIP-8 解释器)
- C++: 模拟器教程(CHIP-8 解释器)
- C++: 模拟器教程(GameBoy 模拟器)
- C++: 模拟器教程(Master System 模拟器)
- C++: 从零开始实现 NES 模拟器 [视频]
- Common Lisp: 用 Common Lisp 实现 CHIP-8
- JavaScript: 用 JavaScript 实现 GameBoy 模拟
- Python: 模拟器基础:编写你自己的 Chip 8 模拟器/解释器
- Rust: 0dmg:通过构建部分 Game Boy 模拟器学习 Rust
自行构建 Front-end Framework / Library
- JavaScript: JSX 到底是什么?(让我们一起构建一个 JSX 渲染器)
- JavaScript: 自制 React 的 DIY 指南
- JavaScript: 从零开始构建 React [视频]
- JavaScript: Gooact:仅用 160 行 JavaScript 实现 React
- JavaScript: 通过构建轻量级的 React DOM 了解 React Reconciler 包的工作原理
- JavaScript: 自己动手构建 Redux
- JavaScript: 让我们来编写 Redux 吧!
- JavaScript: Redux:从零实现 Store [视频]
- JavaScript: 仅用 200 行 JavaScript 构建简化版的 AngularJS
- JavaScript: 打造属于你自己的 AngularJS
- JavaScript: 如何编写自己的虚拟 DOM
- JavaScript: 从零开始构建前端框架,涵盖组件(模板、状态、VDOM)
- JavaScript: 构建你自己的 React
- JavaScript: 构建自定义的 React 渲染器 [视频]
自行构建 Game
-
C: 用 C 语言实现的国际象棋引擎 [视频]
-
C: 学习用 C 语言进行视频游戏编程 [视频]
-
C: 用 C 语言编写数独求解器 [视频]
-
C++: 重构 Cave Story [视频]
-
Go: 使用 Go 语言制作游戏 [视频]
-
JavaScript: 像程序员一样思考:仅使用 JavaScript、HTML 和 CSS 如何制作 Snake 游戏
自行构建 Git
- Haskell:从零开始在 Haskell 中重新实现“git clone”
- JavaScript:Gitlet
- JavaScript:构建 GIT —— 学习 GIT
- Python:一个足以创建仓库、执行提交并将代码推送到 GitHub 的 Git 客户端
- Python:自己编写一个 Git!
- Python:ugit:通过自行构建 Git 来了解其内部原理
- Ruby:用 Ruby 重新实现 Git
自行构建 Memory Allocator
自行构建 Network Stack
自行构建 Neural Network
- C#: 神经网络 OCR
- F#: 在 F# 中构建神经网络:第 1 部分
- F#: 在 F# 中构建神经网络:第 2 部分
- Go: 使用 Golang 构建多层感知器
- Go: 如何使用 Go 构建简单的人工神经网络
- Go: 用 Go 从零开始构建神经网络
- JavaScript / Java: 神经网络——代码的本质 [视频]
- JavaScript: 面向 JavaScript 开发者的从零开始学神经网络(第 1 部分——感知器)
- Python: 用 11 行 Python 代码实现一个神经网络
- Python: 从零开始构建深度学习(分 34 个阶段重新实现 PyTorch 内部机制)
- Python: 从零开始实现一个神经网络
- Python: 光学字符识别(OCR)
- Python: 使用卷积网络进行交通标志分类
- Python: 使用 Keras 中的 LSTM 神经网络生成音乐
- Python: 卷积神经网络简介
- Python: 神经网络:从零到精通
- Python: SlowTorch:完全使用纯 Python 从底层实现 PyTorch
创建属于你自己的 Operating System
- 汇编语言:编写一个微型 x86 启动加载程序
- 汇编语言:Baking Pi – 操作系统开发
- C语言:从零开始为简单计算机构建软硬件堆栈 [视频]
- C语言:操作系统:从 0 到 1
- C语言:关于操作系统开发的简明手册
- C语言:自行打造一个简易的 UNIX 克隆操作系统
- C语言:内核入门 – 让我们一起来编写内核吧
- C语言:内核进阶 201 – 让我们编写一个支持键盘和屏幕的内核吧
- C语言:从零开始为 ARM 构建极简的多任务内核
- C语言:如何从零开始创建一个操作系统
- C语言:Malloc 教程
- C语言:破解虚拟内存
- C语言:利用 Linux 内核和 Raspberry Pi 学习操作系统开发
- C语言:操作系统开发入门指南
- C++语言:编写你自己的操作系统 [视频]
- C++语言:编写启动加载程序
- Rust语言:用 Rust 编写操作系统
- Rust语言:RISC-V Rust 操作系统开发教程
- (任意):从零开始学习 Linux
自行打造属于你的 Physics Engine
- C: 视频游戏物理教程
- C++: Allen Chou 的游戏物理系列
- C++: 如何创建自定义物理引擎
- C++: 3D 物理引擎教程 [视频]
- JavaScript: 物理引擎的工作原理
- JavaScript: 利用空间划分实现粗略阶段碰撞检测
- JavaScript: 为 JavaScript 游戏构建简单的 2D 物理引擎
自行构建 Processor
自行构建 Programming Language
-
C++ 语言: 如何创建一个编译器 [视频]
-
Go 语言: Go 语言中的词法扫描 [视频]
自行构建 Regex Engine
- C: 正则表达式匹配器
- C: 正则表达式匹配可以既简单又快速
- Go: 如何从零开始构建正则表达式引擎
- JavaScript: 用不到 40 行代码构建正则表达式引擎
- JavaScript: 如何使用派生函数在函数式 JavaScript 中实现正则表达式
- JavaScript: 实现正则表达式引擎
- Perl: 正则表达式的工作原理
- Python: 自行构建正则表达式引擎:回溯、NFA、DFA
- Scala: 无需魔法:正则表达式
自行构建 Search Engine
- CSS: CSS 中的搜索引擎
- Python: 使用 Redis 和 redis-py 构建搜索引擎
- Python: 在 Python 中构建向量空间索引引擎
- Python: 构建基于 Python 的搜索引擎 [视频]
- Python: 让文本搜索能够从反馈中学习
- Python: 使用 TF-IDF 在文本中找出重要词汇
自行构建 Shell
- C: 教程——用 C 语言编写 Shell
- C: 让我们来构建一个 Shell 吧!
- C: 编写 UNIX Shell
- C: 自行构建你的 Shell
- C: 用 C 语言编写 Shell
- Go: 用 Go 语言编写简单 Shell
- Rust: 使用 Rust 自行构建 Shell
自行构建 Template Engine
- JavaScript: 仅需20行代码即可实现的JavaScript模板引擎
- JavaScript: 理解JavaScript微型模板技术
- Python: 方法:用Python构建一个简易模板引擎
- Python: 一个模板引擎
- Ruby: 如何用不到30行代码编写模板引擎
自行构建 Text Editor
- C: 构建你自己的文本编辑器
- C++: 设计一个简单的文本编辑器
- Python: Python教程:打造属于自己的文本编辑器 [视频]
- Python: 创建一个简单的Python文本编辑器!
- Ruby: 使用Rails构建一个协作式文本编辑器
- Rust: Hecto:用Rust构建你自己的文本编辑器
自行构建 Visual Recognition System
自行构建 Voxel Engine
自行构建 Web Browser
自行构建 Web Server
- C#: 从零编写 Web 服务器
- Node.js: 使用 JavaScript 从零构建自己的 Web 服务器
- Node.js: 利用 NodeJS Streams 从零编写 Web 服务器
- Node.js: lets-build-express
- PHP: 使用纯 PHP 编写 Web 服务器
- Python: 一个简单的 Web 服务器
- Python: 让我们来构建一个 Web 服务器吧
- Python: 从零开始构建 Web 应用程序
- Python: 使用 Python 从零构建基础 HTTP 服务器
- Python: 使用 Python 与 Flask 实现 RESTful Web API
- Ruby: 使用 Ruby 从零构建一个简单的 Websockets 服务器
未分类
-
(any): build-your-own-x-vibe-coding:为 vibe coding 量身定制的 BYOX 风格教程
-
JavaScript: 自行实现——在 JavaScript 中实现 call()、apply() 和 bind() 方法
-
Python: 构建深度学习库 [视频]
贡献方式
- 欢迎大家提交代码,只需发送一个 PR,或创建一个 issue
- 请通过留下评论和“反应”来帮助我们审核待处理的提交
起源与许可证
该仓库是由众多贡献者共同打造的。它最初由Daniel Stefanovic创建,目前由CodeCrafters, Inc.负责维护。在法律允许的范围内,CodeCrafters, Inc.已放弃对该作品的所有版权及相关或邻接权利。
