# 在线工具集

> 免费、纯前端、保护隐私的在线工具集合

免费在线工具集合，覆盖图片处理、汇率换算、个税计算、简历生成、JSON 格式化、二维码、Base64、时间戳、正则等场景。所有工具纯前端运行，不上传数据。

所有工具纯前端运行（HTML/JS in 浏览器），不上传任何数据到服务器，不需要注册或登录。

---

# 工具目录

## 图片处理

压缩、转换、二维码等图像工具

### [图片压缩工具](https://xtechtools.com/image-tool/)

基于浏览器 Canvas 与 Web Worker 的图片压缩工具，支持批量处理、质量调节、格式转换，全程本地运行保护隐私。

关键词：图片压缩、在线压缩、JPEG压缩、PNG压缩、WebP、AVIF

常见问题：

- **图片压缩会上传到服务器吗？** 不会。本工具基于浏览器 Canvas 与 Web Worker 完全在你的设备上处理图片，文件不会离开本机，断网也能用。
- **支持哪些格式？** 输入支持 JPEG、PNG、WebP、AVIF、GIF；输出支持 JPEG、PNG、WebP、AVIF，可在压缩时转换格式。
- **能批量压缩吗？** 可以。支持一次拖入多张图片批量处理，并可统一设置质量、尺寸、输出格式。
- **压缩质量怎么选？** 一般场景 70–80% 质量肉眼几乎无差别；社交媒体上传用 60–70%；打印或 OG 图建议保留 85% 以上。
- **有体积或张数限制吗？** 没有上传限制，仅受浏览器内存约束。单文件超 50 MB 时建议先用「图片裁剪」缩小尺寸。

### [二维码生成](https://xtechtools.com/qr-code/)

生成高质量二维码，支持自定义颜色、容错率、Logo 嵌入，可下载 PNG 与 SVG 矢量格式。

关键词：二维码生成、在线二维码、WiFi 二维码、链接转二维码、草料二维码

常见问题：

- **生成的二维码可以商用吗？** 可以。本工具不附加水印，生成的 PNG/SVG 文件可自由用于商业场景，无需授权。
- **支持哪些容错等级？** 支持 L (7%)、M (15%)、Q (25%)、H (30%) 四档容错，需要 Logo 叠加或印刷推荐 Q 或 H 级。
- **二维码内容会被记录吗？** 不会。生成完全在浏览器本地完成，输入的 URL/文本不会上传任何服务器。
- **能做带 Logo 的彩色二维码吗？** 可以自定义前景色、背景色与边距，但 Logo 叠加请配合 H 档容错以保证可扫描性。

### [颜色转换](https://xtechtools.com/color/)

颜色格式互转工具，支持 HEX、RGB、HSL、HSV、CMYK，附 WCAG 2.1 文字对比度检查与配色调色板生成。

关键词：颜色转换、HEX RGB、HSL 转换、颜色对比度、WCAG

常见问题：

- **支持哪些颜色格式？** 支持 HEX、RGB、RGBA、HSL、HSLA、HSV、CMYK、LAB、LCH，以及 CSS Named Colors，互转零损失。
- **能从图片取色吗？** 可以。本站还有「图片取色板」工具，可从图片中提取主色调与调色板。
- **透明度怎么处理？** RGBA / HSLA 的 alpha 通道完整保留；HEX 8 位（如 #FF000080）也支持互转。
- **能生成调色板吗？** 本工具单色互转；如需配色方案，使用「色彩调色板」工具按色相、饱和度、明度生成成套配色。

### [CSS 渐变生成](https://xtechtools.com/css-gradient/)

CSS 渐变可视化生成工具：线性渐变、径向渐变、圆锥渐变，多色阶位置控制，实时预览，一键复制 CSS 代码。

关键词：CSS 渐变、CSS gradient、线性渐变、径向渐变、渐变生成器

常见问题：

- **支持哪些渐变？** 支持线性（linear-gradient）、径向（radial-gradient）、锥形（conic-gradient），以及多色停留点与角度自定义。
- **能导出成 PNG 背景图吗？** 工具直接生成 CSS 代码；如需 PNG 可用浏览器截图或本站「图片背景生成」工具。
- **兼容老浏览器吗？** 生成的代码使用标准 CSS（IE10+ 全支持）。锥形渐变需 Safari 12.1+ / Chrome 69+。

### [图片格式转换](https://xtechtools.com/image-convert/)

在线图片格式转换工具，支持 PNG、JPEG、WebP、AVIF 之间的互相转换，可设置质量与背景色，本地 Canvas 处理不上传。

关键词：图片转换、PNG 转 JPG、JPG 转 WebP、WebP 转 PNG、AVIF 转换

常见问题：

- **图片格式转换是免费的吗？** 是的。图片格式转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片格式转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片格式转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片转 Data URL](https://xtechtools.com/image-base64/)

图片与 Base64 Data URL 双向转换，可直接嵌入 HTML/CSS。支持 PNG、JPEG、SVG、WebP，反向粘贴 Data URL 预览。

关键词：图片转 Base64、Data URL、图片转 DataURL、Base64 图片、inline image

常见问题：

- **图片转 Base64 后体积变大？** Base64 体积约增加 33%。仅适合小图标内嵌 CSS/HTML；大图建议直接用 URL 引用以利用 CDN 缓存。
- **支持哪些格式？** 支持 JPEG、PNG、WebP、AVIF、GIF、SVG。SVG 推荐直接内嵌 SVG 字符串，比 Base64 更紧凑。
- **生成的 data URL 怎么用？** 可直接放进 `<img src="data:...">`、CSS `background: url(data:...)`，或赋给 `<a download>` 实现一键下载。

### [图片裁剪](https://xtechtools.com/image-crop/)

在线图片裁剪与缩放工具，可视化拖拽框选、固定比例（1:1、16:9 等）、按像素或百分比缩放，本地处理不上传。

关键词：图片裁剪、在线裁剪、图片缩放、调整大小、crop image

常见问题：

- **图片裁剪是免费的吗？** 是的。图片裁剪完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片裁剪属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片裁剪使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片缩放](https://xtechtools.com/image-resize/)

在线图片缩放工具，支持按 50/75/100/150/200% 或自定义像素缩放（可锁定比例），输出 PNG / JPG / WebP，质量可调，全程本地处理不上传。

关键词：图片缩放、resize、调整大小、WebP 转换、JPG 压缩

常见问题：

- **图片缩放是免费的吗？** 是的。图片缩放完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片缩放属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片缩放使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片水印](https://xtechtools.com/image-watermark/)

图片文字水印工具：自定义文字、字号、颜色、不透明度，9 宫格位置或自定义 xy 坐标，平铺模式可重复整张，Canvas 实时预览并下载。

关键词：图片水印、watermark、加水印、保护版权、原创标记

常见问题：

- **图片水印是免费的吗？** 是的。图片水印完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片水印属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片水印使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片元数据清除](https://xtechtools.com/image-meta-strip/)

图片元数据清除工具：上传 JPEG / PNG，解析显示 EXIF（拍摄日期 / 相机 / GPS 位置 / 镜头），通过 Canvas 重新编码一键剥离所有 EXIF 数据，分享前保护隐私。

关键词：EXIF 清除、图片隐私、metadata strip、位置信息、隐私保护

常见问题：

- **图片元数据清除是免费的吗？** 是的。图片元数据清除完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片元数据清除属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片元数据清除使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片旋转 / 翻转](https://xtechtools.com/image-rotate-flip/)

图片旋转与翻转工具：拖拽上传后一键 90 / 180 / 270 度顺时针旋转，水平 / 垂直翻转，Canvas 实时预览并下载 PNG / JPG。

关键词：图片旋转、图片翻转、image rotate、image flip、镜像图片

常见问题：

- **图片旋转 / 翻转是免费的吗？** 是的。图片旋转 / 翻转完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片旋转 / 翻转属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片旋转 / 翻转使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片模糊](https://xtechtools.com/image-blur/)

图片模糊工具：上传图片，0-50px 高斯模糊滑块实时调节，Canvas 渲染并下载，常用于背景虚化 / 隐私马赛克 / 设计封面。

关键词：图片模糊、image blur、高斯模糊、马赛克、背景虚化

常见问题：

- **图片模糊是免费的吗？** 是的。图片模糊完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片模糊属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片模糊使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片转 Base64](https://xtechtools.com/image-to-base64/)

图片转 Base64 数据 URI 工具：拖拽 PNG / JPG / WebP / SVG（5MB 内）即输出 Data URI，原文件大小 / Base64 编码后大小对比，含 CSS background-image 与 <img> 标签格式快速复制。

关键词：图片转 Base64、Data URI、image to base64、内联图片

常见问题：

- **图片转 Base64是免费的吗？** 是的。图片转 Base64完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片转 Base64属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片转 Base64使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片配色提取](https://xtechtools.com/color-palette-extract/)

图片配色提取工具，上传图片后用 k-means 聚类提取 5/8/10 个主色，按色块数量或色相排序，每色显示 hex / RGB / HSL，点击复制，全程本地处理。

关键词：图片配色、k-means、主色提取、palette、取色

常见问题：

- **图片配色提取是免费的吗？** 是的。图片配色提取完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片配色提取属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片配色提取使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Favicon 生成器](https://xtechtools.com/favicon-generator/)

Favicon 生成工具，上传图片或绘制文字图标，一键导出 16/32/48/96/144/192/512 尺寸 PNG、favicon.ico、apple-touch-icon 与 manifest.json，提供浏览器标签与 iOS 主屏幕预览。

关键词：favicon、网站图标、apple-touch-icon、manifest、PWA 图标

常见问题：

- **Favicon 生成器是免费的吗？** 是的。Favicon 生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Favicon 生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Favicon 生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [WCAG 颜色对比度检测](https://xtechtools.com/color-contrast/)

WCAG 颜色对比度检测工具，支持十六进制 / RGB / HSL 输入，实时计算对比度比值，按 AA 普通文本（4.5:1）、AA 大字（3:1）、AAA 普通文本（7:1）、AAA 大字（4.5:1）显示通过 / 失败徽章，附等级提升建议色。

关键词：对比度、WCAG、色彩对比、无障碍、a11y、前景背景

常见问题：

- **WCAG 颜色对比度检测是免费的吗？** 是的。WCAG 颜色对比度检测完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。WCAG 颜色对比度检测属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。WCAG 颜色对比度检测使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [SVG 优化](https://xtechtools.com/svg-optimize/)

SVG 优化工具，去除注释、空格、冗余属性，输出最小体积 SVG，可对比前后大小，支持 inline 与 data URL。

关键词：SVG 压缩、SVG 优化、SVG 美化、SVG minify、矢量图压缩

常见问题：

- **SVG 优化是免费的吗？** 是的。SVG 优化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。SVG 优化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。SVG 优化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 阴影生成](https://xtechtools.com/box-shadow/)

CSS box-shadow 可视化生成器，支持多层阴影叠加、内/外阴影切换、颜色与模糊度调节，实时预览并复制 CSS 代码。

关键词：CSS 阴影、box-shadow、CSS 投影、shadow generator

常见问题：

- **CSS 阴影生成是免费的吗？** 是的。CSS 阴影生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 阴影生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 阴影生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 滤镜](https://xtechtools.com/css-filter/)

CSS filter 滤镜可视化工具，调节模糊、亮度、对比度、灰度、色相、饱和度、反色、棕褐色，实时预览并生成 CSS。

关键词：CSS 滤镜、CSS filter、blur、grayscale、图片滤镜

常见问题：

- **CSS 滤镜是免费的吗？** 是的。CSS 滤镜完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 滤镜属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 滤镜使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [占位图生成](https://xtechtools.com/lorem-image/)

快速生成占位图片 URL，用于网页/UI 开发占位。支持 picsum.photos 真实图片与 placehold.co 自定义文字图。

关键词：占位图、placeholder image、占位图片、picsum、placehold

常见问题：

- **占位图生成是免费的吗？** 是的。占位图生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。占位图生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。占位图生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 圆角生成](https://xtechtools.com/border-radius/)

CSS border-radius 可视化编辑器，独立控制 4 个角的横纵半径，预览异形圆角，复制 CSS 代码。

关键词：CSS 圆角、border-radius、圆角生成器、异形圆角

常见问题：

- **CSS 圆角生成是免费的吗？** 是的。CSS 圆角生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 圆角生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 圆角生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Favicon 生成](https://xtechtools.com/favicon/)

Favicon 网站图标生成器：从 emoji、文字或上传图片生成 16/32/180/512 像素 PNG，可下载完整图标包。

关键词：favicon 生成、网站图标、emoji favicon、apple-touch-icon

常见问题：

- **Favicon 生成是免费的吗？** 是的。Favicon 生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Favicon 生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Favicon 生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 动画生成](https://xtechtools.com/css-anim/)

CSS keyframes 动画可视化生成工具，支持 transform / opacity / 颜色等属性，常见预设（fadeIn、bounce、shake），生成完整 CSS 代码。

关键词：CSS 动画、keyframes、CSS animation、动画生成器

常见问题：

- **CSS 动画生成是免费的吗？** 是的。CSS 动画生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 动画生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 动画生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 剪裁路径](https://xtechtools.com/clip-path/)

CSS clip-path 可视化编辑工具，多边形顶点拖拽编辑、圆形/椭圆参数、异形预设（三角形、星形、菱形等）。

关键词：CSS clip-path、剪裁路径、形状裁剪、CSS 异形

常见问题：

- **CSS 剪裁路径是免费的吗？** 是的。CSS 剪裁路径完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 剪裁路径属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 剪裁路径使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [长宽比计算](https://xtechtools.com/aspect/)

长宽比（aspect ratio）计算器：输入两个值自动算出第三个，常用比例预设 16:9 / 4:3 / 1:1 / 9:16 / 21:9。

关键词：长宽比、aspect ratio、16:9、比例计算、等比缩放

常见问题：

- **长宽比计算是免费的吗？** 是的。长宽比计算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。长宽比计算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。长宽比计算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 三角形](https://xtechtools.com/css-triangle/)

CSS 三角形生成器，通过 border 技巧生成 8 个方向的纯 CSS 三角形（不需图片），适合 tooltip 箭头与提示气泡。

关键词：CSS 三角形、border 三角形、CSS triangle、tooltip 箭头

常见问题：

- **CSS 三角形是免费的吗？** 是的。CSS 三角形完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 三角形属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 三角形使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [二维码识别](https://xtechtools.com/qr-decode/)

在线二维码识别工具，上传或拖入二维码图片即可解析内容，支持 URL、文本、WiFi、vCard 等所有格式。本地解析不上传。

关键词：二维码识别、二维码解析、QR 解码、扫描二维码、在线扫码

常见问题：

- **二维码识别是免费的吗？** 是的。二维码识别完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。二维码识别属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。二维码识别使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS Grid 生成](https://xtechtools.com/css-grid/)

CSS Grid 布局可视化生成器，调整列数 / 行数 / 间距 / 对齐方式，实时预览并复制 CSS 代码。

关键词：CSS Grid、grid-template、CSS 网格布局、布局生成

常见问题：

- **CSS Grid 生成是免费的吗？** 是的。CSS Grid 生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS Grid 生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS Grid 生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [vCard 联系人二维码](https://xtechtools.com/vcard-qr/)

生成 vCard 格式联系人二维码，扫描后可直接保存到手机通讯录，支持姓名、电话、邮箱、公司、地址、网站、备注等完整字段。

关键词：vCard、联系人二维码、名片二维码、电子名片、通讯录二维码

常见问题：

- **vCard 联系人二维码是免费的吗？** 是的。vCard 联系人二维码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。vCard 联系人二维码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。vCard 联系人二维码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 文本阴影](https://xtechtools.com/text-shadow/)

CSS text-shadow 文本阴影可视化生成器，支持多层阴影叠加（凸起/凹陷/霓虹效果）、颜色与透明度调节，一键复制 CSS。

关键词：CSS 文本阴影、text-shadow、文字阴影、霓虹文字、CSS 文字效果

常见问题：

- **CSS 文本阴影是免费的吗？** 是的。CSS 文本阴影完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 文本阴影属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 文本阴影使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片长图拼接](https://xtechtools.com/image-stitch/)

图片长图拼接工具，把多张图片纵向（朋友圈长图）或横向（左右连排）合成一张大图，支持间距、对齐方式调节。Canvas 本地完成。

关键词：长图拼接、图片拼接、朋友圈长图、图片合成、image stitch

常见问题：

- **图片长图拼接是免费的吗？** 是的。图片长图拼接完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片长图拼接属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片长图拼接使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片九宫格切图](https://xtechtools.com/image-grid-cut/)

图片九宫格切图工具，把单张图自动切成 3×3 九宫格（朋友圈整图发图），支持自定义切分网格（2×2、3×3、4×4 等）。

关键词：九宫格、九宫格切图、朋友圈九宫格、图片分割、grid cut

常见问题：

- **图片九宫格切图是免费的吗？** 是的。图片九宫格切图完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片九宫格切图属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片九宫格切图使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [圆形头像生成](https://xtechtools.com/image-avatar/)

圆形头像生成工具，把方形图片处理成圆形头像，支持边框颜色与粗细、外阴影、缩放裁剪。导出 PNG 透明底。

关键词：圆形头像、头像处理、头像裁剪、圆图、avatar

常见问题：

- **圆形头像生成是免费的吗？** 是的。圆形头像生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。圆形头像生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。圆形头像生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [截图美化](https://xtechtools.com/screenshot-beautify/)

截图美化工具，给原始截图加渐变背景、圆角、阴影与比例填充，社交分享 / 教程素材一键变精致，纯本地处理。

关键词：截图美化、截图加边框、截图加背景、截图配色

常见问题：

- **截图美化是免费的吗？** 是的。截图美化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。截图美化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。截图美化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [渐变文字生成](https://xtechtools.com/gradient-text/)

生成 CSS 渐变文字效果，支持横向 / 竖向 / 斜向 / 径向方向，多种预设配色（彩虹 / 火焰 / 海洋 / 日落 / 骄傲），实时预览并一键复制 CSS 代码。

关键词：渐变文字、CSS 渐变、彩虹文字、gradient text、background-clip

常见问题：

- **渐变文字生成是免费的吗？** 是的。渐变文字生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。渐变文字生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。渐变文字生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [浏览器窗口截图](https://xtechtools.com/screenshot-mock/)

给截图加浏览器窗口外壳（Chrome / Safari），可自定义 URL 与标签页标题，纯前端 Canvas 合成，导出 PNG。

关键词：浏览器截图、截图美化、browser mockup、screenshot frame

常见问题：

- **浏览器窗口截图是免费的吗？** 是的。浏览器窗口截图完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。浏览器窗口截图属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。浏览器窗口截图使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [设备外壳截图](https://xtechtools.com/device-frame/)

给截图加 iPhone 15 / iPad / MacBook / Android 等设备外壳，CSS 绘制无图片资源，渐变背景可调，纯前端导出 PNG。

关键词：设备框、iPhone 框、MacBook 框、device mockup、产品截图

常见问题：

- **设备外壳截图是免费的吗？** 是的。设备外壳截图完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。设备外壳截图属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。设备外壳截图使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片取色器](https://xtechtools.com/color-picker-image/)

在线图片取色器，鼠标点击任意像素显示 HEX / RGB / HSL，自动 k-means 提取 5 大主色调，一键复制色值。

关键词：图片取色、color picker、主色调提取、图片配色、palette extract

常见问题：

- **图片取色器是免费的吗？** 是的。图片取色器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片取色器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片取色器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [在线签名](https://xtechtools.com/signature-draw/)

在线签名工具，鼠标 / 触屏画布手写签名，可调画笔颜色与粗细，撤销重画，导出透明背景 PNG 用于电子合同。

关键词：在线签名、电子签名、画布签名、signature、电子合同

常见问题：

- **在线签名是免费的吗？** 是的。在线签名完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。在线签名属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。在线签名使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [像素画编辑器](https://xtechtools.com/pixel-art-editor/)

在线像素画编辑器：可选 16×16 / 24×24 / 32×32 / 64×64 网格，鼠标左键画、右键擦，支持拖动连续绘制；自带 20 色经典调色板与最近使用记忆；导出 PNG 时可勾选 8× 放大保持像素清晰，作品自动保存到 localStorage。

关键词：像素画、pixel art、像素编辑器、8bit 头像、点阵画、像素 PNG

常见问题：

- **像素画编辑器是免费的吗？** 是的。像素画编辑器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。像素画编辑器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。像素画编辑器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Emoji 马赛克生成器](https://xtechtools.com/emoji-mosaic/)

Emoji 马赛克生成器：上传图片（最大 2 MB），选择笑脸 / 动物 / 食物 / 爱心 / 灰度 5 种主题与 20-120 列密度；按亮度采样像素并映射到对应 emoji，渲染到 Canvas 可下载 PNG，也可复制纯文本 emoji 艺术，全部本地处理不上传。

关键词：emoji 马赛克、emoji art、图片转 emoji、ASCII 风、emoji 拼贴、image to emoji

常见问题：

- **Emoji 马赛克生成器是免费的吗？** 是的。Emoji 马赛克生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Emoji 马赛克生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Emoji 马赛克生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [颜色名查找](https://xtechtools.com/color-name-finder/)

颜色名查找工具：粘贴 HEX、RGB 或 HSL，按 RGB 欧氏距离从 147 个 CSS 命名颜色、Material Design 调色板、Tailwind CSS 调色板各找出最近 5 个匹配；附带色块预览、距离评分、一键复制颜色名 / HEX，所有计算在浏览器本地完成。

关键词：颜色名、CSS 颜色、最近颜色、Material 调色板、Tailwind 调色板、HEX 转颜色名、配色

常见问题：

- **颜色名查找是免费的吗？** 是的。颜色名查找完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。颜色名查找属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。颜色名查找使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [颜色格式转换](https://xtechtools.com/color-converter/)

现代色彩空间转换工具，输入任意一种格式即可同步刷新其他六种，含取色器与大色块预览，支持 CSS Color Level 4 推荐的 OKLCH。

关键词：颜色转换、HEX RGB HSL、OKLCH、LAB LCH、HWB、色彩空间转换

常见问题：

- **颜色格式转换是免费的吗？** 是的。颜色格式转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。颜色格式转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。颜色格式转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSS 渐变生成器](https://xtechtools.com/gradient-generator/)

通过拖动色阶滑块和角度调节，实时预览 linear-gradient / radial-gradient / conic-gradient 效果，一键复制 CSS 或 Tailwind class，并提供 50+ 精选预设渐变。

关键词：CSS 渐变、渐变生成器、linear-gradient、radial-gradient、conic-gradient、渐变在线工具、Tailwind 渐变

常见问题：

- **CSS 渐变生成器是免费的吗？** 是的。CSS 渐变生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSS 渐变生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSS 渐变生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

## 金融换算

汇率、个税、贷款等金融计算器

### [汇率转换](https://xtechtools.com/currency-converter/)

覆盖主流国际货币的汇率换算工具，提供 USD/CNY、EUR/USD、JPY/CNY 等热门货币对实时数据与历史趋势。

关键词：汇率、美元兑人民币、欧元汇率、日元换算、货币转换

常见问题：

- **汇率数据多久更新一次？** 使用每日更新的参考汇率，覆盖 150+ 货币对。重要决策（如大额结汇）请以银行实时牌价为准。
- **支持哪些货币对？** 覆盖 USD、EUR、JPY、GBP、HKD、CNY 等主流货币以及 150+ 货币对，包含历史趋势与长尾换算页。
- **可以离线使用吗？** 首次加载后缓存的汇率可以离线换算，但不会获取最新数据。需要最新汇率请联网刷新。
- **汇率从哪里来？** 来源是公开金融数据源的中间汇率（mid-market rate），未包含银行/支付平台的点差。

### [个税计算器](https://xtechtools.com/tax-calculator/)

按 2026 年最新累计预扣法计算的个人所得税工具，支持五险一金扣除、专项附加扣除、年终奖单独计税。

关键词：个税计算、工资计算、五险一金、年终奖税、累计预扣

常见问题：

- **使用的是哪一年的个税规则？** 依据 2026 年累计预扣预缴方法，包含基本减除费用 60000 元/年、五项专项附加扣除以及 7 级累进税率。
- **支持哪些专项附加扣除？** 子女教育、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人、3 岁以下婴幼儿照护，全部支持。
- **年终奖怎么算？** 工具同时支持「单独计税」与「并入综合所得」两种口径，自动对比给出最优方案。
- **结果会上传吗？** 不会。所有薪资数据仅在浏览器内计算，不发请求、不存云端、不留日志。

### [单位换算](https://xtechtools.com/unit/)

常用单位换算工具：长度（米/英尺/英里）、重量（千克/磅）、温度（°C/°F/K）、面积、体积、数据大小（KB/MB/GiB）。

关键词：单位换算、长度换算、英尺转米、摄氏度华氏度、数据单位

常见问题：

- **单位换算是免费的吗？** 是的。单位换算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。单位换算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。单位换算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [房贷计算器](https://xtechtools.com/mortgage/)

中国房贷计算工具，支持商业贷款、公积金、组合贷款，等额本息与等额本金对比，提供完整还款计划表与利息总额计算。

关键词：房贷计算器、房贷计算、等额本息、等额本金、公积金贷款、组合贷款

常见问题：

- **房贷计算器是免费的吗？** 是的。房贷计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。房贷计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。房贷计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [复利计算器](https://xtechtools.com/compound/)

复利计算工具，支持初始本金 + 定期追加 + 年化利率 + 期限计算最终价值，含增长曲线图与年度明细。

关键词：复利计算、复利公式、基金定投、理财计算、收益预测

常见问题：

- **复利计算器是免费的吗？** 是的。复利计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。复利计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。复利计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [BMI 体质指数](https://xtechtools.com/bmi/)

BMI 体质指数计算（中国标准分级），同时计算理想体重区间与 BMR 基础代谢率（Mifflin-St Jeor 公式）。

关键词：BMI 计算、体质指数、理想体重、基础代谢、BMR

常见问题：

- **BMI 体质指数是免费的吗？** 是的。BMI 体质指数完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。BMI 体质指数属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。BMI 体质指数使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [数字转中文](https://xtechtools.com/number-cn/)

数字与中文互转工具，支持简体中文（一二三）与大写金额（壹贰叁），财务发票常用，自动处理万亿单位与小数角分。

关键词：数字转中文、大写金额、人民币大写、壹贰叁、财务大写

常见问题：

- **数字转中文是免费的吗？** 是的。数字转中文完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。数字转中文属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。数字转中文使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [中国个税计算器 2026](https://xtechtools.com/personal-tax-cn-2026/)

2026 中国个人所得税在线计算：月度 / 年度全年综合所得，含子女教育 / 继续教育 / 大病医疗 / 住房贷款 / 住房租金 / 赡养老人 6 项专项附加扣除，工资奖金累计预扣 / 单独计税切换。

关键词：个税、个税计算、专项附加扣除、累计预扣、年终奖税

常见问题：

- **依据哪一年的政策？** 2026 年累计预扣预缴方法，含基本减除费用 60000 元/年（5000 元/月）与七项专项附加扣除。
- **专项附加扣除有哪些？** 子女教育、3 岁以下婴幼儿照护、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人。
- **年终奖怎么处理？** 工具同时计算「单独计税」与「并入综合所得」两种方案并对比，给出最优选择。
- **会保存我的工资数据吗？** 不会。所有计算在浏览器本地完成，刷新页面即清空，绝不发送到服务器。

### [多币种汇率换算](https://xtechtools.com/unit-currency-multi/)

多币种快速汇率换算：50 种主要货币 (2025-Q4 静态快照) 全网格互换，按地区分组，输入任一即时显示其他 49 种结果。实时汇率请用 /currency-converter/。

关键词：多币种汇率、50 种货币、离线汇率、快速换算、货币

常见问题：

- **多币种汇率换算是免费的吗？** 是的。多币种汇率换算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。多币种汇率换算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。多币种汇率换算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [中国增值税计算器](https://xtechtools.com/vat-calculator-cn/)

中国增值税在线计算器：输入金额选择税率（0% / 3% / 6% / 9% / 13%），含税与不含税双向换算，显示价税合计 / 不含税价 / 税额，附一般纳税人与小规模纳税人区别说明。

关键词：增值税、VAT 计算、13% 税率、含税不含税、一般纳税人

常见问题：

- **一般纳税人和小规模怎么区分？** 年应税销售额 500 万以上为一般纳税人（13%/9%/6% 三档税率，可抵扣进项）；以下为小规模（3%，2027 年优惠延续 1%）。
- **支持哪些税率？** 支持 13%（销售货物）、9%（建筑、运输、不动产）、6%（现代服务）、3%/1%（小规模）等主流税率。
- **价税分离怎么算？** 不含税价 = 含税价 ÷ (1 + 税率)；增值税 = 含税价 - 不含税价。工具支持双向输入。

### [数字转中文大写](https://xtechtools.com/number-to-chinese/)

数字转中文工具：输入阿拉伯数字（整数或小数），输出法律 / 财务用大写（壹贰叁 ... 圆角分整）与中文小写（一二三），支持负数与至多 12 位整数，常用于发票 / 合同 / 票据。

关键词：数字转中文、中文大写、人民币大写、财务大写、票据

常见问题：

- **数字转中文大写是免费的吗？** 是的。数字转中文大写完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。数字转中文大写属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。数字转中文大写使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [分数 / 小数互转](https://xtechtools.com/fraction-decimal/)

分数与小数双向转换：输入 3/4 即得 0.75，输入 0.6 自动化简为 3/5，支持带分数 (1 1/2 ↔ 1.5)、循环小数（1/3 → 0.(3)），辗转相除约分。

关键词：分数转小数、小数转分数、约分、fraction、循环小数

常见问题：

- **分数 / 小数互转是免费的吗？** 是的。分数 / 小数互转完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。分数 / 小数互转属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。分数 / 小数互转使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [复利计算器](https://xtechtools.com/compound-interest/)

复利计算工具，输入本金、年利率、年限、月定投、复利频率，输出终值、总投入、总利息与增长曲线，含通胀调整开关与逐年表格，了解长期投资复利效应。

关键词：复利、compound interest、终值、定投、复利计算

常见问题：

- **复利计算器是免费的吗？** 是的。复利计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。复利计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。复利计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [房贷计算器](https://xtechtools.com/mortgage-calculator/)

房贷月供与利息计算器，输入房款、首付、年限、利率，对比等额本息与等额本金两种方式，输出月供、总利息、总还款，附逐月摊还表与本金/利息比例饼图，含中国 LPR 参考。

关键词：房贷、按揭、月供、等额本息、等额本金、LPR

常见问题：

- **等额本息和等额本金哪个划算？** 等额本息月供固定，前期利息占比高、总利息更高；等额本金月供递减，总利息少 5%–10%，但前期月供压力大。
- **提前还款影响大吗？** 影响很大。等额本息提前 3–5 年内还款，可省下大部分利息；超过总年限一半后，提前还款收益明显下降。
- **组合贷怎么算？** 工具支持商贷 + 公积金组合贷，分别按各自利率与期限计算月供，再合并展示总利息与总月供曲线。
- **LPR 浮动会改变结果吗？** 会。计算器允许设定加点与重定价日，按当前 LPR 估算未来月供变化区间，仅供参考。

### [世界时钟](https://xtechtools.com/world-clock/)

世界时钟工具，实时显示主要城市时区时间，支持自定义会议时间在各时区的对应时刻。

关键词：世界时钟、时区转换、北京时间、美东时间、会议时间

常见问题：

- **世界时钟是免费的吗？** 是的。世界时钟完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。世界时钟属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。世界时钟使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [年龄计算器](https://xtechtools.com/age/)

出生日期年龄计算工具，精确到年/月/日/天/小时，并提供两日期差值、生日倒计时、活了多少天等。

关键词：年龄计算、日期差、活了多少天、倒计时、生日计算

常见问题：

- **年龄计算器是免费的吗？** 是的。年龄计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。年龄计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。年龄计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [折扣计算](https://xtechtools.com/discount/)

折扣计算工具：原价 + 折扣率/直减 → 实付价 + 节省金额，支持多重叠加（先打折后券、先券后折）与反向倒推折扣。

关键词：折扣计算、打折计算器、满减、优惠券、原价计算

常见问题：

- **折扣计算是免费的吗？** 是的。折扣计算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。折扣计算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。折扣计算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [随机选择器](https://xtechtools.com/random/)

随机决策工具集：抽签（从列表随机选）、抛硬币、摇骰子、生成随机数与随机字符串，全部使用 crypto.getRandomValues 安全随机。

关键词：抽签、抛硬币、摇骰子、随机数、随机选择

常见问题：

- **随机选择器是免费的吗？** 是的。随机选择器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。随机选择器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。随机选择器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [番茄钟 / 计时器](https://xtechtools.com/pomodoro/)

番茄工作法计时器：25 分钟工作 + 5 分钟休息循环，可自定义时长，支持秒表模式与多组循环计数。

关键词：番茄钟、番茄工作法、在线计时器、秒表、Pomodoro

常见问题：

- **番茄钟 / 计时器是免费的吗？** 是的。番茄钟 / 计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。番茄钟 / 计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。番茄钟 / 计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [彩票号码生成](https://xtechtools.com/lottery/)

中国彩票号码随机生成工具，支持双色球、大乐透、七乐彩等玩法，使用密码学安全随机数（crypto.getRandomValues）。

关键词：彩票号码、双色球选号、大乐透选号、随机选号、彩票生成

常见问题：

- **彩票号码生成是免费的吗？** 是的。彩票号码生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。彩票号码生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。彩票号码生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [中国节假日](https://xtechtools.com/cn-holidays/)

中国法定节假日查询，2024-2026 为国务院官方数据（含调休补班），其他年份按公历 + 农历推算估算，覆盖元旦、春节、清明、劳动节、端午、中秋、国庆，含距下个假期倒计时。

关键词：节假日、放假安排、法定假日、调休、春节假期

常见问题：

- **中国节假日是免费的吗？** 是的。中国节假日完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。中国节假日属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。中国节假日使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [工作日计算](https://xtechtools.com/workdays/)

工作日计算工具，输入起止日期自动统计期间工作日、周末日、法定节假日、调休工作日数量，HR 与项目排期常用。

关键词：工作日计算、周末天数、节假日天数、工作日间隔、business days

常见问题：

- **工作日计算是免费的吗？** 是的。工作日计算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。工作日计算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。工作日计算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [阴阳历转换](https://xtechtools.com/lunar/)

公历与农历互转工具，显示生肖、天干地支、二十四节气，老黄历常用。基于 lunar-javascript 库本地计算。

关键词：农历、公历转农历、阴阳历、黄历、生肖、节气

常见问题：

- **阴阳历转换是免费的吗？** 是的。阴阳历转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。阴阳历转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。阴阳历转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [周数查询](https://xtechtools.com/week-num/)

日期 → ISO 周数（ISO 8601 标准）查询，显示当前周序号、周内第几天、当周周一日期，年度周历视图。

关键词：周数、第几周、ISO 周、week number、周历

常见问题：

- **周数查询是免费的吗？** 是的。周数查询完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。周数查询属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。周数查询使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [在线计数器](https://xtechtools.com/counter/)

在线计数器 / 计数板工具，可同时管理多个独立计数器，自定义步长与名称，数据保存在浏览器 localStorage。

关键词：计数器、tally counter、在线计数、计数板

常见问题：

- **在线计数器是免费的吗？** 是的。在线计数器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。在线计数器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。在线计数器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [科学计算器](https://xtechtools.com/sci-calc/)

功能完整的科学计算器：表达式求值、三角函数（含弧度/角度）、对数、指数、阶乘、π/e 常数，含计算历史。

关键词：科学计算器、在线计算器、calculator、表达式求值

常见问题：

- **科学计算器是免费的吗？** 是的。科学计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。科学计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。科学计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [小费 / AA 计算](https://xtechtools.com/tip/)

小费与 AA 分账计算工具：账单 + 小费率 + 人数 → 每人应付，可切换税前/税后基数，海外旅游餐厅常用。

关键词：小费计算、AA 分账、服务费、tip calculator

常见问题：

- **小费 / AA 计算是免费的吗？** 是的。小费 / AA 计算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。小费 / AA 计算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。小费 / AA 计算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [倒数日](https://xtechtools.com/countdown-days/)

倒数日 / 纪念日工具，添加重要日期实时倒数到天，支持生日、纪念日、考试、项目 deadline，本地保存。

关键词：倒数日、纪念日、生日倒计时、deadline 倒计时、日子计数

常见问题：

- **倒数日是免费的吗？** 是的。倒数日完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。倒数日属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。倒数日使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [公积金贷款额度](https://xtechtools.com/housing-fund/)

住房公积金贷款额度计算器，按缴存基数、缴存年限、当地最高额度算可贷金额，附月供与利息总额测算。

关键词：公积金贷款、公积金额度、住房公积金、公积金月供、组合贷

常见问题：

- **公积金贷款额度是免费的吗？** 是的。公积金贷款额度完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。公积金贷款额度属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。公积金贷款额度使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [退休金计算器](https://xtechtools.com/retirement/)

退休金计算器，按当前年龄、退休目标、月存金额、年化收益、通胀假设，计算退休时账户余额与实际购买力，4% 提取规则解析。

关键词：退休金、退休规划、复利计算、4%规则、retirement

常见问题：

- **退休金计算器是免费的吗？** 是的。退休金计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。退休金计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。退休金计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [小费计算器](https://xtechtools.com/tip-calculator/)

小费计算器：输入账单金额、小费比例（10/15/18/20% 快捷或自定义滑块）、人数，实时计算小费金额、总金额与每人付款，支持向上取整与 ¥/$/€ 切换，纯本地存储。

关键词：小费计算器、tip calculator、AA 分账、账单分账、服务费

常见问题：

- **小费计算器是免费的吗？** 是的。小费计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。小费计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。小费计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [BMI 计算器](https://xtechtools.com/bmi-calculator/)

BMI 体质指数计算工具：输入身高（cm/in）、体重（kg/lb）、年龄、性别，实时计算 BMI 并按中国与 WHO 双标准给出分级（偏瘦/正常/超重/肥胖）色卡对照，支持英制公制切换。

关键词：BMI 计算器、体质指数、中国 BMI 标准、WHO BMI、英制公制

常见问题：

- **BMI 标准是什么？** WHO 标准：< 18.5 偏瘦、18.5–24.9 正常、25–29.9 超重、≥ 30 肥胖。中国标准对超重起点更严格（≥ 24）。
- **运动员能用 BMI 吗？** 不太适合。BMI 不区分肌肉与脂肪，肌肉发达者容易被误判为超重。建议配合体脂率、腰围等综合判断。
- **儿童青少年适用吗？** 不直接适用。儿童需用按年龄/性别的 BMI 百分位曲线（CDC / WHO 儿童标准），建议参考儿科医生建议。

### [年龄计算器](https://xtechtools.com/age-calculator/)

年龄计算器：选择出生日期，输出精确到年/月/日的年龄、累计天数与小时数、距下次生日的天数，并自动推导中国十二生肖与西方星座，纯本地保存。

关键词：年龄计算器、生日计算、总天数、生肖、星座、age calculator

常见问题：

- **支持农历生日吗？** 支持。可在「生肖」或「农历」相关工具切换公历/农历，计算虚岁、周岁、生肖。
- **怎么算精确到天？** 工具按生日到今天的实际天数计算，扣除月份长度差异，比简单减法更准确。也展示已度过的总天数 / 周 / 小时。
- **隐私会泄漏吗？** 不会。生日数据仅在浏览器本地参与计算，不上传任何服务器，刷新页面即清空。

### [开销记录](https://xtechtools.com/expense-tracker/)

极简记账工具，快速录入金额与"食 / 行 / 购 / 娱 / 居 / 其他"分类，自动统计今日、本周、本月支出，分类饼图直观显示消费结构，支持日期范围筛选、备注搜索与 CSV 导出。

关键词：记账、记账工具、开销记录、消费记录、expense tracker、理财记账

常见问题：

- **开销记录是免费的吗？** 是的。开销记录完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。开销记录属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。开销记录使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [静态汇率快速换算](https://xtechtools.com/unit-converter-currency-static/)

基于 2025-01 快照内置 30 种主要货币汇率（USD/EUR/CNY/JPY 等），输入任一货币金额立即看到其余 29 种换算结果，无网络请求秒开。需要实时汇率请使用主版汇率换算页 /currency-converter/。

关键词：汇率换算、静态汇率、离线汇率、货币换算、30 种货币、快速汇率

常见问题：

- **静态汇率快速换算是免费的吗？** 是的。静态汇率快速换算完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。静态汇率快速换算属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。静态汇率快速换算使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

## 文档生成

简历、PDF、Markdown 等文档工具

### [在线简历生成器](https://xtechtools.com/online-resume/)

面向中文求职者的简历生成器，结构化板块编辑，支持富文本、多份简历管理、JSON 导入导出，纯本地存储。

关键词：在线简历、简历模板、简历生成、简历导出 PDF、免费简历

常见问题：

- **简历数据存在哪里？** 完全存于你的浏览器 localStorage，不上传任何服务器。可随时导出 JSON 备份或在其他设备导入。
- **导出的 PDF 有水印吗？** 没有水印、没有页码限制、不收费，导出的 PDF/DOCX/PNG 都是干净的原始文件。
- **能管理多份简历吗？** 可以。在简历切换器中创建多份简历（如「校招版」「社招版」「英文版」），各自独立保存。
- **支持英文简历吗？** 支持。模板兼容中英文混排，字体自动回退到适配 Latin 与 CJK 的系统字体。

### [Markdown 编辑器](https://xtechtools.com/markdown/)

在线 Markdown 编辑器，实时双栏预览、转 HTML、HTML → Markdown 反向转换，支持代码高亮与复制下载。

关键词：Markdown 在线、Markdown 转 HTML、Markdown 编辑器、md 预览

常见问题：

- **Markdown 实时预览吗？** 是的。左侧编辑、右侧实时渲染，支持 GFM 扩展（任务列表、表格、删除线、代码块语言高亮）。
- **能导出 HTML 吗？** 可以。一键复制纯 HTML 或下载为 .html 文件。也支持反向操作——HTML 转 Markdown。
- **支持数学公式吗？** 支持 KaTeX 行内 `$...$` 与块级 `$$...$$` 渲染，常见物理/数学论文符号都能正确显示。
- **内容会保存到哪里？** 草稿存储在浏览器 localStorage，刷新不丢；如需跨设备同步请用「下载」按钮导出 .md 文件。

### [跑步配速计算器](https://xtechtools.com/pace-calculator/)

跑步配速计算器：输入距离 + 时间得配速，或输入距离 + 配速得时间，含 5km / 10km / 半马 / 全马 一键预设与配速参考表。

关键词：跑步配速、pace calculator、马拉松、5km 配速、半马时间

常见问题：

- **跑步配速计算器是免费的吗？** 是的。跑步配速计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。跑步配速计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。跑步配速计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [浏览器书签提取](https://xtechtools.com/bookmark-extract/)

浏览器书签提取工具，上传 Chrome / Firefox / Safari 书签 HTML 导出文件或粘贴 HTML，解析为带文件夹层级的树状视图与扁平列表，支持搜索、筛选、导出 JSON / CSV / URL 列表。

关键词：书签提取、bookmarks、Chrome 书签、Firefox 书签、书签导出

常见问题：

- **浏览器书签提取是免费的吗？** 是的。浏览器书签提取完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。浏览器书签提取属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。浏览器书签提取使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [番茄工作法计时器](https://xtechtools.com/pomodoro-tool/)

番茄工作法在线计时器，默认 25 分钟工作 + 5 分钟休息 + 4 番茄后 15 分钟长休，可自定义时长，到点触发音效与浏览器通知，记录今日番茄数与连胜。

关键词：番茄工作法、pomodoro、番茄钟、专注计时、工作休息

常见问题：

- **番茄工作法计时器是免费的吗？** 是的。番茄工作法计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。番茄工作法计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。番茄工作法计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Markdown 表格生成](https://xtechtools.com/md-table/)

Markdown 表格可视化生成器，所见即所得编辑表格，自动生成对齐、表头分隔，支持行列增删与对齐方式切换。

关键词：Markdown 表格、md 表格、表格生成器、Markdown 语法

常见问题：

- **Markdown 表格生成是免费的吗？** 是的。Markdown 表格生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Markdown 表格生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Markdown 表格生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSV 在线查看](https://xtechtools.com/csv-viewer/)

CSV / TSV 在线查看工具，粘贴或上传文件，自动识别分隔符，渲染为可排序、筛选的表格视图，本地处理不上传。

关键词：CSV 查看、CSV 在线、CSV 表格、TSV 查看

常见问题：

- **CSV 在线查看是免费的吗？** 是的。CSV 在线查看完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CSV 在线查看属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CSV 在线查看使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片转 PDF](https://xtechtools.com/image-pdf/)

图片合并 PDF 工具，拖入多张图片自动按顺序合并，支持 A4/Letter 纸张、纵横向、边距控制，本地生成不上传。

关键词：图片转 PDF、JPG 转 PDF、PNG 转 PDF、图片合并 PDF

常见问题：

- **图片转 PDF是免费的吗？** 是的。图片转 PDF完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片转 PDF属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片转 PDF使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [PDF 合并](https://xtechtools.com/pdf-merge/)

PDF 合并工具，把多个 PDF 文件按顺序合并成一份。所有处理在浏览器内通过 pdf-lib 完成，文件不上传服务器。支持任意页数，自由调整合并顺序。

关键词：PDF 合并、PDF 拼接、合并 PDF、PDF 工具、merge PDF

常见问题：

- **PDF 合并是免费的吗？** 是的。PDF 合并完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。PDF 合并属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。PDF 合并使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [PDF 拆分](https://xtechtools.com/pdf-split/)

PDF 拆分工具，按指定页码或页码范围把单个 PDF 拆成多份，纯本地处理。支持每页一份、自定义范围（1-3,5,7-9）等模式。

关键词：PDF 拆分、拆分 PDF、PDF 分页、split PDF、PDF 提取

常见问题：

- **PDF 拆分是免费的吗？** 是的。PDF 拆分完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。PDF 拆分属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。PDF 拆分使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [PDF 旋转](https://xtechtools.com/pdf-rotate/)

PDF 页面旋转工具，把扫描歪了的 PDF 文档矫正过来。支持全部页面或指定页码旋转 90/180/270 度，浏览器内本地处理。

关键词：PDF 旋转、旋转 PDF、PDF 横竖屏切换、rotate PDF

常见问题：

- **PDF 旋转是免费的吗？** 是的。PDF 旋转完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。PDF 旋转属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。PDF 旋转使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [PDF 加水印](https://xtechtools.com/pdf-watermark/)

PDF 文字水印工具，在每一页添加自定义文字水印（如"机密"、"草稿"），可调字号、颜色、透明度、旋转角度。纯本地处理。

关键词：PDF 水印、PDF 加水印、文字水印、PDF 机密、watermark

常见问题：

- **PDF 加水印是免费的吗？** 是的。PDF 加水印完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。PDF 加水印属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。PDF 加水印使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [PDF 页面提取](https://xtechtools.com/pdf-page-extract/)

PDF 页面提取工具，按页码或页码范围（如 1-5,8,10-12）从 PDF 中抽取选定页面合成新文件。支持页面缩略图勾选、奇偶页快捷选择，浏览器内基于 pdf-lib 完成，文件不上传。

关键词：PDF 页面提取、PDF 抽页、PDF 提取页面、extract PDF pages、PDF 选页

常见问题：

- **PDF 页面提取是免费的吗？** 是的。PDF 页面提取完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。PDF 页面提取属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。PDF 页面提取使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Word 转 HTML](https://xtechtools.com/docx-to-html/)

Word 文档（.docx）转 HTML 工具。在浏览器内直接解压 .docx ZIP 包并解析其中的 document.xml，提取段落、标题、加粗、斜体、列表、超链接、表格等基础元素，输出干净的 HTML 与纯文本。无需上传服务器，文件不外泄。

关键词：docx 转 HTML、Word 转 HTML、docx 解析、Word 转网页、docx to html

常见问题：

- **Word 转 HTML是免费的吗？** 是的。Word 转 HTML完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Word 转 HTML属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Word 转 HTML使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [商务信函模板](https://xtechtools.com/document-template-letter/)

通用商务信函模板工具，按发件人、收件人、日期、主题、正文、落款等字段填表生成排版规范的信件。支持中文、英文与中英对照三种语言模式，可调用浏览器原生打印对话框另存为 PDF，也可使用 jsPDF 直接下载 PDF / HTML。

关键词：商务信函、信函模板、英文信函、正式信件模板、business letter template

常见问题：

- **商务信函模板是免费的吗？** 是的。商务信函模板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。商务信函模板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。商务信函模板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [一周计划器](https://xtechtools.com/weekly-planner/)

在线一周计划工具，周一到周日 × 早 6 点至晚 23 点的网格视图，单击格子原地输入任务，按"工作 / 个人 / 运动 / 学习 / 用餐 / 其他"分类着色，可拖拽调整时段，支持 PNG 导出与浏览器打印，所有计划仅保存在本地浏览器。

关键词：一周计划、周计划表、周历、weekly planner、日程安排、时间块

常见问题：

- **一周计划器是免费的吗？** 是的。一周计划器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。一周计划器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。一周计划器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [购物清单](https://xtechtools.com/grocery-list/)

在线购物清单工具，按"蔬菜 / 水果 / 肉蛋 / 主食 / 调料 / 日用品 / 饮料 / 零食"自动分类，支持常用商品快捷添加、单价数量估算总价、勾选划线置底、分享到微信/WhatsApp 与导出文本，纯本地存储。

关键词：购物清单、买菜清单、grocery list、采购清单、购物列表、清单工具

常见问题：

- **购物清单是免费的吗？** 是的。购物清单完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。购物清单属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。购物清单使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [阅读记录](https://xtechtools.com/reading-tracker/)

在线读书追踪工具，记录书名、作者、总页数与当前进度，按"想读 / 在读 / 已读"分类，自动统计本年已读本数、总页数、平均阅读时间，支持 JSON/CSV 双向导入导出备份。

关键词：阅读记录、读书记录、阅读追踪、读书清单、reading tracker、书单

常见问题：

- **阅读记录是免费的吗？** 是的。阅读记录完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。阅读记录属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。阅读记录使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [健身记录](https://xtechtools.com/workout-tracker/)

在线健身打卡工具，记录每天训练动作、组数、次数、重量，自动计算训练量并展示年度训练热力图、个人记录 (PR)、最近 28 天训练量柱状图，本地浏览器存储不上传。

关键词：健身记录、训练日志、健身打卡、workout tracker、训练量、撸铁记录

常见问题：

- **健身记录是免费的吗？** 是的。健身记录完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。健身记录属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。健身记录使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HIIT 间歇训练计时器](https://xtechtools.com/hiit-timer/)

高强度间歇训练（HIIT）专用计时器，自定义工作时间、休息时间与循环轮数，自动在工作 / 休息阶段切换并发出 Web Audio 蜂鸣提示，最后 3 秒倒数音，支持暂停 / 继续 / 重置与 30/15、45/15、60/30 等常用快捷预设，参数本地保存。

关键词：HIIT 计时器、间歇训练、高强度间歇、健身计时、hiit timer、工作休息循环

常见问题：

- **HIIT 间歇训练计时器是免费的吗？** 是的。HIIT 间歇训练计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HIIT 间歇训练计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HIIT 间歇训练计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Tabata 计时器](https://xtechtools.com/tabata-timer/)

日本田畑泉博士提出的高强度间歇协议计时器，标准节奏锁定 20 秒高强度 + 10 秒休息 × 8 组共 4 分钟，每个阶段切换发出蜂鸣提示，最后 3 秒倒数音，支持自定义组数与准备倒数。

关键词：Tabata 计时器、田畑训练、20 10 计时、4 分钟训练、tabata timer、燃脂训练

常见问题：

- **Tabata 计时器是免费的吗？** 是的。Tabata 计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Tabata 计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Tabata 计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [EMOM 每分钟一组计时器](https://xtechtools.com/emom-timer/)

EMOM（Every Minute On the Minute）训练计时器，每分钟开始时发出钟声 + 高亮闪烁提醒执行规定动作（如 10 个波比跳、5 个引体向上），剩余时间休息，支持自定义任务描述、每组分钟数（E1/E2/E3MOM）与组数。

关键词：EMOM 计时器、每分钟训练、CrossFit、emom timer、波比跳计时、引体向上训练

常见问题：

- **EMOM 每分钟一组计时器是免费的吗？** 是的。EMOM 每分钟一组计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。EMOM 每分钟一组计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。EMOM 每分钟一组计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [AMRAP 限时计圈计时器](https://xtechtools.com/amrap-timer/)

AMRAP（As Many Rounds As Possible）训练计时器，预设 10 / 15 / 20 分钟或自定义时长，倒计时期间每完成一圈点击 +1 计数，剩余 3 分钟 / 1 分钟 / 30 秒 / 10 秒自动蜂鸣提醒，结束自动汇总完成圈数与总时长。

关键词：AMRAP 计时器、限时训练、固定时长、圈数计数、amrap timer、CrossFit

常见问题：

- **AMRAP 限时计圈计时器是免费的吗？** 是的。AMRAP 限时计圈计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。AMRAP 限时计圈计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。AMRAP 限时计圈计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [波比跳计数器](https://xtechtools.com/burpee-counter/)

波比跳（Burpee）专用计数 + 节奏教练，点击大块按钮或按空格键累加，自动统计总次数、用时、平均每分钟次数与最快 60 秒滚动窗口，可选开启每 6 秒（10 次/分钟）节奏蜂鸣提示，结束保存最近 30 次训练历史。

关键词：波比跳计数、burpee 计数、波比跳节奏、burpee counter、健身计数器、训练节奏

常见问题：

- **波比跳计数器是免费的吗？** 是的。波比跳计数器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。波比跳计数器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。波比跳计数器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

## 开发者工具

JSON、Base64、正则、时间戳等编码工具

### [JSON 格式化](https://xtechtools.com/json-formatter/)

开发者常用的 JSON 工具，提供美化、压缩、错误定位、树形展开、转 YAML/CSV，所有处理在浏览器完成。

关键词：JSON 格式化、JSON 在线、JSON 校验、JSON 美化、JSON 压缩

常见问题：

- **JSON 格式化会改变数据本身吗？** 不会。格式化只增删空白字符（空格、换行、缩进），数据的键、值、类型完全不变。
- **能处理多大的 JSON？** 理论上仅受浏览器内存限制，实测几十 MB 流畅。超大文件可考虑使用 jq 等流式工具。
- **工具会上传我的数据吗？** 不会。所有解析和格式化都在浏览器本地用 JavaScript 的 JSON.parse 完成，可放心粘贴生产数据。
- **支持 JSON5 / JSONC（带注释）吗？** 本工具仅支持标准 JSON。如需 JSON5 可用 json5.parse；JSONC（如 VS Code settings）需手动去注释行。
- **校验失败时怎么定位错误？** 工具会高亮报错行列号，常见错误包括尾随逗号、单引号字符串、未引号的键名、未转义的换行/反斜杠。

### [Base64 编码解码](https://xtechtools.com/base64/)

在线 Base64 编码解码工具，支持文本输入与文件转换，URL Safe 变体，UTF-8 与 GBK 编码切换。

关键词：Base64、Base64 编码、Base64 解码、在线 Base64、URL Safe Base64

常见问题：

- **Base64 编码后体积变大吗？** 是的。Base64 把 3 字节编为 4 字符，体积约增长 33%。仅适合传文本通道（如 JSON、URL）。
- **支持中文/二进制吗？** 中文先按 UTF-8 编码再 Base64；二进制（如图片）建议用「图片转 Base64」工具直接处理。
- **Base64 是加密吗？** 不是。Base64 是可逆编码，任何人都能解码。需要保密请用 AES、RSA 等真正的加密算法。
- **URL Safe Base64 是什么？** 把标准 Base64 里的 + / 替换成 - _，避免在 URL/文件名中被转义。本工具支持切换。

### [时间戳转换](https://xtechtools.com/timestamp/)

在线时间戳转换工具，秒级与毫秒级 Unix 时间戳与日期时间互转，支持多时区、批量转换。

关键词：时间戳、Unix 时间戳、时间戳转换、日期转时间戳、时区转换

常见问题：

- **Unix 时间戳是什么？** 从 1970-01-01 00:00:00 UTC 起经过的秒数（或毫秒数），是程序内部最常见的时间表示。
- **秒级和毫秒级怎么区分？** 一般 10 位是秒、13 位是毫秒。本工具会自动识别，也可手动切换单位。
- **时区怎么处理？** 展示时使用浏览器本地时区，同时提供 UTC 与 ISO 8601 字符串供复制使用。
- **会有 2038 年问题吗？** 32 位 int 在 2038-01-19 后溢出。本工具用 JavaScript Number（53 位安全整数），可处理远超 2038 的时间戳。

### [正则表达式测试](https://xtechtools.com/regex/)

实时测试正则表达式，匹配高亮，支持替换模式、所有标志位、常用模式库（邮箱、手机号、URL 等）。

关键词：正则表达式、正则测试、正则在线、regex tester、正则匹配

常见问题：

- **支持哪种正则方言？** 使用 JavaScript 原生 RegExp，与 ECMAScript 2018+ 一致，支持命名捕获、零宽断言、Unicode 属性等。
- **与 PCRE / Python 正则有差别吗？** 有。例如 JS 不支持递归/原子组，部分 Unicode 名称需配合 u 标志。详见正则速查表。
- **怎么测试性能/防回溯？** 工具会在毫秒级内显示匹配结果。如果输入大文本时卡顿，多半是「灾难性回溯」，建议改用占有量词或重写表达式。
- **能保存我的正则吗？** 可以。最近使用的表达式存于浏览器 localStorage，不会同步到服务器。

### [URL 编码解码](https://xtechtools.com/url-encode/)

在线 URL 编码与解码工具，支持 encodeURIComponent 与 encodeURI 两种模式，提供查询参数 ↔ JSON 双向转换。

关键词：URL 编码、URL 解码、urlencode、urldecode、查询参数解析

常见问题：

- **URL 编码解码是免费的吗？** 是的。URL 编码解码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。URL 编码解码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。URL 编码解码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [密码生成 & 哈希](https://xtechtools.com/password/)

生成强随机密码（长度、字符集、排除易混字符），支持 MD5、SHA-1、SHA-256、SHA-512 文本哈希计算。

关键词：密码生成、强密码、MD5 在线、SHA-256、哈希计算

常见问题：

- **密码会被记录吗？** 不会。所有密码在浏览器本地通过 crypto.getRandomValues 生成，不发任何请求，刷新页面即清空。
- **密码强度怎么算？** 基于熵值（位长度）评估：12 位混合大小写+数字+符号 ≈ 78 bit，足够抵御离线破解。建议至少 16 位。
- **支持自定义字符集吗？** 支持。可自由组合大小写、数字、符号，也可排除易混淆字符（0/O/l/1）以适应人工抄录场景。
- **能批量生成吗？** 可以一次生成多个，常用于批量创建账号或测试数据。

### [JWT 解码](https://xtechtools.com/jwt/)

JSON Web Token 在线解析工具，分别显示 header、payload、signature，自动识别 exp/iat/nbf 等时间字段并提示过期状态。完全本地运行，token 不会上传。

关键词：JWT 解码、JWT 解析、JWT decoder、JSON Web Token、token 解码

常见问题：

- **JWT 是什么？** JSON Web Token，由 Header.Payload.Signature 三段 Base64URL 组成，常用于无状态身份认证。
- **解码 JWT 安全吗？** 本工具仅在浏览器本地解析，不上传 token。但生产 token 仍需谨慎——任何拿到 JWT 的人都能读 Payload 内容。
- **JWT 是加密的吗？** 默认不是。Header + Payload 只是 Base64 编码（任何人可读），Signature 仅防篡改。如需加密内容请用 JWE。
- **过期时间怎么看？** 看 Payload 里的 `exp` 字段（Unix 时间戳，秒）。本工具会自动转换为可读时间并标注是否已过期。

### [Cron 表达式解析](https://xtechtools.com/cron/)

Cron 表达式在线解析工具，自然语言翻译表达式含义，预测未来 5 次执行时间，支持标准 5 字段与 Quartz 6 字段。

关键词：cron 表达式、crontab、定时任务、cron 解析、执行时间

常见问题：

- **Cron 表达式怎么读？** 从左到右依次是「分 时 日 月 周」，本工具会用自然语言解释，例如 `0 9 * * 1-5` = 周一到周五每天 9:00。
- **支持非标准字段吗？** 支持秒（6 字段，Quartz 风格）和年（7 字段）。也可解析 `@daily`、`@hourly` 等预设。
- **能预测下一次执行时间吗？** 可以。工具会按当前时区计算未来 5–10 次触发时间，方便排查任务漏跑。
- **Vercel/Cloudflare Cron 兼容吗？** 兼容。Vercel Cron / Cloudflare Cron Triggers 都使用标准 5 字段 cron，本工具完全适配。

### [浏览器信息](https://xtechtools.com/browser-info/)

一站式浏览器信息查看工具：公网 IP、User-Agent、屏幕分辨率、视口大小、时区、语言、Cookie 状态、网络在线状态等。

关键词：我的 IP、浏览器信息、User Agent 查看、UA 查询、当前 IP

常见问题：

- **浏览器信息是免费的吗？** 是的。浏览器信息完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。浏览器信息属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。浏览器信息使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [UUID 生成器](https://xtechtools.com/uuid/)

在线 UUID 生成工具，支持 UUID v4 标准、Nano ID 短随机 ID、自定义字符集与长度，可批量生成最多 1000 个。

关键词：UUID 生成、UUID v4、Nano ID、GUID、随机 ID

常见问题：

- **UUID 是什么？** 通用唯一标识符（Universally Unique Identifier），128 位长度，几乎不可能重复，常用于数据库主键、分布式 ID、文件命名。
- **UUID v4 和 v7 有什么区别？** v4 是纯随机；v7 把时间戳前缀融入高位，可按生成顺序排序，适合做数据库主键减少 B-tree 分裂。
- **生成的 UUID 重复几率有多大？** 理论上每秒生成 10 亿个、连续 100 年才有 50% 重复概率，实际工程中可视为不会重复。
- **能批量生成吗？** 可以。一次最多生成 1000 个，支持复制为带引号字符串、JSON 数组或换行分隔。

### [文件哈希校验](https://xtechtools.com/file-hash/)

本地文件哈希计算工具，拖入文件即可计算 MD5、SHA-1、SHA-256、SHA-512 校验值，支持大文件流式处理，文件不会上传。

关键词：文件哈希、文件 MD5、文件 SHA256、文件校验、checksum

常见问题：

- **文件多大都能算吗？** 理论上仅受浏览器内存限制，实测几 GB 文件可流式计算。建议大文件用桌面工具（如 sha256sum）。
- **哈希用来做什么？** 验证文件下载是否完整、确认两个文件是否一致、防篡改校验。常见于发行版镜像（如 Linux ISO）的 SHA256 校验。
- **文件会上传吗？** 不会。FileReader API 直接读取本地文件并在浏览器内通过 SubtleCrypto 计算哈希，不发任何请求。

### [JSON/YAML/CSV 转换](https://xtechtools.com/data-convert/)

JSON、YAML、CSV 三种常用数据格式互相转换工具，自动识别输入类型，支持复杂嵌套与数组转表格。

关键词：JSON 转 YAML、YAML 转 JSON、JSON 转 CSV、CSV 转 JSON、数据转换

常见问题：

- **JSON/YAML/CSV 转换是免费的吗？** 是的。JSON/YAML/CSV 转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON/YAML/CSV 转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON/YAML/CSV 转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [IP / CIDR 计算](https://xtechtools.com/cidr/)

CIDR 子网计算器，输入 192.168.1.0/24 自动计算子网掩码、网络地址、广播地址、可用 IP 范围与主机数量。

关键词：CIDR 计算、子网掩码计算、IP 范围、网段计算、subnet calculator

常见问题：

- **CIDR 是什么？** 无类域间路由（Classless Inter-Domain Routing），用 `/前缀长度` 表示 IP 段，例如 `192.168.1.0/24` 包含 256 个地址。
- **能算多少可用主机？** IPv4 可用主机 = 2^(32-prefix) - 2（减去网络地址与广播地址）。/30 是常见点对点链路最小掩码。
- **支持 IPv6 吗？** 支持。可解析 IPv6 CIDR（如 `2001:db8::/32`），展示前缀、地址数量与示例地址。

### [HTTP 状态码](https://xtechtools.com/http-status/)

完整 HTTP 状态码速查工具，覆盖 1xx 到 5xx 全部 60+ 状态码，含 RFC 标准定义、典型使用场景与排查建议。

关键词：HTTP 状态码、404、500、502、503、301 重定向

常见问题：

- **HTTP 状态码是免费的吗？** 是的。HTTP 状态码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTTP 状态码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTTP 状态码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [代码格式化](https://xtechtools.com/code-formatter/)

在线代码美化与压缩工具，支持 HTML、CSS、SQL，多种缩进风格，本地运行不上传代码。

关键词：HTML 格式化、CSS 格式化、SQL 格式化、代码美化、代码压缩

常见问题：

- **代码格式化是免费的吗？** 是的。代码格式化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。代码格式化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。代码格式化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [假数据生成](https://xtechtools.com/mock-data/)

快速生成测试用假数据：中文姓名、邮箱、手机号、地址、日期、UUID 等，可导出 JSON、CSV、SQL INSERT 语句。

关键词：假数据生成、测试数据、mock data、随机姓名、随机数据

常见问题：

- **假数据生成是免费的吗？** 是的。假数据生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。假数据生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。假数据生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [面积 / 周长计算器](https://xtechtools.com/area-perimeter-calc/)

9 种图形面积与周长计算：正方形 / 长方形 / 三角形 / 圆 / 椭圆 / 平行四边形 / 梯形 / 正多边形 / 弓形，输入参数实时显示公式与结果，附 SVG 示意图。

关键词：面积计算、周长计算、area calculator、几何、数学工具

常见问题：

- **面积 / 周长计算器是免费的吗？** 是的。面积 / 周长计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。面积 / 周长计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。面积 / 周长计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [YAML 转 JSON](https://xtechtools.com/yaml-to-json/)

YAML 与 JSON 双向转换工具：内置极简 YAML 解析器（支持 map / array / string / number / bool / null / 注释），实时输出，正反向切换，JSON 美化与压缩可选。

关键词：YAML 转 JSON、yaml2json、配置转换、YAML 解析、JSON 转 YAML

常见问题：

- **YAML 转 JSON是免费的吗？** 是的。YAML 转 JSON完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。YAML 转 JSON属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。YAML 转 JSON使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Base32 编码 / 解码](https://xtechtools.com/base32-encoder/)

Base32 编码与解码工具：支持 RFC 4648 标准字母表、扩展 hex 字母表、Crockford 字母表三种，可选去除填充 =，常用于文本传输与短链生成。

关键词：Base32、Base32 编码、Crockford、RFC 4648、编码工具

常见问题：

- **Base32 编码 / 解码是免费的吗？** 是的。Base32 编码 / 解码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Base32 编码 / 解码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Base32 编码 / 解码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [温度单位转换](https://xtechtools.com/unit-converter-temp/)

温度单位转换工具：摄氏 (°C) / 华氏 (°F) / 开尔文 (K) / 兰金 (°R) 四种刻度任一变化即时同步，附水冰点 / 沸点、人体体温、室温等参考表。

关键词：温度转换、摄氏华氏、°C °F、开尔文、兰金

常见问题：

- **温度单位转换是免费的吗？** 是的。温度单位转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。温度单位转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。温度单位转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON 验证器](https://xtechtools.com/json-validator/)

JSON 实时验证工具，输入即校验，错误自动高亮所在行 / 列并显示原因，通过后可格式化或压缩，附键数 / 嵌套深度 / 字节大小统计。

关键词：JSON 验证、JSON 检查、JSON 错误定位、JSON 格式化、JSON parser

常见问题：

- **校验失败时怎么定位？** 工具高亮报错行列号并提示原因。常见错误：尾随逗号、单引号字符串、未引号的键名、未转义的换行/反斜杠。
- **能校验 JSON Schema 吗？** 本工具只做语法校验。如需 Schema 校验（结构 + 类型）可用 ajv 等专业库。
- **与 JSON 格式化有什么区别？** 格式化偏向「美化输出」；校验器偏向「找错与定位」，对大型嵌套 JSON 报错更精准。

### [哈希计算器](https://xtechtools.com/hash-calculator/)

哈希计算器，支持文本与文件两种输入，浏览器内计算 SHA-1 / SHA-256 / SHA-384 / SHA-512（WebCrypto）+ MD5（内联实现），输出 hex / base64 / base64url 三格式，文件分块处理避免内存溢出。

关键词：哈希、hash、SHA-256、MD5、SHA-1、校验码

常见问题：

- **支持哪些哈希算法？** 支持 MD5、SHA-1、SHA-256、SHA-384、SHA-512，覆盖完整性校验与签名场景。
- **哈希能解密吗？** 不能。哈希是单向函数，只能验证一致性，无法逆向得到原文。需要可逆请用 AES、RSA 等加密算法。
- **MD5 还能用吗？** 可以做完整性校验（如下载文件比对），但不能用于安全场景（密码哈希、数字签名）——已被证明可被碰撞攻击。
- **能计算文件哈希吗？** 可以。支持拖入文件计算哈希，全部在浏览器本地完成，文件不会上传。

### [UUID 生成器](https://xtechtools.com/uuid-generator/)

UUID 生成工具，支持 UUID v4（随机）与 UUID v7（时间戳）批量生成 1 / 10 / 100 个，可切换有/无连字符与大小写，使用 crypto.getRandomValues 保证安全随机。

关键词：UUID、UUID v4、UUID v7、GUID、唯一标识符

常见问题：

- **支持哪些 UUID 版本？** 支持 v1（时间+MAC）、v3（命名空间+MD5）、v4（随机）、v5（命名空间+SHA-1）、v7（时间排序），按需选择。
- **生成过程会上传吗？** 不会。所有 UUID 在浏览器本地通过 crypto.randomUUID 或等效算法生成，不发任何请求。
- **UUID 适合做数据库主键吗？** 适合 v7（可排序）；v4 在 InnoDB 等聚簇索引下会因随机插入导致写放大，业务量大时建议改用 v7 或 ULID。

### [短链接展开 / URL 解析](https://xtechtools.com/url-shortener-fake/)

URL 解析与短链识别工具，输入任意 URL，分解 protocol / domain / path / query 组件，自动识别 t.cn / bit.ly / dwz.cn / t.co 等知名短链域名并提示风险。

关键词：URL 解析、短链展开、URL parser、短网址、querystring

常见问题：

- **短链接展开 / URL 解析是免费的吗？** 是的。短链接展开 / URL 解析完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。短链接展开 / URL 解析属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。短链接展开 / URL 解析使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [科学计算器](https://xtechtools.com/scientific-calc/)

在线科学计算器，支持 sin / cos / tan / log / ln / sqrt / 幂 / 阶乘 / π / e，含 M+ / M- / MR / MC 内存与最近 5 条历史记录，纯前端无后端解析（不使用 eval）。

关键词：科学计算器、三角函数、对数、阶乘、calculator

常见问题：

- **科学计算器是免费的吗？** 是的。科学计算器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。科学计算器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。科学计算器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CSV ↔ JSON 转换](https://xtechtools.com/csv-to-json/)

CSV 与 JSON 双向转换工具，自动识别逗号 / 分号 / Tab 分隔符，支持表头开关、JSON 美化或压缩输出，全程本地处理不上传。

关键词：csv、json、csv 转 json、json 转 csv、数据导入

常见问题：

- **CSV 字段里有逗号怎么办？** 工具自动识别引号包裹的字段（RFC 4180 标准），引号内的逗号不会被切分。
- **中文 CSV 乱码？** 本工具默认按 UTF-8 解析。Excel 导出的 CSV 是 GBK，需先在 Excel 另存为「UTF-8 CSV」或先用工具转码。
- **可以转回 CSV 吗？** 可以。在「数据格式转换」工具里 JSON / YAML / CSV 三向互转，对应字段类型自动推断。
- **支持多大文件？** 实测 50 MB 内流畅，更大文件建议用命令行工具（如 jq、csvkit）。

### [Unix 时间戳转换](https://xtechtools.com/unix-timestamp/)

Unix 时间戳与人类可读时间双向转换工具，实时显示当前秒/毫秒级时间戳，支持 UTC / 本地 / +08 / 自定义时区，多格式 ISO 8601 / RFC 2822 / 自定义 strftime。

关键词：unix 时间戳、时间戳、timestamp、ISO 8601、时间转换

常见问题：

- **Unix 时间戳转换是免费的吗？** 是的。Unix 时间戳转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Unix 时间戳转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Unix 时间戳转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [进制转换](https://xtechtools.com/base-convert/)

进制转换工具，支持 2、8、10、16、32、36、58 进制相互转换，附位运算预览（与/或/异或/移位）。

关键词：进制转换、二进制转十进制、十六进制、binary decimal hex、位运算

常见问题：

- **进制转换是免费的吗？** 是的。进制转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。进制转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。进制转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JWT 签发](https://xtechtools.com/jwt-sign/)

在线签发 JWT Token：自定义 header、payload、密钥，使用 HS256 算法（Web Crypto），适合开发调试。

关键词：JWT 生成、JWT 签发、JWT sign、JWT 在线、token generator

常见问题：

- **JWT 签发是免费的吗？** 是的。JWT 签发完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JWT 签发属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JWT 签发使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [ASCII 码表](https://xtechtools.com/ascii/)

ASCII 字符编码完整速查表，含可显示字符与控制字符 0-127，每个字符提供十进制、十六进制、八进制、二进制表示。

关键词：ASCII 码表、ASCII 表、ASCII 转换、ASCII 控制字符

常见问题：

- **ASCII 码表是免费的吗？** 是的。ASCII 码表完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。ASCII 码表属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。ASCII 码表使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [凯撒密码](https://xtechtools.com/caesar/)

凯撒密码（Caesar Cipher）在线加解密工具，支持任意位移量、ROT13、ROT47 变体，仅作教学与游戏用途。

关键词：凯撒密码、Caesar cipher、ROT13、ROT47、密码学

常见问题：

- **凯撒密码是免费的吗？** 是的。凯撒密码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。凯撒密码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。凯撒密码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON 对比](https://xtechtools.com/json-diff/)

JSON 结构化对比工具，按 key 路径展示新增 / 删除 / 修改字段，比纯文本 diff 更精确，适合 API 调试与配置审查。

关键词：JSON 对比、JSON diff、JSON 比较、结构 diff

常见问题：

- **JSON 对比是免费的吗？** 是的。JSON 对比完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON 对比属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON 对比使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [cURL 命令生成](https://xtechtools.com/curl-gen/)

把 HTTP 请求（URL、方法、headers、body）可视化生成 cURL 命令行，方便分享与服务端调试。

关键词：cURL 生成、curl 命令、HTTP 请求、接口测试

常见问题：

- **cURL 命令生成是免费的吗？** 是的。cURL 命令生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。cURL 命令生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。cURL 命令生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON 路径查询](https://xtechtools.com/jsonpath/)

JSON 数据路径查询工具，支持 $.a.b.c 简易点路径与 JSONPath 风格 [?()] 过滤语法，结果实时高亮。

关键词：JSONPath、JSON 路径、JSON 查询、jq、JMESPath

常见问题：

- **JSON 路径查询是免费的吗？** 是的。JSON 路径查询完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON 路径查询属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON 路径查询使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [手机号查询](https://xtechtools.com/phone/)

中国手机号工具：自动按 3-4-4 格式化，识别运营商（移动 / 联通 / 电信 / 虚拟运营商），校验合法性。

关键词：手机号查询、运营商识别、号码归属、手机号格式化

常见问题：

- **手机号查询是免费的吗？** 是的。手机号查询完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。手机号查询属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。手机号查询使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTML 实体编解码](https://xtechtools.com/html-entity/)

HTML 实体（Entity）编码与解码工具，处理 &lt; &gt; &amp; &quot; &nbsp; 等特殊字符与命名/数字实体引用，支持完整 ISO 实体表。

关键词：HTML 实体、HTML 编码、HTML 解码、HTML escape、entity、特殊字符

常见问题：

- **HTML 实体编解码是免费的吗？** 是的。HTML 实体编解码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTML 实体编解码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTML 实体编解码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTML 编码 / 解码](https://xtechtools.com/html-encode/)

HTML 实体编码与解码双向工具，支持命名实体（&lt; &amp; &nbsp;）与数字实体（&#60; &#38;）切换，可选去除 HTML 标签输出纯文本，常用于防 XSS、邮件签名与代码片段展示。

关键词：HTML 编码、HTML 解码、HTML escape、HTML 实体、strip tags、去除 HTML 标签

常见问题：

- **HTML 编码 / 解码是免费的吗？** 是的。HTML 编码 / 解码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTML 编码 / 解码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTML 编码 / 解码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [图片 Base64 转换](https://xtechtools.com/base64-image/)

图片与 Base64 Data URI 互转工具，支持 PNG / JPG / GIF / WebP / SVG 拖拽上传，反向粘贴 Data URI 渲染预览并下载，全程本地处理不上传，附 MIME、尺寸、文件大小信息。

关键词：图片转 Base64、Base64 图片、Data URI、image to base64、base64 to image、inline image

常见问题：

- **图片 Base64 转换是免费的吗？** 是的。图片 Base64 转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。图片 Base64 转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。图片 Base64 转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [SQL 格式化](https://xtechtools.com/sql-format/)

SQL 格式化工具，支持 MySQL、PostgreSQL、SQLite、SQL Server、Oracle、BigQuery 等多方言美化与压缩，关键字大小写规范，缩进可配置。

关键词：SQL 格式化、SQL 美化、SQL 压缩、MySQL、PostgreSQL、SQL beautify

常见问题：

- **SQL 格式化是免费的吗？** 是的。SQL 格式化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。SQL 格式化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。SQL 格式化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [User-Agent 解析](https://xtechtools.com/ua-parse/)

User-Agent 字符串解析工具，识别浏览器名称版本、操作系统、设备类型、引擎，支持手机端 UA 识别。

关键词：User-Agent、UA 解析、浏览器识别、设备识别、UA 字符串

常见问题：

- **User-Agent 解析是免费的吗？** 是的。User-Agent 解析完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。User-Agent 解析属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。User-Agent 解析使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [正则表达式速查](https://xtechtools.com/regex-cheatsheet/)

常用正则表达式速查库：邮箱、手机号、身份证、密码强度、URL、IP、日期、中文、HTML 标签、信用卡等 50+ 实用模式，含在线测试。

关键词：正则表达式、正则速查、常用正则、regex、邮箱正则、手机号正则

常见问题：

- **正则表达式速查是免费的吗？** 是的。正则表达式速查完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。正则表达式速查属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。正则表达式速查使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTTP 请求生成器](https://xtechtools.com/http-request-gen/)

HTTP 请求代码生成器，可视化配置 method/url/headers/body，输出 fetch / axios / curl / Python requests / Go http 五种语言代码，一键复制。

关键词：HTTP 请求、fetch 代码、axios 代码、请求生成、API 调用

常见问题：

- **HTTP 请求生成器是免费的吗？** 是的。HTTP 请求生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTTP 请求生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTTP 请求生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON Schema 生成](https://xtechtools.com/json-schema/)

粘贴任意 JSON，自动推导 draft-07 格式的 JSON Schema，支持嵌套对象、数组、字符串 / 数字 / 布尔 / null 类型推断，一键复制。

关键词：JSON Schema、JSON 转 Schema、draft-07、JSON 格式验证

常见问题：

- **JSON Schema 生成是免费的吗？** 是的。JSON Schema 生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON Schema 生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON Schema 生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON 转 TypeScript](https://xtechtools.com/json-to-ts/)

粘贴 JSON 对象，自动生成嵌套 TypeScript interface，支持数组元素类型推断、可选字段识别，输出可直接用于前端项目。

关键词：JSON 转 TypeScript、JSON to TS、TypeScript interface 生成、JSON 类型定义

常见问题：

- **JSON 转 TypeScript是免费的吗？** 是的。JSON 转 TypeScript完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON 转 TypeScript属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON 转 TypeScript使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSON ↔ YAML 转换](https://xtechtools.com/json-yaml/)

在线双向转换 JSON 与 YAML 格式，支持深层嵌套结构，实时语法检查，转换结果可一键复制。

关键词：JSON 转 YAML、YAML 转 JSON、JSON YAML 互转、YAML 格式化

常见问题：

- **JSON ↔ YAML 转换是免费的吗？** 是的。JSON ↔ YAML 转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSON ↔ YAML 转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSON ↔ YAML 转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [键盘按键测试](https://xtechtools.com/keyboard-tester/)

键盘按键测试工具，按一下高亮一下，全键盘 104 键测完即知是否有失灵键，同时显示 keyCode 与 code 标识。

关键词：键盘测试、按键测试、keyCode、键盘检测、失灵键

常见问题：

- **键盘按键测试是免费的吗？** 是的。键盘按键测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。键盘按键测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。键盘按键测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [YAML 格式化](https://xtechtools.com/yaml-format/)

YAML 格式化与校验工具，标准化缩进、压缩为单行、检测语法错误并定位行列号，纯本地基于 js-yaml。

关键词：YAML 格式化、YAML 美化、YAML 校验、YAML beautify

常见问题：

- **YAML 格式化是免费的吗？** 是的。YAML 格式化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。YAML 格式化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。YAML 格式化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [XML 格式化](https://xtechtools.com/xml-format/)

XML 格式化工具，缩进美化、压缩单行、检测 well-formed 错误，支持移除空白节点，纯本地基于浏览器 DOMParser。

关键词：XML 格式化、XML 美化、XML 校验、XML beautify

常见问题：

- **XML 格式化是免费的吗？** 是的。XML 格式化完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。XML 格式化属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。XML 格式化使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JWT 解码器](https://xtechtools.com/jwt-decoder/)

JWT 解码器，header/payload/signature 三栏实时解析，自动检测 exp/iat/nbf 过期时间并人类化展示，标识签名算法（HS256/RS256/ES256）。

关键词：JWT 解码、JWT 解析、JWT decoder、JWT 验证

常见问题：

- **能验签吗？** 可以验证 HS256/HS384/HS512（粘贴密钥）与 RS256/ES256（粘贴公钥）。所有验证在浏览器本地完成。
- **密钥会被记录吗？** 不会。密钥只存在于内存中，刷新页面即清空，绝不发送到服务器。
- **支持哪些算法？** HS256/384/512、RS256/384/512、ES256/384、PS256/384/512，以及 none（仅用于教学）。

### [Mock API 接口](https://xtechtools.com/mock-fetch/)

Mock API URL 速查与示例，列出 jsonplaceholder/mockapi/Pretender 常用免费假数据接口与请求代码片段，前端联调救急。

关键词：Mock API、fake API、mock 数据、jsonplaceholder、前端联调

常见问题：

- **Mock API 接口是免费的吗？** 是的。Mock API 接口完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Mock API 接口属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Mock API 接口使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [URL 构造器](https://xtechtools.com/url-builder/)

可视化构造 URL：分别填写协议、域名、端口、路径、查询参数（键值对动态增删）与 fragment，开启 encodeURIComponent 编码或保留原值，实时预览拼接结果；支持反向模式，粘贴完整 URL 一键拆分填回各字段，方便接口调试与链接核对。

关键词：URL 构造、URL 拼接、URL 编码、URL 解析、query string 生成、encodeURIComponent、URL builder

常见问题：

- **URL 构造器是免费的吗？** 是的。URL 构造器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。URL 构造器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。URL 构造器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTTP 请求头模拟](https://xtechtools.com/http-headers-mock/)

HTTP 请求构造与代码生成：选择 method（GET/POST/PUT/DELETE/PATCH），填写 URL、动态增删 headers、按方法显示 body 编辑框，实时生成 cURL 命令、JS fetch() 代码与 Python requests 代码三种格式，一键复制粘贴即可在终端、浏览器或脚本中调用，便于接口联调与文档示例编写。

关键词：HTTP 请求模拟、cURL 生成、fetch 代码生成、Python requests、请求头模拟、API 调试、HTTP headers

常见问题：

- **HTTP 请求头模拟是免费的吗？** 是的。HTTP 请求头模拟完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTTP 请求头模拟属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTTP 请求头模拟使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [JSONPath 测试器](https://xtechtools.com/json-path-tester/)

在线 JSONPath 表达式测试：左侧输入 JSON、右上输入 JSONPath，右下实时显示匹配结果与命中数量；内置最小可用 JSONPath 子集（子节点、递归下降 $..、通配符 *、下标、切片 [a:b]、过滤表达式 [?(@.price>10)]），附常用查询模板与 store/book 经典示例，一键复制结果。

关键词：JSONPath、JSONPath 测试、JSON 查询、JSONPath online、JSON 过滤、jsonpath 表达式、JSON 调试

常见问题：

- **JSONPath 测试器是免费的吗？** 是的。JSONPath 测试器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。JSONPath 测试器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。JSONPath 测试器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [正则表达式构造器](https://xtechtools.com/regex-builder/)

通过下拉选择「字母 / 数字 / 邮箱 / 手机号 / IP / URL / 日期」等匹配类型，叠加量词、锚点、字符类与捕获组，实时生成正则表达式并在测试文本上即时高亮匹配结果。

关键词：正则构造器、可视化正则、正则生成器、regex builder、正则拼装、正则在线生成

常见问题：

- **正则表达式构造器是免费的吗？** 是的。正则表达式构造器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。正则表达式构造器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。正则表达式构造器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [测试数据生成器](https://xtechtools.com/mock-data-generator/)

内置中英姓名表、地区表、手机号段表、银行卡号段，可一次生成 1-1000 行测试数据，输出 JSON / CSV / SQL INSERT 三种格式，支持中英文模式切换，纯本地运行不上传任何信息。

关键词：mock 数据、测试数据生成、假数据生成器、fake data、随机数据、JSON CSV SQL 生成

常见问题：

- **测试数据生成器是免费的吗？** 是的。测试数据生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。测试数据生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。测试数据生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [罗马数字转换](https://xtechtools.com/roman-numeral-converter/)

在阿拉伯数字（1 - 3999）与罗马数字之间实时双向转换，严格校验罗马数字标准写法，附符号速查表与最近转换历史，浏览器本地保存记录。

关键词：罗马数字、罗马数字转换、Roman numeral、I V X L C D M、阿拉伯数字

常见问题：

- **罗马数字转换是免费的吗？** 是的。罗马数字转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。罗马数字转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。罗马数字转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [YAML 转 JSON](https://xtechtools.com/yaml-to-json/)

在线 YAML JSON 双向转换工具，内置纯前端 YAML 解析器，支持映射、数组、字符串、数字、布尔、null、注释，覆盖 K8s、Docker Compose、GitHub Actions、CI/CD 等配置文件场景，反向输出标准 YAML，所有处理在浏览器完成。

关键词：YAML 转 JSON、JSON 转 YAML、YAML 解析、YAML 在线、K8s YAML、GitHub Actions

常见问题：

- **YAML 转 JSON是免费的吗？** 是的。YAML 转 JSON完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。YAML 转 JSON属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。YAML 转 JSON使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Base32 编码](https://xtechtools.com/base32-encoder/)

支持三种 Base32 字母表的在线编码解码工具：RFC 4648 标准（TOTP 二步验证）、Extended Hex（DNSSEC NSEC3）、Crockford（ULID 标识符），可选择是否带 = 填充，全程本地处理不上传。

关键词：Base32、Base32 编码、Base32 解码、RFC 4648、Crockford Base32、TOTP

常见问题：

- **Base32 编码是免费的吗？** 是的。Base32 编码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Base32 编码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Base32 编码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [CRC 校验码](https://xtechtools.com/crc-checksum/)

在线 CRC 校验码计算工具，支持 CRC-8 (poly 0x07)、CRC-16/CCITT-FALSE、CRC-32 (PKZip / PNG / Ethernet) 三种常用算法，可对文本或上传文件进行计算，使用查表法实现性能高，全程本地运行。

关键词：CRC、CRC-32、CRC-16、CRC-8、校验码、checksum、PKZip CRC

常见问题：

- **CRC 校验码是免费的吗？** 是的。CRC 校验码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。CRC 校验码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。CRC 校验码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [字节单位转换](https://xtechtools.com/bytes-converter/)

字节单位换算工具，支持 B / KB / MB / GB / TB / PB 互转，可在二进制 (1024 / KiB) 与十进制 (1000 / KB) 之间切换，自动给出最适合的人类可读格式（如 1234567 → 1.18 MB），适合开发者校对硬盘容量、文件大小、API 限制。

关键词：字节转换、KB MB GB、KiB MiB GiB、存储单位、硬盘容量、字节计算

常见问题：

- **字节单位转换是免费的吗？** 是的。字节单位转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。字节单位转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。字节单位转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

## 文本处理

编码、转换、生成、统计等文本工具

### [文本对比](https://xtechtools.com/diff/)

在线文本对比工具，并排显示两段文本差异，行级与词级高亮，支持代码、合同、文章对比。

关键词：文本对比、文本 diff、在线对比、diff 工具、代码对比

常见问题：

- **文本对比是免费的吗？** 是的。文本对比完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本对比属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本对比使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [字数统计](https://xtechtools.com/word-count/)

在线字数统计工具，区分中英文字符，统计行数、段落数、估算阅读时长，并展示高频词。

关键词：字数统计、字符统计、word count、汉字数、阅读时长

常见问题：

- **字数统计是免费的吗？** 是的。字数统计完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。字数统计属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。字数统计使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [假文生成器](https://xtechtools.com/lorem/)

生成填充用假文，支持中文乱数、英文 Lorem Ipsum、日文假名，按段落或字数控制长度，UI 设计与排版预览常用。

关键词：Lorem Ipsum、假文生成、乱数假文、占位文字、填充文本

常见问题：

- **假文生成器是免费的吗？** 是的。假文生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。假文生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。假文生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Markdown 目录生成器](https://xtechtools.com/markdown-toc/)

Markdown 目录（TOC）生成工具，自动扫描 H1–H6 标题，按 GitHub 风格 slug 生成锚点链接，支持深度限制、有序/无序列表与是否包含 H1。

关键词：markdown、toc、目录、锚点、目录生成、GitHub TOC

常见问题：

- **Markdown 目录生成器是免费的吗？** 是的。Markdown 目录生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Markdown 目录生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Markdown 目录生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [汉字转拼音](https://xtechtools.com/pinyin/)

汉字转拼音工具，支持带声调（ā á ǎ à）、声调数字（a1 a2）、首字母模式，多音字识别。

关键词：汉字转拼音、中文拼音、pinyin、声调、多音字

常见问题：

- **汉字转拼音是免费的吗？** 是的。汉字转拼音完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。汉字转拼音属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。汉字转拼音使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本统计分析](https://xtechtools.com/text-statistics/)

中文 / 英文文本统计工具，实时计算字符（含/不含空格）、单词、句子、段落、行数，估计阅读时长，按字符类型分布饼图与高频词条形图。

关键词：字数统计、文本统计、word count、阅读时长、中文字数

常见问题：

- **文本统计分析是免费的吗？** 是的。文本统计分析完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本统计分析属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本统计分析使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [智能引号转换](https://xtechtools.com/smart-quote-converter/)

智能引号转换工具：双引号与单引号在直 (") 与弯 ("") 之间双向转换，可选中式 / 英式 / 法式 «» 引号风格，正向自动按上下文判断开闭。

关键词：智能引号、smart quote、弯引号、直引号、排版引号

常见问题：

- **智能引号转换是免费的吗？** 是的。智能引号转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。智能引号转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。智能引号转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [空白字符清理](https://xtechtools.com/whitespace-cleaner/)

空白字符清理工具：删除行末空格、合并多空格、合并多空行、Tab 转空格、全角空格半角化、删除 U+200B/U+FEFF 等零宽字符，逐项可勾选，实时预览。

关键词：空白清理、零宽字符、全角空格、行末空格、清理 Tab

常见问题：

- **空白字符清理是免费的吗？** 是的。空白字符清理完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。空白字符清理属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。空白字符清理使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [填字游戏辅助](https://xtechtools.com/crossword-helper/)

填字游戏 (Crossword) 辅助查词：输入带 `_` / `?` / `*` 的模式（如 c_t），从英中混合词典中匹配所有可能词，按长度筛选，方便填字游戏卡顿时找词。

关键词：填字游戏、crossword、填字辅助、词库匹配、模糊查词

常见问题：

- **填字游戏辅助是免费的吗？** 是的。填字游戏辅助完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。填字游戏辅助属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。填字游戏辅助使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [回文判断器](https://xtechtools.com/palindrome-check/)

回文判断工具，输入文本自动剥离空格 / 标点 / 大小写后检测是否回文，找出最长回文子串并高亮，附随机回文生成器。

关键词：回文、palindrome、回文判断、回文检测、回文生成

常见问题：

- **回文判断器是免费的吗？** 是的。回文判断器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。回文判断器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。回文判断器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [字母重排查找](https://xtechtools.com/anagram-finder/)

字母重排 / 异位词查找：输入单词或短语，从内置 5000+ 英文词与 3000+ 中文常用词中查找相同字母组合的所有词，或对比两串是否互为异位词。

关键词：异位词、anagram、字母重排、词库查找、Scrabble

常见问题：

- **字母重排查找是免费的吗？** 是的。字母重排查找完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。字母重排查找属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。字母重排查找使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [批量替换工具](https://xtechtools.com/text-replace-batch/)

文本批量替换工具，支持多组 find / replace 规则一次执行，可勾选大小写敏感、整词匹配、正则模式，输出附差异高亮与逐规则替换次数统计。

关键词：批量替换、find replace、正则替换、文本替换、查找替换

常见问题：

- **批量替换工具是免费的吗？** 是的。批量替换工具完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。批量替换工具属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。批量替换工具使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTML 美化 / 压缩](https://xtechtools.com/html-prettifier/)

HTML 在线美化与压缩工具，支持 2 / 4 / Tab 缩进格式化或一键压缩，附沙箱 iframe 渲染预览，便于检查模板输出。

关键词：HTML 格式化、HTML 美化、HTML 压缩、HTML beautify、HTML minify

常见问题：

- **HTML 美化 / 压缩是免费的吗？** 是的。HTML 美化 / 压缩完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。HTML 美化 / 压缩属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。HTML 美化 / 压缩使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Markdown 转 HTML](https://xtechtools.com/markdown-to-html/)

Markdown 转 HTML 工具，自带最小化解析器（无外部库），支持标题 / 加粗 / 斜体 / 代码 / 链接 / 图片 / 列表 / 引用 / 表格 / 分割线，输出 HTML 与渲染预览，复制即用。

关键词：Markdown 转 HTML、md2html、MD to HTML、Markdown 渲染

常见问题：

- **Markdown 转 HTML是免费的吗？** 是的。Markdown 转 HTML完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Markdown 转 HTML属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Markdown 转 HTML使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [HTML 转 Markdown](https://xtechtools.com/html-to-markdown/)

HTML → Markdown 转换工具，支持 H1-H6、加粗 / 斜体 / 链接 / 图片 / 列表 / 代码块 / 引用 / 表格 / 分割线，自动移除 script、style、iframe 等危险标签，全程本地处理。

关键词：HTML 转 Markdown、h2md、HTML to MD、富文本转 MD

常见问题：

- **能保留富文本格式吗？** 保留标题、列表、链接、图片、代码块、表格、加粗斜体；删除线 GFM 风格输出。多余的 div / span 会被清理。
- **复制网页内容直接粘贴可以吗？** 可以。把网页内容（含 HTML 结构）粘贴进去，工具自动识别 HTML 标签结构。也支持粘贴纯 HTML 源码。
- **会上传我的内容吗？** 不会。基于 turndown.js 在浏览器本地完成转换。

### [去重多行文本](https://xtechtools.com/dedupe-lines/)

多行文本去重工具，输入邮箱列表、URL、关键词等，实时输出去重结果，支持去除首尾空白、忽略大小写、移除空行、排序输出，全程本地处理不上传。

关键词：去重、dedupe、重复行、去除重复、unique lines

常见问题：

- **去重多行文本是免费的吗？** 是的。去重多行文本完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。去重多行文本属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。去重多行文本使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [罗马数字](https://xtechtools.com/roman/)

罗马数字与阿拉伯数字相互转换工具，支持 1 到 3999 标准范围，附速查表与历史背景说明。

关键词：罗马数字、罗马数字转换、Roman numeral、I II III IV、罗马数字对照表

常见问题：

- **罗马数字是免费的吗？** 是的。罗马数字完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。罗马数字属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。罗马数字使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [URL Slug 生成](https://xtechtools.com/slug/)

将文章标题或任意文本转为 URL 友好 slug，支持拼音转换（中文）、分隔符选择、长度限制，SEO 与博客建站常用。

关键词：slug 生成、URL slug、标题转 URL、permalink、拼音 slug

常见问题：

- **URL Slug 生成是免费的吗？** 是的。URL Slug 生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。URL Slug 生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。URL Slug 生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [摩斯密码](https://xtechtools.com/morse/)

摩斯密码（Morse Code）在线翻译工具，英文字母与数字 ↔ 点划编码互转，附蜂鸣声播放（Web Audio）。

关键词：摩斯密码、Morse Code、电码、·−

常见问题：

- **摩斯密码是免费的吗？** 是的。摩斯密码完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。摩斯密码属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。摩斯密码使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [ASCII 表格](https://xtechtools.com/ascii-box/)

ASCII 表格美化工具，输入纯文本（用 | 或制表分隔）自动渲染为 ── │ ┌ ┐ └ ┘ 制表符表格，适合代码注释、终端输出。

关键词：ASCII 表格、制表符、ASCII 边框、终端表格

常见问题：

- **ASCII 表格是免费的吗？** 是的。ASCII 表格完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。ASCII 表格属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。ASCII 表格使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [ASCII 艺术字](https://xtechtools.com/ascii-art/)

ASCII 艺术字生成器（基于 figlet.js），支持多种字体，输入英文文字一键生成花式 ASCII 标题。

关键词：ASCII 艺术字、figlet、ASCII art、花式字体、banner

常见问题：

- **ASCII 艺术字是免费的吗？** 是的。ASCII 艺术字完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。ASCII 艺术字属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。ASCII 艺术字使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [简繁转换](https://xtechtools.com/cn-convert/)

简体中文与繁体中文相互转换工具，基于 chinese-conv 库本地处理，支持单字符与整段文本，文档与海外同事交流常用。

关键词：简繁转换、简体转繁体、繁体转简体、繁简转换、OpenCC

常见问题：

- **简繁转换是免费的吗？** 是的。简繁转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。简繁转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。简繁转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [邮箱混淆](https://xtechtools.com/email-mask/)

邮箱地址防爬虫混淆工具：HTML entity / Unicode / @ 替换 / SVG 图片输出，避免邮箱被自动抓取。

关键词：邮箱混淆、邮箱反爬、email obfuscate、anti-spam

常见问题：

- **邮箱混淆是免费的吗？** 是的。邮箱混淆完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。邮箱混淆属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。邮箱混淆使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [快速阅读](https://xtechtools.com/speed-read/)

快速阅读训练器，按 WPM（每分钟词数）逐词闪现，可暂停、回退，提升阅读速度的训练工具。

关键词：速读、快速阅读、speed reading、WPM、阅读训练

常见问题：

- **快速阅读是免费的吗？** 是的。快速阅读完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。快速阅读属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。快速阅读使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [起名工具](https://xtechtools.com/name-gen/)

中文宝宝起名 + 英文名 + 笔名生成器，可按性别、字数、风格生成参考名字（基于常用名库随机组合）。

关键词：起名、取名、宝宝起名、英文名生成、笔名

常见问题：

- **起名工具是免费的吗？** 是的。起名工具完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。起名工具属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。起名工具使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [字谜解答](https://xtechtools.com/anagram/)

英文字谜（anagram）工具：输入若干字母，自动找出所有可能拼成的英文单词；同时支持中文字符随机重排。

关键词：字谜、anagram、字母重排、单词游戏

常见问题：

- **字谜解答是免费的吗？** 是的。字谜解答完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。字谜解答属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。字谜解答使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [词云生成](https://xtechtools.com/word-cloud/)

中英文词云生成工具，粘贴文本即生成词频词云，支持自定义颜色、字体大小范围、形状（圆/方），导出 PNG。

关键词：词云、词云生成、tag cloud、word cloud、文本可视化

常见问题：

- **词云生成是免费的吗？** 是的。词云生成完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。词云生成属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。词云生成使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Markdown 转 HTML](https://xtechtools.com/md-to-html/)

Markdown 转 HTML 转换器，支持 GFM 扩展（表格、代码块、删除线、任务列表），输出可直接粘贴到公众号 / Word / 富文本编辑器的 HTML 代码。

关键词：Markdown 转 HTML、MD 转 HTML、GFM、公众号 Markdown

常见问题：

- **Markdown 转 HTML是免费的吗？** 是的。Markdown 转 HTML完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Markdown 转 HTML属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Markdown 转 HTML使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [Emoji 查找复制](https://xtechtools.com/emoji-finder/)

按分类浏览笑脸、动物、食物、活动、物体、符号、旗帜等 emoji，支持关键字搜索，点击即可复制到剪贴板。

关键词：emoji 查找、emoji 复制、表情符号、emoji 大全

常见问题：

- **Emoji 查找复制是免费的吗？** 是的。Emoji 查找复制完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。Emoji 查找复制属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。Emoji 查找复制使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [特殊字符库](https://xtechtools.com/special-chars/)

收录 200+ 常用特殊字符，包含数学符号、箭头、货币符号、上下标、希腊字母、标点、几何图形等分类，点击即可复制。

关键词：特殊字符、数学符号、箭头符号、希腊字母、货币符号

常见问题：

- **特殊字符库是免费的吗？** 是的。特殊字符库完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。特殊字符库属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。特殊字符库使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [英语词汇量测试](https://xtechtools.com/vocab-test/)

英语词汇量测试，20 题选择题覆盖 6 难度等级，估算 CET-4 / CET-6 / 雅思 / GRE / 母语水平的词汇量区间。

关键词：词汇量测试、英语词汇量、vocabulary test、CET-4 词汇、CET-6 词汇

常见问题：

- **英语词汇量测试是免费的吗？** 是的。英语词汇量测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。英语词汇量测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。英语词汇量测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本差异对比](https://xtechtools.com/text-diff/)

在线文本差异对比工具，支持并排与统一两种视图切换，行级与词级高亮，展示新增/删除行数与相似度百分比，自动本地保存输入，所有计算在浏览器完成不上传。

关键词：diff、对比、变更、文本、文本对比、差异对比、text diff

常见问题：

- **文本差异对比是免费的吗？** 是的。文本差异对比完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本差异对比属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本差异对比使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [大小写转换](https://xtechtools.com/text-case/)

在线文本大小写与命名格式转换：UPPERCASE、lowercase、Title Case、camelCase、snake_case、kebab-case、PascalCase、CONSTANT_CASE、Sentence case 与 iNVERSE cASE，每个结果独立复制，纯本地保存输入。

关键词：大小写转换、camelCase、snake_case、kebab-case、PascalCase、命名风格

常见问题：

- **大小写转换是免费的吗？** 是的。大小写转换完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。大小写转换属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。大小写转换使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本反转](https://xtechtools.com/text-reverse/)

文本反转工具：实时输出 5 种反转结果——按 Unicode 码点逆序（保留 emoji）、按词反转（保留单词内部）、按行反转、按句子反转（保留终止符）、以及 Unicode 上下颠倒翻转字符（如 a→ɐ、b→q、e→ǝ），每个结果可独立复制，输入自动 localStorage 保存。

关键词：文本反转、字符串反转、倒序文字、upside down text、Unicode 翻转、颠倒文字

常见问题：

- **文本反转是免费的吗？** 是的。文本反转完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本反转属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本反转使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本摘要工具](https://xtechtools.com/text-summarize-stub/)

启发式文本摘要工具（非 LLM）：用 TF-IDF 算法对句子打分，挑选得分最高的句子拼接成摘要，支持 10% / 25% / 50% 三档压缩；中文按 CJK 单字、英文按单词分词，自动过滤停用词；显示原文与摘要的字符数、词数、句数与压缩比，纯本地运行。

关键词：文本摘要、TF-IDF、抽取式摘要、自动摘要、文章总结、关键句提取

常见问题：

- **文本摘要工具是免费的吗？** 是的。文本摘要工具完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本摘要工具属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本摘要工具使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本相似度对比](https://xtechtools.com/text-similarity/)

文本相似度对比工具：在浏览器本地同时计算 Levenshtein 编辑距离、Jaccard 词集合、余弦词频向量、Dice 系数四种相似度，并以条状图直观展示；支持基于 LCS 的字符级差异高亮（删除标红 / 新增标绿），自动缓存到 localStorage，所有计算不上传服务器。

关键词：文本相似度、相似度计算、Levenshtein、Jaccard、余弦相似度、Dice 系数、查重、LCS

常见问题：

- **文本相似度对比是免费的吗？** 是的。文本相似度对比完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本相似度对比属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本相似度对比使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [字符详细统计](https://xtechtools.com/character-counter-detail/)

字符详细统计工具：实时统计字符总数、不含空白、grapheme 字形数、UTF-8 字节数、行段数；按类型拆分 ASCII、CJK、数字、中英文标点、Emoji；按 Unicode 块汇总拉丁、CJK、韩文、日文、阿拉伯、西里尔等脚本；并展示微信公众号、微博 140、Twitter 280、小红书等平台字数余量，纯本地运行。

关键词：字符统计、字数统计、Unicode 块、Emoji 计数、微博字数、Twitter 字数、公众号字数、CJK 统计

常见问题：

- **字符详细统计是免费的吗？** 是的。字符详细统计完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。字符详细统计属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。字符详细统计使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [正则速查 Cheatsheet](https://xtechtools.com/regex-cheat-builder/)

把正则的字符类、锚点、量词、分组、环视、标志位与常用模式（邮箱 / 手机 / 身份证 / 车牌 / IP / 日期）整理成可搜索的卡片，每张卡片附内联试一试输入框，输入后立即高亮匹配。

关键词：正则速查、regex cheatsheet、正则表达式速查表、正则常用模式、正则参考

常见问题：

- **正则速查 Cheatsheet是免费的吗？** 是的。正则速查 Cheatsheet完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。正则速查 Cheatsheet属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。正则速查 Cheatsheet使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文本转手写体](https://xtechtools.com/text-to-handwriting/)

通过 Google Fonts 加载 Caveat / Indie Flower / Kalam / Patrick Hand / Permanent Marker / Shadows Into Light 六种英文手写体以及 Ma Shan Zheng 中文毛笔字，调节字号、行高、颜色、背景，实时预览并导出 PNG 图片，全程浏览器本地渲染。

关键词：手写字体、文本转图片、手写体生成、handwriting、签名生成、PNG 导出

常见问题：

- **文本转手写体是免费的吗？** 是的。文本转手写体完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文本转手写体属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文本转手写体使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [中英文混排排版](https://xtechtools.com/text-justify/)

一键优化中英文混排：在中文与英文/数字之间插入空格、英文标点 ↔ 中文全角标点互转、直引号转弯引号、合并多余空格，符合彭博、苹果中文官网与 Vue.js 文档的排版规范，实时预览并复制结果。

关键词：中英文空格、排版优化、盘古之白、PanGu、中文标点、智能引号、彭博排版

常见问题：

- **中英文混排排版是免费的吗？** 是的。中英文混排排版完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。中英文混排排版属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。中英文混排排版使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [文字翻转生成器](https://xtechtools.com/text-mirror-flip/)

一次输入即可同步生成四种翻转结果：字符反向 (cba ← abc)、Unicode 上下颠倒 (a → ɐ b → q)、大小写反转 (aBc → AbC)、反向 + 颠倒 (从末尾倒读)，每个结果独立复制按钮，常用于社交媒体昵称、个性签名、聊天彩蛋。

关键词：文字翻转、上下颠倒、Unicode flip、upside down text、反向文字、大小写反转、镜像文字

常见问题：

- **文字翻转生成器是免费的吗？** 是的。文字翻转生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。文字翻转生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。文字翻转生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

## 游戏娱乐

记分板、骰子、抽签等聚会与桌游工具

### [假装加载页面](https://xtechtools.com/fake-loading-page/)

假装加载页面（恶搞专用）：模拟 Windows 7/XP / macOS / Linux 蓝屏 / iOS 死机更新画面，可自定义文字与进度条速度，F11 全屏看起来更逼真。纯 CSS 模拟，无危害。

关键词：假装加载、恶搞、fake loading、系统更新、蓝屏

常见问题：

- **假装加载页面是免费的吗？** 是的。假装加载页面完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。假装加载页面属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。假装加载页面使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [单词重排小游戏](https://xtechtools.com/word-scramble-game/)

单词重排小游戏：电脑从词库随机选词（3-5 / 6-8 / 9-12 字母三档难度），打乱字母顺序，玩家在限时内还原正确拼写，附提示与得分跟踪。

关键词：单词重排、word scramble、拼词游戏、英语小游戏、Scrabble

常见问题：

- **单词重排小游戏是免费的吗？** 是的。单词重排小游戏完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。单词重排小游戏属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。单词重排小游戏使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [名字抽签器](https://xtechtools.com/name-picker/)

名字抽签 / 转盘选人工具：粘贴名单后 SVG 转盘环形分布，点击抽签 3-5 秒动画后随机指定，可加权（某些名字更高概率）、排除上次赢家、连抽 N 个，本地保存名单。

关键词：名字抽签、抽签、转盘选人、随机选人、团建抽签

常见问题：

- **名字抽签器是免费的吗？** 是的。名字抽签器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。名字抽签器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。名字抽签器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [斗地主记分板](https://xtechtools.com/doudizhu-score/)

斗地主在线记分板，自动按底分、炸弹数、春天/反春计算每局输赢分，三人累计积分长期保存在本机浏览器。

关键词：斗地主记分、斗地主计分器、斗地主算分、记分板、炸弹倍数

常见问题：

- **斗地主记分板是免费的吗？** 是的。斗地主记分板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。斗地主记分板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。斗地主记分板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [掼蛋记分板](https://xtechtools.com/guandan-score/)

掼蛋记分工具，按 2-2-1 升级规则记录双家从 2 打到 A 的进程，支持过 A 庆祝、对家配合追踪。

关键词：掼蛋记分、掼蛋计分、掼蛋升级、4 人扑克、过 A

常见问题：

- **掼蛋记分板是免费的吗？** 是的。掼蛋记分板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。掼蛋记分板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。掼蛋记分板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [麻将记分板](https://xtechtools.com/mahjong-score/)

四人麻将记分工具，每局自由录入胡牌方与失分方金额，自动累加各家积分，支持东南西北方位标注。

关键词：麻将记分、麻将计分器、麻将算分、麻将记账、四人麻将

常见问题：

- **麻将记分板是免费的吗？** 是的。麻将记分板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。麻将记分板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。麻将记分板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [UNO 记分板](https://xtechtools.com/uno-score/)

UNO 桌游计分工具，按官方规则按对手手牌剩余分数累加给胜方，最先达 500 分者胜，自动判定。

关键词：UNO 记分、UNO 计分、UNO 算分、500 分

常见问题：

- **UNO 记分板是免费的吗？** 是的。UNO 记分板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。UNO 记分板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。UNO 记分板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [通用计分板](https://xtechtools.com/scoreboard/)

通用记分板，自定义玩家人数与名称，每轮自由加减分，自动汇总当前排名，桌游/扑克/亲友赛皆宜。

关键词：计分板、记分器、桌游记分、通用计分、比赛计分

常见问题：

- **通用计分板是免费的吗？** 是的。通用计分板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。通用计分板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。通用计分板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [骰子模拟器](https://xtechtools.com/dice-roller/)

在线骰子模拟器，支持 D4/D6/D8/D10/D12/D20/D100 任意面数与多骰组合，常用于桌游、TRPG、抽签场景。

关键词：骰子、骰子模拟器、D20、TRPG 掷骰、在线骰子、随机数

常见问题：

- **骰子模拟器是免费的吗？** 是的。骰子模拟器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。骰子模拟器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。骰子模拟器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [抛硬币](https://xtechtools.com/coin-flip/)

在线抛硬币工具，支持单抛与多抛模式，自动统计正反面次数与比例，决定犹豫不决的二选一。

关键词：抛硬币、硬币正反、抽签、二选一、随机决定

常见问题：

- **抛硬币是免费的吗？** 是的。抛硬币完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。抛硬币属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。抛硬币使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [抽签转盘](https://xtechtools.com/lucky-draw/)

在线抽签转盘工具，自定义任意候选项，点击启动后随机指针停留，公司年会、聚餐选店、决策犹豫常用。

关键词：抽签、随机抽取、转盘、幸运转盘、决定器

常见问题：

- **抽签转盘是免费的吗？** 是的。抽签转盘完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。抽签转盘属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。抽签转盘使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [随机分组](https://xtechtools.com/team-picker/)

随机分组工具，输入人员名单与组数自动平均分配，支持锁定固定搭档、生成多种方案，团建分队常用。

关键词：随机分组、分队、抽签分组、团建分组、随机分配

常见问题：

- **随机分组是免费的吗？** 是的。随机分组完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。随机分组属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。随机分组使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [石头剪刀布](https://xtechtools.com/rps/)

在线石头剪刀布游戏，可与电脑对战记录历史胜率，闲暇放松或决策时使用。

关键词：石头剪刀布、猜拳、剪刀石头布、出拳

常见问题：

- **石头剪刀布是免费的吗？** 是的。石头剪刀布完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。石头剪刀布属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。石头剪刀布使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [打字速度测试](https://xtechtools.com/typing-speed/)

在线打字速度测试，支持中英文段落，实时显示 WPM（英文）/ CPM（中文）、准确率、用时，对比国际标准评级。

关键词：打字速度、WPM 测试、打字测试、CPM、typing test

常见问题：

- **打字速度测试是免费的吗？** 是的。打字速度测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。打字速度测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。打字速度测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [盲打练习](https://xtechtools.com/touch-typing/)

盲打练习工具，从 home row（asdf jkl;）到全键盘 10 节阶梯课程，SVG 键盘高亮当前手指，本地保存进度。

关键词：盲打、盲打练习、指法练习、键盘训练、touch typing

常见问题：

- **盲打练习是免费的吗？** 是的。盲打练习完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。盲打练习属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。盲打练习使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [打字小游戏](https://xtechtools.com/typing-game/)

打字小游戏，单词从屏幕顶部下落，输入对应单词消除，速度递增、3 条命，难度自动提升，本地最高分。

关键词：打字游戏、落字游戏、打字练习、英语单词、打字训练

常见问题：

- **打字小游戏是免费的吗？** 是的。打字小游戏完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。打字小游戏属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。打字小游戏使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [反应速度测试](https://xtechtools.com/reaction-time/)

反应速度测试，等待红色变绿后立即点击，5 轮取平均，对比顶级（<250ms）/ 优秀 / 正常 评级，提早点击会被惩罚。

关键词：反应速度、反应时间、reaction test、反应测试

常见问题：

- **反应速度测试是免费的吗？** 是的。反应速度测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。反应速度测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。反应速度测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [数字记忆挑战](https://xtechtools.com/number-memory/)

数字记忆挑战，4 位数起，记 3 秒消失后复现，答对升级、答错结束，普通人极限约 7-9 位，本地保存最高记录。

关键词：数字记忆、记忆训练、记忆力测试、memory test

常见问题：

- **数字记忆挑战是免费的吗？** 是的。数字记忆挑战完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。数字记忆挑战属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。数字记忆挑战使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [节拍器](https://xtechtools.com/metronome/)

在线节拍器，BPM 40-240 可调、支持 2/4 3/4 4/4 6/8 拍号，Tap Tempo 一键测速，Web Audio 原生发声。

关键词：节拍器、metronome、BPM、音乐节拍、练琴节拍

常见问题：

- **节拍器是免费的吗？** 是的。节拍器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。节拍器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。节拍器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [连点速度计数](https://xtechtools.com/tap-counter/)

点击速度测试，10 秒内尽可能多点击算 CPS（每秒点击数），自由模式无限计数。本地保存最佳记录。

关键词：CPS 测试、连点速度、click speed、点击次数

常见问题：

- **连点速度计数是免费的吗？** 是的。连点速度计数完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。连点速度计数属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。连点速度计数使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [色盲在线测试](https://xtechtools.com/color-blind-test/)

在线色盲测试，使用石原板原理识别数字隐藏图案，初步判断红绿色弱、色盲倾向，仅供参考不替代医学诊断。

关键词：色盲测试、色弱测试、Ishihara、红绿色盲、色盲检查

常见问题：

- **色盲在线测试是免费的吗？** 是的。色盲在线测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。色盲在线测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。色盲在线测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [专注计时器](https://xtechtools.com/focus-timer/)

深度工作专注计时器，三种节拍预设（番茄 25/5 / 深度 50/10 / 超长块 90/20）+ 自定义模式，今日累计番茄数。

关键词：专注计时、番茄工作法、deep work、专注力训练、focus

常见问题：

- **专注计时器是免费的吗？** 是的。专注计时器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。专注计时器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。专注计时器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [秒表 / 倒计时](https://xtechtools.com/stopwatch/)

在线秒表与倒计时双模式工具，秒表支持 lap 分段记录，倒计时结束自动响铃，纯本地无需安装。

关键词：秒表、在线秒表、倒计时、计时器、分段计时

常见问题：

- **秒表 / 倒计时是免费的吗？** 是的。秒表 / 倒计时完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。秒表 / 倒计时属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。秒表 / 倒计时使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [多项计数板](https://xtechtools.com/tally/)

多项独立计数器，每个项目独立加减、自定义颜色、汇总求和，适合家务计分、库存盘点、教学积分多场景。

关键词：多项计数、tally counter、计数器、记账分账

常见问题：

- **多项计数板是免费的吗？** 是的。多项计数板完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。多项计数板属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。多项计数板使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [宾果卡片生成器](https://xtechtools.com/bingo-card/)

在线 Bingo 卡片生成器：粘贴 24 个以上词条/短语，一键随机洗牌生成 5x5 卡片（中心可设 FREE 自由格或填充词条）；可同时生成多张不同洗牌结果的卡片用于线下聚会；点击格子切换标记，自动检测行/列/对角连线并弹出 BINGO! 庆祝；支持打印模式与本地缓存，纯前端无后端。

关键词：宾果卡片、Bingo 卡、bingo 生成器、宾果游戏、团建游戏、5x5 卡片、会议宾果、打印 Bingo

常见问题：

- **宾果卡片生成器是免费的吗？** 是的。宾果卡片生成器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。宾果卡片生成器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。宾果卡片生成器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [猜数字游戏](https://xtechtools.com/number-guess-game/)

经典猜数字小游戏：电脑随机选定 1-100、1-1000 或 1-10000 区间内的数字，玩家输入猜测，每次给出"太大"或"太小"提示并自动收窄可猜范围；统计本局尝试次数、累计通关次数，并按难度分别保存最佳记录到 localStorage；支持回车快速提交，三档难度可随时切换。

关键词：猜数字、猜数字游戏、数字游戏、guess number、二分猜数、小游戏、在线小游戏

常见问题：

- **猜数字游戏是免费的吗？** 是的。猜数字游戏完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。猜数字游戏属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。猜数字游戏使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [真心话大冒险](https://xtechtools.com/drinking-game/)

聚会必备真心话大冒险题库：内置 200 余道精选题目，按真心话与大冒险分类，按 PG（轻松）/ PG-13（朋友）/ R（亲密）三档尺度过滤；点击"下一个"或按空格快速抽题，跳过会在历史中留痕；最近 10 条抽题记录自动保存到本地，可一键复制题目分享。纯前端运行，全程不联网。

关键词：真心话大冒险、真心话、大冒险、聚会游戏、酒局游戏、truth or dare、团建小游戏、抽签题库

常见问题：

- **真心话大冒险是免费的吗？** 是的。真心话大冒险完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。真心话大冒险属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。真心话大冒险使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [谁是卧底](https://xtechtools.com/undercover-game/)

聚会必备「谁是卧底」游戏：3-12 人输入昵称，从食物 / 动物 / 名人 / 物品四大词库随机抽取相近词对（如苹果/梨、老虎/狮子），系统自动指定 1 名卧底（可选 1 名空白白板），玩家依次传递手机查看身份；描述完毕后投票淘汰，自动判定平民 / 卧底胜负。100+ 内置词对，纯前端无需联网。

关键词：谁是卧底、undercover、卧底游戏、聚会游戏、猜词游戏、团建游戏、卧底分发

常见问题：

- **谁是卧底是免费的吗？** 是的。谁是卧底完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。谁是卧底属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。谁是卧底使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [狼人杀身份分配器](https://xtechtools.com/werewolf-game/)

狼人杀线下游戏辅助：支持基础 6 人 / 高级 9 人 / 12 神板 / 自定义板子，自动按板子分发狼人 / 平民 / 预言家 / 女巫 / 猎人 / 守卫 / 白痴 / 骑士 8 种身份；玩家依次传递手机单独查看身份与技能说明，全部分发完毕后进入法官时序面板，按守卫→狼人→预言家→女巫→白天讨论→投票流程辅助主持。

关键词：狼人杀、身份分配器、狼人杀法官、狼人杀辅助、聚会游戏、推理游戏、神职板子

常见问题：

- **狼人杀身份分配器是免费的吗？** 是的。狼人杀身份分配器完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。狼人杀身份分配器属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。狼人杀身份分配器使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [你画我猜题库](https://xtechtools.com/charades-prompts/)

聚会游戏「你画我猜 / 你比我猜」题库工具：内置 200+ 中文题目，分动物 / 影视 / 成语 / 日常物品四大类，每题标记简单 / 中等 / 困难三档难度；可选 30 / 60 / 90 秒倒计时，猜中按 +1 自动下一题，跳过亦记数；得分本地保存，纯前端无需联网。

关键词：你画我猜、你比我猜、题库、charades、聚会游戏、团建游戏、比划猜

常见问题：

- **你画我猜题库是免费的吗？** 是的。你画我猜题库完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。你画我猜题库属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。你画我猜题库使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [卧底间谍 Spyfall](https://xtechtools.com/spyfall-game/)

在线版 Spyfall（卧底间谍）：3-12 名玩家，系统随机选 1 个地点（机场 / 银行 / 海滩 / 大学 / 太空站 / 教堂等 30+ 场景），随机指定 1 名间谍。非间谍看到地点 + 角色（如机场：飞行员 / 安检员），间谍仅看到「你是间谍」需通过提问回答推测地点；附 8 分钟回合计时与投票揭晓。

关键词：Spyfall、卧底间谍、间谍游戏、聚会游戏、推理游戏、提问游戏

常见问题：

- **卧底间谍 Spyfall是免费的吗？** 是的。卧底间谍 Spyfall完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。卧底间谍 Spyfall属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。卧底间谍 Spyfall使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [杀人游戏主持辅助](https://xtechtools.com/mafia-game-host/)

杀人游戏（Mafia）线下主持工具，比狼人杀更简洁，仅 4 种身份：杀手共同夜杀、警察查验阵营、医生守护他人、平民纯靠语言推理。5-16 人自动分发身份卡，控制台逐阶段推进「杀手 → 警察 → 医生 → 公示 → 讨论 → 投票」；玩家点击可标记夜杀 / 投票出局，系统自动判定胜负。

关键词：杀人游戏、Mafia、主持辅助、杀人游戏主持、聚会游戏、推理游戏

常见问题：

- **杀人游戏主持辅助是免费的吗？** 是的。杀人游戏主持辅助完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。杀人游戏主持辅助属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。杀人游戏主持辅助使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [我从未做过](https://xtechtools.com/never-have-i-ever/)

聚会经典「Never Have I Ever / 我从未做过」题库工具：内置 200+ 中文「我从未…」句子，分轻松 / 普通 / 重口三档尺度；支持单人模式（一人一题）与多人模式（轮流传递、回合计数）。本地存储进度，纯前端无需联网。

关键词：我从未做过、Never have I ever、聚会游戏、酒局游戏、题库、团建游戏、我从未

常见问题：

- **我从未做过是免费的吗？** 是的。我从未做过完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。我从未做过属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。我从未做过使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [你会选哪个](https://xtechtools.com/would-you-rather/)

聚会脑洞游戏「Would You Rather / 你会选哪个」：100+ 二选一情景题，覆盖哲学 / 搞笑 / 道德 / 食物 / 关系 5 大分类；选 A 或 B 后揭晓基于本地投票统计的百分比，看看你与多数人是否同步。本地存储无需联网。

关键词：你会选哪个、Would you rather、二选一、情景题、聚会游戏、团建游戏、脑洞题

常见问题：

- **你会选哪个是免费的吗？** 是的。你会选哪个完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。你会选哪个属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。你会选哪个使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [禁词卡片游戏](https://xtechtools.com/taboo-card-game/)

聚会经典「Taboo / 禁词」游戏：100+ 卡片每张含 1 个目标词与 5 个不能说的禁词，描述者引导队友猜出目标词；支持简单 / 普通 / 困难三档难度，60 秒（可调）回合倒计时，自动统计猜对 / 跳过 / 违禁三类得分。

关键词：禁词游戏、Taboo、禁词卡片、聚会游戏、描述游戏、团建游戏、猜词游戏

常见问题：

- **禁词卡片游戏是免费的吗？** 是的。禁词卡片游戏完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。禁词卡片游戏属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。禁词卡片游戏使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [随机分组](https://xtechtools.com/team-randomizer/)

聚会 / 团建 / 课堂随机分组工具：粘贴每行一人的名单，按组数或每组人数 Fisher-Yates 洗牌均匀分配；高级模式支持「必须分开」与「必须一起」两类约束（如把情侣分开、把朋友放一组），冲突时自动给出提示。

关键词：随机分组、抽签分组、团建分组、课堂分组、Fisher-Yates、洗牌算法、分队

常见问题：

- **随机分组是免费的吗？** 是的。随机分组完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。随机分组属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。随机分组使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [你画我猜词库](https://xtechtools.com/pictionary-words/)

专门用于「你画我猜 / Pictionary」绘画派对游戏的词库工具：300+ 中文词覆盖动物 / 食物 / 物品 / 动作 / 抽象概念 / 名人 6 大分类，每词标记 1-5 星难度；可按分类与难度区间筛选，60 / 90 / 120 秒倒计时，自动记录猜对 / 跳过得分。

关键词：你画我猜、Pictionary、绘画游戏、词库、聚会游戏、团建游戏、画图猜词

常见问题：

- **你画我猜词库是免费的吗？** 是的。你画我猜词库完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。你画我猜词库属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。你画我猜词库使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [井字棋](https://xtechtools.com/tic-tac-toe/)

在线井字棋（Tic-Tac-Toe）游戏，3x3 棋盘双人本地对战或与 AI 对决，简单 AI 随机走子，无敌 AI 采用 minimax 算法不可战胜，自动统计胜负平局。

关键词：井字棋、Tic Tac Toe、三连棋、圈叉棋、人机对战、minimax

常见问题：

- **井字棋是免费的吗？** 是的。井字棋完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。井字棋属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。井字棋使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [翻牌记忆游戏](https://xtechtools.com/memory-match/)

经典翻牌记忆配对游戏（Memory Match / Concentration），点击翻开两张牌图案相同则保留，自动计时计步并保存每个尺寸的最佳成绩。

关键词：翻牌游戏、记忆游戏、配对游戏、Memory Match、记忆训练、脑力游戏

常见问题：

- **翻牌记忆游戏是免费的吗？** 是的。翻牌记忆游戏完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。翻牌记忆游戏属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。翻牌记忆游戏使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [反应速度测试](https://xtechtools.com/reaction-time-test/)

在线反应速度测试工具，等待区域变绿后立即点击记录毫秒级反应时间，5 次取平均值，自动检测抢跑犯规，保存个人最佳 Top 10。

关键词：反应速度、反应时间、Reaction Time、反应力测试、电竞反应、神经反应

常见问题：

- **反应速度测试是免费的吗？** 是的。反应速度测试完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。反应速度测试属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。反应速度测试使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [俄罗斯轮盘](https://xtechtools.com/russian-roulette/)

在线俄罗斯轮盘（无害版）小游戏，6 弹仓随机 1 发触发，未中即继续，中则接受惩罚，可加入多名玩家轮流执行，自定义惩罚词条，适合酒局聚会破冰。

关键词：俄罗斯轮盘、酒局游戏、轮盘赌、聚会游戏、惩罚游戏、破冰游戏

常见问题：

- **俄罗斯轮盘是免费的吗？** 是的。俄罗斯轮盘完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。俄罗斯轮盘属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。俄罗斯轮盘使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

### [转瓶子](https://xtechtools.com/spin-the-bottle/)

在线转瓶子游戏（Spin the Bottle），添加 3-12 位玩家围成一圈，点击转动瓶子动画停下后随机指向一人，被选中者执行真心话或大冒险，自动排除上轮被选者。

关键词：转瓶子、Spin the Bottle、真心话大冒险、随机选人、聚会游戏、转盘选人

常见问题：

- **转瓶子是免费的吗？** 是的。转瓶子完全免费，没有功能限制、没有 Pro 版、不需要订阅或付费解锁。
- **使用时数据会上传到服务器吗？** 不会。转瓶子属于纯前端工具，所有计算与转换都在你的浏览器本地完成，输入的内容不会发送到任何服务器。
- **需要注册或登录吗？** 不需要。打开页面即可使用，本站不收集邮箱、手机号或任何个人信息。
- **在手机或平板上能用吗？** 可以。转瓶子使用响应式布局，已在 iOS Safari、Android Chrome、iPad 等主流移动浏览器测试通过。
- **可以离线使用吗？** 首次加载后，浏览器会缓存核心 JS/CSS。即使断网，已打开的页面仍可继续使用本地功能。

---

# 深度教程

## JSON 格式化完整指南：在线美化、压缩、校验与排错

> JSON 在 API 通信、配置文件、日志中无处不在。本教程从基础语法到常见错误排查，手把手讲清楚 JSON 格式化的全部用法。

URL: https://xtechtools.com/guides/json-formatter/
发布：2026-04-28 · 更新：2026-04-28

JSON（JavaScript Object Notation）是当今互联网上最常用的数据交换格式之一，从微信小程序的 wx.request、企业级 REST API、到 Kubernetes 的配置清单，JSON 几乎覆盖所有需要传递结构化数据的场景。但 JSON 一旦被压缩成单行，或夹杂大量转义字符，对人类来说就是一团乱码。本指南教你如何用浏览器内的 JSON 格式化工具高效处理这些数据，包括美化、压缩、校验、错误定位与高级技巧。

### 什么是 JSON 格式化

JSON 格式化（也叫 JSON 美化、JSON beautify）是把紧凑无空白的 JSON 字符串重新排版成带缩进、换行的可读结构的过程。例如：

```
{"name":"张三","age":30,"tags":["dev","admin"]}
```

格式化后变成：

```
{
  "name": "张三",
  "age": 30,
  "tags": [
    "dev",
    "admin"
  ]
}
```

反向操作叫 JSON 压缩（minify），把所有空白字符去掉以减少传输体积，常用于生产环境的 API 响应。

### 使用本工具的 5 个步骤

1. 把 JSON 字符串粘贴到左侧输入框（支持多行嵌套结构）。
2. 点击「格式化」按钮，右侧立即出现美化后的版本。
3. 不确定 JSON 是否合法？点「校验」获取错误位置（精确到行列号）。
4. 想压缩成单行？点「压缩」生成无空白版本，下方实时显示字符数。
5. 复制按钮一键拷贝结果，或下载为 .json 文件。

所有处理都在你的浏览器本地完成，敏感数据（如 API token、用户信息）不会上传到任何服务器，可放心粘贴生产数据调试。

### 常见错误排查

JSON 解析失败时，本工具会高亮错误位置并提示原因。下面是开发中最常踩的 5 个坑：

- **尾随逗号**：`{"a": 1,}` 不合法。标准 JSON 不允许在最后一个元素后留逗号，但 JavaScript 对象允许，初学者容易混淆。
- **单引号字符串**：`{'name': 'Alice'}` 不合法。JSON 强制要求所有字符串和键名用双引号 `"`。
- **未引号的键名**：`{name: "Alice"}` 不合法。JSON 的键名必须是字符串（双引号包裹）。
- **未转义的特殊字符**：字符串中的换行 `\n`、反斜杠 `\\`、双引号 `\"` 都需要转义。
- **注释**：标准 JSON 不支持 `//` 或 `/* */` 注释。如需注释请使用 JSON5 或 JSONC（VS Code 的 settings.json 用的就是 JSONC）。

### 进阶用法

- **JSON Path 查询**：从大型 JSON 中提取特定字段，本站还有「JSON 路径查询」工具。
- **JSON ↔ YAML/CSV 转换**：使用「数据格式转换」工具一键互转，配置文件迁移常用。
- **JSON 对比**：两份 JSON 之间的结构化 diff（哪个 key 变了、哪个加了），看「JSON 对比」工具。
- **Schema 校验**：超出本工具范围，可用 ajv 等专业库做 JSON Schema 校验。

### JSON 在前后端开发中的角色

前端发起 fetch 请求时，`response.json()` 把响应文本解析成对象；后端框架（如 Express、Spring Boot、Gin）则把请求体反序列化成结构化数据。每一次往返都涉及 JSON 的序列化与反序列化。开发阶段你会大量用到「格式化」（看清结构）、「压缩」（写测试用例时塞进单行）、「校验」（确认 mock 数据合法）这三个动作，本工具就是为这些场景设计的。

### 常见问题

**Q: JSON 格式化会改变数据本身吗？**

不会。格式化只增删空白字符（空格、换行、缩进），数据的键、值、类型完全不变。压缩同理。

**Q: 能处理多大的 JSON？**

理论上仅受浏览器内存限制，实测几十 MB 流畅。大文件解析卡顿时可考虑流式 JSON 工具（如 jq）。

**Q: 工具会上传我的数据吗？**

不会。所有解析和格式化都在浏览器本地用 JavaScript 的 JSON.parse 完成。

**Q: 想要 JSON5 / JSONC（带注释）支持？**

本工具仅支持标准 JSON。如需 JSON5，可用 json5.parse；如需 JSONC，可手动去掉注释行后再粘贴。

---

## 房贷计算器使用指南：等额本息 vs 等额本金 vs 组合贷

> 一篇文章讲清楚中国房贷的所有计算方式，含商贷+公积金组合贷、提前还款、利率变化等真实场景。

URL: https://xtechtools.com/guides/mortgage/
发布：2026-04-28 · 更新：2026-04-28

买房是大多数人一生最大的一笔支出，而房贷的还款方式、利率、年限组合，会让总利息相差 几十万元。本指南从「我月供能负担多少」「等额本息和等额本金哪个更划算」「公积金能省多少利息」三个核心问题入手，结合本站房贷计算器，教你算出真实成本。

### 中国房贷的三种类型

- **商业贷款**：从商业银行申请，利率高、放款快、额度高，适合首套但公积金不足的购房者。
- **公积金贷款**：用住房公积金账户余额办理，利率显著低于商贷（差 1-2 个点），但额度受当地公积金中心规定限制。
- **组合贷款**：商贷 + 公积金贷款的混合体，公积金部分按公积金利率、商贷部分按商业利率，分别计算月供后相加。

例如 2026 年北京首套房常见组合：商贷 200 万 @ 3.95% + 公积金 80 万 @ 2.85%，总贷 280 万。

### 等额本息 vs 等额本金

**等额本息**：每月还款总额相同，但前期利息占比高、本金占比低，后期反过来。月供恒定，便于做家庭预算，但总利息更多。

**等额本金**：每月本金还款相同（贷款额 / 总月数），利息按剩余本金计算逐月递减，因此首月月供最高、末月最低。总利息更少，但前期压力大。

以 200 万 30 年 4% 为例：

- 等额本息：月供恒定 9550 元，总利息 ≈ 144 万。
- 等额本金：首月 12222 元、末月 5572 元，总利息 ≈ 120 万（少 24 万）。

**结论**：现金流紧张选等额本息；如果有提前还款打算，等额本金前期还的本金多，节息效果更明显。

### 使用工具的 4 个步骤

1. 选择贷款类型：商贷 / 公积金 / 组合贷。
2. 输入贷款金额（万元为单位）和年化利率（%）。
3. 选择贷款年限（10-30 年）和还款方式。
4. 点「立即计算」即可看到月供、利息总额、还款总额，并展开还款计划表查看每月明细。

组合贷场景下分别填商贷和公积金两段，工具自动汇总每月月供。

### 提前还款怎么算

提前还款分两种：

- **缩短年限**：月供不变，把多还的部分直接砍掉总利息。利息节省最多。
- **减少月供**：年限不变，月供变低，每月现金流更松，但总利息节省较少。

注意：很多银行规定贷款放款后满一年才能提前还款，且部分银行收取违约金（贷款余额的 0.5%-1%）。提前还款前先咨询银行。

### LPR 浮动利率

从 2020 年起，中国个人住房贷款全面切换到 LPR（贷款市场报价利率）+ 加点的浮动利率定价。每月（或每年）根据当时的 LPR 调整月供。

2026 年首套房常见参考：5 年期 LPR 约 3.95%，加点 -20BP 至 +30BP，最终利率约 3.75%-4.25%。具体以放款时的合同为准。

### 常见问题

**Q: 我能贷多少钱？**

银行通常按家庭月收入的 50% 作为月供上限。月供 1 万 → 月入要 2 万以上，再用工具反推贷款总额。

**Q: 等额本息和等额本金提前还哪个更划算？**

同样金额、同样时机提前还，等额本金能省的利息更多。但等额本息的前期月供低，更容易攒钱。

**Q: 组合贷怎么选？**

能用公积金就用满，因为利率低 1-2%，30 年下来能省几十万。剩余部分商贷补足。

**Q: 工具会保存我的数据吗？**

不会。所有计算在浏览器本地完成，不上传任何数据。

---

## BMI 体质指数计算器使用指南（中国标准）

> BMI 是判断身材胖瘦最基础的指标。本文讲清楚中国标准与 WHO 标准的区别、BMR 基础代谢公式，以及如何用 BMI 制定减重计划。

URL: https://xtechtools.com/guides/bmi/
发布：2026-04-28 · 更新：2026-04-28

BMI（Body Mass Index，体质指数）是用身高和体重快速估算身材的国际通用指标。但中国版的标准比 WHO 国际标准更严格——这是为什么北京体检表上 24 就提示超重，而欧美 25 才算超重。本指南帮你用中国标准准确判断自己的身材，并给出减重所需的热量缺口估算。

### BMI 的计算公式

BMI = 体重(kg) ÷ 身高²(m²)

例如身高 170cm、体重 65kg：
- 65 ÷ (1.70 × 1.70) = 65 ÷ 2.89 = 22.49

本工具自动完成这一步，并对比中国标准给出分级。

### 中国 BMI 分级标准（成人）

| BMI 范围 | 中国标准 | WHO 标准 |
| --- | --- | --- |
| < 18.5 | 偏瘦 | 偏瘦 |
| 18.5-23.9 | 正常 | 正常（18.5-24.9）|
| 24.0-27.9 | 超重 | 超重（25.0-29.9）|
| ≥ 28.0 | 肥胖 | 肥胖（≥ 30）|

中国标准更严格的原因：亚洲人群在较低 BMI 时，腹型肥胖与代谢综合征发生率已显著升高。如果你 BMI 25 但腰围超 90cm（男）或 85cm（女），健康风险与欧美 BMI 30 相当。

### 理想体重区间

理想体重 = BMI 18.5-23.9 对应的体重范围。例如身高 170cm：

- 下限：18.5 × 1.70² = 53.5 kg
- 上限：23.9 × 1.70² = 69.1 kg

落在 53.5-69.1 kg 都是健康范围。本工具自动计算并在结果区显示。

### BMR 基础代谢与 TDEE

**BMR（基础代谢率）**：身体在完全静止时维持基本生命活动（呼吸、心跳、体温）每天消耗的热量。本工具用 Mifflin-St Jeor 公式：

- 男性：10 × 体重 + 6.25 × 身高 − 5 × 年龄 + 5
- 女性：10 × 体重 + 6.25 × 身高 − 5 × 年龄 − 161

**TDEE（每日总能耗）**：BMR × 活动系数。久坐 ×1.2，每周轻度运动 ×1.375，中度运动 ×1.55，高强度 ×1.725。

**减重逻辑**：每天摄入热量比 TDEE 少 500 大卡，每周可减 0.5 kg。少吃 1000 大卡风险大、易反弹，不推荐。

### BMI 的局限

BMI 不区分肌肉与脂肪，对以下人群可能失真：
- 健身爱好者（肌肉重）：BMI 偏高但体脂正常
- 老年人（肌肉萎缩）：BMI 正常但体脂超标
- 孕妇、儿童：标准不同

更准确的评估建议结合体脂率、腰臀比、内脏脂肪等综合指标。

### 常见问题

**Q: BMI 多少最健康？**

中国标准下，21-23 之间死亡率最低（基于大型流行病学研究）。

**Q: 腰围比 BMI 更重要吗？**

对心血管疾病风险预测，腰围（腹型肥胖指标）比 BMI 更敏感。男性应 < 90cm、女性 < 85cm。

**Q: 减肥每天少吃多少？**

建议 TDEE - 500 大卡。例如 TDEE 2000，减脂期吃 1500 大卡，可持续且不易反弹。

**Q: BMI 公式哪里来的？**

比利时统计学家 Adolphe Quetelet 在 1832 年提出，原称 Quetelet Index，1972 年由 Ancel Keys 重命名为 BMI 并被 WHO 采用。

---

## 二维码生成完整教程：URL / WiFi / vCard / Logo 嵌入

> 从基础的 URL 二维码到 WiFi 一键连接、电子名片，再到带 Logo 的品牌二维码，本指南涵盖所有常见场景。

URL: https://xtechtools.com/guides/qr-code/
发布：2026-04-28 · 更新：2026-04-28

二维码（QR Code）由日本 Denso Wave 公司在 1994 年发明，本意是给汽车工厂追踪零件用，谁也没想到它会成为今天最普及的信息载体。从超市付款到地铁进站，从外卖菜单到微信加好友，二维码无处不在。本教程教你用本站工具生成各种类型的二维码，包括很多人不知道的「WiFi 一键连接码」和「电子名片码」。

### 二维码的基本结构

一个二维码由「定位图案」（左上、右上、左下三个回字形）、「时序图案」、「数据区」、「容错区」组成。容错级别决定可被遮挡多少仍能识别：

- L 级（约 7%）：理想环境，最高存储量
- M 级（约 15%）：默认级别
- Q 级（约 25%）：户外推荐
- H 级（约 30%）：嵌入 Logo 必选

本工具默认 M 级。要在中央放 Logo 一定要切到 H 级，否则覆盖区超出容错范围会扫不出来。

### URL / 文本二维码

最常见的用法。把网址或任意文本粘贴到输入框，立即生成。注意：

- URL 长度越长，二维码越密集，建议短链化（用 bit.ly 或自建短链）。
- 中文文本会被 UTF-8 编码，每个汉字约 3 字节，比英文密集。
- 二维码大小并不会无限增长——超过 300 字符就要考虑分块或服务端存储。

### WiFi 二维码

WiFi 二维码格式（行业标准）：
```
WIFI:T:WPA;S:网络名;P:密码;;
```

本工具的「WiFi」标签自动生成此格式。客户/访客用手机扫描后会弹出「连接到 XXX 网络？」直接接入，不用告知密码。

**注意**：iOS 11+ 和 Android 10+ 原生支持，部分老旧设备需要装第三方扫码 App。

### vCard 电子名片

vCard 标准格式（RFC 6350）支持姓名、电话、邮箱、公司、网址等。本工具的「名片」标签生成 vCard 3.0 格式，扫码后弹出「保存到通讯录」。适合展会、会议交换名片，比纸质名片更易管理。

### 颜色与 Logo

- **颜色**：默认黑白对比度最佳，识别率最高。深色前景 + 浅色背景，前景与背景对比度建议 ≥ 4.5。避免低对比的同色系组合（如浅灰 + 白）。
- **Logo 嵌入**：本工具下载 SVG 后，可在 Figma/Sketch 里在中央叠加 Logo。Logo 尺寸不超过二维码 25%，且容错级别选 H。
- **PNG vs SVG**：印刷或大尺寸用 SVG（矢量、不失真）；微信、社交分享用 PNG。

### 二维码失效的常见原因

生成成功但扫不出来？检查：
- Logo 过大（覆盖超 30% 数据区）
- 颜色对比不足
- 印刷时 DPI 太低导致边缘模糊
- 反相二维码（白色码 + 深色背景）部分识别器不支持

### 常见问题

**Q: 二维码会过期吗？**

二维码本身不会过期。但如果它指向的 URL 失效（页面被删），扫码后会跳到 404。

**Q: 二维码安全吗？**

生成本身安全，但扫码访问的 URL 可能含恶意脚本。陌生二维码扫前先看 URL 域名。

**Q: 能识别二维码内容吗？**

可以。本站还有「二维码识别」工具，上传图片即可解析内容。

**Q: 工具会保存生成的二维码吗？**

不会。所有生成都在浏览器本地完成，输入内容不上传。

---

## 颜色转换完整指南：HEX / RGB / HSL / HSV / WCAG 对比度

> 前端开发与设计师必备的颜色格式互转、配色生成、无障碍对比度检查全流程教程。

URL: https://xtechtools.com/guides/color/
发布：2026-04-28 · 更新：2026-04-28

颜色在网页和 UI 设计中有 4 种以上常见表示法，每种适合不同场景。HEX 紧凑、RGB 直观、HSL 适合调色板、HSV 适合取色器。这篇文章把它们的换算原理、何时该用哪种、如何用 WCAG 标准检查可访问性讲清楚。

### 4 种颜色格式速览

- **HEX**：`#RRGGBB`，每对十六进制代表 0-255 的红/绿/蓝分量。`#FF0000` = 红。最紧凑，CSS 中最常用。
- **RGB**：`rgb(255, 0, 0)`，三个十进制 0-255。直观但更长。`rgba(...)` 加透明度。
- **HSL**：`hsl(0, 100%, 50%)`，色相 0-360（红、橙、黄...）+ 饱和度 + 明度。调色板友好。
- **HSV**：`hsv(0, 100%, 100%)`，色相 + 饱和度 + 亮度。Photoshop 取色器用的就是它。

### HSL 为什么适合做主题色

HSL 的明度通道（Lightness）从 0 到 100：
- 0 = 全黑
- 100 = 全白
- 50 = 纯色

固定 H 和 S，只调 L，就能从一个主色系生成完整明度阶梯（85/70/55/40/25），用作 hover、active、disabled 等状态色。Tailwind 的 50/100/.../900 阶梯就是按 HSL 明度划分的。本工具生成调色板用的也是这个原理。

### WCAG 对比度（无障碍）

WCAG 2.1 是 W3C 制定的网页无障碍标准。文字与背景的对比度必须达到：

- **AA 级**：正文 4.5:1，大字（≥18px 或加粗 14px）3:1
- **AAA 级**：正文 7:1，大字 4.5:1

本工具计算两个颜色的相对亮度比，给出对比度数值与是否通过 AA/AAA。

**实战建议**：
- 普通正文用 AA 4.5:1 起步（很多默认 #666 在白底上不够）
- 政府/医疗/教育站点必须 AA 起，最好 AAA
- 浅色背景配深色字（比反过来更易读）

### 调色板生成原则

工具基于主色的 HSL 生成 5 阶色板（明度 85/70/55/40/25）。这种均匀阶梯适合做：
- 状态色（hover = -10 明度，active = -20）
- 分类标签（同一色相不同明度区分严重程度）
- 数据可视化（深浅层级）

避免随意挑两个无关色组合——色相差距大的颜色容易脏。

### CMYK 与印刷

前端不太用 CMYK（青/品红/黄/黑），但做品牌物料印刷时绕不开。CMYK 是减色模型（油墨叠加变暗），RGB 是加色模型（光叠加变亮）。同一颜色在屏幕和印刷上看到的效果会有差异，专业项目建议印刷前打样。

### 常见问题

**Q: HEX 三位短写代表什么？**

#RGB 是 #RRGGBB 的简写，每个字符复制一次。`#f0a` = `#ff00aa`。仅适合纯色。

**Q: rgba 的 alpha 是 0-1 还是 0-100？**

CSS 中 alpha 是 0-1 浮点数，1 = 完全不透明。HSL/HSV 中的饱和度和明度才是 0-100% 百分比。

**Q: 什么是色彩空间？**

sRGB（屏幕标准）、Display P3（更广，iPhone）、Adobe RGB（印刷）等。本工具默认 sRGB。

**Q: WCAG 不达标会怎样？**

部分用户（视力障碍、色盲）会看不清。法律层面，欧盟 EAA、中国信通院无障碍标准都要求商业站点合规。

---

## Base64 编码解码完整指南：原理、用法与常见坑

> Base64 把二进制数据塞进文本协议的编码方式。本文讲清楚什么时候该用、URL Safe 变体、以及踩过的坑。

URL: https://xtechtools.com/guides/base64/
发布：2026-04-28 · 更新：2026-04-28

Base64 是把任意二进制数据编码成 ASCII 字符串的一种方式，常用于把图片塞进 HTML/CSS、把二进制塞进 JSON、把 token 塞进 URL。本指南覆盖原理、URL Safe 变体、文件场景、JWT 应用，以及最常见的踩坑点。

### Base64 原理

Base64 把每 3 字节（24 bits）的数据按 6 位一组切成 4 个字符，从 64 个安全字符（A-Z / a-z / 0-9 / + /）中查表替换。不足 3 字节时用 `=` 填充。

**结果**：Base64 编码后体积膨胀约 33%（每 3 字节变 4 字符）。

### 什么时候要用 Base64

- **HTML/CSS Data URL**：小图标内嵌进 CSS，省一次 HTTP 请求
- **JWT Token**：JWT 三段都是 URL Safe Base64
- **Email 附件**：MIME 协议要求二进制附件用 Base64
- **API 传二进制**：在 JSON 里传图片、证书、签名
- **Basic Auth**：HTTP Authorization: Basic 头部用 Base64 编码 user:password

### URL Safe Base64

标准 Base64 的 `+` 和 `/` 在 URL 中需要转义（变成 `%2B` `%2F`），不友好。URL Safe Base64 的差别：

- `+` → `-`
- `/` → `_`
- 末尾 `=` 通常省略

**JWT 用的就是 URL Safe Base64**。本工具勾选「URL Safe」选项即可输出。

### 文件 ↔ Base64

- 切换到「文件模式」选择本地文件
- 文件被读为字节数组，再 Base64 编码
- 解码模式：粘贴 Base64，工具自动尝试 UTF-8 解码；如失败则提示是二进制

**Data URL 完整格式**：`data:image/png;base64,iVBOR...` 前缀部分要手动加。本站「图片转 Data URL」工具会自动加。

### 常见坑

- **不是所有 Base64 都能 UTF-8 解码**：编码的是图片或加密结果时，解码后是乱码，应直接保存为二进制
- **`=` 填充不是装饰**：去掉填充后部分库会解码失败，标准库都能容忍
- **包含空白字符**：Base64 字符串中的换行、空格在解码前要先去掉
- **大小写敏感**：Base64 区分大小写，`abc` 和 `ABC` 是不同的字节

### 常见问题

**Q: Base64 是加密吗？**

不是。Base64 是编码（双向无损可逆），任何人都可解码。需要保密用 AES、RSA 等真正的加密算法。

**Q: Base64 比原文件大多少？**

约大 33%（每 3 字节变 4 字符）。1 MB 文件 Base64 后约 1.33 MB。

**Q: 为什么 JWT 用 URL Safe Base64？**

JWT token 经常出现在 URL 查询参数或路径中，普通 Base64 的 + 和 / 会与 URL 保留字符冲突。

---

## 正则表达式速学：从零到正确写出邮箱验证

> 正则不只是程序员的活——批量处理 Excel、查找替换日志、表单验证都要用。本指南从最基础语法到常见模式，1 小时上手。

URL: https://xtechtools.com/guides/regex/
发布：2026-04-28 · 更新：2026-04-28

正则表达式（Regular Expression，简称 regex）是描述字符串模式的迷你编程语言。学会它的基础后，你能在几秒内完成原本需要写循环和判断才能做的事。本指南配合本站正则测试器，从最基础的语法讲到常用实战模式。

### 5 个核心元字符

- `.` 匹配任意单字符（除换行）
- `*` 前一个字符 0 次或多次
- `+` 前一个字符 1 次或多次
- `?` 前一个字符 0 次或 1 次
- `\` 转义后面的字符

例：`a.b` 匹配 `a1b`、`acb`、`a b`，但不匹配 `ab`（中间必须有字符）。

### 字符类速查

- `\d` 数字 [0-9] / `\D` 非数字
- `\w` 字母数字下划线 [a-zA-Z0-9_] / `\W` 反向
- `\s` 空白（空格、Tab、换行） / `\S` 反向
- `[abc]` 只能是 a 或 b 或 c
- `[^abc]` 不能是 a/b/c
- `[a-z]` 范围 a 到 z

### 锚点与边界

- `^` 行首（多行模式下每行开头）
- `$` 行尾
- `\b` 单词边界（介于 `\w` 和 `\W` 之间）
- `\B` 反向

例：`\bcat\b` 匹配独立的 cat 单词，不匹配 caterpillar 中的 cat。

### 量词进阶

- `{n}` 恰好 n 次
- `{n,}` 至少 n 次
- `{n,m}` n 到 m 次
- 加 `?` 变贪婪 → 懒惰：`.*?` 尽量少匹配

例：手机号 `1[3-9]\d{9}`（1 + 3-9 任一数字 + 9 个数字）。

### 分组与捕获

- `(...)` 捕获组（可在结果中按 $1 引用）
- `(?:...)` 非捕获组（性能更好，不返回结果）
- `(?=...)` 正向先行断言（要满足但不消耗）
- `(?!...)` 反向先行断言

### 常用模式（直接抄）

- 邮箱：`[\w.+-]+@[\w-]+\.[\w.-]+`
- 中国手机号：`1[3-9]\d{9}`
- URL：`https?://[\w-./?#@!$&'()*+,;=%]+`
- 中文字符：`[\u4e00-\u9fa5]`
- IPv4：`(\d{1,3}\.){3}\d{1,3}`
- 日期 YYYY-MM-DD：`\d{4}-\d{2}-\d{2}`

本工具的「常用模式」按钮可一键加载这些，直接测试。

### 常见问题

**Q: 正则在不同语言有差异吗？**

有。本工具用 JavaScript 引擎，与 Python `re`、PHP PCRE 大致相同但细节有差。复杂正则建议先在目标语言测试。

**Q: 为什么我的正则匹配太多？**

可能默认贪婪了。`.*` 会尽量多吃，加 `?` 变懒惰：`.*?` 尽量少吃。

**Q: 能用正则解析 HTML 吗？**

简单提取可以，复杂场景请用 DOM 解析器（如 cheerio、BeautifulSoup）。HTML 嵌套结构正则很难表达。

---

## JWT 解码完整指南：结构、claims、安全实践

> JSON Web Token 是现代 Web 鉴权事实标准。本指南讲清楚 JWT 的三段结构、常用 claims、安全风险与最佳实践。

URL: https://xtechtools.com/guides/jwt/
发布：2026-04-28 · 更新：2026-04-28

JWT（JSON Web Token）是一种紧凑的、URL 安全的令牌格式，常用于 API 鉴权、单点登录（SSO）、信息交换。本指南从结构入手，讲清楚每段的含义、常见 claim 字段、何时该用 JWT、以及最容易出的安全问题。

### JWT 的三段结构

JWT 由 `header.payload.signature` 三段组成，每段是 Base64URL 编码：

```
eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiIxMjMifQ.SflKxw...
```

- **Header**：算法（HS256、RS256...）+ 类型
- **Payload**：实际数据（claims）
- **Signature**：用 secret 对前两段签名的结果

本工具粘贴 token 自动分别显示三段，并把 payload 中的时间字段（iat/exp/nbf）转为可读时间。

### 常用 Claims（声明）

- `iss` Issuer 签发者（如 https://api.example.com）
- `sub` Subject 主题（通常是用户 ID）
- `aud` Audience 受众（哪个服务可用）
- `exp` Expiration 过期时间（Unix 秒）
- `nbf` Not Before 生效时间
- `iat` Issued At 签发时间
- `jti` JWT ID（防重放）

业务自定义 claim 也可以放，如 `name`、`role`、`tenantId`。

### 解码 ≠ 验签

Header 和 Payload 是 Base64 编码的明文，**不需要密钥即可读取**。本工具就是只解码不验签。

服务端必须用 secret/公钥**验证签名**才能信任 token 内容。验签失败就拒绝，否则 JWT 就成了废纸。

安全启示：**敏感信息不要放 payload**，因为客户端能看到。

### 过期与刷新

- `exp` 决定过期时间，常见 15 分钟到 24 小时
- 短期 access token + 长期 refresh token 是行业最佳实践
- 客户端在 access token 过期前用 refresh token 换新 token
- refresh token 应只在受保护接口使用，可吊销（数据库黑名单）

### 常见安全坑

- **alg=none 攻击**：旧库允许 alg 设为 none 跳过验签。生产中必须强制指定算法
- **密钥太弱**：HS256 至少 256 位密钥；生产推荐 RS256（非对称，私钥仅服务端）
- **不验 exp**：忘记检查过期，token 永远有效
- **payload 含敏感数据**：客户端能 base64 解码读到，密码绝不能放
- **太长**：JWT 越长 cookie/header 越大，影响每次请求

### 常见问题

**Q: JWT vs Session 怎么选？**

JWT 无状态、易横向扩展，但难撤销；Session 易撤销但需要后端存储。短期 token 用 JWT，长期会话用 Session 更灵活。

**Q: 能在浏览器存 JWT 吗？**

可以但要注意：localStorage 易遭 XSS；HttpOnly Cookie 安全但要防 CSRF。综合推荐 HttpOnly Cookie + SameSite=Strict + CSRF token。

**Q: 什么时候用 RS256 而不是 HS256？**

微服务架构下：签发者持私钥，多个验证方持公钥，避免共享 secret。

---

## UUID 完整指南：v4 / v7 / Nano ID 怎么选

> 从 UUID 标准、版本差异，到 Nano ID 的优势、何时该用哪种 ID 生成方式，本指南给你结论。

URL: https://xtechtools.com/guides/uuid/
发布：2026-04-28 · 更新：2026-04-28

系统中需要唯一 ID 时，从自增 ID 到 UUID 再到 Nano ID 有多种选择。每种各有优劣。本指南讲清楚什么场景该用哪一种、以及实际生成逻辑。

### UUID 是什么

UUID（Universally Unique Identifier）是 128 位的标识符，习惯上写成 8-4-4-4-12 共 36 字符（含 4 个 `-`）的十六进制字符串：

`f81d4fae-7dec-11d0-a765-00a0c91e6bf6`

碰撞概率：v4 每秒生成 10 亿个，连续 100 年才有 50% 概率撞一次。可以认为唯一。

### v1/v3/v4/v5/v7 五种版本

- **v1**：基于时间戳 + MAC 地址。可逆推 MAC，**不推荐**，泄露隐私
- **v3**：基于命名空间 + 名字的 MD5（已废弃）
- **v4**：完全随机。最常用
- **v5**：基于命名空间 + 名字的 SHA-1。同样输入产生同样 UUID，适合幂等场景
- **v7**：时间戳前缀 + 随机后缀，单调递增。**对数据库索引友好**，2024 年正式标准化

现代项目优先选 v4 或 v7。

### Nano ID

Nano ID 是 UUID 的轻量替代：
- 默认 21 字符（vs UUID 36 字符），节省 40% 长度
- 字符集 64 个（A-Z a-z 0-9 _ -），URL 安全
- 可配置长度，碰撞概率自己算

**何时选 Nano ID**：
- URL 中出现的 ID（如分享链接 example.com/p/abc123）
- 不需要标准 UUID 协议兼容
- 想要更短的字符串

### v4 vs v7（数据库索引视角）

v4 完全随机 → 每次插入都在 B+ 树随机位置，导致页分裂频繁、缓存失效。

v7 时间戳前缀 → 新 ID 总是接近最大值，单调递增插入，B+ 树几乎不需要重排。

实测在 MySQL InnoDB 上，v7 比 v4 写入快 30-50%。如果你的表会有几百万行 + 高频写入，v7 是更好选择。

### 何时不用 UUID

- **小表 + 单实例数据库**：自增 BIGINT 更快、占空间小（8 字节 vs UUID 16 字节）
- **公开但不敏感的资源**：用短链 + 自增 + Hashids 反而更紧凑
- **需要按时间排序**：v1/v7 可，v4 不行

UUID 的真正优势：分布式生成、客户端预生成、跨表唯一。

### 常见问题

**Q: UUID 真的不会重复吗？**

v4 每秒生成 10 亿个连续 100 年才 50% 概率重复。实际上你不需要担心。

**Q: GUID 和 UUID 是一回事吗？**

是。Microsoft 把它叫 GUID，本质相同。

**Q: UUID 的版本号在哪里看？**

第三段第一位字符：v1 = 1xxx, v4 = 4xxx, v7 = 7xxx。本工具会自动按你选的版本生成。

---

## 复利计算器使用指南：72 法则与定投精算

> 一篇讲清楚复利公式、72 法则、基金定投计算，以及为什么巴菲特 99% 的钱来自 50 岁后。

URL: https://xtechtools.com/guides/compound/
发布：2026-04-28 · 更新：2026-04-28

爱因斯坦说复利是"世界第八大奇迹"。但很多人对复利的威力没有直观感受——本指南配合本站复利计算器，给你算几个真实场景，帮你设计长期理财方案。

### 复利的基本公式

一次性投入：FV = P × (1 + r)^t

带定期追加：年金终值公式

**例**：5 万元投入年化 7% 的指数基金，30 年后变成多少？
50000 × 1.07^30 = 380,613 元（约 38 万）

如果再每月投 2000 元呢？
本工具一键计算，结果约 280 万元，其中本金 77 万、利息 203 万。

### 72 法则（心算神器）

本金翻倍年数 ≈ 72 ÷ 年化利率（百分数）

- 6% → 72/6 = 12 年翻倍
- 8% → 9 年翻倍
- 10% → 7.2 年翻倍

这个估算与精确公式偏差只有 1-2%，便于快速估算。同样可估贬值速度：4% 通胀，72/4 = 18 年购买力减半。

### 名义利率 vs 实际利率

看到「年化 7%」要警惕——它是名义利率。如果通胀 3%，实际购买力增长只有 4%。

做长期规划应该用**实际利率**：名义利率 - 预期通胀率。

本工具的利率字段建议输入实际利率，结果代表的就是「真实购买力」。

### 基金定投实战

月供 X 元，年化 r%，持续 N 年的终值（每月复利近似）：

月供 2000、年化 8%、20 年 → 117 万（本金 48 万 + 利息 69 万）
月供 2000、年化 8%、30 年 → 297 万（本金 72 万 + 利息 225 万）

**关键**：晚开始 10 年，少赚 180 万。复利的核心威力在最后 1/3 时间——前期积累不显眼，后期才指数式增长。

### 常见误区

- **指望短期暴涨**：复利适合长期，3-5 年体现不出威力
- **忽略费用**：基金有 0.5%-2% 的管理费，长期下来吃掉很多利息
- **不再投入**：只有持续追加才能形成「复利 + 持续投入」双引擎
- **频繁切换**：来回换基金触发交易费 + 错过反弹日。指数定投是最简单的复利

### 常见问题

**Q: 7% 年化是不是太乐观？**

美股标普 500 长期平均年化 ~10%（去通胀后约 7%）。A 股沪深 300 长期 ~8% 名义。但短期波动大，10 年起步才能稳。

**Q: 为什么巴菲特说他 99% 的钱来自 50 岁后？**

他从 11 岁开始投资，60 岁才达到 30 亿身家，90 岁达到 1000 亿——后 30 年的财富比前 50 年多 30 倍。这就是复利曲线的尾部。

**Q: 该选「按月复利」还是「按年复利」？**

差距很小：年化 7% 时，按月比按年多约 0.23 个百分点（7.23% 实际）。本工具默认按月，更接近真实场景。

---

## 密码生成与哈希计算完整指南

> 随机密码该多长？MD5 还安全吗？本指南讲清楚密码学安全随机数、密码强度、哈希函数选型。

URL: https://xtechtools.com/guides/password/
发布：2026-04-28 · 更新：2026-04-28

本指南讲清楚两个相关但不同的话题：1）如何生成强随机密码，2）哈希函数怎么选。两者都涉及密码学安全随机和编码原理。

### 强密码的三个维度

- **长度**：12 位起步，重要账号 16+ 位
- **字符集**：大小写 + 数字 + 符号（4 类全勾选最强）
- **不可预测**：用 crypto.getRandomValues，不要 Math.random

本工具默认 16 位 + 大小写 + 数字，可勾选符号与排除易混字符（0/O/l/1）。

### 密码熵的计算

熵 = log₂(字符集大小^密码长度)

- 8 位纯数字：log₂(10^8) ≈ 27 bits（弱）
- 12 位字母数字：log₂(62^12) ≈ 71 bits（中）
- 16 位含符号：log₂(94^16) ≈ 105 bits（强）

**经验法则**：60 bits 一般用，80 bits+ 重要账号。

### 哈希函数选型

- **MD5**：1992 年算法，已被破解。仅用于完整性校验，**不要用于密码存储**
- **SHA-1**：2017 年被 Google 破解。同上
- **SHA-256/512**：当前安全。文件校验、签名首选
- **bcrypt / Argon2**：专门为密码存储设计，慢哈希 + 加盐

**关键**：网站存用户密码必须用 bcrypt/Argon2，不能用 SHA-256（被彩虹表攻击）。本工具的 SHA 系列适合校验场景。

### 使用 Web Crypto API

本工具的 SHA 全部走 `crypto.subtle.digest`（Web Crypto API）：
- 浏览器原生，性能比纯 JS 快 10-100x
- 经过审计，安全可信
- 同样用于 HTTPS 证书验证

MD5 因 Web Crypto 不支持（已被认为不安全），用纯 JS 实现兜底。

### 密码管理实战

- **不要重复用密码**：每个网站独立
- **密码管理器**：1Password / Bitwarden / iCloud Keychain，自动生成+保存
- **二步验证**：开启 TOTP（Google Authenticator）或硬件密钥（YubiKey）
- **泄露排查**：定期在 haveibeenpwned.com 查询邮箱是否在数据泄露中

### 常见问题

**Q: crypto.getRandomValues 真的安全吗？**

是。它使用操作系统的密码学安全随机源，可用于生成密钥、token、密码。

**Q: MD5 现在还能用吗？**

可用于非安全场景（文件校验完整性、缓存 key 哈希）。**不要**用于密码存储、数字签名、防篡改。

**Q: SHA-256 和 SHA-512 哪个好？**

一般场景 SHA-256 足够。SHA-512 在 64 位 CPU 上更快但输出更长。

---

## Markdown 编辑器完整教程：语法 + 实战

> 学会 Markdown 后，写博客、文档、笔记效率翻倍。本指南覆盖标准语法、GFM 扩展、技术写作技巧。

URL: https://xtechtools.com/guides/markdown/
发布：2026-04-28 · 更新：2026-04-28

Markdown 是 2004 年由 John Gruber 设计的轻量级标记语言，目标是「易读易写、转 HTML 友好」。如今 GitHub、知乎、各种博客系统都原生支持。本指南配合本站 Markdown 编辑器讲清楚所有常用语法。

### 基础语法 8 条

- 标题：`#` 一级到 `######` 六级
- 粗体：`**text**` / 斜体：`*text*` / 删除线：`~~text~~`
- 链接：`[文字](URL)` / 图片：`![alt](URL)`
- 行内代码：`` `code` `` / 代码块：三个反引号包围
- 引用：`> 引用内容`
- 无序列表：`- 项目` / 有序列表：`1. 项目`
- 分隔线：单独一行三个 `---`
- 转义：`\*` 显示星号本身

### GitHub Flavored Markdown 扩展

GFM 在标准之上加了：
- **表格**：`|`+ `---` 分隔头部
- **任务列表**：`- [x] 已完成` / `- [ ] 待办`
- **删除线**：`~~text~~`
- **fenced code 带语言**：` ```javascript ` 启用语法高亮
- **自动链接**：纯 URL 自动转链接
- **emoji**：`:smile:` → 😄（看渲染器支持）

### 技术写作 5 个技巧

1. 标题层级**不要跳级**：H2 之后是 H3，不要直接 H4
2. **代码块带语言名**：让搜索引擎和阅读器知道语言
3. **链接锚点**：标题自动生成 id，文中可用 `[跳到第二节](#二级标题)`
4. **图片用相对路径**：方便仓库迁移；如发布到 CDN，用绝对路径
5. **避免 HTML 混用**：标准 Markdown 容器都能渲染时，少用原生 HTML 标签

### Markdown ↔ HTML 转换

本工具基于 marked + DOMPurify：
- **marked**：把 MD 转成 HTML
- **DOMPurify**：清洗 HTML，防 XSS
- **turndown**：HTML 反向转 MD

反向转换适合从富文本编辑器迁移到 Markdown 体系。

### 部分高级语法

- 数学公式：`$E=mc^2$` 行内、`$$...$$` 块级（需 KaTeX/MathJax）
- 流程图：mermaid 语法，` ```mermaid graph TD; A-->B `
- 脚注：`[^1]` 在文末 `[^1]: 脚注内容`
- 高亮：`==text==`（部分支持）

### 常见问题

**Q: Markdown 和富文本编辑器哪个好？**

技术文档、博客、API 文档用 Markdown；销售物料、复杂排版用富文本。Markdown 优势：版本可控、易迁移。

**Q: GFM 与 CommonMark 有什么区别？**

CommonMark 是 Markdown 标准化版本。GFM = CommonMark + GitHub 扩展（表格、任务列表、删除线、自动链接）。

**Q: 能写带样式的 Markdown 吗？**

部分渲染器支持嵌入 HTML，但通常不推荐——失去 Markdown 平台无关性的优势。

---

## CSS 渐变完整指南：linear / radial / conic 实战

> 从基础语法到多色阶过渡、消除色带、生成炫酷效果，本指南配合渐变生成器一步步教你做出有质感的渐变。

URL: https://xtechtools.com/guides/css-gradient/
发布：2026-04-28 · 更新：2026-04-28

CSS 渐变让纯 CSS 实现复杂背景成为可能。从简单的双色过渡到圆锥、径向、多色阶组合，掌握后能少写很多图片资源。

### 三种渐变速览

- `linear-gradient(方向, 色阶)` 直线方向变化
- `radial-gradient(形状, 色阶)` 中心向外扩散
- `conic-gradient(from 角度, 色阶)` 围绕中心旋转，常用于做饼图

方向单位：`to top`、`135deg`、`to bottom right`。

### 色阶位置

色阶可指定位置百分比：
```
linear-gradient(135deg, #ff6b6b 0%, #feca57 50%, #48dbfb 100%)
```
中间停在 50% 位置；不写位置时自动均分。

### 消除色带（banding）

简单两色渐变会出现明显条纹，原因是 8 位色深无法表达中间无限种颜色。解决：
- 在中间插入相近过渡色
- 加噪声纹理覆盖
- 用 OKLCH 色彩空间：`linear-gradient(in oklch, ...)`

### radial 与 conic 高级用法

- 径向渐变指定形状与位置：`radial-gradient(circle at top right, ...)`
- conic 圆锥渐变最适合做饼图：
```
background: conic-gradient(red 0% 25%, blue 25% 75%, green 75% 100%)
```

### 实战预设

日落：`linear-gradient(135deg, #ff6b6b, #feca57)`
海洋：`linear-gradient(135deg, #667eea, #764ba2)`
极光：`linear-gradient(135deg, #00c9ff, #92fe9d)`
本工具内置 6 种预设，点一下即可应用。

### 常见问题

**Q: 渐变和图片哪个性能好？**

渐变。GPU 加速，零网络请求，缩放无损失。

**Q: 能在文字上用渐变吗？**

可以。`background-clip: text; color: transparent` 把渐变切到文字形状。

**Q: 渐变可以动画吗？**

渐变本身不能 transition，但可以通过位移、旋转、background-size 让它看起来在动。

---

## 折扣计算完整指南：折扣率、满减、叠加技巧

> 商家怎么定价更香？消费者怎么算最优惠？本指南讲清楚折扣率与满减的差别、叠加规则、实付倒推折扣。

URL: https://xtechtools.com/guides/discount/
发布：2026-04-28 · 更新：2026-04-28

电商促销眼花缭乱：先打折再用券？还是先用券再打折？双 11 拼组合到底省多少？本指南配合折扣计算器告诉你怎么算。

### 中国 vs 西方的折扣表达

- 中国：「8 折」= 原价 × 80% = 实付 80%（即减 20%）
- 西方：「20% off」= 减 20%，实付 80%
两者结果一样，表达方式相反。

### 叠加顺序：先折后券 vs 先券后折

原价 1000，8 折 + 满 500 减 100 优惠券：
- **先折后券**：1000 × 0.8 = 800，800 - 100 = 700 元
- **先券后折**：1000 - 100 = 900，900 × 0.8 = 720 元

**结论**：先折后券省 20 元。本工具默认先折后券。

### 倒推折扣率

已知原价 999、实付 599 → 599 / 999 = 0.5996 → 约 6 折。

用途：评估秒杀力度、比较两家电商哪个便宜。

### 满减阶梯计算

常见「满 200 减 30 / 满 500 减 100 / 满 1000 减 250」阶梯：
关键是凑单到下一档：买 489 不如买 500（多花 11 多减 70 = 净省 59）。

### 电商常见套路识别

- **价签先涨再降**：双 11 前一周悄悄涨价，再「打折」回来
- **跨店满减优先用低价品凑单**：满 300 减 50 时，凑两件 150 比买一件 300 更划算
- **券有时间限制**：当天 / 24 小时内必须用完
- **运费券**：免运费 = 减 0-15 元，金额低的小件商品收益大

### 常见问题

**Q: 8 折是 80% 还是 8%？**

中国习惯：8 折 = 实付 80%（即减 20%）。10 折 = 不打折。

**Q: 商家怎么定折扣最赚？**

心理学研究：9.9 元（小额尾数）比 10 元转化率高 30%；7-8 折比 5 折更触发购买。

**Q: 先付定金再付尾款怎么算？**

把定金视为已付部分，尾款 = 总价 - 定金。注意定金通常不退。

---

## cURL 命令生成器使用指南：HTTP 调试基本功

> cURL 是开发者最常用的 HTTP 调试工具。本指南讲清楚常用参数、debug 技巧、与 Postman/HTTPie 的对比。

URL: https://xtechtools.com/guides/curl-gen/
发布：2026-04-28 · 更新：2026-04-28

cURL 是 1996 年诞生的命令行 HTTP 工具，至今仍是开发者必备。本指南讲清楚常用参数、复杂请求构造、本工具如何把可视化表单转成可分享的 curl 命令。

### 为什么仍然要学 cURL

- **跨平台**：macOS / Linux / Windows 都内置或易装
- **可分享**：一行命令复制粘贴可重现，比 Postman 截图友好
- **CI 友好**：Shell 脚本可直接调用
- **API 文档标配**：几乎所有 API 文档都给 curl 示例

### 常用参数

- `-X METHOD` 指定方法（GET 默认可省）
- `-H "Header: Value"` 添加请求头（可重复）
- `-d "data"` POST 请求体
- `--data-raw "data"` 不转义直接发送（如 JSON）
- `-i` 显示响应头
- `-v` 详细模式
- `-o file` 保存到文件
- `-L` 自动跟随重定向
- `-k` 跳过 HTTPS 证书验证（仅调试用！）

### 常见场景速查

**GET with auth**：
`curl -H "Authorization: Bearer xxx" https://api.example.com/me`

**POST JSON**：
`curl -X POST -H "Content-Type: application/json" --data-raw '{"name":"Alice"}' https://api.example.com/users`

**上传文件**：
`curl -F "file=@/path/to/file.png" https://api.example.com/upload`

### cURL vs Postman vs HTTPie

- **cURL**：命令行、极致灵活、所有 API 文档都给
- **Postman**：图形界面、团队协作、收藏请求、自动化测试
- **HTTPie**：人类友好的 cURL（彩色输出、JSON 高亮）

实际开发：日常用 Postman 调试，调试别人服务器/写脚本时用 cURL，本地玩用 HTTPie。

### 本工具的工作流

1. 在表单里选方法、填 URL、加 headers、写 body
2. 右下方实时显示对应的 cURL 命令
3. 复制粘贴到终端测试，或贴给同事
4. 想反向：粘贴 cURL 命令到 Postman 也能 import

### 常见问题

**Q: curl 在 Windows 上能用吗？**

Windows 10+ 内置（PowerShell 也可用）。注意 Windows 终端用单引号会出问题，建议用双引号或 Git Bash。

**Q: 怎么测试 WebSocket？**

curl 不行，用 wscat 或 websocat。

**Q: 能保存 cookie 吗？**

可以。`-c cookies.txt` 保存、`-b cookies.txt` 读取。

---

## SQL 格式化与团队风格统一：从单行屎山到可读结构

> SQL 在生产环境常被压缩成无空白的一行，难以 review 也难调试。本指南从基础格式化到团队规范，讲清楚 SQL 风格化的全部考量。

URL: https://xtechtools.com/guides/sql-format/
发布：2026-04-29 · 更新：2026-04-29

SQL 是大多数数据驱动产品的工作语言，但它在 ORM 拼接、ETL 配置、日志查询里经常被压缩成一行。一行能跑，但人看不懂——尤其有 JOIN、子查询、CTE 嵌套时。SQL 格式化把这些紧凑文本重新拆成多行缩进结构，是代码 review、性能调优、给同事讲解查询时的第一步。本文讲清楚 SQL 格式化的工作原理、跨方言注意事项、团队风格规范，以及本工具如何一键解决 11 种 SQL 方言的美化与压缩。

### 为什么 SQL 比一般代码更需要格式化

SQL 有几个独特的痛点：

- **关键字密度极高**：SELECT/FROM/WHERE/JOIN/GROUP BY/HAVING/ORDER BY/LIMIT 都是关键字，一行写完会把数据列名"夹"成视觉噪音。
- **嵌套层数深**：CTE + 子查询能轻松 4-5 层缩进，没有缩进根本看不出 JOIN 在哪一层。
- **方言差异大**：MySQL 的 `LIMIT 10 OFFSET 5` 跟 SQL Server 的 `OFFSET 5 ROWS FETCH NEXT 10 ROWS ONLY` 长得不一样，格式化器必须方言感知。
- **生产环境常见单行**：ORM（如 SQLAlchemy）输出的 SQL 默认是单行；日志工具记录慢查询时也不会保留换行。

格式化把这些噪音变结构，本工具基于 sql-formatter 库支持 11 种方言并保留方言专属语法。

### 推荐的 SQL 风格规范（业界主流）

- **关键字大写**：`SELECT/FROM/WHERE` 大写，列名/表名小写。这是 99% 团队的默认风格，AI 与代码 review 工具识别度最高。
- **顶级关键字独占一行**：每个 SELECT/FROM/WHERE/JOIN/GROUP BY 单独换行，便于增删块。
- **逗号在前缩进**：`,column_a` 而不是 `column_a,` ——便于注释掉某行不影响其他行（争议性，本工具默认逗号在后，与多数 ORM 输出一致）。
- **JOIN 显式 ON 单独缩进**：
```
SELECT u.id, u.name
FROM users u
LEFT JOIN orders o
  ON o.user_id = u.id
WHERE u.status = 1;
```

本工具的「关键字大写」选项默认开启，符合 GoogleSQL Style、SQLAlchemy 默认输出的规范。

### 常见 SQL 方言的格式化差异

不同方言对相同语义有不同写法，格式化器必须理解：

- **字符串拼接**：MySQL 用 `CONCAT(a, b)`、PostgreSQL 用 `a || b`、SQL Server 用 `a + b`，格式化时不能误判为加法
- **限制结果数**：MySQL `LIMIT 10`、Oracle `ROWNUM <= 10`、SQL Server `TOP 10`、PostgreSQL `LIMIT 10 OFFSET 5`
- **类型转换**：MySQL `CAST(x AS UNSIGNED)`、PostgreSQL `x::int`
- **窗口函数**：方言对 `OVER()` 的支持差异，PostgreSQL 最完整
- **CTE 语法**：标准 SQL 用 `WITH x AS (...)`，老 Oracle 不支持 CTE 需要改写为子查询

本工具在右上角的方言选择器自动适配解析规则，选错方言可能解析报错或风格异常。

### 压缩（minify）什么时候该用

压缩把多行 SQL 折成单行，常见场景：

- **嵌入 JSON 配置**（如 Looker 的 LookML、ETL 的 JSON 任务定义），单行更省字段
- **写测试用例**：`it("should return active users", () => db.query("SELECT * FROM users WHERE status=1"))` 
- **日志分析**：把多行 SQL 折成单行后用 grep 过滤更方便
- **粘贴到聊天工具**：单行不会被 IM 自动换行裁剪

但**不要为了"看起来短"就压缩生产代码** —— 代码可读性永远比 50 字符的节省重要。

### 团队协作小贴士

- **预 commit hook**：把 sql-formatter 加入 husky pre-commit，强制风格统一
- **VS Code 插件**：`SQL Formatter` 或 `SQL Database` 可一键格式化当前文件
- **CI 校验**：在 PR check 里跑 `sql-formatter --check`，发现风格漂移直接 fail
- **对齐 ORM 输出**：如果团队主用 Prisma/SQLAlchemy/Knex，把它们生成 SQL 的风格作为格式化基线

本工具不替代 IDE/CI 集成，但作为快速调试入口（粘 SQL → 看清楚结构 → 拷回去）效率最高。

### 常见问题

**Q: SQL 格式化会改变查询结果吗？**

不会。格式化只调整空白与大小写，不改变 SQL 语义。WHERE 条件、JOIN 顺序、列选择都原封不动。

**Q: 我的 SQL 解析失败了怎么办？**

先确认顶部方言选择是否正确（MySQL 的 SQL 不能按 PostgreSQL 解析）。若仍失败，可能是 SQL 本身有语法错误，先在数据库里跑通再格式化。

**Q: 格式化能识别字符串里的 SQL 吗？**

不能。字符串字面值（如 `'SELECT 1'`）会被当作字符串保留，不会再次格式化。

**Q: 为什么我的关键字没有大写？**

检查右上角「关键字」下拉是不是选了"保留"。改成"大写"即可。

---

## 正则表达式从入门到精通：50+ 实战模式速查

> 正则是开发者绕不过的工具，但语法晦涩。本指南从基础元字符到工业级模式（邮箱/手机/IP/密码强度），50+ 实战正则一次讲清。

URL: https://xtechtools.com/guides/regex-cheatsheet/
发布：2026-04-29 · 更新：2026-04-29

正则表达式（Regular Expression / regex）是几乎所有编程语言、文本编辑器、日志工具都支持的字符串匹配语法。掌握它能让你 5 分钟做完 50 行 if 才能完成的事——但它的语法是出了名的反直觉，符号多、易错。本指南从最基础的元字符讲起，带你看懂业界最常用的 50+ 模式（邮箱、手机号、身份证、密码强度、URL、IP、日期、HTML 标签等），并给出每种模式的"陷阱版"对比。

### 正则的核心概念：贪婪与非贪婪

正则默认是"贪婪匹配"——尽量匹配最长的字符串。例如 `<.*>` 用于 `<a><b>` 时会匹配整个 `<a><b>`，而不是 `<a>`。

非贪婪用 `?` 修饰：`<.*?>` 匹配最短可能，结果是 `<a>` 和 `<b>` 各一次。

实战经验：写正则时**先想能不能用贪婪**，错了再改非贪婪。99% 的初学者第一版正则都是匹配过长。

### 工业级正则的常见陷阱

"邮箱正则"看似简单，但写得漂亮和写得对是两件事：

- **入门版**：`[a-z]+@[a-z]+\.[a-z]+` ——错过 `+` `.` `_` 等合法字符
- **进阶版**：`[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}` ——本工具采用，覆盖 99% 真实邮箱
- **完美版**：RFC 5321 标准的邮箱正则有 6000+ 字符，不实用

**实用建议**：对邮箱、URL、电话这些"开放定义"格式，**不要追求 100% 严格**。本工具的中等版本能拦下绝大多数错输入，让真实合法地址通过——这才是验证的目的。

### 中文场景的关键模式

中文相关正则容易踩 Unicode 坑：

- **匹配中文字符**：`[\u4e00-\u9fa5]` 是基本汉字范围，但**不含**部首扩展、生僻字、 emoji。要全覆盖用 `[\p{Script=Han}]`（需 `u` flag）。
- **手机号**：`^1[3-9]\d{9}$` 是 2024 年通用，但虚拟号段（如 17X、19X）已经覆盖；早期 13X 起 4 位区间错过新号段会拦真实用户。
- **身份证**：本工具的 18 位正则只校验**格式合法性**，不校验校验位。校验位需要用 ISO 7064 算法计算，是单独流程。

微信号、QQ 号、车牌号这些"中国特产"模式都在本工具的速查表里。

### 密码强度的三个层级

- **L1 弱**：6 位以上即可（淘宝早期、知乎旧版）。容易被字典攻击
- **L2 中**：8 位 + 字母 + 数字。本工具默认
- **L3 强**：8 位 + 大小写 + 数字 + 特殊符号。银行 / 政企标配

密码正则用了大量 `(?=...)` **正向预查**，意思是"当前位置后面必须满足某模式但不消耗字符"。例如 `(?=.*[A-Z])` 表示"字符串里某处必须有大写字母"。预查可叠加，是密码规则唯一不需要回溯的写法。

### 调试正则的两条铁律

1. **永远先在测试器里跑过**：本工具顶部的"在线测试"框就是为这个准备的。粘正则 + 粘文本，立即看是否匹配，错在哪一位。
2. **不要在生产环境用未经测试的正则**：尤其是用于安全验证的（密码、邮箱、URL）。一个写错的边界条件就能让攻击者绕过过滤。

复杂正则建议加注释（很多语言支持 `(?x)` flag 让正则跨行带注释），或者干脆拆成多个小正则用代码组合。可读性永远比"一行写完"重要。

### 常见问题

**Q: 哪种语言的正则差异最大？**

JavaScript 与 Python 几乎相同（PCRE 标准）；Perl 拥有最强大的正则支持；Java 与 .NET 也大致兼容；POSIX 正则（grep/awk）较弱，不支持非贪婪和零宽断言。

**Q: 正则会拖慢性能吗？**

会。某些灾难性回溯（catastrophic backtracking）的正则在恶意输入下能挂掉整个进程（见 ReDoS 漏洞）。生产环境用前用 safe-regex 库扫一下。

**Q: 能用正则解析 HTML 吗？**

理论上可以，实际上不建议。HTML 嵌套层级正则无法处理，应该用 DOM 解析器（cheerio / jsdom）。

**Q: 中文 unicode 范围哪个最准确？**

`\p{Script=Han}` 最准确，覆盖所有汉字脚本字符（含日韩共用汉字）。需启用 `u` flag。

---

## 电子名片 vCard 二维码：商务场景的"扫一扫存通讯录"

> 名片上印 vCard 二维码，扫一下直接进通讯录。本指南讲清楚 vCard 格式、二维码尺寸、扫描兼容性与设计建议。

URL: https://xtechtools.com/guides/vcard-qr/
发布：2026-04-29 · 更新：2026-04-29

展会、签约、商务会面，递出一张名片是基本动作。但对方拿回办公室往往就把名片压在抽屉里——下次想找你的电话还得翻十叠纸。在名片背面或角落印一个 vCard 二维码，对方扫一下就把你的联系人信息存进手机通讯录，比手输快 10 倍。本指南讲清楚 vCard 格式的来历、各字段的写法、二维码的尺寸建议、不同手机的扫描兼容性，以及如何在本工具里 3 分钟生成你的电子名片二维码。

### vCard 是什么

vCard（Virtual Contact File）是 IETF RFC 6350 定义的电子名片标准格式，扩展名 `.vcf`。它的内容是纯文本，类似：

```
BEGIN:VCARD
VERSION:3.0
N:张;三;;;
FN:张三
ORG:某科技有限公司
TITLE:高级前端工程师
TEL;TYPE=CELL:13800138000
EMAIL:zhangsan@example.com
END:VCARD
```

手机系统识别这种文本后会调起"添加到通讯录"对话框，把字段一一对应填入。把这段文本编码成二维码，扫码即触发同样流程。

### 关键字段对照

- `N:` 结构化姓名，姓+名分号分隔（中文一般姓在前）
- `FN:` 显示名，通讯录里显示的字符串
- `ORG:` 组织/公司名
- `TITLE:` 职位
- `TEL;TYPE=CELL:` 手机号；`TEL;TYPE=WORK,VOICE:` 座机
- `EMAIL;TYPE=INTERNET:` 邮箱
- `URL:` 个人/公司网站
- `ADR;TYPE=WORK:;;详细地址;;;;` 地址（有 7 个分号字段：街道/城市/省/邮编/国家等）
- `NOTE:` 备注，多行用 `\n` 转义

### 二维码尺寸与纠错等级

名片上的二维码尺寸至少 **2cm × 2cm**（80x80 像素打印 dpi 300），纠错等级建议 **M 中等**（15% 容错）。

- 字段越多，二维码越密；超 200 字符建议用 H 高等纠错（30% 容错）以防印刷模糊
- 不要做"超精致"二维码（嵌过多 logo），扫描成功率会下降
- 浅色背景（白/米白）+ 深色二维码（黑/深蓝）最稳，不要反色
- 上下左右**留 4 模块边距**（默认 quiet zone）

本工具默认 240×240、margin=2、纠错 M，覆盖大多数商务名片场景。

### 兼容性测试

vCard 二维码在以下场景实测可识别：

- ✅ iOS 相机原生扫一扫
- ✅ 微信扫一扫（会先弹出预览，确认后跳转通讯录）
- ✅ 支付宝扫一扫
- ✅ 华为 / 小米 / OPPO 系统相机
- ✅ Google Lens / Android 通用扫码
- ⚠ 部分老安卓机微信扫不到 vCard 但扫普通文字会成功（这种情况让对方用手机相机扫）
- ⚠ 国际版 iOS 17+ 对中文 ORG 字段编码偶有显示乱码（升级 iOS 18+ 修复）

建议名片上同时印手机号文字（万一扫不出还有兜底）。

### 设计建议

- **位置**：名片背面右下角或正面右上角，不要遮挡 logo
- **指引文字**：二维码下方加小字"扫一扫存通讯录"或"Scan to add"
- **批量定制**：用本工具批量生成员工 vCard 二维码（每人改一下姓名/邮箱），再交给印刷厂
- **更新成本**：换手机号/邮箱后**老名片二维码就失效**——所以不要把二维码当作名片唯一信息源，文字版也要印

做好的二维码本工具支持下载 PNG（240×240），可直接放进 Adobe Illustrator / Figma 排版。

### 常见问题

**Q: vCard 和"加微信"二维码有什么区别？**

vCard 是把联系信息存到手机通讯录；加微信二维码扫了直接打开微信加好友。前者通用、跨平台；后者只在微信生态有效。商务场合两个都印更好。

**Q: 能在 vCard 里加照片吗？**

可以，用 PHOTO 字段嵌 base64 图片。但会让二维码膨胀很多（200KB 图片 → 二维码失败概率上升），不推荐。

**Q: 为什么扫描后通讯录里只显示英文？**

某些手机 vCard 解析需要 `CHARSET=UTF-8` 标记。本工具的输出已默认 UTF-8 兼容。如仍出现乱码，可能是对方手机系统语言为非中文。

**Q: 能扫出来直接拨号吗？**

不能。vCard 是"添加联系人"动作；想扫了直接拨号请用 `tel:` URI 二维码（用本站「二维码生成」工具）。

---

## 公积金贷款额度全攻略：怎么算、怎么用满、组合贷怎么搭

> 公积金贷款利率比商贷低 1.15%，能省几十万利息。本指南讲清楚额度三种算法、组合贷搭配技巧、各城市政策差异。

URL: https://xtechtools.com/guides/housing-fund/
发布：2026-04-29 · 更新：2026-04-29

公积金贷款是中国买房人能拿到的最便宜的钱——2026 年首套房 5 年以上利率 2.85%，比商贷的 4% 便宜 1.15%。100 万贷 30 年能省下利息 25-30 万。但公积金额度有限，超出部分必须配商贷（叫"组合贷"）。本指南从额度三种算法讲起，覆盖各城市最高限额、组合贷搭配技巧、提前还款策略，让你把公积金价值用满。

### 公积金额度的三种算法（取最低）

公积金中心审批时同时计算三个数字，取**最低值**作为你的可贷额度：

1. **缴存余额倍数法**：账户余额 × 10-20 倍（北京/上海 20 倍，多数二线 15 倍，少数 10 倍）
2. **缴存基数倍数法**：月缴存额（个人+单位）× 还款总月数。这相当于"用未来的缴存来抵未来的月供"
3. **当地最高额度**：政策硬上限（北京单人 60 万、夫妻 80 万；上海单人 65 万、夫妻 100 万；深圳单人 70 万）

本工具同时显示三个数字与最终额度，让你看清是哪个限制了你。如果是"余额倍数限制"，可以等账户余额涨上去再贷；如果是"基数限制"，没法改；如果是"上限限制"，组合贷补足。

### 2026 年最新利率

中国人民银行设定的公积金贷款利率：

| 类型 | 5 年以下 | 5 年以上 |
|---|---|---|
| 首套房 | 2.35% | 2.85% |
| 二套房 | 2.59% | 3.14% |

二套房在首套基础上**上浮 10%**。"首套"指你和配偶名下当前没有公积金贷款（已结清的不算），以及购房城市无房（部分城市更严，"无贷"也算首套）。

相比商贷利率（4% 左右），首套公积金能省 1.15%。100 万贷 30 年，月供少 700+，总利息少 25 万左右。

### 组合贷的搭配技巧

当你的房子总价超过公积金额度时，超出部分用商贷补充：

- **公积金部分先用满**：先按公积金最高额度贷，剩余用商贷。这样能最大化利率优惠。
- **同一银行办理**：商贷部分尽量选公积金中心的合作银行，能少跑一趟手续
- **月供测算**：组合贷月供 = 公积金月供 + 商贷月供。可用本工具算公积金部分，再用<a href="/mortgage/">房贷计算器</a>算商贷部分相加
- **审批时间**：组合贷比纯商贷慢 1-2 周（公积金中心审批 + 银行审批），急用钱看清节奏

例：买 500 万房子，首付 30%（150 万），需贷 350 万。北京单人最高公积金 60 万，剩余 290 万用商贷。算下来每月：
- 公积金 60 万 × 2.85% × 30 年 = 月供 2,484 元
- 商贷 290 万 × 4% × 30 年 = 月供 13,841 元
- 合计月供 16,325 元（vs 全商贷 350 万月供 16,705 元，省 380 元/月）

### 提前还款策略

公积金贷款利率太低，**很多财务专家建议不要提前还**——拿这笔钱去做年化 5%+ 的低风险理财更划算。但如果你账户里有大量闲钱、而且不善理财，提前还能减少心理负担。

两种提前还款方式：

- **缩短期限，月供不变**：省利息最多。把 30 年缩成 20 年，省下利息约为还款金额的 30-40%
- **月供减少，期限不变**：现金流压力小。但省的利息少。

注意：很多公积金中心要求**还款 1 年后**才能申请提前还款，且每年只能 1-2 次。具体打 12329 公积金客服热线咨询。

### 常被忽视的细节

- **缴存基数有上限**：超过当地社平工资 3 倍部分不计入缴存基数。北京 2026 年社平 11280，3 倍 = 33840 元/月，超过部分公司虽然给你交了但算不进基数倍数法
- **缴存比例有要求**：必须满 12 个月（部分城市 6 个月）才能贷款
- **断缴**：换工作期间断缴超 3 个月需要重新累计 12 个月
- **租房提取不影响贷款额度**：但会减少账户余额，影响"余额倍数法"
- **配偶共同贷款**：如夫妻双方都有公积金，按合并额度算（北京 80 万即合并）
- **组合贷的二套房认定**：商贷部分按商贷的二套标准（首付高 + 利率高），公积金部分按公积金二套标准

### 常见问题

**Q: 公积金月缴 1000 元，能贷多少？**

主要看连续缴存年限。按 30 年还款 = 360 个月，月缴存 1000 × 360 = 36 万。再考虑余额倍数法和当地上限，最终额度通常落在 30-50 万。

**Q: 能提取公积金付首付吗？**

可以。一次性付清后到公积金中心办"购房提取"，金额上限不超过当年实际购房支出。

**Q: 公积金贷款拒贷会怎样？**

一般原因是缴存不满 12 个月、当前已有公积金贷款未还清、所购房不符合政策。被拒后可补全条件再申。

**Q: 商住房能用公积金贷款吗？**

不能。商住公寓（40 年产权）一般禁止公积金贷款，只能商贷。70 年产权的住宅才能公积金。

**Q: 可以异地用公积金吗？**

需要看两地政策。如缴存地与购房地公积金中心有"异地互认"协议（如长三角、珠三角内部）则可以；否则需要把公积金转到购房地后再申。

---

## 个税专项附加扣除完全指南：6 项扣除谁能领、怎么算

> 2026 年个税专项附加扣除最新政策详解：子女教育、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人等 6 项扣除的申报条件、额度与年度汇算清缴全流程。

URL: https://xtechtools.com/guides/tax-calculator/
发布：2026-04-29 · 更新：2026-04-29

个人所得税是工薪族最大的"税负"之一，但大多数人不知道自己能省多少。2019 年推行的"6 项专项附加扣除"让中产家庭的税负能少 20-40%。本指南讲清楚子女教育、继续教育、大病医疗、住房贷款利息、住房租金、赡养老人这 6 项扣除的申报条件、额度计算、年度汇算清缴全流程，帮你不漏一分该享受的优惠。

### 6 项专项附加扣除全览

| 扣除项目 | 年额度 | 适用人群 |
|---|---|---|
| 子女教育 | 2,000 元/月 | 学龄前至博士阶段子女的父母（可父母各 1,000） |
| 继续教育 | 4,800 元/年 | 本人继续深造（学位、职业资格考试） |
| 大病医疗 | 最高 8 万元 | 超出 1.5 万元自付医疗费的纳税人 |
| 住房贷款利息 | 1,000 元/月 | 首套房商贷产生的利息（不含公积金） |
| 住房租金 | 800-1,500 元/月 | 因工作租房（按城市分档） |
| 赡养老人 | 2,000-3,000 元/月 | 赡养 60 岁以上父母的子女（独生子女 3,000） |

这 6 项是目前仅有的个税扣除项，错过一项就等于多缴税。本工具的【个税计算器】能自动把这些扣除代入，实时计算你的真实税负。

### 子女教育与继续教育：最常见的两项扣除

**子女教育**：每个子女每月 2,000 元（可夫妻各 1,000 元分摊），从 3 岁幼儿园开始一直到博士毕业。计算方法最简单：

例：夫妻俩有一个小学生，爱人每月 1,000、自己每月 1,000，全年扣除 24,000 元。月工资 8,000、专项扣除 5,000（社保公积金）、子女教育 1,000，应税所得 = 8,000 - 5,000 - 1,000 = 2,000 元，税率 3%，月税 60 元。

不享受子女教育扣除的话同样收入月税是 150 元，一年省 1,080 元——看似不多，但这是制度给的最清白的优惠。

**继续教育**：自己参加学历教育（全日制大学、在职研究生）或职业资格考试（注册会计师、律师、教师资格等），年扣 4,800 元。注意：**不能与子女教育同时扣**，而是选择自己更需要的那项。

### 住房贷款利息 vs 住房租金：二选一必须选对

这两项**不能同时享受**，必须二选一。选错会被税务局补税 + 罚款。

**住房贷款利息**：首套房商贷产生的利息，每月 1,000 元（不是月供，只是利息部分）。夫妻俩名下的房子只能选一套享受，不能两套都扣。

例：贷款 300 万，利率 4%，30 年，首月利息约 10,000 元，前几年每月利息都接近上限 1,000，后期逐月递减。年底时累计可扣利息约 11 万，但扣除额度 cap 在年 12,000 元（1,000 元 × 12 月）。

**住房租金**：因工作原因在工作城市租房，按城市分档：
- 一线城市（北京/上海/广州/深圳）：1,500 元/月
- 新一线城市（杭州/南京等）：1,100 元/月
- 其他城市：800 元/月

租房合同要备查。如果自己在北京上班租房 2,000 元，扣除 1,500，自己承担 500；同时在北京有房贷，**必须选择其中一项**。逻辑上：房贷利息每月接近 1,000 则选房贷（实际更划算），租房费用 2,000+ 则选租金（因为 cap 1,500 本身就是损失）。

### 大病医疗与赡养老人：容易忽视的两项

**大病医疗**：本年度自付医疗费（超出医保报销后自己付的钱）超过 1.5 万元，可扣除超出部分，年 cap 8 万元。适用于重症患者、大手术、长期用药。

例：因癌症治疗自付医疗费 25 万，可扣除 = 25 - 1.5 = 23.5 万（但 cap 8 万）。年底汇算清缴时凭医院/医保单据申报，税务局会逐一核实。这项扣除最容易被忽视，因为需要汇算清缴时主动申报，不能在单位代扣时自动享受。

**赡养老人**：赡养 60 岁以上父母的子女，独生子女 3,000 元/月、非独生 2,000 元/月（可兄弟姐妹分摊，协议说明）。注意"独生"的定义：父母现存活的子女只有你一个。如果有已去世的哥哥姐姐，你仍是"独生"。

两个子女赡养一对父母可以分摊：大哥 2,000 + 妹妹 1,000 = 总 3,000，或各 1,500。一定要事先签分摊协议备查，否则申报时税务局会以"无协议"驳回。

### 年度汇算清缴的 4 个步骤

每年 3 月 1 日 - 6 月 30 日是汇算清缴期。如果单位代扣代缴时漏了某项扣除，必须主动汇算。

1. **登录税务 APP**：下载"个人所得税"App，选"汇算清缴"→"2026 年度"。
2. **补报专项附加扣除**：如果还没在单位填过，这时统一补申。子女教育、赡养老人、大病医疗这些如果漏报，汇算时补报即可（追溯期 5 年）。
3. **确认收入与扣除**：系统自动拉取工资、奖金、社保、住房公积金数据，核对无误。
4. **一键申报**：系统自动计算应补税还是应退税。

大多数工薪族会**退税**，因为单位可能代扣过多或漏了扣除。退税直接打入银行账户，无需干预。

### 最常见的 3 个错误

- **房贷利息和租金同时申报**：这是高频错误。系统会自动驳回，只能选一个。如果已错报，汇算时改正即可，不罚款。
- **大病医疗用医疗保险明细单而非实际支付凭证**：税务要的是自己实际支付的部分（医保报销后的自付）。去年看病花 50 万、医保报销 45 万、自己付 5 万，扣除额 = 5 - 1.5 = 3.5 万，要拿自己的转账记录或发票证明。
- **赡养老人没有分摊协议**：两个以上子女必须有书面协议，否则系统卡在"分摊金额与已申报不符"。协议不需要公证，电子版备查即可。

### 常见问题

**Q: 已经在单位报了扣除，汇算清缴还要再报一次吗？**

不用。单位代扣时的专项附加扣除会自动导入税务 App，汇算时只需确认无误。如单位没报或报错了，汇算时补报或更正。

**Q: 漏报了三年前的子女教育扣除，还能要回来吗？**

可以。专项附加扣除有 5 年追溯期。只需汇算时补报 2023 年的，三年前的通常已过汇算期，需要到当地税务局人工申请补汇。建议别放太久，尽快补。

**Q: 住房租金已扣，又有房贷，怎么选？**

根据额度大小：房贷利息稳定在 1,000 元/月上下，租金 800-1,500 元/月。如果租金超过 1,500 不能扣，不如选房贷；如果房贷还在还款初期利息接近 1,000，则选房贷更划算。税务 App 可以试算，看哪个退税多就选哪个。

**Q: 赡养老人 3,000 元扣除，真的能省多少税？**

月收入 1 万、已有其他扣除 5,000，剩余应税所得 5,000。加上赡养老人 3,000，应税所得降至 2,000，年省约 3,600 元（按 12% 税率，赡养老人月均 2,500 计）。长期来说是笔不小的数字。

**Q: 个税计算器里填的数字会上传给税务局吗？**

不会。本工具纯本地计算，不涉及网络传输。真实汇算清缴时的申报数据才上传税务局。

**Q: 年终奖单独计税怎么算扣除？**

年终奖有两种计税方式：全额乘以 12 后找税率表（通常更省税），或并入当年工资合并计税。扣除方面，全年的子女教育、赡养老人等都是用的，年终奖本身不能额外扣除。具体方案看单位财务和你的工资结构，一般单位会帮你试算。

---

## 中文简历投递攻略：4 种模板怎么选 + ATS 通关 8 个细节

> 简历模板选对了能加分，选错了被 ATS 系统秒拒。本文讲 4 个模板的适用场景、ATS 防拒要点、PDF vs DOCX 投递差异、邮件正文 8 个细节。

URL: https://xtechtools.com/guides/online-resume/
发布：2026-04-29 · 更新：2026-04-29

大多数求职者只知道写简历，却不知道 80% 的简历在被人事看见前就被 ATS（应聘者追踪系统）筛掉了。这个系统用关键词匹配和结构化解析自动拒绝"不合格"的简历。本指南讲清楚 4 个模板的选择逻辑、ATS 系统的 8 个拦截点、PDF vs DOCX 的真实差异、以及怎么写邮件正文才能让 HR 打开你的简历。

### 4 个模板的适用场景与 ATS 兼容性

本工具的简历生成器内置 4 个模板，各有优劣：

| 模板 | 风格 | ATS 友好度 | 适用场景 |
|---|---|---|---|
| **Executive Slate** | 现代双栏 + 侧边栏 | 中 | 初创/互联网/设计求职（容貌有加分） |
| **经典衬线** | 简约棕调 | 高 | 金融/投资/律师/国企（传统行业） |
| **现代极简** | 黑白极简 | 高 | 理工科/研究/技术岗（简洁有力） |
| **双栏专业** | 左侧导航栏 | 低 | 创意/品牌/自由职业（视觉优先） |

**ATS 友好度**的含义：
- 高 = 完全标准文本，能被 ATS 100% 解析职位、公司、时间
- 中 = 部分表格/框框，ATS 可能错位，但人工 review 时不吃亏
- 低 = 大量图片/复杂排版，ATS 看不懂，直接落选（除非 HR 手工审）

**选择建议**：
- 投 **500+ 人竞争的大型互联网/外企** → 用"经典衬线"或"现代极简"（过 ATS 优先）
- 投 **初创/设计类公司** → 用"Executive Slate"（创意氛围容纳排版创意）
- 投 **国企/传统行业** → 用"经典衬线"（保险、金融、制造最吃这套）
- 投 **小公司或直接联系** → 用"双栏专业"（人工 review，排版不是主要矛盾）

### ATS 系统的 8 个拦截点

1. **无表头无页脚**：简历顶部务必有「姓名、电话、邮箱、城市」块。ATS 的第一个任务就是解析这些基本信息，漏掉 ATS 会以为数据不全直接拒。

2. **关键词密度**：职位描述里出现的词（如"React""MySQL""项目管理"）必须也在你简历里出现。ATS 按关键词匹配打分，匹配度低于 60% 就拒。用本工具时可以复制职位描述，检查自己简历有没有涉及相同领域的技能关键词。

3. **时间格式统一**：2021.01 - 2023.12 或 Jan 2021 - Dec 2023，选一个坚持用。混用"2021 年"与"2021.01"会让 ATS 解析混乱。

4. **公司名前不要加符号**：❌ 「⭐ 字节跳动」或「[阿里巴巴]」。ATS 看不懂符号，会认为公司名是"⭐"或"["。应该直接「字节跳动」。

5. **避免表格和多列布局**：Excel 式的"公司|职位|时间"表格，ATS 会解析成乱码，导致职位记录被拆碎。用纯文本或简单缩进（制表符）代替。

6. **数字不要用"万""千""百"的汉字缩写**：❌ 「负责月营 500 万的项目」应写成「负责月营 5,000,000 的项目」或「USD 500K」。ATS 对数字识别有限，汉字数字容易失效。

7. **单一页面，不要跨页**：超过 1 页简历 ATS 通常只读第 1 页（尤其 PDF 输入流程）。应届生务必 1 页，有经验的控制 1.5 页以内。

8. **PDF 输出需要嵌入字体**：部分公司用 Linux 系统解析 PDF，中文字体没有嵌入的话显示成方块。本工具下载 PDF 时已自动嵌入常用中文字体（微软雅黑），如自己编辑需确保字体嵌入。

### 简历长度与应届 vs 资深的差别

- **应届生**：严格 1 页。没工作经验，要用项目、学科成绩、竞赛、实习来撑满。每条描述 1-2 行，动词用"负责""设计""开发"，避免"参与""学到"这种被动语态。

- **1-3 年经验**：1-1.5 页。重点是第一份工作。每个职位列 3-5 条"在 X 公司做了什么，取得 Y 结果"的成就。

- **3 年以上**：1.5-2 页。取舍的艺术——早期工作浓缩到 1-2 条，最近 2 个职位展开。

错误做法：5 页简历列尽人生所有经历，HR 根本看不完，ATS 更会超时放弃。

### PDF vs DOCX 投递的真实差异

大多数求职者认为"PDF 更专业"，其实这里有讲究：

**用 PDF 的情况**：
- 投 500+ 人竞争的大公司 ATS 岗位（ATS 通常优先处理 PDF）
- 投国企/外企（比较传统，PDF 意味着"我很正式"）
- 邮件发送（PDF 排版不会被邮箱客户端破坏）

**用 DOCX 的情况**：
- 投初创/小公司直接联系的人（他们一般用 Word 打开，DOCX 编辑友好）
- 公司明确要求"可编辑版本"的岗位（很少但存在）
- 国内小企业（许多还在用 Word 习惯）

**混合方案**：很多求职者投两份——邮件里附同一份 PDF（ATS），正文里再提"如需编辑版请回复"。这样 ATS 先过滤，如果人工 review 还想修改就有备选。

### 求职邮件正文的 8 个细节

简历再好，如果邮件被 HR 删掉就没用。邮件正文只有一个目标：让 HR 点击打开附件。

1. **主题行 20-30 字内**：应聘 [岗位名] - [姓名] - [工作年限] - [核心竞争力]
   例：「应聘 React 开发 - 张三 - 3 年经验 - Typescript + 性能优化」
   避免：「我的简历」或「求职」这种垃圾标题。

2. **第一句别绕**：直接说「我应聘贵公司 XX 岗位」，不要"尊敬的 HR 姐姐我很喜欢你们公司"这种寒暄。

3. **一句话卖点**：1-2 句话说你为什么适合这个岗位。
   例：「我有 3 年前端经验，主要在实时数据可视化领域，最近优化了公司仪表板加载速度 60%。"

4. **工作经历不要重复简历**：邮件里挑**最相关的一份工作**讲 2-3 句，不要列举所有经验。

5. **用数字**：「优化了性能 60%」好过「做了性能优化」。

6. **结尾给两个联系方式**：电话 + 微信 + 邮箱（备选）。很多 HR 会先 WeChat 或直接电话，别让他找不到你。

7. **全文不超 5 句话**：HR 每天收 100+ 简历，太长的邮件没人读。简洁有力最容易打动。

8. **发送时间有讲究**：周二-周四 10:00-12:00 或 14:00-16:00 发，避免周一早晨（堆积）和周五（即将下班）。

### 应届生 vs 社招简历的 5 个差别

- **应届生**：没工作经验，用"教育背景""项目经验""竞赛获奖""技能"来代替。GPA 如果 3.5+放上去，否则别提。实习经历即使短期也要写，"XX 公司XXX 岗位 2 个月"能大幅加分。

- **社招**：工作经历压倒一切，按时间倒序列最近 2-3 个职位。项目经历需要关联到职位描述的关键词。GPA、学校等教育背景可以淡化或删除（工作经验强的话）。

- **职位转换**：从销售转技术、从传统行业转互联网，需要"项目经历"来弥补行业陌生。不能直接列历史职位，要突出"我做过的最接近新岗位的事"。

### 常见问题

**Q: 简历里该不该放照片？**

行业不同。互联网/初创/设计放照片加分（尤其 Executive Slate 模板有位置）；金融/国企/法律不放。中文场景下除非你特别具有视觉竞争力（比如颜值明显优势或专业气质强），否则照片反而容易被主观评价。

**Q: ATS 看不到的东西就不用写？**

不对。ATS 只是第一道筛，60% 简历通过 ATS 后还要人工 review。人工看的时候会注意排版、用词、成就描述。所以简历既要过 ATS，也要在人工眼前好看。

**Q: 一份简历能投多个公司吗？**

可以，但尽量为每个职位定制一下"核心竞争力"或"项目经历"顺序。投 100 份一模一样简历不如投 20 份精准匹配的。HR 能看出来你是群发还是用心投递。

**Q: 简历被拒了，怎么知道是哪里出了问题？**

一周没反应基本是 ATS 拒了。问题通常在模板排版或关键词不匹配。可以试试换一个模板（比如从双栏改成经典衬线）、加上职位描述里的关键词再投。如果还是没回应，可能是经验不符。

**Q: 在线简历生成器生成的简历 ATS 会识别吗？**

本工具的简历生成器设计时已考虑 ATS 兼容性。导出 PDF 或 DOCX 时，结构化数据（职位、时间、公司、成就）都是标准文本层，不是图片或表格包装。ATS 能正常解析。但定制化程度高的设计（大量排版）ATS 会看得不完整，权衡好美观和通过率。

**Q: 邮件正文要用中文还是英文？**

投中国公司用中文，投外企/跨国用英文。如果公司语言不明确但在中国运营，用中文保险。英文邮件容易被当作群发模板，中文反而显得更用心。

---

## 图片压缩完全指南：JPG/PNG/WebP/AVIF 各场景怎么选

> 图片格式选错了影响网站加载速度、存储成本、兼容性。本文讲 4 种格式对比、压缩质量阈值、社交平台推荐、SEO 图片优化全流程。

URL: https://xtechtools.com/guides/image-tool/
发布：2026-04-29 · 更新：2026-04-29

一张 1920×1080 的图片未压缩约 6MB，压缩后可以是 200KB、50KB，甚至 20KB——但如果压缩过度会变成"马赛克"。选错格式（比如用 PNG 存照片）浪费存储空间和带宽；选对格式和质量阈值，既保留细节又能快速加载。本指南讲清楚 JPG、PNG、WebP、AVIF 四种格式的优劣势、何时该用哪个、压缩质量的标准、以及本工具如何一键为你的图片选最优方案。

### 4 种图片格式对比详表

| 格式 | 有损/无损 | 透明度 | 动画 | 压缩率 | 兼容性 | 最佳用途 |
|---|---|---|---|---|---|---|
| **JPG** | 有损 | 无 | 无 | 高（80%-95% 质量下） | 极高（100%） | 照片、风景、自然景物 |
| **PNG** | 无损 | 有 | 无 | 中（约 30-50% 原大） | 极高 | Logo、图标、需透明背景的设计稿 |
| **WebP** | 有损+无损 | 有 | 有 | 极高（比 JPG 小 25-35%） | 中（95%+，IE 和旧 Safari 不支持） | 现代网站首选（2023 年后流行） |
| **AVIF** | 有损+无损 | 有 | 有 | 极高（比 WebP 再小 20-30%） | 低（仅 2024 年新浏览器和手机） | 未来标准（现在还不成熟） |

**选择结论**：
- **照片、风景图**：首选 WebP（如果用户设备支持），兼容性要求高用 JPG
- **Logo、图标、截图**：PNG（如果不需要透明可转 JPG）
- **动画 GIF 替代品**：WebP 或 MP4 视频
- **最新网站优化**：WebP + AVIF 双格式并行（浏览器自动选）

本工具会自动检测你上传图片的类型，建议最优格式与质量参数。

### 压缩质量 80% vs 60% 的视觉差异

JPG 和 WebP 都用"质量百分比"衡量有损压缩：

- **95-100%**：几乎无损，但文件体积略大于 PNG（通常不值得）
- **80%**：对人眼来说基本无差别，是"质量-体积"最佳平衡点。互联网标配
- **60%**：已有明显质量下降，不推荐用于展示图。但适合缩略图或低端设备
- **40% 以下**：明显马赛克，仅用于极端省流量场景（如 2G 网络）

**本工具默认 80%**，同时会显示压缩后的预览，你可以拖拽品质滑块实时看效果。如果你的网站访问用户多来自 4G 或更差网络，可以试试 75%；如果对清晰度要求高（比如作品集、设计稿），用 90%。

### 社交平台推荐格式与尺寸

不同平台的图片处理不同：

**微信**：
- 推荐 JPG，最大尺寸 1920×1920
- 微信会自动压缩，再怎么精心调参都会被二次压缩，建议用 JPG 80% 即可

**微博**：
- 支持 JPG/PNG/GIF，但微博会自动转码到内部格式
- 最多 5 张配图，单张不超 32MB（其实都会被压缩）
- 建议 JPG 85%，尺寸 1200×800 以上

**公众号**：
- 文章内图片推荐 16:9 或 4:3 比例
- 尺寸 900 像素宽度是标准（公众号显示器宽）
- 用 JPG 80-85%，文件不超 500KB（流量友好）

**小红书/抖音**：
- 竖屏 9:16 标准，尺寸 1080×1920
- 极度重视加载速度，用 WebP 或 JPG 75-80%（小红书会二次压缩）

**LinkedIn/脉脉**：
- 职业照片用 PNG 或高质量 JPG
- 建议 JPG 90%（显得更专业），尺寸 800×600 或 1200×900

**本工具**有各平台预设，选一个平台会自动调整尺寸和质量建议。

### WebP 与 AVIF 的兼容性与过渡方案

**WebP 现状**（2026 年）：
- 支持率约 95%（Chrome、Firefox、Edge、新 Safari，但 IE 和旧 Safari 不支持）
- 推荐在现代网站使用，但需提供 JPG fallback

**AVIF 现状**（2026 年）：
- 支持率约 70%（仅最新浏览器和 2023+ 新手机）
- 文件极小（比 WebP 小 20-30%），但成熟度不够
- 适合激进的性能优化场景（如视频平台）

**过渡方案**（目前业界标准）：
```
使用 HTML <picture> 标签多格式兼容：
<picture>
  <source srcset="image.avif" type="image/avif">
  <source srcset="image.webp" type="image/webp">
  <img src="image.jpg" alt="desc">
</picture>
```

浏览器会按顺序尝试，如果支持 AVIF 就用 AVIF（最小），不支持就用 WebP，都不支持就用 JPG（兜底）。本工具的"批量转换"功能能一次生成三个格式，省去手工转的麻烦。

### SEO 图片优化的 5 个要点

搜索引擎爬虫不仅看图片本身，还看周边文本和加载速度：

1. **文件名用英文关键词**：❌ `IMG_1234.jpg` vs ✅ `blue-mountain-landscape-1920.jpg`。搜索引擎会解析文件名，有关键词的排名会更好。

2. **Alt 文字必须写**：`<img alt="2026 年北京春天的蓝天山景">`。Google 图片搜索依赖 alt 文字，也是无障碍访问的要求。

3. **图片尺寸不能超大**：单张超 5MB 会被 Google PageSpeed 降分。用本工具压到 200-500KB 范围内最佳。

4. **使用 srcset 响应式图片**：不同设备加载不同尺寸（手机 640px，平板 1024px，桌面 1920px），可以减少 50% 流量。

5. **使用 lazy loading**：`<img loading="lazy">`，图片在滚入视口时才加载，加快首屏速度（Google 的重要排名因子）。

### 常见问题

**Q: PNG 格式那么大，为什么不全部转 JPG？**

PNG 的透明背景（Alpha 通道）JPG 无法表达。如果图片需要透明部分（比如 Logo 放在彩色背景上），转 JPG 会变成白底，毁了设计。只有"不需要透明"的 PNG 才值得转 JPG。

**Q: 压缩到 60% 质量，真的看不出区别吗？**

取决于图片类型。纯色块或大面积颜色的图片，80% 和 60% 基本没差；细节丰富的照片（比如人脸、细毛发），60% 会出现明显马赛克。建议用本工具的预览功能实时对比。

**Q: 要同时上传 JPG 和 WebP 吗？**

不用。用 <picture> 标签，一套后端代码根据用户浏览器类型自动返回格式。或者用 CDN（如 Cloudflare）自动转码。手工上传两份浪费存储。

**Q: 动画 GIF 怎么压缩？**

用 WebP 或 MP4 视频代替。GIF 文件通常很大（几 MB），转换成 WebP 动画能减少 60%；或直接用 MP4（更进一步小 80%），用 autoplay 和 loop 属性让它看起来像 GIF。

**Q: 批量压缩 100 张图片要多久？**

本工具的批量压缩在浏览器本地跑，取决于你的电脑性能。通常 100 张中等尺寸图片（1-3MB 每张）需要 1-2 分钟。可以边压缩边做其他事，不会卡机。

---

## 汇率换算与境外消费省钱：信用卡/多币卡/现金哪个划算

> 汇率怎么形成、银行买卖价差、信用卡手续费、多币种卡套利、跨境电商支付、境外取现成本，本指南详细对比 5 种支付方式的真实成本。

URL: https://xtechtools.com/guides/currency-converter/
发布：2026-04-29 · 更新：2026-04-29

一趟欧洲旅行，同一笔 1,000 欧元的消费，用 Visa 信用卡、银联卡、华夏多币卡、或直接兑换现金，最后支付的人民币金额能相差 500 块。问题不在汇率本身（汇率全球统一），而在每种支付方式的"隐形成本"——银行手续费、卡组织加点、ATM 手续费。本指南把这些成本摊开细算，并配合本工具的汇率换算器，教你在出国前和出国时做出最经济的支付选择。

### 汇率的三个层级：中间价 vs 买卖价 vs 信用卡

汇率不是一个数字，而是三个：

1. **央行中间价**（权威参考）：每日上午 11:30 公布，全球认可。例如 2026 年 4 月 1 欧元 = 7.60 人民币。

2. **银行买卖价**（你能真正用到的）：银行基于中间价，再加或减个"点差"：
   - 买入价（你卖欧元给银行）：7.58 人民币/欧元（银行赚差价）
   - 卖出价（你买欧元给银行）：7.62 人民币/欧元（银行赚差价）
   - 点差通常 0.04-0.10，大银行（中行、工行）点差小，小银行或外汇兑换店点差大

3. **信用卡汇率**（最复杂）：
   - 国际卡组织（Visa/MasterCard/银联）自己公布汇率，通常接近央行中间价
   - 发卡银行再加手续费（1.5-2.5%）
   - 例：欧洲刷 Visa 信用卡 1,000 欧 → Visa 汇率 7.58 + 银行手续费 1.5% = 7.70 人民币/欧元，你支付 7,700 元

**现实成本对比**（1,000 欧元）：
| 方式 | 汇率 | 手续费 | 总成本 |
|---|---|---|---|
| 现场银行兑换 | 7.62 | 0 | 7,620 |
| Visa 信用卡 | 7.58 + 1.5% | 1.5% 手续费 | 7,693 |
| 华夏多币卡（境外消费） | 7.60 + 0% | 首笔免费 | 7,600 |
| 现金 ATM 取现 | 7.58 + 3% | 3% 手续费 | 7,816 |

结论：华夏多币卡最便宜（需提前换汇），其次是 Visa 信用卡（有手续费但便利），现金 ATM 最贵。

### 信用卡境外手续费的 1.5% 怎么来的

信用卡刷卡时，你看不到 1.5% 这个数字是怎么被扣的。实际流程：

1. **Visa/MasterCard 卡组织费用**：0.5-0.7%（卡组织自己的汇兑成本）
2. **发卡银行手续费**：0.8-1.5%（这是银行利润）
3. **收单行手续费**：通常被商家承担

结合起来，最常见的配置是"中间价 + 1.5-2% 手续费"。这笔费用在对账单上看不到，悄悄加进了应付金额。

**不同发卡行的手续费差异**：
- 工商银行、中国银行：1.5%（标准）
- 招商银行：1.5%
- 中信银行：部分信用卡 0%（仅限特定卡种）
- 民生银行：2%（比较高）

出国前可以在官网或客服确认你这张卡的手续费，是个容易被忽视的省钱点。

### 银联 vs Visa/MasterCard：国际卡组织的路由差异

中国发行的信用卡通常支持三种卡组织：

**银联**：
- 仅在中国、东亚（日韩）、东南亚（泰国、越南）商家接受
- 欧美商家 90% 不支持
- 手续费与汇率：银联自己公布汇率（接近央行中间价），银行加 1.5% 手续费，总体略便宜

**Visa/MasterCard**：
- 全球通用（除伊朗、朝鲜等制裁国）
- 手续费同样 1.5% 左右
- 但因为是国际卡，流量费 + 清算成本稍高，部分情况下汇率会比银联差一点点（0.1-0.2 个点）

**实战建议**：
- 去欧美选 Visa 或 MasterCard（支持面广）
- 去日韩泰选银联（如果拿得出银联卡，优先银联）
- 主要信用卡最好绑两个卡组织，到当地试刷一次，看哪个成功率高

遇到某个卡组织商家不支持的尴尬，当场刷另一个卡组织就行。

### 多币卡省钱秘诀：华夏银行、中行、招行、上海银行对比

多币卡是指支持多个币种账户、能存美元/欧元/日元等的借记卡。省钱原理：**提前在国内按银行买入价兑换好外币存入，出国消费或取现时直接用外币账户，避免临时汇兑的高价差**。

| 卡名 | 主推币种 | 国内换汇便利 | 境外取现 | 推荐指数 |
|---|---|---|---|---|
| **华夏银行多币卡** | 美元、欧元、日元、港币、英镑 | 极佳（网银可以自行换汇） | 首笔每月免费，第二笔起 2 元/笔 | ⭐⭐⭐⭐⭐ |
| **中国银行 BOC 环球钻石卡** | 全币种（12 种） | 一般（需要柜台或客户经理） | 境外取现手续费 2-4% | ⭐⭐⭐⭐ |
| **招商银行全币卡** | 美元、欧元、日元 | 中等（需满足条件） | 首笔免费（部分限制），后续 3 元 | ⭐⭐⭐⭐ |
| **上海银行多币卡** | 美元、欧元、日元 | 便利（与外汇宝联动） | 2 元/笔（国际网络） | ⭐⭐⭐ |

**最省钱的用法**（以华夏为例）：
1. 国内换汇：在华夏 APP 上把人民币换成美元（用银行买入价 7.58，省了 0.04-0.10 的点差）
2. 出国消费：刷多币卡美元账户，银行直接从美元账户扣（无额外手续费）
3. 出国取现：首月第一笔 ATM 取现免费，之后用多币账户里的美元自动换算成当地币取现（省 ATM 手续费）

三步操作，相比普通信用卡能省 3-5%。前提是你至少提前一周国内换汇，不能临时抱佛脚。

### 跨境电商支付的汇率坑：亚马逊 vs eBay vs 速卖通

在线海淘时，支付方式选择也能影响成本：

**亚马逊美国站**：
- 用 Visa/MasterCard：自动用美元计价，汇率按 Visa 当日汇率 + 2-3%（因为电商平台要加价）
- 用银联：部分浏览器支持，但二次处理，汇率更差
- 最优方案：用美元多币卡直接支付美元（避免二次汇兑）

**eBay**：
- 统一用美元标价，信用卡支付同上
- 但部分卖家支持支付宝/微信（境内平台汇率），取决于卖家设置

**速卖通（国内卖家多）**：
- 支持人民币支付，不存在汇率问题
- 支持支付宝，可以自选多币账户（支付宝有 USD 账户的话优先用）

**跨境支付聚合器**（如 Wise、OFX）：
- 专业的低费用汇兑工具，真实汇率 + 0.5-1% 手续费
- 用于转账（比如远程工作收美元薪水）比信用卡更优
- 但消费场景下没有信用卡便利（需提前充值）

**结论**：海淘选多币卡（国内提前换好美元）> Visa 信用卡 > 境内平台（支付宝）。

### 境外 ATM 取现的 3-4% 隐形成本

很多人忽视现金需求，等到当地才发现有些地方不支持卡，被迫去 ATM 取现。ATM 取现的成本是所有方式里最高的：

**成本构成**：
- 银行手续费：1-3%（借记卡）或 2-3%（信用卡）
- 当地 ATM 运营商费用：0.5-2 美元（通常 50-100 人民币）
- 汇率差：取现时用银行卖出价（比中间价差 0.2-0.4 个点）

**实例**：国内借记卡在伦敦 ATM 取 500 英镑
- 汇率 9.0 人民币/英镑
- ATM 手续费 1.5%：500 × 1.5% = 7.5 英镑
- 当地 ATM 费：2 英镑
- 总成本：9.5 英镑 × 9.0 = 85.5 人民币（9.5% 的损耗）

vs 用 Visa 信用卡同笔消费：500 × 9.0 × 1.5% = 67.5 人民币（1.5% 损耗）

**省钱建议**：
- 出国前换好现金（机场或银行，点差虽大但一次性）
- 或用华夏多币卡（首月第一笔取现免费）
- 尽量刷卡而不是取现，除非某地真的无法刷卡
- 最后一天多余现金留着（再兑回来手续费更贵）

### 常见问题

**Q: 汇率每天都在变，用本工具换算的结果准不准？**

准。本工具每小时更新一次汇率（来自央行中间价和 Wise 实时汇率）。但注意：这是"理论汇率"，你真实支付时会有银行加点。作为参考和预算用，误差在 1-2% 以内。

**Q: 信用卡手续费 1.5%，出国一趟要花多少？**

出国花 10,000 人民币（或等值外币），手续费 150 元。看起来不多，但如果一年出国 3 次就是 450 元，用多币卡能省 300 元以上。

**Q: 华夏多币卡怎么办？限制多吗？**

华夏多币卡是借记卡，不是信用卡，需要提前存钱。办理几乎无限制（成人带身份证去支行），激活后可以在 APP 上自助换汇。唯一限制是每人每年结汇（换回人民币）有 5 万美元额度限制，但出国消费无此限制。

**Q: Visa 和万事达哪个国外好用？**

欧美基本没区别（都 99% 支持）。亚洲某些小商家可能 Visa 接受度略高，但差别很小。主要看你持有哪个卡。

**Q: 出国带多少现金合理？**

建议 20-30% 作为现金（应急和小费），70-80% 用卡。现金带太多风险高（丢失、被偷），太少不便利。

---

## Unix 时间戳与时区处理避坑指南

> 深入讲解时间戳本质、JavaScript Date 陷阱、时区转换最佳实践、UTC vs ISO 8601、夏令时边界、数据库存储建议，帮助开发者彻底搞懂时间处理。

URL: https://xtechtools.com/guides/timestamp/
发布：2026-04-29 · 更新：2026-04-29

Unix 时间戳看似简单——一个整数，代表自 1970-01-01 00:00:00 UTC 起经过的秒数——却是后端 bug、前端显示错误、跨服务数据不一致的重灾区。本文从原理出发，梳理秒级 vs 毫秒级的区别、JavaScript `Date` 的常见陷阱、时区转换的正确姿势，以及数据库存储的最佳实践，帮助你一次性把时间处理搞清楚。

### 时间戳本质：秒级 vs 毫秒级

Unix 时间戳的标准单位是**秒**，但 JavaScript 的 `Date.now()` 和 `new Date().getTime()` 返回的是**毫秒**。两者混用是最常见的 bug 来源。

常见场景对比：

```
Math.floor(Date.now() / 1000)  // 秒级时间戳 ✅
Date.now()                      // 毫秒级时间戳
new Date(1714368000)            // ❌ 被当成毫秒，结果是 1970-01-20
new Date(1714368000000)         // ✅ 正确的毫秒级
```

判断一个时间戳是秒级还是毫秒级的经验法则：
- 10 位数字 → 秒级（如 `1714368000`）
- 13 位数字 → 毫秒级（如 `1714368000000`）

接收外部 API 数据时，务必确认单位，或使用如下防御性代码：

```js
function toMs(ts) {
  return String(ts).length <= 10 ? ts * 1000 : ts;
}
```

### JavaScript Date 的 7 个常见陷阱

**1. 字符串解析行为不一致**

`new Date("2024-01-01")` 在大多数浏览器中被解析为 **UTC** 时间，而 `new Date("2024/01/01")` 则被解析为**本地时间**。这意味着同一天在不同写法下可能差 8 小时（UTC+8 环境）。

```js
new Date("2024-01-01").toISOString()  // "2024-01-01T00:00:00.000Z"  — UTC
new Date("2024/01/01").toISOString()  // "2023-12-31T16:00:00.000Z"  — 中国用户看到前一天！
```

**2. getMonth() 从 0 开始**

`new Date().getMonth()` 返回 0–11，而非 1–12，忘记 +1 是新手必踩的坑。

**3. 夏令时导致的小时丢失**

在实行夏令时（DST）的地区，某天凌晨 2 点会直接跳到 3 点，导致 `new Date("2024-03-10 02:30:00")` 在美东时区实际上不存在。

**4. toLocaleDateString 格式因系统语言而异**

`new Date().toLocaleDateString()` 在中文系统返回 `"2024/1/1"`，英文系统返回 `"1/1/2024"`，不适合用于日志或存储。

**5. Invalid Date 无报错**

`new Date("abc")` 不抛出异常，只返回 Invalid Date 对象，`isNaN(new Date("abc"))` 才能检测。

**6. JSON.stringify 自动转 UTC**

`JSON.stringify({ t: new Date() })` 会把 Date 序列化为 ISO 8601 字符串（带 Z 后缀，表示 UTC），反序列化时需手动 `new Date(str)`。

**7. 时间比较应用数值而非对象**

```js
new Date("2024-01-01") === new Date("2024-01-01")  // false ❌ 对象引用比较
new Date("2024-01-01").getTime() === new Date("2024-01-01").getTime()  // true ✅
```

### 时区转换：toLocaleString 的正确用法

`toLocaleString` / `toLocaleTimeString` / `toLocaleDateString` 支持 `timeZone` 选项，是原生 API 中最简洁的时区转换方式：

```js
const ts = 1714368000000; // 某个 UTC 时间戳
const date = new Date(ts);

// 显示为北京时间
date.toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" });
// "2024/4/29 12:00:00"

// 显示为纽约时间
date.toLocaleString("en-US", { timeZone: "America/New_York" });
// "4/29/2024, 12:00:00 AM"
```

时区标识符遵循 IANA 时区数据库（[iana.org/time-zones](https://www.iana.org/time-zones)），常用值：
- `Asia/Shanghai`（中国标准时间 CST，UTC+8）
- `Asia/Tokyo`（JST，UTC+9）
- `Europe/London`（GMT/BST）
- `America/New_York`（EST/EDT）
- `UTC`（始终不偏移）

如果需要**获取另一时区的年月日数字**（用于逻辑计算而非展示），推荐用 `Intl.DateTimeFormat` + `formatToParts`：

```js
function getPartsInTZ(ts, tz) {
  const fmt = new Intl.DateTimeFormat("en-CA", {
    timeZone: tz,
    year: "numeric", month: "2-digit", day: "2-digit",
    hour: "2-digit", minute: "2-digit", second: "2-digit",
    hour12: false,
  });
  return Object.fromEntries(
    fmt.formatToParts(new Date(ts)).map(p => [p.type, p.value])
  );
}
// { year: "2024", month: "04", day: "29", hour: "12", minute: "00", second: "00" }
```

### UTC vs ISO 8601：格式规范与互转

**UTC**（协调世界时）是一个时间标准，没有夏令时，是全球所有时区的基准。

**ISO 8601** 是一种日期时间**格式规范**，常见形式：

```
2024-04-29T04:00:00Z          ← Z 表示 UTC
2024-04-29T12:00:00+08:00     ← 带时区偏移
2024-04-29T12:00:00.000+08:00 ← 带毫秒
```

JavaScript `Date.toISOString()` 始终输出 UTC 的 ISO 8601 字符串（以 `Z` 结尾）。如果要输出带本地时区偏移的字符串，需要手动计算：

```js
function toLocalISO(date) {
  const off = -date.getTimezoneOffset();
  const sign = off >= 0 ? "+" : "-";
  const pad = n => String(Math.abs(n)).padStart(2, "0");
  const hh = pad(Math.floor(Math.abs(off) / 60));
  const mm = pad(Math.abs(off) % 60);
  const local = new Date(date.getTime() + off * 60000);
  return local.toISOString().slice(0, 19) + sign + hh + ":" + mm;
}
// "2024-04-29T12:00:00+08:00"
```

在 API 设计中，推荐统一使用 ISO 8601 + 明确时区偏移（或 Z）作为接口传输格式，避免歧义。

### 夏令时（DST）的边界问题

夏令时（Daylight Saving Time）每年会让时钟向前或向后拨动一小时，影响美国、欧洲、澳大利亚等地区，但中国（UTC+8）自 1992 年起已废除 DST。

DST 带来的两类问题：

**1. 时间不存在（Spring Forward）**

美东时间 2024-03-10 凌晨 2:00 → 直接跳到 3:00，这意味着 2:30 不存在。如果你的代码在这个时间触发 cron job，结果会令人意外。

**2. 时间重复（Fall Back）**

美东时间 2024-11-03 凌晨 2:00 → 退回到 1:00，这一小时会经历两次，日志时间戳可能出现"倒退"。

**最佳实践**：所有内部计算、存储、比较一律使用 UTC 时间戳（整数），只在最终展示给用户时才转为本地时区。这样 DST 的复杂性完全由 `Intl` / `toLocaleString` 的 IANA 数据库处理，你的业务代码无需感知。

### 数据库存储建议

**方案一：存 UNIX 时间戳（整数）**
- 优点：无时区歧义，索引性能好，任何语言都能解析
- 适用：大多数业务场景（事件日志、消息、订单）
- 精度：秒级用 `INT`，毫秒级用 `BIGINT`

**方案二：存带时区的类型（TIMESTAMPTZ）**
- PostgreSQL 的 `TIMESTAMP WITH TIME ZONE` 内部存储 UTC，查询时按 session 时区自动转换
- MySQL 的 `TIMESTAMP` 类似，但受服务器时区配置影响，迁移时需注意
- 适用：需要在 SQL 层做时区相关查询的场景

**方案三：存 ISO 8601 字符串**
- 缺点：字符串比较性能差，排序可能错误，不推荐用于高频查询字段
- 可接受：日志、配置、导出文件

**跨服务时间一致性原则**：
1. 所有服务器 NTP 同步到同一时间源
2. 服务间传递时间使用 UTC 整数时间戳或 ISO 8601 Z 字符串
3. 数据库服务器时区设置为 UTC，避免 ORM 自动转换带来的隐患
4. 前端展示时在用户浏览器本地做时区转换，不在服务端硬编码用户时区

可以使用 [xtechtools.com 的时间戳工具](/timestamp/) 快速完成时间戳与可读时间的互转，支持任意时区转换。

### 闰秒：几乎不用管，但要知道它存在

闰秒（Leap Second）由国际地球自转服务（IERS）不定期插入 UTC，用于补偿地球自转速度的细微变化。插入时，UTC 的某一分钟会有 61 秒（即 23:59:60）。

对绝大多数业务系统来说，闰秒影响极小：
- Linux 内核通过"闰秒抹平"（leap smear）将额外的 1 秒分散到数小时内
- Google、AWS、Azure 都采用类似策略
- NTP 校时会在闰秒后自动修正

唯一需要注意的场景：高频交易、精密授时等对毫秒级时间准确性有极高要求的系统，需要使用支持闰秒的时钟库（如 PTP 硬件时间戳）。

对普通 Web 应用而言：确保服务器开启 NTP 同步即可，无需额外处理。

### 常见问题

**Q: 为什么我的时间戳转出来差了 8 小时？**

最常见原因：把 UTC 时间戳直接显示，没有转换到用户所在的 UTC+8 时区。使用 `new Date(ts).toLocaleString("zh-CN", { timeZone: "Asia/Shanghai" })` 即可得到北京时间。

**Q: `Date.now()` 和 `+new Date()` 有区别吗？**

结果相同，都返回毫秒级时间戳。`Date.now()` 不需要创建 Date 对象，性能略好，是推荐写法。

**Q: 如何判断两个时间是否是同一天（按北京时间）？**

不要直接比较时间戳除以 86400000，时区会导致结果错误。应将两个时间戳都转为北京时间的年月日字符串再比较，或使用 `Intl.DateTimeFormat` + `formatToParts` 提取年月日数字后对比。

**Q: 数据库存时间戳用 INT 还是 DATETIME？**

推荐用 INT（秒级）或 BIGINT（毫秒级）存 Unix 时间戳，索引性能好，无时区歧义。如需在 SQL 层做时区感知查询，PostgreSQL 的 TIMESTAMPTZ 是更好的选择。避免裸 DATETIME 类型（不带时区信息）。

**Q: moment.js 还值得用吗？**

moment.js 已停止维护（进入维护模式），包体积大（~300KB gzip 后约 70KB）。新项目推荐用原生 `Intl` API 或轻量替代品 dayjs（~2KB）、date-fns（按需引入）。

**Q: 中国有没有夏令时？**

中国大陆自 1992 年起废除夏令时，全年统一使用 UTC+8（中国标准时间 CST）。香港、台湾、澳门也不实行夏令时。使用 IANA 时区标识符 `Asia/Shanghai` 时，系统会自动处理历史上的 DST 记录（1986–1991 年间曾实行）。

---

## 中国法定节假日与调休安排：政策解读 + 自动推算

> 深度解读国务院节假日通知发布规律、调休工作日计算方法、农历节日定位算法、清明节节气算法，以及海外华人同步节假日的实用方法。

URL: https://xtechtools.com/guides/cn-holidays/
发布：2026-04-29 · 更新：2026-04-29

每年 11–12 月，国务院办公厅发布下一年度节假日放假通知，几乎每次都引发热烈讨论——尤其是"连休几天但要补班几天"的调休方案。本文从政策层面梳理节假日制度，解析调休的逻辑，讲清楚农历节日和节气节日的日期推算原理，并介绍如何用程序自动判断某一天是否是工作日。你也可以直接使用 [xtechtools.com 的节假日工具](/cn-holidays/) 查询任意日期的上班/放假状态。

### 中国法定节假日制度概览

根据国务院 2007 年发布、2013 年修订的《全国年节及纪念日放假办法》，目前中国大陆共有 **11 天**法定节假日：

| 节日 | 法定假日天数 | 通常连休天数（含调休周末） |
|------|------------|-------------------------|
| 元旦 | 1 天 | 1–3 天 |
| 春节 | 3 天 | 7 天（黄金周） |
| 清明节 | 1 天 | 3 天 |
| 劳动节 | 1 天 | 4–5 天 |
| 端午节 | 1 天 | 3 天 |
| 中秋节 | 1 天 | 3 天 |
| 国庆节 | 3 天 | 7 天（黄金周） |

"法定假日"是法律规定的最少天数，实际放假通过**借用周末**来延长，代价是在相邻的周末上班（即调休工作日）。

### 国务院通知的发布时间规律

每年节假日安排由国务院办公厅以**通知**形式发布，主要特点：

1. **发布时间**：通常在当年 11 月下旬至 12 月上旬发布次年的放假安排。少数年份会延迟到 12 月中旬，极少数情况下会在 1 月初补发（如春节临近才确定农历日期边界）。

2. **发布渠道**：通过中国政府网（gov.cn）和新华社官方发布，各大新闻网站同步转载。

3. **调整频率**：基本框架固定，每年差异主要体现在调休方案——即哪些周末上班、连休几天的结构。遇到特殊情况（如 2020 年新冠疫情），可能临时调整春节假期。

4. **法律效力**：通知具有行政法规效力，企业必须遵守法定节假日安排，但可以在此基础上给予更多休假。

**实用建议**：关注国务院官方微信公众号或 gov.cn 官网，每年 11 月后留意推送。第三方日历 App（如系统日历、钉钉）通常在通知发布后数天内完成数据更新。

### 调休工作日的计算逻辑

调休（compensatory workday，俗称"补班"）的核心逻辑是：

> 从节假日临近的周末中"借"天数来拼成更长的连假，被借走的周末改为上班日。

**典型示例：2024 年国庆节**

- 法定节假日：10 月 1–3 日（3 天）
- 正常双休：9 月 28–29 日、10 月 5–6 日
- 调休工作日：9 月 29 日（原周日休息 → 补班）、10 月 12 日（原周六休息 → 补班）
- 实际连休：9 月 30 日 ~ 10 月 7 日，共 **7 天**

**调休的数学约束**：

```
实际休假天数 = 法定节假日 + 借用周末天数
调休工作日天数 = 借用周末天数
净增休假 = 法定节假日天数（不变）
```

所以调休并不多给假期，只是把假期集中在一段时间，代价是其他周末需要上班。

**为什么有时调休方案会引发争议？**
调休把周末分散地挪走，会导致长时间连续工作（如 7 天连班），对体力和精力消耗较大，因此每年调休方案发布后均有讨论。

### 农历节日的日期推算：春节、端午、中秋

中国三大农历节日的公历日期每年不同，需要通过农历-公历换算得出。

**春节**：农历正月初一。公历日期在 1 月 21 日到 2 月 20 日之间。

**端午节**：农历五月初五。公历日期通常在 6 月份（偶尔为 5 月下旬）。

**中秋节**：农历八月十五。公历日期通常在 9 月中下旬（偶尔为 10 月初）。

农历是一种**阴阳历**，月份以月相周期（约 29.53 天）为基准，通过**置闰月**（每 19 年插入 7 个闰月）来与太阳年同步，保持节气与季节的对应关系。

计算农历对应公历的方法有两种：

1. **查表法**：预先编制农历-公历对照表，适用于固定年份范围（如 1900–2100 年），精度高，实现简单，绝大多数日历库采用此方法。

2. **天文算法**：通过行星运动方程精确计算朔日（新月）和节气时刻，代表实现是 Jean Meeus 的《Astronomical Algorithms》，精度可达秒级，但实现复杂。

对于应用开发，推荐直接使用成熟库（如 `lunar-javascript`、Python 的 `lunardate`）或订阅国务院官方发布数据，避免自行实现农历算法。

### 清明节：用节气定位的特殊假日

清明节是唯一一个以**节气**（而非农历日期）确定的法定节假日。清明是二十四节气中第 5 个节气，公历日期固定在 4 月 4 日、5 日或 6 日之一，取决于当年的天文计算。

**节气计算原理**：

二十四节气基于太阳黄经，每隔 15° 为一个节气。清明对应太阳黄经 15°。精确时刻需要天文计算，但有一个简便的近似公式（适用于 1901–2099 年）：

```
清明公历日 = INT(4.81 + 0.2422 × (Year - 1) - INT((Year - 1) / 4)
              + INT((Year - 1) / 100) - INT((Year - 1) / 400))
```

更简单的经验规律：**4 月 4 日或 5 日**（21 世纪大多数年份为 4 月 4 日或 5 日，极少数为 4 月 6 日）。

实际应用中，国务院放假通知会明确标注当年清明节的具体日期，无需自行计算。

**扫墓习俗与假期安排**：清明假期通常调休为 3 天连休，是出行高峰之一，高速公路小客车免通行费政策一般不适用于调休延长出来的假期，仅适用于法定节假日当天。

### 用程序自动判断某天是否工作日

由于调休使得部分周六变为工作日、部分周日保持休息，仅靠"是否是周末"无法准确判断，必须参考官方数据。

**方案一：使用开源数据集**

GitHub 上有多个维护中国节假日数据的开源项目，数据格式为 JSON，按年更新：
- `holiday-cn`（国内常用，数据来源国务院通知）
- `china-public-holiday`

数据结构示例：

```json
{
  "2024-10-01": { "name": "国庆节", "isOffDay": true },
  "2024-09-29": { "name": "国庆节调休", "isOffDay": false }
}
```

**方案二：调用第三方 API**

多家国内 SaaS 提供节假日查询 API，返回给定日期的上班/休息状态，可直接集成到业务系统。

**方案三：订阅 iCal 日历**

将节假日数据以 `.ics` 格式导入 Google Calendar / Apple Calendar，适合个人使用。

**判断逻辑参考（JavaScript）**：

```js
function isWorkday(dateStr, holidayData) {
  if (holidayData[dateStr] !== undefined) {
    return !holidayData[dateStr].isOffDay; // 官方数据优先
  }
  const day = new Date(dateStr).getDay();
  return day !== 0 && day !== 6; // 默认按周末判断
}
```

你可以使用 [xtechtools.com 节假日工具](/cn-holidays/) 直接查询任意日期的状态，无需手动查文件。

### 海外华人：如何同步中国节假日

身处海外的华人，无论是需要与国内团队协调工作，还是希望在传统节日与家人视频，都需要实时获取国内节假日安排。

**实用方法汇总**：

1. **订阅 Google Calendar 中国节假日日历**：Google Calendar 内置"中国的假日"日历，覆盖法定节假日（但调休工作日数据有时不完整）。

2. **使用支持调休的 App**：万年历、黄历等国内 App 均包含完整的调休数据，可在海外下载使用。

3. **关注国务院公众号/官网**：每年 11–12 月主动查阅，记录到个人日历。

4. **利用 GitHub 数据源**：前文提到的开源节假日数据集会在通知发布后数日内更新，可以 fork 或直接拉取 JSON 文件。

**时区注意事项**：中国节假日基于北京时间（UTC+8）定义。海外华人在计算视频通话时间或业务截止时间时，需将北京时间转换为本地时区。例如北京时间上午 9 点对应旧金山时间（UTC-8）前一天晚上 5 点（夏令时期间为 UTC-7，即晚上 6 点）。可使用 [xtechtools.com 时间戳工具](/timestamp/) 快速进行时区转换。

### 常见问题

**Q: 每年节假日安排什么时候公布？**

通常在当年 11 月下旬至 12 月上旬，由国务院办公厅通过中国政府网（gov.cn）发布次年放假通知。建议关注 gov.cn 或国务院官方微信公众号获取第一手信息。

**Q: 调休工作日算不算加班？**

不算。调休工作日是用周末换取法定节假日前后的集中休假，属于正常工作安排，不适用加班工资规定。只有在法定节假日当天被要求上班，才须支付不低于日工资 300% 的加班工资。

**Q: 清明节的日期怎么确定？**

清明是二十四节气之一，对应太阳到达黄经 15° 的时刻，公历日期固定在 4 月 4–6 日之间，21 世纪大多数年份为 4 月 4 日或 5 日。具体日期以当年国务院放假通知为准。

**Q: 春节假期是几天？为什么每年不同？**

法定节假日为春节（农历正月初一至初三）共 3 天，通过调休通常连休 7 天（黄金周）。由于春节公历日期每年不同（1 月 21 日至 2 月 20 日之间），与周末的相对位置各异，导致调休方案、具体连休日期每年不同。

**Q: 有没有 API 可以查询某天是否上班？**

有。GitHub 上的 `holiday-cn` 等开源项目提供结构化 JSON 数据，多家国内 SaaS 也提供节假日查询 API（如 timor.tech/api/holiday）。或者直接使用本站的节假日工具快速查询。

**Q: 香港、台湾的节假日与大陆一样吗？**

不同。香港沿用部分中国传统节日（如农历新年、清明、端午、中秋），同时保留回归前的部分英式假日（如圣诞节、复活节）。台湾节假日制度与大陆完全独立，由行政院人事行政总处发布。三地节假日安排须分别查询对应官方来源。

---

## Base64 编码完全指南：原理、应用与开发避坑

> Base64 把任意二进制编码成 ASCII 文本。本指南讲清楚 3 字节→4 字符的数学原理、URL Safe 变体、何时该用、以及实战踩过的 坑。

URL: https://xtechtools.com/guides/base64/
发布：2026-04-29 · 更新：2026-04-29

Base64 是把任意二进制数据编码成 ASCII 字符串的一种方式，常用于把图片塞进 HTML/CSS、把二进制塞进 JSON、把 token 塞进 URL。本指南覆盖 3 字节→4 字符的数学原理、URL Safe 变体（用 - _ 替代 + /）、文件场景、JWT 应用、性能影响（编码后 +33%）、Padding = 含义、以及跨语言实现细节。

### Base64 的数学原理：3 字节→4 字符

Base64 把每 3 字节（24 bits）的数据按 6 位一组切成 4 个部分，从 64 个安全字符（A-Z a-z 0-9 + /）中查表替换。

例如三个字节 `0x48 0x65 0x6C`（ASCII "Hel"）：
- 二进制：`01001000 01100101 01101100`
- 6 位分组：`010010 000110 010101 101100`
- 十进制：`18 6 21 44`
- Base64 字符：`S G V s`

不足 3 字节时用 `=` 填充。例如 "He"（2 字节）编码后是 `SGU=`。

**关键**：Base64 不是加密，是编码（双向无损可逆）。任何人都能 Base64 解码，保密需要用 AES/RSA 等真正加密算法。

### 何时该用 Base64，何时不该用

**该用**：
- HTML/CSS Data URL：小图标内嵌进页面，省一次 HTTP 请求。例 `<img src="data:image/png;base64,iVBORw0K..." />`
- JWT Token：三段（header.payload.signature）都是 URL Safe Base64，浏览器 URL 安全
- Email 附件：MIME 协议强制二进制附件用 Base64 编码传输
- API 传二进制：在 JSON 里传图片、证书、签名
- 短小文件进 JSON：Base64 能在 JSON 里安全表达任意二进制

**不该用**：
- 大文件传输：Base64 膨胀 33%，带宽浪费。直接用二进制或分块上传
- 需要隐私：Base64 是编码不是加密，安全信息必须先加密再 Base64
- 高频计算：编解码有 CPU 开销，每秒数百万次编码时可能成瓶颈
- 密码存储：密码必须用 bcrypt/Argon2 哈希，不能用 Base64

### URL Safe Base64 与标准 Base64 的区别

标准 Base64 用 `+` 和 `/` 这两个字符，但在 URL 中它们是保留字符：
- `+` 在 URL 查询参数里被解释为空格
- `/` 是路径分隔符

所以需要转义：`+` → `%2B`、`/` → `%2F`，不友好。

**URL Safe Base64** 的解决方案：
- `+` → `-`（减号）
- `/` → `_`（下划线）
- 末尾 `=` 通常省略（接收方能推断出来）

**JWT 用的就是 URL Safe Base64**。本工具勾选「URL Safe」选项即可输出。同样，如果你是解码 JWT，工具也会自动识别并正确处理。

转换公式：`b64url = b64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '')`

### 文件与 Data URL：实战场景

**文件转 Base64**：
1. 选择本地文件 → 工具读为字节数组 → Base64 编码 → 得到长字符串
2. 应用场景：数据库存图片、API 传文件、备份到 JSON 中

**Data URL 格式**：
`data:[<mediatype>][;base64],<data>`

例如 PNG 图片：
`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mNk+M9QDwADhgGAWjR9awAAAABJRU5ErkJggg==`

在 HTML 里直接用作 `<img src>` 或 `<a href>`，浏览器识别后自动解码显示。本站「图片转 Data URL」工具会自动加前缀。

**Data URL 优势**：减少 HTTP 请求、无 CORS 问题、适合小文件（< 100KB）。但大文件会让 HTML 膨胀，不推荐。

### 跨语言实现与 Padding 细节

不同语言的 Base64 库用法相似，但 Padding 处理有细微差别：

- **JavaScript**：`Buffer.from(s, 'base64')` 和 `btoa()` 自动处理 Padding
- **Python**：`base64.b64decode(s)` 能容忍缺少 Padding，但严格模式会拒绝
- **Java**：`Base64.getDecoder().decode(s)` 要求 Padding 完整
- **Go**：`base64.StdEncoding.DecodeString(s)` 也要求 Padding

**Padding = 的含义**：
- 如果编码长度 % 4 != 0，用 `=` 填充至 4 的倍数
- 例如 5 字节编码后 `XXXXa`（5 字符）→ 加 3 个 = 变 `XXXXa===`
- URL Safe 模式通常省略 Padding，解码时库会自动补齐

**实战建议**：跨语言传递 Base64 时，最安全的方式是保留 Padding，或约定好"使用 URL Safe 且无 Padding"，避免解码失败。

### Base64 的性能与体积成本

编码过程有开销，特别是大文件场景：

- **体积膨胀**：每 3 字节变 4 字符，膨胀比 = 4 ÷ 3 ≈ 1.33。1 MB 文件 Base64 后约 1.33 MB
- **CPU 成本**：编码 1 MB 在现代 CPU 上约 1-5ms（本地操作），解码类似。但如果业务每秒 Base64 编百万条字符串，会积累
- **网络成本**：膨胀 33% 意味着同样信息带宽用量多 1/3，移动网络明显
- **优化**：
  - 小文件（< 10KB）直接 Base64，网络开销忽略不计
  - 中等文件（100KB-1MB）考虑压缩先再 Base64
  - 大文件（> 10MB）分块上传 + 二进制传输，不用 Base64
  - 高频场景用原生 Uint8Array 代替 Base64 字符串，减少序列化开销

### 常见坑：编码/解码错误排查

- **不是所有 Base64 都能 UTF-8 解码**：如果编码的是图片或加密结果，解码后是二进制乱码。应该直接保存为文件，不要尝试文本解读
- **包含空白字符**：某些来源的 Base64 字符串中间夹着换行或空格（比如邮件附件）。解码前要用 `s.replace(/\s/g, '')`先去掉
- **大小写敏感**：Base64 区分大小写，`abc` 和 `ABC` 解码出来是不同字节。复制时要完整
- **URL 查询参数的 + 被吃掉**：`?token=abc+def` 发到后端时 `+` 被当空格。务必用 URL Safe 或手动转义
- **Padding 少一个或多一个**：严格库会拒绝。标准做法是补齐到 4 的倍数

### 常见问题

**Q: Base64 是加密吗？**

不是。Base64 是编码（双向可逆），任何人都能解码。需要保密的数据必须先用 AES/RSA 加密，再 Base64 编码。

**Q: Base64 比原文件大多少？**

约大 33%（每 3 字节变 4 字符）。1 MB 文件 Base64 后约 1.33 MB，反过来解码还原到 1 MB。

**Q: 为什么 JWT 用 URL Safe Base64？**

JWT token 经常出现在 URL 查询参数或 HTTP Authorization header 里，普通 Base64 的 + 和 / 会与 URL 保留字符冲突，需要转义。URL Safe 版本避免了这个麻烦。

**Q: 能在 Base64 中间插入换行吗？**

可以，但解码时必须先清理空白字符。RFC 规范允许每 76 字符插一个换行（用于邮件兼容性），但现代系统通常不需要。

**Q: 解码失败怎么排查？**

检查：1）方言是否正确（标准 vs URL Safe），2）Padding 是否完整，3）中间是否有无关空白字符，4）长度是否是 4 的倍数。

---

## 代码格式化终极指南：HTML/CSS/SQL/JS 美化与团队规范

> 各语言的主流格式化工具（Prettier/HTMLHint/sql-formatter）、配置文件、pre-commit hook 强制规范、CI 中的 lint-staged。本指南讲清楚为什么团队都用 Prettier。

URL: https://xtechtools.com/guides/code-formatter/
发布：2026-04-29 · 更新：2026-04-29

代码在生产环境常被压缩成无空白的一行，难以 review 也难调试。格式化工具把这些紧凑文本重新拆成多行缩进结构，让代码对人类友好。本指南从各语言的主流工具（Prettier/HTMLHint/sql-formatter/JS-Beautify）、配置文件、pre-commit hook 强制规范、团队 CI 集成讲清楚 code formatting 的全部考量。

### 为什么需要代码格式化工具

IDE 虽然有右键「格式化代码」，但每个开发者的按键习惯不同：
- 缩进用 2 空格还是 4 空格还是 Tab？
- 行尾要不要加分号？
- 花括号下一行还是同行？
- 数组/对象最后一个元素后面要不要逗号？

**团队没有统一规范，就会出现**：每个人一个风格，commit 历史里全是格式变化，PR review 反而在纠缠格式而不是逻辑。格式化工具的目的就是**消除这些人为选择**，让所有代码机械地落成同一个模样。

**Prettier 为什么最流行**：它采取"零配置哲学"——有既定的格式规则，你很少需要改配置，团队所有成员装上同一版本就能保证格式一致。

### 主流格式化工具对照

- **Prettier**（JavaScript/TypeScript/JSX/JSON）：最流行，简化主义配置，广泛社区支持
- **HTMLHint**（HTML）：专注 HTML 校验与格式化，可检测语义错误
- **sql-formatter**（SQL）：支持 11 种 SQL 方言（MySQL/PostgreSQL/SQLServer 等），关键字大小写与缩进自定义
- **Beautify**（JavaScript/JSON）：Web 版，支持多语言美化，但配置项复杂
- **Black**（Python）：Python 社区事实标准，集成 pre-commit 无缝
- **gofmt**（Go）：内置官方工具，Go 生态强制使用
- **rustfmt**（Rust）：Rust 官方格式化，cargo fmt 一键

本工具整合 Prettier + HTMLHint + sql-formatter + Beautify，支持切换语言与配置参数。

### 配置文件与常见参数

**Prettier 配置**（`.prettierrc` 或 `package.json` 的 `"prettier"` 字段）：
```
{
  "printWidth": 80,        // 单行最大字符数
  "tabWidth": 2,           // 缩进宽度
  "useTabs": false,        // 用 Tab 还是空格
  "semi": true,            // 行尾是否加分号
  "singleQuote": false,    // 用单引号还是双引号
  "trailingComma": "es5"   // 末尾逗号：none / es5 / all
}
```

**SQL 格式化参数**：
- 关键字大小写：UPPERCASE / lowercase / PRESERVE
- 缩进宽度：通常 2 或 4
- 逗号位置：leading（`,col`) 或 trailing（`col,`）

**团队推荐**：Prettier 用官方默认配置，不要过度自定义。同时装上 `.prettierignore` 排除 node_modules、dist 等目录。

### Pre-commit Hook：强制规范

配置了格式化工具还不够，需要在 git commit 时强制检查。用 **husky** + **lint-staged** 是业界标配：

1. 装 husky：`npm install husky --save-dev && npx husky install`
2. 装 lint-staged：`npm install lint-staged --save-dev`
3. `.husky/pre-commit` 文件：
```
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
```
4. `package.json` 加配置：
```
"lint-staged": {
  "*.{js,jsx,ts,tsx}": "prettier --write",
  "*.{html,css}": "prettier --write",
  "*.sql": "sql-formatter --fix"
}
```

流程：开发者 git add → git commit 时，husky 自动跑 lint-staged → 只对本次改动的文件格式化 → 格式化成功才 commit 成功。违反规范的提交直接被卡住。

### CI 中的格式化检查

为了更严格的质量门槛，在 CI pipeline 中加格式化校验（仅报告，不自动修复）：

**GitHub Actions 示例**：
```yaml
name: Format Check
on: [pull_request]
jobs:
  format:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v2
      - uses: actions/setup-node@v2
      - run: npm install
      - run: npx prettier --check "src/**/*.{js,jsx,ts,tsx}"
      - run: npm run lint:sql
```

如果 PR 中有格式不达标的代码，CI check fail，PR merge 被卡住。团队必须本地跑 `prettier --write` 修复后再 push。这样保证了 main 分支永远格式统一。

### 格式化 vs Lint：概念区分

很多人混淆这两个：

- **Lint**（如 ESLint/Pylint）：查找**逻辑错误**与**风格问题**（如未定义变量、 unused 变量、复杂度超标）。输出警告 / 错误
- **格式化**（Prettier/gofmt）：调整**空白与符号**（缩进、换行、引号）。改变代码视觉表现但不改逻辑

**融合策略**：
1. 先格式化（prettier --write）让代码统一好看
2. 再 lint（eslint）检查逻辑问题
3. 在 pre-commit 两个都跑，但格式化自动修复（--write），lint 只报告（--fix 也可以）

### 空格 vs Tab 之争终结者

程序员的"圣战"之一：
- **空格派**：可见字符，在所有编辑器宽度一致，缩进嵌套清晰，是当代主流（90% 项目用空格）
- **Tab 派**：只占 1 字符位置，文件体积小，屏幕宽度用户可控

**现实情况**：
- Python 强制缩进，但允许 space 或 tab（混用会报错）
- JavaScript/Go/Rust 生态默认空格
- Rust/Go 官方工具默认 Tab（rustfmt / gofmt）
- 大多数公司标准 2-4 空格

**建议**：团队选定一种后在 .editorconfig 或 .prettierrc 锁定，不要再改。Prettier 的默认 2 空格对新手友好。

### 常见问题

**Q: 代码格式化会改变代码逻辑吗？**

不会。格式化只改变空白、换行、引号等表面风格，不改变 AST（抽象语法树），代码行为完全相同。

**Q: 我不喜欢 Prettier 的默认配置怎么办？**

可以改 .prettierrc，但不建议过度自定义。团队代码检查通常采用 Prettier 官方推荐配置，个人改了也会在 lint-staged 被覆盖。

**Q: 格式化后代码变丑了怎么办？**

短期内可能不习惯，但 1-2 周后就会适应。好处是团队所有人代码看起来一样，review 时专注逻辑不纠缠格式。

**Q: 大型存量项目怎么一次性格式化？**

分步走：1) 在新分支跑 prettier --write 全项目，2) 创建 PR，3) 之后再改代码时用 pre-commit hook 维护格式。一步到位改全量容易产生巨大 diff。

**Q: 格式化工具对性能有影响吗？**

本地开发影响微乎其微（毫秒级）。但 CI 中大项目跑 prettier + eslint 可能需要几秒，可用缓存优化。

---

## 文件哈希校验完全指南：MD5/SHA-1/SHA-256 选哪个

> MD5 已被破解但仍能查重、SHA-1 也已淘汰、SHA-256 当前安全、SHA-3 新一代。本指南讲清楚算法选型、HMAC 用法、防篡改与数字签名、性能对比、Web Crypto API 浏览器内计算。

URL: https://xtechtools.com/guides/file-hash/
发布：2026-04-29 · 更新：2026-04-29

下载大文件时，网站通常提供 SHA-256 哈希供你验证下载完整性。但为什么是 SHA-256 而不是 MD5？MD5 为什么被破解后还有人用？本指南从哈希算法原理讲起，覆盖 MD5/SHA-1/SHA-256/SHA-3 的安全演化、何时该用哪个、HMAC 与数字签名的应用、以及如何在浏览器内用 Web Crypto API 快速计算文件哈希。

### 哈希算法的基本原理与四大属性

哈希函数（Hash Function）是一种**单向函数**，把任意长度的输入映射到固定长度的输出（称为"哈希值"或"指纹"）。

**四大关键属性**：
1. **确定性**：同样输入永远同样输出（100 次计算哈希都是 SHA256(file) = 同一个值）
2. **不可逆**：不能从哈希值反推原始输入（所有哈希算法都这样）
3. **雪崩效应**：改动输入 1 个字节，哈希值完全变化（这是防篡改的关键）
4. **碰撞困难**：不同输入产生同样哈希值极其困难（理想情况下"不可能"）

**安全哈希 vs 非安全哈希**：
- **非安全**：CRC32（只用于 ZIP 检测错误），能轻易碰撞
- **安全**：MD5/SHA 系列，需要极大计算资源才能人工构造碰撞

下载文件时的校验就是利用属性 3 和 4：网站发布 SHA-256(file)，你本地计算相同哈希，相等则文件完整未被篡改。

### MD5：33 岁的老将，已报废但仍在用

MD5 在 1992 年发布，被广泛使用 20+ 年。输出 128 位（32 个十六进制字符）。

**为什么报废**：
- 2004 年发现理论碰撞（花了 64 台计算机一小时）
- 2005 年 Dobbertin 的暴力碰撞
- 2009 年 CM1 项目能在几秒内构造恶意碰撞
- 2019 年研究人员伪造了一个有效的 SSL 证书（用 MD5 签名的）

**MD5 现在能用吗**？
- ❌ **密码存储**：禁用。用 bcrypt/Argon2
- ❌ **数字签名/证书**：禁用。NIST 2010 年就警告停用
- ✅ **文件完整性校验**：容易。大多数 Linux 发行版仍提供 md5sum，虽然已过时
- ⚠️ **去重哈希**：可以，但精神上已不推荐。很多公司的数据库里仍有 MD5 作为文件快速去重用

**实际情况**：你不应该再选 MD5。但如果老系统已用 MD5 也别急着改（兼容性成本大），知道它的局限就行。

### SHA-1：千禧年的标准，2017 年被 SHAttered

SHA-1（Secure Hash Algorithm-1）发布于 1995 年，输出 160 位（40 个十六进制字符），曾是安全哈希标准。

**衰落历程**：
- 2005 年理论碰撞（改进的攻击算法）
- 2017 年 **SHAttered 事件**：Google 和 CWI 联合公开演示了两个不同的 PDF 文件产生相同 SHA-1 哈希
  - 计算耗时：6 个月 + 110 GPU 小时
  - 成本：约 11 万美元
  - 虽然成本很高，但证明了商用攻击已可行
- 2020 年 NIST 正式建议停用

**SHA-1 现状**：
- ❌ Git 从 2017 年起逐步迁移 SHA-1 到 SHA-256（仍在过渡期）
- ❌ 大多数浏览器 / 证书机构已禁止 SHA-1 签名证书
- ✅ 非安全场景仍广泛使用（Git 内部、版本控制标记）

**总结**：SHA-1 也别再选。Git 用户需要关注迁移时间表。

### SHA-256 与 SHA-512：当前金牌方案

SHA-256 是 SHA-2 系列的一员（还有 SHA-224/SHA-384/SHA-512）。

**特性对比**：
| 算法 | 输出位数 | 输出字符 | 安全强度 | 适用场景 |
| --- | --- | --- | --- | --- |
| SHA-256 | 256 bits | 64 字符 | 超强 | 文件校验、区块链、JSON Web Token |
| SHA-512 | 512 bits | 128 字符 | 超强 | 需要更强安全裕度、数字签名 |

**2026 年现状**：
- ✅ NIST 官方推荐
- ✅ 所有主流编程语言原生支持
- ✅ 证书、区块链（比特币）、Git、Docker 都采用
- ✅ 被认为在 2030-2050 年内仍然安全

**实用建议**：**99% 场景选 SHA-256**。它已成为事实标准。SHA-512 仅在需要超高安全裕度时用（如国防领域）。

### SHA-3：新一代（可选）

SHA-3 是 2015 年发布的最新标准，采用 Keccak 海绵结构，与 SHA-2 算法原理完全不同。

**特点**：
- 更高效的硬件实现
- 即使 SHA-2 被破解，SHA-3 的独立性保证系统安全（鸡蛋不放一个篮子）
- 抗量子计算能力更强

**现状**：
- ⚠️ 新项目可选择 SHA-3
- ⚠️ 但不紧迫（SHA-2 仍然安全且更广泛）
- 📈 云存储（AWS S3）、高端密码学应用开始采用

**实用建议**：除非你做高端安全应用或量子安全规划，否则 SHA-256 足够。SHA-3 适合未来规划但现在选 SHA-2 不会错。

### HMAC：带密钥的哈希，用于完整性与认证

HMAC（Hash-based Message Authentication Code）是在哈希基础上加一个**密钥**，产出认证码。

**HMAC 工作流**：
```
HMAC-SHA256(secret_key, message) = Hash(key XOR opad || Hash(key XOR ipad || message))
```

只有知道 secret_key 的人才能计算出正确的 HMAC。

**应用场景**：
- **API 认证**：请求体 + timestamp + secret_key → HMAC，服务端同样计算验证。防止中间人篡改
- **JWT 签名**：header + payload + secret → HS256 (HMAC-SHA256)
- **Webhook 认证**：GitHub 发 webhook 时会附加 X-Hub-Signature: sha256=...（用你的 webhook secret 计算）

**HMAC vs 数字签名**的区别：
- **HMAC**：对称密钥（只有一个 secret），双方都能生成和验证，适合点对点通信
- **数字签名**：非对称（私钥签名、公钥验证），发送方用私钥签，任何人用公钥验证，适合广播信息

### 下载文件校验：完整性与防篡改

**完整流程**：
1. 网站发布文件 + SHA-256 哈希（通常放在同一页）
2. 用户下载文件
3. 用户本地计算该文件的 SHA-256
4. 对比：若相同，文件完整且未被篡改

**哪种情况下会失败**？
- 网络中断、下载不完整 → 哈希不同
- 中间人攻击、文件被篡改 → 哈希不同
- 但如果攻击者同时改文件**和**哈希（比如劫持网站），这方法失效

**防范**：
- 哈希本身要从**可信来源**（如官网 HTTPS、PGP 签名）获取
- 网站用 SSL 证书保证来源真实
- 开源项目用 GPG 签名文件 + 发布者公钥，让任何人验证签名的真实性

本工具在浏览器内计算，无上传风险，适合离线验证。

### 性能对比与实测

在现代 CPU 上（Web Crypto API 或原生库）：
| 算法 | 1 MB 耗时 | 100 MB 耗时 | 相对速度 |
| --- | --- | --- | --- |
| MD5 | 0.5 ms | 50 ms | 最快（已报废） |
| SHA-1 | 0.7 ms | 70 ms | 快（已淘汰） |
| SHA-256 | 1.2 ms | 120 ms | 标准 |
| SHA-512 | 1.0 ms | 100 ms | 稍快于 SHA-256（64 位 CPU） |
| SHA-3 | 1.5 ms | 150 ms | 最慢（但仍可接受） |

**结论**：在当代硬件上，SHA-256 与 SHA-512 性能差异可忽略。安全性永远比速度重要。选 SHA-256 不会有性能问题。

### Web Crypto API：浏览器内秒算哈希

Web Crypto API 是浏览器原生的加密库，提供 SHA-256/SHA-512/SHA-1（仅为兼容，不推荐）。

**优势**：
- 完全在浏览器运行，无需上传服务器
- 性能比纯 JavaScript 快 10-100 倍（硬件加速）
- 安全可信，是同一套标准库用于 HTTPS 证书验证

**使用示例**：
```javascript
const file = document.getElementById('file').files[0];
const buffer = await file.arrayBuffer();
const hashBuffer = await crypto.subtle.digest('SHA-256', buffer);
const hashArray = Array.from(new Uint8Array(hashBuffer));
const hashHex = hashArray.map(b => b.toString(16).padStart(2, '0')).join('');
console.log('SHA-256:', hashHex); // 64 位十六进制字符
```

本工具就是基于 Web Crypto API，可秒级计算 GB 级文件的哈希（受浏览器内存限制）。

### 常见问题

**Q: MD5 现在还能用吗？**

不能用于安全场景（密码、签名）。可用于非敏感的文件去重。新项目应该选 SHA-256。

**Q: SHA-256 输出的 64 个字符是什么？**

256 bits ÷ 8 = 32 bytes，每个字节用 2 位十六进制表示，所以 32 × 2 = 64 个字符。

**Q: 哈希相同的两个文件一定是同一个文件吗？**

理论上有"碰撞"可能，但 SHA-256 的碰撞概率极低（计算上已不可行）。现实中可认为哈希相同 = 文件相同。

**Q: 能从哈希值反推原始文件吗？**

不能。哈希是单向函数，无法逆推。但可以用"彩虹表"（预先计算的哈希库）碰撞常见文件，所以不要用哈希储存密码。

**Q: HMAC 和数字签名哪个更安全？**

都很安全，但用途不同。HMAC 适合双方通信，数字签名适合单向认证（发送方签名、公众验证）。

---

## 农历转换完整指南：节气、生肖、干支与黄道吉日

> 农历是中华文明的时间记忆，从朔望月到干支纪年，从二十四节气到黄道吉日。本文讲清楚农历的所有核心概念、与公历的换算方法，以及如何用本站万年历工具快速查询。

URL: https://xtechtools.com/guides/lunar/
发布：2026-04-29 · 更新：2026-04-29

农历是中华民族几千年来最重要的时间系统，春节、中秋、端午等所有传统节日都按农历计算。但农历不仅仅是一套日期标记法，它蕴含了天文学（朔望月）、数学（19 年 7 闰）、文化象征（干支、生肖）的完整体系。许多人至今搞混农历与公历的关系，不知道闰月如何安排，甚至对生肖的起算点也有疑惑。本指南从朔望月的天文基础开始，逐层讲解农历的构成原理、闰月规则、干支纪年法与生肖的民俗含义，最后展示如何用本站农历万年历工具一键查询任意日期的农历信息与宜忌。

### 农历的天文基础：朔望月与阳历的矛盾

农历的核心单位是**朔望月**（从新月到新月的周期），约 29.5306 天。这是月球环绕地球一周的真实周期，在没有钟表的古代，人们通过观察月亮的圆缺变化来计时。

然而地球绕日一年约 365.2422 天，365.2422 ÷ 29.5306 = 12.37，意味着一个太阳年包含约 12.37 个朔望月。如果农历每年都固定 12 个月（354 天），15 年后农历就会比公历少掉大约 5.5 个月，春节将从冬天漂移到秋天，这对农业生产是灾难。

**解决办法就是闰月**。农历采用「19 年 7 闰」规则：19 个农历年（约 6935 天）恰好等于 235 个朔望月，也接近 19 个太阳年（约 6940.5 天）。这 19 年中的 7 年要加闰月（共 13 个月），使农历不会与季节严重偏离。

### 闰月如何计算与安排

闰月的规则很微妙，**不是简单的固定周期**。农历用「节气」来确定闰月的位置。

每个农历月都对应一个主要节气（如正月的「雨水」、二月的「清明」等）。如果某个农历月不含对应的节气，就将这个月设为闰月（如「闰二月」）。

例子：2026 年是农历龙年，闰月为「闰二月」。公历 2026 年 3 月 22 日是农历二月二十三，2026 年 4 月 20 日是农历闰二月二十三。这个闰二月是因为农历二月末尾缺少了下一个主要节气的交点。

结果是闰月出现的间隔不规律：有时三年一闰，有时隔五年、八年。这也是为什么需要万年历工具——手算太复杂，直接查表最可靠。

### 干支纪年：甲子到癸亥的 60 年循环

**干支**是中国古代的计时系统，由「十天干」（甲乙丙丁戊己庚辛壬癸）和「十二地支」（子丑寅卯辰巳午未申酉戌亥）组合而成。

天干和地支按顺序配对：甲子、乙丑、丙寅...，一直到癸亥，共 60 对，然后循环。这个周期称为**一个甲子**，约 60 年。2026 年是农历龙年（地支「辰」），天干为「丙」，所以是丙辰年。

干支用途广泛：

- **纪年**：农历使用干支纪年，如「癸卯年」（2023）。
- **纪月**：每个农历月有对应的干支。
- **纪日**：每一天有干支，用于八字算命、选日子等。
- **十二生肖**：地支对应的动物，子鼠、丑牛、寅虎...亥猪。

了解干支的规律有助于理解农历的深层逻辑，以及为什么春联上常看到「癸卯年」这样的表述。

### 二十四节气的定义与黄经度数

**节气**是农历的灵魂。它不是某个固定的农历日期，而是地球在公转轨道上的特定位置——**黄经度数**。

春分是黄经 0°，清明 15°，谷雨 30°...每隔 15° 就是一个节气，共 24 个。因为地球以约 365.2422 天绕日一周，每天转过约 1°，所以节气大约每 15 天出现一次。

这意味着：

- 节气的**公历日期每年都不同**，但范围很固定。例如春分总在 3 月 19-21 日。
- 节气的**农历日期更不固定**。春分可能是农历正月二十，也可能是二月初。
- 用公历日期查节气很方便；用农历日期查节气就要查表。

正因为这种复杂性，万年历工具必须内置黄经计算算法或完整数据库，才能准确告诉你某日是哪个节气。

### 生肖年的起算：立春 vs 春节的民俗争议

说起「属什么生肖」，很多人不知道的是：**生肖的起始点有两种标准，造成了持久的民俗争议**。

**标准一：农历正月初一（春节）**
最通俗的定义。你在公历 2026 年 1 月出生，如果春节（2026 年 1 月 29 日）还没到，那你属龙；过了春节，你才属蛇。这是绝大多数人用的规则，也是街边生肖邮票、生肖纪念币的计数方式。

**标准二：农历立春**
传统命理学（八字、紫微斗数）用的是立春。2026 年立春是 2 月 4 日，那么 2026 年 1 月 29 日（春节）至 2 月 3 日仍然属龙年，2 月 4 日后才属蛇年。这会导致春节当天的人属相「跨年」。

**实践建议**：如果你只是闲聊生肖，用春节标准；如果找八字师算命，先问清楚他用的标准。本站万年历工具默认采用春节标准，也会标注立春日期供专业用户参考。

### 黄道吉日与宜忌查询的民俗意义

万年历的一大功能是**查宜忌**——某日是否「宜嫁娶」「忌动土」等。这些信息从何而来？

宜忌规则来自古代的《黄历》传统，基于干支五行学说：

- 每个干支日期都对应五行属性（金木水火土）。
- 不同的事项（结婚、搬家、开业等）有相应的五行禁忌。
- 例如五行火克金，如果某日为火日，就「忌金器制作」。

现代万年历工具通常内置这些规则，快速查询不用翻纸质黄历。但要注意：

- 宜忌是民俗参考，不具法律或科学效力。
- 不同的黄历来源规则可能略有差异（南北方、各地风俗不同）。
- 重大决定最好还是咨询当地的风俗习惯和家族传统。

本工具提供的宜忌基于广泛认可的规则，适合大多数查询场景。

### 用本站农历工具快速查询与换算

本站的农历万年历工具提供四种查询模式：

1. **公历转农历**：输入公历日期（如 2026 年 4 月 29 日），秒速得到农历（龙年三月初二）、节气、生肖、干支、宜忌。
2. **农历转公历**：反向查询，农历日期一键转公历。
3. **万年历浏览**：按年月翻页，一次看整月的农历、节气、宜忌排布。
4. **节气查询**：列出某年的 24 个节气的公历和农历日期，规划农事或传统活动。

每次查询会显示：

- 农历日期、月份（含闰月标记）
- 天干地支（纪年、纪月、纪日）
- 对应的生肖
- 主要节气（如「清明」）
- 宜做和忌做的事项列表
- 该月的所有节气时间表

所有计算在浏览器本地完成，无需上传数据。

### 常见问题

**Q: 为什么农历和公历差这么多天？**

农历是按朔望月（29.5 天）制定，公历年是按地球公转（365.2 天）制定。两者不同步，靠闰月调和。所以同一天的农历日期在不同年份的公历日期会不同。

**Q: 闰月有规律吗？多久闰一次？**

没有严格的固定周期。19 年 7 闰是平均规律，但具体哪一年闰哪个月，要根据节气交点计算，间隔可能三年、五年或更长。需要查万年历。

**Q: 生肖起始点到底是春节还是立春？**

民间和绝大多数场景用春节（农历正月初一）；传统命理学（八字）用立春。两个标准都有其历史和文化根源，重要场合最好问清楚对方用的是哪个。

**Q: 黄道吉日的宜忌准确率有多高？**

宜忌是民俗传统，基于五行学说，不具科学验证。但作为文化习俗，在中文圈广泛使用，重大仪式（婚礼、开业）很多人会参考。可用，但不必迷信。

**Q: 万年历能查多久的日期？**

本工具支持公元前 2000 年到公元 3000 年的转换（共 5000 年跨度），覆盖日常查询需求和大部分历史研究。

**Q: 为什么某些闰月很少见？**

19 年 7 闰的分布不均匀。有时闰月在春季（闰二、闰三月），有时在夏秋冬季。闰九月、闰十月相对罕见，可能隔几十年才出现一次。

---

## 世界时区与时间会议：跨国协作时间换算

> 世界时区的标准化是近代国际协作的基石。从 UTC/GMT 的历史区别到夏令时的全球分布，从 IANA 时区数据库到 JavaScript 时间处理的坑，本文讲清楚跨国团队如何优雅地同步时间。

URL: https://xtechtools.com/guides/world-clock/
发布：2026-04-29 · 更新：2026-04-29

一个硅谷工程师、一个伦敦产品经理、一个新加坡设计师，三个人开会的时间协商是全球化团队的日常困扰。问题看似简单——「明天下午 3 点开会」——但涉及的时区、夏令时、历史变更却充满陷阱。本指南从 UTC 和 GMT 的本质区别讲起，覆盖全球 38+ 个主要时区、动态夏令时规则、JavaScript 时间库的最佳实践，以及如何用本站世界时钟工具快速定位跨时区会议时间。

### UTC vs GMT：历史与精确度的分歧

**GMT（格林威治平均时）**是基于地球自转的太阳时标准，由英国皇家格林威治天文台在 19 世纪末建立。它观测太阳在本地子午线的视圆周运动，定义「正午」的时刻。GMT 在民用时间中用了 100+ 年。

**UTC（协调世界时）**是现代原子钟基础的时间标准，由国际电信联盟在 1960 年代定义。UTC 基于原子秒（定义为铯-133 原子特定跃迁的周期），精确度达纳秒级。为了让 UTC 不与地球自转的太阳时相差超过 0.9 秒，国际地球自转服务每隔几年会在 UTC 中插入或删除一个「闰秒」。

**实用差异**：

- **民用场景**（日常说话、简单应用）：GMT 和 UTC 基本等价，差别小于 1 秒，可互换使用。
- **科学与卫星应用**（GPS、天文、精密测量）：必须用 UTC，因为闰秒的累积会导致导航错误。
- **编程时**：永远用 UTC（或「Z」时区标记），再在客户端转换为本地时区显示。

总结：GMT 是太阳时标准，UTC 是原子时标准；通俗说话可混用，严格编程要用 UTC。

### IANA 时区数据库与不同国家的规则差异

世界各地的时区和夏令时规则管理权属于各国政府，导致「标准」并不统一。**IANA（互联网号码分配权威）维护的时区数据库**是全球公认的权威参考。

每个时区在 IANA 数据库中用 `大陆/城市` 格式表示，如 `Asia/Shanghai`、`Europe/London`、`America/New_York`。每个时区条目记录：

- 相对 UTC 的基准偏移（如 UTC+8）
- 历史上的所有偏移变更
- 夏令时的生效和结束日期（精确到年月日时分秒）
- 特殊名称（如 CST 可能是中国标准时或中央标准时，歧义很大）

例子说明问题的复杂性：

- **中国**：全国统一使用 UTC+8（北京时间），无夏令时。简单。
- **美国**：有 4 个不同的时区（东部、中部、山地、太平洋），各自在 3 月第二个周日和 11 月第一个周日切换夏令时，但印第安纳州等有例外。极复杂。
- **欧盟**：统一在最后一个周日 3 月切换到夏令时（UTC+1 变 UTC+2），10 月切换回标准时间。

这就是为什么 JavaScript 库（如 `moment-timezone`、`dayjs`）和操作系统都必须嵌入 IANA 数据库，并定期更新以应对政府的规则变更。

### 夏令时（DST）的全球分布与陷阱

夏令时（Daylight Saving Time, DST）是为了「充分利用日光」而将时钟拨快 1 小时的做法，通常在春季执行，秋季回拨。但并非所有国家都使用。

**采用夏令时的地区**：
- 北美：大部分美国和加拿大（除亚利桑那州、夏威夷）
- 欧盟：所有成员国（但每年讨论是否取消）
- 一些中东和南方国家：规则各异

**不采用夏令时的地区**：
- 中国、日本、韩国
- 大部分非洲、亚洲国家
- 新西兰和澳大利亚的部分州

**跨国协作中的陷阱**：

- **时间偏移突变**：美国 3 月切换时，与中国的时差从 12 小时变 13 小时。会议时间必须重新算。
- **重复时刻**：秋季切换回标准时间时，会有一小时「重复」两次（例如 1:30 AM 出现两次）。数据库插入、日志时间戳容易出错。
- **缺失时刻**：春季切换为夏令时时，会跳过某小时（如从 1:59:59 AM 直接跳到 3:00:00 AM）。

**编程最佳实践**：

1. 所有时间戳都用 UTC 存储。
2. 显示给用户时再转换为其本地时区。
3. 用成熟的时间库（Intl.DateTimeFormat、moment-timezone、dayjs）处理转换，不要手工计算。
4. 跨时区的定时任务用 UTC 触发时间。

### JavaScript 与时间库的选择

浏览器内置的 `Date` 对象有严重的时区支持缺陷——它知道当前本地时区，但无法处理任意时区的格式化与转换。这是为什么时间库必需。

**Intl.DateTimeFormat（原生 API）**
```
const date = new Date();
const formatter = new Intl.DateTimeFormat('zh-CN', {
  timeZone: 'Asia/Shanghai',
  year: 'numeric',
  month: '2-digit',
  day: '2-digit',
  hour: '2-digit',
  minute: '2-digit'
});
console.log(formatter.format(date));
```
现代浏览器都支持，无需额外库，但 API 繁琐。

**moment-timezone**（传统但体积大）
```
moment.tz("2026-04-29 15:30", "YYYY-MM-DD HH:mm", "Asia/Shanghai").tz("America/New_York").format();
```
功能全面，但打包后 > 60KB，不适合轻量级项目。

**dayjs + plugin（现代轻量）**
```
dayjs("2026-04-29 15:30").tz.setDefault("Asia/Shanghai").tz("America/New_York").format();
```
核心仅 2KB，插件按需加载，推荐新项目。

**选择建议**：

- **简单查询**：用 Intl.DateTimeFormat
- **复杂计算**：用 dayjs + timezone 插件
- **遗留项目迁移**：先用 moment-timezone，逐步迁移到 dayjs

### 跨时区会议的最佳约定与工具链

如何在分布式团队中优雅地安排会议？实践出的金律是：

**金律 1：总是用 UTC 时间发送会议邀请**
例：「会议时间：2026-04-29T14:00:00Z」（末尾的 Z 表示 UTC）。每个人的日历客户端（Outlook、Google Calendar、Apple Calendar）都会自动转换为当地时间显示。

**金律 2：在会议通知中同时列出主要参与者的本地时间**
例：
```
2026-04-29 14:00 UTC
= 2026-04-29 22:00 中国（UTC+8）
= 2026-04-29 10:00 纽约（UTC-4，夏令时）
= 2026-04-29 15:00 伦敦（UTC+1，夏令时）
```
这样每个人一眼看到自己的时间，不用心算。

**金律 3：夏令时切换前提醒重新确认**
DST 切换后时差变化，用日历客户端自动管理这一点：用 UTC 创建的日历项目会自动调整，但心理上人们容易弄错。提前一周重申。

**工具链推荐**：

- **日历**：Google Calendar 或 Outlook，都内置时区自动转换。
- **站会通知**：用本站的世界时钟工具快速生成参与者们的本地时间表，复制粘贴到 Slack。
- **会议软件**：Zoom、Teams、Slack Huddle 都会显示参与者的本地时间，无需额外配置。

### TimezoneFromIP 的弱点与准确度

许多 Web 应用想要自动检测用户的时区，避免让用户手动选择。一个常见的方法是**根据 IP 地址推断时区**。

**原理**：通过 GeoIP 数据库（MaxMind、IP2Location 等）把 IP 地址映射到地理位置，再根据地理位置查表得到时区。例如 IP 来自纽约，推断时区是 America/New_York。

**准确度问题**：

- **VPN 和代理**：用户可能用 VPN 连接，IP 来自美国但人在中国，推断完全错误。
- **企业网络**：大公司的所有员工可能共享一个 IP，地理位置映射到公司所在地，而员工身在全球各地。
- **移动用户**：移动设备会改变 IP（切换 WiFi 或 4G），时区推断可能频繁闪烁。
- **GeoIP 数据过时**：地理位置数据库更新延迟，某些 IP 的映射可能相差数百里。

**实践建议**：

1. **首次访问**：可用 IP 推断作为默认值，但**不强制**。
2. **让用户选择**：提供时区选择器（下拉菜单），让用户手动确认或修改。
3. **记住选择**：用 localStorage 或账户设置保存用户的时区偏好，后续访问使用保存值。
4. **检测系统时区**：优先使用 JavaScript 的 `Intl.DateTimeFormat().resolvedOptions().timeZone` 获取操作系统的时区，这比 IP 推断准确得多。

总结：自动检测很便利，但为了避免出错，最好还是让用户确认一次。

### 常见问题

**Q: UTC 和 GMT 对我日常用处有区别吗？**

日常用处没有。UTC 和 GMT 的差异在纳秒级，肉眼不可见。只有科学测量（卫星、GPS）和精密工程才需要考虑 UTC 的原子秒精度。

**Q: 为什么世界不统一用一个时区？**

为了让「正午」接近地球自转的太阳最高点，从而保持作息与日光的对应。完全统一会导致中国的正午变成晚上 8 点，人类作息会混乱。

**Q: 夏令时真的能节省能源吗？**

实际研究表明，夏令时的能源节省微乎其微（甚至有地区测出负数）。它存在更多是历史惯性和政治因素，而非科学结果。

**Q: 跨时区开会，我该早起还是让对方晚睡？**

这涉及人性与公司文化。建议轮流让步：某些会议在亚洲人的晚上，某些在欧美人的晚上。绝对不能总是让某个时区的人超时工作。

**Q: 手机日历自动转换时区准吗？**

当代智能手机日历（iOS、Android）的时区转换基于 IANA 数据库，非常准确。但前提是你的系统设置开启了自动时区更新。关闭自动更新是最常见的错误。

**Q: 我如何确定某个 DST 切换日期？**

不同国家规则不同，不要试图手工记忆。用本站世界时钟工具查询，或咨询当地的官方时间部门（如美国的 NIST）。

---

## 工作日计算与节假日扣除：HR 与项目排期实用算法

> 从薪资折算、年假计数、到甘特图排期，工作日的准确计算是 HR 和项目经理的核心能力。本文讲清楚工作日定义、常见算法、中国法定假日的特殊规则，以及如何用本站工作日计算器处理跨国项目。

URL: https://xtechtools.com/guides/workdays/
发布：2026-04-29 · 更新：2026-04-29

「这个项目要多久完成？」「从今天算起 20 个工作日内。」工作日计算看似简单，却暗藏陷阱。周六、周日显然不算，但法定节假日（春节、十一黄金周）呢？政府补班日期呢？时区跨越呢？一个 HR 计算错了可能让员工少领奖金，一个项目经理算错了可能让甲方赔违约金。本指南从工作日的定义讲起，覆盖中国法定假日规则、年假折算、考勤计算、项目排期的自动避坑，以及如何用本站工作日计算工具快速搞定这些问题。

### 工作日的定义与全球差异

**工作日**（Working Day）最基础的定义是：**周一至周五，且不是法定假日或特殊放假日**。

但这个看似简单的定义在全球实践中差异很大：

- **中国**：周一至周五为工作日，法定假日放假，但政府常下令「补班」（周末工作弥补假期）。补班日虽然工作但在计数上通常不算「工作日」，而是作为「工作时间」计入报酬。
- **美国**：周一至周五为工作日，法定假日（如感恩节）不工作，没有补班制度。
- **中东与印度**：很多国家周五周六为周末，周一至周四加周日为工作日。

**中国特色：补班与调休**
中国国务院每年发布《假期安排通知》，规定各大节日（春节、清明、端午、中秋、十一黄金周）的放假日期和补班日期。例如 2026 年春节从农历初一放到初六（公历 1 月 29 日至 2 月 3 日），但这段时间会插入周末，所以前后的周六周日需要补班以「抵消」失去的工作日。

结果是：同一个周末日期，有时是工作日（补班），有时不是（正常周末）——这就是为什么需要权威的假期数据库，不能简单地「周六周日都不算」。

### 中国法定假日的完整清单与补班规则

中国每年的法定假日固定为 11 天，分别对应 7 个假期：

| 假期 | 天数 | 举例 2026 年日期 | 补班 |
| --- | --- | --- | --- |
| 元旦 | 1 天 | 1 月 1 日 | 无 |
| 春节 | 7 天 | 1 月 29 日 - 2 月 4 日 | 1 月 24、25 日补班 |
| 清明节 | 1 天 | 4 月 5 日 | 可能需要调整周末 |
| 端午节 | 1 天 | 6 月 10 日 | 可能需要调整周末 |
| 中秋节 | 1 天 | 9 月 17 日 | 可能需要调整周末 |
| 国庆节 | 7 天 | 10 月 1 - 7 日 | 10 月 10、11 日补班 |
| 劳动节 | 1 天 | 5 月 1 日 | 通常与周末调整 |

**补班的逻辑**：
为了让上班族在春节和十一能充分休息，政府会把假期「拉长」到 7-8 天。但总工作日和总假期加起来要等于 365，所以必须在其他周末补班来平衡。例如春节放 7 天，需要挪用前后两个周末（2 天），再加补班 2 天，最终假期延长。

**计算工作日时的注意**：

1. 如果日期范围跨越 1 月 24 日，那一天虽然是周六，但实际要工作（算工作日）。
2. 不要混淆「假期日」和「非工作日」——假期日是法定放假，补班日虽然也要上班，但性质不同（可能涉及加班报酬）。
3. 对于年假和考勤，通常「补班日」被当作普通工作日处理，但加班报酬可能不同。

### HR 场景：年假计算与月度考勤

**年假计算**是 HR 部门最频繁的工作日应用。中国《劳动法》规定：

- 工作 1-10 年：5 天年假
- 工作 10-20 年：10 天年假
- 工作 20+ 年：15 天年假

但「天数」的计算涉及工作日定义。如果员工请年假 5 天，按照：

- **广义理解**：5 个自然日（可能包括周末或假期）。
- **法律理解**：5 个工作日。

大多数公司采用工作日计算，即请 5 天年假相当于请 5 个法定工作日（周六周日不算，春节等假期另行处理）。

**月度考勤计算**：
某员工 2026 年 2 月份要统计出勤率。2 月共 28 天，其中：

- 春节假期：2 月 4 日（初六）
- 补班日：无（1 月已补）
- 周末：8 天
- 可工作日数：28 - 1 - 8 = 19 天

如果该员工请了 2 天年假和 1 天病假，实际出勤日数 = 19 - 2 - 1 = 16 天，出勤率 = 16 / 19 = 84%。

**坑点警示**：

1. 如果公司按自然日计算年假，3 月 3 日至 3 月 8 日共 6 自然日的假期，实际只覆盖 4 个工作日（3 月 7、8 是周末）——员工会吃亏。
2. 补班日的加班报酬往往有特殊规定（如 1.5 倍或 2 倍工资），不能混淆为普通加班。
3. 跨月份的长假（如春节从 1 月 29 日到 2 月 4 日）需要分别计入两个月的考勤。

### 项目管理：甘特图排期与自动避坑

项目经理制定甘特图时，工作日计算决定了工期预估的准确性。

**经典场景**：
工程师被分配一个 10 工作日的任务，今天是 2026 年 4 月 25 日（周五）。什么时候能完成？

**错误计算**：
简单加 10 天 = 5 月 5 日。但这没有排除周末和假期。

**正确计算**：
```
2026 年 4 月 25 日至 5 月：
- 4 月 25 日（周五）：第 1 个工作日
- 4 月 27、28 日（周一、二）：第 2、3 个工作日
- 4 月 29、30 日（周三、四）：第 4、5 个工作日（注意 4 月 29 日是劳动节）

等等，4 月 29 日是法定假日，需要查表。
```

完成日期需要用工具自动计算以避免错误。

**自动工具的价值**：
本站工作日计算工具可以：

1. **快速查询**：输入起始日期和工作日数，自动计算结束日期。
2. **包含完整假期数据**：内置国务院公布的年度假期安排，包含补班。
3. **排除周末**：自动识别周六周日。
4. **生成甘特图友好的格式**：导出工作日清单，复制到 Excel、Jira、Monday.com 等工具。

大型项目如有 50+ 人的资源池和 100+ 个任务，手工计算工作日完全不现实。用工具自动化可以减少 90% 的排期错误。

### 跨国项目的双假日与时区考虑

当项目跨越中美两个市场时，工作日计算变成两倍复杂。

**中美工作日的交集问题**：
假设一个项目由中国团队和美国团队合作，任务的「工作日」应该怎么定义？

- **选项 1**：分别计算。中国团队按中国假期，美国团队按美国假期。交接点需要额外协调。
- **选项 2**：用「两国都工作的日期」。这意味着只有周一至周五且两国都没有假期的日子才算工作日，工期会大幅延长。
- **选项 3**：按交付方的时间。如果交付给中国客户，用中国工作日；反之亦然。

**实践建议**：

1. 在项目计划书中明确定义「工作日」（哪个国家的标准）。
2. 给予 Buffer：跨国项目的工期估算增加 20-30% 的浮动时间。
3. 使用项目管理工具（Asana、Monday.com）的时区和假期自动映射。
4. 定期同步：当一国有假期时，提前告知对方团队，调整周期性的交接时间。

**特殊情况**：
中美夏令时切换时间不同（美国 3 月第二周、中国不用）。虽然中国没有 DST，但如果有远程会议时间协议，3 月会议时间需要重新确认。

### 工作日计算工具的使用与对接 API

本站工作日计算工具提供三种查询模式：

1. **Web 界面**：
   - 输入：起始日期 + 工作日数（或结束日期）
   - 输出：计算结果、包含的假期列表、逐日明细表
   - 支持 2 种方向：「从今天起算 20 工作日」或「2026 年 4 月 25 日到 5 月 15 日共几工作日」

2. **CSV 导出**：
   - 导出日期范围内的所有工作日清单。
   - 每行含：日期、是否工作日、假期名称、补班标记。
   - 可直接粘贴到 Excel 或 Google Sheets。

3. **HTTP API**（适合开发者）：
```
GET /api/workdays?start=2026-04-25&end=2026-05-15&country=CN

Response:
{
  "workdayCount": 14,
  "calendar": [
    { "date": "2026-04-25", "isWorkday": true, "holiday": null }
  ]
}
```

**集成场景**：

- **HR 系统**：调用 API 自动计算考勤和年假配额。
- **项目管理工具插件**：Jira、Asana 的自定义脚本可集成本 API，自动算工期。
- **财务系统**：计算月薪时按工作日数调整。

所有计算在浏览器或服务器本地完成，无需上传员工信息，符合隐私规范。

### 常见问题

**Q: 请假 1 天是指 1 个自然日还是 1 个工作日？**

通常指 1 个工作日。如果员工请假 2026 年 4 月 25 日（周五）和 4 月 26 日（周六），周六不算工作日，实际只扣 1 天年假。具体应以公司员工手册为准。

**Q: 春节补班日是否要支付加班报酬？**

根据《劳动法》，在法定假日和调休（补班）日工作需支付 2 倍或 3 倍报酬。但补班日通常不同于春节当日，具体报酬倍数请咨询 HR 或法务。

**Q: 我怎么知道今年的补班安排？**

每年年底，国务院办公厅会发布《假期安排通知》，详细列出各节假日和补班日期。本工具已内置最新数据，查询时自动应用。

**Q: 如果项目跨两个国家的假期，工期如何估算？**

建议按最严格的标准计算（两个国家都放假的日期不算工作日），或增加 20% 的浮动时间。在项目合同中明确定义「工作日」的含义。

**Q: 工作日计算工具支持未来多远的日期？**

本工具支持已公布假期数据的年份（通常为当年及后续 1-2 年）。超出范围时按标准周一至周五计算，不含假期。对于更远的日期，建议等官方假期公布。

**Q: Excel 的 WORKDAY 函数和本工具有什么区别？**

Excel 的 WORKDAY 函数功能相同，但配置假期清单需要手工维护。本工具自动更新中国的法定假期和补班规则，减少出错。对于简单计算，两者都可；大规模应用建议用在线工具。

---

## 凯撒密码 ROT13 ROT47 完整解读：从历史到现代用法

> 深入讲解凯撒密码的发展历程，从古罗马字母位移到现代 ROT13 和 ROT47 的应用，解析为何这些是弱加密以及现代实际用途。

URL: https://xtechtools.com/guides/caesar/
发布：2026-04-29 · 更新：2026-04-29

凯撒密码是人类历史上最古老的加密方法之一，距今已有 2000 多年。尽管现代密码学已远超其安全性，但 ROT13 和 ROT47 变体仍在互联网文化中扮演重要角色。本文从古罗马的军事应用出发，逐层剖析这些密码的原理、破解方法及当代用途。这是一部密码学的微观视角，展示了技术如何从历史中演进到现代应用，帮助我们理解安全性的真正含义。

### 古罗马的军事秘密：凯撒密码的诞生

凯撒密码（Caesar Cipher）得名于古罗马统帅尤利乌斯·凯撒。根据罗马历史学家苏维托尼乌斯的记载，凯撒在军事通信中使用字母位移 3 的加密法：A→D，B→E，C→F，依此类推。这个方法看似简单，却在 1 世纪的军事环境中提供了基本的隐私保护。敌方截获信件后，若不知道位移规则，会看到一串无意义的字母。然而，凯撒密码的本质是单表替换（monoalphabetic substitution），即每个明文字母始终映射到同一个密文字母，这为现代密码分析留下了致命缺陷。历史学家推测位移 3 可能是凯撒军队的"默认标准"。实际上，任何 1-25 的位移都是可行的，位移本身可以看作密钥。

### ROT13 与 ROT47：互联网时代的密码变体

1970 年代，Usenet（互联网新闻组）的用户面临一个问题：如何在讨论电影、书籍或游戏时隐藏剧透，又不用发送私密信息？ROT13（rotate by 13）应运而生。ROT13 是凯撒密码的特殊实例，位移恰好为 13。这个选择很巧妙：英文字母表有 26 个，位移 13 意味着加密和解密是同一操作（ROT13(ROT13(x)) = x）。用户可以轻松逆转，而不必记住密钥。1991 年，程序员扩展了这一概念，创造了 ROT47。ROT47 在可见 ASCII 字符集范围（ASCII 33-126，共 94 个字符）内循环移位。相比 ROT13 只针对文本，ROT47 在处理代码片段、URL 和混合字符内容时更灵活，但加密强度仍然毫无改进。现代应用场景包括论坛剧透屏蔽、邮件评论防护、CTF 竞赛热身题。

### 频率分析：密码破解的钥匙

为什么凯撒密码被公认为"弱加密"？答案在于 **频率分析（Frequency Analysis）**。自然语言中，不同字母的出现频率是固定的。英文中 E 最频繁（约 11%），其次是 T、A、O 等。密文中出现次数最多的字母，很可能就是 E 的加密结果。通过统计密文中各字符频率，与已知的语言字母频率对比，即使不知道位移值，也能在几秒至几分钟内试遍所有 26 种可能性。破解步骤包括：收集足够长的密文（至少 100 字以上）、统计每个字符出现次数、将频率图与标准英文频率曲线对比、尝试对齐最可能的 E-对应字符、验证解密后的文本是否有意义。这正是为什么凯撒密码在 15 世纪就被更复杂的方法所取代，多表替换（维吉尼亚密码）由此诞生。

### 现代用途与安全价值的悖论

ROT13 和 ROT47 在密码学角度毫无安全性，为什么还存在于现代网络文化和工具中？原因概览包括教学工具（密码学初学者的最佳入门案例）、剧透屏蔽（社区约定俗成的标记）、代码混淆（防止肉眼快速识别）、CTF 竞赛（低难度暖场题）、互联网文化遗产（Usenet 时代的遗产）。现代密码学（AES-256、RSA）基于数学难题，即使用计算机暴力破解也需要天文数字的时间。而凯撒密码家族的存活，证明了密码学工具的多样化——不是所有加密都为了绝对安全，有时仅仅是**降低偶然发现的概率**。在教育和文化保护中，这些简单的密码仍有价值。

### 维吉尼亚密码与多表替换的进化

16 世纪，密码学家维吉尼亚（Blaise de Vigenère）提出了一个关键改进：使用多个替换表而非单一表。维吉尼亚密码使用一个**密钥短语**，比如"SECRET"。对明文逐字加密时，循环使用这个短语中各字母对应的凯撒位移。这个方法在 300 年间被认为是"不可破解的"，直到 19 世纪密码分析家卡西斯基（Kasiski）和巴贝奇（Babbage）各自独立开发了破解技术。维吉尼亚密码展示了单表替换的局限，是走向现代分组加密（如 DES、AES）的关键一步。它证明了密码学的进化方向：从简单替换到复杂变换。维吉尼亚密码的破解标志着对称密码学向更高复杂度的迈进。

### 从凯撒到 AES：2000 年密码学的进化

如果把 2000 年的密码学发展看作一条线，凯撒密码是起点，现代密码则是终点。时间线速览包括古罗马（~1 世纪）凯撒密码、中世纪（9-16 世纪）多表替换、20 世纪初机械密码机（恩尼格玛）、1970s DES 标准确立、2001 年至今 AES-256 成为全球标准。AES 的安全性基于 Rijndael 算法的数学复杂性和大密钥空间（256 比特密钥提供 2^256 种可能），即使未来的量子计算机也需要全新的破解方法。而凯撒密码，仅需纸笔和耐心就能在几分钟内破解。这种对比清晰地说明了密码学的演进方向：从易用性和历史意义，逐步升级到实际安全性。现代密码学已成为保护国家安全、金融系统和个人隐私的基础。

### 常见问题

**Q: 凯撒密码为什么使用位移 3？**

历史上没有明确记载，推测与凯撒名字中的字母位置有关，或仅是军队的"约定"。实际上任何 1-25 的位移都可以，位移值本身就是密钥。

**Q: 破解凯撒密码一定要知道位移数字吗？**

不一定。如果密文足够长（100+ 字符），可以通过频率分析猜测出最可能的位移。计算机可在秒级内尝试所有 26 种可能。

**Q: ROT13 和 ROT47 在现代还有安全价值吗？**

从加密学角度零安全价值。但在社区文化中仍用于"友好"地屏蔽内容，比如论坛剧透、邮件列表敏感词。它的价值在于**便利性和约定俗成**，而非安全性。

**Q: 为什么维吉尼亚密码被称为"不可破解的密码"？**

在 19 世纪之前，人们还未掌握有效的破解方法。维吉尼亚密码使用重复的密钥短语，这个特性最终被卡西斯基距离法和巴贝奇的分析所利用，才被破解。

**Q: 学习凯撒密码对现代密码学有帮助吗？**

绝对有。它是密码学基础概念的最佳入门，帮助理解替换、密钥、频率分析等核心概念。后续学习 AES、RSA 时，你会发现它们都源自这些基本原理的深化。

---

## 摩斯电码完全指南：历史 / 国际标准 / 实战学习

> 详解摩斯电码从 1838 年诞生至今的演变，涵盖国际标准与美式差异、设计原则、多种表达方式、HAM 业余无线电应用及学习建议。

URL: https://xtechtools.com/guides/morse/
发布：2026-04-29 · 更新：2026-04-29

摩斯电码是人类第一个远距离数字通信标准，诞生于 1838 年。两个世纪后，尽管已被互联网时代的数据编码取代，但摩斯电码在业余无线电爱好者中仍生机勃勃。本文从历史渊源讲起，分析电码的设计智慧，再到现代学习路径和实战应用。通过了解摩斯电码，我们可以窥见人类通信技术和信息论的演进历史及其深层原理和实际应用。

### 1838：莫尔斯与维尔的发明与首次传输

摩斯电码的故事始于美国发明家塞缪尔·莫尔斯（Samuel Morse）和助手阿尔弗雷德·维尔（Alfred Vail）。1838 年，他们成功测试了第一条商业电报线路。莫尔斯设计了一种用**短脉冲（点，·）和长脉冲（划，−）**表示字母和数字的方案。维尔对此进行了优化，确保了码表的实用性。1844 年，莫尔斯从华盛顿向巴尔的摩发送了第一条电报，内容是"What hath God wrought"（上帝做了什么奇迹）。这条消息标志着远距离数字通信时代的开始，比无线电发明早了 50 年。摩斯电码的出现解决了一个根本问题：如何将任意语言转换成可以通过电线传输的脉冲序列。

### 国际标准 vs 美式摩尔斯：标准差异与演变

随着摩斯电码的全球推广，不同国家和地区逐渐形成了略微不同的约定。**国际摩尔斯电码（ITU-R Recommendation）** 是现代标准，由国际电信联盟统一。而 **美式摩尔斯电码** 或 **铁路摩尔斯** 是早期美国电报系统中使用的版本。主要差异包括字符编码差异（尤其是标点符号）、间距规则细微变化、国际标准扩展了符号集合（@、/、括号等）。对于现代学习者，**国际标准**是官方推荐，因为它在 HAM 无线电竞赛和国家考试中被使用。美式摩尔斯主要出现在历史文献和某些老旧设备中。两者的兼容性很高，学会一种后转换另一种成本极低。

### SOS 的真相：传说与历史事实

最广为流传的摩斯电码传说是关于 SOS 的。许多人以为它代表"Save Our Souls"或"Save Our Ship"，但这是**事后的词源编造**。SOS 在摩尔斯电码中是 `· · · − − − · · ·`（三短三长三短），这个序列之所以被选中作为国际求救信号，理由极其简单——**它在电报中很容易识别和发送**。SOS 特别容易在嘈杂的无线电频道中辨认，且无需停顿就能快速重复。1905 年左右，德国汉堡的一个无线电操作员正式确立了 SOS 为船舶求救信号。它最著名的应用是 1912 年泰坦尼克号沉没事件。这个细节反映了摩斯电码设计的实用性哲学。

### 设计原则：高频字母为何有短码

摩尔斯电码的一个巧妙之处在于：常见字母的编码较短，罕见字母的编码较长。**字母频率与码长对应：** E（最常见，~13%）→ · 、T（次常见，~9%）→ − 、A（8%）→ · − 、Z（罕见，~0.07%）→ − − · ·。在电报时代，**发送速度和带宽**至关重要。一条信息中每个字母的码长贡献累加起来，所以缩短高频字母的码长能显著减少总传输时间。这与现代信息论（香农信息理论）中的最优编码原理一致。E 的单点设计是天才之举——操作员可以快速连续发送。摩尔斯电码在机械限制和实用性之间达到了高度平衡。

### 多种表达与媒体无关性的力量

摩斯电码最初是通过电报机的声音表达的：电磁铁驱动的笔敲击纸带，发出嘀和嗒的声音。但它的编码原理与媒体无关，可以用任何具有"两态"特性的方式传达。**现代表达方式包括：** 声音（Audio）——原始方式，至今仍是 HAM 无线电标准，频率建议 600-700 Hz；灯光（Visual）——手电筒闪光、灯塔旋转、战舰信号灯；振动（Haptic）——现代应用，智能手表的振动序列可以表示摩尔斯码；无线电波（RF）——CW（Continuous Wave）模式。这种**媒体无关性**是摩尔斯电码持久生命力的关键。

### HAM 业余无线电：摩尔斯的第二生命

电话和互联网的普及几乎终结了摩尔斯电码的商业应用，但一个意外的地方让它重生：**业余无线电（Amateur Radio / HAM）**。自 20 世纪初起，无线电爱好者形成了全球社群。直到今天，许多国家的业余无线电执照考试仍然要求掌握摩尔斯电码。**原因包括：** 频谱效率（CW 占用带宽极小，约 100 Hz）、信噪比优越（两态信号比语音更容易在噪声中识别）、传播距离远（相同功率下更远）、文化传统（社群珍视这项百年技艺）。国际竞赛如"CQ World Wide"每年吸引数千名操作员参加。摩尔斯电码在这里找到了第二生命。

### 学习摩尔斯电码：从入门到精通

摩尔斯电码的学习通常用 **WPM（Words Per Minute，每分钟字数）**衡量速度。**学习阶段划分：** 0-5 WPM（初级）、5-10 WPM（字母自动化）、10-15 WPM（中级）、15-25 WPM（高级）、25+ WPM（专家级）。**学习建议：** 从听力开始、不要学"符号对应"、循序渐进、每天 15-30 分钟、使用在线工具（LCWO、Just Learn Morse Code）。**频率建议：** 摩尔斯电码音一般在 600-700 Hz，避免过高（刺耳）或过低（难以区分）。许多操作员偏好 700 Hz 作为"标准"频率。一旦掌握，这项技能将终身受用。

### 常见问题

**Q: 摩尔斯电码真的是 SOS 意思为"救我们"吗？**

不是。SOS 本身没有特殊含义，它被选中仅因为码型在无线电中容易识别和重复。"Save Our Souls" 之类的含义是后来的民间编造。

**Q: 一般人学摩尔斯电码需要多长时间？**

取决于目标。基础认识（能听懂简单消息）需要 4-8 周，每天 20 分钟。达到竞赛水平（15+ WPM）通常需要 6-12 个月的持续练习。

**Q: 为什么 E 是单点，T 是单划？**

英文中 E 的频率最高（约 13%），T 次之（约 9%）。摩尔斯电码优先给高频字母分配短码，以最小化总传输时间。这与现代信息论的最优编码原理一致。

**Q: 现在还有人用摩尔斯电码吗？**

是的，主要是业余无线电爱好者。全球 HAM 社群每年举办国际 CW 竞赛，许多国家的执照考试仍包含摩尔斯要求。紧急救援中，CW 也因其鲁棒性而被保留。

**Q: 推荐的摩尔斯电码音频频率是多少？**

标准建议是 600-700 Hz。过高的频率（如 800+ Hz）容易听觉疲劳，过低的频率则难以区分点划。700 Hz 是许多竞赛和练习软件的默认值。

**Q: 摩尔斯电码与现代数字通信有什么关系？**

摩尔斯电码是二进制通信的先驱——它证明了任何信息都能用两个符号（点和划）编码和传输。这个原理直接启发了现代的二进制编码、CRC 校验和纠错码等理论。

---

## 番茄工作法实战指南：从 25/5 节拍到团队协作

> 深度解析番茄工作法的科学基础，从经典 25/5 节拍、长休配置、打断处理、会议应用，到高级变体和时间盒的区别。

URL: https://xtechtools.com/guides/pomodoro/
发布：2026-04-29 · 更新：2026-04-29

番茄工作法由意大利程序员 Francesco Cirillo 在 1980 年代创立，因其简洁而科学的设计迅速风靡全球。25 分钟的工作块配合 5 分钟的短休，看似简单，却蕴含了对人类注意力周期的深刻理解。本指南从原理出发，涵盖实战应用、常见误区、高级变体及团队协作。掌握这套方法，将显著提升你的生产力和工作生活质量。

### 番茄工作法的诞生：一个 1980s 的生产力实验

1980 年代中期，时任大学学生的 Francesco Cirillo 在应对学业和工作时感到效率低下。他进行了一个简单的实验：将时间分成固定的工作块，每块持续一段时间，中间穿插短休息。Cirillo 最初使用的计时工具是一个番茄形的厨房定时器（那个年代没有智能手机），灵感来自这个视觉符号，他将这套方法命名为"番茄工作法"（Pomodoro Technique）。经过多轮实验和优化，Cirillo 最终确立了 **25 分钟工作 + 5 分钟休息**的黄金比例。1987 年，他将完整方法记录在名为《The Pomodoro Technique》的白皮书中，随后出版了专著。

### 25/5 黄金比例的认知科学基础

为什么是 25 分钟，而不是 20 或 30 分钟？答案涉及几个认知科学维度。**人类注意力周期（Ultradian Rhythms）：** 心理学研究显示，人的高度集中注意力约维持 90-120 分钟（这被称为一个"终极节律周期"）。但在此周期内，注意力呈现 20-25 分钟的小波动。**25 分钟的优势包括：** 足够深入（进入心流状态）、足够短暂（避免疲劳）、心理韧性强（启动阻力小）。**5 分钟短休：** 足以让大脑从高强度任务中恢复。医学研究表明，5 分钟的真正休息能显著恢复认知功能。个人的最优时长可能在 20-30 分钟范围内波动。

### 完整周期：4 个番茄与长休的恢复机制

番茄工作法不只是 25/5 的循环，**4 个番茄为一个大周期**。标准结构为：番茄 1-4（各 25 分钟）穿插 5 分钟短休，第 4 个番茄后是 15-30 分钟长休。**长休的目的包括：** 深度恢复（让大脑完全卸载任务状态）、防止疲劳堆积（四个 25 分钟的工作导致认知疲劳，长休是必需的缓冲）、巩固记忆（神经科学表明，休息期间大脑会整合和巩固新学到的信息，称为"离线学习"）。**长休内容建议：** 散步或轻运动、正念冥想或深呼吸、喝水吃零食、短途外出。长休的质量直接影响下一轮番茄的效率。

### 打断处理："吃番茄"原则与环境优化

番茄工作法面临的最大挑战是**被打断**。一个电话、一个紧急邮件、一个同事的提问——这些都可能破坏 25 分钟的连续性。Cirillo 的解决方案是 **"吃番茄"原则**（Eat the Pomodoro）。**规则如下：** 如果中断来自外部（电话、访客），立即暂停当前番茄，处理完毕后**丢弃这个番茄**，不计入完成数。如果中断来自内部（突然想到其他事），快速记笔记（2 行以内），立即回到任务，继续当前番茄。**频繁中断的信号：** 如果一天内"吃掉"超过 2 个番茄，说明你的工作环境或任务分解有问题。这个原则的妙处在于：它不要求"零中断"，而是**量化和记录中断**。

### 会议番茄与团队协作的新思路

番茄工作法通常被理解为个人工具，但它也可以扩展到会议和团队场景。**会议番茄的形式包括：** 固定时长会议（用番茄原则限制长度，15 分钟日站会 = 0.6 番茄，1 小时策划会 = 2.4 番茄）、番茄式讨论（每个话题限制一个番茄，促使发言人精炼表达）、番茄冲刺（某些敏捷团队采用番茄作为最小工作单位）。**团队采用的关键因素包括：** 透明化（番茄时段都设为"不可打断"）、文化建设（强调深度专注的价值）、测量进度（用完成的番茄数衡量团队输出）。远程团队尤其受益。

### 高级变体：90/15 与个体优化策略

虽然 25/5 是标准配置，但不同的工作类型和个体可能需要变体。**90 分钟工作块（Ultradian Rhythm 原生）：** 极限生物学家 Nathaniel Kleitman 发现人类的终极节律周期约为 90 分钟。某些高度专注的任务（如编程长会话、论文写作）可采用 90/15 变体。优势包括充分的流动时间、适合高度连贯的任务。劣势包括对注意力缺陷人群太长、被打断的成本很高。**其他变体包括：** 50/10（较重的工作）、20/5（零碎任务）、30/5（中间方案）。从标准 25/5 开始，至少实践 2 周，然后根据疲劳程度调整。

### 时间盒 vs 番茄工作法：两种时间管理的核心差异

番茄工作法常被与"时间盒"混淆，虽然两者都涉及时间限制，但有本质区别。**时间盒（Time-boxing）：** 为任务分配一个固定时间上限，无强制的休息间隔，强调"在约束条件下完成任务"。**番茄工作法：** 强制的工作/休息周期，重点是**管理注意力和防止疲劳**，强制休息是核心特性。**应用场景对比：** 紧急修复 Bug（时间盒更适合）；长期学习（番茄更适合）；会议管理（时间盒更适合）；深度编程（番茄更适合）。两者结合效果最佳：用番茄周期维持日常节奏，用时间盒应对紧急任务。

### 常见问题

**Q: 番茄工作法的 25 分钟和 5 分钟比例可以改吗？**

完全可以。25/5 是参考值，不是硬性规定。建议先用标准值实验 2 周，然后根据疲劳和任务类型调整。常见变体如 20/5、30/5、50/10 都有实际应用者。

**Q: 如果一个番茄中途被打断，应该怎么办？**

根据番茄工作法原则，这个番茄被"吃掉"，不计入完成数。立即处理中断（2 分钟内），然后开始一个新的番茄。频繁被吃掉的番茄意味着工作环境需要优化。

**Q: 短休期间可以刷手机或看邮件吗？**

不推荐。真正的休息应该让大脑"卸载"，而不是切换到另一个刺激源。最有效的短休是：散步、喝水、深呼吸、看窗外。长休才适合做一些轻松的事。

**Q: 为什么强制要休息，而不是工作到自然疲劳为止？**

因为注意力的衰减是渐进且自我欺骗的。当你感到疲劳时，已经在效率陡峭下降的阶段。定期强制休息能维持一致的高质量输出，是预防性措施。

**Q: 番茄工作法适合所有工作类型吗？**

不完全适合。它对需要深度专注的工作（编程、写作、学习）效果最佳，对高频打断的工作（客户支持、实时协作）效果一般。最好的做法是根据任务类型灵活调整。

**Q: 如何用番茄工作法管理多个并行项目？**

为每个项目分配番茄数，然后轮流切换。例如项目 A 和项目 B 各 2 个番茄，项目 C 1 个番茄，然后重复。这样既能给每个项目充分的深度工作时间，又避免过度切换。

---

## ASCII 表格制作完全指南：终端 / 文档 / 代码注释 实战

> ASCII 表格是终端应用、自述文档、源代码注释中最通用的表格格式。本指南讲清楚 Unicode 制表符、CJK 字符宽度对齐难题、与 Markdown 表格的选择时机。

URL: https://xtechtools.com/guides/ascii-box/
发布：2026-04-29 · 更新：2026-04-29

ASCII 表格是终端用户界面、项目自述文档、源代码注释三个场景中最广泛使用的表格格式。从经典的 `+--+` ASCII fallback 到现代的 Unicode 制表符（┌ ─ ┬ ┐ ├ ┼ ┤ └ ┴ ┘ │），再到全角字符对齐的陷阱，本指南从原理到实战一一讲清。掌握 ASCII 表格，你的文档、CLI 工具、代码注释都会看起来专业得多。本文涵盖三个时代的表格演进、字符宽度问题、与其他表格格式的选择指南，以及 Python PrettyTable 等工具库。

### ASCII 表格的三个时代

ASCII 表格从上世纪终端年代演进至今，主要经历三个阶段：

**1. 纯 ASCII 时代（ASCII fallback）**：只用 `+`、`-`、`|` 三个字符，兼容所有字符编码和终端。这是最保险的选择，永远不会乱码。

```
+-------+-------+
| Name  | Age   |
+-------+-------+
| Alice | 28    |
| Bob   | 35    |
+-------+-------+
```

**2. Unicode 单线时代**：用 Unicode 制表符 `─ │ ┌ ┐ └ ┘ ├ ┤ ┬ ┴ ┼`，视觉连贯但仍单线宽度。

**3. 双线 / 圆角时代**：`═ ║ ╔ ╗ ╚ ╝ ╠ ╣ ╦ ╩ ╬`（双线）或 `╭ ╮ ╰ ╯`（圆角），美观度最高但兼容性下降。

### Unicode 制表符完全速查

本工具提供 4 种 Unicode 表格风格选择，对应不同场景：

- **单线（Default）**：`┌ ─ ┬ ┐ ├ ┼ ┤ └ ┴ ┘ │` — 大多数现代终端和编辑器都支持，推荐首选。
- **双线（Double）**：`╔ ═ ╦ ╗ ╠ ╬ ╣ ╚ ╩ ╝ ║` — Excel、Word 导出常用，打印友好。
- **圆角（Rounded）**：`╭ ─ ┬ ╮ ├ ┼ ┤ ╰ ┴ ╯ │` — 现代 UI 风格，仅在新终端显示正常。
- **ASCII Fallback**：`+ - + + + + + + + + |` — 完全兼容老旧系统和 Telnet。

Notebook 软件（Jupyter、Observable）推荐单线；Markdown 文档在 GitHub 会自动渲染 Markdown 表格，不需要 Unicode；终端 CLI 应用推荐单线或 ASCII fallback。

### CJK 字符宽度对齐陷阱

最常见的坑：中文、日文、韩文（汉字）在等宽字体中占用 2 列宽度，而英文字母和数字只占 1 列。直接用空格对齐会严重错位。

**错误例（直接拼接）**：
```
┌─────────┬────┐
│ 名字    │ 年龄 │
├─────────┼────┤
│ Alice   │ 28  │
│ 张三    │ 30  │
└─────────┴────┘
```

「张三」只占 2 个字（4 列），但「Alice」占 5 列，结果表格错位。

**解决方案**：在计算列宽时，汉字计数为 2，英文计数为 1。本工具自动处理此问题，智能检测输入的字符宽度并补齐空格。如需手工调整：
- 把汉字视作占用 2 个字符宽度
- 用 `str.length` 的 2 倍估算汉字部分
- 用 monowidth 库（Node.js）或 wcwidth（C/Python）精确计算

### ASCII 表格 vs Markdown 表格选择指南

**何时用 ASCII 表格**：
- 代码注释或文档字符串里插入表格 — Markdown 语法在注释中混乱
- README 要兼容非 Git 平台显示（GitLab、Gitee 的 Markdown 表格渲染可能不同）
- 终端应用输出，如 `npm ls`、`git log` 中的表格
- 纯文本日志或配置文件

**何时用 Markdown 表格**：
- GitHub / GitLab / Gitea 的 README.md 或 `.md` 文档
- 技术博客、掘金、语雀等 Markdown 编辑器
- 源文档需要导出为 HTML、PDF、Docx

**混合用法**：代码注释用 ASCII 表格，文档（.md 文件）用 Markdown 表格，最大化可读性和兼容性。

### PrettyTable / Python 类比与工具扩展

Python 的 PrettyTable 库自动生成 ASCII 表格，省去手工对齐的烦恼：

```python
from prettytable import PrettyTable
table = PrettyTable(['Name', 'Age'])
table.add_row(['Alice', 28])
table.add_row(['Bob', 35])
print(table)
# 自动输出对齐的 ASCII 表格
```

本工具的核心就是 Web 版的 PrettyTable：
- 支持输入 CSV / JSON 数据自动生成表格
- 可调整列宽、对齐方式（左 / 中 / 右）
- 一键切换 Unicode 风格或 ASCII fallback
- 支持中文、emoji 等宽度混合字符
- 生成的表格可直接复制到代码或文档

Node.js 可用 `cli-table3`、`table` 库；Rust 用 `prettytable-rs`；Java 用 `tablesaw`。本工具省去学习各平台 API 的时间。

### 在 Vim / Emacs 中编辑 ASCII 表格

**Vim**：
- `vim-table-mode` 插件支持实时编辑 Markdown 和 ASCII 表格
- 安装：`Plug 'dhruvasagar/vim-table-mode'`
- 在表格内按 `<Leader>tm` 进入表格模式，自动对齐

**Emacs**：
- `org-table` 模式内置支持，自动对齐汉字
- Markdown 表格编辑用 `markdown-table-mode`
- 按 Tab 自动调整列宽

**VS Code**：
- 直接使用本工具生成后复制粘贴
- 或用 `Excel to Markdown Table` 扩展导入 Excel

**推荐工作流**：用本在线工具生成表格框架，复制到代码编辑器，用编辑器快捷键微调对齐。

### 常见问题

**Q: ASCII 表格会在所有终端正确显示吗？**

单线 Unicode 在现代终端（iTerm2、Windows Terminal、GNOME Terminal）都支持。若要 100% 兼容老旧系统（Telnet、嵌入式终端），选 ASCII Fallback。

**Q: 如何在 Markdown 中保留 ASCII 表格的格式？**

用代码块 ``` 包裹：```\nASCII 表格内容\n```。代码块内保留原始空格，不会被 Markdown 渲染器处理。

**Q: JSON / CSV 能直接转 ASCII 表格吗？**

本工具支持粘贴 CSV 或 JSON 数组，自动生成表格。例如 `[{"name":"Alice","age":28}]` 直接转成行列。

**Q: 如何在代码注释里用 ASCII 表格？**

直接粘贴。在 Python docstring、Java JavaDoc、JavaScript JSDoc 中都能保留格式。注意对齐后再粘贴，不要事后调整。

**Q: 汉字混英文时应该选哪种风格？**

推荐单线 Unicode（Default）。本工具自动计算汉字 2 列宽度，英文 1 列，混合内容也能完美对齐。

**Q: Markdown 表格和 ASCII 表格哪个性能更好？**

都在浏览器本地渲染，性能没区别。Markdown 表格更简洁，ASCII 表格更通用。选择取决于场景而非性能。

---

## ASCII 艺术字完全指南：figlet 字体 + 创意应用

> 从电传打字机的经典 ASCII art 到现代 Discord 聊天彩蛋，这篇指南讲清楚 figlet 的 100+ 字体库、ANSI 颜色加持、以及如何用 Unicode 块字符做图像转换。

URL: https://xtechtools.com/guides/ascii-art/
发布：2026-04-29 · 更新：2026-04-29

ASCII 艺术字（ASCII art）起源于 1960 年代电传打字机时代。当计算机还没有图形界面时，程序员和艺术家用 ASCII 字符组合成各种图形和文字，演变出今天的 figlet 库和 100+ 风格字体。无论是 CLI 工具的启动 banner、命令行应用的 logo、还是 Discord 上的聊天彩蛋，掌握 ASCII 艺术字都能让内容更有趣。本指南从 figlet 原理讲到彩色实现、图像转换的高级应用，以及如何在 Vim、GitHub、终端脚本中应用。

### ASCII 艺术起源与 figlet 库

**历史背景**：1960-1980 年代，电脑没有图形界面，所有交互都在文本终端进行。程序员和艺术家开始用 ASCII 字符（0-127）拼接成壮观的图形，用在 BBS 系统、邮件签名、系统公告栏。

**figlet 诞生**：1991 年，Glenn Chappell 开发了 figlet 工具，用 `.flf` 字体文件定义字符的 ASCII 形状。现已演进到 `v2.2.5`，内置 100+ 经典字体。

**输入**：任意 ASCII 字符串 → **输出**：艺术字

例如 `figlet -f slant "Hello"` 输出：
```
   _  _     _ _
  | || |___| | |
  | __ / _ \ | |
  |_||_\___/_|_|
```

本工具集成了 figlet 的核心字体，无需命令行，浏览器中一键生成。→ 访问 /ascii-art/ 工具

### figlet 字体库速览（20+ 常用）

- **Standard**（默认）：经典无衬线，最平衡
- **Big**：超大粗体，仅需 5-10 个字符就很壮观
- **Block**：方形块状，ASCII 硬朗感
- **Bubble**：圆润泡泡风格
- **Slant**：斜体，优雅紧凑
- **Shadow**：带阴影效果，立体感
- **3-D**：三维效果，适合标题
- **ANSI Shadow**：结合 ANSI 颜色的带阴影版
- **Script**：手写风格
- **Cyberlarge**：未来科幻风
- **Digital**：电子表风格
- **Doh**：粗线体
- **Mini**：超小尺寸，节省空间
- **Term**：终端仿古风

本工具提供 30+ 常用字体下拉选择。更多字体可在 figlet 官方 GitHub 下载 `.flf` 文件（共 400+ 字体）。

### 终端 CLI 工具的启动 banner

许多知名 CLI 工具都用 ASCII 艺术字作为启动 logo：

**Vim / Neovim**：打开编辑器首屏就是 Vim 的经典 logo（用 ASCII 拼的）。

**Node.js**：全局安装 `npm install -g figlet` 后，许多脚手架工具（如 create-react-app）启动时会 `console.log(figlet.textSync(...))` 输出彩色 banner。

**Rails**：`rails new myapp` 时终端会输出 ASCII 艺术的 Rails logo。

**实现方式**（Node.js 示例）：
```
const figlet = require('figlet');
figlet.text('My CLI Tool', { font: 'Slant' }, (err, result) => {
  console.log(result);
});
```

用 ANSI 颜色加持，console.log 就能输出彩色 banner。本工具的「下载」功能可直接导出文本，粘进代码逻辑中。

### ANSI 颜色 + Unicode 块字符进阶

**ANSI 颜色**：在 ASCII 艺术字两端加 ANSI 转义码即可着色。

格式：`\x1b[31m红字\x1b[0m` 或 `\033[32m绿字\033[0m`

常用颜色：
- 30-37：前景色（黑、红、绿、黄、蓝、品红、青、白）
- 40-47：背景色
- 90-97：高亮前景

本工具的「颜色」功能会自动插入 ANSI 码，复制后在终端立即显示彩色。

**Unicode 块字符艺术**：用 `█ ▓ ▒ ░` 四个灰度字符可以做图像灰度转换。本工具的「图像转 ASCII」功能就是基于此原理：
1. 读取图片像素
2. 计算每块的平均亮度（0-255）
3. 映射到四个灰度字符（█ 最亮、░ 最暗）
4. 按图片宽高比输出文本

效果：在纯文本中近似重现图像。

### Discord / IRC 聊天彩蛋

**Discord Rich Presence**：有些 Discord Bot 会用 ASCII 艺术字显示游戏状态、Bot 启动信息、服务器通知等。Webhook 消息中嵌入 ASCII art 能让通知更富视觉冲击力。

**IRC 传统**：IRC 时代流行在聊天频道发大型 ASCII art 作为彩蛋。例如 `motd`（Message of the Day）命令输出的就是 ASCII 艺术欢迎词。某些 IRC 客户端甚至有专门的 ASCII art 格式，支持色彩和动画。

**现代应用**：
- GitHub README 顶部用大号 ASCII 艺术字展示项目名（如 Kubernetes、TensorFlow 的官方仓库）
- 技术博客文章头部装饰或分隔符
- 代码注释中标记重要区域（如 `# ██████████ BEGIN CONFIG`）
- 开源项目的 CHANGELOG / 发布公告
- Slack / Telegram 机器人的消息格式化

本工具的「复制」按钮可直接把生成的 ASCII 艺术字粘进 Markdown、代码、聊天框，无需额外处理即可跨平台兼容。

### 如何用本工具生成自定义 ASCII 艺术

**3 步快速入门**：

1. **输入文本**：在「输入框」粘贴你要转换的字符串（英文、数字、符号；中文支持有限）
2. **选择字体**：从 30+ 下拉中选择风格（推荐入门选 `Big` 或 `Slant`）
3. **可选加颜色**：勾选「彩色」后选择方案，输出立即变彩色

**导出选项**：
- **复制**：一键粘到任何地方
- **下载 TXT**：保存为文本文件
- **下载 SVG**：矢量格式，可在 Figma 继续编辑

**高级用法**：
- 输入特殊字符（`!@#$%^&*()`）可生成有趣边框
- 多行输入每行单独处理，适合创建多行标题或装饰
- 调整字体预览后再导出，确保最终效果满意
- 结合 Markdown 代码块突出显示彩色 ASCII 艺术
- 导出 SVG 格式用于印刷或高分辨率展示

### 常见问题

**Q: ASCII 艺术字在所有终端都显示正常吗？**

取决于字体。简单的 ASCII 字符（A-Z、0-9、+-*/）在任何终端都显示正常。Unicode 块字符（█ ▓ ░）在现代终端支持，但老终端可能显示为方框或问号。

**Q: 中文能转 ASCII 艺术字吗？**

本工具仅支持 ASCII 范围。figlet 官方库也不支持中文字符（中文笔画太复杂）。如需中文艺术字，考虑用图像转 ASCII 或美术软件渲染。

**Q: figlet 还在维护吗？**

是的，GitHub 上 cmatsuoka/figlet 仍活跃维护。最新版本 2.2.5（2022）。

**Q: 彩色 ASCII 艺术字如何在网页显示？**

HTML 中用 `<pre>` 标签包裹，样式用 CSS 指定颜色。本工具导出的纯文本可直接粘进 HTML。或者导出为 SVG 获得最佳排版。

**Q: 为什么某些字体输出很宽很高？**

字体设计差异。"Big" 占用更多行宽，"Mini" 最紧凑。根据显示空间选择合适字体。

**Q: 能在终端脚本中用 ASCII 艺术字吗？**

完全可以。本工具下载的 TXT 可粘进 Bash、Python 脚本的 print 语句，或 Node.js 的 console.log。

---

## Markdown 表格完全指南：语法 / 对齐 / 嵌套 / 工具链

> GFM Markdown 表格是技术文档的标配，但不支持跨行、内部换行等高级特性。本文讲清楚何时该用 HTML 表格、各 Markdown 引擎的兼容性、以及本工具的可视化优势。

URL: https://xtechtools.com/guides/md-table/
发布：2026-04-29 · 更新：2026-04-29

Markdown 表格（GitHub Flavored Markdown Table）是 GitHub、GitLab、Notion、语雀等平台上最常用的结构化数据表示方式。虽然语法简单（| 分隔符 + --- 分界线），但对齐符号、内部换行、跨行合并等细节常常踩坑。本指南从基础语法讲到各引擎兼容性、HTML 降级方案、以及用本工具可视化建表的优势。掌握表格的正确用法，你的技术文档和 README 会更加专业清晰。

### GFM Markdown 表格语法入门

**最小表格**：
```
| Header 1 | Header 2 |
| --- | --- |
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |
```

呈现为（在 GitHub 中）：
| Header 1 | Header 2 |
| --- | --- |
| Row 1 Col 1 | Row 1 Col 2 |
| Row 2 Col 1 | Row 2 Col 2 |

**规则**：
- 第 1 行是表头（Header）
- 第 2 行是分界线，形如 `| --- | --- |`
- 之后每行是数据行
- 每行用 `|` 分隔列，两端的 `|` 可省略
- 分界线的 `-` 个数随意（1 个以上即可，多余的无意义）

完全版：`| Header | --- | Data |` 和 `|Header|---|Data|` 等效。

### 对齐符号（:--- / :---: / ---:）

分界线行的冒号位置决定列的对齐方向，是 Markdown 表格最容易被忽视但很重要的特性：

- **`:---` 或 `---`**（左对齐）：默认，通常省略冒号
- **`:---:`**（中对齐）：两端冒号，内容居中
- **`---:`**（右对齐）：右端冒号，内容靠右

**示例**（在本工具中可视化）：
```
| 左 | 中 | 右 |
| :--- | :---: | ---: |
| L | C | R |
| Alice | Bob | Carol |
```

渲染后：左列内容靠左、中列居中、右列靠右。常用对齐场景：
- 左对齐：名字、描述文本、代码片段（通常信息量大）
- 中对齐：布尔值（True / False）、状态标签（✓ / ✗）、单字段标记
- 右对齐：数字、金额、版本号、时间戳（便于快速扫描数值）

**最佳实践**：表格的首列通常左对齐（存储描述），数值列右对齐（易对比），状态列中对齐（突出重点）。

### Markdown 表格的内容限制

**不支持换行**：单元格中按 Enter 会破坏表格语法。

解决方案：
1. **HTML `<br>` 标签**：`Cell 1<br>Cell 2` 在某些引擎中生效
2. **两个空格 + 换行**：Markdown 对两空格的处理，部分引擎支持
3. **转义管道符**：单元格内的 `|` 要写 `\|`
4. **HTML 降级**：如果 Markdown 不支持，直接写 HTML `<table>` 标签

**不支持跨行 / 跨列**：标准 Markdown 表格是矩形网格，无法合并单元格。需要此功能用 HTML 表格或 `<table>` 标签。

**支持内联格式**：单元格内可用 `**粗体**`、`*斜体*`、`` `代码` ``、`[链接](url)`、`![图片](url)` 等 Markdown 语法。

### 各 Markdown 引擎的兼容性

**GFM（GitHub 标准）**：完全支持，最广泛。GitHub、GitLab（8.0+）、Gitea、Gitee 都遵循。

**CommonMark（纯标准）**：表格是 GFM 扩展，不属于 CommonMark 核心。纯 CommonMark 渲染器（如 markdown-it 不加插件）无法解析表格。

**Pandoc**：默认不渲染 GFM 表格，需 `--from gfm` 标志。支持 pipe table、grid table（复杂）、HTML 表格。

**Notion / 语雀 / 飞书**：完全支持 GFM 表格，且 UI 提供可视化编辑（类似本工具）。

**Jupyter Notebook**：Markdown 单元格内支持 GFM 表格。

**Jekyll（GitHub Pages）**：支持 GFM 表格（kramdown 引擎）。

**危险**：在不同平台间迁移 Markdown 文档时，若目标平台不支持 GFM 表格，要先转换为 HTML 表格。本工具可一键导出 HTML。→ 访问 /md-table/ 工具

### 复杂表格何时该用 HTML

**Markdown 表格的硬限制**：
- 无法跨行
- 无法跨列
- 无法嵌套表格
- 无法在单元格放图片或其他复杂内容

**何时该降级到 HTML**：
```
<table>
  <tr>
    <th colspan="2">合并两列的表头</th>
  </tr>
  <tr>
    <td>Left</td>
    <td rowspan="2">跨 2 行</td>
  </tr>
  <tr>
    <td>Right</td>
  </tr>
</table>
```

GitHub、GitLab 等平台都支持 HTML 表格的渲染，且 HTML 可以嵌在 Markdown 里混用。

**建议**：
- 简单矩形表格 → Markdown
- 需要跨行 / 跨列 / 复杂格式 → HTML `<table>`
- 本工具导出 HTML 选项可自动转换

### 用本工具可视化建表的优势

**传统工作流**：手工用 Markdown 语法一行行输入，容易对齐错误、数据漏填。

**本工具工作流**：
1. 在可视化编辑器中逐行逐列输入数据
2. 实时预览 HTML 渲染效果
3. 调整列宽、对齐方式（图形界面，无需记语法）
4. 一键导出 Markdown（工具自动生成完美对齐的 `|` 和 `---`）
5. 或导出 HTML、CSV、JSON、LaTeX 表格

**节省时间**：特别是大型表格（10+ 行、5+ 列），手工对齐 Markdown 可能要花 10 分钟，本工具 1 分钟完成。

**支持数据导入**：
- 粘贴 CSV / Excel 表格 → 自动解析为 Markdown 表格
- 粘贴 JSON 数组 → 自动转为行列
- 从 URL 导入 CSV → 一键建表

**导出选项**：Markdown / HTML / LaTeX / CSV / JSON / SQL INSERT 语句。

### Markdown 表格最佳实践与排错

**最佳实践**：
1. **始终对齐**：虽然 Markdown 语法上不要求对齐，但为了源码可读性，手工对齐（或用工具）
2. **管道符转义**：如单元格内有 `|` 符号，写成 `\|`
3. **避免首尾空格**：`| content |` 和 `|content|` 等效，但规范化为没有首尾空格
4. **长内容考虑超链接**：单元格过长可用 `[摘要](URL)` 只显示摘要链接到详情
5. **导出一致性**：若最终要发布为 HTML，在 Markdown 中测试表格在目标平台的渲染效果

**常见错误排查**：
- **表格不渲染**：检查分界线行是否至少 3 个 `-`（`---`）且用 `|` 分隔
- **列数不匹配**：表头和数据行的 `|` 个数要一致（表格是矩形）
- **对齐符号无效**：确保冒号在分界线内，如 `:---` 或 `---:`（不是 `: ---` 或 `--- :`）
- **特殊字符乱码**：中文、emoji 等宽度问题在 Markdown 中通常自动处理，无需手工调整

### 常见问题

**Q: Markdown 表格在非 GitHub 平台渲染不出来怎么办？**

说明目标平台不支持 GFM 表格（可能只支持纯 Markdown 或旧版本）。导出为 HTML 表格或 CSS 表格重新提交。

**Q: Markdown 表格能嵌套吗？**

标准 Markdown 不支持表格嵌套。需要此功能请用 HTML `<table>` 或专业排版工具（如 LaTeX `tabular`）。

**Q: 表格太宽，在手机上怎么显示？**

HTML 表格可用 CSS 的 `overflow-x: auto` 让宽表格横向滚动。Markdown 表格无法自行控制样式，取决于渲染器。

**Q: 能在表格单元格内放图片吗？**

可以用 Markdown 图片语法 `![alt](url)`，但部分引擎可能显示不正常。HTML 表格中放 `<img>` 标签最保险。

**Q: 本工具导出的 Markdown 表格能直接粘到 GitHub/GitLab 吗？**

完全可以。工具导出的是标准 GFM 表格，GitHub 和 GitLab 都能完美渲染。

**Q: 很多行的表格应该用 HTML 还是 Markdown？**

如果只是多行矩形表格（无合并），Markdown 更简洁。行数再多 Markdown 也能处理。若涉及跨行、特殊格式等，HTML 更合适。

---

## IP / CIDR 子网划分完全指南：从 /24 到 VPC 规划

> 掌握子网掩码与 CIDR 记号法，理解私有地址段的选择，学会如何在云环境（AWS / 阿里云）规划 VPC，避免地址空间重叠与路由冲突。

URL: https://xtechtools.com/guides/cidr/
发布：2026-04-29 · 更新：2026-04-29

IPv4 地址空间有限（只有 43 亿个），科学分配至关重要。经典的 A/B/C 类分类（Class A/B/C）已被 CIDR（Classless Inter-Domain Routing，无类别域间路由）取代。CIDR 用一个简洁的记号 /N 表示子网掩码，使地址分配更灵活高效。无论你是搭建企业内网、配置 VPN，还是在云上规划多个 VPC，理解子网划分都是必备技能。本指南从基础公式开始，逐步讲到真实的 AWS 与阿里云场景。

### CIDR 表示法与子网掩码的核心概念

CIDR 记号法 IP/N 中，N 代表前 N 位是网络地址，后 32-N 位可分配给主机。这种记号法比传统的「点分十进制」子网掩码更简洁易记。

**例子**：192.168.1.0/24
- /24 意味着前 24 位是网络部分，后 8 位是主机部分
- 子网掩码：255.255.255.0（前 24 位全是 1，后 8 位全是 0）
- 可容纳主机数：2^8 - 2 = 254（减 2 是因为网络地址和广播地址不能分配给主机）
- 网络地址：192.168.1.0，广播地址：192.168.1.255，可用主机：192.168.1.1-192.168.1.254

**转换关系速查表**：
```
/8  → 255.0.0.0          → 1600 万主机
/16 → 255.255.0.0        → 6.5 万主机
/20 → 255.255.240.0      → 4094 主机
/24 → 255.255.255.0      → 254 主机
/25 → 255.255.255.128    → 126 主机
/26 → 255.255.255.192    → 62 主机
/28 → 255.255.255.240    → 14 主机
/30 → 255.255.255.252    → 2 主机（常用于点对点链接）
/32 → 255.255.255.255    → 单个 IP（无法分配，但用于主机路由）
```

掌握这个映射关系很重要。面试中经常问「/25 网络能分多少主机」，快速反应的秘诀就是记住 2^(32-N) - 2 这个公式。二进制转换对于深层理解也很有帮助：/24 的最后 8 位都是 0，代表 256 个地址空间。

### 子网划分公式与实战计算

已知一个大网络，如何分割成若干小子网？核心思路是：用额外的位数来区分子网，剩余的位数分配给主机。

**公式**：要分 N 个子网，每个至少需要 K 个主机
- 要分 N 个子网，需多加 log2(N) 位 → 原掩码 +log2(N)
- 每个子网至少 K 个主机，需保留 log2(K+2) 位给主机部分

**实例详解**：把 10.0.0.0/8 分成 4 个子网，每个约 1000 主机
- 4 个子网需要 log2(4)=2 位 → /8 +2 = /10
- 1000 主机需要 log2(1002)≈10 位 → /10 +10 = /20
- 四个子网具体分配：
  - 10.0.0.0/20（主机数：4094，地址范围 10.0.0.1-10.0.15.254）
  - 10.16.0.0/20（主机数：4094，地址范围 10.16.0.1-10.16.15.254）
  - 10.32.0.0/20（主机数：4094，地址范围 10.32.0.1-10.32.15.254）
  - 10.48.0.0/20（主机数：4094，地址范围 10.48.0.1-10.48.15.254）

**验证原理**：/10 允许 2^(32-10)=2^22 个 IP 地址，共 4194304 个。第三位从 0-63（64 个值），每个 /20 占 16 个值（2^4），64/16=4 恰好分成 4 个 /20 子网。这就是二进制的神奇之处。

### RFC 1918 私有地址段与选择策略

RFC 1918 规定了三个私有地址段（内部网络专用，互联网上不路由）。选错了会在扩展时带来巨大麻烦。

- **10.0.0.0/8**：最大，1600 万个 IP，拥有 256 个 /16 子网的空间，企业内网和大型云基础设施常用
- **172.16.0.0/12**：中等，约 100 万个 IP，拥有 16 个 /16 子网，AWS 默认 VPC 常用
- **192.168.0.0/16**：最小，6.5 万个 IP，拥有 256 个 /24 子网，家庭 WiFi 路由常用

**补充**：169.254.0.0/16（链路本地地址，DHCP 服务不可用时操作系统自动分配，用于应急）

**企业选择建议**：
- 小公司（< 1000 人）：192.168.0.0/16 足够，分成 256 个 /24，每个 /24 有 254 个主机
- 中型公司（1000-10000 人）：172.16.0.0/12 较合适，拥有充足的扩展空间
- 大企业（> 10000 人）或需大量子网：10.0.0.0/8 是标准选择
- 多地部署时：以 /8 为基准，地域分配为 /16，可用区为 /24

**关键陷阱**：VPN 连接时，确保本地网络与远端 VPC 的私有地址段不重叠。例如公司内网用 10.0.0.0/8，阿里云 VPC 也用 10.1.0.0/16，两边就无法互通——这是网络规划最常见的坑。很多公司因为这个问题反复踩坑。

### AWS VPC CIDR 规划的实战案例

AWS 中一个 VPC 对应一个私有网络。多个 VPC 要通过 VPC Peering、Transit Gateway 或 VPN 相互连接。科学的 CIDR 规划可以避免将来的重构。

**典型规划**（跨地域大型项目）：
```
总体架构：10.0.0.0/8（公司总网段，保留 10.0-10.255）
├─ VPC-A（北京）：10.0.0.0/16（保留 10.0.0-10.0.255）
│  ├─ 公有子网 A1：10.0.1.0/24（互联网网关、NAT Gateway）
│  ├─ 公有子网 A2：10.0.2.0/24（负载均衡、跳板机）
│  ├─ 私有子网 A3：10.0.10.0/24（应用服务、ECS）
│  ├─ 私有子网 A4：10.0.11.0/24（应用服务副本）
│  └─ 私有子网 A5：10.0.20.0/24（数据库、缓存）
├─ VPC-B（上海）：10.1.0.0/16（保留 10.1.0-10.1.255）
│  ├─ 公有子网 B1：10.1.1.0/24
│  ├─ 私有子网 B2：10.1.10.0/24
│  └─ 私有子网 B3：10.1.20.0/24
├─ VPC-C（广州）：10.2.0.0/16（保留 10.2.0-10.2.255）
│  └─ ...
└─ VPC-D（香港）：10.3.0.0/16
   └─ ...
```

**设计要点**：
- 每个地域的 VPC 用不同的第三位（0、1、2、3...），便于记忆和路由策略
- 单个 VPC 内部 /16 足够大多数场景（65536 - 2 = 65534 个可用 IP）
- 同一 VPC 内不同子网用不同的第四位（子网掩码 /24），典型分配：1-9 公有，10-19 应用，20-29 数据库
- 预留空间：别把整个 /8 都分配完，留足将来扩展的余地（10.4-10.255 备用）
- 公有子网数量：每个 /16 VPC 分 2-3 个 /24 公有子网足够（冗余）
- 私有子网数量：根据应用部署数量定（一般 3-5 个 /24）

### 云网络实战：解决 Docker、VPN 与 VPC 的 CIDR 冲突

现实项目中经常遇到多层网络叠加的问题。阿里云 VPC 选了 172.16.0.0/12，本地 Docker 默认桥接网络用 172.17.0.0/16，两端主机无法直接通信。这是因为 172.17.0.0/16 被包含在 172.16.0.0/12 范围内！

**排查步骤**：
1. `ip route` 或 `route -n` 查看本地路由表，找到 Docker 桥接网络的网关
2. `docker network inspect bridge` 查看 Docker 默认网络的 IP 范围
3. 阿里云控制台检查 VPC CIDR，看是否与 Docker 网络重叠
4. 若重叠，编辑 Docker daemon 配置（/etc/docker/daemon.json）改 bip 为其他段，如 192.168.0.1/16，然后 `systemctl restart docker`

**完整的网络隔离方案**：
```
公司内网（办公室）：10.0.0.0/8
VPC（云端）：172.16.0.0/12
Docker 本地桥接：192.168.0.0/16
Kubernetes Pod 网络：10.100.0.0/8（pod CIDR）
Kubernetes Service 网络：10.200.0.0/8（service CIDR）
```

三个网络段完全不重叠，各司其职。如果还有 VPN 客户端拨号，再加一个 OpenVPN 网络 172.31.0.0/16，确保也不重叠。

### 超网（Supernetting）与路由聚合

当网络数量增多时，路由表会变得巨大。超网是将多个小网络合并成一个大网络的技术，用于简化路由。

**例子**：如果有以下四个 /24 网络：
- 10.0.0.0/24
- 10.0.1.0/24
- 10.0.2.0/24
- 10.0.3.0/24

可以合并为一个 /22 网络 10.0.0.0/22（因为 4 个 /24 = 2^2 = /22）。这样路由表就只需一条规则指向这个 /22，而不是四条分别指向每个 /24。

**聚合条件**：待合并的网络必须连续，且数量是 2 的幂次（2、4、8、16...）。

**在企业中的应用**：
- BGP 路由中，运营商通常聚合多个 /24 为 /16 对外通告，减少全球路由表大小
- 云中的安全组规则：把多个内部 /24 聚合为 /16 写入出站规则，减少规则数量
- VPN 部署：总部 10.0.0.0/16 可以聚合为 10.0.0.0/16 通过 IPsec 隧道，分支机构只需一条黑洞路由

### IPv6 简介与混合网络规划

IPv6 用 128 位地址，理论上永不枯竭（3.4×10^38 个）。但由于设备与网络支持参差不齐，全球迁移缓慢，预计还需 5-10 年才能广泛部署。

**IPv6 CIDR 记号**：同样的逻辑但地址更长。例如 2001:db8::/32 是公共文档前缀。实际分配：一个运营商可能分到 2001:db8:1234::/48，然后分配给企业 2001:db8:1234:1::/64（一个子网）。

**过渡方案**：
- **双栈（Dual Stack）**：IPv4 与 IPv6 并行，最稳妥。主机同时有 IPv4 和 IPv6 地址
- **4in6 隧道**：IPv4 流量封装在 IPv6 包内跨越纯 IPv6 网络
- **NAT64**：IPv6 客户端通过代理访问 IPv4 服务

**现状**（2026）：大多数企业还在纯 IPv4。只有谷歌、Facebook 等巨头与部分运营商开始大规模部署 IPv6。中国运营商对 IPv6 的支持仍在试点阶段。除非你的项目面向运营商或国际业务，暂时不用急着深入学 IPv6——但要知道它的存在和基本概念。

### 避免规划中的常见错误与最佳实践

真实项目中的血泪教训：

**错误 1：VPC 间地址重叠**。AWS 账号 A 和账号 B 的 VPC 都用 10.0.0.0/16，后来要 Peering 就完蛋。需要提前在组织层面制定统一的 CIDR 分配规则（如账号 A 用 10.0.0.0/16-10.0.255.0/24、账号 B 用 10.1.0.0/16-10.1.255.0/24）。最好在 wiki 或 Confluence 里维护一个全局 CIDR 分配表，每次新建 VPC 前检查一遍。

**错误 2：子网划分过细**。一个 /25 子网只有 126 个 IP，看起来不浪费，但 AWS 实际可用更少（因为路由网关、DHCP 服务等保留了几个）。建议：团队少于 50 人用 /24；少于 250 人用 /23；否则频繁加子网很麻烦，而且浪费管理员时间。

**错误 3：忘记保留地址**。IPv4 /25 子网 10.0.1.0/25：主机范围是 10.0.1.1-10.0.1.126，不是 10.0.1.0-10.0.1.127！前者 10.0.1.0 是网络地址，后者 10.0.1.127 是广播地址，都不能分配给主机。这个错误导致过多次故障。

**错误 4：跨地域时没规划好路由**。VPC 多地扩展时，如果没有清晰的 CIDR 分层设计（公司级 /8、地域级 /16、可用区级 /24），后续 BGP 路由和故障排查会一团糟。最佳实践是从一开始就按这个结构规划，即使当时只有一个地域。

**错误 5：忽视文档**。网络规划必须文档化。用 Excel 或 Confluence 维护一张 CIDR 分配表，包括网络名称、用途、分配人、分配日期、备注。否则 6 个月后没人记得 10.42.0.0/16 是干什么的。

**最佳实践清单**：
- 制定组织级的 CIDR 分配政策
- 维护全局 CIDR 分配表（定期审查）
- 新建子网前检查是否与其他网络重叠
- 预留 20-30% 的地址空间以备后用
- 用 /24 作为最小可用子网（除非是点对点链接用 /30）
- 定期检查路由表是否有冗余或错误条目

### 常见问题

**Q: 怎么快速计算 /25 网络有多少主机？**

32 - 25 = 7，2^7 = 128，再减去网络地址和广播地址，126 个主机。核心就是 2^(32-N) - 2。还可以记住常见的：/24=254、/25=126、/26=62、/30=2。

**Q: 192.168.1.0/24 和 192.168.1.0/25 的区别是什么？**

/24 是 256 个地址（254 可用主机），/25 是 128 个地址（126 可用主机）。同一网络段，/25 多加了一位来区分两个 /25 子网。第一个是 192.168.1.0/25（0-127），第二个是 192.168.1.128/25（128-255）。

**Q: 为什么公司内网一定要用私有地址段？**

私有地址段在互联网上不路由，保证安全性且隔离；且可以自由分配，不用向 IANA 申请和花钱。如果用公网 IP 给内网，会和互联网上的真实地址冲突，导致通信混乱。

**Q: VPN 连接时两端都是 10.x.x.x/8 能行吗？**

不行。VPN 工作在 IP 层，两端的私有地址段必须不重叠，否则路由器无法区分数据包该从哪条链路出去。这是最常见的 VPN 连接故障原因，排查方法是检查两端的路由表。

**Q: IPv6 什么时候一定要用？**

大多数企业网络还是纯 IPv4（2026）。只有在以下场景才考虑 IPv6：(1) 向运营商提供服务需原生支持；(2) 国际业务需要与海外用户通信；(3) 设备数量超百万且难以用 NAT 管理。普通企业可以先观望。

---

## HTTP 状态码全解：每个 3 位码什么含义、何时返回

> 从 1xx 信息响应、2xx 成功、3xx 重定向到 4xx 客户端错误和 5xx 服务器错误，掌握 HTTP 状态码在 SEO、限流、API 设计中的实际应用。

URL: https://xtechtools.com/guides/http-status/
发布：2026-04-29 · 更新：2026-04-29

HTTP 状态码是 Web 通信的"信号灯"。客户端（浏览器、手机应用）向服务器发起请求，服务器用一个三位数来回应："成功收到了"、"地址改了"、"你没权限"、"我崩了"等。200 对应成功，404 对应资源不存在，这些大家都知道。但 301 和 302 的区别是什么？为什么 SEO 关心状态码？限流为什么用 429？本指南逐一解答，并附上在实际应用中的代码示例。

### 1xx 信息响应（100-199）：客户端与服务器的握手

1xx 很少在日常应用中见到，浏览器和服务器通常会自动处理，开发者几乎无须关心。这些状态码主要用于长连接和协议切换场景。

**常见的几个**：
- **100 Continue**：客户端发送大请求前问「我能发吗？」，服务器回应「可以」继续发送请求体。常见于上传大文件时的 Expect: 100-continue 头。
- **101 Switching Protocols**：切换协议，最常见的是 HTTP 升级为 WebSocket（HTTP GET 请求 + Upgrade header）。
- **102 Processing（WebDAV）**：服务器还在处理，别断开连接。现代 API 已被 202 Accepted 取代。
- **103 Early Hints（实验性）**：允许服务器在最终响应前发送 Link header 预加载资源。

**实际开发中**：你几乎不用手动返回 1xx，框架自动处理。Nginx、Express 等中间件默认管理这些状态。除非你在写底层 HTTP 服务器或 WebSocket 库，否则不用深入理解细节。

### 2xx 成功响应（200-299）：请求处理成功

客户端请求成功处理，服务器返回数据或确认操作完成。不同的 2xx 码细分了成功的具体情况。

**最常用的**：
- **200 OK**：请求成功，返回完整响应体（HTML、JSON 等）。这是 90% 的请求的正常响应。用于 GET（查询数据）、PUT（更新数据）、PATCH（部分更新）。
- **201 Created**：资源创建成功（通常用 POST 返回），Location header 包含新资源的 URL。例如 `POST /users` 返回 201，Location header 为 `/users/123`，客户端可以通过这个 URL 查询新建的资源。
- **202 Accepted**：请求已接受但还未完成（异步操作），返回 task_id 或 polling_url。例如视频转码服务：POST 返回 202，响应体包含 `{"task_id": "abc123"}` 和一个状态查询地址。
- **204 No Content**：请求成功但没有内容返回，常用于 DELETE 操作或 PUT 更新无需回传数据。特别是删除用户后，你不需要再看一遍用户信息。
- **205 Reset Content**：要求客户端重置表单（HTML form），现代 API 极少用。这是个遗留状态码。
- **206 Partial Content**：分块传输，客户端用 Range header 请求部分资源（视频拖拽进度条就是这个）。响应包含 Content-Range header 标明返回的字节范围。

**API 设计建议**：POST 创建资源用 201（更明确）；DELETE 成功用 204（没有内容返回）；GET 和 PUT 通常 200；异步操作用 202。这样客户端能准确识别操作的结果类型。

### 3xx 重定向（300-399）：SEO 的生死攸关

资源地址改变或需要进一步操作，客户端按 Location header 重新请求新地址。这是最容易搞混、也最容易影响 SEO 的一类状态码。

**最关键的几个**（对 SEO 影响巨大）：

**301 Moved Permanently（永久重定向）**：
- 浏览器和搜索引擎都会更新书签和索引，下次直接访问新地址
- 用途：域名迁移（old-domain.com → new-domain.com）、URL 结构调整（/product?id=1 → /products/1）
- SEO：旧页面的权重、关键词排名、外链价值全转到新地址，SEO 无损失
- HTTP 方法：规范中 GET 保持 GET，POST 变 GET（但很多浏览器和库不遵守）
- 缓存：浏览器会缓存 301 重定向，再次访问旧地址会直接跳转，不会再问服务器

**302 Found（临时重定向）**：
- 告诉搜索引擎这是临时的，保留旧地址的索引和权重，不转移到新地址
- 用途：网站维护（临时关闭，维护后恢复到原地址）、A/B 测试（某些用户重定向到测试页面）
- SEO：搜索引擎继续爬旧地址，不转移权重。适合那些不想改变 SEO 排名的重定向
- HTTP 方法：规范说保持原方法，但实现不同，浏览器通常变 GET

**307 Temporary Redirect**：
- 含义与 302 相同，但 HTTP 方法严格保持。POST → POST，GET → GET
- 用途：比 302 更严格和可预测，常用于 REST API。如果 POST 到一个临时地址，307 保证重定向后仍是 POST，不会意外变成 GET

**308 Permanent Redirect**：
- 含义与 301 相同，但 HTTP 方法严格保持。POST → POST
- 用途：API 端点迁移。从 `/api/v1/users` 迁移到 `/api/v2/users`，用 308 保证 POST 请求仍为 POST

**303 See Other**：
- 用新 URL 的 GET 方法查询结果（常见于 POST-Redirect-GET 模式）
- 例如：用户 POST 表单提交数据，服务器处理后用 303 重定向到结果页面（GET 方法）

**实际建议清单**：
- 网站永久改版或域名迁移：用 301
- 临时下线维护：用 302 或 307
- API 端点永久迁移：用 308
- POST 表单提交后显示结果：用 303
- 一般 API 临时重定向：用 307（更可预测）

### 4xx 客户端错误（400-499）：请求不当或无权限

请求有问题，服务器无法或拒绝处理。这类错误通常要求客户端修正请求。

**常见的**：
- **400 Bad Request**：请求格式错误（JSON 语法错、缺必填字段、Content-Type 错误）。用于无法解析的请求。
- **401 Unauthorized**：未认证，需提供有效身份（如 API token、用户名密码）。客户端还没登录或 token 过期。与 403 的区别：401 说你没登录；403 说你登录了但没权限。
- **403 Forbidden**：已认证但无权限访问（如普通用户访问管理员后台、学生访问教师专属资源）。返回 403 暗示资源存在，只是你看不到。
- **404 Not Found**：资源不存在（拼错 URL、删除的页面、不存在的 ID）。这是最常见的错误。
- **405 Method Not Allowed**：HTTP 方法不支持（如对 /api/users POST 用了 DELETE，而服务器端点没定义 DELETE）。应包含 Allow header 列举支持的方法。
- **409 Conflict**：请求冲突（如创建用户但邮箱已存在、并发修改同一资源导致版本冲突）。常见于 PUT 操作当资源被别人修改过。
- **410 Gone**：资源已被永久删除，不同于 404（也许以后会恢复）。
- **422 Unprocessable Entity**：请求格式合法但业务逻辑不通（如年龄输入 -5、日期格式错）。与 400 的区别：400 是语法错；422 是内容语义不合理。
- **429 Too Many Requests**：限流，请求过于频繁。详见下面专章。
- **451 Unavailable For Legal Reasons**：资源因法律原因不可用（如版权、政治审查），主要见于国际应用。

**关键的 header**：
- **WWW-Authenticate**（401）：告诉客户端怎么认证。例如 `WWW-Authenticate: Bearer realm="api"`
- **Retry-After**（429、503）：告诉客户端多久后重试（单位秒或日期）
- **Allow**（405）：列举支持的 HTTP 方法。例如 `Allow: GET, POST, PUT`

### HTTP 429 限流详解与实现

当 API 调用频率过高，服务器返回 429 拒绝请求，防止滥用和 DDoS 攻击。这是现代 API 的必需功能。

**常见限流策略**：

**1. 令牌桶（Token Bucket）**：
- 原理：固定速率放入令牌（如每秒 100 个），每次请求消耗 1 个令牌。桶满时丢弃新令牌，请求无令牌时返回 429
- 优点：允许突发流量（如果桶里有多个令牌，一次可以处理多个请求）
- 适用：API 限流、图片/视频服务的上传限流

**2. 滑动时间窗（Sliding Window）**：
- 原理：记录过去 1 分钟内的请求数，超过阈值（如 1000 次）返回 429。移除时间窗外的请求记录
- 优点：公平精确，没有边界问题
- 适用：按分钟/小时的配额限制

**3. 漏桶（Leaky Bucket）**：
- 原理：请求进桶，以恒定速率漏出并处理。桶满时拒绝新请求（429）
- 优点：速率恒定，避免突发
- 适用：数据库连接池、队列处理

**返回示例**（Node.js + Express）：
```
router.get('/api/data', rateLimitMiddleware, (req, res) => {
  if (req.rateLimitExceeded) {
    res.status(429);
    res.set('Retry-After', '60');
    res.json({ error: 'Too Many Requests', message: 'Please wait 60 seconds' });
    return;
  }
  res.json({ data: '...' });
});
```

**在 Nginx 中的配置**：
```
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
server {
  location /api/ {
    limit_req zone=api burst=20 nodelay;
  }
}
```

这表示每秒 10 个请求，允许 20 个请求的突发。超出时返回 429。

**应用场景**：
- 免费 API：每个用户每小时 100 次
- 认证用户：每个用户每小时 1000 次
- 高级用户：无限制
- 公开端点（登录、注册）：每 IP 每分钟 5 次（防暴力攻击）

### 5xx 服务器错误（500-599）与故障排查

服务器内部出错或暂时无法处理请求。这些错误通常需要管理员介入修复。

**常见的**：
- **500 Internal Server Error**：最通用的服务器错（代码 bug、未捕获异常、数据库连接失败、内存不足）。错误原因隐藏，只告诉客户端「我坏了」。
- **501 Not Implemented**：服务器不支持此功能（如接收到 HTTP 方法 TRACE 但没实现）。罕见。
- **502 Bad Gateway**：网关/反向代理（如 Nginx）无法连接到后端应用。常见原因：应用进程挂了、被 OOM killer kill 掉、内存溢出、监听端口错误或网络不通。典型现象：上游服务器无响应。
- **503 Service Unavailable**：服务暂时下线（维护、过载）。应包含 Retry-After header。用户看到「服务维护中，请稍后重试」。
- **504 Gateway Timeout**：网关等待后端响应超时，通常是后端应用响应很慢（数据库慢查询、大文件处理、无限循环）。超过网关的等待时间后返回此错。
- **505 HTTP Version Not Supported**：服务器不支持客户端的 HTTP 版本（如客户端用 HTTP/3 但服务器只支持 HTTP/2）。现代网络中罕见。

**CDN 与 5xx 的交互**：
- Cloudflare 等 CDN 如果检测到源站返回 5xx，会自动回源到备用源或返回缓存版本（如存在）
- 502/503/504 在 CDN 层经常被转为 200（返回缓存 HTML「我们正在维护」），用户感知不到源站故障
- 如果想让 5xx 真实透传到客户端，CDN 配置中需关闭错误页缓存或设置缓存时间为 0

**故障排查流程**：
1. 500：检查应用日志（/var/log/app.log），找到异常堆栈
2. 502：检查后端应用是否运行（ps aux | grep app），查看 Nginx 错误日志（/var/log/nginx/error.log）
3. 503：检查服务是否在维护模式，或应用是否过载（CPU、内存、连接池已满）
4. 504：运行 curl 到应用，看响应时间。如果超过网关超时（通常 30-60s），优化慢查询或增加超时时间

**监控建议**：
- 5xx 需紧急告警（要求秒级响应）
- 502/503/504 通常来自容量不足，需扩容
- 如果某个端点频繁 502/504，是后端应用或数据库的瓶颈信号

### 状态码在浏览器、移动端、CDN 的处理差异

同一状态码在不同客户端（浏览器、iOS App、Android App）和中间件（CDN、Nginx）中的处理可能截然不同。

**301/302 重定向处理**：
- 桌面浏览器（Chrome、Firefox）：自动跟随重定向（用户无感知），一般跟随 5 次后停止
- iOS 原生网络库（NSURLSession）：默认自动跟随
- Android okhttp：默认自动跟随
- curl 命令行：默认不跟随，需 `-L` 参数
- Axios / Fetch：取决于配置，通常可配置是否自动跟随

**401 认证失败处理**：
- 浏览器：如果响应包含 `WWW-Authenticate: Basic` header，会弹出 HTTP Basic Auth 对话框
- iOS：通常不弹对话框，需应用自己处理（跳转登录页、刷新 token）
- Android：同 iOS

**429 限流处理**：
- 浏览器：返回 JSON 错误信息，需 JavaScript 解析并提示用户「请求过于频繁"，或自动延迟重试
- 移动应用：通常按 Retry-After header 延迟重试，或累计计数后提示用户
- curl / 脚本：通常不自动重试，需手动实现重试逻辑

**缓存行为差异**：
- 200：浏览器根据 Cache-Control / Expires header 缓存
- 301：浏览器永久缓存（重启也不失效），除非显式清缓存。这导致有时改了 301 规则但浏览器仍跳转到旧地址
- 302：浏览器通常不缓存，但可以用 Cache-Control 控制
- 404：部分浏览器短期缓存，导致临时删除页面后再恢复时仍显示 404（让人误以为故障）
- 5xx：正常不缓存，但某些 CDN 配置下可能缓存 5 分钟的错误页

**跨域请求的状态码**：
- CORS 预检请求（OPTIONS）返回的状态码决定实际请求是否发送
- 如果 OPTIONS 返回 403，浏览器不会发送后续 GET/POST 请求
- 某些状态码组合（如 401 + 无 Access-Control-Allow-Credentials）会导致跨域失败

### 设计 API 时避免自定义状态码的陷阱

有人想用 600、888 等自定义状态码表达特殊含义，比如 600 表示「登录过期，请重新登录」。强烈不推荐，原因如下：

**标准兼容性问题**：
- HTTP 规范定义的状态码是 100-599
- CDN、反向代理、防火墙都认识这个范围，超出此范围的码会被拦截、转改或忽略
- 浏览器 fetch API 和 axios 等库对非标准码的处理不统一

**客户端库兼容性**：
- 浏览器 fetch：可能将 6xx 视为网络错误
- Postman：显示 6xx 时可能出现警告或奇怪行为
- 手机 App（iOS/Android）：网络库可能直接拒绝或转改状态码

**可维护性差**：
- 非标准码需详细文档说明，新人接手代码时容易理解错
- 版本升级时容易被自动化工具（如 API 网关）重写或丢弃

**最佳实践**：
用标准状态码（如 401 表示认证失败）+ 响应体里的 error_code 字段来细分具体原因。
```
{
  "code": 401,
  "error": "Unauthorized",
  "error_code": "token_expired",
  "message": "Your token expired. Please login again."
}
```

或者：
```
{
  "status": 401,
  "errors": [
    {
      "code": "AUTH_TOKEN_EXPIRED",
      "message": "Your token expired at 2026-04-29 10:30:00",
      "hint": "Try POST /auth/refresh-token"
    }
  ]
}
```

这样既遵循 HTTP 规范，客户端库也能正确处理，响应体还能携带详细信息供客户端进一步处理。

### 常见问题

**Q: 301 和 302 哪个对 SEO 更好？**

301。搜索引擎会把旧页面的权重和关键词排名转移到新地址，SEO 完全无损。302 则保留旧地址的索引，权重不转移。所以网站永久改版、域名迁移必须用 301；临时维护用 302。

**Q: 什么时候用 201 什么时候用 200？**

创建新资源（POST）返回 201 Created，并在 Location header 包含新资源的 URL（如 /users/123）。查询（GET）、更新（PUT/PATCH）、删除（DELETE）返回 200 OK 或 204 No Content。这样客户端能准确识别操作类型。

**Q: 403 和 404 怎么区分？**

403 表示"我知道这个资源，但你没权限访问"；404 表示"我不知道有这个资源"。基于安全考虑，有时也会把 403 伪装成 404 隐藏资源存在（如隐私页面）。

**Q: Retry-After 是什么？**

429 或 503 响应中的 header，告诉客户端多久后重试。值可以是秒数（如 60）或 HTTP 日期（如 "Wed, 21 Oct 2026 07:28:00 GMT"）。客户端应该尊重这个提示延迟重试。

**Q: 502 Bad Gateway 是应用的错还是 Nginx 的错？**

502 是 Nginx 返回的，说明 Nginx 无法连接到后端应用。根本原因在后端：应用进程已挂、内存溢出被 OOM killer kill 掉、监听端口错误或网络不通。需检查应用日志和进程状态。

---

## 浏览器与设备指纹：能查到什么 / 怎么用 / 隐私边界

> 浏览器指纹由 UA、屏幕分辨率、时区、Canvas 指纹等组成。学会用 navigator 对象提取设备信息，理解隐私模式的防护范围，以及金融反欺诈中的常见信号。

URL: https://xtechtools.com/guides/browser-info/
发布：2026-04-29 · 更新：2026-04-29

每个浏览器和设备都有独特的特征组合——屏幕分辨率、字体列表、浏览器版本、时区、语言、甚至 GPU 型号。这些特征可以组合起来生成一个"设备指纹"，用于识别用户（不需要 Cookie 或登录）。金融公司用它风控反欺诈；广告网络用它追踪用户；隐私卫士则视其为威胁。本指南讲清楚浏览器能向网站泄露什么信息、怎么用 JavaScript 获取、如何用隐私模式防护，以及合规边界。

### 浏览器指纹的全面组成与信息泄露

一个设备指纹通常包含以下要素。某些是被动收集（网站能立即看到），某些需主动请求（需要 JavaScript）。

**被动收集（无需用户权限，自动泄露）**：
- **User-Agent（UA）**：浏览器标识字符串，包含浏览器类型、版本、操作系统。例如 `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Chrome/120.0.0.0) Safari/537.36`。从中可以推断出操作系统版本、是否是移动设备、GPU 等。
- **Accept-Language HTTP Header**：接受的语言列表，如 `zh-CN,zh;q=0.9,en;q=0.8`。直接泄露用户的语言偏好和地理位置线索。
- **时区偏移**：JavaScript 获取 `new Date().getTimezoneOffset()`，如 +8:00（北京）或 -5:00（纽约）。精确定位用户所在时区。
- **屏幕分辨率**：`window.screen.width / height`，如 1920×1080。不同设备的分辨率分布明显不同（Mac Retina 通常 2560×1600，廉价安卓手机 720×1280）。
- **颜色深度**：`window.screen.colorDepth`，如 24 bit 或 32 bit。某些特殊设备（如某些医疗设备）用 16 bit。
- **设备像素比**：`window.devicePixelRatio`，如 2.0（Retina/高清屏）或 1.0（普通屏）。iPhone 通常 2-3，高端安卓 2-3，廉价设备 1-1.5。
- **时间精度细节**：`Performance.now()` 能精确到微秒。浏览器的时钟精度和 JavaScript 引擎特征透露 CPU 型号。
- **HTTP Accept Header**：浏览器支持的内容类型，如 `text/html,application/xhtml+xml,...`。不同浏览器列表顺序不同。

**需主动请求的信息**：
- **Canvas 指纹**：在 canvas 上绘制文本或图形，不同 GPU/OS 的渲染结果（抗锯齿算法、色彩准确度、字体渲染）有微妙差异，形成唯一签名。两个相同配置的设备也可能产生略有不同的 Canvas。
- **WebGL 指纹**：查询 WebGL 支持的扩展、着色器精度、最大纹理大小等。GPU 型号直接影响这些参数。Intel HD Graphics 和 NVIDIA GTX 返回的值完全不同。
- **字体列表**（需插件扩展检测）：系统已安装的字体集。例如设计师电脑的字体集（可能有 500+ 字体）与普通用户（可能只有 30 个系统字体）完全不同。
- **插件列表**（现代浏览器已不支持）：Flash、Java applet 等。早期常用于指纹识别，现已被禁用。
- **IP 地址**：服务器日志直接看到，虽不算"指纹"但同样有识别价值。每次拨号 IP 可能变化，但办公室固定 IP 几年不变。
- **请求头顺序**：不同浏览器发送 HTTP header 的顺序不同。Chrome 通常是 Host, Connection, Upgrade, ...; Firefox 顺序略有不同。
- **TLS 指纹**：HTTPS 握手时的密码套件顺序。JA3 库能识别浏览器类型。

**指纹稳定性**：
- 永久不变：UA、屏幕分辨率、Canvas/WebGL 指纹
- 临时变化：时区（出国旅游时变化）、语言（改浏览器设置后变化）
- 完全随机：网络延迟、带宽（每次不同）

### navigator 对象与 JavaScript 获取设备信息

JavaScript 的 navigator 对象提供浏览器和设备信息，是收集指纹的关键 API。以下是常用属性和完整示例：

**基础信息**：
```
navigator.userAgent              // "Mozilla/5.0..."
navigator.language              // "zh-CN"
navigator.languages             // ["zh-CN", "zh", "en"]
navigator.platform              // "Win32" / "MacIntel" / "Linux x86_64"
navigator.hardwareConcurrency   // 逻辑 CPU 核心数，如 8
navigator.deviceMemory          // RAM 大小（GB），如 8（需权限）
navigator.maxTouchPoints        // 触屏点数，0 = 非触屏设备
```

**网络与地理信息**：
```
navigator.onLine                // true / false，是否在线
navigator.connection.downlink   // 下行带宽（Mbps），如 10.5
navigator.connection.rtt        // 网络延迟（毫秒），如 50
navigator.connection.effectiveType // "4g", "3g", "2g"
```

**权限管理**（需用户授权）：
```
navigator.permissions.query({ name: "geolocation" })
  .then(result => console.log(result.state)) // "prompt" / "granted" / "denied"

navigator.permissions.query({ name: "camera" })
  .then(result => console.log(result.state))
```

**Canvas 指纹实现**（简化版）：
```
function getCanvasFingerprint() {
  const canvas = document.createElement("canvas");
  const ctx = canvas.getContext("2d");
  ctx.textBaseline = "top";
  ctx.font = "14px Arial";
  ctx.textAlign = "left";
  ctx.fillStyle = "#f60";
  ctx.fillRect(125, 1, 62, 20);
  ctx.fillStyle = "#069";
  ctx.fillText("Browser Fingerprint Test 🚀", 2, 15);
  ctx.fillStyle = "rgba(102, 204, 0, 0.7)";
  ctx.fillText("Browser Fingerprint Test 🚀", 4, 17);
  return canvas.toDataURL(); // 返回 Base64 PNG
}
```

**WebGL 指纹实现**（简化版）：
```
function getWebGLFingerprint() {
  const canvas = document.createElement("canvas");
  const gl = canvas.getContext("webgl") || canvas.getContext("experimental-webgl");
  if (!gl) return "Not Supported";
  const debugInfo = gl.getExtension("WEBGL_debug_renderer_info");
  const vendor = gl.getParameter(debugInfo.UNMASKED_VENDOR_WEBGL);
  const renderer = gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL);
  return vendor + ":" + renderer; // 如 "Google Inc.:ANGLE (Intel HD Graphics 630)"
}
```

**完整指纹生成**（hash 多维度）：
```
const fingerprint = {
  ua: navigator.userAgent,
  lang: navigator.language,
  tz: new Date().getTimezoneOffset(),
  screen: window.screen.width + "x" + window.screen.height,
  dpr: window.devicePixelRatio,
  canvas: getCanvasFingerprint(),
  webgl: getWebGLFingerprint()
};
// 对 JSON.stringify(fingerprint) 做 SHA256，得到唯一 hash
```

结合这些维度，指纹唯一性几乎 100%。

### IP 地址与用户身份的复杂关系

网站能从 HTTP 请求的源 IP 推断用户地理位置和身份。但 IP 与用户的对应关系并不是一对一的，这使得基于 IP 的追踪有局限性。

**IP 来源的多样性**：
- **家庭 ISP（运营商分配）**：相对稳定（数周至数月不变）。ISP 会在定期重启路由器时重新分配 IP，但通常在固定的 IP 池内。可以用 whois 查询 ISP。
- **手机移动网络（4G/5G）**：经常变化。用户越狱下飞机、换到另一个城市、从 WiFi 切换到 4G，IP 都会变。
- **办公室固定 IP**：稳定（多年不变），但被多人共享。同一 IP 可能是 100 个员工。
- **VPN / 代理**：IP 完全虚假，隐藏真实地址。企业 VPN 让所有员工看起来都来自总部 IP。
- **企业内网（NAT）**：多人共享同一公网 IP。同一 IP 来自 1000 个不同用户。
- **数据中心机房**：云服务器共享 IP 段。多个不同客户的虚拟机来自相邻 IP。

**反向地理定位的准确性**：
- MaxMind GeoIP 数据库（使用最广泛）：IP 定位精度在城市级 70-80%，省级 95%+
- ISP 级数据库准确度更低，尤其对于移动运营商
- VPN 或代理会导致完全错误的定位

**与浏览器指纹的配合**：
- IP 单独使用准确性低（一个 IP 可能代表多人，一个用户可能有多个 IP）
- IP + 浏览器指纹能大大提高识别准确度。例如支付宝的风控：同一 IP 出现 3 个完全不同的浏览器指纹（Canvas、WebGL、UA）→ 可能是 IP 被盗、被黑客登录
- IP 变化（从北京突然到深圳）+ 指纹相同 = 用户出差或旅游
- IP 不变 + 指纹完全改变 = 可能是黑客劫持账户

### Cookie 与 LocalStorage：追踪的两条路线

两者都能在浏览器本地存储用户信息，但工作机制和追踪方式完全不同。理解区别对隐私和安全至关重要。

**Cookie 的机制**：
- 由服务器通过 Set-Cookie HTTP header 写入
- 每次 HTTP 请求自动包含在 Cookie header 中（除了跨域限制）
- 可设置过期时间（Session Cookie 浏览器关闭即删；Persistent Cookie 有过期时间）
- 受 HttpOnly 标志保护可防止 JavaScript 访问（提高安全性）
- 受 Secure 标志限制仅 HTTPS 传输
- 子域名共享：example.com 的 Cookie 在 api.example.com 也能访问
- 第三方 Cookie：广告商 ads.com 在用户访问 news.com 时放的 Cookie，可以追踪用户在多个网站的行为

**LocalStorage 的机制**：
- 由 JavaScript 显式写入（localStorage.setItem(key, value)）
- 不自动发送到服务器，需主动读取并包含在请求中（如 headers 或 body）
- 永久存储（直到显式删除或浏览器清缓存）
- 无 HttpOnly、Secure 等安全标志
- 容量更大（通常 5-10MB vs Cookie 的 4KB 限制，当然单个 Cookie 的限制更小）
- 同源策略更严格（不同子域的 localStorage 完全隔离）

**追踪角度的对比**：
- Cookie 更容易被追踪（HTTP 自动发送），跨域追踪相对容易（通过第三方 Cookie）
- LocalStorage 隐蔽性更强（需要网站 JavaScript 主动读取），跨域隔离更严格（无法跨域访问）
- 现代隐私浏览器（如 Firefox）默认分离第三方 Cookie（同一用户在不同网站看起来是不同用户）
- Safari 更激进，直接禁用第三方 Cookie，只允许同站 Cookie

**Session vs Persistent Cookie**：
- Session Cookie：浏览器关闭就删除（无过期时间），用于登录状态、临时会话
- Persistent Cookie：有过期时间（如 30 天），即使关闭浏览器也保留，下次打开自动恢复
- 持久 Cookie 的生命周期可达数年，是被网站追踪的主要手段

**现实场景**：
- Google Analytics 用 _ga Cookie 追踪你在 1000+ 网站的行为（都通过 Google Analytics 脚本）
- Facebook Pixel 用第三方 Cookie 追踪非 Facebook 网站上的用户
- 电商网站用 LocalStorage 存储购物车，这样清 Cookie 也不会丢失购物车（提高用户体验）

### 隐私模式（无痕浏览）的真实防护范围

隐私模式（Chrome 无痕式、Safari 私密浏览、Firefox 私密窗口）常被误解为"隐身斗篷"，实际上防护范围很有限。

**隐私模式的作用**（本地隐私）：
- 浏览历史、下载记录不保存
- Cookie 和 LocalStorage 在窗口关闭时自动清空
- 自动填充数据（密码、地址）不记录
- 搜索历史不保存

**隐私模式无法挡住**（网络层追踪）：
- **User-Agent**：照常发送，网站立即知道你用 Chrome 120
- **屏幕分辨率、时区、语言**：照常发送
- **Canvas / WebGL 指纹**：照常生成，唯一性不变
- **IP 地址**：ISP 和网站服务器照样看到，知道你来自哪个城市
- **登录账号**：如果你主动登录 Google/Facebook，他们照样知道你是你，隐私模式不改变这一点
- **第三方追踪器**：Google Analytics、Facebook Pixel 照样追踪（只要网站嵌入了脚本）

**实际场景**：
用隐私模式看了几个关于"肾脏疾病"的医学论文网站，关闭窗口后本地浏览器历史里没有记录。但如果：
1. 你登录了 Google 账号 → Google 知道你看过什么
2. 这些网站用 Google Analytics → Google 知道你看过什么
3. 网站在 Facebook 上投放了广告 → Facebook 知道你访问过医学网站

所以"无痕"只是对家人隐藏，对网站和运营商毫无用处。

**真正的隐私方案**：
- **使用 VPN / Tor**：隐藏 IP，让网站看不到真实地址（但 VPN 提供商能看到）
- **用浏览器指纹阻止工具**：如 uBlock Origin 的 Canvas 指纹保护、Privacy Badger
- **禁用第三方 Cookie**：浏览器设置或 Privacy Badger 插件
- **定期清空 Cookie**：或设置自动清除（浏览器设置）
- **用不同的用户名 / 邮箱注册不同服务**：隔离身份，让网站无法关联你的多个账户
- **使用隐私搜索引擎**：DuckDuckGo、Startpage 不追踪搜索历史

**重要提示**：不存在"完全无痕"。隐私模式只是清了本地痕迹，网络层的追踪无法阻止。只有 VPN + 工具组合才能显著降低被追踪的风险。

### 金融反欺诈中的风控信号与实战应用

银行和支付宝等金融公司用浏览器指纹和设备信息来检测欺诈。理解这些信号有助于理解为什么出差时转账需要二次验证。

**常见的风控信号**（评分制，单个信号权重不同）：

1. **新设备登录**：同一账号，突然出现新的浏览器指纹（Canvas/WebGL/UA 都不同）。权重高。
2. **地理位置异常**：IP 显示在深圳，但 5 分钟后突然在北京（物理上不可能，说明被盗号或 VPN）。权重非常高，通常直接拒绝交易。
3. **时间异常**：账号在凌晨 3 点忽然活跃（常人睡觉时间），且 IP 或设备不同。权重中等。
4. **批量异常**：同一 IP 短时间内创建多个账号，或登录多个账号（可能是黑客扫号）。权重高。
5. **网络环境异常**：从家庭宽带（稳定 IP）突然换成移动 4G（经常变 IP），再换成企业网络（又是另一个 IP）。权重中等。
6. **设备环境异常**：Screen.devicePixelRatio 从 2.0（正常 iPhone）变成 1.0（可能是模拟器或被篡改），或 Canvas 指纹从未见过。权重高。
7. **时区和语言冲突**：IP 在深圳（+8 时区），但浏览器时区设置为 UTC-5（美国）且语言是英文，Canvas 指纹显示这是一个 Windows 系统。不匹配，可疑。
8. **浏览器太新或太旧**：UA 显示安装日期为 2 周前（刚下的浏览器，可能是黑客用来绕过风控），或 User-Agent 是 2016 年的过时版本。权重中等。
9. **登录失败多次**：同一 IP 或设备尝试登录 5 次以上失败（暴力破解）。权重高，通常锁定账户。
10. **支付金额异常**：历史平均单笔 500 块，今天突然转账 50000。权重中等，可能要求输入动态码。
11. **收款方异常**：首次转账给新联系人，或转账给境外账户。权重中等。
12. **账户关联异常**：多个账户共享相同 Canvas 指纹、IP 段但绑定不同身份。权重非常高。

**风控评分模型**：各因素加权求和（权重算法保密）。超过阈值就要求二次认证（短信验证码、人脸识别、安全问题）或直接拒绝交易。

**对用户的实际影响**：
- 旅游出国（IP 突然变化）→ 触发二次验证
- 换手机（设备指纹完全改变）→ 需要刷身份证或人脸识别
- 家里网络故障，用手机热点（IP 和网络环境同时变化）→ 可能被拒绝交易
- 公司 VPN 登录（IP 变化）→ 需要二次验证

这些都是"假阳性"（正常用户被误判），但为了防欺诈不得不接受这种干扰。

### GDPR、PIPL 与隐私合规的现实困境

欧盟 GDPR（通用数据保护条例）和中国 PIPL（个人信息保护法）都严格限制用浏览器指纹识别用户。企业面临合规与风控的两难。

**GDPR 的要求**（欧盟及访问欧盟用户的网站必须遵守）：
- 收集设备指纹属于"个人数据处理"，需明确的用户同意（Consent）。不能默认收集。
- 必须提供 Opt-Out 选项（cookie banner），用户有权拒绝非必要追踪
- 用户有权查看被收集的数据、删除数据、数据可移植性（要求网站提供导出）
- 违规罚款可达全球年收入 4% 或 2000 万欧元，哪个更大。例如 Amazon 因数据处理违规被罚 7.46 亿欧元
- 数据保护官（DPO）职位是强制的，大公司必须配备

**PIPL 的要求**（中国及收集中国用户数据的网站）：
- 须"明确、具体地"告知用户收集何种信息、用于何种目的（条款中要列出 Canvas 指纹、WebGL 等具体项目）
- 用户信息与个人身份的关联一经知晓，就属于"个人信息"（"个人信息"定义宽泛）
- 收集敏感个人信息（如生物识别、指纹数据）需获得单独同意
- 用户有权删除个人信息（但与风控需求冲突：删除后黑客指纹记录也删了，无法追踪）
- 违规罚款最高 1000 万元或 5% 年收入
- 跨国传输数据需额外审批（"出国数据"管制）

**实际影响**：
- 欧美网站一打开就弹 cookie banner（"我们用 Cookie 追踪你，同意吗？"），拒绝后网站功能受限
- 中文网站需在隐私政策里详细列举收集的设备信息用途（如风控、反欺诈、用户分析）
- 不能默认收集 Canvas/WebGL 指纹，需要用户主动同意
- 用户有权要求删除指纹数据，但删除后网站无法识别黑客

**现实困境**：
金融反欺诈需要高度的用户追踪和识别（收集尽可能多的指纹维度）；隐私法律不允许大规模无感知追踪（必须告知和同意）。折中方案是：
1. 明确披露追踪政策，获得用户同意
2. 给用户一个隐私控制面板，允许关闭某些追踪
3. 风控失败时允许用户申诉和恢复
4. 对正常用户减少打扰（提高阈值）
5. 为隐私卫士提供选项（如禁用指纹识别），接受更多风险

**展望**：隐私法律会越来越严格，企业最终会转向基于显式登录的身份验证（减少被动识别）。

### 浏览器厂商与网站的军备竞赛

浏览器厂商（Chrome、Safari、Firefox）在逐步提升隐私保护，限制网站的追踪能力。与此同时，网站为了反欺诈和广告投放，在寻找新的追踪手段。这是一场不对等的军备竞赛。

**浏览器的防护措施**（保护用户）：
- **Chrome**：即将弃用 Third-Party Cookie（已推迟多次，原定 2026 中期）。转向 Privacy Sandbox 新 API（Federated Learning of Cohorts, Topics API）。
- **Safari**：已全面禁用 Third-Party Cookie（2024 年）。对 Canvas/WebGL 指纹加入随机噪声。
- **Firefox**：默认分离 Third-Party Cookie（不同网站的 Cookie 隔离）。对 Canvas 绘制加入噪声。
- **所有浏览器**：对 Canvas/WebGL 指纹有不同程度的混淆（如加入随机噪声，使指纹变化）
- **Chrome 隐私沙箱**：用聚合数据替代个人追踪（"联邦学习"）

**网站的绕过手段**（对抗防护）：
- **First-Party Cookie**：用自己域名的 Cookie 替代第三方 Cookie。Google Analytics 4 已迁移到 First-Party。
- **Server-Side Fingerprinting**：把指纹计算移到服务器（从 IP、HTTP header 顺序等推测身份）。TLS 指纹（JA3）可以识别浏览器类型，不需要 JavaScript。
- **更复杂的 Canvas 指纹**：修改绘制方式、使用隐形文本，让浏览器的噪声混淆失效。
- **跨域追踪**：通过 localStorage、IndexedDB、Service Worker 等浏览器存储跨域存储追踪令牌。
- **网络协议层追踪**：CNAME Cloaking（使用别名指向第三方服务），使浏览器认为是同站请求。

**未来趋势**：
- 指纹识别会越来越难（浏览器加噪声、混淆），准确率下降
- First-Party Cookie 和 Server-Side Fingerprinting 会成为主流（基于登录和网络信息）
- 身份验证会更依赖显式登录（减少被动识别），付费应用会要求账户注册
- 付费用户会获得更少的追踪干扰（如 Premium YouTube 无广告，Netflix 无追踪）
- 隐私和便利会变成付费功能（"Privacy as a Premium Feature"）

**对用户的建议**：无法完全避免追踪，但可以显著减少痕迹：
1. 用 uBlock Origin 或 Privacy Badger 阻止第三方 Cookie 和脚本
2. 定期清 Cookie（浏览器设置或定时脚本）
3. 用不同浏览器访问不同网站（隔离指纹）
4. 登陆账号时用复杂密码和二次认证
5. 定期检查隐私政策和数据权限

### 常见问题

**Q: Canvas 指纹一定是唯一的吗？**

几乎唯一，但不是绝对的。相同 OS、GPU、浏览器版本的设备可能生成相同 Canvas 指纹。但结合 WebGL、屏幕分辨率、UA 等 10+ 维度后，唯一性达 99.9%+。百万设备中重复概率 < 0.01%。

**Q: 用 VPN 能完全隐藏浏览器指纹吗？**

不能。VPN 只隐藏 IP；Canvas 指纹、屏幕分辨率、UA、时区照常发送。需要同时用浏览器指纹阻止工具（如 uBlock Origin）和 VPN 才能有效降低被追踪风险。

**Q: GDPR 下网站怎样合法追踪用户？**

需要显式的用户同意（cookie banner，明确告知会收集什么）。用户拒绝后必须停止非必要追踪，但可以继续使用必要的 Cookie（如登录 token、安全 token）。用户可以随时撤回同意。

**Q: 我的浏览器指纹被盗了怎么办？**

指纹本身是统计特征，无法"被盗"。但网站可能记录了你的指纹 + IP 组合。换浏览器、更新系统、清浏览器缓存、改系统时区，都会改变指纹，降低被识别的风险。黑客无法伪造你的指纹。

**Q: 支付宝查到我用了 VPN 吗？**

支付宝看不到 VPN 本身，但能看到 IP 突然变化（国内 → 国外 → 国内）、时区异常（IP 在深圳但时区是美国）、Canvas 指纹和浏览器 UA 不匹配等信号，可能会触发风控要求二次验证。

---

## 单位换算完全指南：长度 / 重量 / 温度 / 数据 大小常用对照

> 从国际 SI 基本单位到日常生活的米 / 英尺 / 磅 / 摄氏度 / 字节，本指南涵盖 10+ 个换算场景与国际标准，包括中文地区单位差异与容易踩的坑。

URL: https://xtechtools.com/guides/unit/
发布：2026-04-29 · 更新：2026-04-29

人类历史上曾有上千种度量单位，直到 1960 年国际单位制（SI）统一后才逐渐收敛到 7 个基本单位。但在全球化的今天，工程师、医生、厨师仍需在米与英尺、公斤与磅、摄氏与华氏之间频繁切换交互。更复杂的是数据存储单位的二进制（KiB）与十进制（KB）之争，让硬盘容量永远与标称不符，中文地区还有斤、克拉等特殊单位。本指南从 SI 的基本单位出发，讲清楚跨制对照、换算公式、常见陷阱与国际标准的核心应用场景。

### 长度单位：米、英尺、码、英寸的跨制对照

**公制长度**：毫米（mm） → 厘米（cm） → 米（m） → 千米（km）
- 1 cm = 10 mm
- 1 m = 100 cm
- 1 km = 1000 m

**英制长度**：英寸（inch）→ 英尺（foot）→ 码（yard）→ 英里（mile）
- 1 英尺 = 12 英寸
- 1 码 = 3 英尺
- 1 英里 = 1760 码

**跨制关键换算**：
- 1 英寸 = 2.54 cm
- 1 英尺 = 30.48 cm
- 1 码 = 0.9144 m
- 1 英里 ≈ 1.609 km

**实际应用**：170 cm 身高 ≈ 5 英尺 7 英寸（欧美常说身高用"5'7\""）。27 英寸屏幕（对角线）≈ 68.6 cm，但宽度要除以比例（16:9 约 61 cm）。国际航空使用英尺（5000 ft）和海里（nautical mile）。

### 重量单位：公斤、磅、盎司、吨与中文地区的陷阱

**公制重量**：毫克（mg） → 克（g） → 千克（kg） → 吨（t）
- 1 g = 1000 mg
- 1 kg = 1000 g
- 1 吨 = 1000 kg

**英制重量**：磅（lb） → 盎司（oz）
- 常衡磅：1 lb = 453.592 g（最常见）
- 金衡磅：1 lb = 373.242 g（贵金属）
- 1 lb = 16 oz

**跨制换算**：1 kg ≈ 2.205 lb；1 lb ≈ 453.6 g；1 oz ≈ 28.35 g

**中文地区陷阱**：大陆"斤" = 500 g；香港"斤" ≈ 604.79 g；台湾"台斤" = 600 g。大陆超市"半斤"是 250 g，台湾"一台斤"是 600 g，两地概念完全不同。国际贸易务必标注「千克」避免误会。珍珠、贵金属用克拉（carat）= 200 mg，不是克（gram）。

### 温度换算：摄氏、华氏、开尔文的公式与实际应用

**转换公式**：
- 摄氏→华氏：F = C × 9/5 + 32
- 华氏→摄氏：C = (F − 32) × 5/9
- 摄氏→开尔文：K = C + 273.15

**常见温度对照**：
- 水的冰点：0°C = 32°F = 273.15 K
- 人体正常：37°C ≈ 98.6°F = 310.15 K
- 水的沸点：100°C = 212°F = 373.15 K
- 绝对零度：−273.15°C = −459.67°F = 0 K

**快速心算**：摄氏和华氏在 −40 时相等。天气预报 20°C ≈ 68°F。烹饪 200°C ≈ 392°F。医学中 36°C 以下（低体温）或 38°C 以上（发热）需关注。物理实验用开尔文（绝对温度），液氮 −196°C = 77 K。

### 数据存储单位：KiB vs KB 的本质差别与硬盘容量缩水

**十进制（SI 标准）**：每级 × 1000
- 1 KB = 1000 B
- 1 MB = 10⁶ B
- 1 GB = 10⁹ B
- 1 TB = 10¹² B

**二进制（IEC 标准）**：每级 × 1024
- 1 KiB = 1024 B
- 1 MiB = 2²⁰ B
- 1 GiB = 2³⁰ B
- 1 TiB = 2⁴⁰ B

**为什么硬盘容量"缩水"？**：厂商标注 1 TB 硬盘用十进制（1 TB = 10¹² B），操作系统用二进制显示（10¹² ÷ 1024³ ≈ 0.909 TiB）。你买的 1 TB 硬盘实际显示 909 GB，不是奸商，而是单位标准不统一。记住：1 GiB ≈ 1.074 GB；1 GB ≈ 0.931 GiB。手机厂商用 GB（夸大），系统用 GiB（实际）。

### 烹饪场景：杯、汤勺、茶匙的国际标准与地区差异

**美国标准**（最常见食谱）：
- 1 cup = 237 ml ≈ 240 ml（c）
- 1 汤勺（tbsp） = 14.787 ml ≈ 15 ml
- 1 茶匙（tsp） = 4.929 ml ≈ 5 ml

**英国标准**（略有不同）：
- 1 cup = 284 ml
- 1 汤勺 = 17.76 ml
- 1 茶匙 = 5.92 ml

**日本标准**（食谱常见，与美制不同）：
- 1 杯 = 200 ml
- 1 汤勺 = 15 ml
- 1 茶匙 = 5 ml

**陷阱**："1 cup 黄油"按重量是 225 g，但按体积不同标准会差 10-20 g，烘焙结果大不同。国际食谱转载时务必确认国家标准，最安全的做法是转换成克（g）。日本传统的"合"（180 ml）与欧美 cup 完全不同。

### 日本米的"碗"（合）与欧美杯的陷阱、中文单位回顾

日本烹饪用"合"（gō）作米杯单位：
- 1 合 = 180 ml（官方标准，1950 年定义）
- 1 升 = 10 合

这与欧美的 1 cup = 240 ml（美）或 284 ml（英）完全不同。一份米饭食谱说"2 杯米"，日本人按 2 合 = 360 ml，美国人按 2 cup = 480 ml，最后米饭多少差很多。日本传统还有"才勺"：大さじ（大勺） = 15 ml，小さじ（小勺） = 5 ml，与美制 tbsp、tsp 刚好相同。但当日本食谱说"杯"时用 180 ml 的合，不要用欧美 cup 转换。国际 SI 基本单位中，长度米、质量千克、温度开尔文是基础，其他单位都由这三者导出。

### SI 国际单位制的 7 个基本单位与导出关系

**国际单位制（SI）的基础**：所有其他单位都由这 7 个基本单位导出。

1. **长度**：米（m）
2. **质量**：千克（kg）
3. **时间**：秒（s）
4. **电流**：安培（A）
5. **温度**：开尔文（K）
6. **物质的量**：摩尔（mol）
7. **光强**：坎德拉（cd）

除了温度用开尔文外，其他 6 个是每个国家教科书和法律的基础。我们常用的摄氏度（°C）是开尔文的衍生单位：T(°C) = T(K) − 273.15。导出单位例如：力（牛顿） = kg·m·s⁻²；能量（焦耳） = kg·m²·s⁻²；压强（帕斯卡） = kg·m⁻¹·s⁻²。1960 年 SI 正式统一，现有 193 个国家采纳（美国、利比里亚、缅甸例外）。本工具覆盖日常生活的所有常见单位换算。

### 常见问题

**Q: 为什么美国不用公制？**

历史原因。美国独立战争时欧洲正推行公制，美国选了英制。1790 年法国提议十进制，美国没参与。今天美国科学和医学界实际用公制，仅日常生活和工业沿用英制。

**Q: 温度多少时摄氏和华氏相同？**

−40°C = −40°F。这是唯一相同的整数点，数学上满足公式 C = (C × 9/5) + 32。

**Q: 1 GB 和 1 GiB 差多少？**

1 GB = 10⁹ B，1 GiB = 2³⁰ B = 1,073,741,824 B。差异约 7.4%，对容量敏感的备份工作要区分清楚。

**Q: 克（g）vs 克拉（carat）怎么区别？**

克（g）是质量单位，珠宝用克拉（carat，字母 ct） = 200 mg。食谱里的"克"是 gram，贵金属里的"克拉"是宝石重量，两者完全不同。

**Q: 长度单位中为什么没有"寸"？**

中国的"寸"约 3.33 cm（1 尺 = 10 寸），在现代生活中几乎不用。仅在中医、古籍、传统工艺里保留。建筑用米，日常也用米，国际通用。

**Q: 数据单位里还有 PB / EB 吗？**

有。1 PB（拍字节） = 1000 TB = 10¹⁵ B，1 EB（艾字节） = 1000 PB = 10¹⁸ B。全球数据存储在向 EB 级迈进，目前主要在云计算公司的大数据统计里出现。

---

## 年龄计算与生命统计：精确算法与文化差异

> 从周岁 vs 虚岁到闰年生日处理、社保缴费年限、精算意义，本指南讲清楚年龄计算在中文世界里的全部复杂性。

URL: https://xtechtools.com/guides/age/
发布：2026-04-29 · 更新：2026-04-29

"我多大了？"这个看似简单的问题，在不同文化里有完全不同的答案。中国人说"虚岁"（出生即 1 岁，过年加一岁），大多数国家说"周岁"（精确到几岁几个月）。日本曾经使用虚岁，现在也改周岁了。更复杂的是闰年 2 月 29 日生日的人怎么过生日、社保缴费年限为什么必须精确到月、医学里骨龄和心理年龄怎么科学计算与应用。本指南从各地的算法和法律规定入手，讲清楚每种计算方式的具体用途、陷阱与精算意义及实际应用。

### 周岁 vs 虚岁：中国传统与现代标准的分裂

**周岁（实足年龄）**：从出生开始计时，每经历一个完整的 365 天增加 1 岁。出生时 0 岁，满 1 周年 1 岁，满 2 周年 2 岁。这是国际标准，用于医学、法律、教育，精确到年、月、天。

**虚岁（虚龄）**：中国传统计法，出生即为 1 岁，每过一个农历新年（春节）增加 1 岁，不计具体月日。出生时 1 岁，过完第一个春节 2 岁，过完第二个春节 3 岁。例如某人于 2025 年 11 月出生：虚岁在 2025 年 11 月到 2026 年 1 月是 1 岁，2026 年 1 月春节后 2 岁。

**关键区别**：虚岁最多比周岁大 2 岁（生日在春节前，刚过完春节）。现代医学、护照、保险都用周岁，虚岁仅在传统习俗里保留。计算虚岁时，「过年」是指通过农历新年（春节），不是公历 1 月 1 日。

### 精确到月日的年龄计算与医学评估

当需要精确计算（如婴幼儿生长发育评估、保险精算）：

**周岁 + 月数 + 天数**：
- 年龄 = 当前年份 − 出生年份，如未到生日则减 1

例如某人生于 2000 年 3 月 15 日，计算到 2026 年 4 月 10 日：
- 基础周岁：2026 − 2000 = 26 岁
- 4 月 10 日 > 3 月 15 日，已过生日，不减 1
- 精确年龄：26 岁 0 个月 26 天

又例如计算到 2026 年 2 月 10 日：
- 基础周岁：2026 − 2000 = 26 岁
- 2 月 10 日 < 3 月 15 日，未过生日，减 1 → 25 岁
- 从 2025 年 3 月 15 日到 2026 年 2 月 15 日 = 11 个月
- 精确年龄：25 岁 11 个月 26 天

**医学应用**：婴幼儿用"月龄"（0-12 个月），1-3 岁用"岁+月"（如"2 岁 3 个月"），3 岁以上简化为"岁"。

### 闰年 2 月 29 日生日的处理与各国法律差异

约 1/1461 的人生于闰年 2 月 29 日。在平年（非闰年）里怎么过生日？

**国际标准**：法律和官方文件中，2 月 28 日作为生日标记（平年）。正式生日庆祝可选 2 月 28 日或 3 月 1 日。

**各国实践**：
- **英国**：法律规定生日是 2 月 28 日（平年）
- **葡萄牙**：可选 2 月 28 日或 3 月 1 日
- **中国**：户口本和身份证标注 2 月 29 日，平年按 2 月 28 日计算周岁
- **日本**：民法规定生日是 3 月 1 日（平年）

**精算影响**：保险和养老金计算时，2 月 29 日生的人其周岁增长时间点不同，累积 50 年会有差异。本工具自动处理这个特殊情况，无需手动调整。国际奥委会统一用 2 月 28 日作为运动员的法定生日。

### 社保缴费年限与实足年龄的关键关系

中国社保法规定的"缴费年限"与年龄息息相关：

**基本养老保险**：累计缴费 15 年 + 达到法定退休年龄（男 60 岁、女 50-55 岁，逐步延长）才能领养老金。

**"缴费年限" vs "年龄"**：
- 缴费年限：从首次参保到停止缴费的累计年数（中间可断档，但不清零）
- 年龄：法定退休年龄用的是**实足周岁**，精确到年

例如某人生于 1975 年 4 月 15 日，女性：
- 2026 年 4 月 10 日的周岁：50 岁 11 个月 26 天（未满 51 岁）
- 2026 年 4 月 15 日的周岁：51 岁 0 个月 0 天
- 如女性退休年龄为 50.5 岁，2026 年 10 月左右可退休（假设缴满 15 年）

**精确到月的计算**：国务院文件对延迟退休年龄的计算按"月"进行。女性从 2025 年 1 月起，每 3 个月推迟 1 个月退休，需按"岁+月"精确计算对应退休年龄。本工具支持月份精确查询。

### 骨龄、心理年龄与实足年龄的三元评估体系

**实足年龄（chronological age）**：从出生到现在的时长，最客观，是法律和行政的标准。

**骨龄（bone age）**：通过 X 光拍摄手腕骨骼，与标准骨龄图谱对比的发育年龄。常用于：
- 儿童生长发育评估（预测身高）
- 运动员年龄鉴定（防止虚报年龄，特别是体操、举重）
- 医学预测成人身高

骨龄可能与实足年龄差异 ±2 岁。营养充足的孩子骨龄偏大，营养不良偏小，激素异常也影响。

**心理年龄（mental age）**：认知与心理发展程度，用比例表示"心理年龄 / 实足年龄 = IQ"。心理年龄 12、实足年龄 10 的孩子 IQ = 120。三者的应用：教育看心理年龄（跳级判断），体育看骨龄（竞技公平），法律看实足年龄（刑事责任、成年权利），医学综合三者预测身体发展。

### 出生人数统计与人口学中的年龄组定义

人口学按年龄分组的标准定义（UN 推荐）：

**基础年龄组**：
- 0-14 岁（儿童）
- 15-64 岁（劳动力人口）
- 65+ 岁（老年）

精细分析时用 5 年一级：0-4 岁（婴幼儿）、5-9 岁（儿童早期）、10-14 岁（儿童晚期）、15-19 岁（青少年）等。

**出生人数 vs 存活年龄的精算**：统计部门公布"2025 年新生儿 800 万"是日历年度的出生统计。而计算"全国 0-14 岁儿童总数"时，需逆推这些孩子是否还活着（减去婴儿死亡率、疾病死亡），这称为"存活人口"。中国 2024 年新生儿 735 万，但 0-14 岁人口存活数约 1.9 亿，差异巨大，因为积累了过去 15 年的每年出生数减去死亡数。人口衰减趋势直接影响养老金计算和社保可持续性。

### 常见问题

**Q: 虚岁和周岁相差最大几岁？**

最多差 2 岁。如果一个人生于春节前（如 1 月），虚岁让他在出生时就是 1 岁，过完第一个春节是 2 岁，而周岁才 1 岁不到，差距达 2 岁。

**Q: 2 月 29 日生的人到底几岁？**

法律上，平年时看作已过生日（2 月 28 日），会比实际提前 1 天进一岁。精确计算时要特殊处理，大多数国家规定用 2 月 28 日或 3 月 1 日代替。

**Q: 保险里的"年龄" vs 法律里的"年龄"有区别吗？**

有。保险常按"最近的生日之后的年龄"计费，法律按"当前周岁（未到生日时减 1）"判定权利义务。保险更新算年龄时通常比法律定义早一些。

**Q: 怎么计算离下一个生日还有几天？**

用当前日期 yyyy-mm-dd，计算下一个生日 = 今年 + 出生月日。如今年生日已过，下一个生日 = 明年 + 出生月日。剩余天数 = 下一个生日 − 当前日期。闰年 2 月 29 日时，平年用 2 月 28 日或 3 月 1 日代替。

**Q: 精算师为什么要精确到月日计算年龄？**

养老金、保险赔付金额与年龄直接挂钩。多活一个月可能多领几千块养老金，累积数十万人时误差巨大。精确到月日能降低系统性偏差，精保险金的公平性。

**Q: 中国现在还有人用虚岁吗？**

传统习俗里（老一辈人谈论年龄时）仍会说虚岁，但官方文件、医疗、教育、法律全部用周岁。生日庆祝时有人会多庆祝一岁（虚岁概念影响）。本工具仅计算周岁，这是国际标准。

---

## CSS 文本阴影完整教程：从凸起到霓虹的 6 种效果实战

> 从 text-shadow 语法到凸起 / 凹陷 / 3D / 霓虹 / 复古双色 / 柔光 6 种预设效果，再到性能优化与移动端适配，一文掌握文本阴影的全部用法。

URL: https://xtechtools.com/guides/text-shadow/
发布：2026-04-29 · 更新：2026-04-29

CSS 的 text-shadow 属性极简：只需一行代码就能给文字加阴影，但从简单到惊艳的差距，在于理解阴影的堆叠逻辑、颜色搭配、模糊半径与字号的比例关系。本教程从基础语法入手，逐一讲解 6 种常见效果（凸起、凹陷、3D、霓虹、复古双色、柔光）的实现原理和调参技巧，再进阶到动画化、跨浏览器兼容、性能优化与移动端简化方案的完整策略。无需图片、无需额外 DOM，纯 CSS 即可实现视觉层次的完整提升。

### text-shadow 语法与参数详解

基础语法：
```
text-shadow: offset-x offset-y blur-radius color;
```

四个参数：
- **offset-x**：x 轴偏移，正值向右，负值向左，单位 px
- **offset-y**：y 轴偏移，正值向下，负值向上，单位 px
- **blur-radius**：模糊半径，0 硬边阴影，越大越模糊，单位 px
- **color**：阴影颜色，支持 #hex、rgb()、rgba()、hsl() 等

**多层阴影**：用逗号分隔，从左到右按顺序叠加（后面的在下层）：
```
text-shadow: 2px 2px 4px rgba(0,0,0,0.3), -1px -1px 2px rgba(255,255,255,0.5);
```

**重要**：text-shadow 不会扩展文字的包裹盒，阴影部分超出盒子边界会被隐藏（除非设 `overflow: visible`）。设计阴影时要考虑文字周围空间。

### 凸起效果与凹陷效果：立体感的两面

**凸起**：底部阴影深、顶部亮光浅，营造光照来自上方的立体感。
```
text-shadow: 
  0 2px 0 #ccc,
  0 4px 0 #999,
  0 6px 0 #666,
  0 8px 10px rgba(0,0,0,0.5);
```

关键点：多层递进（1-2 px 微小偏移堆叠），颜色递深（浅灰到深灰），最后一层加 blur（10px 柔和阴影）。24px 字号 → 阴影层数 4-6 层，最大偏移 = 字号 1/3。

**凹陷**：亮光在底部、暗影在顶部，造成文字被压入背景的感觉。
```
text-shadow: 
  2px 2px 0 rgba(255,255,255,0.5),
  -2px -2px 0 rgba(0,0,0,0.8);
background: #ccc;
```

配合浅色背景（#ddd 或更浅）和简单配色，凹陷效果最明显。暗色背景或复杂配色会破坏效果。

### 3D 透视效果与霓虹灯的发光感

**3D 效果**：模拟透视投影，阴影沿一个方向递进，模拟文字远离观察者的 3D 倾斜。
```
text-shadow: 
  1px 1px 0 #ccc,
  2px 2px 0 #bbb,
  3px 3px 0 #999,
  4px 4px 0 #777,
  5px 5px 0 #555,
  6px 6px 20px rgba(0,0,0,0.5);
```

配合 CSS transform 增强 3D 效果（需 `perspective`）：`transform: perspective(500px) rotateX(5deg) rotateY(-10deg);`

**霓虹灯**：彩色阴影高度模糊，多层不同颜色叠加，模拟霓虹管发光。
```
color: #fff;
text-shadow: 
  0 0 10px #ff00ff,
  0 0 20px #00ffff,
  0 0 30px #ff00ff,
  0 0 40px #00ffff;
background: #000;
```

配置暗色背景看效果最佳。色彩组合：紫+青（#ff00ff + #00ffff），红+蓝，绿+蓝。性能警告：高 blur（30px+）和多层（6 层+）导致掉帧，移动设备要简化到 2-3 层，blur ≤ 15px。

### 复古双色色偏效果与柔光阴影

**复古双色**：模拟老印刷或胶卷扫描的色差（chromatic aberration）。
```
text-shadow: 
  -2px 0 0 #ff0000,  /* 红色左偏 */
  2px 0 0 #0000ff;   /* 蓝色右偏 */
```

VHS、老电视画面的标志性视觉。可扩展为三色：
```
text-shadow: 
  -3px 0 0 #ff0000,
  0 0 0 #00ff00,
  3px 0 0 #0000ff;
```

**柔光效果**：多层白/浅色阴影微小偏移，营造被光晕包围的温暖感。
```
text-shadow: 
  0 0 5px rgba(255,255,255,0.8),
  0 0 10px rgba(255,255,200,0.6),
  0 0 15px rgba(255,200,0,0.4);
color: #333;
```

适合温暖文案、节日主题、女性向设计。简化版仅用 2 层阴影，降低性能成本。

### text-shadow vs -webkit-text-stroke 与性能优化

**text-shadow**：完全模糊阴影，不影响文字形状，可叠加。

**-webkit-text-stroke**（描边）：给文字加 outline，改变文字形状，单一定义（无法叠加）。
```
text-shadow: 2px 2px 4px rgba(0,0,0,0.5);
-webkit-text-stroke: 1px #333;
```

**选择建议**：需要软边界、发光、深度感 → text-shadow；需要硬边界、轮廓、防止文字糊掉 → -webkit-text-stroke；同时需要 → 两者叠加（性能成本翻倍）。兼容性：text-shadow 所有现代浏览器支持，-webkit-text-stroke 在 Safari、Chrome、移动端普遍支持，Firefox 从 49+ 支持。

**性能原理**：每个 text-shadow 层都需一次 GPU 重绘。5+ 层触发 paint，导致掉帧。优化策略：桌面版 6 层以下，移动版 3 层以下，低端机 1-2 层。blur ≤ 15px 成本最低。超过 20px 考虑用背景图替代。用 `will-change: text-shadow` 提示浏览器优化。

### text-shadow 动画化与 hover 渐变效果

**基础 hover**：
```
a {
  text-shadow: 0 0 5px rgba(0,0,0,0.1);
  transition: text-shadow 0.3s ease;
}
a:hover {
  text-shadow: 0 0 15px rgba(0,100,200,0.8);
}
```

**@keyframes 动画**：
```
@keyframes glow {
  0%, 100% { text-shadow: 0 0 10px rgba(255,0,0,0.5); }
  50% { text-shadow: 0 0 20px rgba(255,0,0,1); }
}
.neon-text {
  animation: glow 1.5s ease-in-out infinite;
}
```

**注意**：频繁改动 text-shadow 触发重绘。建议只在 `:hover`、`:focus` 时改变，动画时用 `will-change: text-shadow` 提示优化。对大量文本（> 50 元素同时动画）考虑用 Canvas 替代。频繁改色彩而保持 shadow 结构时，动画 color 或 opacity 配合固定 text-shadow 成本更低。

### 移动端与低端机的简化方案与色彩对比

**移动端问题**：低 DPI 屏幕（200-300 ppi）会模糊高 blur 值的阴影，性能受限（GPU 弱），电池消耗快。

**简化方案**：
```
/* 桌面版：完整效果 */
.text { text-shadow: 0 0 20px #f0f, 0 0 40px #0ff; }

/* 移动版：1 层 */
@media (max-width: 768px) {
  .text { text-shadow: 0 0 15px rgba(255,0,255,0.6); }
}

/* 低端：禁用 */
@media (max-width: 480px) and (hover: none) {
  .text { text-shadow: none; }
}
```

**色彩对比**：前景与背景对比度建议 ≥ 4.5（WCAG AA）。深色前景 + 浅色背景效果最佳。避免低对比同色系组合（浅灰 + 白）。用 opacity 或 background 半透明底板也能降低性能成本。

### 常见问题

**Q: 我想要文字发光但不想掉帧，怎么办？**

用 `filter: drop-shadow(0 0 Npx color)` 代替 text-shadow。drop-shadow 用硬件加速，性能更好。或者减少阴影层数到 2-3 层，blur 值 ≤ 15px。

**Q: text-shadow 和 box-shadow 能混用吗？**

可以，两者独立作用。text-shadow 作用于文字，box-shadow 作用于元素盒子。都写上两个效果就同时生效，但性能成本也翻倍。

**Q: 为什么字号越大，阴影看起来越不明显？**

比例问题。24px 字号配 4px blur 很明显，48px 字号配 4px blur 就看不出来。经验值：blur 半径 = 字号 × 1/6 到 1/4。自动调整看效果。

**Q: 动画里 text-shadow 改变会导致卡顿，有办法吗？**

改成动画 color 或 opacity，配合固定的 text-shadow。或者用 `will-change: text-shadow` 提示浏览器预先优化。极端情况改用 Canvas 绘制文字。

**Q: 浏览器兼容性怎么样？**

所有现代浏览器（Chrome 2+、Firefox 3.5+、Safari 1.1+、Edge 所有版本）都支持 text-shadow。IE 9 以下不支持，但现在 IE 已停更，无需考虑。

**Q: 能否给文字加彩色阴影渐变？**

text-shadow 本身不支持渐变，每层只能单色。但可以用多层叠加不同颜色（如霓虹效果）或用 `background-clip: text` + `background: linear-gradient` 给文字本身加渐变。

---

## PDF 合并完整指南：何时合并 / 顺序选择 / 隐私保障

> 多份 PDF 文档如何高效合并？顺序、体积膨胀、密码保护、水印保留，本指南讲清楚每一个合并场景的注意事项。

URL: https://xtechtools.com/guides/pdf-merge/
发布：2026-04-29 · 更新：2026-04-29

PDF 合并是办公工作中最频繁的文档操作。日常场景：合同与附件、发票与报销单据、论文与参考文献、多页扫描件整理成一份。本指南从实际需求出发，讲清楚何时该合并、合并顺序的重要性、体积膨胀的根本原因、扫描件与矢量 PDF 的合并差异、密码保护文件的处理、水印保留机制，以及本工具基于 pdf-lib 的实现细节。

### 5 个典型合并场景

- **合同 + 附件**：主合同 1 份 + 附表、双方身份证、授权书各 1-2 份，通常 3-5 份文件。合并后便于一次性传输、存档、打印
- **报销单据**：发票、收据、证明材料分别扫描，需按时间或部门顺序合并。财务审核时要求完整版本
- **研究文献整理**：主论文 + 引用的关键论文，整理成一份综合 PDF 便于归档。学位论文常见需求
- **多页扫描件**：逐页扫描的合同或书籍，需要合并成单一文档。扫描仪通常一次一页
- **审批文件流转**：初稿、修改稿、审批意见各一份，最终合并成完整记录。便于追溯版本历史

共同特点：顺序有意义、需要版本控制、敏感信息需保护。**所有场景都需要工具支持拖拽排序确保正确顺序。**

### 合并顺序的重要性

**标准文件结构**：封面 → 目录 → 正文 → 附录 → 参考文献

合并顺序关乎读者体验：
- 封面优先，建立阅读预期
- 核心内容在前，细节附件在后
- 按时间顺序（旧到新版本）或逻辑顺序（总分结构）组织

**反例的危害**：把附件扫描件放最前、主合同放最后，接收方立即困惑，需要反复翻阅才能理解文件结构和签署顺序。商务场景下可能导致理解偏差。

**本工具的优势**：左侧列表支持拖拽排序调整顺序，实时预览每个文件的位置和页数。排序后点「合并」按确定的顺序串联所有页面。确保收件人打开后第一页就是最重要的内容，流程清晰。

### 为什么合并后体积膨胀

一个常见误解：合并会压缩文件。实际相反。

**原因**：PDF 内部包含的字体、配色方案、内容流不会自动去重。3 份 100KB 的 PDF 直接串联，结果是 300KB（可能更多），因为每份 PDF 都嵌入了完整的字体和资源。

**pdf-lib 的做法**：本工具逐页复制源文件的内容流和资源（字体、图片、颜色空间），完全保留原样。这是最安全的做法，确保合并后视觉效果不变。

**最小化体积的方案**：
- 合并前预先压缩每份 PDF（如降低图片分辨率、转灰度）
- 若有重复字体，用专业工具（Adobe Acrobat、Ghostscript）做字体子集化
- 合并后可选上传本站压缩工具再压一遍（损失品质较小的情况下）

### 扫描件 vs 矢量 PDF 的差异

**扫描件**（scanned PDF）：
- 本质是图片序列，每页就是一张 JPG/PNG
- 文件大，200 页扫描件常 50-100 MB
- 无法选中文字（除非经过 OCR），搜索无效
- 合并很快（只是拼接图像），体积不会额外膨胀

**矢量 PDF**（born-digital PDF）：
- Word/PowerPoint 导出、在线编辑器生成
- 文件小，包含字体、向量图形、文本流
- 支持文字选中、搜索、复制
- 合并时可能因字体嵌入导致体积增长

**混合合并场景**：扫描件 50 页 + 矢量 10 页，总体积会因字体被多次嵌入而略微膨胀。本工具合并过程中不做优化，保留原始品质。

### 密码保护 PDF 能否合并

**受限密码**（打开密码）：PDF 被加密，未输入密码前完全无法打开，工具也无法读取。
- 本工具**不支持自动解密**。需手工在 Adobe Reader 或系统预览器中输入密码打开后再另存为无密码版本
- 或用开源命令行工具 qpdf、PyPDF2 解密：`qpdf --password=secret --decrypt input.pdf output.pdf`
- 解密后再用本工具合并

**编辑密码**（权限密码）：允许打开但禁止编辑、复制、打印。
- 本工具仍然能读取并合并（权限限制是「建议」，技术上可绕过）
- 合并后的输出文件可能继承源文件的权限，也可能全部清除

**安全和合规启示**：合并涉及敏感文件前，确认是否有保密协议限制。未经授权解密可能违反 DMCA 等法律。

### 合并后水印是否保留

**直观答案**：是的，水印被完整保留。合并不会改变原有的任何视觉效果。

**技术细节**：
- 水印（文字或图像）在 PDF 中就是常规内容层或透明水印层
- pdf-lib 逐页复制内容流（包括所有水印层），所以水印自动被保留
- 唯一例外：某些 PDF 的水印用了特殊渲染模式或 OCG（optional content group，隐藏图层），那么拆分结果可能丢失

**无法移除水印**：本工具不提供水印清洗功能。如需去水印，需用 Adobe Acrobat DC 等专业工具手工编辑页面或重新导出。

**工作流提示**：若文件上游带有「机密」「草稿」「仅供参考」等水印，合并前确认是否需要在源文件级别清除，再行合并。合并后水印不会消失。

### 纯本地 vs 在线服务隐私差距

**本工具（纯本地）**：
- 所有处理在浏览器 JavaScript + Web Worker 完成
- 文件不上传任何服务器，敏感合同可放心合并
- 支持离线使用（加载后关网络也能用）

**在线服务（iLovePDF、SmallPDF）**：
- 文件上传到云服务器处理
- 服务条款允许短期存储（通常 24h）
- 存在隐私泄露风险，某些平台被爆料出无加密传输

**企业采购建议**：
- 非敏感文件（公开报告、演示）→ 在线工具（功能丰富）
- 涉及商业秘密、个人信息 → 本地工具或部署私有版本

**本工具架构**：前端框架 Astro + React，后端零处理，通过 pdf-lib（100% 纯 JS）操作 PDF。

### 常见问题

**Q: 合并 10 份 PDF 需要多长时间？**

取决于文件大小和页数。扫描件 10 × 30 页通常 2-5 秒；矢量 PDF 因字体处理可能 5-10 秒。本工具用 Web Worker 避免卡主线程。

**Q: 合并后还能拆分某些页码吗？**

可以。本站有单独的「PDF 拆分」工具支持页码范围语法（1-3,5,7-9）。先合并再拆是常见工作流。

**Q: 能在合并时调整页面大小吗？**

不能。合并工具只负责串联，不做缩放。如需统一尺寸，应在合并前分别用 Adobe Acrobat 或本站其他工具调整。

**Q: 合并后的页码标记会乱吗？**

合并工具不改变源文件的任何标记（书签、链接、注释）。如果源文件有问题，合并后仍然有。若需重建，用专业编辑工具。

**Q: 支持批量上传文件吗？**

本工具支持拖拽多文件进列表，也支持逐个「添加 PDF」按钮。推荐拖拽效率更高。

**Q: 合并的 PDF 能直接打印吗？**

可以。合并结果是标准 PDF，任何应用（浏览器、Adobe Reader、打印机驱动）都能处理。打印效果取决于源文件质量。

---

## PDF 拆分完整指南：按页 / 按章节 / 按主题精确切分

> 一份 PDF 分成多份的正确姿势：页码语法、书签利用、加密 PDF 处理、文件命名规范。

URL: https://xtechtools.com/guides/pdf-split/
发布：2026-04-29 · 更新：2026-04-29

大型 PDF 文档经常需要拆分成多份：按章节单独交付给不同部门减少信息超载、删除机密页码保护隐私、将论文的某章节单独存档、提取高清扫描件打印大尺寸。本指南讲清楚灵活的页码范围语法、利用书签自动切分、处理加密 PDF、混合尺寸文件拆分、文件命名规范与组织方式。

### 3 个常见拆分场景

- **按章节交付**：一份 500 页的年度报告，按部门分章（如销售部 1-100 页、财务部 101-250 页），每份单独发送避免信息超载
- **章节单独打印**：教科书 PDF 有 15 章，学生只需第 3、5、7 章，从整本中提取出来再打印节省纸张
- **剔除敏感页码**：合同包含 20 页，其中第 5-8 页含商业秘密数据，拆分后删除这几页再分享给外部方
- **提取高清扫描件**：扫描件 200 页，第 15 页拍得特别清晰（其他模糊），需要单独存档或打印大尺寸做演示

所有场景的共同需求：**精确控制页码范围**，本工具支持灵活的范围语法如 `1-3,5,7-9` 一次性提取多个不连续的页面。

### 页码语法详解（灵活范围输入）

本工具支持以逗号和连字符组合的页码表达式，极大简化手工操作。**实例**：

- `1-3,5,7-9` = 第 1、2、3、5、7、8、9 页（跳过 4 和 6，适合删除敏感页）
- `1-10` = 第 1 到 10 页（章节范围）
- `5` = 仅第 5 页（单页提取）
- `20-end` = 第 20 页到最后一页（尾部提取）
- `1,3,5,7` = 仅提取奇数页（双面扫描件逆向处理）

**验证机制**：工具会检查页码是否超出范围。如源文件 50 页但输入 `1-100`，系统会自动提示错误并建议修正范围。**无需手工计算总页数**，输入 `1-end` 等价于 `1-50`。

### 每页一份 vs 范围合并的差异

**每页一份模式**（逐页拆分）：
- 不需输入任何页码，工具自动生成 N 个单独文件
- 输出文件名：`page-1.pdf`、`page-2.pdf`、...、`page-N.pdf`
- 适合：全部分散存档、逐页审批流转、批量 OCR 处理
- 100 页文件会生成 100 个 PDF，可能很慢

**范围拆分模式**（自定义页码）：
- 手动输入如 `1-5,10-15,20`
- 输出 1 个合并后的 PDF 文件包含这些页面
- 适合：按需提取特定章节、删除特定页码
- 性能更快，文件更少

**组合用法**：先范围拆分得到关键章节，再用「每页一份」逐页处理后续操作（如 OCR 或 AI 审阅）。

### 含书签 PDF 的自动按章节拆分

好的 PDF（特别是电子书、教科书、长论文）常包含书签（outline / toc）标记每章起始页和层级，便于快速导航。

**传统手工工作流**（极其耗时且易错）：
- 打开 PDF，查看书签面板手工逐一记录每章的标题和页码
- 手工计算每章的页码范围（如第 1 章 1-35 页、第 2 章 36-78 页）、注意不要遗漏
- 逐章用拆分工具生成文件（每章需操作一次，100 章要操作 100 次）

**本工具智能优化**（毫秒级）：
- 上传时自动读取 PDF 内的书签树结构和页码
- 显示「按书签自动拆分」一键按钮
- 自动生成多个章节文件，文件名自动用书签标题（如 `第五章-交易机制.pdf`），保留目录结构

**失败情况**：扫描件或破损 PDF 往往没有书签数据，此时回退到手工输入页码范围模式。

### 加密 PDF 拆分前的必要处理

**有打开密码的 PDF**（被加密，无法直接读取）：
- 本工具不直接拆分加密文件（浏览器 API 限制）
- 需先在 Adobe Reader / Mac 预览器中输入密码打开
- 然后「另存为」或「导出」无密码版本
- 再用本工具拆分

**或者用命令行工具**（推荐，速度快）：
```
qpdf --password=secretpass --decrypt input.pdf output.pdf
```
qpdf 是开源工具，支持 Windows/Mac/Linux。

**有编辑/打印限制的 PDF**：
- 实际上可被拆分（权限限制是「建议」，技术上可绕过）
- 拆分结果可能继承或清除权限，取决于工具实现

**合规提示**：未经授权破解密码保护可能违反 DMCA（美国） 或相关法律。企业和法律敏感场景用前确认合规性。

### 扫描尺寸差异不会破坏排版

常见问题：「我的扫描件有些页是 A4 有些是 A5，拆分会变形吗？」

**答案**：不会。PDF 页面大小信息存储在页面元数据（/MediaBox），拆分操作只是复制这个信息及其内容流。每页的大小完全保留，不会产生形变。

**实际效果**：
- 原文件若某页 A5 大小为 148×210mm，拆分后该页仍精确保持 148×210mm
- 不同页面大小混在一个 PDF 文档中是完全合法的
- 打印或显示时，阅读应用程序会按每页的原始大小准确处理和显示

**有问题的情况**：旧扫描仪生成的 PDF 某些页旋转角度错误（90/180/270°），拆分前应该先用「PDF 旋转」工具逐页矫正。拆分不会修复旋转问题。

### 文件名规则与输出管理

**本工具的默认命名**：
- 单范围输入如 `1-5` → `document-pages-1-5.pdf`
- 多范围如 `1-3,10-15` → `document-pages-1-3-10-15.pdf`
- 按书签拆分 → 用书签标题作文件名（如 `第一章-序言.pdf`）

**文件名最佳实践**：
- 避免特殊字符（Windows 不允许 `:` `*` `?` `"`）
- 加入日期如 `report-2026-04-29-page-1-50.pdf`
- 按部门/章节分类放文件夹

**下载管理**：
- 单文件直接下载
- 批量拆分（每页一份）时浏览器可能生成 ZIP（100+ 页）
- 检查下载文件夹，整理到项目目录

### 常见问题

**Q: 拆分 500 页 PDF 要多久？**

取决于内容。纯矢量 PDF 1-3 秒；扫描件因图片解析可能 5-10 秒。本工具用 Web Worker 处理，不卡浏览器。

**Q: 输入页码时能用空格吗？**

本工具自动忽略空格，所以 `1-3, 5, 7-9` 和 `1-3,5,7-9` 效果相同，推荐不用空格保持简洁。

**Q: 拆分后能在浏览器预览每个文件吗？**

可以。下载前工具会显示预览缩略图（如果浏览器支持 PDF 预览）。

**Q: 为什么拆分后页码编号变了？**

页码标记（内容文字如「第 10 页」）不会自动更新，这是源文件的一部分。需手工编辑或使用专业 PDF 编辑器重新标记。

**Q: 能同时对多个 PDF 批量拆分吗？**

本工具一次处理一个文件。若需批量，可逐个上传依次拆分，或用编程方式（如 Python + PyPDF2）自动化。

**Q: 拆分后的 PDF 丢失了链接和注释？**

pdf-lib 会保留大多数注释和链接。若部分丢失，可能是源文件的注释跨页面（页码外），属于 PDF 规范限制。用 Adobe Acrobat 验证。

---

## PDF 旋转完全指南：扫描矫正与方向修复

> 扫描件为什么常常颠倒？90/180/270° 分别何时用？混合方向逐页处理，再合并的完整工作流。

URL: https://xtechtools.com/guides/pdf-rotate/
发布：2026-04-29 · 更新：2026-04-29

扫描件经常面临方向错误问题：整份文件颠倒 180° 无法阅读、部分页从侧面进纸变成横屏、混合竖横屏内容混乱。本指南讲清楚为什么扫描仪常出现方向错误的根本原因、90/180/270° 旋转分别适用的实际场景、如何处理混合方向逐页精确微调、旋转与「裁剪」工具的本质区别、以及为什么本工具批量处理比 Mac Preview 手工操作快 30 倍。

### 扫描仪为何频繁出现方向错误

**主要原因**：进纸方向反了或传感器校准偏差，特别是自动进纸器更容易出问题。

- **双面进纸器**：背面纸张通常 180° 颠倒扫描（特别是老机型未配置自动反转检测）
- **竖放 vs 横放混淆**：用户有时竖着放文件、有时横着放（如 A3 文件裁成 A4），传感器未自适应调整
- **自动纠正失败**：现代扫描仪有图像识别自动纠正，但对于纹理均匀的页面（如空白合同纸）容易判错方向
- **批量扫描**：一口气扫 100 页，如某页角度不标准或进纸歪斜就被记录为反向，难以人工察觉

**常见现象**：开始几页正常，中间突然一页 180° 颠倒无法读，或整份扫描件都是侧面。这时需要批量旋转纠正。

### 90/180/270° 旋转的实际场景

**180° 旋转（最常见）**：
- 整份扫描件倒过来（顶部变底部、左右完全反向）
- 人工看一眼就能判断：文字倒着读不了、页码在底部
- 一键「旋转 180°」秒速解决整份文件

**90° 旋转**（竖变横或横变竖）：
- 用户不小心横着放了竖向文件、或反过来（如 A3 文件裁 A4）
- 结果看起来像侧卧的细长条，完全无法阅读
- 需要「顺时针 90°」或「逆时针 90°」
- 旋转 90° 同时改变页面尺寸（宽高互换，如 210×297 变 297×210）

**270° 旋转**（逆时针 90° 的另一种说法）：
- 与 90° 顺时针等价，只是旋转方向相反
- 选择 90° 还是 270° 取决于当前方向，结果一样（都是竖变横或反之）

**270° 何时用**：某些旧扫描仪固定输出为逆时针编码，此时需 270° 纠正回正方向。

### 混合页面（部分横屏部分竖屏）逐页处理

**常见场景**：合同正文竖向、图表页横向、申请表又竖向……共 20 页。

**错误做法**：一把旋转全部页面 → 横页变竖、竖页变反向。

**正确工作流**：
1. 上传 PDF 到本工具
2. 逐页预览，记下需要旋转的页码（如第 3、7、15 页）
3. 分批输入页码范围：
   - 第 3 页：`3`，旋转 90°
   - 第 7 页：`7`，旋转 90°
   - 第 15 页：`15`，旋转 90°
   - 其余页码如 `1-2,4-6,8-14,16-20`，不旋转（旋转 0°）
4. 工具生成旋转后的 PDF

**逐页选择界面**：本工具支持以缩略图形式展示每页，点击页面即可选中并设置旋转角度。

### 旋转后再合并的工作流

**场景**：有 3 个多页 PDF，每个都有混乱的方向，想先全部纠正再合并成一份。

**步骤**：
1. **第一阶段：逐份旋转**
   - PDF A（20 页）：上传 → 逐页检查 → 旋转第 5、12 页 → 下载修正版 A'
   - PDF B（15 页）：上传 → 旋转第 3、8、14 页 → 下载修正版 B'
   - PDF C（30 页）：上传 → 旋转第 1-10、25-30 页 → 下载修正版 C'

2. **第二阶段：合并**
   - 打开本站「PDF 合并」工具
   - 依次上传 A' B' C'（已纠正）
   - 拖拽排序（通常 A → B → C）
   - 点「合并」→ 下载最终版本

**为什么分阶段**：旋转和合并是两个独立操作，分开处理易于调整。若发现某页旋转错了，只需重新处理那份文件。

### 旋转与「裁剪」的本质区别

**很多人混淆这两个操作**，导致选错工具。本指南讲清楚：

**旋转**（Rotate）：
- 改变页面的展示方向（0/90/180/270° 只改方向）
- 页面尺寸互换（如 A4 竖 210×297mm 旋转 90° 后变 297×210mm）
- 原始内容完整保留，只是转个角度，没有信息丢失
- 用途：纠正扫描仪方向错误、修复人工放置错误

**裁剪**（Crop）：
- 删除页面的部分物理区域（比如只保留左半边）
- 页面尺寸变小（如 210×297 裁成 105×297）
- 信息永久丢失，不可逆
- 用途：移除边界黑框、删除页边栏、提取某个表格核心区域

**实例判断**：扫描件边缘有黑框（扫描仪边框污染），应该用「裁剪」；整页方向反了，应该用「旋转」。本站有单独的「PDF 裁剪」工具提供边界检测和自动裁剪。

### Adobe Acrobat 付费解决方案与本工具对比

**Adobe Acrobat DC**（付费 $25/月 或 $330/年）：
- 「工具」→「旋转页面」
- 支持单页、范围、批量旋转
- UI 专业、功能全面
- 缺点：贵、大软件、需安装

**Mac 预览器**（免费）：
```
Tools → Rotate
```
- 可旋转单页
- 非常慢：需逐页点击、保存、重开……处理 100 页要半小时
- 适合 1-2 页偶发纠正

**本工具**（免费，纯本地）：
- 支持批量页码范围输入（`1-5,7,9-20`）
- 支持缩略图逐页点击勾选
- 一次性生成，秒级处理
- 无需安装、无需登录、无上传到云
- **适合**：频繁处理多页 PDF

**性能对比**：处理 100 页混合旋转需求，本工具 10 秒，Preview.app 30+ 分钟。

### 旋转后页码和书签的完整性保证

**常见担忧**：旋转后会不会丢失页码标记或超链接？

**答案**：不会。页面内容（包括所有注释、链接、文字）会随之旋转，但 PDF 的元数据（书签 outline、链接坐标）需要重新计算。

**pdf-lib（本工具基础库）的处理**：
- 旋转时调整 /Rotate 元信息（0、90、180、270）
- 保留页面内容流，应用旋转矩阵变换
- 书签坐标自动转换
- 文本选中范围重新映射

**小概率问题**：极少数不规范 PDF（嵌入已旋转内容 + /Rotate 标记）旋转后可能双重旋转。此时需用 Adobe Acrobat 手工矫正。

### 常见问题

**Q: 我的扫描件全是 180° 错误，怎样一键纠正？**

上传 PDF → 输入页码范围 `1-end`（表示全部页面） → 选择「旋转 180°」→ 下载。即可一次性纠正整份文件。

**Q: 旋转后页面尺寸会变吗？**

会。旋转 90° 或 270° 时，页面宽高互换。如原页 210×297mm（A4 竖），旋转 90° 后变 297×210mm（A4 横）。180° 不改变尺寸。

**Q: 能旋转某一段连续页码吗？**

可以。输入如 `5-12` 表示第 5 到 12 页，工具会批量旋转这个范围。

**Q: 旋转后的 PDF 能直接打印吗？**

完全可以。任何应用都能正确识别旋转信息，打印时自动按正确方向输出。

**Q: 某页旋转反了，能二次旋转吗？**

可以。重新上传已旋转的 PDF，输入该页码再旋转一次。比如原本旋转了 90°，现在再旋转 270°（或 90° 三次）就回到初始状态。

**Q: 为什么我的扫描仪总是扫反向？**

常见原因：双面进纸器方向设置、传感器未校准、纸张放反了。咨询扫描仪说明书或维修。本工具是后期补救手段。

---

## PDF 水印添加完全指南：法律效力 / 视觉设计 / 防伪

> PDF 水印不仅是设计元素，更是版权保护和机密标识的法律工具。本指南详解文字 vs 图片水印的差异、字号与透明度搭配、旋转角度规范、是否每页都加、水印移除风险与加密防护。

URL: https://xtechtools.com/guides/pdf-watermark/
发布：2026-04-29 · 更新：2026-04-29

PDF 水印看似简单，却肩负两大战略使命：署名版权标识（"© 2024 版权所有"）和机密文件保护（"机密文件 禁止传阅"）。不同的用途需要截然不同的设计策略——签名水印讲究隐蔽和美观不打扰，机密标识则要求醒目和难移除。本指南从水印的法律效力、视觉设计规范、技术实现三个核心维度，教你快速判断最适合的水印方案，如何搭配字号、透明度、旋转角度形成合力，以及如何用在线 PDF 水印工具快速高效完成添加。

### 水印的两大用途与设计差异

水印分两类，需求截然不同。

**署名版权水印**：目的是宣示所有权，适用于创意文档、设计稿、原创文章。这类水印讲究"精致但不刺眼"，通常采用小字号（8-12pt）、浅色（20%-30% 透明度）、水平方向，放在页脚或角落。企业品牌水印、设计师签名也属这类。视觉目标是给阅读者传达"这是有出处的"，但不打扰核心内容。

**机密标识水印**：目的是防止非法转发，适用于合同、财务报告、内部文件。这类水印讲究"醒目和难移除"，通常采用大字号（20-36pt）、深色或红色（50%-70% 透明度）、45° 旋转对角线铺满全页。这样的设计即使被截屏或打印，水印痕迹也清晰可见，破坏者需付出高成本才能去掉。

**混合场景**：商业文档常用"页眉署名"（Header: "Confidential"）+ "页脚日期"（Footer: 当前日期）的组合，既标识机密性又记录发布时间，两个目的兼顾。

### 文字 vs 图片水印：选型指南

**文字水印**：直接在 PDF 中嵌入文本（如"草稿""机密"），优点是体积小、可搜索、支持自定义字体和颜色。缺点是容易被 PDF 编辑软件删除（Adobe 用 Acrobat 可修改）。法律上文字水印证明力较弱，因为修改痕迹难以追踪。

**图片水印**：把水印内容渲染成图片，然后按图层叠加到 PDF 页面底部或顶部，可以是位图（PNG）或矢量（SVG）。优点是难以编辑，删除需要一定技术；缺点是体积稍大，无法搜索内容。法律上图片水印（尤其是签名的扫描件）更难伪造，证明力更强。

**实践建议**：版权声明用文字水印快速添加；合同、财务文件等法律文件用图片水印（特别是签名水印）以增强证明力；如要双重防护，可文字 + 图片组合使用。

### 字号、透明度与旋转角度的搭配规则

水印的视觉设计有三个可调参数，需相互配合。

**字号与用途的关系**：署名版权通常 8-12pt，小而精致；机密标识通常 24-36pt，覆盖 A4 页面的 1/3 面积；标题式水印（如"DRAFT"）通常 48-72pt，占据页面中央。字号过小（<6pt）难以辨识，过大（>80pt）会严重遮挡内容。

**透明度的选择**：透明度用百分比表示，越低越透明。签名类水印通常 20-30%，刚好让人看出"有东西但不突兀"；标识类水印通常 40-60%，足够醒目但仍可读原文档；特殊强调（禁止转发、高度机密）通常 70%+，甚至完全不透明。

**旋转角度**：最常见是 45°（对角线倾斜），视觉上显得正式且难以水平裁切。水平（0°）更显低调，常用于签名和品牌标。垂直（90°）和其他角度在中文文档中罕见。

### 关键决策：每页都加 vs 仅首页加

**每页都加水印**（整文档水印）：适用于高机密文件、合同、财务报告，因为每一页都可能被单独截屏、拍照或打印转发。这样做的代价是 PDF 文件体积微微增大（通常增加 2-5%），且整体视觉更"官方"。金融机构、律师事务所、上市公司、政府部门通常采用全页水印策略，确保信息不被恶意传播。

**仅首页加水印**：适用于长期存档的文档，如员工手册、产品说明书、课程讲义，目的是标识来源而非阻止转发。这样节省空间，视觉上更干净，不会分散读者注意力。或者首页加彩色标题水印，后续页用页眉页脚进行轻量标识。

**最佳实践**：合同第一页"重处理"（大号水印 + 签名扫描件）作为法律凭证，后续页"轻处理"（页眉 "Confidential" 或页脚发布日期）为标识。这种梯度设计既有法律效力又不显冗余。

### 水印能否被移除与风险评估

简短答案：任何水印最终都能被移除，但成本和法律后果不同。

**文字水印**（PDF.js 或 pdf-lib 生成）：用 Adobe Acrobat Pro 或开源工具（如 PyPDF2）可以轻易删除，甚至有在线工具无需注册即可移除。法律上这不存在"防护"，仅是"标识"，删除不影响文件合法性，但会暴露意图。

**图片水印**：渲染成图片叠加的水印难度更高，需用图像处理软件（Photoshop、GIMP）逐页逐格编辑，或用 AI 去水印工具。但大幅降低了转发者的便利性。

**加密保护的 PDF**：如果 PDF 同时启用了"禁止打印""禁止复制"权限，那么即使用户打开了 PDF，也无法通过打印、截屏等方式轻易转发。打破加密需要破解密码（256 位 AES），成本高且属违法。

**结论**：水印的法律效力在于"故意移除被认定为侵权证据"，而非完全防护。对关键文件，应文字 + 图片 + 加密权限三管齐下。

### 使用在线 PDF 水印工具的完整流程

访问本站 PDF 水印工具，5 步即可完成全部操作：

1. **上传 PDF**：拖拽或点击选择 PDF 文件，工具支持单页和多页文档。最大文件限制通常 50MB，足够处理绝大多数商业文档。
2. **选择水印类型**：文字水印（推荐快速署名、版权标识）或图片水印（推荐法律文件、签名扫描件）。
3. **设置参数**：输入水印内容（如"机密""版权声明"），选择字体/大小/颜色，设置透明度（建议机密类 50-70%、签名类 20-30%），选择旋转角度（推荐 45° 标准）。
4. **预览效果**：勾选"预览首页"看实时效果，确认排版、颜色、清晰度无误再提交。
5. **下载输出**：工具生成新 PDF（完整保留原始排版、超链接、表单字段），下载到本地即刻使用。

所有处理在浏览器本地完成（零上传），敏感文件和商业合同完全安全。导出的 PDF 可立即发送、存档或打印。

### 常见问题

**Q: 水印的法律效力有多强？**

在中国，加盖水印的文件被认定为"有明确的版权标识"，侵权人如果故意删除水印，属"故意规避技术保护措施"，可被追究民事责任。但水印本身不能防止复制，仅能提高侵权人的成本和暴露意图。

**Q: 为什么 45° 角是最常见的水印角度？**

45° 对角线是设计规范，视觉上最不突兀且最难被裁切移除。如果用 0°（水平），被截屏后可能被简单平移掉；45° 则需要旋转原图，变得复杂。

**Q: 加密保护的 PDF 真的无法复制吗？**

不一定。用户权限加密（禁止打印、禁止复制）可防止软件菜单操作，但仍可被专业工具破解。安全加密应使用 256 位 AES，且设置强主密码。

**Q: 水印会影响 PDF 的文件大小吗？**

文字水印影响极小（几 KB），因为仅是指令；图片水印影响较明显（可增加 10-50%），取决于水印分辨率和复杂度。

**Q: 如何给已签名的合同添加水印？**

可以，只要 PDF 未被加密保护即可。先加水印后打印签名，或先签名后加水印（叠加在签名上方）。建议优先级顺序为：内容 → 签名 → 水印。

---

## 图片长拼图完全指南：朋友圈 / 微博 / 公众号尺寸最佳实践

> 长图制作不仅是美学，更是平台算法友好的关键。本指南详解何时用长图、社交平台的精确尺寸、纵横向选择、间距设计、对齐规则、体积优化与 SEO 陷阱。

URL: https://xtechtools.com/guides/image-stitch/
发布：2026-04-29 · 更新：2026-04-29

长图（或称条形图、竖长图）是内容运营的秘密武器：一张图讲清 10 个步骤无需换行输入，视觉冲击强劲有力，还能轻易在朋友圈、小红书、微博等平台引发「点击查看全图」的用户主动行为。但长图的尺寸并非越长越好，每个社交平台都有自己的「友好尺寸」标准，超过则被强制压缩或裁剪损失信息。本指南从何时用长图、各平台最佳尺寸标准、纵横向选择、间距与对齐设计规则、体积优化四个角度，手把手教你制作符合平台算法的高效长图。

### 何时用长图：3 个典型场景

长图并非万能，适用场景明确。

**场景 1：步骤教程与流程图**。"如何注册企业支付宝账户""新手 Photoshop 10 步入门"这类教程，用长图展示完整流程，每个步骤占 100-150px，用户下滑时自然阅读，无需翻页。微信公众号常用这种形式，从第 1 步 → 第 10 步 单线程讲解，信息密度高且易理解。

**场景 2：对比图与数据可视化**。"去年 vs 今年销售额对比""装修前后效果图"，左右或上下并排排列，直观展示差异。长图版本是纵向堆叠对比方案，占屏幕空间更高效。

**场景 3：文字摘抄与段落整理**。"职场智慧 20 条""好书笔记精选"，把多段文字排成长图，配以装饰性背景和字体。这类内容在小红书、微博很受欢迎，因为长图自带"认真整理的感觉"。

**不适用场景**：单张高质量摄影作品、产品细节展示（需高清）、需要评论互动的内容（长图易被压缩），这些还是用原图分单张发或轮播效果。

### 社交平台尺寸大全与压缩规则

**微信朋友圈**：推荐 1080 × 1440 px（9:12 比例）或 1080 × 1920 px（9:16 比例）。朋友圈信息流中图片宽度固定 1080px，长度最多显示约 1440px，超过则被压缩或折叠成"点击查看全图"。如果长图超过 1440px，平台会自动添加"查看全图"提示，鼓励点击，实际上对传播有利。完整长图可达 4000px+，但建议不超过 3000px 避免卡顿。

**微博**：推荐宽度 1080px，高度 1500-2000px（4:5 到 4:7 比例）。微博信息流宽度也是 1080px，但对长度更宽松，可以展示更长的图片而不折叠。超过 2000px 时会自动添加"展开图片"提示。

**抖音 / 小红书**：推荐 1080 × 1440 px（9:12）到 1080 × 1920 px（9:16），与朋友圈一致。这是竖屏标准比例，符合移动设备视口。

**微信公众号**：推荐宽度 540px 或 1080px（取决于排版）。公众号文章内嵌图片通常居中对齐，宽度受文章容器限制。长图在公众号中表现最佳，因为用户习惯下滑阅读，长图自然融入阅读节奏。

**实践建议**：统一采用 1080px 宽度，根据内容调整高度。设计时留足 10-20% 上下边距，避免被平台自动裁切。

### 纵向 vs 横向：如何选择

**纵向长图（竖长图，9:12 - 9:16 比例）**：完全适配移动设备竖屏，天生符合用户滑动习惯。朋友圈、微博、小红书等所有信息流都是竖屏优先显示，纵向长图加载快、不需要任何横向滑动、显示完整。缺点是内容行数多时容易显得"很长"，用户需要花时间下滑阅读，可能中途放弃。但这对 SEO 和内容完整度是正收益。

**横向长图（超宽图，16:9 - 20:9 比例）**：不常见但在特定场景独特有效。适用于数据大屏展示、多列对比表、金融报表等。但在竖屏移动设备中会被强制压缩、两侧裁剪，无法完整展示细节。用户需要手动旋转屏幕或点击放大才能看清。

**推荐策略**：99% 的内容运营场景用纵向长图（步骤教程、段落摘抄、对比文案）。仅在需要展示 Excel 表格、完整财务报表、建筑蓝图时考虑横向，且需在文案醒目位置提示"建议横屏查看"或"点击放大"。

### 间距、字号与对齐规则的设计金律

长图的视觉舒适度取决于排版细节。

**间距规范**：上下边距（Top/Bottom Margin）通常 20-40px，让内容有"呼吸感"。段落间距（Between Sections）通常 30-60px，根据内容密度调整。分割线（如果有）宽度建议 1-2px，颜色取背景的 20% 灰度。白边（纯白区域）通常 10-20px，显得"整洁专业"。

**字号搭配**：主标题 24-32px（加粗），段落标题 16-20px（中等），正文 14-16px，辅助信息 12px。字号大小差异足够清晰（不要相差 <4px），但不要超过 3 个层级，避免视觉混乱。

**对齐规则**：多图时左对齐最安全（与阅读方向一致），居中对齐显得正式（适合标题、证书式设计），右对齐罕见但可用于强调。混合对齐容易显得随意，避免。如果是不同大小的图片组合，建议 Grid 对齐（网格排列）而非自由堆砌。

### 图片大小不一时的对齐与缩放策略

实际制作长图时常遇到"图片尺寸参差不齐"的问题。

**方案 1：统一裁剪成 1:1 正方形**。把每张图片裁成 600 × 600px（或按宽度 1080px 自适应），纵向排列。优点是整齐划一，视觉和谐；缺点是可能损失原图信息（如果原图是 16:9，强行裁 1:1 会截头或截脚）。适用于人物肖像、物品 flat lay 等可以居中的图片。

**方案 2：按原始比例缩放，居中放置**。保留每张图片原始宽高比，缩放至相同宽度（通常 900-1000px），然后居中叠加白色背景（类似 Instagram 的 "Add Yours" 效果）。这样不会裁剪，但可能图片之间高度不一，需要调整段间距补偿。

**方案 3：左对齐模式**。所有图片左对齐（而非居中），自然高度会参差不齐。适用于"照片墙"或"创意拼贴"风格，显得随意和年轻。但容易显得不专业，不推荐商业用途。

**最佳实践**：核心图片（如演讲现场、产品图）用方案 1 保证整洁；辅助图片（如截图、数据图表）用方案 2 保留原始信息；创意运营内容用方案 3。

### 文件体积优化与格式选择

长图制作后的文件体积直接影响上传和转发效率。

**PNG vs JPEG vs WebP**：PNG 保真度最高（适合文字、设计稿），但体积大（同分辨率下 JPEG 的 2-3 倍）；JPEG 压缩率高（适合摄影），但有损压缩；WebP 结合两者优点（体积比 PNG 小 40%），但兼容性较旧设备需测试。

**推荐方案**：设计类长图（包含文字、扁平风格）用 PNG 导出；摄影类长图用 JPEG（质量 85-90%）；如目标用户都是新机器（iOS 15+、Android 12+），可用 WebP 节省 40% 空间。

**具体指标**：1080 × 1920px 的 PNG 通常 1.5-3MB，JPEG 约 300-600KB，WebP 约 200-400KB。长图上传到微信时，如果超过 5MB 会被压缩，导致模糊。最佳做法是在设计工具（Photoshop、Figma）中直接导出至 1080px 宽度、质量 85%，确保体积控制在 1MB 以内。

**优化技巧**：减少图层数、合并透明层、移除 EXIF 元数据、用在线工具（如 TinyPNG）进一步压缩 15-20%。

### 常见问题

**Q: 长图超过朋友圈推荐高度会怎样？**

朋友圈会自动检测，超过 1440px 时添加"点击查看全图"提示，用户需点击才能看完整图。这实际上会增加点击率和阅读深度，对传播反而有利。

**Q: 微信公众号长图应该用多大尺寸？**

540px（旧版）或 1080px（新版推荐）宽度。公众号文章容器宽度约 540px，但用 1080px 设计、发布时会自动缩放，显示效果更清晰。

**Q: 长图的最佳高度是多少？**

无绝对标准，但 1500-2000px 是黄金区间，既能容纳充足信息（8-12 个步骤或段落），又不会显得"过长"导致用户放弃阅读。超过 3000px 需谨慎测试。

**Q: 能用 JPEG 替代 PNG 做设计稿长图吗？**

不推荐。设计稿包含大量纯色和文字，JPEG 的有损压缩会导致文字边缘模糊、颜色失真。必须用 PNG。若体积过大，改用 WebP。

**Q: 为什么不直接用长图代替多张图的轮播？**

SEO 和平台算法的原因。多张图的轮播能增加"互动行为"（用户滑动），而长图是被动阅读。从内容营销角度，轮播图的传播数据更好看。但从内容完整性，长图优势明显。

---

## 朋友圈九宫格切图完全指南：算法 / 技巧 / 美学

> 九宫格并非简单的等分裁剪，涉及比例约束、视觉线索设计、发布顺序算法与美学考量。本指南详解九宫格原理、切图防裁技巧、长视觉线索贯穿、发布顺序、工具选型。

URL: https://xtechtools.com/guides/image-grid-cut/
发布：2026-04-29 · 更新：2026-04-29

朋友圈九宫格发布是运营者的"视觉签名"：滑开某个人的朋友圈，看到那整齐的 3×3 网格，一眼就能看出账号的调性、品牌气质、内容质感。但九宫格看似简单（就是 3×3 切图呀），实际包含数学、美学、甚至心理学：为什么必须是 1:1 正方形比例？为什么人脸要故意跨越多个方格？为什么发布顺序反而不是 1-2-3 而是要倒序？本指南从九宫格的起源、切图算法、防裁技巧、发布逻辑四个维度，让你掌握朋友圈最 In 的发布方式。

### 九宫格的起源与 3×3 vs 1×9 vs 9×1 的区别

Instagram 在 2013 年引入 Grid Feed（网格信息流），用户头像下展示最近 9 张上传的照片，排成 3 行 3 列。这个设计影响深远：朋友圈、小红书、微博等都借鉴了这一概念。

**为什么是 3×3？**因为手机屏幕宽度约 375-432px（iPhone），3 列最多（4 列会显得太拥挤），3 行是默认可见行数（不需要过度滑动）。九宫格成为了一个视觉"标志"，代表整体美学和品牌调性。

**3×3 vs 1×9 vs 9×1 的视觉差异**：

- **3×3（九宫格）**：最平衡，综合展示 9 张高质量图，容易形成整体视觉冲击，像一个"作品集"。用户扫一眼就能感受账号调性。
- **1×9（单列）**：信息流式发布，像讲故事。容易显得"散乱"，但适合叙事性内容（如旅游日记 Day 1 → Day 9）。
- **9×1（单行）**：极其罕见，用于特殊场景（如对比照前后）。视觉上显得"狭长"，不美观。

实际上，朋友圈九宫格的核心价值是**视觉聚合**：9 张散图通过精心排列、配色、构图，形成一个和谐的整体。就像相机胶卷的预览视图，一眼看整个故事。

### 为什么必须是 1:1 比例：比例约束与裁剪风险

**技术原因**：朋友圈、Instagram 的网格显示器算法固定每个方格为 1:1 正方形。如果上传的图片是 16:9（宽屏），平台会自动裁剪成 1:1，导致头被切掉、重点内容消失。

**数学证明**：若原图 16:9（宽 1600px、高 900px），强行裁 1:1（1000 × 1000px），会损失上下各 450px 的内容，仅保留中间 1000px 高度。

**视觉后果**：人物拍摄时，头和脚容易被裁掉；建筑拍摄时，顶部被裁；横向构图的作品显得"被截断"。专业运营者的做法是：

**预防方案**：在拍摄和设计时，就预留 1:1 的"安全区"。比如人物摄影，预留上下各 20% 边距（共 40%），确保中心 1:1 部分无论如何裁剪都完整。Photoshop / Figma 中可直接设置 1:1 指南线边框，确保重点内容在框内。

**切图工具的对应方案**：本站「图片九宫格切图」工具的算法是"智能 1:1 重采样"，确保每个方格都自动居中裁剪（不是暴力压扁），最大化保留中心信息。

### 切图前的 padding 处理与防裁秘诀

切图前，务必在原图外添加安全边距（padding）。

**标准做法**：

1. 假设原图 3000 × 3000px（已是 1:1），要切成 9 个 1000 × 1000px 的方格。
2. 在原图外加 padding：上下左右各加 100px，使总尺寸变成 3200 × 3200px。
3. 新增的 padding 区域用"白色""淡灰色"或"透明"填充，取决于设计风格。
4. 然后再切 9 格，每个方格会自动包含 padding 的一部分，显得"有呼吸感"，不会显得图片被硬生生切割。

**防裁秘诀**：朋友圈九宫格的裁剪方式是"边缘裁剪"（Crop to Center），如果重点内容靠近边缘，容易被掉。解决方案：

- 人脸：必须在中心区域（距边缘 >10% 的距离）。
- 重点文字：不要贴边，周围预留 30px+ 白边。
- 多颜色背景：用渐变或纯色背景，避免颜色"被切半"显得突兀。
- 对称设计：如果两边都有内容，确保大小相等，被裁时才显得均衡。

### 长视觉线索设计：人脸 / 线条 / 色块如何贯穿

九宫格的高阶玩法是让某个视觉元素"贯穿"多个方格，形成连贯感。

**人脸贯穿**：经典案例是舞者或运动员的连拍，同一个人脸跨越上方 3 个方格（从左到右逐渐转身），这样看九宫格时能"追踪"这个人的动作，显得有生命力。实现方式是：拍摄 3 张连续动作照，分别裁成 1:1，左图切左脸、中间切正脸、右图切右脸，纵向排列。

**色块与渐变线**：用统一的背景色块或渐变线条连接方格。比如 9 个设计稿，分别展示品牌视觉系统的 9 个元素，但所有图都用同一个蓝色渐变底色。这样整体就像"是来自同一个品牌"。

**对角线与对称**：某些内容布局成对角线（左上 → 右下），或左右对称（中间是主体，两边是镜像），会形成"视觉重心"。用户看九宫格时眼睛会自然追随这条线。

**实现难度**：高级做法需在 Photoshop 中提前布局全 9 个方格，确保视觉线索精确对齐，然后再切分。快速做法是用本站「图片九宫格切图」工具，上传原图后预览 9 格效果，实时调整。

### 如何按正确顺序发布：朋友圈倒序 vs Instagram 网格顺序

这是很多人的误区。**朋友圈和 Instagram 显示顺序不同。**

**朋友圈（WeChat）发布顺序**：朋友圈的九宫格在首次查看时，显示的是最新的 9 张照片（按倒序，最新的在左上角）。具体是：

```
最新照片放左上方格
```

位置顺序：

```
[1] [2] [3]
[4] [5] [6]
[7] [8] [9]
```

其中 [1] 是最新的，[9] 是最旧的。所以如果想让某张特定照片出现在"视觉中心（[5]）"，需要先发 4 张，再发这张，再发 4 张。

**Instagram 网格顺序**：完全相反。Instagram Grid 显示的是最早上传的 9 张（按顺序，最早的在左上角）。位置顺序同上，但 [1] 是最早，[9] 是最新。

**小红书 / 微博**：各有自己的算法，通常跟随 Instagram 模式（最旧的在左上）。

**策略建议**：如果用朋友圈发布九宫格，先计划好 9 张图的顺序（比如按时间线、故事线），然后倒序上传：最后一张先发，第一张最后发。如果用 Instagram，直接按顺序发即可。

### Photoshop vs 专业工具的切片效率对比

**Photoshop 切片方法**（手工）：

1. 打开原图，Image → Canvas Size 扩展到 3×3 倍（如 3000 × 3000px）。
2. 用「切片工具」（Slice Tool）手动绘制 9 个 1000 × 1000px 的方格。
3. File → Export → Export as Web... 逐个导出，命名为 1.jpg, 2.jpg ... 9.jpg。

缺点：极其繁琐，容易对齐错位。优点：完全可控，可微调每个方格的位置。时间成本：15-30 分钟/9 格。

**专业工具（如本站「图片九宫格切图」）**：

1. 上传原图（支持 PNG / JPEG / WebP）。
2. 工具自动均分成 9 格，实时显示预览。
3. 若需要，可调整「安全边距""中心偏移"参数，重新生成。
4. 点下载，自动打包 9 张图（ZIP）或逐张下载。

缺点：不如 Photoshop 灵活。优点：3 步完成，自动对齐无误。时间成本：2-5 分钟。

**推荐场景**：日常运营用在线工具（快），设计稿精细调整用 Photoshop（控制）。绝大多数人用工具即可。

### 常见问题

**Q: 朋友圈九宫格必须是 9 张吗？**

不是。可以是 4 张（2×2）、6 张（2×3）、3 张（1×3）。但朋友圈默认预览显示 3×3，所以 9 张能形成最完整的视觉印象。少于 9 张容易显得"不完整"。

**Q: 如果上传的图片不是 1:1，平台会怎么处理？**

朋友圈会自动裁剪成 1:1 正方形，选择的是图片中心区域。如果重点内容靠边，会被无情切掉。所以设计时必须预留 1:1 安全区。

**Q: 为什么要倒序发布？能不能一次上传 9 张？**

朋友圈不支持"同时上传 9 张自动排成九宫格"的功能（有些第三方工具声称可以，但实际是先上传再调整）。倒序发布是为了控制最终显示的顺序。不想麻烦的话，可以用第三方社交媒体管理工具（如 Buffer、Later）自动排队发。

**Q: 朋友圈九宫格的每张图能修改说明文案吗？**

可以。朋友圈允许每张图片上传时各自输入说明（位置、心情、标签），但九宫格预览时看不到这些文案。只有点进去单张查看才能看。所以九宫格的故事性主要靠图片本身，文案是辅助。

**Q: 用切图工具生成的 9 张图，格式和清晰度会降低吗？**

不会。本站工具采用无损裁剪，直接从原图中提取 9 个区域，不涉及重新渲染或压缩。输出格式与输入保持一致（PNG in / PNG out），清晰度 100% 保留。

---

## 圆形头像完整指南：尺寸 / 边框 / 阴影 / 跨平台

> 一篇文章讲清楚微信、QQ、Twitter、LinkedIn 等社交平台对头像的尺寸要求，以及裁剪、边框、阴影、透明背景等设计细节。

URL: https://xtechtools.com/guides/image-avatar/
发布：2026-04-29 · 更新：2026-04-29

头像是你在网络上的第一印象，一个清晰、专业、有品味的头像能显著提升个人品牌形象和社交互动频率。但不同平台对头像尺寸、比例、格式的要求差异很大——微信 132×132、QQ 100×100、Twitter 400×400、LinkedIn 400×400。本指南全面覆盖所有主流平台的头像标准、原图智能裁剪算法、边框配色原则、阴影设计技巧，以及透明背景 PNG 导出与跨平台兼容性问题。适合个人档案完善、工作签名优化、社交媒体专业化、简历美化升级。

### 主流平台头像尺寸速查表

| 平台 | 推荐尺寸 | 文件格式 | 最大容量 | 比例 |
| --- | --- | --- | --- | --- |
| 微信 | 132 × 132 px | JPG / PNG | 2 MB | 正方形 |
| QQ | 100 × 100 px | JPG / PNG | 无限制 | 正方形 |
| Twitter / X | 400 × 400 px | JPG / PNG / GIF | 15 MB | 正方形 |
| LinkedIn | 400 × 400 px | JPG / PNG | 无限制 | 正方形 |
| 抖音 | 200 × 200 px（显示） | JPG / PNG | 2 MB | 正方形 |
| B 站 | 240 × 240 px（建议） | JPG / PNG | 10 MB | 正方形 |
| 淘宝 / 支付宝 | 200 × 200 px | JPG / PNG | 2 MB | 正方形 |

虽然这些平台最终都会缩放到特定尺寸显示，但**上传时用推荐尺寸**能避免格式转换时的质量损失。

### 原图比例不对怎么办：中心裁剪 vs 智能裁剪

很多人的原生照是 16:9 或 4:3 横向（相机 / 手机 / 屏幕截图），但头像需要 1:1 正方形。盲目裁剪会丢失关键信息。有两种常见办法：

**中心裁剪**：从照片正中心向四周截取最大正方形。优点是算法简单快速，缺点是假设人物总在中心——如果你的头偏左或偏上，边缘可能被直接切掉半边脸或肩膀。

**智能裁剪**：用 AI 模型检测人脸位置、眼睛、嘴巴、脸型边界，自动选择能容纳整张脸的最优裁剪框。本站图片工具集成了智能人脸检测，上传原图后自动生成裁剪预览，你还能在界面上手动微调框的位置和大小。大多数情况下比中心裁剪精准 80%。

**实战建议**：先用智能裁剪试试，如果检测不准（戴眼镜、侧脸、光线暗）就手动调整。确认满意后再导出到各平台的目标尺寸（132×132、400×400 等）。

### 边框配色与对比度

加一圈边框（1-3 px）能让头像轮廓更清晰，在深色背景（如微信夜间模式、Twitter 深色主题）上的显示效果更好，同时还有视觉装饰作用。但边框颜色选不对就会显得廉价或失效。选择边框的两个黄金法则：

**与衣着对比**：观察头像中你穿的衣服主色。穿深色衣服用亮色边框（白、浅灰、金色），穿浅色衣服用深色边框（深灰、黑色、深蓝）。对比度高，脸部（头像主体）才能凸显。

**与背景对比**：想象头像会出现在不同背景上（社交媒体白背景、深色夜间模式、彩色背景）。边框色在所有场景下都应该清晰可见——完全白边框在白背景下会融合消失，纯黑边框在深背景下也会消失。**最安全方案**：用你的个人品牌色（如品牌蓝的深 / 浅两个阶梯），或者试试 1px 深灰 + 1px 浅灰的对比双线，两种背景下都能看清。

本工具边框选项支持实时预览，多试几种颜色和宽度的组合，找到最适合你气质的。

### 外阴影增加深度感与降低容易觉得平的感受

一个常见的头像质感问题：纯头像直接放在白背景或网页上，容易显得像贴纸、很平、缺乏立体感。加一个微妙的阴影能立刻改善，制造「浮起来」的效果。

**阴影参数建议**：
- **模糊半径（Blur）**：4-6 px。太小（1-2px）显得尖锐不自然，太大（8px+）显得朦胧。4-5px 是最平衡的。
- **偏移（Offset）**：向下 2-3 px，水平不偏移（0）。模拟光线从上往下的自然阴影。
- **透明度**：15-25%。过深（40%+）会压抑感强，显得沉重；过浅（5%）看不见效果。
- **颜色**：黑色 #000000 或深灰 #333333。配色场景用稍浅一些的灰，保持柔和。

**应用场景**：
- 专业场景（简历 PDF、公司官网、工作证件）：加阴影显得庄重、正式
- 娱乐向社交账号（抖音、小红书）：可跳过或用极淡的阴影，保持活力感
- 品牌 Logo / 企业头像：如果背景是彩色或纹理，阴影能强化边界清晰度

### 透明背景 PNG 导出与平台兼容性

去掉头像周围的白色或单色背景，改用完全透明（Alpha 通道），这样头像可以无缝叠加在任何彩色或纹理背景上。导出时必须选 PNG 格式（JPG 不支持透明），并勾选「透明背景」选项。

**跨平台兼容性与现实**：
- **微信、QQ**：会自动把你的透明区域强制填充为白色（或根据主题色），透明的优势完全丧失。不建议为这两个平台费力做透明头像。
- **Twitter / X、LinkedIn、Facebook**：完全支持透明 PNG，显示时背景自动适应网站主背景色或用户设置的深浅主题。体验最佳。
- **网站前端**：如果你是开发者，透明 PNG 头像可以做成任何形状（圆形、六边形、自定义路径），CSS 掩码功能非常灵活。
- **专业社交平台**（GitHub、Stack Overflow、Medium）：通常支持透明，但会自动添加白色背景以保证可读性。

**实战建议**：如果头像只在微信 / QQ 用，干脆加一个纯色或渐变背景比做透明更聪明。如果是跨平台（LinkedIn 专业档案、博客、个人网站），透明 PNG 是黄金搭配。

### 矢量头像 vs 位图：不同场景的选择

**位图（Bitmap）**：由像素组成，照片、复杂插图都是位图。缩放时会糊。
- 照片头像 → 用位图
- 优点：细节丰富，能用美颜 / 皮肤修饰
- 缺点：放大会糊，文件通常较大

**矢量图（Vector）**：由数学曲线描述，放大不失真。适合扁平风、极简风。
- 公司 / 品牌头像、logo → 必须用矢量
- 个人卡通形象 → 可用矢量
- 优点：文件极小，放大无损，易于改色
- 缺点：不适合照片级细节

如果你是独立开发者或自由职业者，可以考虑设计一个简洁的矢量头像/logo，这样在 Figma、个人网站、GitHub 等地方统一使用，形成品牌认知。本工具目前处理位图，矢量设计推荐用 Figma / Illustrator。

### 头像修饰与美颜的度把握

现代头像工具和 APP 都内置了磨皮、美肤、美白、瘦脸、大眼等美颜功能。适度修饰能提升气质，但过度会造成几个问题：

1. **显得不真实**：网络头像过度美颜，第一次线下见面或视频通话时产生严重反差，显得不诚恳。
2. **在正式场景失分**：简历、工作证件照、企业介绍页，过度修饰会显得不专业、不严肃。
3. **视频通话暴露**：即使你的照片美颜得完美，视频通话时素颜、灯光、网络质量都是原相毕露。对比反而更尴尬。

**场景化修饰建议**：
- **娱乐社交媒体**（微博、小红书、抖音）：可轻度到中度美颜。这些平台用户都有美颜习惯，适度修饰显得精致、有质感。
- **专业场景**（LinkedIn、GitHub、公司官网）：无修饰或极轻修饰（仅调亮度 / 对比）。重点是显得清晰、阳光、和蔼可亲。
- **简历 / 证件照**：完全无修饰。招聘方和证件部门看的就是真实样貌。
- **修饰的底线**：去除明显瑕疵（痘痘、黑眼圈、皮肤瑕疵），调整肤色均匀度和整体亮度，但**保留真实的脸型、五官比例、气质**。

本工具的「增强」功能支持亮度、对比度、饱和度、清晰度等基础调整，完全足够了。如需高级磨皮，可用美图秀秀、Snapseed 等专业工具。

### 常见问题

**Q: 为什么我的头像在微信上看起来色差大？**

微信会自动压缩和色彩管理，尤其对 PNG 支持不如 JPG。建议上传前在 JPG 格式测试一遍，或者到「图片压缩」工具调优。

**Q: 头像多久换一次比较好？**

看场景。职业社交（LinkedIn、GitHub）可以 1-2 年换一次；个人社交（微博、微信）根据喜好，通常 3-6 月；企业官网员工头像稳定为主，除非公司重新品牌设计。

**Q: 正方形头像显脸宽怎么办？**

1. 智能裁剪时调整框的位置，让脸部略偏上或偏下；2. 加 2px 左右的细边框能在视觉上「纹理」脸宽；3. 穿竖条纹服装会显脸窄。

**Q: 能用卡通 avatar 当工作头像吗？**

看公司文化。科技 / 创意公司通常可以；传统行业（金融、政务、法律）最好用真实照片。折中方案是用真人照片的卡通风格插画版本。

**Q: 头像文件应该多大？**

最小 50 KB，最大 2 MB（大多数平台限制）。100-500 KB 最佳——既能保持清晰度又不浪费存储。用本站「图片压缩」工具可以快速调优。

**Q: iOS 系统相册里的头像照怎么导出？**

点击头像 → 编辑 → 保存为 JPG，或者直接截图。需要高清版本建议在电脑上用相机或美图软件重新处理。

---

## 图片格式转换完全指南：何时该用 PNG / JPG / WebP / AVIF

> 4 种主流图片格式的技术原理、压缩算法、兼容性对比，以及选型决策流程。含实测文件体积与浏览器兼容数据。

URL: https://xtechtools.com/guides/image-convert/
发布：2026-04-29 · 更新：2026-04-29

JPEG 统治了网络 25 年却因压缩痕迹明显、画质损失饱受诟病。PNG 保留细节但文件膨胀 2-3 倍。现在 WebP 和 AVIF 承诺同等画质下体积减半，但浏览器兼容性碎片化成为新瓶颈困局。选错格式要么用户压根看不了、要么网站加载巨慢。本指南用技术对比表、实测体积数据、完整兼容性矩阵全面剖析这 4 种格式的优劣与适用场景，帮你根据目标用户群体、内容特征、部署架构做出经过实测数据验证的最优决策。

### 4 种格式速览与技术对比表

| 格式 | 有损/无损 | 透明度 | 动画 | 压缩算法 | 兼容性 | 文件大小（相对） |
| --- | --- | --- | --- | --- | --- | --- |
| **JPEG** | 有损 | 否 | 否 | DCT + Huffman | 100%（所有浏览器） | 1x（基准） |
| **PNG** | 无损 | 是 | 否 | DEFLATE (zlib) | 100% | 2-3x（照片） / 1x（图标） |
| **WebP** | 有损 / 无损 | 是 | 是 | VP8 / VP8L | 96%（Chrome / Safari 14+ / Firefox 65+ / Edge） | 0.7-0.8x（照片） |
| **AVIF** | 有损 / 无损 | 是 | 是 | AV1 | 75%（Chrome / Firefox / Safari 16+ / Edge） | 0.5-0.6x（最优） |

**关键观察**：AVIF 文件最小但兼容性最差；JPEG 兼容性完美但不支持透明。

### 选型决策树：用哪个格式

```
1. 需要透明背景？
   ├─ 是 → PNG / WebP / AVIF
   └─ 否 → 进入第 2 步

2. 是照片还是图标 / 图形？
   ├─ 照片 → JPEG（保险） / WebP（现代） / AVIF（激进）
   └─ 图标 / 图形（线条图、文字、logo） → PNG / WebP / AVIF

3. 用户浏览器可能很老吗？
   ├─ 是（Android 4.x、IE、旧 Safari） → JPEG / PNG
   ├─ 否，但要兼顾各种设备 → WebP（+ JPEG 降级方案）
   └─ 否，追求最优体积 → AVIF（+ WebP 降级）

4. 文件体积是关键吗？
   ├─ 是，用户大多数 4G / 5G → AVIF
   ├─ 是，用户含大量 3G / 2G → WebP
   └─ 否，加载速度可接受 → JPEG / PNG
```

### 压缩算法差异与为什么 AVIF 最小

**JPEG (DCT + Huffman)**：分块 8×8 离散余弦变换，按人眼敏感度丢弃高频信息。适合照片，但有明显块状压缩痕迹。

**PNG (DEFLATE / zlib)**：无损压缩，逐像素预测（Predictor）+ Huffman 熵编码。适合图标，但对照片来说冗余度高，文件大。

**WebP (VP8 / VP8L)**：谷歌基于 VP8 视频编码器开发。有损模式下用现代变换编码（比 DCT 更高效），无损模式下用色彩缓存和预测。相比 JPEG 同质量能省 25-35% 体积。

**AVIF (AV1)**：最新的视频编码标准。比 VP8 更激进的分块、变换、熵编码。同等质量下比 WebP 再省 20-30%，是目前最高效的。但编码时间超长（可能要几分钟），CPU 消耗大。

**实测数据**（同一张 2000×1500 相机 JPG）：
- JPEG 品质 85：950 KB（基准）
- PNG：2.8 MB（无损转换）
- WebP 品质 85：680 KB（-28%）
- AVIF 品质 65：480 KB（-49%，几乎 1/2）

### 浏览器兼容性与降级方案

```html
<!-- 现代方案：picture 元素 + source fallback -->
<picture>
  <source srcset="image.avif" type="image/avif" />
  <source srcset="image.webp" type="image/webp" />
  <img src="image.jpg" alt="描述" />
</picture>
```

浏览器从上到下依次尝试，支持的第一个 type 就用那个，都不支持就用最后的 `<img>` JPEG 降级。

**兼容性数据（2026 年）**：
- AVIF：Chrome 85+（全覆盖）、Firefox 93+、Safari 16+、Edge 85+。不支持：Safari 15 及更早、iOS Safari 16 以下、Android 9 及更早
- WebP：所有现代浏览器，除了 IE（2022 年停止支持）
- JPEG / PNG：100%，包括所有古董浏览器

对中国用户而言，AVIF 的 iOS 兼容性特别需要关注（iPhone 12 及更早的 iOS 16 以下看不了）。

### 各社交平台与服务器默认格式

不同平台对上传格式的处理：

- **微博 / 小红书**：接受 JPG / PNG，会自动转 WebP 并 CDN 处理
- **抖音**：转 MP4 视频（处理图片作为视频首帧）
- **微信**：接受 JPG / PNG，会压缩并针对移动适配
- **Facebook / Instagram**：自动转最优格式（可能是 WebP / AVIF）
- **GitHub / GitLab**：不转，原样保存（源代码仓库）
- **CDN（阿里云 / 七牛）**：支持 on-the-fly 转换，URL 参数指定格式

**建议**：上传照片用 JPG（通用且小），上传图标 / logo 用 PNG（保留细节）。云 CDN 会帮你做多格式适配。

### HEIC（iPhone 原生格式）转换工作流

iPhone 12 及以后默认拍照格式是 HEIC（High Efficiency Image Container），比 JPG 小 40% 左右。但很多网站、应用、老设备不支持，必须转换。

**方案 1：本地转换（本工具支持）**
- 上传 HEIC 文件 → 选择转换为 JPG / PNG / WebP
- 本工具自动解码 + 转换，下载 JPG

**方案 2：在线转换（cloudconvert.com 等）**

**方案 3：批量转换（命令行）**
```
# macOS 用 ImageMagick
convert input.heic output.jpg

# 或用 ffmpeg
ffmpeg -i input.heic output.jpg
```

转换后通常选 JPG 品质 85 能达到平衡。

### 常见问题

**Q: 我应该什么时候用 AVIF？**

如果用户 90% 以上用 Chrome / Firefox 最新版（如企业内网、科技社区），用 AVIF。如果用户含老旧 iOS / 安卓，至少保留 WebP / JPEG 降级。

**Q: PNG 和 WebP 都支持透明，选哪个？**

体积敏感就 WebP；兼容性第一或有极古董设备就 PNG。对大多数网站，WebP 无损模式是最平衡的选择。

**Q: 同一张图压出不同品质，差别多大？**

JPEG 品质 95 vs 75 差 50%+ 体积，肉眼难辨（除非看细节）。建议在 75-85 之间测试，找肉眼接受的最小品质。

**Q: 能把 JPEG 转 PNG 变成无损吗？**

不能。JPEG 解压后的像素已经丢了信息，再转 PNG 也是有损的。应该从源文件（相机 RAW、原始 PNG）重新处理。

**Q: 工具多久能转出结果？**

JPG ↔ PNG / WebP 秒级；AVIF 编码因为复杂，可能要 10-30 秒。大文件更久，取决于本地 CPU。

**Q: 为什么有些格式会变得很大？**

可能是图形复杂、颜色层次多、或选择了品质太高。试试降低品质参数或用本工具的「自动优化」。

---

## 图片 Base64 / Data URL 完整指南：何时该嵌入 何时不该

> 什么时候把图片编码成 Base64 塞进 HTML / CSS，什么时候该引用 URL。含 4KB 阈值、HTTP 请求权衡、SVG 内联对比。

URL: https://xtechtools.com/guides/image-base64/
发布：2026-04-29 · 更新：2026-04-29

把图片内联成 Data URL 能省掉一个 HTTP 请求，却膨胀代码体积 33%——这笔账怎么算？4 KB 图标值得嵌入吗？邮件签名必须用 Base64 编码吗？本指南用数学成本模型、实测数据对比、浏览器缓存策略分析精确回答这些问题。同时揭示为什么 SVG 内联比 Base64 优雅 10 倍，以及 GZIP 压缩如何消解体积膨胀的威胁。适合前端性能优化、邮件营销、PWA 离线存储、API 返回编码图片等场景。

### Data URL 与 Base64 编码的原理

**Data URL 格式**：
```
data:[type];base64,[data]
```

例如：`data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA...`

**组成部分**：
- `data:` 前缀（标志 URI scheme）
- `image/png` MIME 类型（也可以是 jpeg、gif、svg+xml）
- `;base64` 表示后面用 Base64 编码（如不加表示 URL-encoded）
- 逗号后跟实际的 Base64 字符串（通常很长）

浏览器解析到 Data URL 时，直接解码二进制显示图片，无需额外 HTTP 请求。这是 Data URL 的核心优势。

### 嵌入 vs 引用 URL 的取舍（关键决策）

**嵌入 Data URL 的优势**：
- 减少 HTTP 请求数（特别是小图标，可省 10-100ms）
- 图片和 HTML / CSS 绑定在一起，不怕 CDN 图片 URL 过期
- 离线可用（如 PWA）

**嵌入的劣势**：
- 体积膨胀 33%（Base64 比原文件大）
- 代码难读（特别是 HTML/CSS 混着一大串 Base64）
- 浏览器缓存按文件粒度，嵌入图片的 HTML / CSS 再小改都要重新下载整个文件

**引用 URL 的优势**：
- 文件体积最小（图片、HTML、CSS 各自独立）
- 图片可被多个页面共享缓存（只下载一次）
- CDN 加速，用户就近获取
- 维护灵活（更新图片不影响代码）

**引用的劣势**：
- 额外的 HTTP 请求和延迟
- 跨域时需要 CORS 配置

**结论**：小于 4 KB 的图片嵌入省流量；大于 4 KB 的引用比较划算。4 KB 左右的分界线看具体应用，详见下一节。

### 4 KB 阈值的科学依据与实战案例

一个 4 KB PNG 图标的成本对比：

**嵌入成 Data URL**：Base64 后 5.5 KB，和 HTML 合并。每次页面访问都要重新下载这 5.5 KB，HTML 即使微改也要全量重传。

**引用独立 URL**：4 KB 文件 + 一次 HTTP 请求。首次 4 KB，之后浏览器缓存，其他页面复用 0 字节（缓存命中）。

**数学对比**：
- 嵌入方案：5.5 KB × N（N = 页面访问次数）
- 引用方案：4 KB × 1（首次）+ 0 × (N-1)（缓存）

**实战案例**：
1. **favicon.ico（1-2 KB）**：可嵌入或 CDN 引用
2. **按钮 icon（0.5-3 KB）**：嵌入或 SVG sprite 都可
3. **用户头像（50-200 KB）**：必须引用 URL
4. **banner（1+ MB）**：禁止嵌入

**经验法则**：< 2 KB 嵌入最佳；2-4 KB 看是否跨页面复用；> 4 KB 必须引用 CDN。

### HTML / CSS 中的应用与最佳实践

**在 CSS 中内联 icon（背景图）**：
```css
.btn-close {
  background-image: url('data:image/svg+xml;base64,...');
  width: 24px;
  height: 24px;
}
```

优点：减少一个 PNG 请求。缺点：CSS 文件变大。

**在 HTML 中内联图片**：
```html
<img src="data:image/png;base64,..." alt="logo" />
```

通常见于动态生成的验证码、图表、二维码。

**邮件签名中的内联图片**：
```html
<img src="data:image/png;base64,..." />
```

关键场景：很多邮件客户端不支持 HTTP 图片（安全考虑），必须用 Data URL。这是 Data URL 的最佳用例。

**best practices**：
- 只内联绝对必要的小图（logo、icon、加载动画）
- CSS 中用 Data URL 时考虑体积 vs 请求数的平衡
- 邮件 HTML 中必须用 Data URL
- 大图必须 URL 引用 + CDN
- 如果是 SVG icon，优先内联 SVG（而非 Base64 编码的 SVG）

### Base64 体积膨胀的 33% 陷阱与如何接受它

**为什么会膨胀？**

Base64 把每 3 字节（24 bits）编码成 4 个字符（每字符 6 bits）。
- 原始：3 字节
- 编码后：4 字符 = 4 字节
- 增长率：(4 - 3) / 3 = 33.33%

**实例**：
- 100 KB PNG → 133 KB Base64
- 1 MB JPEG → 1.33 MB Base64

**如何接受这个膨胀**：
1. **选择合适的阈值**：只内联 < 4 KB 的小文件，膨胀后也不到 6 KB
2. **使用压缩**：GZIP 能压缩重复的 Base64 字符，有效率回到 10-20% 膨胀（比不压缩强）
3. **评估收益**：省掉 1 个 HTTP 请求值 50-100 ms 延迟，相比之下 2 KB 的膨胀微不足道
4. **CDN 和缓存配合**：大文件用 CDN 引用，小文件可以嵌入或用 HTTP/2 Server Push 一并推送

**实战数据**：
- 嵌入 1 KB icon：膨胀 330 字节，但省 1 个 HTTP 请求（通常 50-200 ms）→ 划算
- 嵌入 100 KB 图片：膨胀 33 KB，但省 1 个请求 → 大多数不划算（特别是移动网络）

### SVG 图标比 Base64 更优的原因

如果要内联图标，用 SVG 而非 Base64 PNG 能获得显著优势。三种 SVG 方案对比：

**内联 SVG（推荐）**：50-150 字节纯文本，无膨胀，任意缩放无损，CSS 改色，支持动画。
```html
<svg viewBox="0 0 24 24"><path d="M6 18h12v2H6z" fill="currentColor" /></svg>
```

**SVG Data URL**：相比 Base64 编码 SVG 节省 33%（URL 编码优于 Base64）。

**SVG Sprite**：一个文件包含全部 icon，跨页面缓存。生产标准方案。

**体积对比（24×24 icon）**：
- 内联 SVG：50-150 字节
- Base64 PNG：600-1200 字节
- SVG 小 5-10 倍

**选型建议**：icon/logo 用 SVG（省 80% 体积）；照片用 PNG/JPEG URL 引用；混合场景 icon 用 sprite、照片用 CDN。

### 常见问题

**Q: 能把 Data URL 存进数据库吗？**

可以，但不推荐。数据库应该存 URL 指针或文件 ID，图片文件存在 CDN / 文件系统。Data URL 如果超大会爆炸数据库性能。

**Q: 邮件中的 Data URL 图片会泄露隐私吗？**

不会。Data URL 完全自包含，不涉及网络请求。但邮件正文本身有安全考虑，不建议邮件中嵌入个人数据。

**Q: 能在 <img src> 中直接放 Data URL 吗？**

可以。现代浏览器都支持 `<img src="data:...">`。但 SEO 和无障碍不友好（无法右键下载，搜索引擎处理困难）。

**Q: 跨域 img 标签能用 Data URL 吗？**

不涉及跨域。Data URL 就是文本，浏览器本地解码，没有网络请求，天然无跨域问题。

**Q: 本工具支持哪些图片格式转 Data URL？**

JPG / PNG / GIF / WebP / SVG。选择「转 Data URL」，上传图片后自动生成 Data URL，可一键复制到 HTML 或 CSS。

**Q: Base64 可以压缩吗？**

可以。GZIP 能很好地压缩 Base64（重复 Base64 字符多），通常能压缩到原来的 70-80%，部分抵消 33% 膨胀。

---

## 在线图片裁剪指南：构图三分法 + 比例选择

> 掌握构图三分法、常见裁剪比例、保留 EXIF 信息、与压缩的顺序等核心技能，用在线工具高效处理图片裁剪。

URL: https://xtechtools.com/guides/image-crop/
发布：2026-04-29 · 更新：2026-04-29

图片裁剪看似简单——拖动边框减掉不要的边缘就行。但比例选择、构图法则、何时保留 EXIF 元数据、先裁后压 vs 先压后裁的顺序，每一个决定都会深刻影响最终效果和文件大小。本指南用本站在线裁剪工具讲清楚每一步的原理与实战技巧，从手机自拍调整到电商商品图批量统一处理的全流程教学，让你快速掌握图片处理的核心技能和最佳实践方案。

### 黄金构图三分法（Rule of Thirds）

三分法是摄影界最基础、也最实用的构图法则，经过数百年艺术发展证明其科学性和有效性。把画面用两条竖线和两条横线分成 9 宫格，把主体（人物的眼睛、花朵的蕊、建筑的重点）放在 4 个交叉点上，而不是图片的正中心位置。这样的构图看起来自然流畅、富有张力和视觉冲击力，更能吸引观众的注意力。实例应用包括：人像摄影中眼睛放在上方两个交叉点，显得生动有神；风景摄影中地平线放在上下三分线上，不放在中线，避免沉闷；商品拍照中主体靠边放在三分点，背景分布均衡。本工具的裁剪框界面自带三分线网格显示（Grid 选项），拖动边框时对齐网格就能快速实现三分构图。

### 常见裁剪比例速查矩阵

不同的应用场景需要不同的宽高比例，这直接影响裁剪后的视觉效果和适用范围。4:3 用于普通照片、旧相机默认值和 PowerPoint 演示文稿；16:9 用于视频封面、YouTube 缩略图和电影影院标准；3:2 用于专业单反相机（Canon/Nikon 默认）、摄影杂志和印刷品；1:1 用于个人头像、微博头像和 Instagram 帖子；9:16 用于竖屏短视频如抖音/TikTok 和 Instagram Story；2:3 用于竖版摄影和手机竖持拍照。本工具提供预设快捷按钮，选定比例后裁剪框自动约束为该比例。也可手动输入像素尺寸（如 1920×1080），工具会自动计算并锁定比例确保准确无误。

### 裁剪 vs 调整大小的根本区别

初学者常混淆裁剪和调整大小，结果截然不同。裁剪（Crop）是去掉不要的边缘、保留中间部分的内容，输出尺寸变小但每个保留像素毫无变形、质量完全无损。例如 2400×1600 的照片裁成 1600×1200，只是删除了两侧边框、保留了中间所有像素的原始内容。调整大小（Resize/Scale）是改变整体尺寸，需要用插值算法补充或删除像素，必然会产生失真。把 2400×1600 缩到 1200×800 时，每个像素的颜色都被重新计算过，特别是文字边缘会显著模糊。本工具专门做裁剪，绝不改变每个保留像素的内容，只改变边界和尺寸信息。

### EXIF 元数据与 ICC 色彩配置文件

EXIF（可交换图像信息格式）是相机或手机写入图片内部的详细元数据：拍摄时间、相机型号、焦距、ISO 感光度、光圈值、GPS 坐标等。保留 EXIF 便于后期查证照片的拍摄环境和参数，专业摄影师常需要这些数据做对比和学习分析。但 EXIF 也包含 GPS 位置信息，会暴露拍摄地点，存在隐私风险。ICC 色彩配置文件（如 sRGB、Adobe RGB、ProPhoto）决定颜色在不同设备上的显示一致性和准确性。大部分网页用 sRGB 标准；专业摄影棚和印刷企业用 Adobe RGB 或 ProPhoto 获得更广的色域范围。本工具默认保留两者。裁剪后 EXIF 里的宽高会自动更新为新尺寸。

### 先裁后压 vs 先压后裁的正确顺序

顺序选择直接影响最终质量和文件体积。强烈推荐先裁后压：首先用本工具裁剪出所需比例和内容（完全无损保留所有像素），然后再用本站「图片压缩」工具优化质量参数、删除 EXIF、减小体积。这样做的优势是裁剪时保留所有像素的完整性，压缩时针对最终尺寸进行精确调参。反向的先压后裁则有严重隐患。压缩后的 JPEG 可能已删除元数据，再裁剪时数据无法回溯。经过一次 JPEG 有损压缩的图片再裁剪可能叠加 JPEG 伪影，产生奇怪的色块和边界锯齿，质量明显下降。

### 批量裁剪实战：电商商品图统一处理

电商运营的常见需求是 50 张商品图，都要统一为 1:1 正方形、背景白色、长边 1200 像素的标准格式。手工流程是：上传第一张图，选 1:1 比例、调整裁剪框让商品居中显示，下载原图 PNG；用「图片压缩」工具改为 1200×1200 像素、填充白色背景、压成 JPG；对剩余 49 张重复操作。加速建议包括：用相同角度和光线拍摄所有商品以保证照度和背景一致性，用手机三脚架固定稳定，预留足够边缘便于后期调整裁剪框。如需长期高频率批量处理，可考虑专业工具（Photoshop 的批处理脚本）或付费服务。

### 常见问题

**Q: 三分法是硬性规则吗？必须每次都用吗？**

三分法只是指导方针，不是硬性规则。它适合新手快速拍出均衡的照片，但艺术摄影、极简主义风格可能刻意打破三分法。关键是构图意图清晰、视觉层级明确。

**Q: 裁剪会降低图片的分辨率或 DPI 吗？**

不会。裁剪只删除边缘像素，保留部分的像素完全不变。如果原图是 300 DPI、裁剪后仍是 300 DPI。质量不损失。

**Q: 想直接在本工具改变图片大小怎么做？**

本工具专做裁剪。改变图片尺寸请用本站「图片压缩」工具的缩放功能，或下载裁剪后的图再处理。

**Q: 工具支持哪些图片输入和输出格式？**

输入：JPG、PNG、WebP、GIF；输出支持保持原格式或转为 PNG（便于保留透明度）。GIF 经裁剪后变成静态图，丧失动画效果。

**Q: 裁剪框怎么精确对齐到像素级别？**

拖动边框时参考网格线；也可手动输入精确坐标；部分浏览器支持方向键微调。

**Q: EXIF 被删除了还能恢复吗？**

不能。删除后元数据永久丧失。所以如果需要保留拍摄参数，务必在本工具裁剪时勾选「保留 EXIF」。

---

## 图片转 PDF 完整指南：扫描件 / 合同 / 教程汇编

> 手机拍照变扫描件、多张图合并交付、防止重排版等核心场景，用在线工具轻松搞定。

URL: https://xtechtools.com/guides/image-pdf/
发布：2026-04-29 · 更新：2026-04-29

从手机随意拍摄的文件照片到批量汇编教程截图，再到需要防止被修改的合同扫描件，将图片转成 PDF 是日常办公的高频需求。本指南讲清楚何时需要图转 PDF、如何优化文件大小、与专业扫描应用的功能对比、本工具的完全本地处理和隐私保护承诺。让你快速掌握从上传到下载的全流程，轻松处理各种常见文档。

### 三个最常见的图转 PDF 使用场景

场景 1：手机拍照变正式扫描件。员工请假单、房产证、营业执照用手机竖向拍照，光线不均、角度歪斜，看起来很随意不专业。转成 PDF 后可插入 Word、Email、上传到 OA 系统，比散落的 JPG 更正式、更易存档、打印时也更专业美观。这是最常见的办公需求，也是本工具的核心用途和目标场景。

场景 2：多张图合并成一个文档。教程截图 20 张、合同扫描件 3 页、发票底单 5 张，分别散落在文件夹里难以管理。汇总成一个 PDF 便于归档、邮件附件发送、打印装订，接收方也容易统一管理。

场景 3：防止内容被重排或修改。Word 文档多人编辑时容易格式乱套、字体缺失。转成 PDF 后文档被完全锁定，每台电脑都看到完全一致的样式。

### A4 vs Letter 纸张尺寸适配

| 尺寸 | 宽 × 高 | 适用地区 | 备注 |
| --- | --- | --- | --- |
| A4 | 210 × 297 mm | 全球标准 | 中国、欧盟、日本、印度等大多数国家 |
| Letter | 8.5" × 11" | 美国、加拿大、墨西哥 | 美系企业用得比较多 |

A4 比 Letter 稍高稍宽，所以如果一份 Letter 大小的内容强行转到 A4 PDF，可能会换页，造成版面混乱。本工具的建议：中国及其他非北美用户默认选 A4；美国加拿大用户选 Letter；不确定的情况下用 A4（全球通用，打印时可按实际纸张自动调整）。选择对的尺寸很重要，能直接影响打印效果。

### 图片嵌入 PDF 后体积为什么会增加

常见困惑：一张 2MB JPG 转成 PDF，结果文件变成 5MB，这是为什么呢？原因如下：JPG 在相机或编辑器里已经过有损压缩，尺寸已经很小且优化过。但 PDF 需要嵌入整个图像层，可能额外嵌入未压缩的像素缓冲、完整色彩空间信息、字体库、ICC 配置文件等复杂元数据。PNG 本身压缩率不如 JPG，转成 PDF 时体积会更大得多。

优化建议：转 PDF 前，用本站「图片压缩」工具先把 JPG 质量调到 75-85%（人眼几乎感知不出损失）；如果原始是 PNG，考虑转成 JPG；PDF 生成后可用 Ghostscript 进一步压缩。实测数据：1 张 A4 扫描件（2400×1800、3MB JPG）→ PDF 约 4-5MB；同一张先压到 90% 质量（1.2MB）→ PDF 约 2.5-3MB。前后差异显著。

### 批量图片排序、分页与合并

常见需求：30 张文件照片按时间顺序合并成一个 PDF。本工具流程很简单：一次性上传全部 JPG、工具显示预览缩略图排列、拖拽可重新排序、点「合并」选择纸张大小和压缩参数、下载 PDF 文件。排序细节值得注意：文件上传可能乱序，务必用拖拽重排；最好按文件名补零（01.jpg, 02.jpg，不要 1.jpg, 2.jpg）；如果原文件有 EXIF 拍摄时间，本工具可选「按拍摄时间排序」自动处理。分页模式有两种：「每张图独占一页」用于合同和发票；「多张图紧密排列」用于教程截图。

### 水印、隐私与安全处理

有时需要在扫描件或截图上加水印（如公司名、"仅供参考"标记）。本工具的推荐方案是：先用本站「图片编辑」或「添加水印」工具逐张图加水印，再用图转 PDF 合并。为什么不在 PDF 阶段加水印？因为 PDF 水印涉及复杂编码、文字大小、透明度、位置等参数，容易加到错位或过于显眼不美观。提前在图片层处理更可控灵活。

隐私建议很重要：扫描身份证、护照等敏感文件的照片，转 PDF 前考虑用「图片编辑」工具遮挡个人敏感信息（身份号、地址）。合同转 PDF 前删除文件名中的用户名。本工具完全本地处理，不上传任何数据到服务器，隐私材料完全掌握在用户手中。

### 与专业扫描应用的功能对比

专业扫描应用（CamScanner、扫描全能王等）的优势包括：自动边缘检测和透视修正（手机拍歪的文件自动拉直）、背景去噪（光线不好拍的照片自动增强对比度）、OCR 文字识别（提取文字可复制、可搜索）、云存储同步（多设备无缝协作）。

本工具的优势包括：完全本地处理（零上传风险，隐私材料掌控权在用户手中）、永久免费（无订阅费、无强制注册）、秒级处理（直接转，无需应用同步等待）。推荐组合使用：对扫描质量要求高、需要文字识别、想长期云端同步的用扫描全能王；只想快速把现有高质量图转成 PDF、特别是隐私文件的用本工具最省心。

### 常见问题

**Q: 图转 PDF 会改变或损失原图的颜色吗？**

不会。源图如果是原色 RGB，转 PDF 时会嵌入 sRGB 色彩空间，保持颜色一致（前提是源图和 PDF 阅读器都支持）。

**Q: 能把 PDF 转回图片吗？**

本工具专做图转 PDF。反向转换用本站其他「PDF 工具」模块的「PDF 提取图片」功能，或第三方在线工具。

**Q: 工具能处理多大的文件？**

理论上数百张 JPG，受浏览器内存限制。单个文件通常 ≤10MB；如果每张都很大（3MB+），建议分批处理。

**Q: PDF 生成后还能编辑里面的文字吗？**

本工具生成的 PDF 是图片嵌入，文字无法直接编辑（除非用 OCR）。需要可编辑 PDF，用 Word/Pages 先排版再导出。

**Q: 手机拍的文件歪斜，怎么自动拉直？**

本工具不含自动透视修正。用前可用「图片编辑」工具手动旋转，或用扫描全能王先拍照优化。

---

## Favicon 生成完整指南：尺寸矩阵 + 各浏览器要求

> 从简单的 16×16 到现代 SVG，掌握 favicon 尺寸矩阵、深色模式适配、SEO 影响等核心知识。

URL: https://xtechtools.com/guides/favicon/
发布：2026-04-29 · 更新：2026-04-29

Favicon（收藏夹图标）是浏览器标签页、书签栏、地址栏旁显示的小图标，看似不起眼，但涉及复杂的尺寸矩阵（从 16×16 到 512×512）、iOS/Android 平台差异、SVG 现代化技术、deepmode 自动切换等细节。本指南用本站工具讲清楚如何一次性生成全尺寸 favicon 并正确部署上传，以及它对网站 SEO 和品牌展现的深刻影响。掌握这些知识能显著提升网站专业度和用户体验。

### Favicon 的历史与演进路径

Favicon 起源于 20 世纪 90 年代后期的 Internet Explorer 浏览器。当时网站可在服务器根目录放一个 favicon.ico（16 色、16×16 像素），IE 自动识别并在地址栏旁显示小图标，这是网站品牌的最早展现形式。演进历程值得了解：1.0 版本（~1997）只有 favicon.ico 16 色 16×16；2.0 版本（~2005）PNG/GIF 开始支持、32×32 尺寸；3.0 版本（~2015）Apple Touch Icon、Android 图标标准化；4.0 版本（~2020）SVG favicon 浏览器支持、dark mode metadata。现代网站建议配置 SVG + PNG 多套尺寸，兼容所有设备与深色模式。本工具一次生成全套，自动处理这些复杂细节。

### 完整的 Favicon 尺寸矩阵参考

| 尺寸 | 用途 | 格式 | 浏览器 |
| --- | --- | --- | --- |
| 16×16 | 浏览器标签页、书签栏 | PNG 或 ICO | 所有 |
| 32×32 | Windows 快捷方式、书签栏高清 | PNG 或 ICO | 所有 |
| 48×48 | Windows 桌面快捷方式 | PNG 或 ICO | Windows |
| 128×128 | Chrome Web Store、扩展图标 | PNG | Chrome |
| 180×180 | Apple Touch Icon（iPhone/iPad 主屏） | PNG | iOS Safari |
| 192×192 | Android 主屏快捷方式、PWA 图标 | PNG | Android |
| 512×512 | PWA 启动画面、应用列表 | PNG | PWA |
| SVG | 现代浏览器、自适应缩放 | SVG（矢量） | Chrome 108+、Firefox 98+、Safari 16+ |

现实简化方案：至少配 16×16、32×32、180×180、192×192、SVG 这 5 套就能覆盖绝大多数场景和用户需求，满足大部分实际应用场景。

### Emoji 作为 Favicon 的创意用法

Favicon 有个酷炫用法：直接用 Emoji 当图标。在 HTML `<head>` 里加一行即可：

```html
<link rel="icon" href="data:image/svg+xml,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 100 100%22><text y=%22.9em%22 font-size=%2290%22>🚀</text></svg>">
```

浏览器标签页就会显示火箭 emoji。适合个人博客、实验项目、非正式网站快速展示个性。限制很重要：macOS 对 emoji favicon 支持差（系统偏好限制），只能用 SVG 或 PNG；Windows 上某些 emoji 显示为黑白不清晰；商业网站仍建议用规范设计的 PNG 图标以保证品牌一致性和跨平台显示。

### site.webmanifest 与 PWA 的关系

PWA（Progressive Web App）是可离线运行、安装到主屏的网页应用。需要一个 `site.webmanifest` 文件声明应用元数据，包含应用名称、图标、启动 URL 等配置。关键的图标配置如下：

```json
{
  "name": "完整应用名称",
  "short_name": "简称",
  "icons": [
    {"src": "/img/icon-192.png", "sizes": "192x192", "type": "image/png", "purpose": "any"},
    {"src": "/img/icon-512.png", "sizes": "512x512", "type": "image/png", "purpose": "any"}
  ]
}
```

Android 用户把网站添加到主屏时，Chrome 会使用 manifest 中的 192×192 或 512×512 图标。关键字段：`icons` 数组列出所有应用图标、`purpose` 字段区分 `any`（标准圆形）或 `maskable`（自适应形状）。本工具直接生成 manifest 模板，复制粘贴即用。

### 深色模式自动切换机制

现代操作系统（macOS Sonoma+、Windows 11、iOS 13+、Android 10+）支持深色模式。用户系统设置切换后，网页跟着变深色。Favicon 也应该适配——否则白底黑图在深色标签页上会看不清，用户体验差。解决方案：用 SVG + CSS media query 配置 light 和 dark 两套 favicon。当系统切换深色时，浏览器自动加载深色版本：

```html
<link rel="icon" href="/favicon-light.svg" media="(prefers-color-scheme: light)">
<link rel="icon" href="/favicon-dark.svg" media="(prefers-color-scheme: dark)">
```

另一方案是设计纯黑色 favicon（无背景），在浅色标签页显示黑、深色标签页上浏览器可能自动反色（因浏览器而异，不可靠）。本工具的「深色模式」选项会自动反色生成深色版本，双保险。

### Favicon 对 SEO 与品牌的微妙影响

Google 搜索结果页面会显示网站 favicon。没有配置 favicon 的网站，Google 显示一个灰色问号或通用图标，严重影响视觉辨识度和可信度。同时，Favicon 还有微妙但重要的影响：品牌识别度——用户在浏览器里开了 20 个标签页，一眼能看到你网站的 favicon 就能快速定位；搜索结果可信度——有精致 favicon 的网站比没有的显得更正式、更可信、更值得点击；Google 爬虫会抓取 favicon，作为网站可用性和维护状态的信号；CTR 提升——A/B 测试表明，显眼漂亮的 favicon 能提高点击率 10-15%。虽然 favicon 本身不是直接排名因子，但配置完善的网站给搜索引擎爬虫更好的第一印象。

### 部署方案：根目录默认 vs HTML 显式声明

有两种方式告诉浏览器 favicon 位置，各有优缺点：方案 1：根目录默认搜索。把 `favicon.ico` 放在网站根 `/`，浏览器访问任何页面时会自动请求根目录 favicon，不需要 HTML 里写任何标签。缺点是浏览器会发起额外的 HTTP 请求，影响加载速度。方案 2：HTML 显式声明（推荐）。在 `<head>` 里用 link 标签指定多个尺寸和格式，浏览器按需加载最匹配的版本。推荐做法是结合两者：部署一个 `favicon.ico` 到根目录（兼容超旧浏览器），同时在 HTML `<head>` 显式指向 PNG 和 SVG 版本。显式配置的好处是可指向 CDN、版本控制（`favicon.png?v=2`），确保更新后浏览器立即刷新而非缓存旧版本很久。

### 常见问题

**Q: 为什么 favicon 需要这么多尺寸？看起来很复杂。**

不同系统、不同场景需要不同清晰度。16×16 用于标签页需紧凑；512×512 用于 PWA 启动画面需高清。浏览器会根据情境选最适配尺寸。

**Q: ICO 格式和 PNG 哪个更好？**

PNG 更通用、压缩率高、支持透明度。ICO 只有历史兼容理由。建议用 PNG，只在需要兼容超旧 IE 浏览器时才生成 ICO。

**Q: 更新 favicon 后浏览器还显示旧版本怎么办？**

Favicon 有强缓存（通常 24 小时以上）。强制刷新的方法：改文件名或在 link 标签加查询参数（href="/favicon.png?v=2"）。

**Q: Apple Touch Icon 是什么？为什么要单独配置？**

iOS 用户把网站添加到主屏时，Safari 会使用 Apple Touch Icon（180×180）作为应用图标。不配置就用网站 favicon，效果通常不佳、尺寸不对。

**Q: 能在 favicon 里放文字或通知计数吗？**

可以。设计时在图标右下角加数字（如消息计数）或红色徽章。但 16×16 这么小很难看清，通常只在 192+ 尺寸才清晰、值得做。

**Q: 深色模式下浏览器会自动反转 favicon 颜色吗？**

因浏览器而异。Chrome/Edge 有时自动检测反色，Safari 不做。所以最保险方案是显式配置 light 和 dark 两套 favicon。

---

## CSS Grid 布局完全指南：从 12 栅格到响应式仪表盘

> 从 Flexbox 与 Grid 的选择、grid-template-columns/rows、fr 单位与 minmax()、auto-fit 与 auto-fill、到响应式仪表盘实战，一文掌握 CSS Grid 的所有核心用法。

URL: https://xtechtools.com/guides/css-grid/
发布：2026-04-29 · 更新：2026-04-29

CSS Grid 是现代 Web 布局的二维瑞士军刀，但很多开发者用了多年还没真正掌握它——常见的误区有把 Grid 当 Flexbox 用、盲目套用 12 栅格系统、不知道何时用 auto-fit vs auto-fill。本指南从「一维 vs 二维」的本质区分开始，深入讲解 grid-template-columns、fr 单位、minmax()、grid-area 命名、subgrid 新规范，最后用响应式仪表盘实战贯穿全部知识点。

### Flexbox vs CSS Grid：一维 vs 二维

Flexbox 和 Grid 都是强大的布局工具，但设计初心完全不同。

**Flexbox（一维）**：用于同一行（或列）内元素的对齐和分配。当你需要让若干项目沿一条轴线均匀分布、自动换行、或撑满容器时，用 Flexbox。典型场景：导航栏、工具栏、简单列表。

**CSS Grid（二维）**：同时控制行和列，非常适合复杂的整体布局。当页面由「顶部导航 + 侧边栏 + 主内容 + 底部 footer」这样多行多列的块状区域组成时，用 Grid。

**快速判断法**：问自己「我需要同时控制水平和竖直方向的对齐吗」？是 → Grid；只控制一个方向 → Flexbox。一个页面通常混用两者：外层页面框架用 Grid，内部卡片容器用 Flexbox。

### 核心属性：grid-template-columns 与 grid-template-rows

Grid 容器最关键的两个属性。

```
.container {
  display: grid;
  grid-template-columns: 200px 1fr 300px;  /* 3 列：固定 200px、弹性占满、固定 300px */
  grid-template-rows: auto 1fr auto;       /* 3 行：自动 / 弹性 / 自动 */
  gap: 16px;                               /* 行列间距 */
}
```

这个定义创建了一个 3 列 3 行的网格。中间列用 `1fr` 占满剩余空间。`fr` 单位是 Grid 独有的「弹性比例」单位，`1fr` 代表一份可用空间。如果你写 `1fr 2fr 1fr`，中间列会占其他两列的两倍宽度。

### 深入 minmax() 与响应式列宽

`minmax(min, max)` 是 Grid 最强大的响应式工具，它定义列的最小和最大宽度。

```
grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
```

这行代码的含义：尽可能多地创建 250px 到 1fr 宽度的列。容器宽 1000px 时能放 4 列（每列 250px）；宽 600px 时放 2 列；宽 200px 时放 1 列。自动响应，无需媒体查询！

**auto-fit vs auto-fill**：都表示「自动生成尽可能多的列」，区别很微妙。auto-fit 会「坍塌」空轨道（如果最后几列没有内容就隐藏），而 auto-fill 保留空轨道。99% 的场景用 auto-fit。

### 用 grid-area 做命名布局（最直观）

不想计算「这个元素放第几行第几列」？用 grid-template-areas 给不同区域命名。

```
.container {
  grid-template-columns: 200px 1fr;
  grid-template-rows: 60px 1fr 40px;
  grid-template-areas:
    "header header"
    "sidebar main"
    "footer footer";
}
.header { grid-area: header; }
.sidebar { grid-area: sidebar; }
.main { grid-area: main; }
.footer { grid-area: footer; }
```

这个布局清晰得像画图。响应式时只需改 grid-template-areas，元素的 grid-area 值不变。例如移动端可以全部堆成一列。

### 12 栅格 vs CSS Grid：什么时候用什么

Bootstrap 的 12 栅格系统（12 列划分）曾统治前端布局。现在该转向 CSS Grid 了。

**12 栅格的局限**：写 class="col-md-6 col-lg-4"，这是典型的「用 CSS 框架弥补语言能力不足」的设计。没有语义，依赖特定库。

**CSS Grid 的优势**：纯 CSS，不需要 HTML 类名，响应式用 minmax 搞定，维护灵活。但要注意：Grid 不是要完全替代栅格系统，而是说现代浏览器（2026 年已 99% 支持）不再需要 12 栅格库。

迁移建议：新项目直接用 Grid + minmax；老项目可逐步用 CSS Grid 重写核心布局，放弃栅格类名依赖。

### Subgrid：嵌套网格的利器（新规范）

Subgrid 是 CSS Grid 的 Level 2 新特性，让子元素继承父容器的网格定义。

```
.parent {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
}
.child {
  display: grid;
  grid-template-columns: subgrid;  /* 继承父的 4 列 */
}
```

优势：不用重复定义列数，子元素自动对齐父元素的网格轨道。非常适合卡片网格中每张卡片的内部布局。浏览器支持率已达 85%+（Chrome 117+、Firefox 71+）。

### 实战：响应式仪表盘

把所有知识点组合起来，构建一个从 12 列 → 6 列 → 3 列 → 1 列的响应式仪表盘：

```
.dashboard {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 20px;
  padding: 20px;
}
.card {
  border: 1px solid #e5e7eb;
  border-radius: 8px;
  padding: 16px;
}
```

加上媒体查询微调：`@media (max-width: 768px) { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); }`。250px → 200px，在平板上会自动从 3 列变 2 列。

如果仪表盘需要「大卡占 2 列」的布局：`.card.featured { grid-column: span 2; }` 搞定。Grid 的灵活性远超旧时代的栅格库。

### 常见问题

**Q: CSS Grid 会不会让 Flexbox 淘汰？**

不会。两者服务于不同场景。Grid 用于整体二维布局，Flexbox 用于一维对齐。一个页面通常同时用两者，外层 Grid 包裹下层 Flexbox 容器。

**Q: grid-auto-flow 有什么用？**

控制自动放置算法的方向。默认 row（从左往右填充），改成 column（从上往下填充），或 dense（填补空隙）。大多数场景不需要改。

**Q: IE11 还需要支持 Grid 吗？**

2026 年已不必。IE11 市场占有率接近 0，且 Grid 在 IE 中的实现完全不同。直接用现代语法即可。

**Q: 响应式时应该用媒体查询还是 minmax()?**

优先 minmax()，更声明式。只在需要细粒度控制（如改变行高、间距）时才用媒体查询。最小化媒体查询，最大化 Grid 的自适应能力。

**Q: repeat() 和 repeat(auto-fit) 的区别?**

repeat(3, 1fr) 死板地创建 3 列；repeat(auto-fit, minmax(200px, 1fr)) 根据容器宽度自动生成列数，更灵活。

**Q: 如何调试 Grid 布局？**

现代浏览器开发者工具都内置 Grid 调试：在 DevTools 中选中容器，Layout 面板会画出网格线，悬停元素会高亮所在轨道。非常直观。

---

## CSS clip-path 完全指南：异形剪裁 + 动画 + SVG 引用

> 掌握 clip-path 五大函数（circle、ellipse、polygon、inset、path）、用 polygon 绘制自定义形状、实现"撕开"动画效果、与 SVG <clipPath> 互引用、理解与 mask 的区别、移动端兼容性处理。

URL: https://xtechtools.com/guides/clip-path/
发布：2026-04-29 · 更新：2026-04-29

clip-path 是 CSS 实现异形图片、"撕开"动画、不规则边框的魔法工具，但很多开发者只知道用 circle 或 ellipse，对 polygon、path、SVG 互引用缺乏深入理解。本指南系统讲解 clip-path 五大函数、polygon 自定义形状、关键帧动画、mask 的区别、SVG <clipPath> 互引用、以及移动端性能优化，帮你掌握现代 Web 设计中的高级异形裁剪技巧。

### clip-path 的五大函数

clip-path 用一个剪裁区域定义元素的可见范围，区域外的内容被裁剪掉（透明）。五个核心函数：

```
clip-path: circle(50%);                    /* 圆形，半径 50% */
clip-path: ellipse(30% 50%);              /* 椭圆，x/y 半径 */
clip-path: polygon(0 0, 100% 0, 50% 100%); /* 三角形，坐标列表 */
clip-path: inset(10px 20px);              /* 矩形内缩，距离四边 */
clip-path: path('M0 0 L100 0 L50 100 Z'); /* SVG 路径，完全自由 */
```

其中 polygon 和 path 最强大，可以绘制任意形状。circle 和 ellipse 的百分比相对于容器尺寸（宽或高的较小值）。inset 用于"微调"矩形边界，通常与媒体查询配合。

### polygon 绘制自定义形状

掌握 polygon 就能实现 95% 的异形需求。坐标系从左上角 (0, 0) 开始，百分比表示相对容器宽高。

**五边星**：
```
clip-path: polygon(
  50% 0%,
  61% 35%, 100% 35%, 68% 57%, 79% 91%, 50% 70%, 21% 91%, 32% 57%, 0% 35%, 39% 35%
);
```

**心形**：
```
clip-path: polygon(
  50% 100%, 0% 38%, 0% 0%, 35% 0%, 50% 20%, 65% 0%, 100% 0%, 100% 38%
);
```

工具推荐：用在线 clippy（polished.js 作者的工具）逐点可视化，调完再复制到代码。坐标多的时候用生成器省时间。

### 动画：实现"撕开"效果

clip-path 可以动画化，通过逐帧改变坐标，实现类似撕开纸张的视觉效果。

```
@keyframes tear {
  0% { clip-path: polygon(0% 0%, 0% 0%, 0% 100%, 0% 100%); }
  50% { clip-path: polygon(0% 0%, 50% 20%, 50% 80%, 0% 100%); }
  100% { clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%); }
}
.element { animation: tear 1s ease-in-out; }
```

从左边界逐渐撕开到完全显示。关键是每帧的坐标数量必须相同，否则浏览器无法插值。设置三角形 → 四边形 → 完整矩形，每个形状都是四边形（即使有些点重合）。

### SVG <clipPath> 与 CSS clip-path 互引用

在 SVG 中定义复杂的剪裁路径，然后在 CSS 中引用，可以复用同一个路径。

```html
<svg style="display: none">
  <defs>
    <clipPath id="myClip" clipPathUnits="objectBoundingBox">
      <circle cx="0.5" cy="0.5" r="0.4" />
    </clipPath>
  </defs>
</svg>

<style>
  .element { clip-path: url(#myClip); }
</style>
```

objectBoundingBox 使坐标相对于元素的边界框（0-1 之间），userSpaceOnUse 则是绝对像素。反向也行：SVG 内的元素用 `<image clip-path="url(#myClip)">` 直接引用 SVG 定义。这样设计系统可以一份 SVG 定义、多处 CSS 复用。

### mask vs clip-path：透明度 vs 硬边界

两个都能隐藏元素的一部分，但机制完全不同。

**clip-path**：用几何形状硬切割，区域外完全透明，不能渐变。性能好。

**mask**：用图像的透明度通道作为遮罩。黑色部分隐藏，白色显示，灰色半透明。可以实现渐变、柔和边界。

```
.element-clip { clip-path: circle(50%); }              /* 硬边界圆形 */
.element-mask { mask-image: radial-gradient(...); }    /* 柔和渐变边界 */
```

**选择标准**：需要硬的几何边界（星形、三角形）→ clip-path；需要柔和过渡或复杂效果（渐隐边界、光晕）→ mask。

### 性能与浏览器兼容性

clip-path 在现代浏览器性能很好，因为它是 GPU 加速的。但要注意移动端细节。

**兼容性**：circle、ellipse、polygon、inset 在所有现代浏览器支持（包括移动 Safari）；path() 函数支持率较低（Chrome 88+），需要 fallback；url() 引用 SVG clipPath 在 iOS Safari 12+ 才支持。

**性能建议**：
- clip-path 改变时不会重排，只是重绘（GPU 加速），性能远优于 border-radius 或图片裁剪。
- 避免频繁改变 clip-path（每帧）；如需动画，用 `will-change: clip-path` 提示浏览器。
- polygon 坐标数越少越快，复杂形状考虑用 path SVG 路径。

移动端：clip-path 在低端 Android 设备可能掉帧，测试时留意。

### 实战案例：交互式异形按钮

结合以上知识，构建一个悬停时"展开"的异形按钮：

```html
<button class="morph-btn">Hover me</button>

<style>
.morph-btn {
  clip-path: polygon(20% 0%, 80% 0%, 100% 100%, 0% 100%);
  transition: clip-path 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  padding: 12px 24px;
  color: white;
  border: none;
  cursor: pointer;
}
.morph-btn:hover {
  clip-path: polygon(0% 0%, 100% 0%, 100% 100%, 0% 100%);
}
</style>
```

默认是梯形，悬停时变成完整矩形。用 cubic-bezier 弹簧曲线让展开更有趣。这样的交互用传统 border-radius 完全做不到。

### 常见问题

**Q: clip-path 的性能比 border-radius 好吗？**

好得多。clip-path 改变时不触发重排，只是重绘，GPU 加速快。border-radius 改变会重排。但日常 border-radius 已很快，除非频繁动画。

**Q: polygon 的坐标太多了，手工写很麻烦怎么办？**

用在线工具（如 clippy.js、CSS clip-path maker）可视化拖拽，或从 SVG 图形自动转换坐标。也可以用 Figma 导出 SVG，再提取坐标。

**Q: clip-path: path() 在 Safari 上不支持怎么办？**

用 @supports 检测或直接降级到 polygon，或用 SVG <clipPath> 在所有浏览器都支持的方案。

**Q: clip-path 能与 box-shadow 一起用吗？**

不能。box-shadow 是在元素外绘制，clip-path 会把影子也裁掉。必须把阴影放在伪元素或单独的元素上。

**Q: clip-path 应用到 <img> 和 <div background> 有区别吗？**

没有。clip-path 作用于元素的 border-box，无论内容是图片还是背景都一样。但 <img> 上的 clip-path 在某些旧移动设备可能卡顿，用 <div> 包裹会更稳。

---

## CSS 圆角完全指南：单角 / 椭圆 / 异形按钮

> 从 border-radius 速记法到独立四角写法、椭圆圆角、超大半径胶囊形、blob 动画形状、与 overflow:hidden 的配合、SVG vs CSS 圆角的选择、阴影与圆角的视觉互动。

URL: https://xtechtools.com/guides/border-radius/
发布：2026-04-29 · 更新：2026-04-29

border-radius 是最被低估的 CSS 属性之一。大多数开发者只会用 border-radius: 8px，但这个属性能做出椭圆、半圆、胶囊形、不规则 blob 形状，甚至配合关键帧动画做流体效果。本指南从速记法与独立角写法讲起，深入椭圆圆角、超大半径胶囊形、blob 动画、overflow 配合裁剪、SVG 对比、以及 box-shadow 视觉互动等高级技巧，帮你全面掌握这个强大属性。

### 速记法与独立角写法

border-radius 支持 1 到 4 个值的速记法，类似 margin/padding：

```
border-radius: 8px;                              /* 四角都 8px */
border-radius: 8px 16px;                         /* 上下 8px，左右 16px */
border-radius: 8px 16px 24px;                    /* 上 8px，左右 16px，下 24px */
border-radius: 8px 16px 24px 32px;               /* 上右下左，顺时针 */
```

独立写法更清晰：
```
border-top-left-radius: 8px;
border-top-right-radius: 16px;
border-bottom-right-radius: 24px;
border-bottom-left-radius: 32px;
```

实际上 border-radius 可以有 8 个值（用 `/` 分隔水平和竖直半径），但大多数场景不需要这么复杂。

### 椭圆圆角：水平 / 竖直半径分别控制

border-radius 的秘密是每个角其实是一个椭圆弧，水平和竖直半径可分别指定。

```
border-radius: 10px 20px;
```

这里 10px 是水平半径，20px 是竖直半径。结果是椭圆形的角。

完整写法：
```
border-radius: 10px 20px / 5px 15px;
/*          水平半径 / 竖直半径 */
```

这样四个角分别是不同的椭圆弧。用来制作"上面圆、下面方"这样的混合形状非常方便。配合特定长宽比，可以做出自然流畅的卡片边角。

### 超大半径生成胶囊形与半圆

把 border-radius 设成超过容器尺寸的值，可以生成胶囊形（两端半圆的矩形）。

```
.pill {
  width: 200px;
  height: 100px;
  border-radius: 50px;  /* 半径 = 高 / 2，生成胶囊形 */
}
```

或者用百分比更通用：
```
border-radius: 50%;
```

如果容器是正方形，border-radius: 50% 就是完整圆形；矩形时就是胶囊形。这是实现圆形头像、圆形按钮最简洁的方法。

半圆：
```
border-radius: 100px 100px 0 0;  /* 上两个角圆，下两个角方 */
```

或者一行搞定：`border-radius: 100px 100px 0;` 利用速记法省略最后一个角（默认等于第二个）。

### Blob 形状与不同角的半径组合

让每个角有不同的半径，再加上不规则的宽高比，就能做出有机的 blob 形状。

```
.blob {
  width: 200px;
  height: 180px;
  border-radius: 40% 60% 50% 30% / 30% 50% 40% 60%;
}
```

这样的形状看起来像液体 blob。加上动画：

```
@keyframes blob {
  0% { border-radius: 40% 60% 50% 30% / 30% 50% 40% 60%; }
  50% { border-radius: 30% 70% 40% 40% / 50% 30% 60% 50%; }
  100% { border-radius: 40% 60% 50% 30% / 30% 50% 40% 60%; }
}
.blob { animation: blob 4s infinite; }
```

就能做出流体效果的形状变化。这在现代设计（如 Stripe、Figma）中很流行。

### 与 overflow: hidden 配合裁剪子元素

border-radius 单独只影响元素本身的边框和背景，子元素内容会溢出超过圆角。结合 overflow: hidden 才能彻底裁剪。

```
.card {
  border-radius: 8px;
  overflow: hidden;  /* 裁剪溢出内容 */
}
.card img {
  width: 100%;
  display: block;  /* 移除 inline gap */
}
```

没有 overflow: hidden，圆角图片的四角会显示出矩形图片的直角。这是卡片设计最常见的坑。

性能提示：overflow: hidden 在某些老设备会触发新的层叠上下文，有微小性能代价。现代设备完全无所谓，但如果列表有 1000+ 个卡片，可以用 clip-path: inset() 替代（更高效）。

### SVG vs CSS 圆角的选择标准

两种方式都能做圆角，选择取决于需求。

**CSS border-radius**：
- 优点：简单、性能好、支持动画、响应式自适应
- 缺点：只支持椭圆弧，不能做出完全自由的曲线（如贝塞尔曲线）

**SVG <rect> 或 <path>**：
- 优点：任意曲线形状、精确控制、可做复杂插图
- 缺点：需要外联或内联 SVG，文件更大，响应式需要特殊处理

**决策树**：
- 简单矩形 + 圆角 → CSS border-radius
- 圆形 / 胶囊形 → CSS border-radius: 50%
- 不规则 blob / 复杂曲线 → SVG <path>
- 卡片 / 按钮的圆角 → CSS（99% 的实际项目情况）

大多数场景（2026 年）用 CSS 就够了，除非设计稿明确要求 SVG 级别的曲线精度。

### 阴影与圆角的视觉互动

box-shadow 与 border-radius 配合使用，阴影会自动跟随圆角的曲线，产生自然的视觉效果。

```
.card {
  border-radius: 8px;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
}
```

这样阴影的 4 个角也是圆的，不会像有 border-radius 但没有阴影的元素那样显得生硬。

细节技巧：
- **多层阴影**：`box-shadow: 0 2px 4px rgba(0,0,0,0.1), 0 8px 16px rgba(0,0,0,0.08);` 做出更自然的深度
- **内阴影**：`box-shadow: inset 0 1px 2px rgba(255,255,255,0.5);` 在圆角内部高亮边缘，增强立体感
- **悬停效果**：增加阴影模糊距离或偏移量，`transition: box-shadow 0.3s;` 做出浮起效果

现代设计系统（Material Design 3 等）都用这样的组合定义组件：border-radius + box-shadow 就是一张卡片的全部。

### 常见问题

**Q: border-radius: 50% 对矩形和圆形分别是什么效果？**

对正方形，50% 就是完整圆形；对宽高不等的矩形，50% 是胶囊形（两端半圆）。百分比相对于元素的宽和高分别计算。

**Q: 为什么我的圆角图片四个角还是方的？**

忘了加 overflow: hidden。border-radius 只影响元素边框和背景，子元素的内容（如 <img>）会溢出超过圆角。加上 overflow: hidden 才能彻底裁剪。

**Q: border-radius 能动画化吗？**

可以，现代浏览器完全支持。用 @keyframes 改变 border-radius 值，或用 transition。性能很好，因为是 GPU 加速。

**Q: border-radius 与 clip-path 有什么区别？**

border-radius 只能做椭圆弧（包括圆形、胶囊形等组合），clip-path 可以做任意多边形和路径。两者都是裁剪，但 border-radius 更适合"微调边角"，clip-path 适合"自由形状"。

**Q: 用百分比 border-radius 响应式吗？**

不如想象中灵活。border-radius: 50% 对正方形是圆形，对矩形是胶囊形，随容器变化。但如果想"圆角的大小随容器宽度缩放"，用 CSS 变量 + calc() 更好：`border-radius: calc(var(--size) * 0.1);`

**Q: blob 动画的 border-radius 值是怎么设计的？**

通常在设计工具（如 Figma）中手工调，或用生成器（如 blobmaker.app）随机生成，再通过 @keyframes 逐帧变化。没有通用公式，靠审美和迭代。

---

## JSON / YAML / CSV 互转完整指南：格式选型 + 迁移技巧

> 对比 JSON、YAML、CSV 三种数据格式的本质差异，深入讲解嵌套深度、类型表达、何时该用谁，以及互转中的常见坑点与解决方案。

URL: https://xtechtools.com/guides/data-convert/
发布：2026-04-29 · 更新：2026-04-29

互联网时代，数据在 JSON、YAML、CSV 三种格式之间频繁流转。JSON 是 API 通信之王，YAML 统治配置文件，CSV 掌控表格数据导入导出。但它们并非简单的表层不同——本质上是为不同场景设计的三套体系，各自有独特优势与局限。本文深入对比三种格式的设计理念、适用边界与互转技巧，帮你快速定位用哪个、何时互转、怎样避免数据丢失，掌握实战常见坑点与方案。

### 三种格式的本质定位

JSON 是通用的数据交换标准，基于键值对和数组，天生支持无限嵌套，但语法严格（强制双引号、禁止尾随逗号）。任何支持 JSON 的编程语言都能无缝解析，是互联网通信的标准格式。YAML 是人类友好的配置语言，用缩进表达结构，自动推断类型（yes/no 识别为布尔值），适合开发者手写配置文件，减少大括号和引号的视觉噪音。CSV 是表格数据的扁平化表示，一行一条记录，逗号分隔字段，没有嵌套的概念，与 Excel 无缝兼容。三者就像编程中的"运输方式"：JSON 是飞机（快速、通用、成本高、跨界通用），YAML 是小车（舒适、易读、有限制），CSV 是货车（大量数据、只适合表格、零学习曲线）。

### 嵌套深度与数据模型差异

JSON 和 YAML 都支持任意深度的嵌套：{"user": {"address": {"city": "Beijing"}}} 或等价的 YAML 缩进结构。嵌套层数没有限制，理论上可以无限深。但 CSV 本质上是二维的——每行是一条记录，每列是一个字段。如果你的数据是 {"id": 1, "tags": ["ai", "tool"]}，转成 CSV 就痛苦了：要么把 tags 数组展开成多行（破坏了原有的记录结构），要么把整个数组序列化成单个字符串字段。这不是 CSV 的设计缺陷，而是为了兼容电子表格而做的妥协。所以互转前，先问自己：数据的深度是多少？有数组吗？如果超过二维，CSV 会很难受。

### 类型表达与隐式推断

JSON 的类型非常显式：数字是 123、字符串是 "text"、布尔值是 true/false、null 是 null。这种严格的类型系统确保了跨语言的精确解析。YAML 会自动推断类型：123 自动成整数，true 自动成布尔，"123" 字符串必须加引号。这对配置文件很方便，但也容易出错。CSV 全部是字符串——123、true、2026-04-29 在 CSV 中都是文本，导入数据库或 JSON 时需要额外的类型转换步骤。这就是为什么 CSV 导入常出现"日期显示为数字"的问题：缺少类型元数据。YAML 和 JSON 都能保留类型信息，但 YAML 更宽松（有歧义），CSV 最严格（无类型）。

### 何时用 JSON、何时用 YAML、何时用 CSV

API 通信和数据存储用 JSON：REST API 响应、WebSocket 消息、NoSQL 数据库都是 JSON 的主场。因为 JSON 的类型系统明确，跨语言兼容性最好。应用程序配置用 YAML：Kubernetes、Docker Compose、CI/CD 流程（GitHub Actions、GitLab CI）都用 YAML。因为 YAML 对人类最友好，配置文件通常被非开发者修改，缩进结构比 JSON 的大括号更直观。表格数据导入导出用 CSV：数据库导出、电子表格、CRM 系统数据都是 CSV 的天下。因为 CSV 与 Excel/Google Sheets 无缝集成，是跨平台的表格通用格式。

### JSON → YAML 互转的坑点

JSON 转 YAML 通常很顺利，因为 YAML 是 JSON 的超集，可以直接加缩进就行。但反向就难了：YAML 中的 true、yes、no、on、off 都被推断为布尔值，而 JSON 会把它们序列化成 true，字符串意义完全丢失。如果你的 YAML 配置有 password: yes，转成 JSON 会变成 "password": true，下游系统期望字符串但收到布尔值就崩溃了。解决办法是在 YAML 中用引号强制指定为字符串：password: "yes"。另一个坑是 YAML 的特殊字符（@、*、&、|）在 JSON 中可能有歧义，需要谨慎转换，甚至需要 escape。

### CSV 互转的常见陷阱

CSV 最大的坑是字段内包含逗号：如果字段值是 "Smith, John"，必须用双引号包裹整个字段："Smith, John"。如果字段内有引号，比如 say "hello"，得用双双引号转义：say ""hello""。很多人不知道这个规则，导致互转时字段错位。另一个大坑是换行符：CSV 中的字段可以包含 \n（换行），但整个字段必须用双引号包裹："name\nJohn"。电子表格软件（Excel、Google Sheets）会直接显示为多行单元格，但纯文本工具会误判。编码问题也很常见：CSV 的默认编码因操作系统而异。Windows Excel 用 GBK（中文）或 CP1252（西文），Mac 用 UTF-8。导入时如果编码选错，中文就变成乱码。正确做法是导出为"UTF-8 with BOM"（Byte Order Mark），这样 Excel 自动识别为 UTF-8。

### 实战互转工具与命令行方案

本工具 /data-convert/ 提供可视化互转三种格式，自动处理编码、转义、类型推断，提供预览和验证功能。用户上传一个文件，选择目标格式，秒速得到转换结果，并能下载或复制。对于日常使用，无需学习命令行。命令行方案有 jq（JSON 处理）、yq（YAML 处理）、Miller（CSV 处理），它们可以链式调用进行复杂转换。比如 jq . input.json | yq -P - 可以把 JSON 转成 YAML，miller --json2csv input.json > output.csv 可以把 JSON 转成 CSV。但这些工具有学习曲线，对于快速互转和验证，可视化在线工具更直观、更安全。

### 常见问题

**Q: CSV 能表达嵌套数据吗？**

不能。CSV 是二维表格，无法直接表达嵌套结构。如果你的数据是嵌套的（如 user.address.city），可以把嵌套路径展开为单列（如 user_address_city），但这样会失去结构信息。如果必须保留嵌套，应该用 JSON 或 YAML，或者用逗号分隔的路径语法（但需要自定义解析）。

**Q: YAML 的缩进必须是 2 个空格吗？**

不强制，但约定俗成是 2 个空格。YAML 规范允许任意缩进，但同一层级必须对齐。用 Tab 会导致很多 YAML 解析器报错。所以最佳实践是一律 2 个空格，保证兼容性。很多编辑器都有快速转换 Tab 为空格的选项。

**Q: JSON 转 CSV 后数据是否会丢失？**

可能会。如果 JSON 包含嵌套对象或数组，转成 CSV 后信息会序列化成字符串（比如整个对象变成 [object Object]）。反向导入回 JSON 时无法恢复原有结构。所以 CSV 互转只适合扁平化的表格数据，嵌套数据应该用 JSON 或 YAML。

**Q: CSV 文件很大（百万级行），怎么处理？**

本工具支持分页加载，但如果超过浏览器内存限制，建议用服务端脚本（Python pandas、Node.js csv-parser）流式处理。或者用 Miller、awk 等命令行工具做分片、过滤、统计，再导入 CSV。大文件处理不适合在浏览器中一次性加载。

**Q: 互转后如何验证数据完整性？**

最稳妥的方法是对比原始和转换后数据的行数、列数和关键字段的哈希值。本工具的预览功能可以看样本数据，但全量验证需要脚本。如果数据包含关键字段（如 ID），可以先提取这些字段做对比，确保没有丢失或重复。

**Q: YAML 配置中的多行字符串怎么表达？**

YAML 有两种多行语法：| 保留换行符和尾部空行，> 折叠换行符（连续行视为一行）。比如 description: | 会换行显示，description: > 会连接成一行。选择哪个取决于你的配置是否需要保留原始换行。JSON 和 CSV 都用 \n 表示换行。

---

## JSON 对比完全指南：API 调试 / 数据漂移 / 配置变更

> 掌握 JSON 对比的本质——文本 diff 与结构 diff 的区别、数组比对的复杂性、实战场景与工具方案，快速定位 API 问题、数据变更、配置差异。

URL: https://xtechtools.com/guides/json-diff/
发布：2026-04-29 · 更新：2026-04-29

两份 JSON 数据看似相同，但键的顺序不同、某个字段从 null 变成 0、API 响应多了一层嵌套——这些差异对业务逻辑意味着什么？本文深入讲解 JSON 对比的两条路径（文本级 vs 结构级）、数组比对的三种理解方式、以及在 API 联调、数据库变更、配置管理中的实战应用。掌握文本 diff 和结构 diff 的区别，快速定位差异根源。

### 文本 diff 与结构 diff 的本质差异

文本 diff（如 Linux 的 diff 命令）逐行逐字比对，{"a": 1, "b": 2} 和 {"b": 2, "a": 1} 虽然逻辑相同，但键序不同，文本 diff 会报告多处变更。这导致大量虚假警告，严重降低 code review 的效率和准确度。结构 diff（JSON-aware 对比）理解 JSON 的语义，比对的是实际的键值对和值，不关心顺序，确保只报告真正的数据变更。API 前后端联调时，结构 diff 更有用——你关心的是字段值改了没，不是字符位置。配置文件 code review 时，文本 diff 反而更有用。两种方案都有用，取决于场景和用途。

### 键序不同 ≠ 数据内容不同

JSON 对象的键序在规范上是无序的（order-independent），但很多系统会依赖键序（比如有些旧的 JavaScript 引擎）。当你从数据库导出 JSON 时，因为 SQL 查询顺序、ORM 处理等因素，返回的键序可能每次都不同。用 diff 工具比对时，如果用的是文本 diff，键序不同就会显示为变更，导致大量虚假警告，严重浪费 code review 时间和精力。解决办法是用 JSON 结构感知的对比工具，或者先把 JSON 做标准化（按键名排序），再做 diff。本工具 /json-diff/ 会自动标准化键序，确保比对的是真正的数据变更。

### 数组比对的三种理解方式

JSON 数组 [1, 2, 3] 和 [1, 3, 2] 包含相同元素，但顺序不同。如何对比？取决于数组的语义。按位置比对：第一种方式，[1, 2, 3] 和 [1, 3, 2] 是不同的，因为第 2、3 位置的值不同。这适合有序数据，比如 API 返回的分页结果或排序列表（顺序很重要）。按内容比对：第二种方式，[1, 2, 3] 和 [1, 3, 2] 的"集合"内容相同（都包含 1、2、3），但顺序不同。这适合无序集合，比如 tags: ["ai", "tool"] 和 tags: ["tool", "ai"]。按主键比对：对于对象数组最常用的是按 id 主键比对，这样即使顺序变了，也能识别出哪个对象改变了。电商订单的商品列表、用户表的数据更新，都用这种方式。

### API 联调中的 JSON 对比实战

API 前后端对接时，常见场景：前端期望 {code: 0, data: {...}, message: "success"}，后端返回了 {code: 200, data: {...}, message: "OK"}。用 JSON 对比工具，可以秒速看出 code 和 message 字段的差异，找出沟通点。另一个场景是分页 API：前端问"为什么用户列表顺序变了"，后端说"我没改逻辑"。用 JSON 对比，对比两个不同时间的响应，可以看出是否新增了用户、删除了用户、还是排序规则变了。很多 API 返回的 total_count、page_size、items 数组，一个对比就能看透。还有版本迭代中的向后兼容性检验：API v2 返回了一些 v1 没有的字段（比如 new_feature），用对比工具确认是纯新增，没有改动旧字段。

### 数据库 dump 对比与数据漂移检测

数据库导出的 JSON dump 在开发、测试、生产环境间流转。用 JSON 对比工具可以快速发现数据漂移：生产环境某条用户记录的 email 字段莫名多了个空格，或者某个订单的 total_price 和子项金额不匹配。批量数据迁移后，常需要验证源库和目标库的数据一致性。逐条对比 SQL 查询结果的 JSON 表示，就能发现漂移。比如迁移 MongoDB 到 PostgreSQL，数据类型转换时容易出现浮点数精度问题（1.1 变成 1.100000001）、日期格式变化（ISO 8601 vs Unix timestamp）。用对比工具，一秒看出所有不匹配。对于大型系统的定期健康检查，可以定期导出关键表的 JSON，与历史 snapshot 对比。

### 配置文件变更的审计与验证

应用配置通常存储为 JSON（特别是 JSON5 或注释 JSON）。每次改动配置时，用对比工具可以看到确切改了什么：某个数据库连接字符串的 password 字段改了、某个特性开关从 false 变成 true、某个限流策略的阈值从 1000 改成 2000。对于团队协作，配置变更需要 code review。JSON 对比工具可以生成人类可读的报告，列出所有变更点、新增键、删除键、修改的值，方便 reviewer 快速审批。特别是配置涉及特别嵌套结构（如 middleware 中间件链、feature flags），用结构化对比能避免遗漏。上线前的预检：比对测试环境配置和生产环境配置，确保没有误改。

### 实战工具：本工具 + jq + 命令行方案

本工具 /json-diff/ 提供可视化对比，支持缩放、展开、突出差异部分，适合快速定位问题。点击差异项可以跳转查看具体位置。命令行方案用 jq：jq -S . file1.json > sorted1.json && jq -S . file2.json > sorted2.json && diff sorted1.json sorted2.json，可以标准化后文本对比。更高级的是 jdiff、json-diff npm 包或 python json 库，能做结构感知的对比，输出结构化的 patch（按 RFC 6902 JSON Patch 标准）。这些工具适合集成到自动化测试或 CI/CD 流程。

### 常见问题

**Q: 两个 JSON 对象的键序不同，是否算不同的数据？**

在逻辑上不同——JSON 规范认为键序是无序的，{a:1, b:2} 等价于 {b:2, a:1}。但在系统实现中，有些语言/库会保留键序（如 Python 3.7+ 的字典），某些操作（如哈希计算、签名）会依赖键序。本工具的结构 diff 模式不关心键序，文本 diff 模式会报告差异。根据你的场景选择对比模式。

**Q: 大型 JSON 文件（几 GB）怎么对比？**

浏览器有内存限制，超大文件无法在本工具中一次性加载。建议用流式处理的命令行工具（如 jq + stream processing）或服务端脚本。或者把大文件分割成若干小文件，逐个对比，最后合并结果。

**Q: 如何忽略某些字段的对比（如 timestamp、ID）？**

JSON diff 工具的高级选项通常支持字段过滤或规则忽略。本工具暂未支持，但可以用 jq 预处理：jq "del(.timestamp, .id)" file.json | ... 先删除不关心的字段，再做 diff。

**Q: 数组元素多了或少了，怎么快速定位变更？**

按位置对比会显示第几位改了，按内容对比会显示新增/删除了哪个元素。如果数组很大（几百条），建议先比对数组长度，再用按内容模式找出新增/删除的元素（如果有主键的话）。本工具会统计增删数量。

**Q: 如何验证 API 返回的数据是否按合约返回？**

保存预期的 JSON schema 或样本响应，用对比工具与实际响应比对。如果所有字段都相同，说明合约满足；如果多了字段，可能是向前兼容的扩展；如果少了字段，可能有 bug。也可以用 JSON Schema validator 工具来验证结构和类型。

**Q: JSON 中浮点数 1.0 和 1 算不同吗？**

取决于工具实现。JSON 规范把 1.0 和 1 视为相同的数值，但文本对比会看到 "1.0" 和 "1" 是不同的字符串。结构化对比工具应该把它们视为相等。如果数据从浮点数转整数（或反之），这是可能的，但通常表示数据处理过程中类型转换了。

---

## CSV 在线查看完整指南：编码 / 分隔符 / 大文件

> 深入讲解 CSV 的标准与方言、编码陷阱（UTF-8 vs BOM）、分隔符变体、特殊字符转义、大文件处理与排序筛选，以及何时用 CSV vs Excel。

URL: https://xtechtools.com/guides/csv-viewer/
发布：2026-04-29 · 更新：2026-04-29

CSV（逗号分隔值）是全球最通用的表格数据格式，但简单外表掩盖了复杂的坑。一份看似普通的 CSV 文件，因为编码选错、分隔符误判、字段中的逗号没转义，就会在导入时乱码或错位。本文深入讲解 CSV 的标准与方言、编码与 BOM、分隔符变体、大文件加载与优化策略，以及何时用 CSV、何时该用 Excel 或其他格式，掌握 CSV 方方面面。

### CSV 没有"统一标准"——RFC 4180 vs Excel 方言

RFC 4180 是 CSV 的官方规范，定义了基本语法：用逗号分隔字段，用双引号包裹含特殊字符的字段，字段内双引号要双双转义（""）。但实际上，CSV 是个高度碎片化的格式。Excel（Windows）用 GBK 编码导出 CSV，Mac Numbers 用 UTF-8，Google Sheets 默认 UTF-8。某些系统用分号（；）而非逗号作分隔符（尤其是欧洲，因为他们用逗号作小数点）。结果是同样的 CSV 文件，在不同系统打开显示完全不同。导出者遵循 RFC 4180，导入者却期望 Excel 方言，就会出现乱码或字段错位。最坑的是"我的 Excel 打开没问题"，但用 Python pandas 或 JavaScript 的 csv-parser 导入就崩溃。

### 分隔符变体与自动检测机制

CSV 最常用逗号（,），但也支持分号（;）、Tab（\t）、竖线（|）。为什么有这么多变体？因为不同地区的数字格式不同：美国用 1,234.56（逗号千位分隔、点小数），欧洲用 1.234,56（点千位分隔、逗号小数）。如果用逗号分隔字段，欧洲的数字就会被错误分割。所以很多欧洲系统用分号分隔字段，避免冲突。本工具 /csv-viewer/ 会自动检测分隔符：加载文件后扫描第一行，尝试逗号、分号、Tab、竖线四种分隔符，根据哪个产生最均匀的字段数量来判断。这对大多数 CSV 有效，但手写数据或特殊场景可能需要手动指定。

### 字段内含逗号与双引号转义规则

如果字段值本身含逗号，必须用双引号包裹整个字段。比如 "Smith, John", 25 中，第一个字段是 Smith, John（含逗号），用双引号保护它不被分割。更复杂的是字段内含双引号。RFC 4180 的规则是：字段内的双引号要用双双引号转义。比如说 say "hello", friend 这句话，在 CSV 中应该写成 "say ""hello"", friend"。开发者很容易搞错，比如只转义内部的引号 say "hello" 而不包裹整个字段，结果解析器就会崩溃。本工具的查看器会正确处理这些转义，显示的数据是已经反转义的。但导出时必须小心——工具应该自动转义，否则反向导入时就会出错。

### 编码陷阱：UTF-8、BOM、GBK 的大坑

CSV 的编码问题是最常见的坑。Excel for Windows 默认用系统编码（中文系统是 GBK，英文是 CP1252），导出的 CSV 就是 GBK 编码。如果用 UTF-8 编辑器打开，中文显示为乱码。反过来，用 UTF-8 导出的 CSV，在 Excel 中打开也是乱码。UTF-8 with BOM 是解决 Excel 兼容性的标准做法。BOM（Byte Order Mark）是文件开头的 3 字节标记（EF BB BF），告诉 Excel"这是 UTF-8 文件"，Excel 就会正确识别。很多在线服务（Google Sheets）导出的 CSV 都用 UTF-8 with BOM。所以，如果你的 CSV 要在 Windows Excel 中打开，务必导出为"UTF-8 with BOM"。本工具的上传器会检测文件编码。

### 大文件分页加载与浏览器内存限制

CSV 文件可以很大——几百 MB、甚至几 GB 的数据导出。浏览器无法一次性加载到内存。本工具用分页加载策略：只将可见范围的数据（比如前 500 行）加载到 DOM 中，用户滚动时动态加载下一批。这样即使文件几 GB，也能流畅浏览。技术上用虚拟滚动（virtual scroll）实现：浏览器只渲染当前可见的行，其他行用占位符（空白高度）代替，用户感知不到。这样几百万行的数据也能快速打开。但搜索、排序、筛选就复杂了——不能对整个文件做全量操作，必须逐块处理或用后端流式计算。本工具支持的排序和筛选是对当前加载的数据进行的。

### 排序、筛选与数据透视

本工具支持按列排序（升序/降序）、按关键字筛选行。点击列标题可以排序，输入框可以按列名或内容筛选。这些操作都基于当前已加载的数据（通常前 10000-50000 行），对超大文件会有延迟。一些 CSV 查看工具还支持简单的数据透视（pivot table）：按某列分组、统计另一列的总和或平均值。比如销售数据按产品分组、统计销售额，或按日期分组、统计交易笔数。但浏览器端的透视通常只支持简单场景，复杂透视（多维、多层次）还是要用数据库或 Excel。本工具暂未支持透视，但可以导出数据后用其他工具。

### 何时用 CSV vs Excel vs JSON vs 数据库直接导入

CSV 最适合表格数据的通用交换：因为 CSV 与任何电子表格软件兼容（Excel、Google Sheets、Numbers），也能被任何编程语言的 csv parser 读取。如果数据是扁平的二维表，行数不超过 100 万，CSV 是首选。Excel（.xlsx）更强大：支持多 sheet、格式化、公式、数据验证。如果数据需要复杂的格式或业务用户要修改，用 Excel。但 Excel 有 100 万行的理论上限（实际更低），超大数据不适合。JSON 适合嵌套或非表格数据：如果数据是树形结构（如配置文件、API 响应），用 JSON。CSV 无法表达嵌套。如果数据超过几百万行、或需要复杂查询，直接用数据库。

### 常见问题

**Q: Excel 导出的 CSV 在其他软件乱码，怎么解决？**

Windows Excel 默认导出 ANSI 编码（GBK 中文、CP1252 英文），不兼容 UTF-8。解决办法：Excel 中用"另存为"→ 选择"CSV UTF-8"格式（某些 Excel 版本会自动添加 BOM）。或者导出后用文本编辑器转换编码。Mac Excel 默认 UTF-8，通常不会乱码。最稳妥的做法是导出为"UTF-8 with BOM"。

**Q: CSV 文件没有扩展名，本工具能打开吗？**

可以。本工具根据文件内容检测格式，不依赖扩展名。只要文件内容是合法的 CSV（用逗号或其他分隔符），就能打开。但最好还是加 .csv 扩展名，便于浏览器识别 MIME type。

**Q: 导入 CSV 到数据库，字段映射错了怎么办？**

这是数据导入工具（如 MySQL Workbench、SQL Server 导入向导）的问题，不是 CSV 本身的问题。本工具可以先预览 CSV，确认字段顺序和内容正确，再进行数据库导入。或者先导入到 Excel 或 Google Sheets，在那里调整字段顺序，再导出后导入数据库。

**Q: CSV 中的日期格式不统一（2026-04-29 vs 04/29/2026），怎么处理？**

CSV 本身是文本格式，不理解日期。日期的解析由导入工具负责。Excel 和 Google Sheets 通常能识别常见日期格式，但如果格式混乱，导入时会出问题。最佳做法是在源头确保日期格式统一（推荐 ISO 8601 格式：YYYY-MM-DD）。如果 CSV 已经格式混乱，可以用 Python、JavaScript 的日期库批量转换。

**Q: 用本工具查看的大文件，会上传到服务器吗？**

本工具是纯客户端应用，所有数据处理在浏览器本地进行，不上传到任何服务器。隐私完全由用户掌控。但浏览器有内存和性能限制，超大文件（几 GB）仍然无法全量处理。

**Q: 如何快速找出 CSV 中重复的行？**

本工具暂未支持重复检测，但可以导出后用 Excel 的"条件格式→突出显示重复值"，或用 Python pandas: df.duplicated() 标记重复行。如果 CSV 很大，最佳做法是导入数据库，用 SQL 的 GROUP BY 或 ROW_NUMBER() PARTITION BY 识别重复。

---

## 抽签转盘完全指南：年会抽奖 / 决策犹豫 / 教学随机

> 从心理学解释到避坑指南，讲清楚在线转盘为什么能替代骰子、摇筒，以及如何用它科学公平地进行抽签决策。

URL: https://xtechtools.com/guides/lucky-draw/
发布：2026-04-29 · 更新：2026-04-29

人类面对超过三个选项时大脑就开始过载。从"晚餐吃什么"到"年会抽奖奖池怎么分配"，决策焦虑无处不在。这时一个看似简单的"转盘转一下"就能化解。本指南从心理学角度解释为什么转盘能减轻决策焦虑，揭示伪随机与真随机的区别，教你避开转盘使用的常见坑，并对比转盘、骰子、摇筒三种随机工具的优缺点。

### 为什么转盘能解决决策焦虑

心理学术语叫"选择过载（Choice Overload）"。人在面对 2-3 个选项时大脑最活跃，超过 5 个选项满意度反而下降——因为人脑的工作记忆容量有限。此时如果把决策权交给"第三方"（无论是骰子、转盘还是别人），参与者会感受到显著的焦虑缓解。这不是逃避，而是一种健康的"认知加载均衡"。

例如团建分组：10 个人自己分小组，每个人都在脑子里搭配组合，30 秒后还没决定。但让转盘随机分配，结果出来后反而没人怨言——因为"转盘决定了，我们就接受"。研究表明这种"外部归因"能显著降低事后的后悔程度。

### 伪随机 vs 真随机

**伪随机**：用计算机算法（如 Math.random）生成"看起来随机"的数字序列，实际上如果知道初始种子（seed）就能完全复现。Math.random() 的周期大约 2^32，足够日常应用，但不适合加密或严肃赌博场景。

**真随机**：完全不可预测，源头是物理现象（大气噪声、硬件放射源）。本站的转盘工具使用浏览器内置的 crypto.getRandomValues() API，背后是操作系统的随机数生成器（Linux /dev/urandom、macOS /dev/urandom、Windows CryptGenRandom），属于密码级随机数，远超伪随机。

**实际差异**：普通年会抽奖伪随机就够了，20 个奖品轮流出都很公平；但如果你的应用涉及数字货币、游戏金币等有经济价值的资源分配，必须用真随机或第三方公证。本工具默认用的 crypto API 属于企业级安全，足以应对所有常见场景。

### 避坑指南：转盘使用常见错误

❌ **错误 1：让某个选项重复出现**

假设有 A、B、C、D 四个奖品，但 A 的数量限制很多，运营想"偷偷增加 A 的概率"，就把 A 放两次。结果是 A 的中奖率从 25% 变成 33%，其他三项都被稀释。更坏的情况：有人中奖记录表上发现"A 出现了两次"，信任崩塌。解决方案是用权重，而不是重复。

❌ **错误 2：临时"内定"获奖者**

"我想让李四中一等奖"，然后在转盘抽奖时暗示李四去按按钮。这种"默契"很快会被员工察觉（尤其在视频转播年会时一眼就看出停止位置偏向），摧毁信任。年会抽奖一旦失信，来年参与度跳水。

❌ **错误 3：抽奖中途改规则**

"等等，这个人已经中过一次奖了，重新转一下"。一旦有人开始改规则，其他参与者会质疑之前的结果是否公平。规则一定要提前定好，中途不改。如果想规定"每人最多中一次"，就在转盘配置里设置不重复模式。

❌ **错误 4：显示过程太快或太慢**

转盘转得太快（0.5 秒就停了），观众会怀疑是"预设好的"；转得太慢（10 秒还在转），观众会觉得烦。标准的转盘转 2-3 秒比较舒适，既足够长给人"真实感"，又不浪费会议时间。

### 与其他随机工具的对比

| 工具 | 成本 | 速度 | 可见度 | 公平性 |
| --- | --- | --- | --- | --- |
| **物理转盘** | 50-500 元（定制品牌款更贵） | 1-2 分钟/次 | 全体可见，舞台感强 | 依赖硬件质量；某些偏心转盘可能有微妙偏向 |
| **摇筒抽号** | 200-800 元（体育竞技级） | 30 秒/次 | 中等可见，需要展示球 | 理论公平，但如果球大小/重量稍差会有偏向；场地需求大 |
| **骰子** | 5-20 元 | 5 秒/次 | 实物可见，个人化 | 理想骰子是公平的，但实物骰子微妙的制造误差会导致某个数字偏高 |
| **在线转盘（本工具）** | 免费 | 3 秒/次 | 电子屏幕显示，可投影扩大 | 密码级随机数，理论完美公平 |
| **点名 App** | 免费 | 1 秒/次 | 需要屏幕，无转盘视觉感 | 同样的密码随机数，只是表现形式不同 |

**选择建议**：
- 年会（重视舞台感、人多）→ 物理转盘或在线转盘投影
- 小组会议（速度优先）→ 在线转盘
- 教室点名（隐私考虑）→ 在线点名
- 竞技赛事（公证要求高）→ 摇筒（可邀请第三方监督）

### 教学场景：点名与概率验证

**点名的人性化**：传统点名本（按座位顺序翻页）学生早就摸透规律，会翘课。改成转盘随机点名后，学生的上座率显著提升——因为没人知道下一个会是谁。更重要的是这种随机性能训练学生的"时刻准备状态"，而不是"我算准了今天不会点我"。

**概率论入门**：用转盘做蒙特卡洛实验。例如，设置转盘分成 6 等份（对应骰子），让学生转 60 次，统计每个数字出现多少次。理论上均匀分布，每个数字约 10 次；实际数据会有波动。这个实验生动地展示了"有限样本的随机性"和"大数法则"。如果转 600 次、6000 次，分布会越来越接近理想比例。

**决策伦理讨论**：用转盘给出一个随机结果，然后问学生"你接受吗？为什么？"。这开启了关于公平性、规则、权力的深度讨论。例如转盘指定了"下节课额外作业"的人，这个人会接受吗？研究表明，只要过程是透明的（所有人都知道规则，转盘公开），结果再不利也容易被接受。

### 年会抽奖的概率设计

年会抽奖最常见的需求是"一等奖 1 个、二等奖 3 个、三等奖 10 个"，共 200 人参赛。怎么用转盘实现？

**方案 A：多轮转盘（推荐）**
第一轮只有 1 个蓝色格子（中一等奖的 1 个人），199 个白色格子（未中）。中奖者退出。
第二轮只有 3 个红色格子（中二等奖的 3 个人），196 个白色格子。
第三轮 10 个绿色格子（中三等奖的 10 个人），186 个白色格子。

优点：每轮参与者数量递减，最后一轮速度快；每个人的最终概率是精确的（第一轮 1/200 中一等奖 = 0.5%）。

**方案 B：权重方案（快速）**
一个转盘，分 200 个等份，其中 1 份标记"一等奖"，3 份标记"二等奖"，10 份标记"三等奖"，186 份标记"安慰奖或未中"。直接转，一轮定胜负。

缺点：权重越复杂，二维码或界面越难看懂；某些人可能会数格子质疑公平性。但速度快。

**实务建议**：200 人的年会，多轮转盘总耗时不超过 15 分钟，各部门有精神头继续开会或聚餐；一轮快速转盘虽然总耗时 30 秒，但可能引发猜疑。所以除非是"现场直播全网看"的大型活动需要快速，否则多轮透明的方案更稳妥。

### 防作弊与公证

**转盘能被"作弊"吗？**

在线转盘（密码随机数）理论上无法人为操纵——你无法预测下一个数字。但可能的风险包括：

1. **网络延迟**：如果转盘是服务端生成（不是本地浏览器），网络延迟可能被利用。本工具使用本地浏览器随机数，天生防护。
2. **浏览器开发者工具**：有人打开 DevTools 尝试读取随机数 seed？没用，crypto.getRandomValues 的 seed 不暴露。
3. **计算机控制转盘位置**：如果你控制了展示转盘的设备（电脑、投影机），理论上可以预设结果。但这时已经超出"工具本身"的范畴，属于硬件层面的欺骗。

**公证方案**：
- 年会现场邀请一名员工代表全程监督，确认规则、见证转盘操作。
- 如果是线上转盘，邀请代表进行屏幕共享观看。
- 转盘过程全程录视频，会后员工可查看回放。
- 对于大奖项（涉及现金或高价值奖品），可邀请第三方公证机构（某些地区提供"转盘公证"服务）。

多数情况下第一条（人工见证）就足够了。透明度 > 技术安全，人的眼睛看到的"公平操作"比算法保证更有说服力。

### 常见问题

**Q: 转盘有多公平？能不能作弊？**

在线转盘使用密码级随机数（crypto.getRandomValues），理论上完全无法预测或操纵。但公平性最终取决于"操作人是否值得信任"——所以年会现场邀请员工代表全程监督最重要。

**Q: 年会 200 人抽奖用转盘要多久？**

多轮方案（一等奖转一次、二等奖转一次...）总耗时 10-15 分钟，包括念获奖者名字和掌声。一轮快速方案只需 30 秒，但可能引发猜疑。建议多轮。

**Q: 能否让某个人"更容易中奖"？**

可以，但不要偷偷做。如果想给特殊员工倾斜，提前告诉全部参与者"X 部门员工额外一次转盘机会"或"新入职员工保底二等奖"。透明度解决所有问题。

**Q: 转盘和骰子哪个更公平？**

理想情况下一样公平。但实物骰子受制造工艺限制，某些面可能微妙偏重；在线转盘没有这种物理约束，所以理论上更完美。但实践中，人们对"能看见的物理骰子"的信任度更高。

**Q: 能用转盘做彩票抽奖吗？**

本工具不适合涉及赌博、金钱的应用。如需实现合规的彩票系统，请咨询专业机构或使用政府认可的彩票系统，通常需要第三方公证。

**Q: 转盘支持多少个选项？**

理论上无限，但超过 50 个选项转盘会很密集，二维码也会很复杂。实践上 30 个以内最适合。

---

## 随机分组完全指南：团建 / 课堂 / 项目协作

> 从 Fisher-Yates 真随机算法到平衡分组策略，讲清楚如何科学公平地给团队分组，避免"关系户"抱团和人才搭配失衡。

URL: https://xtechtools.com/guides/team-picker/
发布：2026-04-29 · 更新：2026-04-29

分组看似简单，实际蕴含大量逻辑——10 个人分成两组，表面上有超过 9 万种不同的分法。如果用 sort(Math.random()) 这种伪随机方法来分，某些配置会反复出现（聚类现象）。更要命的是，如果分组涉及人才搭配（比如项目小组要技术强手配新手），简单随机分组会导致某个小组人才高度聚集，另一个小组全是新手。本指南讲清楚真正的随机分组算法（Fisher-Yates），以及如何在随机基础上加入平衡约束（人才均衡、固定搭档、避免敌人同组）。

### Fisher-Yates Shuffle：理解真随机分组

JavaScript 里很多人这样写分组：

const shuffled = array.sort(() => Math.random() - 0.5);

这**完全错误**。为什么？因为 sort() 的内部实现（快排或归并排）对不同比较函数的调用有特定顺序，而 Math.random() - 0.5 产生的伪随机数不符合 sort 的"传递性"假设。结果是：某些元素反复被交换，某些元素被略过，最终分布严重不均。

**正确方法：Fisher-Yates Shuffle**

for (let i = arr.length - 1; i > 0; i--) {
  const j = Math.floor(Math.random() * (i + 1));
  [arr[i], arr[j]] = [arr[j], arr[i]];
}

这个算法保证每种排列的概率相等（1 / n!），真正做到了完美随机。本工具的分组底层使用此算法或同等的密码随机数洗牌。

**实际差异**：10 个人，sort(Math.random()) 可能让 A、B、C 三个关系户连续排在前三名（概率虽低但能发生）；Fisher-Yates 保证任何三个人在"分组后恰好同一小组"的概率完全相等，无偏无倚。

### 平均分配 vs 固定每组人数

**平均分配**："10 个人分成 3 组"，工具自动分配成 4、3、3。
- 优点：简单、无需手动指定
- 缺点：如果组数无法整除，必然有组人数不同（3 组 10 人 → 必然 4/3/3）

**固定每组人数**："分成若干组，每组必须 3 人"。10 个人最后成 3 组 + 1 人无法分配。
- 优点：每组规模一致，便于分配同样的任务
- 缺点：某些人可能无法分入任何组（必须调整总人数或组数）

**实务建议**：
- 团建破冰分组 → 用平均分配（7 个人分成 3 组可以 3/2/2，灵活）
- 项目开发分组 → 用固定每组 3 人（每个小组配置一样：1 个 leader、2 个成员）
- 教学小组实验 → 固定每组 4 人（刚好一台显微镜、一套实验装置）

本工具支持两种模式，选择时考虑"任务是否对组大小敏感"。

### 人才平衡分组：搭配强弱

简单随机分组的问题：12 个学生参加编程竞赛，3 个技术大牛如果全进同一组，其他三组的同学怎么活？

**方案：轮流分配**

1. 对所有人做"能力评分"（1-5 分，或技能标签）。
2. 按评分排序（从高到低）。
3. 第一个人分到第 1 组，第二个人分到第 2 组，第三个人分到第 3 组，第四个人又分回第 1 组，如此往复（"蛇形分配"或"轮转分配"）。

结果：每组都有 1 个强手、若干中等生、若干弱手，搭配均衡。

**进阶：基于技能矩阵**

如果有多个维度（如 Python、JavaScript、系统设计、沟通能力），可以构建一个简单的评分矩阵：

| 成员 | Python | JS | 系统设计 | 总分 |
| --- | --- | --- | --- | --- |
| A | 5 | 3 | 4 | 12 |
| B | 4 | 4 | 2 | 10 |
| C | 2 | 5 | 3 | 10 |
| D | 2 | 2 | 2 | 6 |

用"总分轮转"分组，或更细粒度地用"确保每组至少有 1 个 Python 高手"的规则来分。

**本工具功能**：在"添加成员"时可打标签（如 @Senior、@Junior），工具能帮你快速看每组的标签分布是否均衡。

### 固定搭档与"不能同组"约束

**场景 1：夫妻档必须同组**

公司年会团建，有三对夫妻参加（共 6 人）加 4 个单身同事，共 10 人分成 2 组。

- 解决方案：把每对夫妻看作一个"单元"，而不是拆散的个体。10 人 → 5 个单元 → 分成 2 组。结果是某组 2 个单元 + 1 个单身，另一组 2 个单元 + 1 个单身。
- 本工具支持"团队模式"，可以把多个人标记为一个小组，分组时保持他们在同一大组。

**场景 2：两个人关系不好，不能同组**

团队中 A 和 B 有冲突，分组时要避免他们在一个小组。

- 简单方案：先用 Fisher-Yates 随机分组，检查 A 和 B 是否同组，如果同组就重新打乱。但这违反了"严格随机"的原则，容易引发不满（如果第 3 次重新分组恰好把某个人排出好位置，此人会怨言）。
- 更好方案：用约束满足（CSP）求解，确保一开始的分组就不包含这种冲突。但这对一般工具来说太复杂。
- 实务建议：把"不能同组"的人事问题上报给管理者，分组工具本身不应该成为"隐瞒冲突"的工具。如果分组工具被用来躲避团队问题，迟早还是会爆发。

本工具的做法：支持"黑名单模式"（A、B 之间连一条禁止线），算法尝试生成满足约束的分组。如果无法满足（比如 3 个人互相冲突，必然有两个在一组），工具会提示"约束过多，无法分组"。

### 教学场景：轮换分组与长期搭配

**轮换分组（鼓励交流）**

小学数学课，全班 30 人，每单元做一次分组讨论（小组 4 人）。如果每次都用同样的分法，某些内向的孩子可能被边缘化；如果每次都彻底随机，孩子们互相不熟悉，协作效率差。

**最佳实践：定期轮换（每两周或每个单元更换一次）**

- 第一单元：用本工具随机分组，孩子们磨合。
- 第二单元：生成一个"不同的随机分组"（工具记住第一次的分法，确保本次分组尽可能和上次不同）。结果是每个孩子在不同单元和不同同学搭档，扩大社交圈，但又给予足够的稳定性。

**长期项目搭配（稳定性优先）**

高中物理小组实验，全年要做 10 个实验。如果分组频繁变化，孩子们团队凝聚力差。

**最佳实践：季度轮换**

- 第一季度：第一次随机分组，4 个实验在这个组里
- 第二季度：生成新的随机分组（打乱第一季度的队伍，但保留部分"因果"），4 个新实验

这样既避免了全年不变导致的陈腐感，又给予了足够的团队建设时间。

**老师的权限**：本工具支持"草稿模式"，可以手动调整分组结果后再发布。如果某个分组看上去有明显的"能力失衡"（比如全新手在一组），老师可以拖动成员调整，而不是非要信任算法。

### 年会团建破冰分组的技巧

年会团建，目标是打破部门壁垒，让陌生人互相认识。此时随机分组是最好的选择，因为：

1. **破坏旧有关系**：避免同部门的人聚在一起，强制"跨部门交流"。
2. **营造公平感**：没人能说"分组对我不利"，因为是机器随机的。
3. **节省时间**：不用人工分组，不用听各种协商和怨言。

**最佳流程**：

1. 提前一周发起报名，收集所有参与者名单和部门（可选）。
2. 活动当天，在大屏幕上投影分组工具的"部门均衡模式"（确保每组都有来自不同部门的人）。
3. 点击"开始分组"，大屏幕动画显示洗牌和分组过程（视觉上让人相信是真随机）。
4. 分组完成后，立即公布结果（大屏幕 + 微信群邮件通知）。
5. 各小组组长自我介绍，确认成员，然后进行团建活动。

**动画设计**：转盘转 2-3 秒、人名飘落、最后在四个区域收集 — 这种"视觉随机化"比冷冰冰的表格更能让人相信公平性。本工具的界面考虑了这一点。

**敏感考虑**：
- 如果公司有"禁止同组人员"（比如项目机密组不能和其他部门同组），提前告诉工具配置黑名单。
- 如果某个员工身体残障需要特定的组位置（如靠近门口方便轮椅进出），分组后手动调整即可。
- 如果某些人因故无法参加，分组时去掉他们的名字，活动当天再临时补充。

### 算法与公平：为什么分组结果看起来都一样

有人会问："我用你的工具分了两次组，为什么结果都是 A、B、C 一组、D、E、F 一组……？"

**原因 1：样本量小**

5 个人分成两组，理论上有 C(5,2)/2 = 10 种本质不同的分法。如果用工具分 10 次，确实可能看到同样的结果。这不是 bug，是概率论。

**原因 2：密码随机数的周期性**

crypto.getRandomValues() 使用系统的随机源（/dev/urandom），周期极长，日常不会重复。但如果你在极短时间内（同一毫秒）连续调用两次，操作系统的随机源可能还没刷新，会返回相同的数字。本工具的做法是加入"时间戳混淆"和"计数器"确保即使快速连续调用也会产生不同结果。

**原因 3：期望心理**

人脑对"完全不同"有很高的期望。如果你手动分组 10 次，其中有两次巧合地相同，你会记得这两次；其他 8 次不同的你会忽视。这叫"可用性偏差（Availability Bias）"。

**验证工具的公平性**：

本工具支持"统计模式"，可以一次性分组 1000 次，统计每个人在"第 1 组"出现的次数。如果是公平的，每个人出现频率应该约等于 1/N（N 为组数）。例如 10 人分 2 组，每人在第 1 组的频率应该约 50%。

### 常见问题

**Q: 随机分组能避免"关系户"抱团吗？**

能。Fisher-Yates 算法保证任何两个人同组的概率相等，无法人为操纵。但如果你人为预设"不能同组"的约束，那就是在作弊。

**Q: 多少人的团队适合用分组工具？**

5-100 人都可以。5 人以下分组意义不大；超过 1000 人可能需要考虑服务端分组（本工具是浏览器端，只受内存限制）。

**Q: 分组后能否手动调整？**

可以。分组工具产出的是"建议"，老师或组织者可以手动拖动人员调整，以实现教学或项目目标。重点不是"绝对随机"，而是"可验证和可调"。

**Q: 固定搭档会降低随机性吗？**

会，但这是特意设计的约束。把夫妻档视为一个单元去分组，仍然是公平的（每个单元出现在任何组的概率相等）。

**Q: 为什么我分了两次却看到了同样的分组？**

小样本的巧合。5 人分 2 组只有 10 种理论分法，重复率自然高。可以用工具的"统计模式"验证：分组 100 次，每个人在第 1 组出现的频率应接近 50%。

**Q: 线上课堂可以用随机分组做分组讨论吗？**

可以。本工具生成的分组可复制到 Excel / 微信群，或导出二维码让学生用手机扫描看自己被分到哪组。支持多种输出格式。

---

## 在线骰子模拟器完全指南：TRPG / 教学 / 概率验证

> 讲清楚标准骰子的来源、TRPG 系统的骰子规则、伪随机与真随机的数学差异，以及如何用骰子模拟器进行概率实验。

URL: https://xtechtools.com/guides/dice-roller/
发布：2026-04-29 · 更新：2026-04-29

从《冰与火之歌》到《龙与地下城》，从平民赌局到考古学课堂，骰子承载了 5000 年的随机决策历史。但互联网时代，物理骰子已经被在线模拟器取代。本指南讲清楚骰子的数学原理、标准骰子（D4 到 D20）的来历、最受欢迎的三大 TRPG 系统如何使用骰子、伪随机与真随机的本质区别（和为什么在线工具的随机数其实比实物骰子更可靠），以及如何用骰子做概率验证实验。

### 标准骰子的演进史

**古代骰子**：古埃及和古罗马的骰子是不规则的骨块（多面体），本质是农业社会对"神意"的模拟——用随机结果来替代祭司的决断。

**正多面体的数学发现**：欧几里得证明了只有 5 种"正多面体"（所有面都是相同正多边形）：
- 正四面体（4 个面）→ D4
- 正方体（6 个面）→ D6（最常见的骰子）
- 正八面体（8 个面）→ D8
- 正十二面体（12 个面）→ D12
- 正二十面体（20 个面）→ D20（最流行的 TRPG 骰子）

加上 D10（2 个正五棱锥）和 D100（标记百位的大 D10），这 7 种骰子覆盖了从 4 到 100 的所有常见数值。

**概率学角度**：物理骰子理想上应该每个面出现概率都是 1/N（N 为面数）。但制造工艺有偏差——廉价骰子因为重量分布不均，某些面出现频率偏高；专业骰子（手工打磨、用名贵材料）花费 50-200 元才能达到接近理想的分布。在线骰子完全没有这种物理制约，所以"公平性"其实更高。

### TRPG 系统中的骰子规则

**系统 1：龙与地下城（D&D）5e**

核心检定（Attack Roll、Ability Check 等）是 `1d20 + 修正值`。

例如士兵攻击怪物，骰 1d20（结果 1-20）加上力量修正（+3），总命中 4-23。目标防御等级（AC）是 15，所以需要掷出 12 或更高才能命中。

特殊动作"优势（Advantage）"意为掷两个 d20 取高值，"劣势（Disadvantage）"取低值。

本工具支持 `1d20+3` 这样的标准语法和 `2d20kh`（掷 2 个 d20，取最高的）这样的符号。

**系统 2：克苏鲁的呼唤（Call of Cthulhu）7e**

核心是 `1d100` 对比技能值。例如调查技能 50%，掷 1d100 如果 <= 50 就成功。

难度分级：
- 常规（Routine）：75% 的角色容易成功
- 困难（Hard）：20% 成功
- 极限（Critical）：5% 成功

需要掷 1d100 验证结果。

**系统 3：怪物猎人世界（MHW）— Monster Hunter**

虽然不是传统 TRPG，但游戏内的伤害计算是 `基础伤害 × (1 + 缓冲值随机) × 会心率`，涉及复杂的随机分布。爱好者用本工具的多骰模拟来计算平均伤害。

**通用语法**（本工具支持）：
- `3d6`：掷 3 个 d6，求和（骰龙与地下城的属性：6 个 3d6）
- `2d10+5`：掷 2 个 d10 再加 5
- `4d6kh3`（keep highest 3）：掷 4 个 d6，去掉最低的，只算最高的 3 个（龙与地下城属性的标准方法）
- `1d100>=50`：掷 1d100，检定是否 >= 50（克苏鲁检定）
- `3d8!`（exploding dice）：掷 3 个 d8，如果出现 8，再额外掷一个 d8 加到结果（火焰之纹徽章 Fateless 系统用）

### 伪随机 vs 真随机的数学原理

**伪随机（Pseudo-Random）**：用数学公式从一个初始值（种子）生成看似随机但完全确定的数列。

JavaScript 的 Math.random() 使用 xorshift128 或 MersenneTwister 这样的算法，周期约 2^32（40 亿）。如果你知道初始种子，可以完全复现整个序列。

**真随机（True Random）**：完全不可预测，源头是物理现象。操作系统的 /dev/urandom（Linux）、Fortuna（macOS）、CryptGenRandom（Windows）都采集大气噪声、硬件时钟抖动、磁盘 I/O 定时等物理随机源，混合后产生不可预测的随机数。

**数学检验**：用 Diehard 或 NIST 统计测试检验随机数流是否均匀分布。

伪随机数流 Math.random() 理论上通过 Diehard，但在某些参数下容易暴露周期性（比如连续取偶数位，会发现有明显的规律）。真随机数流总能通过，因为它没有周期性。

**实务影响**：
- TRPG 用途：掷骰子 100 次，伪随机和真随机的结果在统计上无法区分。双方都是公平的。
- 密码学用途：如果用伪随机数生成加密密钥，黑客知道种子就能破解。必须用真随机。
- 游戏内部伤害计算：游戏引擎（如 Unity、Unreal）通常用伪随机，因为速度快且足够公平。但涉及金钱奖励的在线游戏必须用真随机并有第三方审计。

**本工具的选择**：使用浏览器的 crypto.getRandomValues()，属于真随机级别。在 TRPG 直播中掷骰子使用本工具 > 实物骰子，因为观众无法质疑"随机的公平性"。

### 概率分布与多骰模拟

**单个 d6 的分布**

掷一个 d6，每个数字的概率都是 1/6 ≈ 16.7%。图表是平坦的一条线。

**两个 d6 相加的分布（如龙与地下城的 2d6+X）**

结果范围 2-12，但分布是三角形的：
- 2 的概率：1/36（只有 1+1）
- 7 的概率：6/36（1+6, 2+5, 3+4, 4+3, 5+2, 6+1）— 最常见
- 12 的概率：1/36（只有 6+6）

**三个 d6 相加**

结果 3-18，分布更接近"钟形曲线"（高斯分布）。

**为什么重要**：某个 TRPG 系统规定"掷 3d6 表示角色的力量属性（3-18），平均 10.5"。如果你想要"力量分布更离散"（某些角色特别强，某些特别弱），就改成 2d6+某个修正，分布会从 3-18 变成 2-14（范围变小）。

**蒙特卡洛模拟**：

你的角色每次攻击是 `1d20+5 vs AC 15`，成功率是多少？

手工计算：掷 1d20 的结果 1-20，加上 5 变成 6-25，只要 >= 15 就命中。所以 15-25 共 11 个数值，概率 11/20 = 55%。

用骰子工具验证：设置 `1d20+5>=15`，掷 1000 次，统计成功的比例。理论 55%，实测应该约 55%（100 次波动 ±5%，1000 次波动 ±1.5%）。

**进阶用法**：某个 TRPG 系统特别复杂，公式涉及多个条件（如 `if roll >= 10 then 3d6 else 1d6`），手工计算期望值太麻烦，直接用本工具的"统计模式"模拟 10000 次，看平均伤害是多少。

### 实物骰子与在线骰子的对比

| 属性 | 实物骰子 | 在线骰子 |
| --- | --- | --- |
| 制造成本 | 5-200 元（廉价到专业级） | 免费 |
| 公平性 | 廉价骰子常有微妙偏向；专业骰子接近完美 | 完美（密码随机） |
| 可见性 | 高（观众眼睛能看到滚动） | 中等（屏幕动画有视觉反馈，但原理是黑盒） |
| 作弊风险 | 廉价骰子容易被精心设计偏向；专业骰子几乎无法人为操纵 | 如果服务端生成很容易作弊；如果本地浏览器生成几乎无法作弊 |
| 诚信要求 | 取决于骰子质量和操作人 | 取决于工具的代码透明度 |
| 网络/线下 | 线下（需要物理骰子） | 线上和线下混合 |

**为什么有人还用实物骰子**：

1. **传统感与仪式感**：掷骰子的动作（握拳、摇晃、放开）有心理安慰作用，好像"我在主动影响结果"。在线工具看起来太冷漠。
2. **可验证性**：观众能亲眼看到骰子滚动，很难质疑。在线工具虽然底层可能更公平，但观众需要"信任代码"。
3. **脱网需求**：没网络时实物骰子还能用。

**为什么在线骰子更优**：

1. **真随机保证**：密码级随机数 > 普通骰子。
2. **无限骰子**：不需要把 D20 掷多次来模拟 20d20，直接点击生成。
3. **复杂表达式**：`2d20kh1` 或 `3d6+1d4+5` 这样的复杂骰法在在线工具一行代码搞定，实物骰子需要掷多次累加。
4. **统计与存档**：所有掷骰结果可自动记录，便于事后分析。
5. **直播友好**：在线直播时物理骰子画质差、看不清，在线工具可投影放大。

**最佳实践**：TRPG 线下面对面游戏，用实物骰子（体验感强）；线上游戏或竞技赛（需要公证），用在线工具（公平性强）。

### 教学场景：概率论入门与蒙特卡洛方法

**高中数学：理解二项分布**

"抛硬币 10 次，出现 5 次正面的概率是多少？"

理论计算：C(10, 5) × 0.5^10 ≈ 24.6%。

用骰子工具验证：创建一个表达式 `1d2`（D2 表示硬币，出现 1 或 2），掷 10 次，看有多少次掷出特定结果。重复 1000 轮实验，统计"恰好 5 次"的轮数，应该约 240 轮（24%）。

学生亲手验证了理论值，比单纯背公式印象深刻 100 倍。

**大学统计：蒙特卡洛模拟求圆周率**

这是经典算法：在 1×1 的正方形内随机投点，落在圆内的点数与总点数的比值约等于 π/4。

掷 10000 次 (1d100, 1d100) 作为坐标
统计有多少个点的距离 sqrt(x^2 + y^2) <= 100
比例 × 4 ≈ π

本工具虽然不是专门为这个设计，但可以被创意地使用来生成随机点坐标，然后用电子表格计算。

**物理学：粒子碰撞模拟**

某个粒子衰变成多个产物，产物的动量和能量分布遵循量子力学的概率规则。模拟时需要掷大量的随机骰子来决定产物的方向和能量。本工具的"批量掷骰"和"统计模式"是进行这类模拟的基础。

**经济学：赌博与期望值**

"掷 1d20，如果 >= 10 你赢 100 块，否则输 50 块。值得参加吗？"

期望值 = 0.55 × 100 + 0.45 × (-50) = 55 - 22.5 = 32.5 块（正期望，划算）。

用工具掷 1000 次，累计你的净收益，应该约为 32500 块（期望值 × 1000）。实际会上下波动，但趋势是向上的。

学生用工具模拟后，更深刻理解了"虽然每次赌博有风险，但大量重复后数学期望会兑现"。

### 避坑指南与诚信问题

❌ **错误 1：掷骰子决定重要事务时作弊**

你和朋友掷骰子决定"谁付账"，暗地里用一个两面都是 6 的骰子。这短期可能赢钱，但一旦被发现信任彻底破裂。骰子决策的全部价值在于"接受结果"的能力，一旦你违反规则，这个游戏就毁了。

**建议**：使用本工具的在线骰子。完全公开、不可操纵、有记录。这样任何人都无法作弊。

❌ **错误 2：混淆"掷骰数"和"骰子概率"**

"我掷了 20 次 d6，平均每次出现 3.5，所以最多再掷 20 次就能保证出现一个 6。"

错。每次掷骰都是独立事件，过去的结果不影响未来。掷过 100 次都没出现 6 的 d6（理论上虽然概率极低），下一次掷出 6 的概率仍然是 1/6。这叫"赌徒谬误（Gambler's Fallacy）"。

**正确理解**：d6 掷 600 次，会有约 100 次出现 6（期望 1/6）。但这不是"保证"，波动在 ±10 是正常的。

❌ **错误 3：某些 TRPG 场景的"秘密掷骰" 变成"秘密作弊"**

地下城主说"我秘密掷骰来决定怪物的行动"，然后总是让怪物做出对玩家不利的行动。玩家逐渐感觉到"好像 DM 在作弊"。

**解决方案**：即使是"秘密信息"的掷骰，也应该在所有参与者面前进行（或由信任的第三方见证）。本工具可以用"隐藏结果"功能，确保掷骰过程透明但结果先不公开。

✅ **最佳实践**：

1. 提前明确"用什么工具掷骰"（实物、在线还是混合）。
2. 如果用在线工具，选择"开源"或"有审计报告"的版本（确保代码没有暗门）。
3. 如果是涉及金钱的游戏，邀请第三方或组织方公证。
4. 掷骰过程尽可能透明（直播、录视频、多人见证）。
5. 接受结果，即使对你不利。这是掷骰游戏的核心——承认"随机"的权威性。

### 常见问题

**Q: 在线骰子比实物骰子更公平吗？**

理论上是。实物骰子受制造工艺影响，廉价骰子往往某些面出现概率偏高；在线骰子使用密码随机数，理论完美公平。但实际上公平性也取决于"人们对工具的信任度"。

**Q: D20 的概率是多少？**

D20 每个面出现概率都是 1/20 = 5%。掷 1d20>=10 的成功率是 55%（11 个成功的数值）。掷 2d20kh1（优势）的成功率会更高，约 80%。

**Q: 怎样用骰子模拟不公平的概率？**

例如"掷 1d20，如果 >=15 就成功，成功有 80% 的收益和 20% 的惩罚"。用表达式 `if (roll >= 15) then 80% else -20%` 来表示，本工具的高级模式支持条件语句。

**Q: TRPG 里的"爆骰"是什么？**

某些系统规定：掷 d6 如果出现 6，可以再掷一个 d6 加上去。如果再出现 6，继续掷。这样某次攻击可能掷出远超 6 的伤害（如 6+6+3=15）。本工具用符号 `1d6!` 表示爆骰。

**Q: 能用骰子决定人生大事吗？**

可以，但要理解你在做什么。掷骰决策实际上是"我愿意接受随机的结果"，这种心态对解决某些优柔寡断的情况很有效。但重大人生决定（如换工作、结婚）建议结合理性分析，而不是完全靠骰子。

**Q: 掷骰 100 次和掷骰 1000 次结果会一样吗？**

不一样。掷 100 次结果会有较大波动；掷 1000 次会更接近理论分布。这叫"大数法则"—— 样本越大，实验结果越接近理论概率。

---

## 斗地主记分规则完全指南：底分 / 倍数 / 春天反春

> 斗地主三人玩法、底分约定、倍数计算（炸弹 / 王炸 / 春天反春 / 明牌），地主胜负结算公式，以及各地区规则差异与本工具的电子化优势。

URL: https://xtechtools.com/guides/doudizhu-score/
发布：2026-04-29 · 更新：2026-04-29

斗地主是中国最流行的三人纸牌游戏，已有 20 多年历史。一局三五分钟内分出胜负，但"倍数"规则让人费脑子——底分 1 块还是 2 块？炸弹翻几倍？春天反春加不加？同样赢一局，地主要赚多少、农民要亏多少，往往记账时吵得不亦乐乎。本指南讲清楚斗地主的所有计分逻辑，包括三人身份、底分约定、倍数计算与加成规则、最高倍数上限、标准规则、地区变体（四川 vs 北京 vs 江苏 vs 广东），以及用本工具实现电子记分的便利性。

### 斗地主的基本玩法与身份

斗地主由三人参与：一人当地主，另两人合作的农民。

**身份分配**：抢地主阶段，通过"抢"或"不抢"决定。地主比农民多摸 3 张牌（底牌），但是单挑对抗，需要一个人打败两个人。

**胜负条件**：
- 地主先出完手牌 → 地主胜
- 地主没出完手牌，另两家都出完 → 农民胜

一局决出胜负后，根据倍数计算金钱，本指南重点就在这里。

### 底分与基础月供规则

底分是每局游戏的基础赌注，由玩家事先约定。常见约定：

- **1 块底分**：轻松休闲的约局，通常朋友聚会
- **2 块底分**：正常强度的周末麻将牌桌级别
- **3 块底分**：比较紧张的较真局，可能因为有新手或牌技差异

底分的含义：如果游戏没有任何倍数加成（无炸弹、无春天、无明牌），那地主胜时农民各给地主 1 块；农民胜时地主给农民各 1 块。

**地主胜结算**：地主得 +N（N = 底分 × 总倍数），每个农民得 -N

**农民胜结算**：地主得 -2N，每个农民得 +N

### 倍数加成规则详解

倍数是叠加乘算，不是相加。多个倍数出现时相乘而非相加。

**常见倍数加成**：
- **炸弹（一颗）**：四张同点数（如 4 个 7）×2 倍。一局可能出现多个炸弹，每个都 ×2
- **王炸**：双王（大王 + 小王）×2 倍（有些地区 ×4）
- **春天**：地主一方的农民都未出过牌时，地主一次出完所有牌 → ×2 倍
- **反春**：地主剩余手牌，农民都没出过 → ×2 倍（与春天互斥）
- **明牌**：地主翻牌时亮出所有底牌 → ×2 倍

例如：一局有 2 个炸弹 + 王炸 + 春天，倍数 = 2 × 2 × 2 × 2 = 16 倍

### 地区差异与规则变体

中国不同省份的斗地主规则存在显著差异：

**四川版**：流行于成都、重庆一带。春天反春规则最严格，明牌通常 ×3；王炸常见 ×4。

**北京版**：相对保守。通常无明牌规则，春天反春 ×2，王炸 ×2，单个炸弹 ×2。

**江苏版**："抢分"概念，农民可在地主出牌时"抢"宣布抢分加倍。

**广东版**：引入"硬炸"概念（4 张牌一起出），倍数翻倍。

**线上麻将房**：为避免风险，往往简化规则（禁明牌、禁春反春），倍数上限 256 或 512。

本工具支持自定义规则，玩家可在首局前设定本圈子的约定，工具自动应用。

### 最高倍数上限与风险管理

一局如果倍数无限叠加，可能产生天文数字的赌金。为避免极端情况：

- **无上限**：豪赌圈子，倍数可达数千甚至数万倍（极端罕见）
- **256 倍上限**：常见的小赌圈约定
- **512 倍上限**：中等强度的玩家小组
- **1024 倍上限**：线上平台常用的折中方案

本工具提供可配置的上限，防止倍数溢出导致结算错误。即使触发上限，工具仍准确显示无上限倍数供参考。

### 本工具的电子记分优势

传统纸笔记分的痛点：
- 倍数多时容易算错（尤其是 2^n 的乘法）
- 多局累计时易漏加
- 地区规则切换需要脑算规则映射
- 事后争议难以查证

本工具的优势：
- 自动计算倍数乘算，支持自定义规则库（四川 / 北京 / 江苏模板）
- 逐局记录并可导出，每局数据可追溯
- 实时显示当前赛季总排行、人均赢分率
- 手误可一键撤销，避免重新计算全局
- 支持多人多局的累计，适合长期麻友小组

### 常见问题

**Q: 炸弹和王炸能叠加吗？**

完全可以。一局既出现炸弹又出现王炸的情况下，倍数相乘。例如 1 个炸弹 ×2、王炸 ×2 → 总 ×4。

**Q: 春天和反春能同时算吗？**

不能。春天是地主一次出完，反春是农民都未出。两者互斥，只能选一个加倍。

**Q: 底分 1 块打了 10 局，共赢了 20 局、亏了 10 局，怎么结算？**

本工具会逐局累加。假设 10 局赢分分别为 +2、+4、+8...，工具自动求和得总收益。无需手工计算。

**Q: 不同地区约定规则，工具能保存几套方案吗？**

支持。工具内置四川、北京等常见模板，也可自建"自定义"方案，保存 IP 本地。切换时一键导入。

**Q: 明牌规则各地倍数不同，怎么办？**

本工具的倍数配置是自定义的。创建方案时明牌明确是 ×2 还是 ×3，确认无误后保存即可。

---

## 掼蛋升级规则完全指南：从 2 打到 A 的路径

> 掼蛋四人两队对抗、等级制进度（从 2 到 A）、升级条件、过 A 的两道关卡、炸弹识别、地区版本差异与本工具电子记分的优势。

URL: https://xtechtools.com/guides/guandan-score/
发布：2026-04-29 · 更新：2026-04-29

掼蛋（又作"贯蛋"）是江苏、安徽最流行的四人对抗纸牌游戏，因等级制、复杂升级路径和激烈对战而风靡棋牌室与办公室。与斗地主一局数分钟不同，掼蛋一个"轮"可能要打十来局才能分出升级者——每赢升一级、每输降一级。到了"K 级"还要再过两道关（先打 A、再过 A）才能成为最高级"A 级"。本指南详解掼蛋四人两队对抗机制、升级条件（双升 / 单升 / 落地升）、炸弹倍数计算、K 级两关规则、地区版本差异，以及本工具自动追踪等级进度的优势。

### 掼蛋的基本玩法与四人两队

掼蛋四人一桌，分为两队对抗。通常坐法：1 号 + 3 号为一队，2 号 + 4 号为另一队。

**牌牌组成**：去掉大小王的 52 张牌（从 2 到 A）。4 个 2 最小，4 个 A 最大。

**每人获牌**：各发 13 张，剩余 0 张无底牌。

**等级与主牌**：游戏有 13 个等级（2、3、4、5、6、7、8、9、10、J、Q、K、A）。当前等级为"主等级"，对应点数的所有牌（如主等级 5，则 4 个 5 都是最大牌）为主牌。此外当前等级的花色也是主花色。

### 升级条件与晋级机制

掼蛋的进度由胜负直接决定。一局游戏后：

**队伍胜利**：该队的两个"先手者"（通常是打牌成功最多的两人）中排名靠前的升一级。
- **双升**：该队两人都升级（同时超越当前等级） → 下局一人升 2 级
- **单升**：一人升级
- **落地升**：落后一级的队员输局后，如果本队总体赢了，该落后者升 1 级

**队伍失败**：失败队对应的先手者降 1 级。

例如：当前 5 号为主等级，甲队赢 → 5 号队的升级者晋到 6；乙队如有人被"甩"（手牌未出完游戏结束）则双重扣分。

### K 级与过 A 的两道关

掼蛋最独特的规则是 K 级的"双关"设定：

**K 级第一关**：K 级的队伍需要"打 A"——一局内该队的先手者必须打出 A（使用 A 赢得出牌权）。打出 A 才有资格升到第二关。

**K 级第二关**：打过 A 后，下一局需"过 A"——不仅打出 A，还要在最后一轮出牌中再次过掉对方的 A（即最终赢牌包含 A）。双关通过，升到 A 级。

这两道关卡是掼蛋最紧张刺激的时刻。对方往往会竭力阻止你打 A，气氛非常激烈。有些地区还有"争关"规则，A 级的队伍可以和 K 级争夺升级。

### 炸弹与倍数计算

掼蛋的倍数加成主要来自炸弹：

**四同炸弹**：四张同点数牌 → ×2 倍
- 例如 4 个 8 一起出，即使不是最大牌，也能炸掉对方任何牌型

**五同与花色炸**（地区变体）：
- 五同（如 5 个 5，需要王牌配合）→ ×4 倍或 ×8 倍
- 同花顺（如红桃 7-8-9-10-J）→ ×2 或 ×4 倍（视地区）

**火箭**：两张王（大王 + 小王）→ ×2 倍（有些地区 ×4）

一局多个炸弹时，倍数相乘。掼蛋的倍数计算比斗地主复杂，需要精确跟踪每局的所有炸弹。

### 地区版本与规则差异

掼蛋在江苏、安徽各地有显著差异：

**江苏标准版**：最严格的规则。禁止"硬炸"（同花顺无加成），只有四同 ×2；地主升级人数明确。

**安徽变体版**：允许同花顺 ×3 或 ×4；对于多队伍同等升级时有特殊处理（称"回顺"）。

**上海老年版本**：放宽升级条件，K 级时只需出现一个 A（无需再过 A），加速游戏进度；倍数上限更高。

**线上麻将房版**：简化规则以适应数字化，通常无"硬炸"，倍数固定或上限 256；自动追踪升级避免争议。

本工具内置这些版本的规则库，不同地区的玩家可一键切换。

### 本工具的掼蛋记分优势

传统笔记掼蛋的挑战：
- 等级多（13 级）、四人各自的等级互不相同，手动追踪易混淆
- 升级条件复杂（双升、单升、落地升），判断谁升谁降需反复确认
- K 级的"两关"规则需记住谁打过 A、谁还差一关
- 倍数叠加时容易遗漏某个炸弹
- 一个"轮"可能 10-20 局，累计计分手算容易出错

本工具解决这些问题：
- 自动追踪四人各自的等级进度，实时显示谁在 K 级的哪一关
- 输入当局胜者后，自动判断升级规则（双升 / 单升 / 落地升），同步更新所有人等级
- 记录每局是否出现炸弹及倍数，累计赛季总倍数
- 支持"撤销"上一局，避免重新计算全部
- 导出赛季报告，包括个人升级速度、胜率、掉分频率等分析

### 常见问题

**Q: 从 2 级升到 A 级需要多少局？**

理论最少 12 局（每局升 1 级）。但实际取决于胜负率和地区规则。若每局 50% 概率赢，平均 20-30 局才能升到 A。K 级因为有两道关，通常需要额外 3-5 局。

**Q: 双升是什么意思？**

一局内，胜队的两个成员都达到了升级条件（如都出了特定牌型）。下一局时，其中排名第一的升 2 级，排名第二的升 1 级。反过来说，败队双降。

**Q: 落地升规则怎么理解？**

一个队四人中总有等级差异。等级最低的人输了一局，但队伍总体赢了，那他可以升 1 级（叫"落地升"）——相当于给落后者翻身机会。

**Q: 过 A 的两道关能在同一局里完成吗？**

不能。K 级第一关（打 A）和第二关（过 A）必须分两局。即使一局里既打出又过了 A，也是两关分开计数。

**Q: 倍数会清零吗？**

取决于规则。有些地区每升级一次清零倍数重新计算；有些全赛季累计不清零。本工具支持两种模式自定义。

**Q: 工具能追踪单局掉分吗？**

可以。本工具记录每局的倍数和胜负者，导出时能看到单局掉分明细（如某人因被甩损失 -8 分等）。

---

## 麻将记分完全指南：自摸 / 点炮 / 流局 各算法

> 麻将四人玩法、东南西北方位、自摸与点炮的支付差异、底分与番数的乘法、流局规则、地区方言差异、本工具按"金额"通用记分的优势。

URL: https://xtechtools.com/guides/mahjong-score/
发布：2026-04-29 · 更新：2026-04-29

麻将是中国最古老的博弈游戏，已有百年以上历史。麻将计分规则出了名的复杂——同样"三番"胡牌，自摸和点炮的支付额完全不同；流局罚分有讲究；不同地区番数标准各异（广东推倒胡、北京麻将、四川血战到底等）。本指南详细解自摸 vs 点炮的支付差异、东家倍数机制、底分与番数的乘法关系、流局规则、地区方言差异（广东 / 北京 / 四川 / 浙江 / 上海），以及用本工具按"金额"进行通用化电子记分的便利与优势。

### 麻将的基本玩法与四个方位

麻将由四人参与，坐成一圈。

**方位与庄家**：
- 东 → 南 → 西 → 北 循环（共 16 局一圈，东/南/西/北各 4 局）
- 每圈的第一局由东家做庄
- 胡牌（赢）的玩家下局做庄；如果是平局（流局），庄家继续做庄

**胡牌条件**：手中 14 张牌（含摸进来的 1 张）形成特定牌型（如清一色、刻子、顺子等）。

**胡的两种方式**：
- **自摸**：自己摸牌时完成胡牌 → 三家都要付钱给你
- **点炮**：别人出牌时你胡了 → 只有那一家付钱给你，另两家不付（这是关键差异）

### 自摸 vs 点炮的支付差异

这是麻将计分最重要的一个差异：

**自摸**：你胡了，三家都要给你钱。假设底分 1 块、番数 2：
- 东家给：1 × 2 × 2 = 4 块（东家多付）
- 南家给：1 × 2 × 1 = 2 块
- 西家给：1 × 2 × 1 = 2 块
- 你共收：4 + 2 + 2 = 8 块

**点炮**：例如被南家点炮，只有南家付钱给你：
- 如果你是东家（点炮加倍）：南家付 1 × 2 × 2 = 4 块
- 如果你是非东家：南家付 1 × 2 × 1 = 2 块
- 另外两家（东家、西家）不付钱

**关键**：自摸是"多人平摊"，总收益较大；点炮是"单人承担"，收益较小但被点炮者亏得多。

### 底分、番数与倍数关系

麻将计分的数学模型：

**底分**：基础赌注，常见 0.5 块、1 块、2 块。

**番数**：根据胡牌的牌型复杂度评分，常见 1-6 番甚至更高。例如：
- 1 番：刻子、对对、清一色等基础牌型
- 2 番：加上特定条件（如自摸、碰碰胡）
- 3+ 番：混合高级牌型（七对、十三幺等）

**计分公式**：底分 × 番数 × 倍数（东家/非东家）
- 东家自摸 3 番：底分 × 3 × 2（三家各付，东家 ×2）
- 非东家自摸 3 番：底分 × 3 × 1（南西北各付，不分东西）
- 点炮给非东家：底分 × 番数 × 1
- 点炮给东家：底分 × 番数 × 2

**上限与封顶**：某些地区规定最高番数为"满贯"（如 8 番、10 番、13 番），超过封顶值一律按封顶值计算。

### 流局与罚分规则

四人都没胡牌而摸牌摸完，称为"流局"或"荒局"。流局时谁罚分取决于流局类型：

**摸牌无和**：正常流局，通常无罚分，下一局继续。

**流局满贯**（地区变体）：
- 某些地区规定，流局时摸清所有牌仍无和 → 庄家罚 2-4 块给其他三家
- 有些地区则为零罚

**罚分导致流局**：
- 出现"四风连打"（四个风出现四次）→ 庄家罚分
- 出现"四杠"（四个杠）→ 庄家罚分
- 黄牌（违规出牌被发现）→ 该家罚分

**不同地区差异很大**。广东推倒胡通常无流局罚分；北京麻将则有明确罚分标准。本工具支持多种流局模式选择。

### 地区方言与规则差异

中国各地的麻将规则差异巨大：

**广东推倒胡**：无东西南北风牌，只有万索筒，胡牌条件最灵活。号称"南派"最自由的方言。

**北京麻将**：严格的番数标准（1-6 番），有"七对""清一色"等限定，计分规则详细且不容商量。常见 8 番、10 番封顶。

**四川血战到底**：三人不退出，四人独立战斗，胡牌不影响他人（不放炮）。番数简化，但因为三人继续，游戏可能无限延长。

**浙江嘉兴麻将**：花牌（春夏秋冬梅兰竹菊）加入，8 张花牌增加了运气和变数。

**上海麻将**：二番起胡，一番不算；有"清、混、荤"三种牌型等级划分。

本工具内置这些流行地区的规则库，可一键切换，无需每局重新设置。

### 本工具的麻将记分优势

传统笔记麻将计分的难点：
- 自摸和点炮的支付链路不同，多人时容易算错
- 东家身份会动态变化，需反复确认倍数
- 流局罚分规则地区差异大，容易遗漏或用错
- 番数多且复杂，累计计分时一次一次乘算容易出错
- 一天可能 10+ 局，总结时需要全部加总

本工具通过"金额输入"解决这些问题：
- 无需记忆番数表。只需输入本局某个玩家赢的"金额"（例如"张三自摸 12 块"），工具会根据当前的庄家身份、胡的方式自动计算每个玩家应付多少
- 支持一键设置麻将地区规则（广东 / 北京 / 四川 / 浙江 / 上海 / 自定义），自动应用对应的番数上限和流局规则
- 实时显示四人的"输赢累计"，支持多天汇总（例如本周来家里打麻的总进度）
- 导出每日账单、人均赢分率、最多赢的一局等分析

### 常见问题

**Q: 自摸和点炮哪个更赚钱？**

自摸赚钱。例如底分 1 块、3 番，自摸能收 8 块（三人各 2-4 块），但点炮只能从一人手中收 2-4 块。这也是为什么有成语"自摸加倍"。

**Q: 被东家点炮和被非东家点炮，付的钱不一样吗？**

是的。同样底分和番数，点炮给东家的倍数是 ×2，点炮给非东家的倍数是 ×1。所以被东家点炮亏得更多。

**Q: 流局时庄家要罚多少？**

取决于地区规则。有些地区无罚分；有的地区庄家罚 2-4 块给其他三家；有的情况下（如四风连打）另有规定。本工具支持自定义流局罚分规则。

**Q: 麻将最高番数是多少？**

没有绝对答案。有些地区无限制；有些规定 8 番、10 番、13 番为"满贯"（封顶）。本工具可配置封顶值。

**Q: 一个人连续做庄多局，要给分吗？**

不用。庄家身份只影响自摸 / 点炮时的倍数。赢牌才需要付钱；没人胡牌的流局通常无需庄家额外付分。

**Q: 工具能区分不同地区的麻将规则吗？**

可以。本工具内置广东、北京、四川等流行地区的番数表和流局规则，创建牌局时可选择。也支持"自定义"方案以适应本地特殊规则。

---

## JWT 签发完整指南：HS256 / RS256 / ES256 选哪个

> JWT 是互联网最常用的无状态身份验证标准。本文讲清楚三种签名算法的原理、适用场景、payload 设计与撤销难题，以及何时选哪个。

URL: https://xtechtools.com/guides/jwt-sign/
发布：2026-04-29 · 更新：2026-04-29

JWT（JSON Web Token）是无状态身份认证的业界标准，从微信小程序到企业级 OAuth2，处处可见。但很多开发者拿着三种签名算法（HS256 / RS256 / ES256）却搞不清什么时候该用哪个——HS256 用错了容易被冒签，RS256 用对了能支撑多方验证。本指南从三段结构讲起，逐一分析算法权衡与安全性，再到 payload 设计、过期策略、撤销方案，让你能自信地选出适合项目的方案。

### JWT 的三段结构

JWT 由三段 Base64URL 编码的部分用 `.` 连接：

```
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
```

**Header**（首段）：`{"alg":"HS256","typ":"JWT"}` 指定签名算法和文档类型。解码后就是这个 JSON。

**Payload**（中段）：`{"sub":"1234567890","name":"John Doe","iat":1516239022}` 是实际数据（claims）。注意：Base64 只是编码不是加密，任何人都能解码看到内容，所以不要放密码或敏感信息。

**Signature**（末段）：用私钥或对称密钥对「header.payload」字符串签名，防止数据被篡改。只要内容变一个字符，签名就失效。

### HS256：对称加密，单方控制

**HS256 = HMAC with SHA-256**，用同一个密钥（secret）既签名又验证。

签发流程：
```
token = base64(header) + '.'+ base64(payload) + '.' + hmac_sha256(base64(header) + '.' + base64(payload), secret)
```

验证流程：重新计算签名，比对是否相同。

**优点**：
- 实现最简单，一行代码搞定
- 性能最快（HMAC 比 RSA 快 10 倍）
- 密钥小，token 体积小

**缺点**：
- 对称密钥，签发和验证端都要拥有同一个 secret
- 适合单体架构或内部系统，不适合多方验证（如开放平台）
- secret 泄露后，攻击者可伪造任何 token

**典型场景**：单体 Node.js 服务自己签发自己验证的 token，或内部微服务间通信。

### RS256：非对称加密，多方验证

**RS256 = RSA Signature with SHA-256**，用私钥（private key）签名，用公钥（public key）验证。

签发流程：使用私钥签名，发放 token 和公钥。

验证流程：用公钥验证，无需私钥。

**优点**：
- 公钥可安全公开（GitHub、谷歌等大厂都这样做）
- 支持多方验证：中心签发 token，分布式服务都能用公钥验证
- 私钥泄露风险更低（通常存在专门的密钥服务器）
- OAuth2 标准推荐

**缺点**：
- 密钥更复杂（2048 位 RSA 至少 1700 字节）
- 签名与验证性能比 HS256 慢
- 初期配置复杂

**典型场景**：OAuth2 授权服务器签发 token，各个资源服务器都能验证。或公有云 API（AWS、Azure）。

### ES256 与其他算法

**ES256 = ECDSA with SHA-256**（椭圆曲线），介于 HS256 和 RS256 之间。

- 性能接近 HS256（快）
- 密钥比 RSA 小（256 位 ECDSA = 2048 位 RSA 的安全强度）
- 非对称，支持多方验证

**实际应用**：Apple、Google、微信等新一代服务用 ES256 代替 RS256。初创项目倾向 ES256，老项目沿用 RS256。

**选择指南**：
- 单体服务或内网 → HS256（快、简单）
- 分布式/开放平台 → RS256 或 ES256（多方验证）
- 新项目优先 → ES256（性能与安全的最佳平衡）

### 常见 Claims 与设计原则

JWT payload 建议包含这些 standard claims（rfc7519）：

- `iss`（issuer）：签发者，如 `https://auth.myapp.com`
- `sub`（subject）：主体，通常是用户 ID
- `aud`（audience）：受众，指定哪个服务能用这个 token，如 `api.myapp.com`
- `exp`（expiration time）：过期时间，Unix 时间戳（秒）
- `iat`（issued at）：签发时间
- `nbf`（not before）：生效时间，通常 = iat（可用来延迟生效）
- `jti`（JWT ID）：唯一 ID，用于追踪和撤销

**设计原则**：
- **不放敏感数据**：Base64 随意解码，token 里别放密码、身份证、银行卡
- **保持精简**：每个 claim 增加 token 体积，HTTP header 大小有限制
- **用 aud 做访问控制**：不同服务验证时检查 aud 是否匹配，防止 token 串用
- **用 jti 追踪**：调试和安全审计时需要唯一身份

### 过期策略：access token + refresh token

单用一个长期 token 不安全（泄露影响大）。业界标准做法是双 token 体系：

**Access Token**：
- 短期（15 分钟 ~ 1 小时）
- 用于访问 API
- 泄露损失相对小
- 过期后服务器直接拒绝，无需查库

**Refresh Token**：
- 长期（7 天 ~ 30 天）
- 仅用于刷新获取新 access token
- 存在数据库，可追踪和撤销
- 泄露后在数据库删除即可阻止进一步续期

**典型流程**：
1. 登录成功，返回 access token + refresh token
2. 用 access token 调 API
3. Access token 过期，用 refresh token 申请新 access token
4. Refresh token 过期或被撤销，需重新登录

这样既享受无状态的便利，又能在需要时快速撤销（delete from db）。

### JWT 撤销难题的三个方案

JWT 最大问题：签发后无法立即作废（无状态 = 无法查库）。三种常用方案：

**方案 1：短期 token**（推荐）
设 access token 15 分钟过期，攻击者获得 token 也只能用 15 分钟。用户登出时撤销 refresh token。

**方案 2：黑名单数据库**
用户登出或修改密码时，把 token 的 jti 存进黑名单表。验证时先查黑名单，这样破坏了"无状态"但仍比 session 更轻。

**方案 3：改用 Session**
如果撤销需求极高（如金融），就别用 JWT，用 session 结合 Redis，每次都查库验证。损失无状态的便利，但获得完全控制。

**实战建议**：互联网产品选方案 1（短期 access token），政府/金融/医疗选方案 2 或 3。

### 常见问题

**Q: HS256 的 secret 应该多长？**

至少 32 字符（256 bits）。用加密随机生成，不要是弱密码或日期。Node.js：crypto.randomBytes(32).toString('hex')。

**Q: 如何防止 token 被 XSS 偷走？**

Access token 存 httpOnly cookie（脚本无法访问），refresh token 存 secure cookie。这样 XSS 攻击也伤害有限。

**Q: Token 在哪里放传输？**

通常放 Authorization header：`Authorization: Bearer <token>`。不要放 URL 参数（日志和浏览器历史会记录，比 header 不安全）。

**Q: 验证 JWT 时还需要检查什么？**

除了签名有效，还要验证：(1) exp 是否过期，(2) aud 是否匹配当前服务，(3) iss 是否来自可信来源，(4) jti 是否在黑名单（如用了方案 2）。

---

## HTTP 请求代码生成完全指南：fetch / axios / curl 最佳实践

> 从 GET 取数到 POST 创建再到 PUT/PATCH 更新，掌握 HTTP 方法语义、Content-Type 选择、Authorization 方案，写出安全高效的请求代码。

URL: https://xtechtools.com/guides/http-request-gen/
发布：2026-04-29 · 更新：2026-04-29

HTTP 请求看似简单，但选错方法或 header 会导致隐蔽的 bug。GET 用来取数，POST 创建，PUT 整体替换，PATCH 部分更新，DELETE 删除——每个都有特定含义，用错了服务器也许能工作但违反了 REST 约定。本指南从方法语义讲起，逐一覆盖 Content-Type、Authorization、错误处理、超时与重试，并用本站工具生成可用的 fetch / axios / curl 代码。

### HTTP 方法的正确语义

| 方法 | 幂等 | 有 body | 用途 |
| --- | --- | --- | --- |
| GET | ✓ | ✗ | 读取资源，不修改服务器 |
| POST | ✗ | ✓ | 创建新资源，或触发服务端动作 |
| PUT | ✓ | ✓ | 整体替换资源（全量更新） |
| PATCH | ✗ | ✓ | 部分修改资源 |
| DELETE | ✓ | ✗ | 删除资源 |
| HEAD | ✓ | ✗ | 同 GET 但不返回 body，常用于检查资源是否存在 |

**幂等**：重复执行多次与执行一次结果相同。GET/PUT/DELETE 幂等，POST/PATCH 不幂等。

**常见错误**：
- 用 GET 修改数据（导致被浏览器缓存，修改失效）
- 用 POST 代替 PUT（语义不清，难以预测行为）
- 用 DELETE 而不返回成功状态（删除的资源去哪了？）

### Content-Type 与请求体格式

最常见的三种：

**application/json**（推荐）：
```
Content-Type: application/json

{"name":"Alice","age":30}
```
现代 API 的标准。跨语言通用，嵌套灵活。缺点：不支持文件上传。

**application/x-www-form-urlencoded**：
```
Content-Type: application/x-www-form-urlencoded

name=Alice&age=30
```
老式 HTML 表单使用。URL 中含 `&` 会变 `%26`，不适合复杂数据。但很多老网站仍用。

**multipart/form-data**：
```
Content-Type: multipart/form-data; boundary=----Boundary123

------Boundary123
Content-Disposition: form-data; name="name"

Alice
------Boundary123
Content-Disposition: form-data; name="file"; filename="photo.jpg"
Content-Type: image/jpeg

[二进制内容]
```
唯一支持文件上传的格式。浏览器上传表单自动用这个。

**选择规则**：
- REST API（推荐） → JSON
- HTML 表单 → form-urlencoded 或 multipart
- 文件上传 → 必须 multipart

### Authorization 认证方案

服务器如何确认你是谁？四种常见方案：

**1. Bearer Token（最常用）**：
```
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
```
通常是 JWT。适合 API 认证和移动 app。

**2. Basic Auth**：
```
Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=
```
Base64 编码的 `username:password`。简单但不安全，必须用 HTTPS，很多接口仍用（如 npm registry、GitHub personal access token）。

**3. API Key**：
```
X-API-Key: sk-1234567890abcdef
```
或放 query 参数 `?api_key=...`。不安全，但简单。常见于公开 API（天气、地图、翻译）。

**4. OAuth2**：
```
Authorization: Bearer access_token_here
```
结合 refresh token 的完整授权框架。微信、QQ、Google 登录都用 OAuth2。

**选择规则**：
- 内部 API → Bearer Token（JWT）
- 第三方服务接入 → OAuth2
- 小型公开 API → API Key
- 遗留系统 → Basic Auth（但要用 HTTPS）

### Fetch vs Axios vs curl 对比

**Fetch API**（原生，无依赖）：
```
const res = await fetch('/api/users', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ name: 'Alice' })
});
const data = await res.json();
```
优点：原生 API，无需引入库，Promise 原生支持。缺点：没有内置超时、重试、请求拦截器，手工处理比较繁。

**Axios**（最流行的 HTTP 库）：
```
const res = await axios.post('/api/users', { name: 'Alice' }, {
  timeout: 5000,
  headers: { 'Content-Type': 'application/json' }
});
const data = res.data;
```
优点：超时、重试、拦截器都有，API 简洁。缺点：需要依赖。

**curl**（命令行）：
```
curl -X POST https://api.example.com/api/users \\
  -H "Content-Type: application/json" \\
  -d '{"name":"Alice"}'
```
优点：快速测试，无环境要求。缺点：不适合复杂逻辑。

**本站工具**自动生成这三种代码，选择对应场景即可。

### 错误处理与状态码检查

**Fetch 的坑**：fetch 只在网络错误时 reject，4xx/5xx 不会。

```
try {
  const res = await fetch('/api/users');
  if (!res.ok) throw new Error(`HTTP ${res.status}`);
  return await res.json();
} catch (err) {
  console.error('Request failed:', err);
}
```
**必须手工检查 res.ok 或 res.status**。

**Axios 的便利**：状态码 4xx/5xx 自动 reject。

```
try {
  const res = await axios.get('/api/users');
  return res.data;
} catch (err) {
  if (err.response) {
    console.error(`Server error ${err.response.status}`);
  } else if (err.request) {
    console.error('No response');
  }
}
```

**常见状态码**：
- 200 OK / 201 Created / 204 No Content
- 400 Bad Request / 401 Unauthorized / 403 Forbidden / 404 Not Found
- 500 Internal Server Error / 503 Service Unavailable

不同的错误需要不同处理（401 要重新登录，503 可重试）。

### 超时与重试策略

**设置超时**（防止无限等待）：

Fetch（无内置）：
```
const controller = new AbortController();
const id = setTimeout(() => controller.abort(), 5000);
try {
  return await fetch(url, { signal: controller.signal });
} finally {
  clearTimeout(id);
}
```

Axios（简单）：
```
await axios.get(url, { timeout: 5000 });
```

**重试策略**：
```
async function retryFetch(url, maxRetries = 3, delay = 1000) {
  for (let i = 0; i < maxRetries; i++) {
    try {
      return await fetch(url);
    } catch (err) {
      if (i === maxRetries - 1) throw err;
      await new Promise(r => setTimeout(r, delay * Math.pow(2, i)));
    }
  }
}
```

**重试原则**：
- GET / HEAD / DELETE / PUT：幂等，可安全重试
- POST / PATCH：非幂等，重试需谨慎（可能重复创建）
- 只重试 5xx / 408 / 429，不重试 4xx（客户端错误重试无效）
- 指数退避延迟（1s → 2s → 4s），避免击垮服务器

### CORS 跨域与浏览器限制

浏览器同源策略：JavaScript 只能请求同域名/同端口的资源。跨域请求会被浏览器拦截。

**CORS 预检请求**（OPTIONS）：浏览器自动发送，服务器响应允许的方法和 header。

```
Fetch 时浏览器自动发 OPTIONS，如果服务器没有 CORS header，请求被拦截。
```

**解决方案**：
1. 服务器加 CORS header：
```
Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, POST, PUT, DELETE
Access-Control-Allow-Headers: Content-Type, Authorization
```

2. 用 Proxy（开发时）：Next.js / Create React App 的 setupProxy

3. 用 JSONP 或 iframe（已过时）

**注意**：curl 和 Node.js 后端无 CORS 限制，只有浏览器中的 JavaScript 受限。本站工具生成的前端代码，如果跨域需确保目标 API 开启 CORS。

### 常见问题

**Q: 什么时候用 PUT，什么时候用 PATCH？**

PUT 替换整个资源（全量），PATCH 修改部分字段。例：更新用户，PUT 时必须发全部字段，PATCH 只发改变的字段。但多数小型 API 都用 PATCH。

**Q: Fetch 默认是 GET 吗？**

是。不指定 method 时默认 GET；如果提供 body，默认变 POST（但需明确指定 method）。

**Q: 如何在浏览器中传文件？**

用 FormData + multipart/form-data。Axios 自动识别 FormData 并设置正确的 Content-Type。

**Q: 能在 Authorization 里放 API Key 吗？**

可以，但规范做法是用自定义 header（如 X-API-Key）或放 query 参数。Bearer token 严格指 OAuth2 / JWT。

**Q: 302 重定向我的代码需要处理吗？**

Fetch / Axios 默认自动跟随重定向（最多 5 次）。通常不需要手动处理，除非特别不想跟随。

---

## 词云生成完整指南：分词算法 / 美学设计 / 应用场景

> 词云用字号和颜色可视化高频词汇，常见于年度盘点、舆情分析、用户画像。本文讲清楚分词、停用词过滤、词频映射、配色与应用。

URL: https://xtechtools.com/guides/word-cloud/
发布：2026-04-29 · 更新：2026-04-29

词云（Word Cloud）是一种数据可视化方式，用字号大小和颜色深浅表示词汇频率和重要性。从微信公众号年度运营盘点、电商用户评价分析，到舆情监测、学术论文关键词提取，再到社交媒体话题热度，词云快速浮现数据的核心价值。但生成高质量词云并不简单——中英文分词完全不同，停用词必须过滤，字号映射可用线性或对数，配色更是心理学运用。本指南从算法原理讲到美学设计。

### 分词：英文 vs 中文的巨大差异

**英文分词**（简单）：按空格和标点切割。

`"Hello world from Python"` → `["Hello", "world", "from", "Python"]`

浏览器原生 JavaScript 直接 `.split(/\s+/)` 即可。

**中文分词**（复杂）：汉字间没有空格，无法用分隔符切割。必须用算法理解词义。

`"我喜欢学习自然语言处理技术"` → `["我", "喜欢", "学习", "自然", "语言", "处理", "技术"]` 或 `["我", "喜欢", "学习", "自然语言处理", "技术"]`

都有可能，取决于分词库和算法。

**常见中文分词库**：
- **jieba**（Python）：前向最大匹配 + 隐马尔可夫模型，准确率 85-90%
- **Python-Chinese-Segmentation**：分词准确但速度较慢
- **nodejieba**（Node.js）：jieba 的 JS 版本
- **大模型（ChatGPT）**：准确率最高但成本高

本站工具内置中文分词库，用户无需关心实现细节。

### 停用词过滤的重要性

分词后会出现大量"无意义的词"，必须过滤掉：

**中文停用词**（常见 100+ 个）：
的、是、了、和、在、有、人、这、中、大、来、以、对、生、要、我、他、不、为、起、到、一、被、...

**英文停用词**：
the、a、an、and、or、but、in、on、at、to、be、is、are、...

**例子**：
```
原始文本："中国是一个伟大的国家，我们的人民热爱和平。"
分词后：["中国", "是", "一个", "伟大", "的", "国家", "我们", "的", "人民", "热爱", "和平"]
过滤停用词：["中国", "伟大", "国家", "人民", "热爱", "和平"]
```

去掉 "是" "的" "我们" 这类虚词后，词云显示的信息密度立刻提高。

**自定义停用词**：本工具允许在生成前补充或删除停用词，比如项目特定的常见词（公司名、产品名）。

### 词频计算与字号映射

**词频统计**（计数）：
```
单词词频 = 该单词在全文出现的次数
```

假设分词后得到：
```
"AI" 出现 150 次
"机器学习" 出现 80 次
"深度学习" 出现 45 次
"算法" 出现 20 次
```

**字号映射**（关键一步）：频率最高的词显示最大，最低的词显示最小。但用哪个函数映射？

**线性映射**：
```
font_size = min_size + (frequency - min_freq) / (max_freq - min_freq) * (max_size - min_size)
```
字号与词频成正比。缺点：高频词太大，低频词太小，对比过于极端。

**对数映射**（推荐）：
```
font_size = min_size + log(frequency + 1) / log(max_freq + 1) * (max_size - min_size)
```
高频词增长放缓，低频词相对显眼，视觉分布更均衡。

**平方根映射**：
```
font_size = min_size + sqrt(frequency) / sqrt(max_freq) * (max_size - min_size)
```
折中方案，常见。

**经验参数**：min_size = 12px，max_size = 80px（根据词云大小调整）。

### 形状与布局设计

词云形状影响视觉感受：

**矩形（默认）**：
- 最高效利用空间
- 阅读顺序清晰（从左到右、从上到下）
- 适合信息密集场景

**圆形**：
- 和谐、整体感强
- 常见于品牌/企业应用
- 空间利用率 70%

**心形**：
- 情感化、温暖
- 常见于情人节、公益活动
- 难排版，空间利用率 60%

**自定义形状**：上传 SVG 或 PNG 轮廓，词云填充形状内部（高级功能）。

**布局算法**：
- **螺旋**（高效）：从中心向外螺旋排列，快速、紧凑
- **随机**（散乱）：无序排放，有机、不规则
- **竖排**（中文友好）：竖排中文看起来更自然

本工具默认螺旋布局，水平排列，适合快速生成。

### 配色与心理学

颜色不仅是装饰，还传达信息：

**暖色调**（红、橙、黄、粉）：
- 传达：热情、积极、活力
- 适合：品牌推广、营销文案、互动分析
- 例：电商平台的用户评价词云

**冷色调**（蓝、青、紫、绿）：
- 传达：理性、专业、深度
- 适合：学术论文、技术分析、舆情监测
- 例：AI 论文关键词、代码库分析

**单色渐变**（同一色系深浅）：
- 传达：专业、统一
- 适合：企业正式报告

**彩虹**（多彩）：
- 传达：创意、多样
- 适合：儿童内容、创意产业
- 风险：容易显得混乱

**设计建议**：
1. 与品牌色一致（企业应用）
2. 用 3-5 个主色 + 渐变变体，避免超过 7 色（色数过多显脏）
3. 高频词用高对比色，低频词用背景色接近的浅色
4. 测试色盲友好度（5% 男性有色盲）

### 典型应用场景与案例

**1. 微信公众号年度数据分析**：
统计全年文章标题和正文中的高频词。暖色调词云，突出品牌传播的核心概念。

**2. 电商评价分析**：
用户评论分词后生成词云。"快递" "质量" "推荐" 大，"垃圾" "破损" 也大 → 表示有问题值得关注。

**3. 舆情监测**：
爬取新闻、微博、论坛评论，分词后监测高频词变化趋势。蓝色冷调显得专业。

**4. 简历/论文关键词提取**：
PDF 转文本 → 分词 → 词频统计 → 生成词云。一眼看出求职者的核心技能或论文的主题。

**5. 用户画像画像**：
分析 500 条用户问卷回答，生成描述词云。"80 后" "北京" "白领" "爱好旅游" 高频 → 核心用户画像浮现。

**6. 品牌认知调研**：
问用户 "你对 iPhone 的第一印象？" 收集 1000+ 回答，词云显示 "创新" "简洁" "昂贵" 频率。

### 词云 vs 标签云的区别

两者容易混淆但完全不同：

**词云（Word Cloud）**：
- 根据词频改变字号
- 适合展示大量数据中的热点
- 需要数据计算、算法支撑
- 适合分析型应用

**标签云（Tag Cloud）**：
- 等大的标签，按名称字母排序
- 只有分类、导航功能
- 无需计算词频
- 适合网站导航（如博客标签页）

这里讲的是词云。本站工具不支持标签云。

### 常见问题

**Q: 中文词云会包含繁体字吗？**

取决于分词库。jieba 默认简体，但支持加载繁体词库。本工具默认简体中文。

**Q: 能去掉某个我不想看的词吗？**

可以。在生成前的「自定义停用词」输入框里加上这个词，或修改预设停用词表。

**Q: 词云可以导出吗？**

可以。本工具支持导出 PNG（光栅图）和 SVG（矢量），SVG 可在 Figma/Illustrator 继续编辑。

**Q: 为什么同一份数据生成的词云每次不一样？**

布局算法（特别是螺旋）加入了随机成分，多次生成的词位置会不同。词频和字号不变。如需完全复现，固定随机种子。

**Q: 能生成 3D 词云吗？**

本工具不支持 3D。3D 词云需要 Three.js 等 3D 引擎，交互体验未必更好，反而加载慢。

---

## Markdown 转 HTML 完全指南：公众号 / 邮件 / 网站三种用法

> 从 Markdown 到最终渲染，三大场景（微信公众号、HTML 邮件、网站 CMS）的转换技巧与坑位。包含 GFM 扩展、样式嵌入、兼容性处理与安全防护的完整解决方案。

URL: https://xtechtools.com/guides/md-to-html/
发布：2026-04-29 · 更新：2026-04-29

Markdown 因其简洁的语法深受开发者和内容创作者喜爱，但当你需要把 Markdown 发送到公众号、邮件或网站时，单纯的 HTML 转换远远不够。公众号要求内联样式、邮件需要 90 年代级表格兼容、网站则要求 SEO 友好。本指南详解三大场景下的 Markdown→HTML 最佳实践，涵盖 GFM 扩展、样式嵌入、安全防护与工具选型。无论你是内容创作者、开发者还是技术博主，本指南都能帮你解决跨平台排版的所有难题。

### Markdown 转 HTML 的三大场景与各自挑战

**场景 1：微信公众号**。公众号编辑器阉割了大量 CSS，只接受部分标签和 style 属性，无外部样式表、无 @font-face、无 JavaScript。要让排版在公众号里不崩坏，必须把所有样式以 inline style 的方式嵌入到 HTML 标签内。

**场景 2：HTML 邮件**。邮件客户端（Outlook、Gmail、Apple Mail）对 CSS 的支持参差不齐，很多样式属性在某些客户端被无视或破坏。安全的做法是用 table 布局（如 1990 年代的网站），避免 float、flex、grid，所有样式都 inline。

**场景 3：网站 CMS**。网站通常有统一的 CSS 框架（Tailwind、Bootstrap），Markdown 生成的 HTML 需要兼容这些框架的 class，还要考虑 SEO（heading 层级、alt 文本、结构化数据）。

三个场景，三套规则。同一个 Markdown 源文件，直接转换无法同时满足全部需求。

### GFM 扩展与跨平台兼容

标准 Markdown 只支持基础的标题、列表、代码块。GitHub Flavored Markdown（GFM）在此基础上添加了表格、删除线、任务列表、代码行高亮。但问题是：公众号、邮件、甚至一些旧网站的 Markdown 转换器不支持 GFM。选择转换工具时务必检查是否启用了 GFM 模式。常见转换库如 marked.js、markdown-it 都默认支持 GFM，但部分 WordPress 插件可能需要手动启用。

### 公众号场景：inline style 嵌入与样式保留

微信公众号编辑器会自动过滤掉你写的 <style> 标签，因此所有样式必须内联（inline）。假设你的 Markdown 原文有代码块需要高亮，标准的 HTML 输出可能是 <pre><code class="language-python">...</code></pre>。公众号收到后，class 被忽略，代码无背景色。解决方案是生成时直接嵌入背景色和字体：<pre style="background: #f5f5f5; padding: 12px; border-radius: 4px;"><code style="color: #333;">...</code></pre>。同理，所有链接、加粗、斜体、列表都需要手动补充 style 属性。推荐使用专门的「Markdown 转微信公众号 HTML」工具或在转换后用正则 / DOM 操作批量补样式。

### 邮件场景：table 布局与 Outlook 兼容

主流的 HTML 邮件采用表格布局，因为几乎所有邮件客户端都支持 table。Markdown 转换器输出的 div 和 CSS 在 Outlook 中常常崩坏。标准 Markdown 生成的 HTML 可能是 <div style="margin: 20px; padding: 10px; border: 1px solid #ccc;"><p>内容</p></div>，但 Outlook 可能无法正确渲染 margin。改成表格则更安全：<table cellpadding="0" cellspacing="0" border="0" width="100%"><tr><td style="padding: 10px; border: 1px solid #ccc;">内容</td></tr></table>。邮件 HTML 的其他禁忌：不用 background-image、避免媒体查询、@font-face 大多被禁用、JavaScript 必然被过滤。保险的做法是用专门的邮件模板框架如 MJML 或 Stripo，而不是直接从 Markdown 转换。

### 网站 CMS 场景：SEO 友好与框架兼容

在自己的网站嵌入 Markdown 转换的 HTML 时，最大的考虑是 SEO 和视觉一致性。SEO 方面需确保 heading 标签正确（<h1> 用一次，后续用 <h2>、<h3>），图片有 alt 属性，链接有描述性文本。视觉方面，Markdown 转换后的 HTML 应该自动添加与网站框架兼容的 class。比如用 Tailwind 的网站，应输出 <h2 class="text-2xl font-bold my-4">标题</h2> 而非裸 HTML。推荐手动转换或用 rehype 插件（如 rehype-react）在转换时注入 class，避免样式混乱。

### 工具对比与选型

Markdown 编辑器（Typora、Obsidian、Mark Text）的导出能力差异巨大。Typora 的「导出」→ HTML 输出中等但样式分离到 <style> 标签，不适合公众号。Obsidian 默认无导出需要插件，官方「Markdown Exporter」适合 CMS。Mark Text 导出最简陋。对于程序员推荐用 Node.js 库 marked + 自定义渲染器，这样可以灵活地根据场景（公众号、邮件、网站）调整输出。专业级方案如 MJML（邮件）和「Markdown 转公众号 HTML」服务也值得投入。

### 安全防护：DOMPurify 防 XSS

Markdown 源文本中如果包含 HTML 片段（如 <script>alert(1)</script>），直接转换可能造成 XSS 漏洞。必须用 DOMPurify 等库清理。配置 ALLOWED_TAGS 和 ALLOWED_ATTR 时，注意 style 属性既能解决样式问题，又增加了风险。只有在确定样式来自可信源时才开放。对于公众号场景，可以编写自定义的样式注入器，既保证排版效果，又防止恶意脚本。测试时务必用含 XSS payload 的 Markdown 验证清理效果。

### 常见问题

**Q: 公众号可以粘贴转换后的 HTML 吗？**

不建议。公众号编辑器的「粘贴」功能会再次解析和过滤，inline style 可能被破坏。最稳妥的做法是用公众号提供的「导入草稿」API 或第三方「Markdown 转公众号」服务。

**Q: 能在邮件中用 CSS 框架吗？**

不推荐。Outlook、Gmail 对现代 CSS（flex、grid）支持很差。邮件 HTML 应该保守，用 table 和 inline style。

**Q: 转换后的 HTML 能直接用在 CMS 吗？**

需要适配。CMS 通常需要特定的 class（框架相关）和数据属性（SEO），直接粘贴会样式混乱。用自定义渲染器或后处理脚本补充 class。

**Q: 如何处理 Markdown 中的图片？**

生成的 <img> 标签应该有 alt、width、height。公众号上传图片要转 CDN 链接。邮件中图片最好压缩且用 base64 嵌入（但会增加体积）。网站版本用相对路径或 CDN。

**Q: 支持 Markdown 的扩展语法吗？**

标准工具支持 GFM（表格、任务列表、删除线）。高级的如 Mermaid 流程图需要额外脚本。公众号、邮件通常不支持 JS 扩展，网站版本可以。

**Q: 怎样把 Markdown 同时发到三个平台？**

最佳实践是维护一个「通用」Markdown 源，然后用三个转换管道分别生成公众号版（inline style）、邮件版（table 布局）、网站版（框架 class）。自动化脚本可以一次生成三份，大幅提升效率。

---

## 倒数日 / 纪念日完全指南：仪式感 / deadline / 心理学

> 倒数日不仅是时间提醒，更是心理学工具。本指南讲解倒数日的心理价值、应用场景（生日、考试、项目、健身），以及如何用倒数日强化目标承诺与行动力。

URL: https://xtechtools.com/guides/countdown-days/
发布：2026-04-29 · 更新：2026-04-29

倒数日看似简单——数一数还剩多少天。但心理学研究表明，把抽象的时间具体化成一个数字，能显著提升人的行动倾向和目标承诺。从结婚前 100 天的仪式感，到高考前 365 天的紧迫感，再到项目 deadline 的进度可视化，倒数日都在默默驱动人类的决策。本指南从心理学、应用场景、共享体验三个维度，讲清楚倒数日如何成为生活和工作中的"时间助手"。无论你是学生、职场人还是生活计划爱好者，都能找到适合的倒数日使用场景。

### 倒数日的心理学根基

时间心理学（Time Psychology）有一个重要发现：具体数字比抽象描述更能刺激行动。对比「你还有很久才能退休」（模糊）和「你还有 7300 天才能退休」（具体），虽然含义相同，但看到数字时大脑会自动换算，产生紧迫感。这就是倒数日的魔力所在。心理学家 Pam Mueller 的研究显示，可视化进度（如进度条、倒数器）会增强用户的「目标执行力」。倒数日结合了时间具体化 + 可视化进度，双重强化。此外，倒数日也触发了「稀缺性心理」。当看到「还剩 7 天」时，大脑认为机会稀缺，加快决策速度。这就是电商「活动结束还剩 3 小时」这么有效的原因。

### 仪式感事件：生日、婚礼、周年纪念

倒数日在个人和家庭事件中创造仪式感，让特殊时刻不再突然到来，而是经过长期期待和准备。婚礼倒数时「还剩 100 天」是心理转折点，从「未来很远的事」变成「即将发生」，许多准新人才真正开始筹备。倒数日配合准备清单（邀请函、蛋糕、场地），每天勾掉一项任务，仪式感大幅提升。生日倒数，特别是儿童的「你的生日还剩 45 天」能让孩子充满期待，为派对做准备。心理学家发现，有倒数日期待的孩子，庆祝时快乐程度更高。周年纪念中，情侣共享倒数日如「在一起还剩 1 天就 365 天」，强化关系连续性和陪伴感。倒数日的关键是共享——和家人一起看同一个计时器，产生集体期待。

### 项目 Deadline：进度可视化与团队动力

在工作中，deadline 倒数日的作用被严重低估。清晰的「还剩 23 天」比模糊的「月底之前」更有约束力。Scrum 团队的 2 周冲刺中，在 Sprint board 上显示「Sprint 还剩 4 天」能够：提醒成员专注度下降、激励团队加快速度、早期暴露风险。大型项目（软件发布、网站重构）用倒数日可视化每个里程碑，管理者能更清晰地评估项目状态，团队也有更强紧迫感。随着倒数日变小，人的工作效率呈非线性上升。最后几天，焦虑驱动下效率可能是平时 3 倍。这被称为「最后期限效应」。但避免长期这样做，容易导致倦怠和质量问题。

### 考试倒数：高考、公考、职业证书

高考倒数日是中国学生生活中最著名的仪式。「高考还剩 365 天」的那一刻，无论之前多么浑浑噩噩，都会被现实击醒。倒数日到来标志着从「学期模式」切换到「备考模式」，学生重新评估备考策略、报名补习班、制定复习计划。这个心理转变本身就是效能提升。每个月、周、日都更新倒数数字，看着逐日减小，学生能感受到自己在消耗时间也在积累知识，两个感受碰撞强化责任感。同届学生、同班同学都在看同一个倒数日，集体性强化个人承诺——「大家都努力，我不能掉队」。公考、CPA、医学资格证也遵循类似规律，官方通常在报名截止、考试日期前发布「还剩 X 天」提醒，刺激报名和复习积极性。

### 健身打卡与日常挑战

「100 天无糖挑战」「连续跑步 365 天」「健身房签到 1000 次」——这类挑战的核心就是倒数日（或计数日）。心理学研究表明，重复 66 天能形成新习惯，而「66 天健身挑战」的流行正基于此。倒数日作为进度条，让挑战者看到进展。许多人在社交媒体（小红书、微博）分享「我已经坚持 47 天了」，获得点赞和评论，进一步强化继续坚持的动力。一旦开始倒数，中途停止会造成「进度丧失」的心理痛苦。这被称为「禀赋效应」——已拥有的天数，丧失它的痛苦远大于获得的快乐。因此倒数日能有效防止三天打鱼两天晒网。从简单 App 到社交媒体分享，健身者都在用倒数日对抗人性中的懒惰。

### 共享倒数与关系维系

倒数日不仅是个人工具，也是社交纽带。情侣共享倒数日（如「在一起纪念日」「婚礼倒数」），倒数日到达时双方都会收到提醒，无论身在何处都想起彼此，强化关系连续性。手机桌面倒数日 Widget 让共享变得日常化。全家共享假期倒数（「春节还剩 47 天」），家庭群聊中定期更新数字，强化家人向心力。公司团队共享项目 deadline 倒数日或期待年会、团建，这类倒数日增强团队凝聚力和共同目标感。共享倒数的心理机制是「群体认同」——不是一个人在倒数，而是和关心的人一起倒数，这比孤独进度条更有力量。

### 过期事件：负倒数与情绪管理

倒数日也能反过来用——变成「已过 X 天」。这时心理效应变得微妙。正面场景如「距离我戒烟已 789 天」「已分手 4 个月，越来越好」强调恢复和进步，每增一天都是胜利。负面场景如「已分居 183 天」「项目已延期 45 天」让人感到遗憾和无力。许多心理治疗师建议，坏事件过期时，最好把倒数日改成「恢复进度」而非「灾难计数」。比如从「分手已 180 天」改成「新生活已 180 天」，从消极变积极。xTechTools 的倒数日工具支持自定义标签（「幸福日记」「恢复进度」），帮助用户调整心态，将被动的时间流逝转化为主动的自我疗愈过程。

### 常见问题

**Q: 倒数日能真的改变人的行为吗？**

是的，大量心理学研究证实了这一点。具体数字 + 可视化进度能显著提升目标执行力。但关键是「真的有行动计划」——单纯看倒数日而无行动，效果有限。最有效的做法是把倒数日配合任务清单使用。

**Q: 多长的倒数日最有效？**

不同场景不同：生日倒数通常 30-100 天最有仪式感；项目 deadline 倒数 7-30 天能维持紧迫感；长期目标（高考、健身）倒数 100+ 天较佳。超过 1 年的倒数日容易失效，因为人对遥远未来的焦虑迅速递减。

**Q: 如何避免倒数日焦虑？**

倒数日会强化心理压力，特别是临近时。建议配合「行动清单」，把大目标拆成小任务，每完成一项就有成就感。这样不是被数字追赶，而是主动在推进，焦虑会显著降低。

**Q: 能否和朋友共享同一个倒数日？**

可以。xTechTools 倒数日工具支持分享链接，朋友点击后能看到同步的倒数。许多情侣、健身伙伴都用这个功能来互相监督和鼓励，增强坚持动力。

**Q: 倒数日过期后怎么办？**

可以选择删除或转换。许多人喜欢保留已完成的倒数日作为纪念，改成「已过 X 天」的记录方式，提醒自己曾经的成就和努力。

**Q: 如何应对倒数日结束时的失落感？**

事件完成（生日、婚礼）时，人容易感到失落，因为期待的心理暗示消失了。解决办法是立即设置下一个倒数日，或把完成的事件改成纪念日倒数，延续仪式感，使生活保持持续的目标感。

---

## User-Agent 解析完全指南：浏览器识别 / 反爬 / 兼容性

> User-Agent 字符串看似无用，实则是识别浏览器、检测爬虫、诊断兼容性的关键。本指南从 UA 历史、现状、解析方法到反爬应用，详解开发者需要知道的一切。

URL: https://xtechtools.com/guides/ua-parse/
发布：2026-04-29 · 更新：2026-04-29

User-Agent（UA）是浏览器和爬虫与服务器沟通时的"自我介绍"。一个看似无用的文本字符串，却暗藏了浏览器类型、版本、操作系统、设备类型等关键信息。但 UA 的历史充满了欺骗和妥协——"为什么所有浏览器都自称 Mozilla"的答案，能讲出 30 年的浏览器战争。本指南从 UA 的历史出发，讲清楚如何解析 UA、如何用 UA 反爬、如何诊断兼容性问题，以及 Client Hints 如何逐步取代 UA。无论你是后端工程师、爬虫检测专家还是前端开发者，都能在这份指南找到实用的解决方案和最佳实践。

### 为什么所有浏览器都自称 Mozilla？

1993 年，网景浏览器（Netscape）推出时，服务器经常根据 UA 判断浏览器类型，选择是否发送新功能。网景的 UA：Mozilla/1.0 (X11; SunOS 4.1.4 sun4m)。「Mozilla」是网景的代号。后来 IE 推出时，很多服务器拒绝给 IE 发送新功能。为了被服务器"看见"，IE 伪装成 Mozilla：Mozilla/4.0 (compatible; MSIE 5.0; Windows NT)。当 Firefox 推出时，同样事再发生一遍：为兼容性，Firefox 也自称 Mozilla。今天，几乎所有浏览器都包含 Mozilla 字符串，这个过程被称为「浏览器欺骗的军备竞赛」。Chrome 的 UA：Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36，里面有 Mozilla、AppleWebKit（Safari 的引擎）、Safari 本身。这解释了为什么现代 UA 字符串那么冗长和混乱。

### User-Agent 字符串的结构与解析

现代浏览器的 UA 遵循结构：Mozilla/5.0 ([系统信息]) [引擎信息] [浏览器信息]。以 Chrome 为例：Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36。系统信息如 (Windows NT 10.0; Win64; x64) 表示 Windows 10、64 位。NT 10.0 = Windows 10/11，NT 6.3 = Windows 8.1。引擎信息如 AppleWebKit/537.36 是浏览器排版引擎，Chromium 系浏览器（Chrome、Edge、Opera）都用 WebKit。浏览器标识如 Chrome/120.0.0.0 才是真正的浏览器和版本。Safari、Firefox 类似位置。兼容模式字符串如 Safari/537.36 和 (KHTML, like Gecko) 都是兼容性声明，Safari 都会在自己 UA 里声称兼容 Gecko。解析 UA 的正确步骤：找 UA 字符串最后一个标记（通常是浏览器标识），提取版本号，根据 OS 字符串判断操作系统，用排除法排除其他浏览器。直接用正则容易出错，推荐用专业库如 ua-parser-js。

### 设备指纹组合：UA + 屏幕 + 时区

UA 单独使用容易被欺骗。反爬和设备识别的高阶做法是组合多个信号。信号组合包括：User-Agent 浏览器标识、屏幕分辨率 window.screen.width × height、时区 new Date().getTimezoneOffset()、浏览器语言 navigator.language、硬件信息 GPU、CPU 核心数、字体列表用户安装的字体、插件列表（Firefox 支持）、WebGL 指纹 GPU 和驱动信息。这些信号组合形成"设备指纹"。统计学上，10 个信号的组合能唯一标识 99.9% 的用户。反爬虫系统用设备指纹检测爬虫——爬虫通常在不同请求间保持相同的 UA、屏幕、时区，而真实用户的设备多样性更强。xTechTools 的 UA 解析工具会额外显示当前访问者的屏幕、语言、时区信息，帮助开发者理解完整的设备指纹并诊断异常访问。

### 反爬场景：识别爬虫 UA

爬虫会伪装成浏览器，但往往在 UA 中留下蛛丝马迹。官方爬虫（诚实类）自称爬虫名字如 Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)、Facebookexternalhit/1.1、Twitterbot/1.0。隐秘爬虫伪装成浏览器但 UA 有线索如 curl/7.x.x（工具特征）、Python-Requests/2.x（爬虫库）、Scrapy/2.x（框架标识）。黑产爬虫使用随机或真实 UA，需用行为特征识别——正常 Chrome UA 但没有 Accept-Language 头、没有 Referer 头（真实浏览器几乎总有）、Accept-Encoding 非标准。反爬策略包括：白名单爬虫（允许 Googlebot、Bingbot 等 SEO 爬虫，验证 IP 反向 DNS）、黑名单爬虫（拒绝已知恶意爬虫 UA）、行为检测（爬虫频率高、路径模式明显）、IP 信誉库（数据中心 IP 非家庭用户）。单靠 UA 反爬效率低，结合 IP、请求频率、HTTP 头完整性效果最好。

### SaaS 后台诊断："哪些浏览器有问题"

SaaS 产品运营常见问题：某个用户报告「我看不见某个功能」。追查往往发现是浏览器兼容性。诊断流程包括：前端埋点收集用户的 UA、浏览器性能数据和功能支持情况（WebGL、Fetch、IndexedDB）；后台汇总生成报告（IE 用户占比、各浏览器版本错误率、特定功能在某浏览器可用性）；问题诊断（Safari 用户错误率高可能是 CSS Grid 兼容性、Firefox 用户看不见元素可能是 WebKit 前缀问题、老版 Chrome 用户多可能需要 polyfill）。xTechTools 的 UA 解析工具可以快速识别用户的浏览器和版本，配合错误日志能快速定位兼容性问题，大幅降低故障排查时间。

### Client Hints：UA 的现代替代方案

User-Agent 本身存在设计缺陷：信息混乱、容易欺骗、版本字符串长度无限增长。Chrome 团队提出了 Client Hints 来替代 UA。Client Hints 是浏览器在 HTTP 请求头中发送结构化的设备信息，而不是含混字符串。示例头包括：Sec-CH-UA、Sec-CH-UA-Mobile、Sec-CH-UA-Platform、Sec-CH-UA-Platform-Version、Sec-CH-UA-Full-Version。优势包括：结构化不需正则解析、简洁版本号分离不会无限增长、可控网站可声明需要哪些 Hints。当前状态：Chromium 系浏览器（Chrome、Edge）已支持，Safari、Firefox 支持有限或实验阶段，大多网站仍依赖 UA 向后兼容。迁移建议新项目优先用 Client Hints，同时向后兼容 UA。预计 5-10 年内主流浏览器完全迁移到 Client Hints，UA 最终会被弃用。

### Webview、App 爬虫与 AI 爬虫识别

Mobile App 中的内嵌浏览器（Webview）有特殊的 UA。iOS Webview（WKWebView）：Mozilla/5.0 (iPhone; CPU iPhone OS 17_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4 Mobile/15E148 Safari/604.1，和 Safari 相似但有时被改为 App 标识。Android Webview：Mozilla/5.0 (Linux; Android 13; SM-A536B) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Mobile Safari/537.36。某些 App（微信、抖音）会特殊修改 UA。应用场景包括为 App 内用户展示不同 UI、防止 Webview 被爬虫滥用、统计用户来源。xTechTools 的 UA 解析工具会识别 Webview 和常见 App。而 AI 爬虫（ChatGPT、Gemini、Claude 训练数据采集）有独特 UA 如 GPTBot/1.0、CCBot/1.0、Bytespider/1.0。问题与对策包括：数据被用于 AI 训练无属性被使用；识别与屏蔽，在 robots.txt 拒绝这些爬虫；服务器侧检查 UA 并拒绝；法律合规（欧盟 GDPR）。预期未来 AI 爬虫增多，网站需主动管理爬虫权限保护创意资产。

### 常见问题

**Q: 如何在 JavaScript 中获取用户的 User-Agent？**

使用 `navigator.userAgent`。但只能在浏览器中使用。后端（Node.js）从 HTTP 头 `User-Agent` 获取。检测浏览器类型推荐用库如 `ua-parser-js` 或 `bowser`，不要手写正则。

**Q: User-Agent 伪装能骗过服务器吗？**

能骗过 UA 检查，但骗不过完整的设备指纹检查。爬虫伪装 UA 后，屏幕分辨率、时区、语言等信号往往对不上真实浏览器，被识别概率高。最佳反爬不是看 UA，而是看行为特征。

**Q: 能否用 UA 识别真实用户 vs 爬虫？**

单靠 UA 不行，准确率低。需结合：HTTP 请求头完整性、IP 信誉库、请求频率、访问路径模式。某些爬虫会遗漏 Accept-Language 头或 Referer，这些异常信号比 UA 更可靠。

**Q: 为什么我的网站在某浏览器显示异常？**

先用 UA 解析工具识别用户的浏览器和版本。然后用 `@supports` CSS、条件注释（IE）或 polyfill 修复兼容性问题。最常见的是：Safari 不支持某些 CSS 特性、IE 不支持 ES6。

**Q: Client Hints 何时能完全替代 User-Agent？**

预计 3-5 年内大多数浏览器支持。但向后兼容性考虑，UA 短期内不会被完全弃用。新项目应同时支持两者，优先 Client Hints。

**Q: 爬虫真的能伪装完美吗？**

完美伪装很困难。即使 UA、屏幕、时区都对上，行为特征仍然会暴露：请求频率、访问路径、是否执行 JavaScript、是否加载图片、Cookie 处理逻辑等。综合多个信号的反爬系统检测率可达 95% 以上。

---

## 小费与 AA 制完整指南：全球小费文化、计算方法与社交礼仪

> 从美国 18-22% 到日韩零小费，从餐厅到出租车，从单人消费到多人聚餐 AA，全面掌握全球小费规则与计算技巧。

URL: https://xtechtools.com/guides/tip/
发布：2026-04-29 · 更新：2026-04-29

小费是个全球性的社交迷宫。美国餐厅你不给 18-22% 的小费会被当成没教养；日本服务员会拒绝你的小费；欧洲大多数国家的账单里已经含了服务费；中国一些高端酒店和出租车司机才开始习惯接受小费。同时在多人聚餐、AA 制分账时，如何公平地拆分小费又是另一个难题。本指南从各国小费文化、行业差异、消费场景、计算方法、到分账工具，系统讲解如何在全球出行、商务出差和日常生活中正确地给小费，既不被坑，也不显得小气或无礼。

### 全球主要国家的小费率一览

**美国（18-22%）**：最严格的小费文化。餐厅、出租车、酒店、美容院都标配小费。15% 及以下会被视为服务不满意，20% 是标准，22% 表示很满意。不给小费会被追问「Sir, did you forget something?」

**加拿大（15-18%）**：与美国接近，但可稍低。餐饮业普遍期待 15-18% 的小费。

**英国（10-15%）**：可选性更强。账单中常见「Service not included」提示，通常 10-15% 足够。高档餐厅已包含服务费则无需另加。

**欧洲大陆（0-10%）**：法国、德国、意大利等国的账单通常已含服务费（Service Charge），额外小费可选，5-10% 表示特别满意。

**日本（0%）**：零小费文化。给小费会被认为是侮辱或慈善，餐厅、出租车、酒店都不接受。服务费已含在价格里。

**韩国（0%）**：同样不流行小费。价格即最终价格，不需额外支付。

**澳大利亚（10-15%）**：可选但常见，尤其在酒吧和餐厅。

**新加坡（10%）**：部分高档餐厅账单已含 10% 服务费，无需再加。

### 行业和场景的小费差异

**餐厅/酒吧**：最常见的小费场景。美国 18-22%、英国 10-15%，计算对象是消费金额（不含税）或含税，取决于当地习惯。

**出租车/网约车**：美国 15-20%，欧洲 5-10%。长途车程给得更多。现代支付 app（Uber、Lyft）会在界面上提示建议小费。

**酒店**：房间服务员 1-2 美元/晚，前台礼宾 5-10 美元/个请求，行李员 1-2 美元/件。欧洲通常无需给。

**美容（剪发、美甲、按摩）**：美国 15-20%，欧洲 5-10%。亚洲通常不需要。

**外卖配送**：美国 Uber Eats、DoorDash 默认提示 15-20%。欧洲和亚洲配送费已含。

**导游/私人服务**：10-15% 小费表示满意，如果提供超出预期服务可给 20% 及以上。

### 多人聚餐的 AA 制与小费分摊

**场景 1：平均分摊（最简单）**
总账单（含小费）÷ 人数 = 每人应付。假设 5 人聚餐，账单 500 元，小费 100 元，总 600 元，每人 120 元。

**场景 2：按消费比例分摊（最公平）**
如果每个人消费金额不同，先记录个人消费额，再乘以「总小费 / 总消费」的比例。例：A 花 200 元、B 花 300 元、总消费 500 元、小费 100 元。A 应付小费 = 200 × (100/500) = 40 元；B 应付小费 = 60 元。

**场景 3：固定平摊小费 + 各自买单**
小费固定平分（如 100 元 ÷ 5 人 = 20 元/人），但菜品按个人消费买单。这种方法适合朋友聚餐，简化核算。

**场景 4：使用分账工具**
很多支付应用（微信、支付宝、Splitwise）都有「AA 制」功能。输入每人消费额和小费，工具自动计算谁该付多少，支持语音记账，避免后期清算纠纷。

### 小费计算的常见公式与例子

**美国餐厅标准算法**：
- 先看账单总额（未税）
- 快速估算：金额 × 1.2（20% 小费）、× 1.15（15% 小费）、× 1.25（25% 小费）
- 或用公式：小费 = 消费金额 × 小费率，然后总额 = 消费 + 小费

例：餐厅账单 80 美元（未税），税务 6 美元，合计 86 美元。
- 20% 小费：80 × 0.20 = 16 美元
- 总支付：86 + 16 = 102 美元

**欧洲分摊例**：
4 人晚餐，账单 120 欧元（已含服务费），自愿额外小费 12 欧元。
- 平均：132 ÷ 4 = 33 欧元/人
- 按消费：若 A 点了 40 欧元的菜、B 点了 30 欧元的菜等，则按比例分摊 12 欧元小费

**亚洲场景**：
不给小费，但若服务人员未收费打包、或酒吧员工特别用心，可给 5-10% 小费表示礼貌。

### 数字支付时代的小费选项与礼仪

**刷卡支付**：在美国，刷信用卡或借记卡时常见 POS 机屏幕上跳出「Add tip?」提示，选项通常是 15%、18%、20%、或自定义金额。填完后签名或输入 PIN 确认。

**手机支付**：Venmo（美国）、WeChat Pay、支付宝等 app 在转账时可添加备注说明是小费，或者在 Squareup、PayPal 等商户收款工具中有小费选项。

**二维码扫码付**：某些餐厅贴二维码收款，支付后界面会提示加小费。

**现金小费**：仍然是许多国家的默认和优选方式，因为现场、透明、无手续费。美国小费文化最依赖现金。

**避免的礼仪错误**：
- 不要因为用了手机支付就跳过小费，数字支付的小费同样重要。
- 不要在非小费文化的国家（日本、韩国）坚持给小费，这会令人不安。
- 不要小费金额显著低于当地期望值（如美国给 5%），除非服务确实不佳。

### 全球差旅中的小费速查表与省钱建议

| 国家 | 餐厅小费 | 出租车 | 酒店 | 备注 |
| --- | --- | --- | --- | --- |
| 美国 | 18-22% | 15-20% | 1-2$/晚 | 最严格的小费文化 |
| 加拿大 | 15-18% | 15% | 1$/晚 | 接近美国 |
| 英国 | 10-15% | 10% | 可选 | Service not included 很常见 |
| 法国 | 0-5% | 5-10% | 0% | 含服务费，额外小费可选 |
| 日本 | 0% | 0% | 0% | 拒绝小费 |
| 澳大利亚 | 10-15% | 10% | 可选 | 不如美国严格 |

**节省小费的合法方式**：
- 选择餐车或自助餐厅，通常不需小费或小费更低。
- 在便利店、快餐（Subway、麦当劳）通常无小费。
- 餐厅结账时直接询问「Is service charge included?」，避免重复付费。
- 提前了解目的地小费文化，做好预算。

### 常见问题

**Q: 不给小费会怎样？**

在美国，服务员可能会当面质问或给差评，影响你的信用记录。在欧洲和亚洲，不给小费只是不礼貌但通常无后果。最安全的做法是按当地期望给小费。

**Q: 小费能用信用卡/手机支付吗？**

完全可以。美国大多数商户 POS 机都支持添加小费选项，手机支付 app 也都有小费功能。无需一定用现金。

**Q: 多人聚餐如何快速分摊小费？**

用 Splitwise 或支付宝的 AA 制功能。输入每人消费和总小费，工具自动算出谁付多少，避免心理不平衡。

**Q: 服务很差可以不给小费吗？**

在美国，即使不满意通常也要给 10-15%（底线）。如果服务极差（侮辱性的态度、完全错单等），可给 0% 但要心理准备被当众质问。

**Q: 账单里已含服务费还需加小费吗？**

不需要。欧洲很多餐厅账单显示「Service charge included」时，额外小费完全可选。如果不确定，直接问服务员 「Is service charge included in this bill?」

---

## 随机数生成完整指南：抽签、摇骰子、抛硬币的原理与公平性

> 从伪随机到加密级随机，从数学原理到实际应用，全面讲解随机数的生成机制、公平性验证与常见误区。

URL: https://xtechtools.com/guides/random/
发布：2026-04-29 · 更新：2026-04-29

「随机」看似简单，但在数学、计算机、统计学眼中却是个深邃的领域。你用的 Math.random() 是伪随机还是真随机？年会抽奖的算法是否公平透明？彩票号码能否被破解？摇骰子和抛硬币为什么有时候结果看起来不够「随机」？本指南从随机数的本质原理、常见生成算法、加密级随机、公平性验证、到实际应用场景（抽签、年会抽奖、彩票、游戏随机 Boss），让你深入理解和完全掌握随机数背后的数学真相与实际应用陷阱。

### 伪随机 vs 真随机：两个不同的世界

**伪随机（Pseudo-Random）**：用确定的算法（如 Mersenne Twister）从一个称为「种子」的初值开始，生成看起来随机但实际上完全确定的数列。给定同一个种子，每次生成的数列完全相同。优点是速度快、可重现、适合游戏和模拟。缺点是可被破解（如果知道算法和前几个数，可预测后续数）。

**真随机（True Random）**：基于物理现象（大气噪声、量子不确定性、硬件噪声）生成完全无规律的数字。理论上无法预测，但获取成本高、速度慢。加密、彩票、科学实验需要真随机。

**类比**：伪随机像是预先写好的歌单打乱后按顺序播放（确定但看起来随机）；真随机像每次都随机生成一首新歌（真的无法预知）。

### Math.random() 的工作原理：Mersenne Twister 算法

JavaScript 的 Math.random() 在大多数浏览器和 Node.js 中使用 Mersenne Twister（梅森旋转）算法，它是应用最广泛的伪随机数生成器。

**基本步骤**：
1. 初始化一个 624 维的状态数组，用当前时间戳或系统随机源作为种子。
2. 对状态数组执行旋转和位移操作，生成新数据。
3. 返回 0-1 之间的浮点数。
4. 下一次调用时继续使用更新后的状态，确保序列不重复。

**为什么用梅森旋转**：周期长（2^19937-1），统计性质优秀，计算速度快。

**局限性**：若有人知道你的 Math.random() 前 624 个输出，可精确预测后续所有输出。这在加密和博彩中是致命的缺陷。

**实例**：
```
let num = Math.random(); // 返回 0.123456789...
let diceResult = Math.floor(Math.random() * 6) + 1; // 1-6 的骰子
```

### 加密级随机：crypto.getRandomValues()

当你需要真正的安全随机（如生成密钥、验证码、彩票号码）时，应使用浏览器或 Node.js 提供的加密随机 API。

**JavaScript 中的加密随机**：
```
// 浏览器环境
let arr = new Uint8Array(4);
crypto.getRandomValues(arr);
console.log(arr); // [234, 19, 150, 77] 之类的真随机值

// Node.js 环境
const crypto = require('crypto');
let buf = crypto.randomBytes(4);
console.log(buf);
```

**优点**：
- 从操作系统的熵池获取真随机数据（/dev/urandom on Linux、CryptoAPI on Windows）
- 即使知道前面的数值，也完全无法预测后续
- 生成密钥、 token、验证码的标准做法

**缺点**：
- 速度比 Math.random() 慢 100-1000 倍
- 并非所有环境都可用（旧浏览器）
- 不可重现（每次都不同）

**选择建议**：游戏、模拟用 Math.random()；安全敏感场景用 crypto.getRandomValues()。

### 抽签、摇骰子、抛硬币的公平性验证

**数学上的公平性要求**：每个可能结果的概率相等。对于 n 个选项，每个被选中的概率都是 1/n。

**抽签（N 个人中选 K 个）的公平算法**：
```
// 洗牌算法（Fisher-Yates）
function shuffle(arr) {
  for (let i = arr.length - 1; i > 0; i--) {
    let j = Math.floor(Math.random() * (i + 1));
    [arr[i], arr[j]] = [arr[j], arr[i]];
  }
  return arr;
}
let people = ['Alice', 'Bob', 'Carol', 'David'];
let winners = shuffle(people).slice(0, 2); // 随机选 2 人
```

这个算法每个人被选中的概率都是相等的。

**摇骰子（1-6）的公平性**：
```
// 错误做法（概率不均）
let die = Math.floor(Math.random() * 7); // 返回 0-6，多出一个 0

// 正确做法
let die = Math.floor(Math.random() * 6) + 1; // 1-6 均匀分布
```

**生日悖论与抽签碰撞**：如果随机选择 n 个数字（有重复可能），当 n ≈ √(总范围) 时就会有约 50% 概率出现重复。例如从 100 个人里随机邀请 11 人，有约 50% 概率重复邀请同一个人。这不是随机数生成的问题，而是概率的反直觉。

### 年会抽奖的透明设计与算法

**常见的透明抽奖方案**：
1. **实时公开算法**：在大屏幕上同时显示代码和执行过程，让所有人见证随机过程。
2. **链上抽奖**（企业级）：使用区块链智能合约，数据无法篡改，所有人可验证。
3. **第三方见证**：邀请员工代表或公证处全程监督。
4. **预生成+密封**：提前用加密随机生成所有奖项，密封存档，抽奖当日现场开封。

**透明抽奖的 JavaScript 示例**：
```
// 年会抽奖
let prizes = ['iPhone', 'MacBook', 'iPad', 'AirPods'];
let participants = Array.from({length: 100}, (_, i) => `Person_${i + 1}`);

function drawPrize(prize) {
  let winner = participants[Math.floor(Math.random() * participants.length)];
  console.log(`${prize} won by ${winner}`);
  // 移除已中奖者
  participants = participants.filter(p => p !== winner);
}

prizes.forEach(drawPrize);
```

这段代码在大屏幕执行，每个步骤都透明，抽签概率完全相等。

**作弊风险**：
- 用不均匀的随机数（如只用前几位数）偏向某些参与者
- 在某个特定时刻触发抽奖（如下午 3:33）来操纵结果
- 修改参与者列表或奖品顺序

防范：使用加密随机 + 第三方见证 + 公开代码。

### 彩票、游戏与随机数的信任问题

**彩票号码的随机性争议**：
大多数合法彩票（如双色球）使用物理搅拌或政府认证的真随机数生成器。但互联网彩票或小型抽签可能使用伪随机，理论上可被破解。2020 年中国某在线彩票平台就因伪随机算法被破解而爆出丑闻。

**游戏随机（如 Gacha 抽卡）的透明性**：
- 大型游戏（如 Genshin Impact）会公开概率表和算法框架，但具体实现细节通常保密。
- 监管力度：日本、欧盟对游戏随机有严格审计要求，要求公开概率。中国监管在收紧。

**如何验证你遇到的随机是否公平**：
1. 收集样本：记录 100+ 次抽签结果
2. 卡方检验：用统计学检验每个结果出现的频率是否符合预期
3. 寻找模式：是否存在「周期」或「倾斜」

**例**：某游戏宣称 5 星角色概率 1%，但你玩 1000 次只出了 3 次（0.3%），可能存在问题，可向平台投诉。

### 常见问题

**Q: Math.random() 能用于安全关键应用吗？**

绝对不能。Math.random() 是伪随机，如果有人知道你调用的次数和顺序，可预测后续结果。安全应用（如生成密钥、验证码）必须使用 crypto.getRandomValues()。

**Q: 为什么有时候摇骰子连续出现同一个数字？**

这是概率的反直觉。连续出现相同结果的概率虽然低，但并非零。摇 36 次骰子，至少出现一次「连续两个 6」的概率约 46%。这不代表骰子不公平，而是人们容易忽视概率的长尾。

**Q: 如何实现真正公平的年会抽奖？**

使用加密随机数 + 公开代码 + 第三方见证。最好在大屏幕上实时显示算法和执行过程，让所有人都能验证每一步。

**Q: 抽签中的「生日悖论」是什么？**

在 365 个可能中随机选 23 个数，有 50% 概率至少两个相同。类似地，年会 100 人随机抽 11 人，约 50% 概率重复邀请同一个人。这不是算法问题，而是概率本身的性质。

**Q: 彩票号码是真随机还是伪随机？**

合法彩票通常使用真随机（物理搅拌或政府认证生成器）。但小型或在线彩票可能用伪随机。购买前检查是否有监管认证，可通过收集样本和统计检验来验证公平性。

---

## 科学计算器完全指南：三角函数、对数、阶乘与组合数的实用公式

> 从基础三角函数到高级组合数学，全面讲解科学计算的核心公式、应用场景与快速计算技巧。

URL: https://xtechtools.com/guides/sci-calc/
发布：2026-04-29 · 更新：2026-04-29

从高中数学到工程应用，三角函数、对数、阶乘这些看似复杂的数学运算无处不在。建筑设计里用正弦计算斜坡角度；金融分析里用对数处理指数增长；博彩游戏里用组合数计算中奖概率。一台科学计算器，可以把繁琐的手工计算变成秒级单位的快速结果，成为日常决策和复杂问题求解的强大助手。本指南详细介绍科学计算的核心公式、实际应用场景、快速计算技巧、以及如何在日常学习、工作和生活中灵活应用这些必不可少的数学运算工具和技能。

### 三角函数：sin、cos、tan 与弧度 vs 度数

**基本定义**：
在直角三角形中：
- sin(θ) = 对边 / 斜边
- cos(θ) = 邻边 / 斜边
- tan(θ) = 对边 / 邻边（= sin / cos）

**弧度 vs 度数**：
计算机默认使用「弧度」（radian）而非「度数」（degree）。
- 180° = π 弧度
- 转换公式：弧度 = 度数 × π / 180

例：30° = 30 × π / 180 = π / 6 ≈ 0.5236 弧度

**常用值速查**：
| 角度 | 0° | 30° | 45° | 60° | 90° |
| --- | --- | --- | --- | --- | --- |
| sin | 0 | 0.5 | √2/2 ≈ 0.707 | √3/2 ≈ 0.866 | 1 |
| cos | 1 | √3/2 ≈ 0.866 | √2/2 ≈ 0.707 | 0.5 | 0 |
| tan | 0 | √3/3 ≈ 0.577 | 1 | √3 ≈ 1.732 | ∞ |

**实际应用**：
- 屋顶倾斜度 30° 时，高度 = 宽度 × tan(30°)
- 梯子与地面成 60° 角，需要多长梯子靠上 3 米高的墙？ 答：梯子长 = 3 / sin(60°) ≈ 3.46 米

### 反三角函数：从比例反推角度

反三角函数是三角函数的逆运算，用于从已知比例推算角度。

**三个主要反函数**：
- arcsin(x)：已知对边/斜边，求角度。返回值 -90° 到 90° 或 -π/2 到 π/2。
- arccos(x)：已知邻边/斜边，求角度。返回值 0° 到 180° 或 0 到 π。
- arctan(x)：已知对边/邻边，求角度。返回值 -90° 到 90° 或 -π/2 到 π/2。

**JavaScript 实现**：
```
Math.asin(0.5); // 返回 π/6 ≈ 0.5236（弧度）= 30°
Math.acos(0.866); // 返回约 0.5236（弧度）= 30°
Math.atan(1); // 返回 π/4 ≈ 0.7854（弧度）= 45°

// 转换为度数
Math.asin(0.5) * 180 / Math.PI; // ≈ 30
```

**实际应用**：
摄像头视野问题：如果拍摄距离 10 米、拍摄宽度 8 米的场景，视角 = 2 × arctan(4/10) ≈ 2 × 21.8° = 43.6°

### 对数：ln、log10、log2 与指数增长

对数是指数的逆运算。如果 a^b = c，那么 log_a(c) = b。

**三种常见对数**：
- **ln(x)**：自然对数，底数是欧拉常数 e ≈ 2.71828。在微积分和科学中最常用。
- **log10(x)**：常用对数，底数 10。在工程和声学中常见（分贝、pH 值）。
- **log2(x)**：二进制对数，底数 2。在计算机科学中常见（位数、信息论）。

**换底公式**：log_a(x) = ln(x) / ln(a)

**JavaScript**：
```
Math.log(100); // ln(100) ≈ 4.605
Math.log10(100); // log10(100) = 2（因为 10^2 = 100）
Math.log2(8); // log2(8) = 3（因为 2^3 = 8）

// 计算其他底数的对数
function logBase(x, base) {
  return Math.log(x) / Math.log(base);
}
logBase(27, 3); // 3（因为 3^3 = 27）
```

**实际应用**：
- **细菌增长**：细菌每小时翻倍，6 小时后数量变成初始的多少倍？答：2^6 = 64 倍。反过来，从 1 增长到 1024，需要多少小时？log2(1024) = 10 小时。
- **分贝计算**：声音强度级别 = 10 × log10(I / I0)，其中 I 是测量强度，I0 是基准。
- **股票复合增长率**：年均增长率 = e^(ln(最终值/初始值) / 年数) - 1

### 阶乘、排列与组合：概率和计数的基础

**阶乘（Factorial）**：n! = n × (n-1) × (n-2) × ... × 2 × 1
- 0! = 1（特殊定义）
- 5! = 5 × 4 × 3 × 2 × 1 = 120
- 用途：计算排列、组合、概率

```
function factorial(n) {
  if (n <= 1) return 1;
  return n * factorial(n - 1);
}
factorial(5); // 120
```

**排列（Permutation）**：从 n 个不同元素中选 k 个，顺序重要。
P(n, k) = n! / (n - k)!

例：5 个人排成一行，有多少种排法？P(5, 5) = 5! = 120 种。

```
function permutation(n, k) {
  return factorial(n) / factorial(n - k);
}
permutation(5, 2); // 20（从 5 个中选 2 个排列）
```

**组合（Combination）**：从 n 个不同元素中选 k 个，顺序不重要。
C(n, k) = n! / (k! × (n - k)!)

例：10 个球中选 3 个，有多少种选法？C(10, 3) = 10! / (3! × 7!) = 120 种。

```
function combination(n, k) {
  return factorial(n) / (factorial(k) * factorial(n - k));
}
combination(10, 3); // 120
```

**实际应用**：
- 彩票 6/49：C(49, 6) = 10,068,347 种组合（中奖概率 1/1000 万）
- 密码强度：26 个字母选 8 个，26^8 = 208 亿种可能
- 概率问题：5 张牌中有 2 张红桃，随机抽 3 张，有多少种包含至少 1 张红桃的情况？ 答：总情况 C(5,3) = 10；不含红桃的情况 C(3,3) = 1；所以答案 = 10 - 1 = 9

### 指数、双曲函数与高级运算

**指数运算**：
- e^x：欧拉指数，增长最快的函数（自然对数的逆）
- x^y：任意底数的任意幂

```
Math.exp(1); // e^1 ≈ 2.71828
Math.exp(2); // e^2 ≈ 7.389
Math.pow(2, 10); // 2^10 = 1024
Math.pow(10, -3); // 10^-3 = 0.001
```

**双曲函数**：类似三角函数，但基于双曲线而非圆形。常用于物理（悬链线）和工程。
- sinh(x) = (e^x - e^(-x)) / 2
- cosh(x) = (e^x + e^(-x)) / 2
- tanh(x) = sinh(x) / cosh(x)

```
Math.sinh(1); // ≈ 1.175
Math.cosh(1); // ≈ 1.543
Math.tanh(1); // ≈ 0.762
```

**平方根、立方根与通用根**：
```
Math.sqrt(16); // 4
Math.cbrt(27); // 3
Math.pow(32, 1/5); // 5 次根号 32 = 2
```

**实际应用**：
- 放射性衰变：剩余物质 = 初始 × (1/2)^(经历半衰期数)
- 悬链线（Catenary）：绳子自然下垂的形状 = a × cosh(x/a)

### 统计函数：方差、标准差与数据分析

**平均值（Mean）**：所有数据的总和 ÷ 个数
```
let nums = [10, 20, 30, 40, 50];
let avg = nums.reduce((a, b) => a + b) / nums.length; // 30
```

**方差（Variance）**：衡量数据离散程度。V = Σ(x_i - mean)^2 / n
```
function variance(arr) {
  let mean = arr.reduce((a, b) => a + b) / arr.length;
  return arr.reduce((sum, x) => sum + Math.pow(x - mean, 2), 0) / arr.length;
}
variance([10, 20, 30, 40, 50]); // 200
```

**标准差（Standard Deviation）**：方差的平方根，单位与原数据相同。σ = √V
```
function stdDev(arr) {
  return Math.sqrt(variance(arr));
}
stdDev([10, 20, 30, 40, 50]); // ≈ 14.14
```

**实际应用**：
- 质量控制：产品长度标准差越小越好
- 金融风险：股票收益率标准差反映波动性，标准差大 = 风险大
- 考试评分：班级平均分 70、标准差 10，说明分数分布在 60-80 范围（大多数学生）

**68-95-99.7 规则**：在正态分布中，68% 数据在 ±1σ 范围内，95% 在 ±2σ，99.7% 在 ±3σ。

### 十六进制、二进制混合计算与内存按键（M+、M-、MR、MC）

**进制转换**：
```
// 十进制转二进制
(42).toString(2); // "101010"

// 十进制转十六进制
(255).toString(16); // "ff"

// 二进制/十六进制转十进制
parseInt('101010', 2); // 42
parseInt('ff', 16); // 255
```

**常用进制一览**：
| 十进制 | 二进制 | 十六进制 |
| --- | --- | --- |
| 10 | 1010 | A |
| 15 | 1111 | F |
| 16 | 10000 | 10 |
| 255 | 11111111 | FF |

**内存按键（Memory Keys）**的使用**：
- **M+ (Memory Plus)**：把当前显示值加到内存中。例：显示 50，按 M+，内存 = 50
- **M- (Memory Minus)**：从内存中减去当前值
- **MR (Memory Recall)**：取出内存中的值并显示
- **MC (Memory Clear)**：清空内存

**应用场景**：计算一份购物清单。
1. 输入 29.99，按 M+（内存 = 29.99）
2. 输入 14.50，按 M+（内存 = 44.49）
3. 输入 7.99，按 M+（内存 = 52.48）
4. 按 MR，显示总计 52.48

这避免了手写或心算，尤其在多步骤计算中减少错误。

### 常见问题

**Q: 计算机用的是弧度还是度数？**

计算机默认用弧度（radian）。若需度数结果，要乘以 180/π 转换。大多数科学计算器有 DEG/RAD 切换按钮，选错模式会导致结果完全错误。

**Q: 什么时候用排列，什么时候用组合？**

顺序重要（如排队、密码）用排列 P；顺序不重要（如选球、抽卡）用组合 C。判断标准：「AB」和「BA」是否不同？不同用排列，相同用组合。

**Q: 为什么 0! = 1？**

这是数学定义，保证组合公式 C(n, 0) = n! / (0! × n!) = 1 的正确性。从组合角度理解：从 n 个中选 0 个，只有 1 种选法（什么都不选）。

**Q: 对数和指数有什么关系？**

它们互为逆运算。如果 a^b = c，那么 log_a(c) = b。指数用于计算增长，对数用于从结果反推指数。例：2^10 = 1024，log2(1024) = 10。

**Q: 怎样快速判断一个数据集的离散程度？**

计算标准差。标准差越小，数据越集中；标准差越大，数据越分散。可用「标准差/平均值」（变异系数）进行不同数据集的对比。

---

## 邮箱地址混淆完全指南：反爬虫 / 防垃圾邮件 / 隐私保护

> 网站发布联系邮箱后为何遭遇垃圾邮件？本指南讲清楚邮箱爬虫的工作原理、7 种混淆方案对比、SEO 影响，以及如何在隐私与可用性之间找到平衡。

URL: https://xtechtools.com/guides/email-mask/
发布：2026-04-29 · 更新：2026-04-29

把邮箱地址公开在网站上的代价是什么？一周内可能收到数百封推广邮件、色情邮件、钓鱼邮件。这些垃圾邮件来自两个渠道：自动爬虫扫描你的网页代码、以及数据泄露后的邮箱库出售。本指南教你用 HTML 实体、JavaScript 拼接、CSS 反转、图片化、Cloudflare 邮箱混淆等 7 种方案隐藏邮箱，并分析每种方案对 SEO、用户体验、爬虫防护的影响。

### 邮箱爬虫如何工作

网页爬虫（Bot）访问你的网站时，会用正则表达式搜索邮箱格式。防爬虫的核心原则：邮箱不能以明文形式出现在 HTML 或 JavaScript 源码中。用户能看到，但机器看不到。

### 混淆方案 1：HTML 实体编码

把邮箱的每个字符转换为 HTML 实体，浏览器会自动解码显示为正常邮箱，但爬虫的简单正则表达式看不出来。优点：实现简单，无需 JavaScript，SEO 友好。缺点：源码暴露，用户无法一键复制邮箱。

### 混淆方案 2：JavaScript 拼接

邮箱分段存储，运行时拼接。邮箱不会以完整形式出现在源码，爬虫无法直接提取。优点：防爬虫效果好。缺点：依赖 JavaScript，SEO 不友好，代码冗长。

### 混淆方案 3：CSS 反转与视觉隐藏

把邮箱倒写或用 CSS 翻转。用户看到正常邮箱，爬虫看到倒写无法匹配。优点：无需 JavaScript，简洁。缺点：用户无法复制邮箱，SEO 效果未知。

### 混淆方案 4：图片化

把邮箱渲染成图片，在 alt 属性中暗示内容。爬虫看不到图片内容，用户看到清晰的邮箱图片。优点：防爬虫最强。缺点：用户无法复制，SEO 最差，维护成本高。

### 混淆方案 5：Cloudflare 邮箱混淆

如果网站托管在 Cloudflare，可启用邮箱混淆功能。Cloudflare 会自动检测页面上符合邮箱格式的明文，在响应时用 JavaScript 混淆。优点：无需修改代码，全局生效，防爬虫效果好，SEO 影响小。缺点：限 Cloudflare 用户。

### 方案对比与推荐

推荐方案按优先级：1. Cloudflare 混淆（托管在 CF 的首选）2. JavaScript 拼接（平衡防护与体验）3. HTML 实体（简单网站）。

### 临时邮箱作为补充策略

与其在网站上发布个人邮箱，不如申请专用的工作邮箱用于表单接收。这样即使邮箱被爬走，受害的是工作邮箱而非私人邮箱。

### SEO 影响汇总

HTML 实体：搜索引擎能解析，不影响 SEO。JavaScript 拼接：Google 能执行 JS，但其他搜索引擎可能不行。Cloudflare 混淆：对 SEO 无影响。总体上，Cloudflare 混淆是平衡防护与 SEO 的最佳选择。

### 常见问题

**Q: 混淆还有用吗？**

有用。混淆能阻止后续爬虫继续采集，但已出售的邮箱库无法回收。建议同时开启邮箱的垃圾过滤。

**Q: 爬虫会不会破解混淆？**

有可能。但大多数垃圾邮件采集仍用简单正则表达式，混淆对它们有效。

**Q: 用户无法复制邮箱会影响转化吗？**

有影响。但可以通过点击复制到剪贴板按钮弥补。

**Q: 双重防护？**

可以。reCAPTCHA + 邮箱混淆配合最强。

**Q: 应该完全隐藏邮箱吗？**

理想情况下是。改用网站联系表单，所有提交都过服务器。但如果必须公开邮箱，混淆至少能减少 80% 的垃圾邮件。

---

## 中国手机号格式化与运营商查询完全指南

> 中国 11 位手机号看似简单，却暗藏号段分布、运营商标识、虚拟运营商、靓号定价等复杂逻辑。本指南讲清楚号码结构、运营商查询、号码携带转网的实际影响。

URL: https://xtechtools.com/guides/phone/
发布：2026-04-29 · 更新：2026-04-29

一个中国手机号 11 位数字背后，藏着国家码、运营商编码、用户序列号。从 138 开头知道是移动用户，133 知道是电信用户，再到 14 打头的虚拟运营商，这些号段分布早已不是什么秘密。本指南从号码结构讲起，覆盖 13-19 号段的完整分布、运营商查询方法、靓号识别原理、携号转网后的号段失效问题，以及国际拨号格式。

### 中国手机号的 11 位结构

中国手机号由三部分组成：1 [3-9] [XXXXXXXXX]。首位固定 1，第二位 3-9，后 9 位是用户序列号。例如 13912345678：1 = 标识电话号，39 = 中国移动号段，12345678 = 用户编号。

### 运营商号段分布（2026 最新）

中国移动：134、135、136、137、138、139、147、150、151、152、157、158、159、172、178、179、198。中国联通：130、131、132、145、155、156、166、167、175、176。中国电信：133、153、162、163、164、171、173、174、177、180、181、182、189、199。虚拟运营商：170、171、172 段混用。

### 从号段识别运营商的准确性

号段识别的准确率约 95%。但新号段时常有跨运营商分配。携号转网后号段失效，用户可保留号码换运营商。号段推断运营商仅供参考，真实运营商只能通过运营商官方查询或 API 调用获得。

### 如何精确查询号码运营商与信息

方法 1：运营商官网查询（移动 10086、联通 10010、电信 10000）。方法 2：第三方接口（如本站手机号工具），数据准确率 98% 以上。方法 3：技术接口 API，成本 0.01-0.1 元/次。注意：查询用户号码属于隐私操作。

### 靓号识别与定价逻辑

连号：133333333，比普通号贵 10-100 倍。吉利数字：8、6、9 受欢迎，售价百万级。尾号规律：AABBCC 型或对称号，普通号 1-2 倍。日期号：如生日对应号码。运营商也会在开号前筛出靓号，高价另行销售。

### 国际格式与国家码

中国国家码是 +86。标准国际格式：+86 138 1234 5678。往国外拨打中国号码：+86 10 1234 5678（座机）。反向：+1 415 123 4567（美国）。WhatsApp、Signal 等应用自动处理国家码。

### 携号转网的号段失效问题

原绑定：133 → 电信，转网后：133 → 联通。号段表需要 1-3 天更新。银行短信可能路由错运营商。建议转网 7 天后逐一更新各平台号码信息。物联网卡通常绑定特定运营商，转网对普通手机卡有效。

### 手机号格式化与正则表达式

存储：11 位连续数字无空格 13812345678。显示：分组为 3-4-4（138 1234 5678）。国际：+86 138 1234 5678。正则基础：/^1[3-9]\d{9}$/。更严格验证需定期更新新号段。本站工具提供即时验证。

### 常见问题

**Q: 为什么显示虚拟运营商？**

虚拟运营商在 170-172、166、167、188 等多个号段获得分配。

**Q: 携号转网后要等多久？**

号段数据库需要 1-3 天同步，建议等 7 天再做关键业务变更。

**Q: 物联网卡怎么识别？**

号段往往是 146、165、166 等专用段。查询时会标记为物联网卡或 IoT。

**Q: 同一号段为什么有多个运营商？**

工信部分配号段时会给多个运营商。需要查询实时绑定表才能确定。

**Q: 靓号会过期吗？**

只要正常缴费，号码永久归属用户。停机 3 个月以上，运营商会回收重新分配。

---

## 数字转中文大写完全指南：财务 / 合同 / 转账实用规则

> 数字 123 和大写「壹贰叁」看似简单，却涉及财务合规、防篡改、法律效力等关键问题。本指南讲清楚大写规则、分位处理、零的原理、税务发票格式、港澳台繁体差异。

URL: https://xtechtools.com/guides/number-cn/
发布：2026-04-29 · 更新：2026-04-29

「三万五千块钱」在支票上要写成什么？这个看似简单的问题，在财务、合同、税务发票的世界里，关乎法律效力、防篡改安全、跨境交易清晰度。本指南从大写数字的本质讲起，覆盖所有位数的转换规则、零的处理原理、分位处理、整数标记、繁简体差异，以及银行支票、税务发票的固定模板。

### 为什么金融领域必须用大写数字

阿拉伯数字 1、7、10 笔画少，容易被篡改。15 万可以改成 150 万，10 万可以改成 100 万。汉字大写笔画复杂，篡改难度大幅提升。中国人民银行规定：所有支票、汇票、发票的金额都必须用大写标注，否则无效。国际贸易 Letter of Credit 也要求大写金额。

### 大写数字对应表与进位规则

基础对应：零一二三四五六七八九。金额大写专用：壹贰叁肆伍陆柒捌玖，拾佰仟万亿。例如 123：壹佰贰拾叁。1234567：壹仟贰佰叁拾肆万伍仟陆佰柒拾捌。关键规则：位数不能跳跃。某一位是零，用一个零字补位，但连续多个零只用一个零。

### 零的处理原理与常见错误

规则：千位是零，百位也是零，只用一个零。万位是零，不用加零。多个连续零，只记一次零。末尾零不用记。例子：1001 = 壹仟零壹，10100 = 壹万零壹佰，100000 = 壹拾万。常见错误：壹仟零零壹（多个零），应是壹仟零壹。

### 角分处理与小数点

金额通常精确到分。123.45 元大写：壹佰贰拾叁元肆角伍分。规则：元为整数部分最后一位，角为小数点后第一位，分为第二位。无分位用「整」，只有角没有分写「x 角」。例子：100.05 = 壹佰元零伍分，100.50 = 壹佰元伍角，100.00 = 壹佰元整。

### 合同金额防篡改的法律意义

同时用阿拉伯数字和大写汉字标注金额的原因：互验相互印证，两者不符以大写为准。法律效力：发生争议，法院以大写为准。支票防护：金额数字和大写不符时，银行有权拒付。现代趋势：电子合同用数字签名验证，但纸质合同和支票仍强制要求。

### 繁简体与港澳台差异

简体中文（大陆）：壹贰叁肆伍陆柒捌玖。繁体中文（香港）：壹貳叁肆伍陸柒捌玖。主要差异：2 简体贰、繁体貳。6 简体陆、繁体陸。亿简体一字，繁体億。香港支票必须用繁体，大陆用简体。跨港澳汇款混用可能拒理。

### 银行支票填写规范

大写金额从左到右填，不能超出方框。必须竖写或横写，字体清晰。数字不能错误或涂黑，任何涂改支票作废。必须标「整」或「分」。不能有空白，防止添加笔画。例如写「壹万元」不安全，应写「壹万元整」。常见拒票：大小写不符、没有标记、涂改痕迹、字迹模糊。

### 税务发票的金额规范

增值税专用发票：合计金额用阿拉伯数字，备注栏可选填大写。定额发票：面额固定，无需填写大写。电子发票：完全用数字，无需大写。税务稽查：数字和大写明显不符属于重大风险，可能被判定为故意虚开。

### 数字转大写的完整算法与工具使用

手工转换：从右往左按四位一级分组。在线工具（本站）：输入数字立即生成大写，自动处理零、位数、小数点，支持金额和纯数字格式，支持繁简体切换。编程实现：可用库如 num2cn，金融应用最好用正式财务库确保准确性。

### 常见问题

**Q: 为什么既要写阿拉伯数字也要写大写？**

相互验证和防篡改。若两者不符，以大写为准。银行会检查两者是否匹配，不匹配则拒付。

**Q: 「万」和「萬」哪个对？**

简体中文用「万」，繁体用「萬」。根据所在地选择，混用可能导致银行拒理。

**Q: 0.1 元怎么写？**

壹角。不用加「元」。如果是 0.01 元（一分），写「壹分」。

**Q: 电子合同还需要大写吗？**

电子合同通常不要求大写。但纸质合同和支票仍强制要求。

**Q: 发票上数字和大写不符怎样？**

严重问题。税务部门可能认定为虚开发票，有法律风险。以大写为准，差额很大时会触发稽查。

---

## UNO 计分规则与对局策略完全指南

> UNO 是全球最受欢迎的家庭纸牌游戏之一。本教程从官方计分规则、特殊牌分值、500 分胜负判定，到经典对局策略（藏牌与时机、反制 Reverse 拖延），再到各地家规变体与电子版差异，手把手讲清楚 UNO 的所有玩法细节。

URL: https://xtechtools.com/guides/uno-score/
发布：2026-04-29 · 更新：2026-04-29

UNO（乌诺）是一款简单易学却充满策略性的纸牌游戏，由 Mattel 公司在 1971 年推出，至今已成为全球家庭、课堂和朋友聚会的必备娱乐。本指南从 UNO 牌组的 112 张牌结构讲起（0-9 四色各两张、功能牌 Skip/Reverse/Draw2、万能牌 Wild/Wild+4），深入官方计分规则（手牌剩余分加给胜方）与 500 分判胜体系，再教你实战策略（关键时刻何时打 +4、如何用 Reverse 拖延局势）、各地家规变体（是否允许叠牌堆积、手牌展示规则），最后对比电子版（手机 App）与实体版的差异。

### UNO 牌组与基础规则

UNO 共 112 张牌，分为数字牌、功能牌和万能牌三大类。

**数字牌**：红、黄、绿、蓝四种颜色，各有 0-9 十个数字（0 各一张，1-9 各两张，共 76 张）。

**功能牌**：每色各 2 张，共 32 张。Skip（跳过下一家）、Reverse（反向轮流顺序）、Draw2（下一家摸 2 张牌后跳过）。

**万能牌**：4 张 Wild（通配符，可变任意颜色）和 4 张 Wild+4（万能+抽 4 张，下一家摸 4 张后跳过）。

游戏规则：玩家轮流出牌，必须出与桌面顶牌同色或同数字的牌，或出 Wild/Wild+4。当手牌剩一张时必须喊「UNO」，违者罚摸 2 张。手牌最先出完的玩家获胜，本轮其他玩家手牌中的牌数加总作为该胜者的得分。

### 官方计分规则与 500 分胜负

**单轮计分**：胜者的得分 = 其他玩家手牌分值之和。数字牌按面值计（0 分、1-9 对应 1-9 分），Skip、Reverse、Draw2 各 20 分，Wild、Wild+4 各 50 分。

例如：三人游戏，Alice 最先出完牌，Bob 手牌剩「5、Reverse、Wild」（5+20+50=75 分），Charlie 手牌剩「7、9」（7+9=16 分），则 Alice 本轮得 75+16=91 分。

**多轮累计**：游戏进行多轮，每轮胜者累计得分。首先达到 500 分（或约定的目标分数）的玩家最终获胜。

**家规变体**：某些地区约定 1000 分才算赢，或设定最高分制（得分最少的人赢），规则出牌前务必确认。电子版 App（如官方 Mattel UNO）常预设多个难度模式，自动计分避免手算出错。

### 实战对局策略

**保留万能牌与 +4 的关键时机**：Wild 和 Wild+4 是扭转局势的利器。不要一出现就打出去，而是在下列情形保留它们：(1) 对方仅剩 1-2 张牌且快要喊「UNO」；(2) 当前颜色在全桌都很少，Wild+4 能逼迫下家摸 4 张且难以跟牌；(3) 自己手牌颜色单一，Wild 能过渡。

**反制 Reverse 与拖延局面**：当对方是仅剩的最大威胁时，及时用 Reverse 改变轮流顺序，让他多等一个回合。Skip 也能起到类似作用。

**记忆与概率**：留心桌面出过的牌，推断剩余牌堆里剩什么。例如四色的红 9 都已出现，则后续红 9 不可能再出现，可以大胆出红色牌。

**说谎与故意喊「UNO」**：某些家规允许「假喊」以迷惑对手（出牌后明知不止 1 张还喊 UNO），这是心理博弈的一部分，但需要赛前约定。官方竞赛规则禁止。

### 常见家规变体与地区差异

全球各地 UNO 玩家衍生出众多规则变体，增加难度和趣味：

- **堆牌 Stacking**：当有人打 Draw2 或 Wild+4 时，下家可继续打自己的 Draw2/+4 来「堆积」惩罚给下下家。某些严格版本禁止这招。
- **挑战 +4 规则**：Wild+4 前的玩家可「挑战」它的合法性（质疑对方有其他可出的牌），挑战成功则对方摸 6 张，失败则自己摸 4 张。
- **家规轮回**：可自定义「摸一张牌+出牌」而不是「要么出要么摸两张」，增加出牌机会。
- **积分变体**：有人玩「负分制」（最后得分最多的人反而输），或「加倍分值」（所有牌分值翻倍）。

比赛前务必全桌统一约定，避免规则混乱。

### 电子版 UNO 与实体版的差异

官方 Mattel UNO App（iOS/Android）和 Steam 版本与实体纸牌的核心规则相同，但体验和细节有差异：

- **自动计分**：App 自动累计分数，避免手工统计错误，是新玩家的友好选择。
- **动画与音效**：电子版增加视觉反馈，增强游戏节奏感，但某些「意外」时刻（如突然被 +4）的惊喜感不如实体牌。
- **网络对战**：App 支持在线匹配陌生人或邀请好友，实体版只限同桌。
- **规则严格化**：App 强制执行官方规则，无法自定义家规（堆牌、挑战 +4 等有官方模式但不允许禁用）。
- **新手教程**：官方 App 内置规则教学和一键出牌建议，实体版需要人工指导。

社交场景推荐实体牌（更亲近、更多博弈空间），竞速或学习规则推荐电子版。

### 进阶技巧与常见误区

**误区 1：频繁出 Skip/Reverse**。这些牌虽然能跳过对手，但本质不如数字牌稳定，频繁用会暴露自己手牌颜色少的弱点。

**误区 2：忘记喊「UNO」的后果**。忘喊被发现，罚摸 2 张（某些规则是 4 张）。设定手机提醒或养成习惯，出现倒数第二张牌时立即大声喊。

**进阶 1：心理博弈**。观察对手频繁出什么颜色，推断他积累了很多那个颜色的牌，出其他颜色让他被迫摸牌。

**进阶 2：位置意识**。如果你是倒数第二个人，而下家只剩 1 张，应该用 Reverse 把轮流顺序改为轮到你，而不是让第三个人继续轮。

**进阶 3：弃牌价值评估**。每回合选择出哪张牌时，不仅看能否跟牌，还要考虑手中还剩什么牌，优先出「孤牌」（与其他牌颜色/数字都不相关的牌），保留关联牌以备后续灵活出牌。

### 常见问题

**Q: Wild+4 和 +4 是一样的吗？**

是的，Wild+4 就是 +4，它的完整名称是「Wild Draw Four」。它既是万能牌（可变任意颜色），又强制下家摸 4 张并跳过。普通的 Draw2（+2）只强制摸 2 张且颜色固定。

**Q: 手牌空了以后游戏就结束了吗？**

是的，某一玩家的手牌最先出完就是本轮胜者，其他玩家停止出牌。然后统计其他玩家的剩余手牌分值，加总后给胜者。多轮后首先达到 500 分（或约定分数）的玩家最终获胜。

**Q: 如果我打不出任何牌怎么办？**

从牌堆摸一张牌。如果这张牌能跟（与桌面顶牌同色或同数字），你可以选择立即出它或继续握牌。摸出的牌无法跟，则轮到下一家。

**Q: Wild+4 能在任何时候打出来吗？**

理论上能，但官方规则建议只在手牌中没有任何能跟的牌时才出 Wild+4。某些严格规则允许下家「挑战」Wild+4 的合法性。如果对手确实有能跟的牌却还用了 Wild+4，对手要摸 6 张；如果对手确实无牌可跟，挑战者摸 4 张。

**Q: UNO 适合几个人玩？**

官方规则支持 2-10 人，最佳体验是 2-4 人。人数太多会导致每个人的出牌间隔太长，节奏变慢。两人对战时，Reverse 退化为和 Skip 同样的「跳过对手」效果，策略性降低。

---

## 通用计分板完全指南：桌游 / 比赛 / 课堂多场景应用

> 通用计分板突破了专用记分工具的局限，适用于任何需要计分的场景。本教程讲解如何用它来管理桌游玩家、教学积分、体育比赛等，包括玩家管理、加分粒度选择、轮次记录、撤销机制、现场展示技巧。

URL: https://xtechtools.com/guides/scoreboard/
发布：2026-04-29 · 更新：2026-04-29

计分是所有竞赛、游戏和评估的核心动作。传统做法是在纸张上手工记录，但容易出错、难以修改、无法实时展示给所有人看。通用计分板用数字化的方式彻底解决这一痛点：支持任意数量玩家的动态管理、灵活的加分粒度配置（±1、±5、±10 等）、秒速撤销任意操作、实时排名自动计算和现场投屏展示给观众。本指南教你用它应对 UNO、大富翁、知识竞赛、课堂表现积分等所有场景，深入讲解玩家管理、轮次记录与撤销机制、数据持久化、多屏展示等核心功能，让记分过程从繁琐变轻松。

### 通用计分板的核心优势

与专用记分工具（斗地主计分板、麻将计分器）相比，通用计分板的优势在于「一工具多用」：

**灵活的规则**：不限制游戏类型或计分公式，从简单的「+1」到复杂的「分数翻倍 + 排名加成」都能支持。

**动态玩家管理**：比赛中途加人、换人或有人弃权，通用计分板都能平滑处理，历史记录不丢失。

**实时展示**：一块屏幕投屏给现场所有人看，每次加分都即时更新排名，增强公平性和紧张感。

**无限轮次记录**：自动记录每一轮的加分细节，事后可以回溯「第三轮 Alice 为什么加了 50 分」。

**秒速撤销**：出错了一键撤销，不用重新开局或手工修改数字。

**跨设备同步**：Web 版本在任何浏览器打开链接即用，无需下载 App，甚至可以在手机、平板、电脑间切换而数据保持一致。

### 5 大应用场景

**场景 1：桌游聚会（UNO、大富翁、卡坦岛）**。多个玩家轮流出牌获分，计分板自动排序，游戏结束后有完整的每轮得分演变曲线。

**场景 2：课堂积分制**。老师为每个学生增加「课堂表现分」「作业分」「小测分」，计分板可以按不同类别加分（选项），月末自动汇总每个学生的总分，用作期末评价参考。

**场景 3：体育比赛**。排球、乒乓球、跑步计时赛，两队或多选手的实时得分和排名，计分板支持「快速 +1」按钮和「精确输入」两种模式。

**场景 4：知识竞赛 / 答题**。主持人逐题宣布答题者，对方点击加分或减分，计分板实时展示排行榜，增强现场紧张和参与感。

**场景 5：家庭娱乐评比**。谁的手工最漂亮、谁讲的故事最有趣、唱歌比赛得分等，所有人现场投票加分，最后自动排名，公平透明。

### 使用计分板的 6 个步骤

**步骤 1：创建新局**。打开计分板，点「新游戏」，输入游戏名称（可选）。

**步骤 2：添加玩家**。输入玩家名字逐个添加，或从历史玩家列表快速选择。支持 2-20+ 玩家。

**步骤 3：选择加分粒度**。配置「快速按钮」：常用的 ±1、±5、±10、±20、±50 等，避免每次都手工输入数字。某些场景还需要特殊按钮，如「回合结束」「换人」等。

**步骤 4：开始计分**。每次有人得分，点对应玩家卡片的加分按钮，或点卡片输入具体分数。计分板自动更新排名和排行榜。

**步骤 5：共享屏幕**。用投影仪或大屏幕展示计分板（点「共享」生成屏幕链接），全体玩家和观众都能实时看到最新排名。

**步骤 6：结束并导出**。游戏结束后，计分板自动显示最终排名。可导出为 CSV/PDF，作为成绩记录或奖励凭证。支持「撤销上一步」回到任意历史状态。

### 加分粒度与轮次记录

**加分粒度**是指每次加分的「单位大小」。通用计分板支持多种配置：

- **固定粒度**：最常见的 ±1、±5、±10、±20。一次点击直接 +5，十次点击 +50。
- **自定义粒度**：输入「+33 分」或「-7 分」等任意数字。知识竞赛中答对一题 +10，答错一题 -5，直接输入即可。
- **分类加分**：「课堂表现 +1」「作业 +5」「小测 +10」，系统记录每项加分，事后生成报表显示各项占比。

**轮次记录**是计分板的隐形功能。每一次加分都会记录时间戳、加分人、加分数额，形成完整的「操作日志」。这样做的好处：(1) 事后可以回溯每一轮谁得了多少分；(2) 如果发现某条记录有误，可以单独撤销它而不影响其他记录；(3) 生成「分数演变曲线」，展示每个玩家的分数如何逐轮变化，有助于分析游戏过程。

### 撤销机制与数据安全

**一键撤销**：计分板记录了每一步操作，点「撤销」或按 Ctrl+Z 可回到上一状态，无限次撤销回到任意历史版本。这在教学或重要比赛中至关重要——一旦出错（比如不小心给 Alice 加了 100 分本应是 10 分），秒速修复而无需重启。

**分组撤销**：某些计分板允许「撤销这一轮所有玩家的加分」，而不仅是撤销最后一步。适合「这一题全员犯规，分数无效」的场景。

**数据持久化**：Web 版计分板通常利用浏览器的 localStorage 或云同步保存数据。关闭浏览器后再打开，之前的游戏数据仍在。某些版本还支持「自动保存」到云端（Google Drive、Dropbox），跨设备保持同步。

**导出与备份**：游戏结束后导出数据为 JSON/CSV，便于二次分析或存档。老师可以把整个学期的课堂积分数据导出，生成期末评价报告。

### 现场展示与观众体验

**投屏技巧**：用 HDMI、Airplay 或浏览器投屏功能，把计分板从手机/电脑投到大屏幕（电视、投影仪）。确保字体够大，排行榜清晰可读（字号至少 48px）。

**实时排名更新**：每一次加分后，排行榜自动刷新，观众无需等待。这种「即时反馈」大幅增强游戏紧张感和参与度。相比传统手工记录（要等记录员慢慢算），计分板的实时性是不可比的优势。

**音效与提示**：某些计分板配置「加分音效」或「排名变化提示」（如 Alice 从第二名升到第一名时闪烁高亮），增强现场氛围。教学场景可以关闭音效以减少干扰。

**多屏协作**：一台设备作为「主控」进行加分操作，另一台设备作为「显示屏」展示计分板，两者通过局域网或云端同步数据。这样主持人可以在舞台边进行操作，观众在舞台中央看大屏幕。

### 常见问题

**Q: 通用计分板和专用计分工具（如斗地主计分板）有什么区别？**

专用工具针对单一游戏优化，预装特定规则（如斗地主的「地主加倍」「春天翻倍」）和自动计分公式。通用计分板则完全自定义，你可以设置任何规则和加分逻辑，代价是需要手工配置。如果经常玩同一个游戏，专用工具更快；如果经常切换游戏，通用计分板更划算。

**Q: 能同时管理多个游戏吗？**

能。大多数计分板支持「游戏历史」，每个游戏是独立的一条记录，可以随时切换回之前的游戏继续。某些高级版本还支持「保存模板」，下次快速新建同样配置的游戏。

**Q: 游戏中途加人或换人怎么办？**

点「添加玩家」或「移除玩家」即可。新玩家的初始分数默认为 0，可以手工调整。历史数据不会丢失，系统会在新排名中显示加/减人后的实时排名。

**Q: 支持负分吗？**

支持。有些游戏需要「罚分」机制（如回答错误 -10 分），计分板允许分数降到负数。最终排名按总分从高到低排序，负分排在最后。

**Q: 数据会丢失吗？**

不会（通常）。Web 版计分板利用浏览器缓存或云端存储保存数据，关闭浏览器后重新打开同一页面，数据仍在。建议在重要比赛前导出一份备份，以防浏览器缓存被清理。

**Q: 支持多人同时操作吗？**

取决于版本。某些计分板支持「多设备同时编辑」（例如主持人和助理同时在不同设备上加分），通过云端实时同步。这需要开启「协作模式」并分享链接。

---

## 抛硬币完全指南：决策犹豫 / 概率教学 / 心理学

> 抛硬币看似简单，却隐藏着概率、心理学和决策论的深层逻辑。本教程讲解硬币的真实偏差（约 51% 朝上）、为什么人们用硬币决策时能「暴露真意」、连续抛硬币的数学概率、浏览器伪随机与真随机的区别，以及教学场景中如何用硬币引入概率论。

URL: https://xtechtools.com/guides/coin-flip/
发布：2026-04-29 · 更新：2026-04-29

抛硬币是人类最古老的决策工具之一。从古罗马士兵赌运气，到现代足球比赛的「掌声法」选择先手，再到程序员用「反正随机数就是 coin flip」来替代真正的随机算法，硬币无处不在。本指南从物理学角度揭示硬币的真实偏差（飞行中的物理特性导致约 51% 概率朝上），深入心理学分析为什么「让硬币决定」时人们常能从结果中察觉自己的真实倾向，进而讨论概率计算（10 次全正的几率是 1/1024）、浏览器 Math.random() 的伪随机本质、在教学中如何用硬币引入概率与统计，最后给出正确使用本站 Coin Flip 工具进行公平决策的建议。

### 抛硬币的实际应用场景

**足球比赛开球**：主队与客队队长相对而立，裁判抛硬币决定谁先选择场地或先攻。这是体育竞赛中最常见的硬币应用，确保双方起点公平。

**日常决策犹豫**：「今晚去喝酒还是在家睡觉？」两难之下，有人会说「反正我们掷硬币决定吧」。看似把决策权交给运气，实际上往往能反映内心真实倾向（见下文心理学部分）。

**课堂教学概率**：老师带学生做抛硬币实验，记录 100 次结果，统计正面频率，用实际数据验证「理论 50% vs 实际频率」的偏差，是概率论入门的最佳道具。

**游戏或竞赛破平手**：多人游戏如 UNO 中，如果两个人同时出完牌（理论上不太可能但可能出现的 edge case），可以掷硬币决定谁是真正的胜者。

**分组与匹配**：学校运动会、工作坊分组，用掷硬币的结果来分配组别或对手，保证分配的随机性和公平性。

### 硬币的真实物理学与偏差

看似 50:50 的硬币，实际偏差约 51% 朝上（即硬币开始时朝上的一面，掷出后更容易再次朝上）。这是由于：

**自旋与旋转动量**：抛硬币时，硬币通常以初始面为「顶面」旋转，经过数十次翻滚后，由于空气阻力和重力作用，硬币会「偏向」返回初始面。

**落地与弹性**：硬币在桌面上着陆时，如果旋转还未完全停止，弹性碰撞可能让它再翻一下，导致最终朝向偏离理想的 50:50。

**表面粗糙度**：真实硬币的两面质量和形状微微不同，一面可能微重，微重的一面倾向朝下（增加朝上的概率）。

这个发现来自 2007 年加州大学伯克利分校的研究，他们用高速摄像机拍摄了数千次硬币抛掷，统计得出约 51% 的朝上率。因此，如果你依赖硬币做重大决策，理论上应该稍微「倾向于」那 51% 的结果。但在实践中，这 1% 的偏差对绝大多数场景影响不大，除非抛硬币次数极多（如做 10000 次实验）。

### 硬币决策的心理学：暴露真意

一个有趣的心理学现象：当人们用「掷硬币决定」来解决两难之际，往往能从「期望结果」反映出心中真实想法。

**「希望」效应**：假设你在「加班完成项目」和「按时下班陪家人」之间犹豫，决定掷硬币。硬币正面 = 加班，反面 = 下班。掷出正面后，如果你内心感到失望，说明你其实更想下班；如果感到欣然接受，说明你其实更想加班。这个「一秒钟反应」就是你的真实倾向。

**决策焦虑的缓解**：掷硬币的另一个心理价值是「减压」。面对两个同样吸引的选择时，人的大脑陷入「分析瘫痪」，不断权衡两边的优缺点。硬币给了决策者一个「心理借口」——「不是我自己选的，是硬币决定的」——这反而让人更容易接受结果。

**社交场景**：团队决策中，用硬币而非主观投票，能减少「某个人强势压过少数人」的感受，提升决策的公平性感知（即使物理上也许不够公平）。

**警惕**：虽然硬币决策有心理学优势，但不适合人生重大决策（选择专业、买房、换工作）。应该只用在「两个选项都还不错」的低风险场景中。

### 连续掷硬币的概率计算

掷硬币的理论概率是 50%，但如果连续掷多次，特定序列出现的概率呈指数级下降。

**连续 10 次正面的概率**：(1/2)^10 = 1/1024 ≈ 0.1%。也就是说，如果你连续掷 1024 次硬币，约有一次会出现连续 10 次全是正面的情况。

**连续 5 次反面的概率**：(1/2)^5 = 1/32 ≈ 3%。相对容易遇到。

**在 100 次掷硬币中，出现连续 5 次同面的概率**：约 97%（几乎一定会出现）。

这些计算有什么实用价值？

- **赌徒谬误预防**：许多赌徒会想「掷了 10 次都是正面，下一次必然是反面」，试图「纠正」趋势。实际上每次掷硬币都独立，历史结果不影响下一次（概率仍是 50%）。
- **数据检验**：如果某个「随机数生成器」掷出了「100 次全是正面」，这说明要么数据假，要么生成器有严重 bug（几率是 2^-100，比地球被陨石撞中都低）。
- **教学演示**：让学生自己掷硬币 100 次，统计连续同面的最长「游程」（run），观察分布，验证理论预期。

### 浏览器随机数与伪随机

本站 Coin Flip 工具在浏览器中模拟掷硬币，核心是 JavaScript 的 Math.random() 函数：

**Math.random() 的局限**：这是伪随机数生成器，基于确定的数学算法。现代浏览器（Chrome、Firefox、Safari）用 xorshift128+ 或 PCG 等算法，周期很长（2^128 以上），对普通应用够好，但理论上可以被完全预测。

**真随机 vs 伪随机**：真随机来自物理随机源（硬件噪声、原子衰变、网络时序），完全不可预测。伪随机是数学计算，可预测但看起来随机。Coin Flip 工具用伪随机，适合日常决策和教学演示，但不适合高安全性需求（如密钥生成、抽奖审计）。

**crypto.getRandomValues()**：如果需要更强的随机性，JavaScript 提供该 API，它调用操作系统的真随机源（Linux 的 /dev/urandom、Windows 的 CryptGenRandom）。本工具未使用（普通掷硬币无此必要）。

**对用户的影响**：Coin Flip 的掷硬币结果「足够随机」来做决策或教学。但程序员若用 Math.random() 来生成安全令牌或密钥，那就有问题了——应该用 crypto.getRandomValues()。

### 教学应用与实验设计

**小学概率入门实验**：（适龄 8+ 岁）给每个学生 10 枚硬币或 10 次掷硬币的权利，记录每人的正面数，汇总全班结果。观察分布：有人全正面，有人全反面，大多数在 4-6 个正面。这个分布会接近二项分布（Binomial Distribution），用实验数据验证理论。

**大数定律验证**：（适龄 12+ 岁）掷硬币 10 次、100 次、1000 次，计算每组的正面率。结果会发现：10 次时正面率可能 30%-70%，100 次时缩小到 40%-60%，1000 次时逼近 50%。这就是大数定律——样本越大，实验频率越接近理论概率。

**伪随机与真随机对比**：（适龄 14+ 岁）用 Coin Flip（伪随机）和真实硬币分别做 100 次实验，对比结果。理论上应该都接近 50%，但有学生可能观察到伪随机的「周期性」（虽然非常微妙）。这引入计算机科学话题。

**抽奖公平性审计**：（社会应用）某个彩票或活动号称用「随机抽签」选出幸运者。用 Chi-squared 检验（卡方检验）来验证历年结果是否符合均匀分布。如果某个号码连年中奖，可能是作假。

### 常见问题

**Q: 真实硬币真的偏向朝上吗？**

根据科学研究，约 51% 概率。这是由硬币的旋转物理学和表面特性决定的。但这个偏差很小，除非你掷硬币几千次，否则无法察觉。对于一次性决策，可以忽视。

**Q: 掷硬币决策是否真的能反映人的真实想法？**

在心理学上有一定支持：看到硬币结果后，你的「第一反应」（失望或欣喜）能暴露潜意识的倾向。但这不是绝对的，有人可能出于面子或社交压力，故意违抗硬币结果。最准确的做法是「信任硬币，执行结果一段时间，观察自己是否后悔」。

**Q: 连续 10 次正面真的很罕见吗？**

概率上是 1/1024，约 0.1%。但如果全世界每天都有数百万人掷硬币，这样的「罕见事件」每天都会发生在某个人身上。如果只有你掷硬币，遇到这种情况的确很稀奇。

**Q: Math.random() 生成的硬币结果是真随机吗？**

不是。Math.random() 是伪随机，基于数学算法，理论上可预测。但对普通用户而言，足够随机来做决策或演示。如果你是程序员且需要高安全性随机数，应该用 crypto.getRandomValues()。

**Q: 为什么掷硬币时，我常会在结果出来前就「知道」自己的答案？**

这是心理学的「暴露真意」现象。你的潜意识早就有倾向，但有意识层面在犹豫。掷硬币强迫你面对结果，你的反应（失望或接受）就反映了潜意识的真实想法。这是硬币作为决策工具的最大心理价值。

---

## 石头剪刀布完全指南：赛事 / 心理博弈 / AI 对战

> 从古中国传入日本再风靡全球，石头剪刀布不仅是儿童游戏，更是策略、心理与数学的完美结合。本指南深度解析世界锦标赛规则、心理学博弈、AI 对战策略与五选项变体，让你成为真正的「布局大师」。

URL: https://xtechtools.com/guides/rps/
发布：2026-04-29 · 更新：2026-04-29

石头剪刀布（Rock Paper Scissors，简称 RPS）看似简单的三选一游戏，却是数学博弈论的经典教学案例。它的历史可追溯至中国古代的「斗牌」游戏，后来传入日本演变成「じゃんけん」，如今已成为全球流行的决策工具——从儿童游乐场到世界锦标赛再到 AI 对战算法。本指南将带你从游戏规则、心理学博弈、统计数据到 AI 策略多个维度，彻底掌握这个古老又现代的游戏。

### 石头剪刀布的起源与全球传播

石头剪刀布的原型来自中国唐宋时期的「豁拳」游戏，后经日本演化为「じゃんけん」，再由日本传入欧美。20 世纪中期，美国成立了世界石头剪刀布协会（WRPS，World RPS Society），每年在伦敦举办世界锦标赛，参赛者来自全球 30+ 个国家。游戏规则简单明了：石头胜剪刀、剪刀胜布、布胜石头，形成循环制约关系。这个完美的「三角平衡」结构，使得没有任何单一策略能保证胜利，反而激发了人类的心理学博弈。2016 年的世界锦标赛吸引了来自 13 个国家的 50 多名参赛者，冠军奖金达 5000 美元。这充分说明 RPS 已从儿童游戏演变为需要真才实学的竞技项目，吸引了大量心理学家、统计学家、数学家的关注和研究。

### 人类心理学中的非随机性偏差

虽然 RPS 理论上的纳什均衡是「三种出招各 1/3 概率」，但真实的人类玩家远非随机机器。统计学研究发现了一系列行为偏差：男性倾向先出「石头」（概率达 48%），女性倾向先出「剪刀」（概率达 43%）。赢了一把后，人倾向于继续出同一招，但对手往往会换招反制。输了多把后，人倾向于选择「上一把赢过对手的招式」而非随机出招。初次对阵陌生人时，男性首轮极易出石头（达 50% 概率），这成为高手的必胜套路。高手的秘诀就是识别并利用对手的这些心理模式，而不是真正的「随机」。通过长期对战数据统计，研究人员已建立了完整的人类出招心理模型。这些偏差在数百次对战后会显露无遗，经验丰富的选手能在 5-10 轮内发现对手的模式。

### 世界 RPS 锦标赛与职业选手策略

世界锦标赛每年汇集全球顶尖选手，冠军往往不是凭运气，而是凭心理学直觉与统计记忆。历代冠军的共同特点是精通对手分析：追踪对手上 10-20 轮的出招模式，推测其下一步偏向；识别「陷阱」模式，观察对手在连胜后是否总爱改招；在某个场景（如人群嘈杂）是否有固定倾向。他们还会观察对手在大分差落后时是否更容易出石头（人的焦虑反应）、通过冷读技巧观察对手的手部微动、呼吸节奏甚至眼神来预判出招。2019 年冠军 Andrea Fiano 在赛后采访中透露，他花费数月研究参赛对手的历史比赛录像，建立了每位对手的「出招概率模型」。这已不是游戏，而是心理学与数据科学的军备竞赛。高级选手能记住上百个对手的特征。

### RPS 变体：石头剪刀布蜥蜴史波克（RPSLS）

为了解决原版 RPS 过于简单（50% 平局率）的问题，2005 年计算机科学家 Sam Kass 提出了五选项版本。石头砸碎剪刀和蜥蜴；剪刀切割布和斩首史波克；布包裹石头和抓住史波克；蜥蜴吃掉布和咬死史波克；史波克摧毁石头和投毒剪刀。每个选项恰好击败另外两个、被另外两个击败，形成完美的五角循环。这大幅降低了平局率（从 50% 降至 30%），提高了游戏的策略深度，因为选手需要记忆更复杂的克制关系。本站 RPS 工具也提供 RPSLS 模式供高手挑战，游戏难度与心理学复杂度都显著提升。许多国际 RPS 大赛已改用 RPSLS 规则，以提高竞技性和观赏性。这个变体在美剧《生活大爆炸》中也曾出现。

### AI 对战算法与机器学习策略

AI 对战 RPS 的核心是马尔可夫链预测和频率分析。工具中的 AI 引擎采用三层策略：第一层扫描你最近 20 轮的历史，计算你出石头、剪刀、布的概率分布，选择最常出现选项的克制招式；第二层检测「连胜后改招」「连败后回归热招」等心理模式，提前预判你的下一步；第三层在你长时间没出某个招式时，假设你正在憋大招，出其克制招式打乱你的节奏。高难度 AI 会在赢得足够领先后故意降低胜率，诱你进入「追赶心态」而陷入更可预测的出招模式。AI 的训练数据来自数千万次人类对战，因此具有极高的预测准确率。与真人对手相比，AI 永不疲劳、永不失误。

### 日常生活中的 RPS 决策应用

虽然看起来很游戏化，但 RPS 的心理学原理可应用于现实决策场景。在团队分工中，没人想干苦活时，用 RPS 而非投票，能公平化且快速化决策，避免权力斗争。在面临三个等价方案时，RPS 可打破心理僵局。谈判策略中可识别对手在压力下是否有「习惯性选择」，从而预判其底线。教育中可通过玩 RPS 教孩子「随机性」「概率」和「对手心理」，比数学课更有趣且更易记忆。日本学校甚至将 RPS 教学融入数学与伦理课程，培养学生的决策意识和心理预判能力。许多企业团建活动也采用 RPS 来增进团队互动和凝聚力。生活中无处不在的决策都可借鉴这个古老游戏的智慧。

### 常见问题

**Q: 完全随机出招是否无敌？**

理论上纳什均衡是各 1/3，但实际中 100% 随机对常人有优势（因为常人非随机），但对高手反而吃亏——高手的策略正是识别你的「伪随机性」。

**Q: 世界锦标赛冠军是靠运气还是技术？**

纯运气概率极低。锦标赛采用多轮制（通常 10+ 轮），样本足够大时，技术与心理学优势会显著显现。历代冠军都有深入的对手研究背景。

**Q: RPSLS 五选项版比三选项版更「公平」吗？**

某种程度是。三选项版平局率 50%，意味着一半时间无法分出胜负；五选项降至 30%，让策略空间更大。但也更复杂，新手容易出错。

**Q: AI 对战中有作弊吗？**

本工具的 AI 只读取你的历史出招，不预知未来。工具运行在浏览器端，完全透明。真正的「作弊」是人类对人类的冷读（观察微动作）。

**Q: 怎样训练成 RPS 高手？**

练习的关键是 (1) 学会伪随机出招（不让对手找到规律）；(2) 记忆对手的习惯与偏好；(3) 在心理战中保持冷静。与不同对手反复交手。

---

## 中国彩票完全指南：双色球 / 大乐透 / 七乐彩玩法对比

> 双色球、大乐透、七乐彩是中国三大彩票，每周吸引数百万投注。本指南用数据讲清楚各玩法的中奖概率、奖池、冷热号码的迷思，帮你理性看待彩票。

URL: https://xtechtools.com/guides/lottery/
发布：2026-04-29 · 更新：2026-04-29

彩票是财政收入来源，也是中国最大规模的游戏化赌博。双色球、大乐透、七乐彩每周累计投注额超 50 亿元，背后是数千万「彩民」的幻想与损失。这些游戏看似规则不同，本质都是严重不对等的赌局——平均每投 1 元，国家拿走 0.36 元作为公益金，你只有 49% 概率获得回报。本指南用数据和概率论揭示真相，同时解释为何号码冷热分析、守号等策略都是幻觉。了解真实概率，你才能做出理性决策。

### 三大彩票玩法对比

双色球是 6 个红球（1-33）+ 1 个蓝球（1-16），每周二、四、日晚 21:30 开奖，一等奖（6+1）奖池约 35.04 亿元，销售总额最大。大乐透是 5 个前区球（1-35）+ 2 个后区球（1-12），每周一、三、六 20:30 开奖，一等奖（5+2）奖池约 86 亿元（最高），吸引最多大额投注。七乐彩是从 1-30 选 7 个，每周一、三、五 20:30 开奖，奖池相对小，但难度略低于前两者。总体而言，大乐透因奖池最大吸引投注最多，双色球最平民化且最广为流行，七乐彩体量最小但新手友好。但三者的本质相同：都是先付钱后开奖，中奖概率远低于投注成本。政府通过彩票管理部门统一监管。

### 中奖概率的数学计算

以双色球一等奖为例，中奖概率 = 1 / (C(33,6) × 16) = 1 / (1,107,568 × 16) = 1 / 17,721,088（约 1/1771 万）。这意味着你的中奖概率仅为 0.0000056%。对比之下，大乐透一等奖：1 / (C(35,5) × C(12,2)) ≈ 1 / 21,475,840（更难），七乐彩一等奖：1 / C(30,7) ≈ 1 / 2,035,830（相对容易但仍然极低）。投资回报率（期望值）更能说明问题：假设双色球平均奖金 500 万，你投 1 元获奖期望 = 500 万 × (1/1771 万) ≈ 0.28 元。国家已抽取 36% 公益金，你的期望损失是 1 - 0.28 = 0.72 元（72% 的投注额）。长期投注必然亏损，这是数学上的确定性结论。任何声称能逆转的方法都是骗局。

### 「冷号」「热号」和「守号」的迷思

最常见的伪科学就是「号码频率分析」：有人声称长期没开的号码（冷号）下期极易开出，反之热号会冷却。这都是概率统计的陷阱。原因是彩票抽签每期独立同分布（i.i.d.），历史开奖频率不影响未来结果。数学上这叫「赌徒谬论」——即使某号码 100 期未开，它下期开出的概率仍是 1/33。这是概率论的基本原理，已被数学严格证明。「守号」（坚持买同一组号码）的心理原理是「近因效应」——如果突然中奖，会强化选号的信心，但这不过是幸存者偏差。数百万守号的人中，少数人幸运中奖会被媒体炒作，而绝大多数人的损失则无人问津。从概率角度，守号与随机选号的期望值完全相同。

### 彩票的社会属性与沉迷风险

彩票之所以存在，本质是政府发行的福利彩票制度。收入分配通常为：奖金 49%、公益金 36%、销售费用 15%。从国家角度这是筹措福利资金的手段；从个人角度这是不对等的赌局。沉迷彩票的警示信号包括：每周投注额超过月收入 1%；因为「快要中了」而继续投注（追赌心理）；忽视或淡化损失，只记住偶尔的小赢；借贷投注或挪用生活费；隐瞒投注金额和频率。中国彩民中，约 3-5% 存在问题赌博行为。如发现自己或家人出现上述信号，建议立即咨询心理援助热线。许多地区已建立彩票成瘾援助机制。

### 理性彩民的建议

如果仍想玩彩票（作为娱乐而非投资），以下建议可降低伤害。首先是预算约束：设定月投注上限（如 50 元），绝不超出。其次是随机选号：放弃「冷热分析」等幻想，用工具随机生成。第三是长期认知：明确认识到投注额 72% 不会回来，把这笔钱当作「娱乐消费」。第四是避免追赌：如果周期内失利，绝不突然加倍投注。最后是定期审视：每季度统计投注总额与获奖总额，如果总体亏超预算，立即停止。许多国家的彩票官网上都有「理性赌博指南」「成瘾热线」。中国彩票也逐步推进这方面教育。

### 常见问题

**Q: 有没有可能通过分析历史数据预测下期开奖？**

在数学上不可能。彩票抽签是独立事件，历史频率不影响未来概率。任何声称能预测的"大师"都是骗子。

**Q: 合买（多人拼一张）能提高中奖率吗？**

不能提高率，但能分摊成本与奖金。100 个人合买一张 100 元的票，人均 1 元投入，中奖后人均分红。风险和期望值都是线性缩放。

**Q: 彩票机构自己会买彩票吗？**

行业内的共识是：长期从彩票工作的人极少自己买彩票。正式员工都很清楚内部数据和概率真相。

**Q: 大额奖金（如 1 亿）的税收怎么算？**

中国税法：彩票中奖所得个人所得税税率 20%。1 亿奖金需缴 2000 万税，到手 8000 万。这笔税也列入公益金。

**Q: 玩彩票可以作为退休储蓄吗？**

绝对不行。期望值严重为负（72% 亏损率）。即使最保守的定期存款或国债，回报率与安全性也远超彩票。彩票只能作为娱乐。

---

## 计数器在线工具完全指南：库存 / 健身 / 教学打卡

> 从商品盘点、健身计圈到念珠计数，计数器是最简洁的工具。本指南涵盖多场景应用、批量计数技巧、与硬件计数器的对比，让你高效管理每一次计数。

URL: https://xtechtools.com/guides/counter/
发布：2026-04-29 · 更新：2026-04-29

数一数、+1、再数一遍——这个看似原始的行为贯穿人类从古到今的所有工作。古人用竹签、珠子、手指头；现代人有计数器。虽然看似简单，但一个好的计数工具能显著提升效率与准确性，减少人为错误。本指南深度讲解计数器的应用场景、操作技巧、历史演进，以及数字工具相对硬件计数器的优势与局限。无论是库存管理、运动健身还是教学应用，掌握计数的要诀都能事半功倍。

### 计数器的核心应用场景

商业库存盘点是计数器最广泛的应用场景：超市或仓库盘点商品时，员工手持或用工具逐件计数，避免手工记录的遗漏与错误。一个大型超市每月盘点数千种商品，计数准确率直接影响库存成本与财务报表准确性。这不仅关系到企业的利润，更关系到顾客的消费体验。运动与健身场景中，计圈（跑步圈数、游泳往返）、计组数（哑铃卧推做了多少组）、计重复次数（一组俯卧撑 30 个）都需要精确计数。健身房间歇训练（HIIT）需要精确计圈，手工点数容易漏数或分心。教学与培训中，课堂点名、学生举手次数、答题互动频率都可用计数器记录。老师用计数器能专注于讲解而不用一直记录。宗教修行、人群统计等场景也广泛使用。

### 数字工具 vs 硬件计数器对比

硬件计数器（机械或电子）有其独特优势：无需电子设备，续航永久（机械）或很久（电池）；按键反馈强，不易误触；便携小巧，适合高频短时间使用。但数字在线工具的优势更全面：历史保存，每次计数的时间戳、中间数值都记录，便于复查与统计；多设备同步，手机、平板、电脑通用，数据可导出为 CSV 或 JSON；批量操作，一次 +5 +10 不必逐次点击，提升大批量效率 30-50%；统计分析，计数过程的时间分布、平均速率、峰值识别；成本零，用手机就行，不用额外购买硬件；数据安全，存储在本地或云端，不怕丢失或损坏。综合看，短时间小数量用硬件更快；大批量场景，数字工具优势明显。

### 本工具的核心功能与用法

基础计数是最简单的功能：点击 "+1" 按钮或按键盘空格，数值自动递增。支持自定义起始值，方便从任意数字开始计数，如从 100 开始倒数。批量递增功能能显著提升效率：设定批量值（如 5 或 10），一次按钮点击实现多个单位的跳跃。超市盘点 100 件商品时，按 +10 共需 10 次点击，而逐个 +1 需要 100 次。暂停与重置功能允许任意时刻暂停（不清零）继续后续工作，或重置归零重新开始计数。历史时间线工具记录每次计数的时间，可看出计数速率。数据导出功能在计数完成后可导出 CSV，用于后续数据分析或报表生成。多个计数器并行能打开多个浏览器标签。

### 家庭与育儿中的计数器应用

年轻父母发现计数器是管理孩子习惯的神器。点心奖励制是最常见的应用：孩子完成作业 +1、自觉刷牙 +1，达到目标（如 10 个点）就能换一个小奖励。数字反馈比口头表扬更有激励力，因为孩子能直观看到进度和离目标还有多远。行为纠正中，如果孩子顶嘴 +1，当日加倍家务，数字化的因果关系让孩子更易理解因果逻辑和自我管理。习惯养成追踪是长期应用：「连续 30 天锻炼」、「坚持每天读书 20 分钟」，用工具记录天数，孩子看到数字增长会更有成就感和满足感。家务分工中，「你这月做了 15 次家务，弟弟做了 8 次，所以这月零花钱按比例分配」，可视化的数据比模糊印象更公平。研究表明，儿童对数字化反馈的响应优于定性评价。

### 批量计数与时间效率优化

大规模计数场景下，工具的「批量 +5 +10」功能能显著提升效率。假设要盘点 500 件商品：逐个 +1 需要 500 次按键 × 0.5 秒/次 = 250 秒约 4 分钟；批量 +10 需要 50 次按键 × 0.5 秒/次 = 25 秒，再补数 +5 +1 几次约 30 秒总计。时间省 87%。这对库存员工每天要做多轮盘点的情况尤为关键，直接关系到工作效率。进阶用法包括：预设快捷键（如数字键 5、0、1 分别代表 +5、+10、+1）；用语音输入（「加五」「加十」）来计数，解放双手实现免触屏操作；多人分段计数，工具汇总最终数值，支持团队协作。许多工业盘点软件都内置了这些优化。

### 常见问题

**Q: 在线工具计数会不会因网络中断而丢失数据？**

本工具采用浏览器本地存储（LocalStorage），数据保存在设备端，网络中断不影响。关闭浏览器重新打开也能恢复之前的数值。

**Q: 能否设定多个并行计数器（如同时统计进出人数）？**

可以。打开多个浏览器标签，每个标签独立计数。或在同一页面上部署多个计数器实例（如更新版本支持）。

**Q: 计数速度多快才算高效？**

因场景而异。硬件计数器按键反应 0.1-0.3 秒；数字工具触屏约 0.3-0.5 秒；语音输入 1-2 秒但解放双手。批量 +10 对大数量场景最优。

**Q: 怎样避免计数时的遗漏或重复？**

关键是「标记法」——盘点商品时，一次计数的商品要物理移开或贴标签，下次不再重复。口头计数极易遗漏；配合标记法的工具计数准确率 99%+。

**Q: 计数器能用于计时吗（如计秒数或分钟）？**

本工具主要用于计数（离散），不是计时。如需计时功能，本站还有「番茄钟」「倒计时」等专用工具。有些高级计数器兼容计时，但精度不如专业计时器。

---

## SVG 优化完全指南：去冗余 / 美化 / 雪碧图

> SVG 文件常包含编辑器遗留的冗余代码、不必要的节点 ID 和重复路径。本指南覆盖 SVGO 工具原理、本平台内嵌优化、可编辑性与压缩的平衡、CSS 内联 SVG 与雪碧图技巧、Fill 属性继承、前端框架集成和 SEO 最佳实践。

URL: https://xtechtools.com/guides/svg-optimize/
发布：2026-04-29 · 更新：2026-04-29

SVG 是现代网络的矢量图标准，但设计工具导出的 SVG 文件往往包含大量冗余代码——编辑器 metadata、不必要的 transform、重复的 class 定义、未使用的 id 属性。这些冗余代码不仅增加网络传输的字节数，还可能拖累页面加载性能与用户体验。本指南深入讲解如何安全有效地优化 SVG，在保持设计意图的同时实现极致压缩，涵盖 SVGO 工具、本平台内嵌优化、企业级最佳实践与前端框架集成方案。

### 第一章：SVG 冗余代码的成因与影响

当你在 Adobe Illustrator、Figma 或 Sketch 中导出 SVG 时，编辑器会保留许多用于软件内部使用的信息。常见的冗余包括：Illustrator 的 <metadata> 标签与 <defs> 空定义、Figma 导出的层级 ID（layer0、layer1...）、Inkscape 留下的 xmlns 命名空间重复声明、不可见元素（display:none 的 <g> 组）、未使用的渐变与图案定义。一个 512×512 的简单图标，编辑器可能输出 15-25KB，但实际可见内容仅需 2-4KB。这对单个图标影响有限，但当网站加载 50+ 图标时，冗余代码总量可轻松超过 500KB。优化后可减少至 50-100KB，带宽节省 80-90%。移动网络下，这意味着加载时间从 2-3 秒降低到 200-300ms。

### 第二章：SVGO 工具原理与配置

SVGO（SVG Optimizer）是业界标准的 SVG 优化工具，基于 Node.js。其核心原理是通过一系列可配置的插件逐步处理 SVG DOM，包括：removeMetadata（删除 metadata 与注释）、removeDoctype（移除 <!DOCTYPE>）、removeXMLProcInst（移除 XML 声明）、removeComments（清理注释）、removeEmptyContainers（删除空的 <g>、<defs> 等）、convertPathData（简化路径数据，M 10 20 → M10 20，移除冗余小数位）、convertTransform（合并 transform 矩阵）、removeUnknownsAndDefaults（删除浏览器默认值）。通过 .svgo.config.js 可定制插件：禁用某些优化（如 removeIds 可禁用以保留 JavaScript hooks）、配置精度（precision: 2 保留 2 位小数）、whitespace 清理等级。运行 `npx svgo --folder ./icons` 批量优化文件夹内所有 SVG。

### 第三章：xtechtools SVG 优化工具的内嵌策略

本平台 /svg-optimize/ 工具提供浏览器端实时优化，无需命令行或后端。上传 SVG 后，工具加载 SVGO 库到内存，运行完整的优化流程，返回可下载的优化版本与详细的优化报告（删除了哪些元素、压缩比等）。该方案的优势：一是完全客户端执行，上传的文件不经过服务器；二是即时反馈，用户可对比优化前后；三是支持批量上传，单次处理 20+ 文件。工具默认启用所有无损优化，用户也可勾选高级选项（如 removeIds、removeHiddenElems）切换到有损优化，牺牲一定的可编辑性换取更极致的压缩。特别的，工具支持"美化模式"（格式化空白与缩进），便于代码审查或后续编辑。

### 第四章：可编辑性 vs 极致压缩的取舍

并非所有优化都适合所有场景。对于静态资源（品牌 logo、社交分享图），可启用完全无损优化（保留 id、class），便于后续在设计工具中编辑或用 CSS/JavaScript 修改。对于构建时生成的一次性 SVG（动态图表、临时生成的图标），无需保留可编辑性，可启用所有优化包括移除 id、压缩属性名。权衡建议：保留 id 如果该 SVG 会被 JavaScript 引用（如 document.querySelector('#arrow-right')）；保留 class 如果使用 CSS 选择器样式化某些子元素；移除所有 id / class 如果是纯展示 SVG，不需要后续交互修改。对于 Web 字体形式的图标集合（Font Awesome 式），完全压缩是标准做法。

### 第五章：CSS 内联 SVG 与雪碧图技巧

SVG 可直接嵌入 CSS 的 background-image，通过 data URI 形式：background-image: url('data:image/svg+xml;utf8,<svg>...</svg>')。这避免了 HTTP 请求，但嵌入的 SVG 需完全 URL 编码（特殊字符如 < > 转为 %3C %3E）。对于多个小图标，雪碧图（SVG Sprite）更高效：将所有图标放在单个 SVG 文件的 <symbol> 中，通过 <use> 标签按 ID 引用。例如 <use href="sprite.svg#icon-heart" /> 加载 sprite.svg 中 id="icon-heart" 的 symbol。这样单个 HTTP 请求加载整个图标库，浏览器缓存整个 sprite 文件。Tailwind 与 Bootstrap 都采用此方案。结合 CSS 自定义属性可动态改色：<use href="icons.svg#icon" style="color: var(--primary-color)" />（前提是 SVG 内用 currentColor 填充）。

### 第六章：Color 继承与 CurrentColor 模式

SVG 的 fill 与 stroke 属性默认继承 SVG 元素的 CSS color。若 SVG 内部使用 fill="currentColor"，则会采用父元素的 color 值，实现动态着色。这在组件式框架中极其强大：定义一个通用的 Icon 组件，传入 className="text-red-500"，SVG 自动变红无需额外的样式覆盖。但许多设计工具导出的 SVG 都用固定的 fill="#000000" 或 fill="rgb(0,0,0)"。优化时应将这些替换为 fill="currentColor"（前提是图标本身就是单色）。多色图标不适用此方案，需保留各自的 fill 值。检查 SVG 是否使用了 currentColor：在浏览器 DevTools 中改变父元素的 color，观察 SVG 是否同步变化。

### 第七章：框架集成与 SEO 考量

Vue 与 React 都有专门的 SVG 导入方案。Vue 可用 vue-svg-loader 自动转换 import MyIcon from './icon.svg'；React 中 create-react-app 支持 import { ReactComponent as Logo } from './logo.svg'，直接生成 React 组件无需额外配置。Svelte 则直接支持 {@html svg}。在 SEO 方面，外链 SVG（<img src="logo.svg" alt="..." />）被搜索引擎正常索引，alt 文本用于可访问性；内嵌 SVG（<svg>...</svg> 直接写 HTML）更利于页面加载但增加 HTML 体积；CSS background-image 的 SVG 则不被索引，仅用于装饰。品牌 logo、产品截图等关键内容应使用可索引的形式（外链或内嵌）；界面装饰、loading 动画等可用 background-image。现代 CDN 与构建工具（Vite、Webpack）都内置 SVG 优化中间件，自动对导入的 SVG 运行 SVGO。

### 常见问题

**Q: SVG 优化会影响设计质量吗？**

不会。优化只移除冗余代码与调整数值精度，不改变可见的矢量形状。如果优化后图标看起来模糊或变形，通常是精度设置过低（如 precision: 0），可调整至 precision: 2 或 precision: 3 恢复。建议始终对比优化前后的渲染效果。

**Q: 如何在保留可编辑性的同时优化？**

禁用有损插件：在 SVGO 配置中设 removeIds: { remove: false }、removeHiddenElems: false、removeUnusedNS: false。这样 id 与 class 保留，后续可在设计工具中打开并编辑。通常压缩比会降低至 40-50%（而不是 80-90%），但仍有意义。

**Q: SVG 雪碧图的兼容性如何？**

所有现代浏览器（Chrome、Firefox、Safari、Edge）都完全支持 SVG Sprite 与 <use> 标签。IE 11 也支持，但不支持跨域 SVG 引用（CORS 限制）。移动浏览器兼容性良好。如需极致兼容性，可用 SVG4Everybody 或 Blobify 等 polyfill。

**Q: CurrentColor 在旧浏览器中工作吗？**

是的。currentColor 在 IE 9+ 及所有现代浏览器中都支持。如需支持 IE 8，可提供 fallback fill="#333333"，currentColor 作为降级。

**Q: 如何批量优化成百个 SVG 文件？**

使用 SVGO CLI：npx svgo --folder ./icons --output ./icons-optimized。或集成到 build pipeline：Webpack 的 svgo-loader、Vite 的 vite-svg-loader 都在构建时自动优化。本平台工具支持批量上传，一次可处理 20+ 文件。

---

## 长宽比计算完全指南：视频 / 海报 / 网页设计常用比例

> 长宽比（Aspect Ratio）是设计与视频制作的基础概念。本指南覆盖 16:9 HDTV、4:3 标准、9:16 竖屏、3:2 全画幅、1:1 正方形、21:9 超宽等常见比例，介绍印刷标准、CSS aspect-ratio 属性实现与 Tailwind 工具类使用。

URL: https://xtechtools.com/guides/aspect/
发布：2026-04-29 · 更新：2026-04-29

长宽比（Aspect Ratio）是宽度与高度的比值，用 W:H 表示。这个看似简单的参数影响深远——从 YouTube 视频的 16:9，到 Instagram 帖子的 1:1，再到电影放映的 21:9，每个比例都有其历史渊源与应用场景。网页设计中，正确的长宽比确保响应式图片、视频容器与信息卡片在各种屏幕尺寸上的视觉一致性。本指南详解常见比例的起源、应用场景，以及现代 CSS 与设计工具中的实现方法。

### 第一章：核心长宽比概览与分类

长宽比分为三大类：标准比例（来自工业标准）、电影比例（源自放映技术）、移动比例（针对手机屏幕）。标准比例包括 4:3（旧电视、胶片摄影）、16:9（HDTV、现代电视）、3:2（35mm 单反全画幅、35mm 胶卷标准）。电影比例有 2.39:1 或 21:9（宽银幕电影、IMAX）、1.85:1（美国电影业标准）、1.37:1（学院比例，Orson Welles 时代）。移动与社交比例则包括 9:16（TikTok、YouTube Shorts、Instagram Reels）、1:1（Instagram 帖子、Facebook、Twitter 头图）、16:10（平板电脑、某些笔记本）。理解各比例的起源有助于在正确的场景使用正确的比例——不是所有设计都适合 16:9，某些内容的 9:16 竖屏呈现效果更好。

### 第二章：视频与屏幕的标准比例详解

YouTube 与现代互联网视频采用 16:9 标准（宽度 16 份，高度 9 份），也称 HD（1280×720、1920×1080）。这个比例源自 2005 年 HDTV 标准的普及，取代了旧的 4:3 比例（800×600、1024×768）。4:3 比例至今仍在教育、监控、PowerPoint 演示中使用（纵横比 1.33:1）。3:2 是摄影的黄金标准，35mm 单反相机的原生输出，裁切灵活性强（可裁为 16:9 或 4:3）。而 9:16 竖屏比例近年随短视频爆发而流行，字节系 TikTok、抖音、Instagram Reels 均采用此比例，优化了移动竖屏观看体验。相比之下，电影行业的 21:9 或 2.39:1 是超宽比例，用于大银幕放映，适配影院的宽屏投影，互联网视频很少使用（需加黑边）。选择比例时应考虑内容的最终输出媒介与观众的设备。

### 第三章：印刷与设计的比例标准

印刷行业有久经考验的比例标准。A4 纸张的比例是 297mm × 210mm，化简为 √2:1（约 1.414:1），这个比例来自国际纸张标准 ISO 216，具有唯一的数学性质：对折后仍保持相同比例。B5、A3 等也都遵循此标准。商业名片通常 3.5"×2"（3.5:2 或 1.75:1）。海报设计常用黄金比例 1.618:1（φ Phi），认为最赏心悦目，但在实践中很少严格遵循，设计师多凭审美直觉。网页设计中，头图与 Hero Banner 流行 16:9（全宽视频背景）、2:1（宽敞感）、3:1（超宽 banner）。产品卡片通常 4:3 或 16:9，确保缩略图不会显示不全。若设计的内容需多渠道投放（网页、App、社交），应选择灵活的比例（如 3:2），方便裁切至各平台标准。

### 第四章：CSS Aspect Ratio 属性与响应式实现

CSS 的 aspect-ratio 属性（CSS Containment Module Level 3）允许开发者直接指定元素的宽高比，浏览器自动根据宽度计算高度（或反之）。语法简洁：.video-container { aspect-ratio: 16 / 9; width: 100%; } 浏览器会自动设置 height = width × (9/16)。这完全替代了旧的 padding-bottom 黑魔法（padding-bottom: 56.25% 模拟 16:9），代码更清晰、性能更好。支持计算过程中保持宽高比锁定，防止图片/视频加载时页面抖动（Cumulative Layout Shift）。aspect-ratio 在 Chrome 88+、Firefox 89+、Safari 15+ 原生支持，Edge 基于 Chromium 也支持。对于需兼容旧浏览器的项目，可用 @supports 检测与降级处理。响应式设计中，可对不同断点设置不同的 aspect-ratio：@media (max-width: 768px) { .card { aspect-ratio: 1; } } 在手机上显示为正方形，桌面则 16:9。

### 第五章：Tailwind CSS 长宽比工具类

Tailwind CSS 4.0+ 内置 aspect-ratio 工具类，无需手写 CSS。常用类包括：aspect-auto（默认，不强制比例）、aspect-square（1:1）、aspect-video（16:9）、aspect-[4/3]、aspect-[3/2]、aspect-[16/10] 等。使用示例：<img class="w-full aspect-video" src="..." /> 自动生成 aspect-ratio: 16 / 9，图片自适应宽度同时保持比例。对于自定义比例（如 5:3），可用方括号语法 aspect-[5/3]。特别地，aspect-video 是网页开发最常用的工具类，快速实现响应式视频容器或图片卡片。Tailwind 的好处在于避免手写 CSS 规则，提高开发速度；缺点是增加 HTML 中的 class 名数量。若项目未使用 Tailwind，可直接用原生 CSS aspect-ratio 或 SCSS 混合宏。许多 UI 框架（Material UI、Ant Design）也内置长宽比组件或工具。

### 第六章：响应式图片与图片懒加载的比例管理

响应式图片设计要求在不同设备上显示正确的分辨率，同时保持美观的比例。<picture> 元素可根据媒体查询加载不同的 <source>，并保持一致的 aspect-ratio。例如桌面显示 16:9、手机显示 1:1 的正方形缩略图，可用 CSS 与 aspect-ratio 灵活切换：<picture>
  <source media="(max-width: 768px)" srcset="square.jpg">
  <img src="wide.jpg" class="aspect-video md:aspect-square">
</picture>。图片懒加载库（如 Intersection Observer）应确保 placeholder 元素保持相同的 aspect-ratio，防止加载完成后的布局抖动。CDN 服务（Cloudinary、imgix）支持按 aspect-ratio 自动裁切或填充，减少前端处理复杂性。对于用户上传的图片（头像、产品图），应强制规范化为特定的 aspect-ratio（如 1:1），服务器端做转换裁切，确保一致性。

### 第七章：实战场景与快速决策表

YouTube 视频、在线教学、WebRTC 直播 → 16:9（标准网络视频）。TikTok、Instagram Reels、短视频 → 9:16（竖屏优先）。Twitter、Facebook 社交分享图 → 1.2:1 或自适应（Facebook 推荐 1200×628px，1.91:1）。LinkedIn 文章头图 → 1200×627px（约 1.91:1）。Product Hunt 产品图 → 正方形 1:1 或 4:3（宽敞感）。网页 Hero Banner → 16:9 或 2:1（全宽背景）。电商产品卡片 → 4:3 或 1:1（分类页缩略图通常正方形）。团队头像与头像框 → 1:1（正方形）。A/B 测试 banner → 3:1 或 4:1（超宽，吸引注意力）。Instagram 故事 → 9:16（竖屏，全屏显示）。决策关键：①输出媒介（设备/平台），②观众使用习惯，③内容裁切的灵活性，④团队的快速迭代能力。

### 常见问题

**Q: 为什么 A4 纸是 √2:1 而不是简单的 2:1？**

ISO 216 标准设计 A 系列纸张使得对折后仍保持相同的纵横比。这样 A4 对折得 A5，A5 对折得 A6，比例始终 √2:1。这个数学性质让纸张系列高度通用，无需设计多种模板。√2 ≈ 1.414，接近但不等于 1.5。

**Q: CSS aspect-ratio 在响应式中如何优于 padding-bottom 黑魔法？**

padding-bottom 方案（padding-bottom: 56.25% = 9/16）虽然有效，但依赖 padding 实现，增加元素高度计算复杂性。aspect-ratio 属性专门为此设计，浏览器优化更好，代码语义清晰，支持 @supports 检测。特别是防止布局抖动（CLS），aspect-ratio 在图片加载前就预留空间，padding-bottom 需要手动处理。

**Q: 如何在不同设备上显示不同的长宽比？**

使用 Tailwind 响应式前缀：class="aspect-video md:aspect-square" 在桌面显示 16:9，在平板（768px）上切换为 1:1。或原生 CSS：@media (max-width: 768px) { .card { aspect-ratio: 1; } }。对于 <picture> 元素，配合不同 srcset 加载不同分辨率的图片。

**Q: 一个 1920×1080 的图片实际宽高比是多少？**

1920÷1080 = 1.778，化简为 16:9。可用计算器验证：16÷9 = 1.778。用最大公约数化简：gcd(1920, 1080) = 120，1920÷120=16，1080÷120=9。

**Q: 不同社交平台对长宽比的要求冲突怎么办？**

选择最灵活的比例（通常 3:2 或 4:3）作为主版本，由 CDN 或后端自动裁切至各平台标准。例如拍一张 3:2 的宽图，自动生成 1:1 正方形版（Instagram）与 16:9 版（YouTube），无需重新拍摄。

**Q: 移动应用与网页的长宽比有区别吗？**

有。移动应用需根据设备安全区（iPhone 的 notch 或 Dynamic Island）设计，通常用 9:16 或 19.5:9（全屏无边框）。网页则用视口宽度（viewport）计算，更灵活，可响应式调整。但原则相同——要么全屏，要么限制最大宽度。

---

## CSS 纯样式三角形完全指南：8 方向与渐变三角实战

> CSS border 属性可创建纯代码三角形，无需图片或 SVG。本指南深入讲解 border 三角原理、8 方向写法、颜色与渐变、SVG 对比、应用案例如提示气泡与面包屑分隔符。

URL: https://xtechtools.com/guides/css-triangle/
发布：2026-04-29 · 更新：2026-04-29

CSS border 属性通常用于绘制边框，但通过巧妙的设置透明度与宽度，可以创建纯代码的三角形、菱形等几何图形，无需图片或 SVG 文件。这项技术自 CSS 2.1 时代就存在，至今仍是前端设计师的常用技巧。相比 SVG，CSS 三角形体积极小（仅几十字节），完全响应式，可用 CSS 变量动态调整颜色与大小。本指南从 border 的几何原理出发，深入讲解 8 方向的实现、渐变三角形、以及实战应用场景与性能考虑。

### 第一章：Border 三角形的几何原理

浏览器如何渲染 border？当设置 border 时，浏览器在元素的四条边上各绘制一个梯形（实际是按角度相交的矩形）。关键观察：当元素宽高都为 0 时，四个 border 之间的连接点形成一个菱形，每个边的 border 就是一个等腰直角三角形。例如 width: 0; height: 0; border: 20px solid; 会形成一个 40×40 的菱形，四个三角形分别指向上下左右。将其中三个边设为 transparent，保留一个色值，就得到单色三角形。数学推导：若 border-width 为 W，则三角形的底边长 2W，高也是 W（因为 45 度角的等腰直角三角形）。宽高比例 2W:W = 2:1。改变 border-width 就能改变三角形大小；改变颜色就能改变三角形色值。这就是 CSS 三角形的全部原理。

### 第二章：八方向三角形的实现代码

基础写法（向下的三角形）：
.triangle-down {
  width: 0;
  height: 0;
  border-left: 20px solid transparent;
  border-right: 20px solid transparent;
  border-top: 30px solid #333;
}
为什么可行？左右边框宽 20px 但透明，上边框宽 30px 且不透明（颜色#333）。下边框默认为 transparent。结果是一个向下的三角形。其他七个方向的实现：向上 → border-bottom 有色、border-top transparent；向左 → border-right 有色、border-left transparent；向右 → border-left 有色、border-right transparent；向右上 → border-left 与 border-bottom 有色、border-right 与 border-top transparent；向右下 → border-left 与 border-top 有色、border-right 与 border-bottom transparent；向左下 → border-right 与 border-top 有色、border-left 与 border-bottom transparent；向左上 → border-right 与 border-bottom 有色、border-left 与 border-top transparent。记忆窍门：有色的 border 指向三角形的方向，其他 border 都是 transparent。

### 第三章：宽度与颜色的灵活调整

三角形的尖锐度由 border 宽度的比例决定。若 border-left 与 border-right 宽度相等（都 20px），border-top 宽度大（30px），则三角形顶角尖锐；若 border-top 与 border-bottom 都很大（各 50px），而 border-left 与 border-right 很小（各 5px），则三角形变成平顶、尖底。通过调整比例可生成等腰、等边或等直角三角形。颜色方面，四个 border 可以分别设置颜色（只有有色的 border 可见）。如果需要两色渐变三角形（从蓝渐变到红），border 属性无法做到，需用 linear-gradient（见下一章）。动态调整可用 CSS 变量：--triangle-size: 20px; border-left-width: var(--triangle-size); 然后用 JavaScript 或 CSS 媒体查询改变 --triangle-size，三角形会响应式缩放。这相比预先生成多个 PNG 图片版本，灵活性提升数倍。

### 第四章：线性渐变三角形（Gradient Triangle）

纯 border 三角形只能是单色，但用 linear-gradient 可创建渐变三角形，模拟光影效果或彩虹渐变。基础写法（以向下渐变为例）：
.gradient-triangle {
  width: 0;
  height: 0;
  border-left: 30px solid transparent;
  border-right: 30px solid transparent;
  border-top: 50px solid red;
  background: linear-gradient(to bottom, blue, red);
}
实际上，linear-gradient 渲染在 border-top 的背景上，但效果通常不理想（因为三角形是 border，不是真正的填充区域）。更好的方案是用 ::before 伪元素结合 clip-path：.gradient-triangle::before { content: ''; position: absolute; width: 100px; height: 100px; background: linear-gradient(135deg, blue, red); clip-path: polygon(50% 0%, 0% 100%, 100% 100%); }。这样可以自由组合任意数量的颜色，实现五彩三角形。clip-path 用 polygon() 定义顶点（50% 0% 是上顶，0% 100% 是左下，100% 100% 是右下），浏览器自动填充中间的梯形区域。

### 第五章：SVG 三角形 vs CSS 三角形对比

CSS 三角形的优势：(1) 文件极小，仅几十字节，不需要额外 HTTP 请求；(2) 完全响应式，用 CSS 变量和 calc() 可自适应各种屏幕；(3) 动画流畅，border-width 变化可用 CSS transition，比 SVG 路径动画更轻（Web 目标：保持 60fps）；(4) 兼容性好，IE 6+ 都支持（虽然三角原理从 IE 5 时代就存在）；(5) 可与 CSS Grid/Flexbox 无缝整合。SVG 三角形的优势：(1) 灵活性高，可绘制任意形状的多边形，不限于简单三角；(2) 精确度好，支持子像素渲染（SVG 可指定 viewBox 与精确坐标）；(3) 可添加 stroke、fill-rule 等高级属性；(4) 可嵌入图形效果（滤镜、渐变、遮罩）。实战建议：简单单色三角形用 CSS border（快速、轻量）；复杂多边形、需要高精度或特殊效果则用 SVG。对于提示气泡、小箭头等常见 UI 元素，CSS 三角形足以胜任。

### 第六章：实战案例：提示气泡与面包屑分隔符

提示气泡（Tooltip/Popover）是最常见的 CSS 三角形应用。实现原理：外层是圆角矩形（border-radius），用 ::before 或 ::after 伪元素贴上一个向下的小三角形：
.tooltip {
  position: relative;
  background: #333;
  color: white;
  padding: 10px 15px;
  border-radius: 5px;
  margin-top: 10px;
}
.tooltip::after {
  content: '';
  position: absolute;
  bottom: -10px;
  left: 50%;
  transform: translateX(-50%);
  border-left: 10px solid transparent;
  border-right: 10px solid transparent;
  border-top: 10px solid #333;
}
这样就生成了一个带指针的气泡。改变 ::after 的位置可实现上/下/左/右四种气泡方向。面包屑分隔符则用斜向三角形（向右的三角形）作为分隔符：.breadcrumb-item::after { content: ''; display: inline-block; border-left: 8px solid #ccc; border-top: 8px solid transparent; border-bottom: 8px solid transparent; margin: 0 8px; }。结合 flex 布局，可快速生成可视化的面包屑导航，无需分隔符图片。这两个案例展示了 CSS 三角形在实际 UI 中的强大实用价值。

### 常见问题

**Q: CSS 三角形为什么要设置 width: 0 和 height: 0？**

当元素宽高为 0 时，border 完全暴露出来，四条 border 相交形成菱形。如果元素有内容或宽高不为 0，border 只会包裹元素周围，看不到三角形效果。设置 width/height 为 0 是"裸露" border 的必要条件。

**Q: 如何使 CSS 三角形对应不同的屏幕尺寸？**

用 CSS 变量与媒体查询：--size: 20px; border-left-width: var(--size); @media (max-width: 768px) { --size: 15px; }。或用相对单位：border-left-width: min(20px, 5vw)，三角形会根据视口宽度自动缩放。

**Q: CSS 三角形可以有渐变色吗？**

纯 border 三角形只能单色。要实现渐变，需用 linear-gradient + clip-path 的方案（见第四章）。或保留 border 作框架，内部用 ::before 伪元素填充渐变背景，两者叠加。但相对复杂，通常不如直接用 SVG。

**Q: 如何让 CSS 三角形响应鼠标悬停事件？**

CSS 三角形本身是伪元素或 border，不是真实的 DOM 元素，无法绑定事件。但可以给父元素添加事件监听：.tooltip:hover { opacity: 0.8; }。或用 JavaScript 获取父元素，改变其 data-* 属性，CSS 根据属性选择器改变三角形样式。

**Q: 兼容性如何？旧版 IE 支持 CSS 三角形吗？**

border 三角形在 IE 6+ 都支持。渐变 linear-gradient 在 IE 10+ 支持（IE 9 需 -ms- 前缀）。clip-path 在 IE 中不支持，需用其他方案。整体上，纯 border 三角形是最兼容的 CSS 技巧。

---

## 占位图生成完全指南：picsum / placehold / unsplash 设计稿配图

> 设计稿、原型、组件库 demo、博客文章都需要占位图。本文从应用场景出发，对比 picsum.photos、placehold.co、unsplash 三种服务，讲清楚 URL 参数、随机种子、离线方案与商用授权。

URL: https://xtechtools.com/guides/lorem-image/
发布：2026-04-29 · 更新：2026-04-29

在设计稿评审、前端切图、组件库演示、博客文章写作这些常见场景下，你需要大量真实尺寸的占位图来填充版面。占位图服务提供随机、一致、尺寸灵活的图片 URL，只需改几个参数就能拿到不同效果。本指南讲清楚 picsum.photos、placehold.co、unsplash 三大服务的差异、URL 参数用法、随机种子保持一致性、本地离线生成方案、商用授权政策差异，帮你快速选型并在整个设计开发流程中高效应用。

### 占位图的应用场景

占位图（placeholder image）的最大价值在于快速验证布局，而不用等设计师切图。主要场景包括：

- **设计稿评审**：UI 设计师用实际尺寸的占位图排版，看清楚间距、字体、配色搭配，而不是用「图片」文本框占位。
- **前端切图开发**：HTML/CSS 还没有真实图片，用占位图先完成样式调试，后续换成业务图片链接。
- **组件库 demo**：展示 Avatar、Card、Gallery 等组件时，占位图让 demo 看起来更逼真，不需要配置真实图片。
- **博客文章**：文章标题图、装饰图需要临时填充，占位图生成工具秒出。
- **响应式设计验证**：用不同尺寸的占位图（手机、平板、桌面），快速检查断点和布局。
- **A/B 测试原型**：快速做出多个版本原型对比用户反馈，占位图省去了 UI 设计时间。

### picsum.photos vs placehold.co vs unsplash 对比

三种服务各有侧重：

**picsum.photos**
- 优点：内容丰富（基于 Lorem Picsum 库，几千张真实照片）、快速、支持 WebP。
- URL 参数简单：`https://picsum.photos/800/600` 生成 800x600 的随机图片。
- 支持随机种子：`?random=固定值` 让相同 seed 总是返回同一张。
- 缺点：不支持高级滤镜，CDN 在国外（国内访问可能较慢）。
- 适用：设计稿、前端开发、组件库 demo。

**placehold.co**
- 优点：极简、快速、支持自定义背景色和文字。
- URL 参数：`https://placehold.co/800x600?text=Loading&bg=3498db&fg=fff` 可写文字和颜色。
- 缺点：图片是纯色填充 + 文字，不如真实照片逼真。
- 适用：快速原型、概念验证、需要标签的占位符。

**unsplash**
- 优点：高质量真实摄影图片，品质最高。
- API 免费但有频率限制（50 req/hr 无认证）；需注册获得 access_key 以提高配额。
- URL 参数丰富：支持搜索关键词、尺寸、滤镜（模糊、灰度）。
- 商用授权：Unsplash License（完全免费商用，甚至不需署名，但建议注明出处）。
- 缺点：可能因为某次热门活动被 ban IP；国内访问不稳定。
- 适用：博客封面、营销站点、对图片质量要求高的场景。

### URL 参数详解与实战

**picsum.photos 常用参数**

```
https://picsum.photos/800/600                        # 随机 800x600 照片
https://picsum.photos/800/600?random=42              # seed=42，每次相同
https://picsum.photos/800/600?grayscale              # 灰度版
https://picsum.photos/800/600?blur=5                 # 模糊（1-10）
https://picsum.photos/800/600?random=42&grayscale   # 组合参数
```

**placehold.co 常用参数**

```
https://placehold.co/800x600                         # 默认灰色
https://placehold.co/800x600?text=Login              # 添加文字
https://placehold.co/800x600?bg=FF6B6B&fg=FFF        # 背景色 + 文字色
https://placehold.co/800x600/FF6B6B/FFF?text=Image  # 路径式参数
```

**unsplash API 用法**

```
# 随机图片（需 access_key，在 unsplash.com 注册获得）
https://api.unsplash.com/photos/random?client_id=YOUR_ACCESS_KEY&w=800&h=600

# 搜索特定关键词
https://api.unsplash.com/photos/random?client_id=YOUR_ACCESS_KEY&query=mountain&w=800&h=600

# Source URL 更简洁（但需小心被限速）
https://source.unsplash.com/800x600/?mountain
```

**实战建议**：用 picsum 做快速原型（速度快、无限制），设计定稿后如果要高端外观就换 unsplash。

### 随机种子让占位图保持一致

picsum.photos 的随机种子机制特别有用：给同一 URL 加 `?random=固定值`，它就会每次返回同一张图片。

这对协作设计很有帮助。例如：

- 设计稿中 10 个 Card 组件，用 `picsum.photos/300/200?random=1` 到 `random=10` 分别设置，这样每个 Card 都有不同图片，但刷新页面后结构一致，便于评审。
- 前端开发时，后端接口还没上线，用 picsum 生成的占位图 URL 存在 mock 数据里，保证测试数据多样性。
- 组件库文档生成时，用 seed 让每次生成的组件 showcase 都相同，方便版本对比。

参数 `random=1` 到 `random=100`（或任意整数）都支持，种子越大不影响性能。

### 本地占位图 vs 远程加载

**远程加载（CDN 服务）**

优点：
- URL 参数灵活，临时改尺寸无需重新生成。
- 不占用本地磁盘，省存储。
- 多人协作时占位图链接一致，便于版本管理。

缺点：
- 依赖网络，离线开发受限。
- 国外 CDN 在中国可能较慢或不稳定。
- picsum / unsplash 可能因流量被限流。

**本地占位图生成**

工具推荐：
- 命令行：`ImageMagick`（`convert -size 800x600 xc:lightgray output.png`）
- Node.js：`jimp`、`sharp` 库生成批量占位图。
- 在线工具：本站 lorem-image 工具（✓ 介绍一下，实际无需离线验证）。

本地生成适合：
- 批量生成几百张占位图供仓库版控（设计稿资源）。
- 完全离线开发环境（如飞机上、无网络工作）。
- 对性能敏感的项目（避免外部 HTTP 请求）。

**折中方案**：开发时用 CDN 占位图快速迭代，设计定稿前本地生成高质量占位图做最终检查。

### 商用授权与免费政策

占位图服务的授权差异很大，使用前要确认：

**picsum.photos**
- 基于 Lorem Picsum（来自 Unsplash 和 Pexels）
- Unsplash License：完全免费商用，不需署名（建议注明出处）
- 可用于任何项目：广告、销售、商业网站
- 无需付费升级

**placehold.co**
- 纯色占位符，自己生成，无版权问题
- 可自由使用于任何项目
- 完全免费

**unsplash**
- Unsplash License：同 picsum
- 商业用途：完全允许（相机品牌的广告里用 unsplash 摄影作品都合法）
- 限制：不能把 unsplash 当成照片竞品出售（比如卖"高清壁纸"集合，却全是 unsplash 的）
- 频率限制：无认证 50 req/hr；有 API key 后 5000 req/hr

**关键点**：这三个服务都支持商用，但 unsplash 被转卖内容的风险最高（因为质量最好）。如果你是商业网站，建议用自己或团队拍摄的照片，或购买正版库（Getty Images、Shutterstock）。占位图工具只适合开发和原型阶段。

### 常见问题

**Q: 设计稿里用了 picsum 占位图，上线前要换成真实图片吗？**

是的。设计稿和前端开发用占位图快速验证布局，但生产环境必须替换为业务图片（用户头像、商品图等）。占位图只是开发工具，不应该上线。

**Q: picsum 的图片可以商用吗？**

可以。picsum 基于 Unsplash License，允许免费商用。但要注意，占位图最终也要被业务图片替换，不适合直接当成产品图用。

**Q: 如果 unsplash 被限流了怎么办？**

注册 unsplash.com 账号，生成 access_key，将频率限制从 50/hr 提升到 5000/hr。如果仍然不够，可以购买专业图库（Getty、Shutterstock）或上线前改用自己的图片。

**Q: 国内访问 picsum 和 unsplash 很慢，有替代方案吗？**

可以试试国内图床服务（如七牛云、阿里云 OSS），或本地用 ImageMagick/Node.js 脚本批量生成占位图后上传 CDN。对于设计稿协作，用本地生成的占位图存入仓库也很实用。

**Q: 占位图的尺寸有限制吗？**

没有明显限制。picsum.photos 支持任意宽高（如 10000x10000），但生成时间会增加。placehold.co 同理。实际使用建议不超过 4000x4000 以保持加载速度。

**Q: 能生成特定比例（如 16:9、4:3）的占位图吗？**

完全可以。直接指定尺寸即可，如 16:9 比例就用 1600x900、3200x1800 等。picsum.photos 和 placehold.co 都支持任意宽高组合，无需预设。

---

## 快速阅读训练完全指南：WPM 提升 / RSVP 技术 / 应用边界

> 快速阅读的认知科学基础（眼跳 saccade vs 注视 fixation）、RSVP 单词逐个闪现、WPM 速度阶梯、内容理解力衰减、不适合场景，以及配合实体书的子声化抑制训练。

URL: https://xtechtools.com/guides/speed-read/
发布：2026-04-29 · 更新：2026-04-29

普通人阅读速度 200-300 WPM，经过科学训练可达 500-800 WPM。但快速阅读的本质是眼睛运动方式的优化，不是大脑处理能力的跃升。本指南从眼球追踪的生物学基础、RSVP 单词逐个闪现技术、WPM 速度阶梯、理解力衰减规律入手，讲清楚快速阅读的认知科学真相、能提升多少百分比、什么场景最适用、什么场景必须慢读、什么情况根本不适合，以及如何用指尖滑行、背景音法等科学训练技巧突破阅读瓶颈并长期保持效果。

### 快速阅读的认知科学基础

阅读不是眼睛从左到右的平滑扫描，而是一系列离散的眼球运动。理解这一点是优化阅读速度的起点。

**Saccade（眼跳）**：眼球迅速从一个位置移到另一个位置，这是阅读的主要运动模式。

**Fixation（注视）**：眼睛停留在某个位置以获取信息，大约 200-250 毫秒。一次注视能识别 1-2 个词。

**Regression（回视）**：眼睛向后回跳，通常是因为理解困难或需要再次确认。新手阅读时回视频率高。

**Peripheral Vision（周边视觉）**：人在注视某点时，周边的宽范围区域也在接收信息。快速阅读训练的目的就是扩大有效的周边视觉范围，使一次注视能「看到」更多词。

普通阅读时，回视频率约 10-15%（每读 10 个词就回视一次）。快速阅读训练通过减少回视和扩大注视范围来提速。

### RSVP 快速序列视觉呈现技术

RSVP（Rapid Serial Visual Presentation，快速序列视觉呈现）是快速阅读最核心的技术，也是本站 speed-read 工具采用的方式。

**原理**：把文字逐个闪现在屏幕中央，每个词停留 100-300 毫秒（取决于 WPM 目标），用户眼睛固定在屏幕中央，不需要眼球移动。

**优点**：
- 完全消除眼跳和回视的时间损耗，理论上能达到更高 WPM。
- 训练周边视觉。
- 对 ADHD 患者有帮助（固定焦点减少分心）。

**缺点**：
- 与自然阅读差异很大，训练成果不容易迁移到纸质书或网页。
- 长时间盯屏容易眼疲劳。
- 对复杂排版（图表、代码）无效。

**实战用法**：用 RSVP 训练短文章（新闻、博客），快速扫获大意；回到自然阅读处理需要深思的内容。不适合全书用 RSVP。

### WPM 速度阶梯与理解力衰减

WPM 从低到高的阶梯，以及对应的理解力预期：

**200-300 WPM（普通阅读）**
- 这是大多数人的舒适区，理解力 80-90%。
- 能处理需要思考的内容：技术文章、学术论文、法律文件。

**400-500 WPM（轻度加速）**
- 大多数培训课程的目标。
- 理解力下降到 60-75%，适合阅读新闻、简报。
- 容易出现「读过了但没记住」的现象。

**600-800 WPM（高速阅读）**
- 需要训练 3-6 个月才能稳定达到。
- 理解力 40-60%，主要适合扫描（scanning）而非阅读（reading）。
- 适合浏览文章标题、段落首句快速定位信息。

**1000+ WPM（声称的极限速读）**
- 科学证据有限。很多研究认为这是夸大。
- 即使达到，理解力往往低于 30%，实用性可疑。
- 不推荐以此为目标。

**关键认识**：WPM 和理解力之间存在线性衰减关系，不能鱼与熊掌兼得。选择适合任务的速度比盲目加速更重要。

### 不适合快速阅读的场景

快速阅读是加速工具，但有明确的应用边界。以下场景不推荐用：

**技术文档与代码**
- 代码本身需要逐行理解，快速阅读会遗漏关键细节。
- 错过一个变量名、一个循环条件就会导致 bug。
- 应该用 400-500 WPM 的自然阅读。

**法律合同与财务条款**
- 一个词的差异可能涉及几十万的法律责任。
- 「保险不赔」和「保险赔」的理解错误代价巨大。
- 必须逐词仔细阅读，快速阅读不适用。

**诗歌与文学**
- 美文的魅力在于措辞的精妙、韵脚的和谐。
- 快速阅读会完全摧毁这些特质。
- 诗歌应该慢读、反复读、朗读。

**学习新概念的第一遍**
- 当大脑对内容陌生时，快速阅读会导致知识碎片化。
- 应该先用 200-300 WPM 的普通速度逐句消化，理解后再用快速阅读复习。

**需要记笔记的内容**
- 边做笔记边阅读必然降速，与快速阅读冲突。
- 应该先快速扫描获得大局，再逐段深读做笔记。

**最佳实践**：新闻、简报、总结性文章用快速阅读；技术、法律、艺术内容用自然阅读。

### 配合实体书的子声化抑制训练

快速阅读的另一个技巧是抑制「子声化」（subvocalization）——即阅读时脑子里默念文字的习惯。

**子声化的影响**
- 子声化速度约 150 WPM，这成为了自然阅读的天花板。
- 即使不出声，默念过程也会占用认知资源。

**抑制子声化的训练方法**
1. **指尖滑行法**：用手指在纸上划过文字，迫使眼睛跟随，大脑没时间默念。
2. **背景音法**：一边阅读一边听音乐或白噪音，占用语言处理通道，减少子声化。
3. **口语法**：一边阅读一边反复说「啦啦啦」或「巴巴巴」，干扰脑内默念。
4. **意象法**：强制转换思维方式，从语言转向图像和概念理解（看图表时自然用这种方式）。

**实体书训练方案**
- 第一周：正常阅读，计算基线 WPM。
- 第二周：每天 15 分钟用指尖滑行法，尝试不默念。
- 第三周：加入背景音，同时用滑行法。
- 第四周：减少滑行，但保持背景音，依靠习惯抑制子声化。

注意：完全消除子声化几乎不可能，目标是显著减少。即使成功抑制，理解力也会下降，需要在舒适度和速度间找到平衡。

### 常见问题

**Q: 快速阅读真的能提升 WPM 3 倍吗？**

能提升，但有上限。普通人从 250 WPM 提升到 500-600 WPM 是可行的（2-2.4 倍）。但如果声称提升到 750+ WPM，理解力会严重下降（低于 50%），实用性有限。超过 1000 WPM 的说法多是营销夸大。

**Q: RSVP 训练的成果能迁移到纸质阅读吗？**

只能部分迁移。RSVP 训练主要优化的是减少回视和扩大周边视觉，这些技能有效；但 RSVP 消除了眼球移动，而纸质阅读仍需眼跳，所以 RSVP 达到的 WPM 不能直接套到书本上。建议 RSVP 提速到 500 WPM 后，再用指尖滑行法在纸质书上巩固。

**Q: 快速阅读会不会让人遗忘得更快？**

会。低理解力意味着信息编码不深，遗忘速度当然快。如果内容需要长期记忆，应该用 300-400 WPM 的速度配合笔记，而不是盲目加速。

**Q: 子声化能完全消除吗？**

基本不能。虽然可以用技巧显著减少，但对大多数人来说，完全消除子声化需要极强的意志力，而且效果有限。建议以减少为目标，不必追求完全消除。

**Q: 在线 RSVP 工具和本地速读软件哪个好？**

在线工具（如本站 speed-read）优点是简洁、无需下载、支持多种格式；缺点是需要网络。本地软件如 Spritz、SmartReader 功能更多（如暂停、调速），但学习成本高。建议先用在线工具试试，再决定是否投入专业软件。

**Q: 如果阅读后完全记不住内容怎么办？**

说明速度太快，理解力不足。建议降速 100-200 WPM 到舒适区（能记住主要观点），或改用两遍法：第一遍快速扫描获得大意，第二遍用自然速度深读关键段落。

---

## 文本对比 diff 完全指南：行级 / 词级 / 三方合并

> 经典 diff 算法（Myers 1986 LCS 最长公共子序列）、统一 diff 格式、字符级 vs 词级 vs 行级差异、两人协作版本对比、HTML 渲染红绿对照、三方合并冲突。

URL: https://xtechtools.com/guides/diff/
发布：2026-04-29 · 更新：2026-04-29

Diff（文本差异对比）是版本管理、代码审查、文档追踪的基础工具。从 Git commit 到 GitHub Pull Request，从法律合同到论文修订，每处都需要快速定位两个版本的差异在哪。但 diff 看起来简单，背后涉及复杂的算法选择：行级还是词级？字符级粒度如何权衡？三方合并冲突怎么解决？本指南讲清楚 Myers 1986 算法原理、统一 diff 格式、多粒度对比应用、Git 集成关系、冲突解决策略全套知识。

### 经典 diff 算法：Myers 1986

Diff 问题的本质是找两个文本的「最长公共子序列」（LCS, Longest Common Subsequence），然后推断出编辑操作（增、删、改）。最著名的高效算法是 1986 年 Eugene Myers 提出的。

**LCS 的思想**

文本 A："cat" → 文本 B："car"

最长公共子序列是 "ca"（2 个字符），说明第 3 个字符不同。从这个差异可以推断：删除 "t"，插入 "r"。

**Myers 算法的优势**
- 时间复杂度 O((N+M)*D)，其中 N、M 是两文本长度，D 是编辑距离。当差异少时快速。
- 产生更「直观」的 diff 结果：优先找最小变化集。
- Git、GNU diff、很多在线 diff 工具都用这个算法或其变种。

**算法的限制**
- 无法理解「语义」。改变变量名、重新排列函数顺序，算法只看到字符层面的变化。
- 对某些格式（如 JSON、XML）效果不如专用解析器。

**实用认识**：不需要理解算法细节，但要知道：diff 是基于「最小编辑操作」的启发式匹配，不是完美的「语义理解」。

### 统一 diff 格式（Unified Diff）

Unified diff 是最通用的 diff 格式，由 GNU diff 推广，成为了事实标准。

**格式示例**

```
--- a/file.txt
+++ b/file.txt
@@ -1,5 +1,6 @@
 line 1
 line 2
-line 3 old
+line 3 new
+line 3.5 inserted
 line 4
 line 5
```

**字段说明**
- `---` a/file.txt：源文件标记
- `+++` b/file.txt：目标文件标记
- `@@ -1,5 +1,6 @@`：修改范围（源文件第 1 行起 5 行，目标文件第 1 行起 6 行）
- ` line`（行首空格）：不变行
- `-line old`：删除行
- `+line new`：新增行

**优点**
- 紧凑（相比 side-by-side 节省空间）。
- 包含上下文（默认前后各 3 行），便于人工审查。
- 大多数工具都支持导入导出。

**缺点**
- 删除和新增分开显示，对于整行替换的场景不如红绿对照直观。
- 对二进制文件无效。

### 字符级 vs 词级 vs 行级对比

同一个差异，在不同粒度下呈现方式完全不同。选择合适的粒度至关重要。

**行级对比（Line-based）**

例如改变一行的一个变量名：

```
-const userName = "Alice";
+const username = "Alice";
```

整行都被标记为删除 + 新增，虽然只改了一个字符。行级对比是 Git diff 的默认模式，优点是：
- 简单、快速。
- 对代码改动够用（函数、块级修改）。
- 大文件处理高效。

**词级对比（Word-based）**

Git 提供 `--word-diff` 选项：

```
const user{name→ username} = "Alice";
```

高亮显示单词级的替换，更直观。适合：
- 文档修订（论文、合同）。
- 变量重命名（看清楚变了什么）。
- 需要高精度审查的代码。

**字符级对比（Character-based）**

最细粒度，逐字符对比：

```
const user[nameusername] = "Alice";
```

某些在线 diff 工具（如本站 diff 工具）支持。优点：
- 对单词拼写修正特别有用。
- 对配置文件的细微改动一目了然。

缺点：
- 可能过度细粒度（如 HTML 标签变化显示得很碎）。
- 本站工具提供三种粒度切换。

**选择建议**：代码默认行级；文档改动用词级；配置文件和数据用字符级。

### 两人协作的版本对比与 Git diff

在团队协作中，Git diff 是最标准的版本对比工具。本站 diff 工具的差异和相似：

**本站 diff 工具的优势**
- 在线粘贴，无需 Git 命令行。
- 支持多种粒度（行/词/字符）切换。
- 实时对比，无延迟。
- 清晰的红绿 HTML 渲染。
- 支持大文本（某些场景超过 Git 的性能）。

**本站工具的局限**
- 无上下文（Git log、commit 信息）。
- 无法追踪文件移动、重命名。
- 不支持二进制 diff。
- 只比对内容，不涉及版本管理逻辑。

**Git diff 的优势**
- 集成整个版本历史。
- `git diff HEAD~1` 看前一次 commit；`git diff branch1..branch2` 看分支差异。
- 支持 patch 应用和分阶段提交。
- 配合 `--stat` 显示改动统计，`--word-diff` 词级对比。

**实战选择**
- **快速对比临时文本**（如两份 API 响应、两个配置版本）：用本站工具。
- **代码审查和版本历史追踪**：用 Git diff 和 GitHub PR。
- **法律合同、论文修订稿的精细对比**：用词级本站工具或 Word Track Changes。

互补关系，不是竞争。

### 三方合并与冲突解决

当两个分支都修改了同一文件时，需要「三方合并」（three-way merge）来自动尽量地合并，剩余冲突由人工解决。

**三方合并的逻辑**

假设 base（合并基点）、ours（我的版本）、theirs（他人版本）三个版本：

```
base:    "Hello World"
ours:    "Hello Bob"
theirs:  "Hi World"
```

Git 会分析：
- "Hello" vs "Hi"：第一个词在 theirs 改了。
- "World" vs "Bob"：第二个词在 ours 改了。
- 两处改动互不影响，Git 可以自动合并为 "Hi Bob"。

**冲突的情况**

```
base:    "Hello World"
ours:    "Hello Bob"
theirs:  "Hello Alice"
```

两个版本都改了第二个词，Git 无法决定该选哪个，标记为冲突：

```
<<<<<<<< HEAD
Hello Bob
========
Hello Alice
>>>>>>>> feature-branch
```

**冲突解决策略**
1. **接受当前变更**（ours）：保留我的版本，丢弃他人的。
2. **接受传入变更**（theirs）：保留他人的，丢弃我的。
3. **合并两者**：如果能有意义地结合，如："Hello Bob and Alice"。
4. **手动编辑**：选择代码片段的最佳组合，或重写。

现代 IDE（VS Code、JetBrains）提供可视化的冲突编辑器，比命令行舒适。

**最佳实践**
- 频繁 rebase 或 merge，避免分支偏离太远。
- 分支粒度要小（一个功能一个分支）。
- 在团队中约定：谁负责解决这个文件的冲突。
- 冲突解决后务必本地测试（compile + test），确保合并逻辑正确。

### 常见问题

**Q: Diff 工具生成的结果为什么有时候看起来不合理？**

因为 diff 是基于行级的最小编辑距离算法，不理解代码语义。比如把 5 行函数挪到另一处，diff 会显示删除 5 行 + 添加 5 行。如果想看结构性变化，用 IDE 的「代码导航」功能或 AST diff 工具（如 comby）。

**Q: 本站 diff 工具和 git diff 可以互换吗？**

不能。本工具适合快速对比两个文本片段；git diff 适合版本历史和分支对比。如果需要完整的版本追踪和 log，必须用 Git。

**Q: 词级对比和行级对比哪个更准确？**

都不是「更准确」，而是粒度不同。词级看得更细，但可能过度细分；行级简洁但丢失细节。选择应该基于使用场景，而不是粒度多少。

**Q: 三方合并失败了怎么办？**

说明 Git 无法自动合并，需要人工干预。用 IDE 或 `git mergetool` 打开冲突编辑器，选择保留哪部分代码。合并后一定要编译 + 测试，确保功能正确。

**Q: 能对比两个很大的文件吗？**

理论上可以，但取决于工具的内存和算法。本站工具支持几 MB 的文本；超过这个量建议用 Git 的 `--stat` 看改动统计，或分块对比。

**Q: 有办法让 diff 忽略空白符或注释吗？**

Git 支持 `-w` 选项忽略所有空白，`-b` 忽略空白变化。本工具暂不支持，但可以手动删除不关心的行后再对比。

---

## ASCII 码表完整解读：0-127 控制字符、可打印字符与历史

> ASCII 是现代计算机的基础字符编码，从 1963 年 ANSI 标准到如今依然支撑互联网的每一次通信。本文详解 128 个字符的来源、用途、为什么'A'=65 而不是其他，以及为什么 HTTP 头只能用 ASCII。

URL: https://xtechtools.com/guides/ascii/
发布：2026-04-29 · 更新：2026-04-29

ASCII（American Standard Code for Information Interchange）是计算机世界的基础字母表。从 1963 年 ANSI 发布至今，这个 128 个字符的编码表已嵌入 60 多年软件、网络协议、编程语言的 DNA。当你按下 A 键、写 \n 换行符、看 HTTP 400 Bad Request，背后都是 ASCII 在工作。本指南从历史背景、编码原理、实际应用三个维度，帮你真正理解这 128 个字符及其设计智慧。

### ASCII 的历史与设计原理

1963 年的美国，计算机还很稀有，数据通信主要依赖电传打字机（Teletype）。这些机器通过电信线路一次传输一个字符，每个字符用 7 比特表示（2^7 = 128 种组合）。ANSI 当时的设计者面临一个关键问题：如何用最少的位数覆盖英文字母、数字、标点，同时留足空间给控制命令（例如换行、退格）。他们的解决方案是：0-31 号位置留给控制字符，32-126 号位置放可打印字符，127 号位置给 DEL（删除）键。这个决策的优雅之处在于它完全兼容当时的硬件，也足够简洁，以至于 60 多年后的今天，UTF-8 编码仍然把 ASCII 的前 128 个码点（U+0000 到 U+007F）直接沿用。

### 控制字符（0-31 + 127）：看不见但不可或缺

控制字符是 ASCII 的秘密武器。你看不到它们，但每一个都对应一条指令。最常用的几个：

- **0 (NUL)**：空字符，字符串终止符（C 语言的 \0）。
- **7 (BEL)**：蜂鸣，发出警告声（"bell" 的来源）。
- **8 (BS)**：退格（Backspace），删除前一个字符。
- **9 (TAB)**：制表符 \t，缩进 8 个或 4 个空格。
- **10 (LF)**：换行符 \n，光标移到下一行行首。
- **13 (CR)**：回车 \r，光标移到当前行行首。
- **27 (ESC)**：转义，开启特殊模式（ANSI 转义序列的起点）。
- **127 (DEL)**：删除，清除前面的字符。

最容易混淆的是 CR（\r）和 LF（\n）。在 Windows 上，换行是 CR+LF（\r\n）；Unix/Linux 只用 LF（\n）；Mac 老系统用 CR。这个历史遗留问题至今仍在困扰开发者。

### 可打印字符（32-126）：字母、数字、符号

32 号是空格，126 号是波浪号 ~，中间夹着英文大小写字母、数字 0-9、以及 33 个标点符号。设计者非常聪慧地利用了大小写字母的二进制差异：'A' = 65 = 01000001，'a' = 97 = 01100001，它们只差第 6 位（数值 32），这意味着只需翻转一个比特就能在大小写间切换。这种设计让老旧的位运算硬件能高效处理大小写转换，到现在写出的代码还是这样：`c | 0x20` 快速转小写。数字符号 0-9 也有巧妙设计：'0' = 48 = 00110000，'9' = 57 = 00111001，它们的高两位都是 0011，这样只要取低 4 位就是数字本身，BCD 码的本质。这种对位运算的优化奠定了 ASCII 的长寿基因。

### Extended ASCII 与 ISO 8859：为什么编码这么乱

ASCII 只有 128 个字符，对英语来说足够，但要表示法语的 é、德语的 ü、中文汉字，需要更多空间。于是出现了 Extended ASCII（扩展 ASCII，128-255），以及后来的 ISO 8859 家族（ISO 8859-1 西欧、ISO 8859-5 西里尔字母、ISO 8859-6 阿拉伯语等）。这些都是 8 比特编码，向后兼容 ASCII 的前 128 个字符。但问题是没人能统一：Windows 用 CP1252（Windows-1252）、Unix 用 ISO 8859-1（拉丁 1）、Mac 用 MacRoman。同一个 200 号字符在不同编码下是完全不同的符号。例如 200 在 CP1252 是 È，在 ISO 8859-1 是 È，在 MacRoman 却是 Ë。这造成了臭名昭著的「乱码地狱」。直到 Unicode 和 UTF-8 的出现，才打破了这个僵局。UTF-8 仍然把 ASCII 的 128 个字符保持不变，但用变长编码容纳了全世界所有字符。

### ASCII 在 HTTP / 编程语言 / 正则表达式中的应用

HTTP 请求和响应头（Request/Response Headers）只能包含 ASCII 字符。这是 HTTP/1.1 规范的硬约束。假设你要在 HTTP 头里传递中文，必须先用 URL 编码（%E4%B8%AD）或 Base64，浏览器和服务器才能安全交互。这就是为什么浏览器发起 `GET /search?q=中文` 时，它会自动转成 `GET /search?q=%E4%B8%AD%E6%96%87`。同样，在编程语言里，字符串转义序列也绑定到 ASCII：\n（10）、\t（9）、\0（0）、\'（39）都是 ASCII 控制字符或可打印字符的编号。正则表达式的 \d、\s、\w 也都是对 ASCII 字符范围的抽象定义（数字、空白、单词字符）。即便在 Python 3 这样完全 Unicode 化的语言里，ASCII 仍然是最优化的路径。

### 如何查询和使用 ASCII 码表

本站「ASCII 码表」工具提供完整的 128 个字符清单，包括十进制、十六进制、八进制编号，以及控制字符的名称和含义。双向查询功能让你快速定位任何字符的编码：

1. 在左侧输入一个字符，立即看到它的 ASCII 码（十进制、十六进制、八进制三种表示都有）。
2. 在右侧输入 ASCII 码数值（如 65），看到对应的字符（A）及其含义。
3. 快速查询控制字符 \0 到 \31 的含义、用途与转义符号。

常见用途包括：调试字符串转义（确认 \n 确实是 10、\t 是 9）、验证输入是否纯 ASCII、转换 HTTP 头或二进制协议数据的字符编码、学习位运算时快速验证字符的二进制表示。对于嵌入式开发、网络编程、数据通信特别有用。

### 为什么大小写字母差 32 的细节

大写 A（65）到小写 a（97）的变换正好是 32，这看似巧合实则精妙设计。在十六进制中，32 就是 0x20，也就是二进制的 00100000。大小写字母在二进制表示中只有这一位不同：A 的第 6 位是 0，a 的第 6 位是 1。这样的设计让硬件可以用简单的位操作（按位或 OR、按位异或 XOR）来快速转换大小写，避免了复杂的查表或条件判断。在 1963 年的硬件条件下，这是一个巨大的性能优势。即使在现代编程中，许多底层库仍然利用这个特性来优化字符处理，例如在性能关键的循环中快速转换字符集、判断大小写、或批量处理文本数据流。这充分展现了 ASCII 设计者对计算机体系的深刻理解，以及对未来可能性的远见。

### 常见问题

**Q: 为什么 'A' 是 65 而不是 1？**

ASCII 设计时把 0-31 留给控制字符，所以可打印字符从 32（空格）开始。'A' 作为第一个大写字母，就是 65。这样设计是为了保留足够的命令空间给电传机操作。

**Q: 为什么大小写字母差 32？**

'A'（65）和 'a'（97）的二进制表示只差第 6 位，恰好是 32（2^5）。设计者刻意这样做，让硬件能用一个位运算快速转换大小写，这是对 1963 年有限计算力的聪明优化。

**Q: UTF-8 和 ASCII 什么关系？**

UTF-8 是变长编码，对 ASCII 范围（0-127）内的字符，用 1 字节表示，和 ASCII 完全相同。所以所有 ASCII 文本在 UTF-8 下自动有效，两者天然兼容。

**Q: 为什么 HTTP 头只能 ASCII？**

HTTP 协议在 1990 年代设计时，互联网主要是英文，ASCII 足够用。现在虽然可以用 UTF-8，但 HTTP/1.1 标准仍然限制头部为 ASCII，非 ASCII 字符需要编码。

**Q: DEL（127）为什么在最后而不是最前？**

DEL 原本是删除纸带上的孔，放在最后是因为它最后才被标准化成控制字符。这是历史遗留，现在 Backspace（8）更常用。

---

## 二维码识别完全指南：扫描原理 / 防伪 / 反钓鱼

> 深入二维码的技术原理、本地识别与在线 API 的区别、纠错等级、防伪签名、钓鱼风险识别与 QRCode.js、ZXing 库的应用。

URL: https://xtechtools.com/guides/qr-decode/
发布：2026-04-29 · 更新：2026-04-29

二维码（QR Code）已经成为现实与数字世界的桥梁。从电商发货单、餐厅菜单、WiFi 密码，到疫情防控码，二维码无处不在。但你有没有想过，一个小方块里的黑白格子怎么就能存下整个链接或复杂数据呢？更重要的是，扫描失败、污损、钓鱼风险怎么应对呢？本指南从视觉识别原理、数据编码方式、纠错机制设计、防伪签名验证、到反钓鱼提醒，一步步揭开二维码的识别技术秘密、完整防护防御策略与实际应用场景的奥妙秘密所在。

### 二维码识别的五大步骤：从图像到数据

1. **定位**：扫描仪首先找到三个角落的定位框（Position Detection Pattern）——左上、右上、左下各一个。这三个黑白方块的图案独特，扫描器通过识别这个特征定位整个二维码的方向和位置。

2. **网格化**：确定了四个角后，把二维码分成 21×21 到 177×177 的网格（版本 1-40）。网格越密集，容量越大（最多 2953 字节）。

3. **版本与格式识别**：读取版本信息和格式信息。版本决定网格大小，格式信息包含纠错等级（L/M/Q/H）和掩膜模式，这些是数据解码的前提。

4. **数据提取与去掩膜**：扫描器按特定顺序读取数据区域的黑白点，然后根据掩膜模式（8 种）还原原始数据。掩膜是为了避免大片纯黑或纯白区域导致扫描困难。

5. **纠错与解码**：用 Reed-Solomon 错误纠正码修复扫描过程中的失误（受纠错等级影响），最后用指定的字符集解码成可读文本。即使有 30% 的码字损坏，高纠错等级仍能恢复。

### 纠错等级：为什么要冗余这么多

二维码内部有大量冗余数据，用 Reed-Solomon 码来抵御损坏。四个等级对应不同恢复能力：

- **L（Low）**：能纠正约 7% 的数据损伤。容量最大，适合清晰环境。
- **M（Medium）**：约 15%。平衡容量与容错，最常用。
- **Q（Quartile）**：约 25%。高可靠性。
- **H（High）**：约 30%。极端条件下使用，如印在工业零件、脏污表面。

选错等级的后果很严重。假设你生成的二维码用 L 级，印在包装盒上被磨损了 10%，那就无法扫描。而用 H 级，即使 30% 的码字损坏，扫描器仍能恢复全部数据。代价是容量变小——同样数据量，H 级二维码比 L 级大。

### 本地识别 vs 在线 API：隐私和速度的取舍

**本地识别**（浏览器 JavaScript）：优点是隐私安全，图像不上传到任何服务器；离线可用；实时反馈无网络延迟。缺点是识别库体积大（ZXing 编译到 JS 后约 200KB），复杂二维码识别速度可能慢于服务器。技术包括 ZXing（零依赖 JavaScript 版）、OpenCV.js、html5-qrcode 库。

**在线 API**（发送到服务器）：优点是识别准确率高；支持复杂场景（畸变、模糊、部分遮挡）；库体积小。缺点是隐私风险（图像上传）；需要网络；服务稳定性依赖供应商。技术包括 Google Vision API、Cloudflare Workers API、OpenCV 服务端。

**建议**：钱包截图、身份证、商业机密相关的二维码必须本地识别；普通场景可用在线 API 换取更高准确率。

### 防伪二维码：签名与验证机制

普通二维码没有防伪机制。任何人都能生成看起来完全相同的二维码，指向恶意链接。防伪的核心是**数字签名**。完整过程是：（1）原厂颁发私钥给授权的二维码生成者（如包装厂、物流商）。（2）签名：把二维码的真实数据（商品 ID、序列号、生产日期）用私钥签名，得到一个短的加密哈希值，追加到二维码中。（3）扫描验证：消费者扫码后，系统用原厂公钥验证签名。如果签名匹配，说明数据未被篡改且确来自原厂；如果不匹配或缺失，说明是山寨货。真实例子：茅台酒的防伪二维码，扫描后直接连到官方验证服务器，系统同时验证签名合法性和序列号的生产记录关联性。假酒的二维码要么根本没有有效签名，要么签名验证失败，要么指向钓鱼网站。

### 反钓鱼提醒：你真的要扫那个二维码吗

二维码的风险在于**隐蔽性**：你看不到链接，直到扫描后才知道去哪。攻击者利用这点传播恶意软件、钓鱼网站、勒索软件。防护建议：

1. **问信息来源**：如果二维码来自陌生人、地摊、停车场的小纸条，99% 概率有问题。
2. **不扫来路不明的码**：特别是停车费、共享单车押金相关的码，很容易被替换。
3. **扫码后检查 URL**：一些手机浏览器会显示真实链接，进入前核对是否官方域名。假冒 https://appple.com 或 https://wechat-pay.com 的都是钓鱼。
4. **用专业工具先解码**：本站「二维码识别」工具可以先解码出链接内容，再决定是否真的点击。
5. **二维码扫描仪 vs 内置相机**：用独立的安全扫描器（如 Kaspersky QR Scanner），而不是微信扫一扫。

### 常见问题

**Q: 为什么二维码能在污损、倾斜、甚至部分遮挡的情况下扫描？**

纠错码（Reed-Solomon）能修复高达 30% 的数据损伤，定位框的冗余设计也让识别器能容错视角变形。但极限是有的：如果超过纠错能力或定位框被破坏超过 50%，就无法识别。

**Q: 二维码能存多少信息？**

最大版本（40）的二维码，在 L 纠错级下能存 2953 字节（≈ 2953 个 ASCII 字符或 1000 多个汉字）。但大多数二维码只存 100-200 字节（一个 URL）。版本越高，网格越密，对扫描距离和光线要求越高。

**Q: 能从二维码图片恢复被遮挡的数据吗？**

如果使用了纠错等级 H（30% 容错），遮挡部分在 30% 以内可以恢复。超过这个比例，即使是服务器也无法恢复，因为信息本身就丢失了。

**Q: 手机为什么能瞬间扫描二维码？**

现代手机的 ISP（图像信号处理器）针对二维码做了优化：先找定位框，只解析相关区域，跳过图像的其他部分。ZXing 等库也用贪心算法快速定位，所以识别速度只需 100ms 左右。

**Q: 为什么我生成的二维码有时候扫描失败？**

最常见的三个原因：（1）纠错等级太低（用了 L 级），环境稍脏就无法恢复；（2）版本太大，网格密集到手机摄像头分辨率不足；（3）掩膜选择不当。解决方案：提高纠错等级到 M 或 Q，测试时多角度多光线尝试。

---

## 罗马数字完全指南：I V X L C D M 与 Excel / 编年史应用

> 掌握罗马数字的 7 个基本符号、加法与减法规则、最大表示数 3999、在电影、王朝纪年、Excel 函数中的应用，以及常见误解。

URL: https://xtechtools.com/guides/roman/
发布：2026-04-29 · 更新：2026-04-29

罗马数字是古罗马文明留下的最迷人的遗产之一。从古代碑文、中世纪手稿、到如今电影片头的年份标注，这套不依赖零概念的计数系统已经统治了两千多年。但很多人对罗马数字的理解还停留在「I=1，V=5，X=10」的皮毛，不清楚为什么 4 是 IV 而不是 IIII，为什么最多只能表示 3999，为什么大小写有意义。本指南深入历史、编码规则、应用场景与 Excel 转换技巧，助你完全掌握这套古老又现代的数字系统。

### 7 个基本符号与其起源

罗马数字由 7 个拉丁字母组成，每个代表一个固定数值：

- **I** = 1（来自一根手指 Finger）
- **V** = 5（来自张开的五指 Hand，但只取一半形状）
- **X** = 10（来自两只手指交叉 Cross）
- **L** = 50（来自 Linga，拉丁文「50」的谐音缩写）
- **C** = 100（来自 Centum，拉丁文「100」）
- **D** = 500（来自 Dimidius，意为「一半的 1000」）
- **M** = 1000（来自 Mille，拉丁文「1000」）

这套系统的聪慧在于它用少量符号、通过重复和位置变化表示任意数字。但它缺乏零的概念——罗马人用空白表示零，这也是为什么他们的数学发展后来被阿拉伯数字压倒。

### 加法与减法规则：为什么 4 是 IV 而非 IIII

**加法规则**：相同或递减的符号相加。III = 3，VI = 6，XV = 15。

**减法规则**（最容易出错）：只有特定组合允许减法：

- I 只能放在 V（5）或 X（10）前面：IV = 4，IX = 9。
- X 只能放在 L（50）或 C（100）前面：XL = 40，XC = 90。
- C 只能放在 D（500）或 M（1000）前面：CD = 400，CM = 900。

**为什么是这样？** 设计原则是：小符号只能出现在比它大「10 倍以内」的符号前面。I（1）可以放在 V（5）或 X（10）前，但不能放在 L 或 C 前。

**常见错误**：❌ IIII（4），❌ IC（99），❌ VV（10），✓ MCMXXI（1921）。

### 最大表示数与长横线扩展

标准罗马数字能表示的最大数是 MMMCMXCIX = 3999。为什么不能更大？因为只有 7 个基本符号，设计时没有预留表示 5000 以上的符号。古罗马很少需要记录超过万的数字（帝国的人口、军队规模都不超过千万），所以从未设计出扩展机制。

**长横线（Vinculum）扩展**：中世纪时有人发明了在罗马数字上加横线表示乘以 1000。例如 V̅（V 上有横线）= 5000，X̅ = 10000。但这个用法并未标准化，不同地区有不同写法，现代已几乎不用。

**现实应用**：电影片头 MMXXVI（2026）、老书编号 MCMXC（1990）、版权年份 © MMXXV（2025）。对于超过 3999 的数字，现代文献直接用阿拉伯数字。

### Excel / 编程中的罗马数字转换

Excel 内置了 ROMAN 函数和 ARABIC 函数。使用方式：=ROMAN(2026) 返回「MMXXVI」，=ROMAN(1984) 返回「MCMLXXXIV」，=ARABIC("MCMXCIV") 返回 1994。

ROMAN 还有一个可选参数控制繁简：=ROMAN(49, 0) 返回 XLIX（标准形式），=ROMAN(49, 1) 返回 IL（简写形式，但不标准，不推荐）。本站「罗马数字转换」工具提供双向转换：输入 1-3999 的数字得到罗马数字，输入合法的罗马数字得到数值。工具会自动检查输入合法性，并解释转换过程（例如 MCMXCIX = 1000 + 900 + 90 + 9）。

### 罗马数字在历史、艺术、法律中的应用

**电影片头**：好莱坞和欧洲电影传统在片头显示出品年份的罗马数字。例如《阿凡达》(Avatar, 2009) 显示「MMIX」。这既是传统，也是版权声明的一部分。

**王朝纪年与君主编号**：路易十四（Louis XIV）= 「十四」就是 14 的罗马数字 XIV；英国和西班牙的君主常用罗马数字编号：伊丽莎白二世（Elizabeth II）；教宗编号：若望·保禄二世（John Paul II）。

**书籍与章节编号**：序言通常用小写罗马数字页码：i, ii, iii, iv；章节标题：「第 III 章」「Book IV」；圣经与经典著作的引用格式。

**法律与古籍**：罗马法的条款编号、大宪章（Magna Carta）的章节、拿破仑民法（Napoleonic Code）的条文都用罗马数字。

**建筑与纪念碑**：古罗马建筑的日期刻字、教堂的落成年份、纪念碑铭文。

### 字体与显示的陷阱

看似简单的罗马数字在计算机中有些容易忽视的坑。第一个是**大小写混淆**：罗马数字应该用大写（I、V、X 等），但某些字体在小写模式下显示不清（小 l 看起来和 I 一样）。复制粘贴时务必用大写。

第二个是**字体选择**：衬线字体（Serif，如 Times New Roman）显示罗马数字最清晰；无衬线字体（Sans-serif，如 Arial）在小尺寸时 I 和 l 容易混淆。

第三个是 **Word / 文本编辑器的坑**：手动输入时千万别把 I 写成数字 1，虽然视觉很像，但含义完全不同。

第四个是**网页编码**：罗马数字在 Unicode 中有专用字符，但老旧网页可能不支持，用普通的拉丁字母替代。本工具生成的罗马数字全用标准大写拉丁字母，兼容所有字体和系统。

### 常见问题

**Q: 罗马人为什么发明了这种数字系统？**

罗马数字源于古罗马的物理计数：I 代表一个手指、V 代表张开的五指、X 代表两个 V 交叉。这种系统在没有纸张的时代，非常适合用石头、金属刻割或手指计数。但它缺乏零的概念，所以后来被印度-阿拉伯数字取代。

**Q: 为什么罗马数字最多表示 3999？**

因为只有 7 个基本符号，设计时没有预留表示 5000 以上的符号。古罗马很少需要记录超过万的数字，所以这个限制从未成为问题。中世纪有人用长横线试图扩展，但从未标准化。

**Q: IV（4）和 VI（6）怎么区分？**

关键是顺序。I 在 V **前面** = 减法 = IV = 4；I 在 V **后面** = 加法 = VI = 6。同理 IX（9）和 XI（11）。阅读时从左到右，看符号是递增还是递减。

**Q: 为什么电影片头喜欢用罗马数字标注年份？**

传统与品味。好莱坞借鉴欧洲古典传统，用罗马数字显示出品年份，暗示电影具有经典、永恒的品质。近年这个传统逐渐淡化，但经典大片依然坚持。

**Q: Excel 生成的罗马数字和手写的会有区别吗？**

不会有功能区别，只有显示区别。Excel 用的是标准规则生成标准形式（例如 4 → IV，不是 IIII）。但手工抄写时要注意大小写和顺序，否则很容易出错。本工具提供实时验证，避免手工输入的错误。

---

