# 开发问题库

URL: https://caijiao.org/how-to/
Source: docs/how-to/index.md
Description: 开发问题库按真实开发问题组织答案、示例、排错步骤和相关工具，覆盖 JavaScript、Python、Linux、Docker、SEO 与建站等高频场景。

这里收拢“我现在卡在一个具体问题上”的内容。每个页面尽量先给可用答案，再放示例和相关入口；想系统学习，可以从对应教程继续往下看。

## 按场景查找

- [JavaScript / TypeScript 问题](/how-to/javascript/)：JSON、DOM、Fetch、异步、TypeScript、Vite 和 Node.js。
- [Linux / Docker 问题](/how-to/linux-docker/)：端口、日志、权限、Nginx、Compose 和容器排错。
- [Python 问题](/how-to/python/)：文件、JSON、CSV、PDF、requests、pandas 和虚拟环境。
- [SEO / 建站问题](/how-to/seo-website/)：收录、Sitemap、robots、canonical、结构化数据、内链和性能。

## JavaScript 与 TypeScript 精选

- [JavaScript 如何获取 URL 参数](/how-to/javascript/get-url-params)
- [JavaScript 如何复制文本到剪贴板](/how-to/javascript/copy-text-to-clipboard)
- [JavaScript 如何把 JSON 转 CSV](/how-to/javascript/json-to-csv)
- [JavaScript 如何把 CSV 转 JSON](/how-to/javascript/csv-to-json)
- [JavaScript 如何安全解析 JSON](/how-to/javascript/parse-json-safely)
- [JavaScript 如何格式化 JSON 字符串](/how-to/javascript/format-json)
- [JavaScript 如何判断 JSON 是否合法](/how-to/javascript/check-json-valid)
- [JavaScript 如何深拷贝对象](/how-to/javascript/deep-clone-object)
- [JavaScript 数组如何去重](/how-to/javascript/remove-duplicates-array)
- [JavaScript 如何按字段分组数组](/how-to/javascript/group-array-by-key)
- [JavaScript 如何按日期排序数组](/how-to/javascript/sort-array-by-date)
- [JavaScript 如何实现 debounce 防抖](/how-to/javascript/debounce-function)
- [JavaScript 如何实现 throttle 节流](/how-to/javascript/throttle-function)
- [Fetch 如何发送 JSON POST 请求](/how-to/javascript/fetch-json-post)
- [Fetch 如何设置超时时间](/how-to/javascript/fetch-timeout)
- [Fetch 如何处理 HTTP 错误](/how-to/javascript/handle-fetch-error)
- [Fetch 如何上传文件](/how-to/javascript/upload-file-fetch)
- [JavaScript 如何触发文件下载](/how-to/javascript/download-file-js)
- [浏览器 JavaScript 如何读取本地文件](/how-to/javascript/read-file-browser)
- [localStorage 如何设置过期时间](/how-to/javascript/localstorage-expire)

## Linux 与 Docker 精选

- [Linux 如何查看端口占用](/how-to/linux-docker/linux-check-port)
- [Linux 如何结束占用端口的进程](/how-to/linux-docker/linux-kill-port-process)
- [Linux 如何查找大文件](/how-to/linux-docker/linux-find-large-files)
- [Linux 磁盘满了怎么排查](/how-to/linux-docker/linux-disk-full)
- [Linux 如何查看目录大小](/how-to/linux-docker/linux-directory-size)
- [Linux 如何实时查看日志](/how-to/linux-docker/linux-tail-log)
- [Linux 如何在日志中搜索关键字](/how-to/linux-docker/linux-grep-log-keyword)
- [systemctl 如何查看服务状态](/how-to/linux-docker/linux-systemctl-status)
- [Linux 服务如何设置开机自启](/how-to/linux-docker/linux-service-auto-start)
- [Linux 如何重启服务](/how-to/linux-docker/linux-restart-service)
- [Linux 如何查看进程](/how-to/linux-docker/linux-view-process)
- [Linux CPU 占用过高怎么排查](/how-to/linux-docker/linux-cpu-high)
- [Linux 内存占用过高怎么排查](/how-to/linux-docker/linux-memory-high)
- [Linux 如何查看进程打开的文件](/how-to/linux-docker/linux-check-open-files)
- [Linux Permission denied 怎么办](/how-to/linux-docker/linux-permission-denied)
- [chmod 和 chown 怎么用](/how-to/linux-docker/linux-chmod-chown)
- [Linux 如何用 scp 传文件](/how-to/linux-docker/linux-scp-file)
- [Linux 如何用 rsync 同步目录](/how-to/linux-docker/linux-rsync-deploy)
- [Linux 如何添加定时任务](/how-to/linux-docker/linux-crontab)
- [Linux 如何设置环境变量](/how-to/linux-docker/linux-env-vars)

