服务端3月1日 20:00
DNS 负载均衡有哪些常见算法?DNS 负载均衡是在 DNS 解析阶段将用户请求分发到不同服务器的技术。它的核心思路是:同一个域名配置多条记录,DNS 服务器按照特定算法决定返回哪条记录对应的地址。面试中常考的是算法原理、各自的局限性,以及 DNS 负载均衡与应用层负载均衡的本质区别。
## 真正在 DNS 层工作的算法
先明确一点:DNS 是无状态协议,每次查询相互独立,DNS 服务器无法感知后端服务器的实时负载或连接数。因此,像"最少连接""最快响应"这类依赖实时状态的算法,在 DNS 层根本无法实现——它们属于应用层负载均衡(Nginx、HAProxy)的范畴。DNS 层能用的算法,本质上都只能基于静态配置或...服务端3月1日 20:50
Service Worker 有哪些安全风险和防护手段?## 为什么 Service Worker 天生需要安全约束
Service Worker 本质是一个浏览器级的网络代理——它能拦截页面发出的所有请求、读写 Cache Storage、接收推送消息。这意味着一旦攻击者控制了 Service Worker,就能在用户毫无感知的情况下窃取数据、注入恶意内容。浏览器因此对 Service Worker 施加了严格的安全限制,而理解这些限制背后的原因,是回答本题的关键。
## HTTPS 是硬性前提
Service Worker 只能在 HTTPS 环境下注册(localhost 例外)。这不是建议,是强制要求。
原因很直接:HTTP ...服务端3月1日 20:04
什么是DDNS动态域名解析?工作原理与配置方法详解## DDNS 动态域名解析是什么
DDNS(Dynamic DNS,动态域名解析)是一种自动更新 DNS 记录的技术,让使用动态 IP 地址的设备能够通过固定域名被访问。
家庭宽带、移动网络等场景下,运营商分配的公网 IP 会不定期变化。如果域名解析记录还指向旧 IP,服务就会中断。DDNS 的核心作用就是解决这一问题:当 IP 变化时,自动将域名解析更新为新 IP。
## 为什么需要 DDNS
### 静态 DNS 的痛点
家庭宽带的 IP 地址由运营商动态分配,可能每隔几小时或几天就换一次。传统 DNS 记录是手动配置的,IP 变了就得人工改记录,否则域名就解析到错误地址...服务端3月1日 20:02
什么是 DNS 预解析?实现方式和踩坑要点有哪些**DNS 预解析**(DNS Prefetching)是前端性能优化中低成本高收益的手段之一。浏览器在加载页面时提前解析可能用到的域名,把 DNS 查询结果缓存起来,等真正请求资源时跳过解析步骤,直接建立连接。
一次 DNS 解析通常耗时 20-120ms,在移动网络下可能更长。对于依赖多个跨域资源的页面,这些延迟会叠加。DNS 预解析把这些查询提前到页面加载的空闲时段,用户几乎感知不到。
## DNS 解析的完整链路
理解预解析的前提是搞清楚 DNS 解析本身经历了什么:
1. **浏览器缓存** — Chrome 对每条 DNS 记录缓存约 60s(TTL 由响应决定),命...服务端3月1日 19:58
什么是 DNSSEC,它如何保证 DNS 安全**DNSSEC(DNS Security Extensions)** 是 DNS 协议的安全扩展,通过数字签名验证 DNS 响应的真实性和完整性,防止缓存投毒、DNS 欺骗等中间人攻击。需要明确的是,DNSSEC 只提供数据认证,不加密 DNS 查询——这是它和 DoH/DoT 的本质区别。
## 为什么需要 DNSSEC
### 传统 DNS 的安全缺陷
DNS 协议设计于 1980 年代,天生没有认证机制。解析器收到一条 DNS 响应后,无法判断这条响应是否来自真正的权威服务器,还是攻击者伪造的。
```
用户查询 www.bank.com
↓
D...服务端2月24日 22:24
Cookie 的 Expires 和 Max-Age 有什么区别?## 核心结论
**Max-Age 优先于 Expires**。两者同时设置时,浏览器只认 Max-Age。Expires 是 HTTP/1.0 的产物,用绝对时间;Max-Age 是 HTTP/1.1 引入的,用相对秒数,不受客户端时钟偏差影响。现代开发应优先使用 Max-Age,仅在需要兼容 IE 时同时设置 Expires 作为降级。
## 两者的本质区别
| 维度 | Expires | Max-Age |
|------|---------|---------|
| 规范来源 | HTTP/1.0 (Netscape 草案) | HTTP/1.1 (RFC 6265) |...服务端3月1日 10:25
pnpm 如何处理 peer dependencies?与 npm 有什么不同?pnpm 通过隔离的 node_modules 结构和严格的依赖图解析,在安装阶段就检测 peer dependencies 冲突,而 npm 的扁平化结构可能让版本不匹配的 peer 依赖静默通过,直到运行时才暴露问题。
## 核心机制差异
npm 采用扁平化 node_modules,依赖会被提升(hoist),包能访问到不该访问的依赖(幽灵依赖)。peer dependencies 版本不匹配时,npm v7 之前直接忽略,v7+ 会自动安装但可能产生重复实例。
pnpm 使用 `.pnpm` 存储目录 + 符号链接的隔离结构,每个包只能访问自己声明的依赖。peer depe...服务端2月25日 21:50
WebRTC的数据通道有什么作用?如何使用它传输非媒体数据?WebRTC 数据通道(Data Channel)是 WebRTC 中与媒体通道并列的传输机制,基于 SCTP over DTLS 协议栈,在浏览器之间建立加密的点对点连接来传输任意二进制或文本数据。
## 数据通道的核心作用
**与媒体通道的区别**:媒体通道使用 SRTP 传输音视频,而数据通道使用 SCTP over DTLS 传输非媒体数据。两者共享同一个 ICE 传输层,但走不同的协议栈,互不干扰。
**相比 WebSocket 的优势**:WebSocket 需要服务器中继,数据经由服务端转发;数据通道建立后直接在两端之间传输,省去服务器中转的延迟和带宽开销。API 设...服务端2月24日 23:35
什么是 GORM,它的核心特性有哪些?## GORM 是什么
GORM 是 Go 语言中应用最广泛的 ORM 库,基于反射机制将结构体映射为数据库表,将方法调用转换为 SQL 语句。它遵循约定优于配置的原则——结构体名的蛇形复数即为表名,`ID` 字段默认为主键,`CreatedAt` / `UpdatedAt` 自动管理时间戳。
## 核心特性
- **关联关系**:支持 Has One、Has Many、Belongs To、Many To Many 四种关联,通过 `Preload` 预加载或 `Joins` 联表查询获取关联数据
- **钩子机制**:在 Create / Update / Delete / F...服务端2月28日 20:44
Shell 脚本中如何进行错误处理和调试?有哪些常用的技巧?Shell 脚本没有编译器的类型检查和异常机制,错误一旦发生往往悄无声息地传播,导致脚本在错误的状态下继续运行,产出难以排查的脏数据。所以错误处理和调试能力是区分"能跑的脚本"和"可靠脚本"的分水岭,也是面试中的高频考点。
## 错误处理的核心手段
### set 选项:让脚本在错误面前不再沉默
Shell 默认行为是"命令失败了就失败了,继续执行下一条",这在自动化场景中极其危险。`set` 选项可以从源头改变这个行为:
```bash
set -e # 任何命令返回非零退出码时,脚本立即终止
set -u # 引用未定义变量时报错退出,而非...