From 92e3f3e0597785bb2e6acf0e9df5b61cbb065a5f Mon Sep 17 00:00:00 2001
From: anyin233 <35858233+anyin233@users.noreply.github.com>
Date: Thu, 12 Mar 2026 20:39:45 +0000
Subject: [PATCH] refactor: restructure project and update documentation for
second edition (#500)
* feat: remove bilingual button on the front page
* misc: clean repo
* test: fix test suite for v1/v2 restructure and removed language switch
* refactor: restructure chapters for the second edition
* refactor: restructure project
* refactor: remove unused scripts
* refactor: move conftest.py to tests directory
* refactor: update README with new chapter structure and logo path
* fix: update image paths in README and README_EN for consistency
* refactor: update directory structure and script references in documentation
---
.gitignore | 16 ----
README.md | 46 ++++-------
README_EN.md | 52 +++++-------
book.toml | 19 -----
build_and_transform.sh | 2 -
build_html.sh | 23 ------
build_html_zh.sh | 23 ------
build_mdbook.sh | 23 ------
build_mdbook_zh.sh | 25 ------
conftest.py | 4 -
info/editors.md | 49 ------------
info/logo-with-text.png | Bin 0 -> 63767 bytes
info/refenence_guide.md | 35 --------
tests/conftest.py | 4 +
theme-bkup/dark-mode-images.css | 16 ----
theme-bkup/head.hbs | 12 ---
theme-bkup/version-selector.css | 48 -----------
theme-bkup/version-selector.js | 75 ------------------
v1/en_chapters/img | 1 +
v1/en_chapters/mlsys.bib | 1 +
v1/en_chapters/references | 1 +
v1/en_chapters/static | 1 +
.../components_of_computational_graph.md | 1 +
v1/zh_chapters/img | 1 +
v1/zh_chapters/mlsys.bib | 1 +
v1/zh_chapters/references | 1 +
v1/zh_chapters/static | 1 +
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
v2/en_chapters/SUMMARY.md | 19 +++++
v2/en_chapters/img | 1 +
v2/en_chapters/index.md | 21 +++++
v2/en_chapters/mlsys.bib | 1 +
v2/en_chapters/references | 1 +
v2/en_chapters/static | 1 +
v2/info/CONTRIBUTING.md | 10 ++-
v2/info/CONTRIBUTING_zh.md | 10 ++-
.../Pic_Templates_and_Samples.pptx | Bin
.../Requirements and Instructions.md | 0
{info => v2/info}/info.md | 9 +--
{info => v2/info}/issue.md | 0
v2/info/refenence_guide.md | 30 +++++++
v2/info/style.md | 2 +-
v2/info/style_zh.md | 2 +-
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
.../index.md | 0
v2/zh_chapters/SUMMARY.md | 19 +++++
v2/zh_chapters/img | 1 +
v2/zh_chapters/index.md | 21 +++++
v2/zh_chapters/mlsys.bib | 1 +
v2/zh_chapters/references | 1 +
v2/zh_chapters/static | 1 +
68 files changed, 186 insertions(+), 446 deletions(-)
delete mode 100644 book.toml
delete mode 100644 build_and_transform.sh
delete mode 100644 build_html.sh
delete mode 100755 build_html_zh.sh
delete mode 100644 build_mdbook.sh
delete mode 100755 build_mdbook_zh.sh
delete mode 100644 conftest.py
delete mode 100644 info/editors.md
create mode 100644 info/logo-with-text.png
delete mode 100644 info/refenence_guide.md
create mode 100644 tests/conftest.py
delete mode 100644 theme-bkup/dark-mode-images.css
delete mode 100644 theme-bkup/head.hbs
delete mode 100644 theme-bkup/version-selector.css
delete mode 100644 theme-bkup/version-selector.js
create mode 120000 v1/en_chapters/img
create mode 120000 v1/en_chapters/mlsys.bib
create mode 120000 v1/en_chapters/references
create mode 120000 v1/en_chapters/static
create mode 120000 v1/zh_chapters/img
create mode 120000 v1/zh_chapters/mlsys.bib
create mode 120000 v1/zh_chapters/references
create mode 120000 v1/zh_chapters/static
rename v2/en_chapters/{chapter_preface => 00_chapter_preface}/index.md (100%)
rename v2/en_chapters/{chapter_introduction => 01_chapter_introduction}/index.md (100%)
rename v2/en_chapters/{chapter_programming_and_graph => 02_chapter_programming_and_graph}/index.md (100%)
rename v2/en_chapters/{chapter_accelerator => 03_chapter_accelerator}/index.md (100%)
rename v2/en_chapters/{chapter_compiler_and_runtime => 04_chapter_compiler_and_runtime}/index.md (100%)
rename v2/en_chapters/{chapter_data_processing => 05_chapter_data_processing}/index.md (100%)
rename v2/en_chapters/{chapter_training_systems => 06_chapter_training_systems}/index.md (100%)
rename v2/en_chapters/{chapter_model_serving => 07_chapter_model_serving}/index.md (100%)
rename v2/en_chapters/{chapter_rl_systems => 08_chapter_rl_systems}/index.md (100%)
rename v2/en_chapters/{chapter_gpu_cluster => 09_chapter_gpu_cluster}/index.md (100%)
create mode 120000 v2/en_chapters/img
create mode 120000 v2/en_chapters/mlsys.bib
create mode 120000 v2/en_chapters/references
create mode 120000 v2/en_chapters/static
rename {info => v2/info}/Pic-Instruction/Pic_Templates_and_Samples.pptx (100%)
rename {info => v2/info}/Pic-Instruction/Requirements and Instructions.md (100%)
rename {info => v2/info}/info.md (65%)
rename {info => v2/info}/issue.md (100%)
create mode 100644 v2/info/refenence_guide.md
rename v2/zh_chapters/{chapter_preface => 00_chapter_preface}/index.md (100%)
rename v2/zh_chapters/{chapter_introduction => 01_chapter_introduction}/index.md (100%)
rename v2/zh_chapters/{chapter_programming_and_graph => 02_chapter_programming_and_graph}/index.md (100%)
rename v2/zh_chapters/{chapter_accelerator => 03_chapter_accelerator}/index.md (100%)
rename v2/zh_chapters/{chapter_compiler_and_runtime => 04_chapter_compiler_and_runtime}/index.md (100%)
rename v2/zh_chapters/{chapter_data_processing => 05_chapter_data_processing}/index.md (100%)
rename v2/zh_chapters/{chapter_training_systems => 06_chapter_training_systems}/index.md (100%)
rename v2/zh_chapters/{chapter_model_serving => 07_chapter_model_serving}/index.md (100%)
rename v2/zh_chapters/{chapter_rl_systems => 08_chapter_rl_systems}/index.md (100%)
rename v2/zh_chapters/{chapter_gpu_cluster => 09_chapter_gpu_cluster}/index.md (100%)
create mode 120000 v2/zh_chapters/img
create mode 120000 v2/zh_chapters/mlsys.bib
create mode 120000 v2/zh_chapters/references
create mode 120000 v2/zh_chapters/static
diff --git a/.gitignore b/.gitignore
index b3163ae..585dc00 100644
--- a/.gitignore
+++ b/.gitignore
@@ -33,19 +33,3 @@ zh_chapters/img
zh_chapters/references
zh_chapters/static
zh_chapters/mlsys.bib
-v1/en_chapters/img
-v1/en_chapters/references
-v1/en_chapters/static
-v1/en_chapters/mlsys.bib
-v1/zh_chapters/img
-v1/zh_chapters/references
-v1/zh_chapters/static
-v1/zh_chapters/mlsys.bib
-v2/en_chapters/img
-v2/en_chapters/references
-v2/en_chapters/static
-v2/en_chapters/mlsys.bib
-v2/zh_chapters/img
-v2/zh_chapters/references
-v2/zh_chapters/static
-v2/zh_chapters/mlsys.bib
diff --git a/README.md b/README.md
index c087086..419ddb7 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,5 @@
-
+
@@ -46,35 +46,19 @@
## 内容介绍
-本书分为基础篇、进阶篇和扩展篇三个部分:
-
-### 基础篇
+本书(第二版)共分9章:
| 章节 | 内容 |
|------|------|
-| [编程接口](chapter_programming_interface/) | 框架接口设计哲学、机器学习工作流、深度学习模型定义、C/C++ 框架开发 |
-| [计算图](chapter_computational_graph/) | 计算图基本构成、生成方法、调度策略、自动微分 |
-
-### 进阶篇
-
-| 章节 | 内容 |
-|------|------|
-| [编译器前端和中间表示](chapter_frontend_and_ir/) | 类型推导、中间表示(IR)、自动微分、常见优化 Pass |
-| [编译器后端和运行时](chapter_backend_and_runtime/) | 计算图优化、算子选择、内存分配、计算调度与执行 |
-| [硬件加速器](chapter_accelerator/) | GPU/Ascend 架构原理、高性能编程接口(CUDA/CANN) |
-| [数据处理框架](chapter_data_processing/) | 易用性、高效性、保序性、分布式数据处理 |
-| [模型部署](chapter_model_deployment/) | 模型转换、模型压缩、模型推理、安全保护 |
-| [分布式训练](chapter_distributed_training/) | 数据并行、模型并行、流水线并行、集合通讯、参数服务器 |
-
-### 扩展篇
-
-| 章节 | 内容 |
-|------|------|
-| [深度学习推荐系统](chapter_recommender_system/) | 推荐系统原理、大规模工业场景架构设计 |
-| [联邦学习系统](chapter_federated_learning/) | 联邦学习方法、隐私保护、系统实现 |
-| [强化学习系统](chapter_reinforcement_learning/) | 单智能体/多智能体强化学习系统 |
-| [可解释性 AI 系统](chapter_explainable_AI/) | 可解释 AI 方法与落地实践 |
-| [机器人学习系统](chapter_rl_sys/) | 机器人感知、规划、控制与系统安全 |
+| [第1章 导论](v2/zh_chapters/01_chapter_introduction/) | 机器学习系统架构和技术栈概述 |
+| [第2章 编程接口与计算图](v2/zh_chapters/02_chapter_programming_and_graph/) | 张量抽象、自动微分、图表示与执行 |
+| [第3章 AI加速器与编程](v2/zh_chapters/03_chapter_accelerator/) | GPU 架构与 CUDA/Triton/CUTLASS 编程模型 |
+| [第4章 AI编译器与运行时系统](v2/zh_chapters/04_chapter_compiler_and_runtime/) | IR 设计、图优化、算子生成与运行时执行 |
+| [第5章 数据处理系统](v2/zh_chapters/05_chapter_data_processing/) | 数据加载、数据管道和分布式数据处理 |
+| [第6章 训练系统](v2/zh_chapters/06_chapter_training_systems/) | 单节点与分布式训练、并行策略与训练优化 |
+| [第7章 模型服务](v2/zh_chapters/07_chapter_model_serving/) | 推理优化、在线服务与模型管理 |
+| [第8章 强化学习系统](v2/zh_chapters/08_chapter_rl_systems/) | 强化学习管道、环境交互与 RL 系统设计 |
+| [第9章 大规模GPU集群管理](v2/zh_chapters/09_chapter_gpu_cluster/) | GPU 调度、资源管理与大规模训练基础设施 |
## 更新日志
@@ -91,6 +75,7 @@
- curl
- git
+- Python 3
### 安装步骤
@@ -109,11 +94,12 @@ cargo install mdbook
### 编译HTML
```bash
-sh build_mdbook_zh.sh
-# 生成结果位于 .mdbook-zh/book
+sh build_mdbook_v2.sh
+# 英文版生成结果位于 .mdbook-v2/book
+# 中文版生成结果位于 .mdbook-v2-zh/book
```
-更多细节请参考 [构建指南](info/info.md)。
+更多细节请参考 [构建指南](v2/info/info.md)。
## 贡献指南
diff --git a/README_EN.md b/README_EN.md
index 05f63e3..dc796c6 100644
--- a/README_EN.md
+++ b/README_EN.md
@@ -1,5 +1,5 @@
-
+
@@ -48,35 +48,19 @@ An open-source book explaining the design principles and implementation experien
## Content Overview
-The book is organized into three parts: Fundamentals, Advanced Topics, and Extensions.
-
-### Part I: Fundamentals
+The book (2nd edition) consists of 9 chapters:
| Chapter | Content |
|---------|---------|
-| [Programming Interface](chapter_programming_interface/) | Framework API design, ML workflows, deep learning model definition, C/C++ framework development |
-| [Computational Graph](chapter_computational_graph/) | Graph components, generation methods, scheduling strategies, automatic differentiation |
-
-### Part II: Advanced Topics
-
-| Chapter | Content |
-|---------|---------|
-| [Compiler Frontend & IR](chapter_frontend_and_ir/) | Type inference, intermediate representation (IR), automatic differentiation, common optimization passes |
-| [Compiler Backend & Runtime](chapter_backend_and_runtime/) | Graph optimization, operator selection, memory allocation, compute scheduling and execution |
-| [Hardware Accelerators](chapter_accelerator/) | GPU/Ascend architecture, high-performance programming interfaces (CUDA/CANN) |
-| [Data Processing](chapter_data_processing/) | Usability, efficiency, order preservation, distributed data processing |
-| [Model Deployment](chapter_model_deployment/) | Model conversion, compression, inference, and security |
-| [Distributed Training](chapter_distributed_training/) | Data parallelism, model parallelism, pipeline parallelism, collective communication, parameter servers |
-
-### Part III: Extensions
-
-| Chapter | Content |
-|---------|---------|
-| [Recommender Systems](chapter_recommender_system/) | Recommendation principles, large-scale industrial architecture |
-| [Federated Learning](chapter_federated_learning/) | Federated learning methods, privacy protection, system implementation |
-| [Reinforcement Learning Systems](chapter_reinforcement_learning/) | Single-agent and multi-agent RL systems |
-| [Explainable AI Systems](chapter_explainable_AI/) | XAI methods and production practices |
-| [Robot Learning Systems](chapter_rl_sys/) | Robot perception, planning, control, and system safety |
+| [Chapter 1: Introduction](v2/en_chapters/01_chapter_introduction/) | Overview of ML system architecture and technology stack |
+| [Chapter 2: Programming Interfaces and Computational Graphs](v2/en_chapters/02_chapter_programming_and_graph/) | Tensor abstraction, automatic differentiation, graph representation and execution |
+| [Chapter 3: AI Accelerators and Programming](v2/en_chapters/03_chapter_accelerator/) | GPU architecture and CUDA/Triton/CUTLASS programming models |
+| [Chapter 4: AI Compilers and Runtime Systems](v2/en_chapters/04_chapter_compiler_and_runtime/) | IR design, graph optimization, kernel generation, and runtime execution |
+| [Chapter 5: Data Processing Systems](v2/en_chapters/05_chapter_data_processing/) | Data loading, data pipelines, and distributed data processing |
+| [Chapter 6: Training Systems](v2/en_chapters/06_chapter_training_systems/) | Single-node and distributed training, parallelism strategies, and training optimization |
+| [Chapter 7: Model Serving](v2/en_chapters/07_chapter_model_serving/) | Inference optimization, online serving, and model management |
+| [Chapter 8: RL Systems](v2/en_chapters/08_chapter_rl_systems/) | Reinforcement learning pipelines, environment interaction, and RL system design |
+| [Chapter 9: Large-scale GPU Cluster Management](v2/en_chapters/09_chapter_gpu_cluster/) | GPU scheduling, resource management, and large-scale training infrastructure |
## Changelog
@@ -93,6 +77,7 @@ The book is organized into three parts: Fundamentals, Advanced Topics, and Exten
- curl
- git
+- Python 3
### Installation
@@ -111,11 +96,12 @@ cargo install mdbook
### Build HTML
```bash
-sh build_mdbook.sh
-# Output is in .mdbook/book
+sh build_mdbook_v2.sh
+# English output: .mdbook-v2/book
+# Chinese output: .mdbook-v2-zh/book
```
-For more details, see the [Build Guide](info/info.md).
+For more details, see the [Build Guide](v2/info/info.md).
## Contributing
@@ -127,7 +113,11 @@ Before contributing, please read:
## Community
-Join our WeChat group by scanning the QR code in [info/mlsys_group.png](info/mlsys_group.png).
+
+
+
+ Join our WeChat group by scanning the QR code
+
## Citation
diff --git a/book.toml b/book.toml
deleted file mode 100644
index f0d4e0e..0000000
--- a/book.toml
+++ /dev/null
@@ -1,19 +0,0 @@
-[book]
-authors = ["OpenMLSys Contributors"]
-language = "en"
-src = "en_chapters"
-title = "Machine Learning Systems: Design and Implementation"
-
-[build]
-build-dir = ".mdbook/book"
-create-missing = false
-
-[preprocessor.openmlsys]
-command = "python3 tools/mdbook_preprocessor.py"
-
-[output.html]
-mathjax-support = true
-git-repository-url = "https://github.com/openmlsys/openmlsys-zh"
-preferred-dark-theme = "navy"
-additional-css = ["theme/dark-mode-images.css", "theme/version-selector.css"]
-additional-js = ["theme/version-selector.js"]
diff --git a/build_and_transform.sh b/build_and_transform.sh
deleted file mode 100644
index 70243ca..0000000
--- a/build_and_transform.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-d2lbook build html
-python3 tools/format_tables.py
\ No newline at end of file
diff --git a/build_html.sh b/build_html.sh
deleted file mode 100644
index 904791c..0000000
--- a/build_html.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# Build the English (en) version of the book from en_chapters/.
-# Output: en_chapters/_build/html/
-#
-# Resources (img/, references/, static/, mlsys.bib) live at the repo root and
-# are symlinked into en_chapters/ so d2lbook can find them at relative paths.
-
-set -e
-
-ROOT="$(cd "$(dirname "$0")" && pwd)"
-
-# ── Create resource symlinks ──────────────────────────────────────────────────
-python3 "$ROOT/tools/ensure_book_resources.py" --chapter-dir "$ROOT/en_chapters"
-
-# ── Build ─────────────────────────────────────────────────────────────────────
-cd "$ROOT/en_chapters"
-
-rm -rf _build/rst _build/html
-d2lbook build rst
-cp static/frontpage.html _build/rst/
-d2lbook build html
-cp -r static/image/* _build/html/_images/ 2>/dev/null || true
-python3 "$ROOT/tools/format_tables.py"
diff --git a/build_html_zh.sh b/build_html_zh.sh
deleted file mode 100755
index ccefd76..0000000
--- a/build_html_zh.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/bin/bash
-# Build the Chinese (zh) version of the book from zh_chapters/.
-# Output: zh_chapters/_build/html/
-#
-# Resources (img/, references/, static/, mlsys.bib) live at the repo root and
-# are symlinked into zh_chapters/ so d2lbook can find them at relative paths.
-
-set -e
-
-ROOT="$(cd "$(dirname "$0")" && pwd)"
-
-# ── Create resource symlinks ──────────────────────────────────────────────────
-python3 "$ROOT/tools/ensure_book_resources.py" --chapter-dir "$ROOT/zh_chapters"
-
-# ── Build ─────────────────────────────────────────────────────────────────────
-cd "$ROOT/zh_chapters"
-
-rm -rf _build/rst _build/html
-d2lbook build rst
-cp static/frontpage.html _build/rst/
-d2lbook build html
-cp -r static/image/* _build/html/_images/ 2>/dev/null || true
-python3 "$ROOT/tools/format_tables.py"
diff --git a/build_mdbook.sh b/build_mdbook.sh
deleted file mode 100644
index f814264..0000000
--- a/build_mdbook.sh
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-PYTHON_BIN="$(command -v python3 || command -v python || true)"
-
-if [[ -z "${PYTHON_BIN}" ]]; then
- echo "Python is required to prepare the mdBook staging tree." >&2
- exit 1
-fi
-
-if ! command -v mdbook >/dev/null 2>&1; then
- echo "mdbook is not installed. Install it first, for example with: cargo install mdbook" >&2
- exit 1
-fi
-
-"${PYTHON_BIN}" "${ROOT}/tools/ensure_book_resources.py" --chapter-dir "${ROOT}/en_chapters"
-"${PYTHON_BIN}" "${ROOT}/tools/prepare_mdbook.py" \
- --source "${ROOT}/en_chapters" \
- --summary-output "${ROOT}/en_chapters/SUMMARY.md" \
- --placeholder-prefix "[TODO: src = zh_chapters/"
-
-mdbook build "${ROOT}"
diff --git a/build_mdbook_zh.sh b/build_mdbook_zh.sh
deleted file mode 100755
index fff91c4..0000000
--- a/build_mdbook_zh.sh
+++ /dev/null
@@ -1,25 +0,0 @@
-#!/usr/bin/env bash
-set -euo pipefail
-
-ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
-PYTHON_BIN="$(command -v python3 || command -v python || true)"
-
-if [[ -z "${PYTHON_BIN}" ]]; then
- echo "Python is required to prepare the mdBook staging tree." >&2
- exit 1
-fi
-
-if ! command -v mdbook >/dev/null 2>&1; then
- echo "mdbook is not installed. Install it first, for example with: cargo install mdbook" >&2
- exit 1
-fi
-
-# ── Create resource links ─────────────────────────────────────────────────────
-"${PYTHON_BIN}" "${ROOT}/tools/ensure_book_resources.py" --chapter-dir "${ROOT}/zh_chapters"
-
-# ── Build ─────────────────────────────────────────────────────────────────────
-"${PYTHON_BIN}" "${ROOT}/tools/prepare_mdbook_zh.py" \
- --source "${ROOT}/zh_chapters" \
- --summary-output "${ROOT}/zh_chapters/SUMMARY.md"
-
-mdbook build "${ROOT}/books/zh"
diff --git a/conftest.py b/conftest.py
deleted file mode 100644
index 4b03990..0000000
--- a/conftest.py
+++ /dev/null
@@ -1,4 +0,0 @@
-import sys
-from pathlib import Path
-
-sys.path.insert(0, str(Path(__file__).resolve().parent))
diff --git a/info/editors.md b/info/editors.md
deleted file mode 100644
index 7d0855e..0000000
--- a/info/editors.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# 编辑和作者
-
-## 章节编辑
-
-本书由超过30位人工智能系统领域的学术专家和开发人员共同完成。以下为各个章节编辑:
-
-项目README: [@luomai](https://github.com/luomai)
-
-序言:[@luomai](https://github.com/luomai)
-
-导论:[@luomai](https://github.com/luomai)
-
-编程接口:[@Laicheng0830](https://github.com/Laicheng0830)
-
-计算图:[@hanjr92](https://github.com/hanjr92)
-
-进阶篇序言:[@ganzhiliang](https://github.com/ganzhiliang)
-
-编译器前端和IR: [@LiangZhibo](https://github.com/LiangZhibo)
-
-编译器后端和运行时: [@chujinjin101](https://github.com/chujinjin101)
-
-硬件加速器:[@anyrenwei](https://github.com/anyrenwei)
-
-数据处理框架: [@eedalong](https://github.com/eedalong)
-
-模型部署: [@AssassinG](https://github.com/AssassinGQ)
-
-分布式训练系统: [@luomai](https://github.com/luomai)
-
-拓展篇序言:[@luomai](https://github.com/luomai)
-
-深度学习推荐系统:[@future-xy](https://github.com/future-xy)
-
-联邦学习系统:[@chengtianwu](https://github.com/chengtianwu)
-
-强化学习系统:[@quantumiracle](https://github.com/quantumiracle)
-
-可解释性AI系统:[@HaoyangLee](https://github.com/HaoyangLee)
-
-机器人系统:[@Jack](https://github.com/Jiankai-Sun)
-
-附录:机器学习介绍:[@Hao](https://github.com/zsdonghao)
-
-## 加入我们
-
-我们创建了OpenMLSys微信群来讨论书籍的写作和拓展。如果希望加入我们,可以扫以下二维码(加的时候请介绍自己,并说明希望参与书籍的哪方面工作):
-
-
diff --git a/info/logo-with-text.png b/info/logo-with-text.png
new file mode 100644
index 0000000000000000000000000000000000000000..ee55e2d281d8e414b70190418282e24e26e8ab3d
GIT binary patch
literal 63767
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