DEVTOOLBOX / REFERENCE CARDS
可下载速查卡
三张可打印的速查卡:ASCII 全表、HTTP 状态码、Unix 权限位。数字与网页表格同源,PDF 由构建期直接排版生成,因此两者不会不一致。
ASCII 与码点速查卡
128 个 ASCII 码点:十进制、十六进制、类别与 UTF-8 字节数
文本看起来不对时,第一个该查的是码点,而不是字符本身。这张卡列出全部 128 个 ASCII 码点:十进制、十六进制、控制符缩写或字形、类别,以及 UTF-8 字节数,让每次不一致都能落到一个具体数字上。
什么时候用得上
- 字符串里混进了不可见的控制字符
- 要在抓包、diff 或正则里写十六进制形式
- 同一个字符在一种编码下正常、在另一种下出错
| 十进制 | 十六进制 | 字形或名称 | 类别 | UTF-8 字节 |
|---|---|---|---|---|
| 0 | 0x00 | NUL | 控制字符 | 1 |
| 1 | 0x01 | SOH | 控制字符 | 1 |
| 2 | 0x02 | STX | 控制字符 | 1 |
| 3 | 0x03 | ETX | 控制字符 | 1 |
| 4 | 0x04 | EOT | 控制字符 | 1 |
| 5 | 0x05 | ENQ | 控制字符 | 1 |
| 6 | 0x06 | ACK | 控制字符 | 1 |
| 7 | 0x07 | BEL | 控制字符 | 1 |
| 8 | 0x08 | BS | 控制字符 | 1 |
| 9 | 0x09 | TAB | 控制字符 | 1 |
| 10 | 0x0A | LF | 控制字符 | 1 |
| 11 | 0x0B | VT | 控制字符 | 1 |
| 12 | 0x0C | FF | 控制字符 | 1 |
| 13 | 0x0D | CR | 控制字符 | 1 |
| 14 | 0x0E | SO | 控制字符 | 1 |
| 15 | 0x0F | SI | 控制字符 | 1 |
| 16 | 0x10 | DLE | 控制字符 | 1 |
| 17 | 0x11 | DC1 | 控制字符 | 1 |
| 18 | 0x12 | DC2 | 控制字符 | 1 |
| 19 | 0x13 | DC3 | 控制字符 | 1 |
| 20 | 0x14 | DC4 | 控制字符 | 1 |
| 21 | 0x15 | NAK | 控制字符 | 1 |
| 22 | 0x16 | SYN | 控制字符 | 1 |
| 23 | 0x17 | ETB | 控制字符 | 1 |
| 24 | 0x18 | CAN | 控制字符 | 1 |
| 25 | 0x19 | EM | 控制字符 | 1 |
| 26 | 0x1A | SUB | 控制字符 | 1 |
| 27 | 0x1B | ESC | 控制字符 | 1 |
| 28 | 0x1C | FS | 控制字符 | 1 |
| 29 | 0x1D | GS | 控制字符 | 1 |
| 30 | 0x1E | RS | 控制字符 | 1 |
| 31 | 0x1F | US | 控制字符 | 1 |
| 32 | 0x20 | (空格) | 空白 | 1 |
| 33 | 0x21 | ! | 标点 | 1 |
| 34 | 0x22 | " | 标点 | 1 |
| 35 | 0x23 | # | 标点 | 1 |
| 36 | 0x24 | $ | 标点 | 1 |
| 37 | 0x25 | % | 标点 | 1 |
| 38 | 0x26 | & | 标点 | 1 |
| 39 | 0x27 | ' | 标点 | 1 |
| 40 | 0x28 | ( | 标点 | 1 |
| 41 | 0x29 | ) | 标点 | 1 |
| 42 | 0x2A | * | 标点 | 1 |
| 43 | 0x2B | + | 标点 | 1 |
| 44 | 0x2C | , | 标点 | 1 |
| 45 | 0x2D | - | 标点 | 1 |
| 46 | 0x2E | . | 标点 | 1 |
| 47 | 0x2F | / | 标点 | 1 |
| 48 | 0x30 | 0 | 数字 | 1 |
| 49 | 0x31 | 1 | 数字 | 1 |
| 50 | 0x32 | 2 | 数字 | 1 |
| 51 | 0x33 | 3 | 数字 | 1 |
| 52 | 0x34 | 4 | 数字 | 1 |
| 53 | 0x35 | 5 | 数字 | 1 |
| 54 | 0x36 | 6 | 数字 | 1 |
| 55 | 0x37 | 7 | 数字 | 1 |
| 56 | 0x38 | 8 | 数字 | 1 |
| 57 | 0x39 | 9 | 数字 | 1 |
| 58 | 0x3A | : | 标点 | 1 |
| 59 | 0x3B | ; | 标点 | 1 |
| 60 | 0x3C | < | 标点 | 1 |
| 61 | 0x3D | = | 标点 | 1 |
| 62 | 0x3E | > | 标点 | 1 |
| 63 | 0x3F | ? | 标点 | 1 |
| 64 | 0x40 | @ | 标点 | 1 |
| 65 | 0x41 | A | 大写字母 | 1 |
| 66 | 0x42 | B | 大写字母 | 1 |
| 67 | 0x43 | C | 大写字母 | 1 |
| 68 | 0x44 | D | 大写字母 | 1 |
| 69 | 0x45 | E | 大写字母 | 1 |
| 70 | 0x46 | F | 大写字母 | 1 |
| 71 | 0x47 | G | 大写字母 | 1 |
| 72 | 0x48 | H | 大写字母 | 1 |
| 73 | 0x49 | I | 大写字母 | 1 |
| 74 | 0x4A | J | 大写字母 | 1 |
| 75 | 0x4B | K | 大写字母 | 1 |
| 76 | 0x4C | L | 大写字母 | 1 |
| 77 | 0x4D | M | 大写字母 | 1 |
| 78 | 0x4E | N | 大写字母 | 1 |
| 79 | 0x4F | O | 大写字母 | 1 |
| 80 | 0x50 | P | 大写字母 | 1 |
| 81 | 0x51 | Q | 大写字母 | 1 |
| 82 | 0x52 | R | 大写字母 | 1 |
| 83 | 0x53 | S | 大写字母 | 1 |
| 84 | 0x54 | T | 大写字母 | 1 |
| 85 | 0x55 | U | 大写字母 | 1 |
| 86 | 0x56 | V | 大写字母 | 1 |
| 87 | 0x57 | W | 大写字母 | 1 |
| 88 | 0x58 | X | 大写字母 | 1 |
| 89 | 0x59 | Y | 大写字母 | 1 |
| 90 | 0x5A | Z | 大写字母 | 1 |
| 91 | 0x5B | [ | 标点 | 1 |
| 92 | 0x5C | \ | 标点 | 1 |
| 93 | 0x5D | ] | 标点 | 1 |
| 94 | 0x5E | ^ | 标点 | 1 |
| 95 | 0x5F | _ | 标点 | 1 |
| 96 | 0x60 | ` | 标点 | 1 |
| 97 | 0x61 | a | 小写字母 | 1 |
| 98 | 0x62 | b | 小写字母 | 1 |
| 99 | 0x63 | c | 小写字母 | 1 |
| 100 | 0x64 | d | 小写字母 | 1 |
| 101 | 0x65 | e | 小写字母 | 1 |
| 102 | 0x66 | f | 小写字母 | 1 |
| 103 | 0x67 | g | 小写字母 | 1 |
| 104 | 0x68 | h | 小写字母 | 1 |
| 105 | 0x69 | i | 小写字母 | 1 |
| 106 | 0x6A | j | 小写字母 | 1 |
| 107 | 0x6B | k | 小写字母 | 1 |
| 108 | 0x6C | l | 小写字母 | 1 |
| 109 | 0x6D | m | 小写字母 | 1 |
| 110 | 0x6E | n | 小写字母 | 1 |
| 111 | 0x6F | o | 小写字母 | 1 |
| 112 | 0x70 | p | 小写字母 | 1 |
| 113 | 0x71 | q | 小写字母 | 1 |
| 114 | 0x72 | r | 小写字母 | 1 |
| 115 | 0x73 | s | 小写字母 | 1 |
| 116 | 0x74 | t | 小写字母 | 1 |
| 117 | 0x75 | u | 小写字母 | 1 |
| 118 | 0x76 | v | 小写字母 | 1 |
| 119 | 0x77 | w | 小写字母 | 1 |
| 120 | 0x78 | x | 小写字母 | 1 |
| 121 | 0x79 | y | 小写字母 | 1 |
| 122 | 0x7A | z | 小写字母 | 1 |
| 123 | 0x7B | { | 标点 | 1 |
| 124 | 0x7C | | | 标点 | 1 |
| 125 | 0x7D | } | 标点 | 1 |
| 126 | 0x7E | ~ | 标点 | 1 |
| 127 | 0x7F | DEL | 控制字符 | 1 |
- U+0000 到 U+007F 在 UTF-8 中恒为 1 字节;更高的码点需要 2 字节或更多。
- U+007F 是 DEL,属于控制字符,不是可打印字形。
- 换行只需区分 LF(10)与 CR(13):CRLF 就是这两个字节依次出现。
HTTP 状态码速查卡
RFC 9110 及其扩展中登记的状态码,按类别排列
状态码不是「请求感觉如何」的标签,而是关于发生了什么的机器可读声明。这张卡列出已登记的状态码、原因短语,以及那个决定修法的细节——哪些不许带正文、哪些可被缓存、哪些要求客户端换一种重试方式。
什么时候用得上
- 鉴权失败时在 401、403、404 之间选一个
- 排查改写状态码的代理或 CDN
- 不翻 RFC 就回答「这个能不能缓存」
| 状态码 | 原因短语 | 它承诺了什么 |
|---|---|---|
| 100 | Continue | 请求头已收到,客户端可继续发送正文 |
| 101 | Switching Protocols | WebSocket 升级就在这里 |
| 102 | Processing | WebDAV,表示服务器已收到但尚未完成 |
| 103 | Early Hints | 在最终响应前先送 Link 头做预加载 |
| 200 | OK | 语义随方法变化:GET 返回正文,POST 返回结果 |
| 201 | Created | 应带 Location 指向新资源 |
| 202 | Accepted | 已受理但未完成,通常配轮询 |
| 203 | Non-Authoritative Information | 正文经代理改写 |
| 204 | No Content | 禁止带正文;仍可带元数据头 |
| 205 | Reset Content | 要求客户端重置表单视图 |
| 206 | Partial Content | 配合 Content-Range,断点续传的基础 |
| 207 | Multi-Status | WebDAV,正文是多状态 XML |
| 208 | Already Reported | WebDAV,避免重复枚举 |
| 226 | IM Used | 增量编码已应用 |
| 300 | Multiple Choices | 客户端需自行选一个表示 |
| 301 | Moved Permanently | 缓存友好;方法可能被改成 GET |
| 302 | Found | 临时跳转,历史实现会改写方法 |
| 303 | See Other | 明确要求改用 GET 取结果 |
| 304 | Not Modified | 必须带验证器,且不带正文 |
| 305 | Use Proxy | 已废弃 |
| 307 | Temporary Redirect | 方法与正文原样保留 |
| 308 | Permanent Redirect | 永久版 307,缓存友好 |
| 400 | Bad Request | 语法或参数不合法 |
| 401 | Unauthorized | 缺凭证;应带 WWW-Authenticate |
| 402 | Payment Required | 长期保留未启用 |
| 403 | Forbidden | 身份已知但无权限,重试无用 |
| 404 | Not Found | 也可用于隐藏资源存在性 |
| 405 | Method Not Allowed | 应带 Allow 头 |
| 406 | Not Acceptable | 按 Accept 协商失败 |
| 407 | Proxy Authentication Required | 代理层认证 |
| 408 | Request Timeout | 服务端等待请求超时 |
| 409 | Conflict | 状态冲突,典型是并发写 |
| 410 | Gone | 曾存在且明确不再存在,可安全清理索引 |
| 411 | Length Required | 需要 Content-Length |
| 412 | Precondition Failed | If-Match 等前置条件不成立 |
| 413 | Content Too Large | 请求体超过服务端上限 |
| 414 | URI Too Long | 目标 URI 过长 |
| 415 | Unsupported Media Type | Content-Type 不受支持 |
| 416 | Range Not Satisfiable | 应带 Content-Range: bytes */长度 |
| 417 | Expectation Failed | Expect 头无法满足 |
| 418 | I'm a teapot | 4 月 1 日玩笑,但仍在 RFC 9110 保留 |
| 421 | Misdirected Request | 连接复用到不匹配的主机 |
| 422 | Unprocessable Content | 语法正确但语义不合规 |
| 423 | Locked | WebDAV 资源被锁 |
| 424 | Failed Dependency | WebDAV,前置操作失败 |
| 425 | Too Early | 防重放,加密握手未完成 |
| 426 | Upgrade Required | 要求升级协议 |
| 428 | Precondition Required | 要求条件请求,防丢失更新 |
| 429 | Too Many Requests | 应带 Retry-After |
| 431 | Request Header Fields Too Large | 请求头总大小超限 |
| 451 | Unavailable For Legal Reasons | 法律原因不可用 |
| 500 | Internal Server Error | 未预期错误,不应泄露内部细节 |
| 501 | Not Implemented | 不识别请求方法 |
| 502 | Bad Gateway | 上游返回了无效响应 |
| 503 | Service Unavailable | 过载或维护,应带 Retry-After |
| 504 | Gateway Timeout | 上游超时 |
| 505 | HTTP Version Not Supported | 协议版本不支持 |
| 506 | Variant Also Negotiates | 内容协商配置错误 |
| 507 | Insufficient Storage | WebDAV 空间不足 |
| 508 | Loop Detected | WebDAV 检测到循环 |
| 510 | Not Extended | 需要扩展才能处理 |
| 511 | Network Authentication Required | 门户认证,典型是公共 Wi-Fi |
- 204 与 304 不许带正文;304 还必须重复它用于比较的验证器头。
- 301 与 308 是永久且可缓存的;302 与 307 是临时的,只有 307 保证方法与正文原样保留。
- 5xx 表示服务端出错,不是请求有问题;4xx 表示请求本身有问题,但 408 与 429 是时间相关。
Unix 权限速查卡
八进制位、rwx 三元组、特殊位,以及真正会敲的那些模式
权限是三个相互独立的数字,几乎所有事故都来自把它们当成一个词来读。这张卡给出每个八进制位打印什么、授予什么,特殊位做什么,以及真实部署里会出现的那些模式——包括为什么目录即便可读,也需要执行位才能进入。
什么时候用得上
- 部署文件时在 644 与 755 之间做选择
- ls 显示 r--,脚本却报 permission denied
- 写解压逻辑需要还原权限位
| 八进制位 | 打印为 | 实际含义 |
|---|---|---|
| 0 | --- | 目录连列目录与进入都不行 |
| 1 | --x | 目录上等价于「可穿过」,仍需知道具体路径 |
| 2 | -w- | 可截断与追加,但不能读取 |
| 3 | -wx | drop-box:能创建与删除,但不能枚举 |
| 4 | r-- | 脚本无法执行;目录可列出名字 |
| 5 | r-x | 目录最常见的组合 |
| 6 | rw- | 普通数据文件的常见值 |
| 7 | rwx | 目录的全权,也是脚本的可执行值 |
- 一个模式就是三个这样的数字:644 是 rw- r-- r--,755 是 rwx r-x r-x。
- 特殊位在最前面:4000 setuid、2000 setgid、1000 sticky——1777 的目录允许任何人创建文件,但只有属主能删除。
- umask 在创建时做减法:umask 022 下请求 777 落地为 755,请求 666 落地为 644。