服务端2月17日 12:11
Elasticsearch 集群架构中分片和副本的作用是什么?Elasticsearch 的分布式能力建立在两个核心机制之上:**分片(Shard)** 和 **副本(Replica)**。分片解决"一台机器存不下、算不快"的问题,副本解决"一台机器挂了数据丢了"的问题。理解这两者的工作方式,是掌握 Elasticsearch 集群架构的关键。
## 分片(Shard):水平拆分,并行提速
分片是将一个索引拆分为多个独立存储单元的机制。每个分片本质上是一个完整的 Lucene 索引,可以独立存储和检索数据,分布在集群的不同节点上。
**水平扩展存储容量**
单节点存储有上限。假设一个索引有 60GB 数据,设置 `number_of_sha...前端2月16日 23:36
如何用FFmpeg调整视频的码率、分辨率和帧率?在视频处理中,调整码率、分辨率和帧率是最常见的需求。无论是压缩视频体积、适配不同设备,还是优化流媒体传输,FFmpeg 都能通过命令行参数精确控制这三个核心参数。但参数设置不当容易导致画质劣化、播放卡顿甚至编码失败,所以需要理解每个参数的含义和适用场景。
## 码率调整:控制视频体积与画质的平衡
码率(bitrate)决定视频每秒的数据量,单位为 kbit/s 或 Mbit/s。码率越高画质越好,但文件体积也越大。FFmpeg 提供三种码率控制模式,适用场景各不相同。
### CBR:恒定码率
CBR 保持码率不变,适合直播等对带宽要求稳定的场景:
```bash
ffmpeg...前端2月16日 23:37
如何用FFmpeg实现直播推流?需要哪些命令和参数?FFmpeg 推流的核心就三步:指定输入源、设置编码参数、指向推流地址。掌握这几个环节的组合方式,就能应对绝大多数直播推流场景。
## FFmpeg 推流的基本命令结构
一条完整的推流命令长这样:
```bash
ffmpeg -i input.mp4 -c:v libx264 -preset fast -crf 23 -c:a aac -b:a 128k -f flv rtmp://server/live/stream
```
拆开来看:
- **`-i`**:输入源,可以是本地文件、摄像头设备或网络流
- **`-c:v` / `-c:a`**:视频/音频编码器,直播场景下...服务端2月17日 12:54
Elasticsearch 有哪些字段类型?如何正确选择?Elasticsearch 的字段类型直接决定了索引的存储方式、查询性能和分析能力。选错类型会导致分词异常、聚合失败、存储膨胀,甚至需要重建索引。下面从类型分类、核心类型详解、选型原则三个层面系统梳理。
## 字段类型总览
Elasticsearch 的字段类型可分为以下几类:
| 类别 | 主要类型 | 典型场景 |
|------|---------|---------|
| 文本 | `text`、`keyword` | 全文搜索 / 精确匹配 |
| 数值 | `integer`、`long`、`float`、`double`、`scaled_float` | 范围查询、排...服务端2月16日 23:51
TensorFlow支持哪些优化器?请列举至少三种并说明其特点TensorFlow提供了多种优化器来实现梯度下降的参数更新。最常用的三种优化器分别是Adam、SGD和RMSProp,它们在收敛速度、内存开销和泛化能力上各有侧重。
## Adam:自适应矩估计优化器
Adam结合了Momentum和RMSProp的思想,对梯度的一阶矩(均值)和二阶矩(方差)分别做指数加权移动平均,实现每个参数独立的自适应学习率。
核心更新公式:
$$
\begin{align*}
m_t &= \beta_1 m_{t-1} + (1 - \beta_1) g_t \\
v_t &= \beta_2 v_{t-1} + (1 - \beta_2) g_t^2...服务端3月1日 23:04
Solidity 中如何使用 Assembly 进行底层优化?有哪些注意事项?Assembly 是 Solidity 中的底层编程方式,允许开发者直接编写 EVM 操作码,绕过编译器的高级抽象。在 Gas 敏感的关键路径上,Assembly 能带来显著的性能提升,但也伴随更高的安全风险和维护成本。
## 为什么需要 Assembly
Solidity 编译器在大多数场景下已经能生成足够高效的字节码,但在以下情况中,手写 Assembly 是合理的:
- **跳过编译器的冗余抽象**:Solidity 对数组、结构体的边界检查会产生额外 Gas 开销,Assembly 可以绕过这些检查
- **访问 EVM 底层特性**:如 `returndatasize()...服务端3月1日 12:22
@babel/preset-env 是如何工作的?useBuiltIns 选项有什么区别?## @babel/preset-env 到底做了什么?
面试中被问到 Babel 配置,preset-env 几乎是必考项。很多人能说出 useBuiltIns 有三个值,但说不清它们背后的处理逻辑——这恰恰是区分"用过"和"理解"的分界线。
先给结论:@babel/preset-env 的核心职责只有一件事——根据你声明的目标环境,自动决定需要哪些语法转换插件和 polyfill。你不用再手动罗列 @babel/plugin-transform-arrow-functions、@babel/plugin-transform-classes 这一个个插件了。
## 它是怎么知道该...服务端3月1日 13:59
cURL 如何处理 HTTP 重定向?cURL 处理 HTTP 重定向是日常开发和面试中的高频考点。理解 cURL 重定向机制,核心在于掌握三个层面:跟随重定向的开关控制、不同状态码下的方法切换行为、以及跨域重定向的安全边界。
## 面试核心答案
cURL 默认**不跟随重定向**,需加 `-L`(或 `--location`)才会自动追踪 3xx 响应。重定向时,301/302/303 会将 POST 请求降级为 GET,而 307/308 会保持原始方法。通过 `--post301`/`--post302` 可以覆盖默认行为。跨域重定向时,cURL 默认不转发 Authorization 等敏感头,需 `--loca...服务端3月1日 18:49
cURL 的 -v、-i、-I、-s 参数有什么区别?cURL 是后端开发和运维中最常用的命令行工具之一,而 `-v`、`-i`、`-I`、`-s` 这四个参数控制着输出的内容和格式。很多人混用它们,实际上它们的输出目标、请求方式和适用场景完全不同。
### 一张图看清区别
| 参数 | 全称 | 请求方法 | 输出内容 | 输出目标 |
| ---- | -------------- | ----- | ------------- | ------ |
| `-v` | `--verbose` | 不改变 | 连接过程 + 请求头 + 响应头 | stderr |
| `-...服务端3月1日 00:13
Android中ANR是什么,如何定位和解决ANR问题?## ANR是什么?
ANR(Application Not Responding)是Android系统的一种保护机制。当应用主线程在规定时间内无法响应用户操作或系统事件时,系统会弹出"应用无响应"对话框,让用户选择继续等待或强制关闭。
ANR不是崩溃(Crash),二者本质不同:Crash是程序异常导致的进程终止,ANR是主线程阻塞导致的超时告警。一个Crash的进程也可能同时触发ANR——如果主线程在异常处理过程中阻塞了输入事件分发。
## ANR的触发条件
| 类型 | 超时阈值 | 触发场景 |
|------|---------|---------|
| 输入事件ANR...