# 博客分类体系设计：工作/学习/技术/生活四大类方案


## 一、为什么选择四大类方案

本站内容跨度较大，涵盖工作、学习、技术、生活四个方面。在设计分类体系时，面临两个选择：

- **扁平方案**：一级分类直接对应内容领域（如网络测试、算法、编程、系统……）
- **层次方案**：一级分类对应用途场景，二级分类细分内容领域

扁平方案的优点是**少点击、定位快**，缺点是**分类维度不统一**——有的按工作领域分，有的按学科分，有的按技术栈分，容易混乱。

层次方案的优点是**维度统一、结构清晰**，缺点是**需要二级分类**，多一层导航。

本站最终选择**层次方案**，以「工作/学习/技术/生活」四大类为一级分类，每类下设 2-3 个二级分类。

**核心理由**：四大类的维度是**统一的**——都是**"用途/场景"维度**，这比混合维度更清晰、更易维护。

---

## 二、分类维度总览

四大类的一级分类，维度完全统一：

| 一级分类 | 维度 | 本质 |
|---------|------|------|
| 工作 | 用途/场景 | 职业产出 |
| 学习 | 用途/场景 | 知识输入 |
| 技术 | 用途/场景 | 技能实践 |
| 生活 | 用途/场景 | 非技术日常 |

**统一维度的好处**：

- 归类时只需问一个问题："我为什么写这篇文章？"
- 不会出现"这个算工作还是算学科"的维度冲突
- 分类体系稳定，不易随内容变化而重构

**统一维度的代价**：

- 某些一级分类会过大（如"技术"），需要二级分类细分
- 归类时"用途"有时难以判断（如"为工作学的算法"）

---

## 三、一级 + 二级分类结构

```
工作
├── 网络测试
└── 项目记录

学习
├── 算法
├── 数学
└── 物理

技术
├── 编程
├── 系统
└── 工具

生活
├── 随笔
└── 育儿

```

- **一级分类**：4 个（工作/学习/技术/生活）
- **二级分类**：10 个

---

## 四、四大类详解

### 1. 工作

- **维度**：职业产出
- **包含**：网络测试、项目记录
- **二级分类**：
  - `网络测试`——测试理论、实践、工具、调优
  - `项目记录`——具体项目的过程、复盘、踩坑
- **典型 tags**：`TCP`、`DPDK`、`iperf`、`压测`、`调优`、`复盘`

**边界处理**：工作中的**学习**（如为项目学的新技术）算工作还是学习？

- 为**完成工作**而学 → 工作
- **独立于工作**的知识积累 → 学习

### 2. 学习

- **维度**：知识输入
- **包含**：算法、数学、物理
- **二级分类**：
  - `算法`——算法导论、数据结构、复杂度
  - `数学`——线性代数、微积分、概率论
  - `物理`——量子力学、电磁学、力学
- **典型 tags**：`动态规划`、`图论`、`线性代数`、`量子力学`

**边界处理**：学习中的**编程练习**算学习还是技术？

- 主题是**算法/数学知识** → 学习
- 主题是**编程技巧** → 技术

### 3. 技术

- **维度**：技能实践
- **包含**：编程、系统、工具
- **二级分类**：
  - `编程`——语言、框架、设计模式
  - `系统`——Linux、macOS、树莓派、Shell
  - `工具`——Git、Vim、Docker、编辑器
- **典型 tags**：`Python`、`Go`、`Linux`、`Git`、`Docker`

**边界处理**：技术里的**算法实现**算技术还是学习？

- 主题是**算法原理** → 学习
- 主题是**工程实现** → 技术

### 4. 生活

- **维度**：非技术日常
- **包含**：随笔、育儿
- **二级分类**：
  - `随笔`——感想、记录、杂谈
  - `育儿`——孩子日常、教育
- **典型 tags**：`育儿`、`随笔`、`感想`

**边界处理**：生活中的**技术折腾**（如家庭 NAS）算生活还是技术？

- 主题是**生活应用** → 生活
- 主题是**技术本身** → 技术

---

## 五、归类判断原则

### 核心口诀

> **先问"为什么写"，再问"写什么"。**
> **为工作产出 → 工作**
> **为知识输入 → 学习**
> **为技能实践 → 技术**
> **为生活记录 → 生活**

### 判断示例

| 文章 | 一级 | 二级 | 理由 |
|------|------|------|------|
| TCP 拥塞控制原理 | 工作 | 网络测试 | 服务于工作 |
| 网卡压测实战 | 工作 | 网络测试 | 工作产出 |
| 项目 X 复盘 | 工作 | 项目记录 | 工作复盘 |
| 快速排序详解 | 学习 | 算法 | 知识输入 |
| 线性代数笔记 | 学习 | 数学 | 知识输入 |
| 量子力学笔记 | 学习 | 物理 | 知识输入 |
| Python 装饰器 | 技术 | 编程 | 技能实践 |
| Linux 进程管理 | 技术 | 系统 | 技能实践 |
| Git 分支策略 | 技术 | 工具 | 技能实践 |
| 用 Python 写监控脚本 | 技术 | 编程 | 技能实践 |
| 周末带娃记录 | 生活 | 育儿 | 生活记录 |
| 年度总结 | 生活 | 随笔 | 生活记录 |

### 易混淆边界

**Q：为工作学的算法，算工作还是学习？**

- 为**完成具体工作** → 工作
- **通用知识积累** → 学习

**Q：技术文章里的数学推导，算技术还是学习？**

- 数学是**主题** → 学习
- 数学是**工具** → 技术

**Q：家庭 NAS 搭建，算生活还是技术？**

