服务端2月28日 20:49
OpenCV.js 中常用的图像处理操作有哪些?OpenCV.js 常用的图像处理操作涵盖颜色转换、滤波、边缘检测、几何变换和阈值处理五大类。核心 API 包括:cv.cvtColor() 做颜色空间转换(如 RGBA2GRAY),cv.GaussianBlur() 和 cv.medianBlur() 做图像平滑,cv.Canny() 做边缘检测,cv.resize() 和 cv.warpAffine() 做几何变换,cv.threshold() 和 cv.adaptiveThreshold() 做二值化。所有操作前需通过 cv.imread() 从 canvas 读取图像,处理后用 cv.imshow() 输出,且每个 cv.Mat...服务端2月28日 20:45
Shell 脚本中常用的字符串操作有哪些?Shell 字符串操作全部通过 ${} 参数展开完成,无需外部命令。拼接直接并排书写即可:"$a$b" 或 "${a}_${b}"。长度用 ${#var}。截取用 ${var:offset:length},支持负偏移从末尾取。最常用的模式删除:${var#pattern} 删最短前缀、${var##pattern} 删最长前缀、${var%pattern} 删最短后缀、${var%%pattern} 删最长后缀——这是提取文件名、路径、扩展名的标准做法。替换用 ${var/pattern/replacement} 替首次、${var//pattern/replacement} 替全部。
...服务端2月28日 20:41
Shell 脚本中如何定义函数?参数传递和返回值怎么处理?Shell 函数用 name() { } 或 function name { } 定义,调用时直接写函数名。参数通过 $1、$2、$@ 等位置变量访问,不写在括号里。返回值有两个机制:return 只能返回 0-255 的退出码,用于表示成功或失败;要返回字符串或计算结果,需用 echo 输出后由调用方通过 $(func) 命令替换捕获。函数内变量默认是全局的,必须用 local 声明才能限定作用域,这是 Shell 和大多数语言的重要区别。
## 追问
**1. return 和 echo 返回值有什么本质区别?**
return 设置的是函数的退出状态码(0-255),只能用于条...服务端2月28日 20:43
Shell 重定向和管道的工作原理是什么?Shell 通过文件描述符(FD)管理数据流:stdin(0) 读入、stdout(1) 正常输出、stderr(2) 错误输出。重定向改变数据流向,> 覆盖写、>> 追加写,2> 重定向错误,2>&1 将 stderr 合并到 stdout,&> 是 Bash 4+ 的简写。管道 | 将左侧 stdout 传给右侧 stdin,但 stderr 不经过管道——需先用 2>&1 转换。/dev/null 是黑洞设备,丢弃输出用 > /dev/null 2>&1。Here Document(<<) 和 Here String(<<<) 用于内联输入,进程替换 <() 让两个命令的输出直接比...服务端2月28日 20:38
什么是 Shell?常见的 Shell 类型有哪些?Shell 是用户与操作系统内核之间的命令解释器,负责将用户输入的命令翻译给内核执行并返回结果。它同时也是一种脚本语言,可以将命令序列写入文件批量执行。Linux 默认 Shell 通常是 bash,macOS 从 Catalina 起默认切换为 zsh。生产环境中需关注兼容性:写可移植脚本时应以 POSIX sh 为基准,避免使用 bashism。Debian/Ubuntu 的 /bin/sh 实际指向 dash,执行速度比 bash 快但不支持其扩展语法。fish 交互体验好但语法不兼容 POSIX,不适合写通用脚本。
## 追问
**1. /bin/sh 和 /bin/bash...服务端2月22日 19:53
Mongoose 聚合管道有哪些常用阶段?$match 为什么放最前面?Mongoose 聚合通过 `Model.aggregate([...stages])` 执行管道,常用阶段:`$match` 过滤文档、`$group` 分组统计(`$sum` 计数/求和、`$avg` 均值、`$push` 收集数组)、`$project` 投影和计算新字段、`$sort` 排序、`$limit/$skip` 分页、`$lookup` 关联其他集合(类似 SQL JOIN)、`$unwind` 展开数组为多条记录、`$facet` 并行执行多个子管道。`$match` 必须放最前面,因为它能利用索引减少进入后续阶段的数据量,管道是顺序执行的,越早过滤性能越好。`$lo...服务端2月17日 13:08
如何配置 Cypress 测试报告和 CI/CD 集成?Cypress 测试报告配置分两步:选 reporter、配参数。最常用的是 Mochawesome,在 cypress.config.js 中设 reporter 为 'mochawesome',通过 reporterOptions 指定 reportDir、overwrite: false、html: true、chart: true。如需合并多个 spec 的报告,搭配 mochawesome-merge 工具合并 JSON 再生成单份 HTML。CI/CD 集成的关键是:用 `npx cypress run --reporter mochawesome` 在无头模式执行;通过 `...服务端2月22日 19:55
Mongoose 鉴别器 Discriminator 怎么用?Discriminator 是 Mongoose 的单集合继承机制,通过 Event.discriminator('Conference', confSchema) 在同一集合中存储不同结构的文档,用 discriminatorKey 字段区分类型。所有鉴别器共享基础 Schema 的字段和索引,各自扩展独有字段,适合多态数据模型。
## 追问
**discriminatorKey 的作用是什么?**
它是 MongoDB 文档中用于标识类型的字段,默认叫 __t,可在基础 Schema 选项中自定义(如 kind、role)。创建鉴别器文档时自动写入,查询时 Mongoose 据此...服务端2月22日 19:41
Mongoose Model 的 CRUD 方法有哪些,查询性能怎么优化?Mongoose Model 常用 CRUD 方法:创建用 `create()` 和 `insertMany()`;查询用 `find()`、`findOne()`、`findById()`;更新用 `updateOne()`、`findByIdAndUpdate(id, update, {new: true})`;删除用 `deleteOne()`、`findByIdAndDelete()`。链式查询支持 `.select()` 投影、`.sort()` 排序、`.limit()` 分页、`.populate()` 联查。`findByIdAndUpdate` 默认返回修改前文档,需传...前端2月16日 23:59
Web3 前端如何与后端服务协作?有哪些典型场景?Web3 前端与后端的协作围绕链上和链下两条数据通路展开。链上交互通过钱包连接(window.ethereum)直接调用智能合约的 view/pure 方法读取状态、通过用户签名发送交易;链下交互则走传统 REST/GraphQL API,由后端代理聚合数据、管理会话、处理敏感逻辑。典型场景有五个:一是钱包身份验证——前端获取钱包地址并签名消息,后端验证签名后签发 JWT;二是读取合约状态——前端直接调用 view 函数或通过后端缓存聚合;三是发送交易——前端构造交易参数由用户在钱包确认签名,后端监听链上事件确认结果;四是事件监听——后端订阅合约事件(Transfer、Approval ...