服务端3月1日 10:22
什么是 pnpm,它与 npm 和 Yarn 有什么区别?## pnpm 是什么
pnpm(Performant npm)是 Node.js 的包管理工具,核心设计目标是通过**内容寻址存储**解决 npm/Yarn 的磁盘浪费和幽灵依赖问题。
## 存储机制:内容寻址 vs 扁平复制
npm 和 Yarn classic 采用扁平化安装:每个项目的 `node_modules` 都复制一份完整的包文件。10 个项目用 lodash,磁盘上就有 10 份副本。
pnpm 的做法不同——所有包只存一份到全局 store(通常在 `~/.local/share/pnpm/store`),项目中通过**硬链接**指向 store 中的文件:
...服务端2月28日 20:46
Shell 脚本中如何进行进程管理?如何启动、监控和终止进程?Shell 进程管理是运维和后端面试的高频考点,核心考查你对进程生命周期、信号机制和作业控制的理解。
## 进程启动
Shell 中启动进程有前台、后台和脱离终端三种方式,区别在于进程与当前 shell 的绑定关系。
### 前台与后台执行
前台执行会阻塞当前 shell,后台执行在命令末尾加 `&`,shell 立即返回控制权:
```bash
# 前台执行(阻塞 shell)
./long_task.sh
# 后台执行(shell 不阻塞)
./long_task.sh &
echo "后台进程 PID: $!"
```
`$!` 保存最近一个后台进程的 PID,是进程...服务端3月1日 10:27
pnpm 常用命令有哪些?与 npm 命令有什么区别?## 核心回答
pnpm 常用命令与 npm 高度相似,关键差异在于:`npm install <pkg>` 对应 `pnpm add <pkg>`;`npx` 对应 `pnpm dlx`;monorepo 用 `pnpm -r`(递归)和 `pnpm --filter`(按包过滤)替代 npm workspaces。但命令相似只是表象,真正的区别在于底层机制——pnpm 使用**内容寻址存储**(content-addressable store)+ **符号链接结构**,解决了 npm 的幽灵依赖和磁盘浪费问题。
**追问:为什么 pnpm 不存在幽灵依赖?**
npm 采用扁...服务端2月24日 22:59
什么是 React Query,它解决了前端开发中的哪些常见问题?React Query(现名 TanStack Query)是一个专门管理服务器状态的异步状态管理库。它解决的核心问题是:把原本散落在 useEffect + useState + 全局状态库中的数据获取逻辑,收敛到声明式的 Hook 调用中。
## 它解决的关键问题
**1. 手动管理请求状态的样板代码**
没有 React Query 时,每个请求都要写 loading、error、data 三件套:
```js
// 传统写法
const [data, setData] = useState(null);
const [loading, setLoading] = useS...服务端2月28日 22:12
如何进行 SSH 安全加固?有哪些最佳实践和安全配置建议?SSH 安全加固是运维和后端面试中的高频考点,也是生产环境必须落地的安全措施。一次配置不当的 SSH 服务,可能让整个服务器暴露在暴力破解和未授权访问的风险之下。本文从认证、网络、加密、密钥管理、监控五个层面系统讲解 SSH 安全加固方案。
## 核心原则:最小权限 + 纵深防御
SSH 安全加固不是单一配置的修改,而是从多个层面构建防线。核心思路:即使某一层被突破,还有下一层阻拦。没有任何一项配置能单独保证安全,只有组合使用才能形成有效防御体系。
## 认证层加固
### 禁用密码认证,仅允许密钥登录
密码认证是暴力破解的最大突破口。密钥认证从根本上消除了密码被猜解的风险——...服务端3月1日 10:24
pnpm workspace 如何配置和使用?pnpm workspace 是 pnpm 内置的 monorepo 方案,让你在一个仓库里管理多个互相依赖的包。相比 yarn workspaces 和 lerna,它零额外依赖、硬链接共享磁盘空间,配置也最简单。
## 如何声明 workspace
在项目根目录创建 `pnpm-workspace.yaml`:
```yaml
packages:
- 'packages/*'
- 'apps/*'
- 'shared/*'
```
根目录的 `package.json` 必须设置 `"private": true`,防止根包被误发布。
## 典型目录结构
``...服务端3月1日 12:00
pnpm 的 overrides 和 resolutions 有什么区别?如何使用?## pnpm.overrides:原生覆盖机制
`pnpm.overrides` 是 pnpm 原生的依赖覆盖配置,写在 `package.json` 的 `pnpm` 字段中,也可以写在 `pnpm-workspace.yaml` 里。
```json
// package.json
{
"pnpm": {
"overrides": {
"lodash": "^4.17.21",
"react": "^18.0.0"
}
}
}
```
```yaml
# pnpm-workspace.yaml
overrides:
"lod...前端2月16日 22:18
Tauri 的 tauri.conf.json 配置文件有哪些核心字段?Tauri 是基于 Rust 的跨平台应用框架,用 Web 技术构建桌面端(及移动端)应用,打包体积比 Electron 小 90% 以上。`tauri.conf.json` 是 Tauri 项目的核心配置文件,位于 `src-tauri/` 目录下,由 `tauri init` 命令生成。它控制构建流程、窗口行为、打包策略和插件集成,配置不当会导致编译失败或运行时异常。本文基于 Tauri v2 解析各核心字段。
## build:构建命令与开发服务器
`build` 对象定义前端代码的编译和开发服务器参数:
- `beforeDevCommand`:执行 `tauri dev`...前端2月16日 22:19
Tauri 支持哪些自动更新方式?如何实现?Tauri 是基于 Rust 和 Web 技术构建跨平台桌面应用的框架,自动更新能力是生产级应用的刚需。Tauri 通过 `tauri-plugin-updater` 插件提供官方更新方案,同时支持自定义更新服务器。本文从实际工程出发,讲清楚每种方式的核心配置和踩坑点。
## Tauri 自动更新有哪些方式?
Tauri 的自动更新本质上只有一条主线:**通过插件检测远端版本、下载签名包、验证后安装重启**。区别在于更新清单托管在哪里:
- **方式一:官方 `tauri-plugin-updater` + 静态 JSON 端点** — 最主流,适合绝大多数项目
- **方式二:官...服务端2月25日 23:03
WebView中如何管理Cookie?有哪些注意事项?WebView中管理Cookie是混合开发中的核心问题,涉及原生与H5的登录态同步、安全防护和跨平台差异。以下是完整的管理方案和注意事项。
## 核心答案:Cookie同步机制
WebView与原生应用维护独立的Cookie存储,必须手动同步才能保持登录态一致。
**Android端**使用`CookieManager`:
```java
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
// 设置Cookie
cookieManager....