- 主题是**生活应用** → 生活
- 主题是**技术方案** → 技术

**Q：博客搭建文章，算技术还是生活？**

- 主题是**技术实践**（Hugo 配置、taxonomy 设计） → 技术
- 主题是**生活记录**（博客感想） → 生活

---

## 六、Hugo 实现方式

Hugo 原生**不支持多级 categories**，有三种实现方式：

### 方式 A：单层 categories，用命名约定

```yaml
categories: ["工作/网络测试"]

```

- **优点**：Hugo 原生支持
- **缺点**：斜杠在 URL 里需要处理，部分主题显示不友好

### 方式 B：categories + subcategories 两个 taxonomy（推荐）

```toml
[taxonomies]
  category = "categories"
  subcategory = "subcategories"
  tag = "tags"
  collection = "collections"

```

```yaml
categories: ["工作"]
subcategories: ["网络测试"]

```

- **优点**：结构清晰，两个独立 taxonomy
- **缺点**：需要主题支持，二级分类页面需单独配置

### 方式 C：categories 只放一级，二级用 tags

```yaml
categories: ["工作"]
tags: ["网络测试", "TCP", "压测"]

```

- **优点**：最简单，Hugo 原生
- **缺点**：二级分类和普通 tag 混在一起，不够"正式"

**本站采用方式 B**，最符合"一级 + 二级"的语义。

### hugo.toml 配置

```toml
[taxonomies]
  category = "categories"
  subcategory = "subcategories"
  tag = "tags"
  collection = "collections"

```

### 文章 front matter 模板

```yaml
---
title: "文章标题"
date: 2026-10-16
draft: false
categories: ["工作"]              # 一级，4 选 1
subcategories: ["网络测试"]        # 二级，按一级对应
tags: ["TCP", "原理"]             # 自由
collections: ["网卡测试实战"]      # 可选，系列
description: "文章摘要"
---

```

### 一级与二级的对应关系

| 一级 category | 可选二级 subcategories |
|--------------|----------------------|
| 工作 | 网络测试、项目记录 |
| 学习 | 算法、数学、物理 |
| 技术 | 编程、系统、工具 |
| 生活 | 随笔、育儿 |

---

## 七、Tags 与 Collections 的配合

### Tags：细分维度

Tags 用于**同一二级分类内的细分**：

```yaml
# 网络测试的理论文章
categories: ["工作"]
subcategories: ["网络测试"]
tags: ["TCP", "原理", "拥塞控制"]

# 网络测试的实践文章
categories: ["工作"]
subcategories: ["网络测试"]
tags: ["iperf", "压测", "调优"]

```

**好处**：二级分类下理论和实践都在，读者一览无余；想只看理论，点 tag `原理`。

### Collections：系列维度

Collections 用于**跨分类的系列文章**：

```yaml
collections: ["算法导论笔记", "网卡测试实战", "Python 进阶", "树莓派折腾记"]

```

**好处**：把同一系列的零散文章聚合起来，不受分类限制。

---

## 八、设计原则总结

1. **一级分类维度统一**——四大类都是"用途/场景"维度，避免混合维度。
2. **二级分类按需添加**——不必全部预设，按实际内容增长添加。
3. **每个二级分类至少 5 篇**——否则不值得独立，可先并入一级。
4. **用 tags 细分，不用分类**——语言、工具、具体技术，都放 tags。
5. **先问"为什么写"**——归类时以写作目的为准，而非内容主题。
6. **可以动态调整**——先少后多，比先多后少好。

---

## 九、未来调整预案

如果某领域内容增长，可考虑调整：

| 触发条件 | 调整方案 |
|----------|---------|
| "网络测试"内容超过 20 篇 | 从"工作"拆出，升为一级分类 |
| "算法"内容超过 20 篇 | 从"学习"拆出，升为一级分类 |
| "编程"内容超过 20 篇 | 从"技术"拆出，升为一级分类 |
| 某二级分类长期不足 3 篇 | 并入一级，或合并到相近二级 |
| 出现新领域（如"阅读"） | 评估是否新增一级或二级 |

**原则**：先少后多，按实际增长调整，不预设。

---

## 十、与扁平方案的对比

| 对比项 | 扁平方案（6 个 categories） | 四大类方案（4+10） |
|--------|---------------------------|-------------------|
| **维度** | 混合（工作/学科/技术栈/生活） | 统一（用途/场景） |
| **一级数量** | 6 | 4 |
| **二级数量** | 无 | 10 |
| **优点** | 一级即定位，扁平 | 维度统一，层次清晰 |
| **缺点** | 维度不统一 | 需要二级 taxonomy |
| **导航** | 6 个入口 | 4 个入口 + 二级 |
| **适合** | 内容分布不均 | 内容分布较均匀 |

**核心差异**：

- **扁平方案**：一级分类**直接对应内容领域**，扁平，但维度混合
- **四大类方案**：一级分类**对应用途场景**，统一，但需要二级细分

**选择建议**：

- 重视**维度统一、结构清晰** → 四大类方案
- 重视**扁平、少点击** → 扁平方案

---

## 十一、一句话总结

> **本站采用「工作/学习/技术/生活」四大类为一级分类，维度统一（用途/场景）；每类下设 2-3 个二级分类，共 10 个。**
> **归类时先问"为什么写"：为工作产出→工作，为知识输入→学习，为技能实践→技术，为生活记录→生活。**
> **Hugo 用 categories + subcategories 两个 taxonomy 实现。**

---

> 作者: 泛福轩  
> URL: http://hugo.spiedeman.top/posts/blog-taxonomy-design/  