## Python 精选

- [Python 如何批量修改文件名](/how-to/python/batch-rename-files)
- [Python 如何读取和写入 JSON 文件](/how-to/python/read-write-json)
- [Python 如何合并 PDF 文件](/how-to/python/merge-pdf)
- [Python 如何拆分 PDF 文件](/how-to/python/split-pdf)
- [Python 如何把 CSV 转 JSON](/how-to/python/csv-to-json)
- [Python 如何把 JSON 转 CSV](/how-to/python/json-to-csv)
- [Python 如何读取 Excel 文件](/how-to/python/read-excel)
- [Python 如何写入 Excel 文件](/how-to/python/write-excel)
- [Python requests 如何发送 GET 请求](/how-to/python/requests-get)
- [Python requests 如何发送 JSON POST](/how-to/python/requests-post-json)
- [Python requests 如何设置超时](/how-to/python/requests-timeout)
- [Python 如何下载文件](/how-to/python/download-file)
- [Python requests 如何上传文件](/how-to/python/upload-file)
- [Python 如何解析 HTML](/how-to/python/parse-html)
- [Python 正则如何提取内容](/how-to/python/regex-extract)
- [Python 如何遍历目录文件](/how-to/python/pathlib-list-files)
- [Python 如何删除空文件](/how-to/python/delete-empty-files)
- [Python 如何复制文件和目录](/how-to/python/copy-files)
- [Python 如何压缩目录为 zip](/how-to/python/zip-directory)
- [Python 如何解压 zip 文件](/how-to/python/unzip-file)

## SEO 与建站精选

- [新网站上线后 Google 多久开始收录](/how-to/seo-website/google-index-time)
- [网站需要怎么提交 Sitemap](/how-to/seo-website/submit-sitemap)
- [页面被 robots.txt 屏蔽怎么办](/how-to/seo-website/robots-blocked)
- [页面有 noindex 怎么去掉](/how-to/seo-website/noindex-fix)
- [canonical 标签应该怎么写](/how-to/seo-website/canonical-setup)
- [页面标题重复怎么办](/how-to/seo-website/duplicate-title)
- [Description 到底应该怎么写](/how-to/seo-website/meta-description)
- [Title 多长比较合适](/how-to/seo-website/title-length)
- [H1 和 title 可以不一样吗](/how-to/seo-website/h1-title-difference)
- [Open Graph 标签怎么写](/how-to/seo-website/open-graph)
- [Twitter Card 怎么配置](/how-to/seo-website/twitter-card)
- [FAQ 结构化数据怎么写](/how-to/seo-website/structured-data-faq)
- [面包屑结构化数据怎么写](/how-to/seo-website/breadcrumb-schema)
- [Sitemap 页面太多要怎么拆分](/how-to/seo-website/sitemap-split)
- [Sitemap 的 lastmod 应该怎么填](/how-to/seo-website/sitemap-lastmod)
- [404 页面会影响 SEO 吗](/how-to/seo-website/404-seo)
- [301 和 302 重定向怎么选](/how-to/seo-website/301-vs-302)
- [HTTP 如何跳转到 HTTPS](/how-to/seo-website/http-to-https)
- [www 和非 www 怎么统一](/how-to/seo-website/www-non-www)
- [URL 末尾斜杠要统一吗](/how-to/seo-website/trailing-slash)

## 相关工具

- [JSON Formatter](/tool/json-formatter)
- [JSON Validator](/tool/json-validator)
- [JSON 转 TypeScript](/tool/json-to-typescript)
- [正则表达式测试工具](/tool/regex-tester)
- [Timestamp Converter](/tool/timestamp-converter)
- [Meta Title / Description 检查工具](/tool/meta-title-description-checker)
- [Open Graph 预览工具](/tool/open-graph-preview)
