服务端2月20日 19:19
Kubernetes YAML 怎么写?核心字段和常见配置模式详解Kubernetes 用 YAML 声明式描述资源期望状态——你告诉 K8s"我要什么结果",它负责把集群调到那个状态。一个合法的 K8s YAML 只有四个必填顶层字段:`apiVersion`、`kind`、`metadata`、`spec`。所有资源都是这四件套的排列组合,区别只在 spec 里填什么。
## 追问
### apiVersion 怎么选?选错了会怎样?
按资源类型对照:核心资源 `v1`(Pod、Service、ConfigMap、Secret),工作负载 `apps/v1`(Deployment、StatefulSet、DaemonSet),网络 `netw...服务端2月20日 19:24
YAML 在 CI/CD 流水线中怎么用?YAML 在 CI/CD 流水线中承担的是"流水线即代码"的角色——所有构建步骤、触发条件、环境变量、依赖关系都用 YAML 声明式定义,和代码一起入库版本管理。主流平台各有自己的 YAML 约定:GitHub Actions 用 `.github/workflows/*.yml`,GitLab CI 用根目录的 `.gitlab-ci.yml`,CircleCI 用 `.circleci/config.yml`。虽然语法细节不同,但核心结构都是"触发条件 → 作业定义 → 步骤执行",掌握一个平台后迁移到另一个成本很低。
面试中容易踩的坑:很多人能写出基本流水线,但被问到"怎么控制部...服务端2月20日 19:22
什么是 YAML Schema?如何用它验证 YAML 文件的结构和内容?YAML Schema 是给 YAML 文件定义"规矩"的技术——它声明一份 YAML 应该有哪些字段、每个字段什么类型、哪些必填、值域范围是什么。面试里问到这个点,核心考察的是你对配置治理的理解,而不仅仅是会用某个库。
## 面试直答
**YAML Schema** 本质上是一份"元数据描述",类似 JSON Schema 之于 JSON。主流做法是用 JSON Schema(draft-07 或 draft-2020-12)来描述 YAML 的结构,因为 YAML 是 JSON 的超集,两者天然兼容。
验证流程三步走:
1. 编写 Schema 文件(通常是 `.json` 或...服务端2月20日 19:21
YAML 和 JSON 有什么区别?如何选择?YAML 和 JSON 都是数据序列化格式,核心区别在于设计目标不同:YAML 追求人类可读,JSON 追求机器解析效率。YAML 用缩进表示层级,支持注释、多行字符串、对象引用(`&`/`*`)和更丰富的数据类型(日期、二进制等);JSON 用大括号和方括号表示结构,语法严格但不支持注释,数据类型只有字符串、数字、布尔、null、对象和数组六种。选择依据很简单:需要人手写和阅读的用 YAML(配置文件、CI/CD、K8s 清单),需要机器快速解析和跨系统传输的用 JSON(API 响应、日志、数据存储)。性能上 JSON 解析速度通常是 YAML 的 5-10 倍,因为 YAML 规范...计算机基础2月19日 20:19
XXE 攻击原理与防护:从 XML 注入到实战防御XML 解析器天生就会处理 DTD 中的外部实体引用——这个设计初衷是为了方便模块化文档管理,却被攻击者利用来读取服务器文件、发起内网请求,甚至执行代码。这就是 XXE(XML External Entity)攻击的核心原理。
2025 年 6 月,Apache Tika 爆出 CVE-2025-66516(CVSS 8.4),攻击者通过上传恶意 PDF 文件触发 XXE,读取服务器敏感文件——这说明 XXE 不是历史遗留问题,至今仍有新的攻击面被挖掘出来。
## XXE 攻击是怎么发生的
XML 规范允许在 DTD(文档类型定义)中声明实体,其中 `SYSTEM` 类型的实体会让...计算机基础2月19日 20:13
XML 和 HTML 有什么区别?XML 和 HTML 都是标记语言,但定位完全不同:HTML 是用来显示网页内容的,标签全预定义;XML 是用来存储和传输数据的,标签可以自己定义。面试中抓住"设计目的""标签定义""语法严格性"三个核心差异展开就够。
**一段代码看清区别**:
```html
<!-- HTML:预定义标签,关注显示 -->
<h1>用户信息</h1>
<p>姓名:张三</p>
<!-- XML:自定义标签,关注数据结构 -->
<user>
<name>张三</name>
<age>28</age>
</user>
```
同样的"用户信息",HTML 关心怎么在页面上展示,XML ...计算机基础2月19日 20:14
什么是 XML 命名空间,如何声明和使用它?当两个不同的 XML 词汇表使用相同的元素名时,解析器无法区分它们——这就是命名冲突。XML 命名空间(Namespace)正是为解决这个问题而设计的机制,它通过为元素和属性绑定一个全局唯一的 URI 标识符,让同名元素可以和平共处。
## 为什么需要命名空间
假设一份文档同时引用了两个 XML 词汇表,两者都定义了 `<table>` 元素:一个表示表格数据,另一个表示家具。没有命名空间时,解析器无法判断 `<table>` 到底指哪个。命名空间通过在元素前加前缀并绑定唯一 URI 来消除歧义。
需要注意的是,命名空间 URI 仅作为唯一标识符使用,解析器不会去访问这个地址。UR...服务端2月20日 19:18
YAML 1.1 和 YAML 1.2 有什么区别?YAML 1.1 和 YAML 1.2 的核心差异在于类型推断规则。YAML 1.1 对隐式类型推断非常激进——`yes`/`no`/`on`/`off` 全部解析为布尔值,`010` 解析为八进制 8,`3:25:45` 解析为六十进制秒数。YAML 1.2 砍掉了这些"聪明"的推断,只认 `true`/`false` 为布尔值,八进制必须写 `0o10`,六十进制格式直接移除。1.2 的目标是和 JSON 完全兼容——任何合法 JSON 都是合法的 YAML 1.2,但 1.1 做不到这点。
最典型的坑是"Norway Problem":用 YAML 1.1 写国家代码 `NO`(...计算机基础2月19日 20:16
XPath 是什么?XML 数据查询从入门到实战XPath 是 XML 世界里的"查询语言"——你有一堆结构化的 XML 数据,想从中精确提取某个节点的值、过滤满足条件的元素、或者统计某个属性出现的次数,XPath 就是干这个的。几乎所有需要处理 XML 的场景都会用到它:Java 解析配置文件、Python 爬虫提取网页数据、XSLT 转换文档格式,底层都依赖 XPath 定位节点。
如果把 XML 文档比作一栋大楼,那 XPath 就是楼里的导航系统——告诉你"3 楼东侧第二个房间"在哪,而不是让你挨个门去找。
## XPath 把 XML 看成一棵树
拿到一份 XML 文档后,XPath 要做的第一件事是把它当成一棵"节点...计算机基础2月19日 20:17
XSLT 是什么?XML 转换的模板匹配机制详解XSLT 经常被误解为"XML 的 CSS"——其实它更像一门函数式编程语言。你写一系列模板规则,XSLT 处理器拿着这些规则去匹配 XML 节点,匹配上了就输出对应内容。理解这个模型,比背语法重要得多。
## XSLT 处理模型:模板驱动的递归匹配
XSLT 的核心不是"写一个程序去遍历 XML",而是"告诉处理器遇到什么节点就输出什么"。处理器从根节点开始,按模板优先级逐级匹配,遇到 `apply-templates` 就递归处理子节点。
这个过程有几个关键规则:
- **匹配优先级**:更具体的匹配规则优先。`match="bookstore/book"` 比 `match...