Archive

keep hungry keep foolish
2026

初步研究数字人各种方案

文章转口播需要声音、人物和画面合成,先收窄到数字人和声音,再接时间轴。


数字人口播长片:身份、口型与分段连续

短片可用以后,长片可能出现身份变化、边缘闪动或分段跳变,需要独立测试。


中文 TTS 方案比较:读音、音色和长句稳定

声音自然不表示术语数字正确,应按实际稿件比较候选。


口播转录对齐:文字纠错与音频时码

自动转录可能读错术语,字幕对齐需在文字确认以后核对音频边界。


技术文章工程化:版本核验、示例与配图

教程应让读者理解原理和操作条件,版本和例子不符会削弱可用性。


AI 产品功能介绍:能力、条件和验收口径

产品介绍要说明用户能完成的动作,也需避免把内部技术清单当功能。


现场培训与验收:操作步骤和故障边界

验收与培训需要说明维护者能做什么、如何确认成功以及异常如何处理。


远程现场排障:先收集只读证据再修改

办公室与现场条件不同,远程修复应先核对实际入口和运行状态。


离线恢复自动化:探测、条件与受控动作

服务失联后自动重启可能恢复,也可能掩盖拓扑或数据问题。


设备健康看板:状态、数据质量与业务指标

一个在线图标不能表达采集、存储和业务是否健康,看板需分层指标。


语音告警设备:播放确认、次数和事件去重

告警命令传到设备,不证明音频按预期播放一次。事件与播放任务需绑定。


分体环形光源:几何合拢与照明一致性

夹爪带分体光源时,合拢形状完整不代表光照方向与亮度一致。


内窥读码成像:工作距离、光源与操作

狭小空间内钢印需要近距离成像,普通码流截帧可能缺细节。


农机自主与遥控:模式切换和状态归属

自主作业与人工遥控并存时,切换过程不能同时接受两路冲突命令。


双作业机械臂:工作空间、碰撞与任务分配

两个机械臂增加覆盖,也可能相互阻挡,任务分配需要共享空间约束。


玻璃瓶质检:光学工位、正常学习与验收

透明反光和缺陷长尾要求同时设计成像与数据,不能只比较网络名称。


企业协同智能体:意图入口与原有流程权限

统一对话入口能降低系统切换,但原有审批与权限仍需保留。


销售诊断智能体:问题依据与明确下一步

客户描述需求时,系统需要先理解流程与约束,再形成可执行的调研问题。


内容策划智能体:情报、事实底稿与发布

自动内容任务需要完成事实核验和实际发布状态,不能在选题研究结束就算交付。


污染溯源报告:证据检索、空间分析与复核

公开溯源平台方案把异构材料、GIS、检测计算和报告串联,核心是判断可反查。


报告计算工具:固定输入与模型解释

技术报告中的距离和统计需要程序依据,模型不能根据上下文直接补数字。


本地资料进入知识库:目录、权限与版本

NAS 资料库可以作为知识来源,但索引不应无条件公开所有共享文件。


Deskflow 跨设备键鼠:安装、权限与登录启动

共享键鼠需要两端配置和图形会话,安装成功不等于开机自动连接。


CLI 安装原生文件缺失:npm 与 PATH

npm 主包存在而命令缺原生二进制,可能是可选依赖或安装脚本未完成。


GitHub SSH 配置:已有密钥先核对再复用

已有 Ed25519 密钥时先确认用途,覆盖同名文件可能影响其它连接。


企业 Wi-Fi:认证、DHCP 与业务访问

能看到 AP 而 configuring 停滞,需按认证和地址阶段分析,不直接换静态 IP。


模拟量模块:从原始读数到可验证电压

输入变化得到数值响应,仍需确认通道布局和厂家比例,不能凭一个点猜公式。


线扫标定板打印:实体尺寸与采样比例

100mm 打印成约96mm时,首先检查打印链路,不能用错误标尺评价相机。


黑色信息栏分割:位置变化与几何验证

图片尺寸和暗色栏位置不固定时,固定裁切可能误删正文或保留文字栏。


2025

推理预热:加载一次与请求资源复用

每次请求重新加载模型会慢,常驻模型又需要释放与并发策略。


推理批处理:吞吐提高与等待成本

批量可以减少调用开销,也可能让低频请求等凑批,需定义最大等待。


无人割草机案例:定位、避障与作业覆盖

公开园区割草案例涉及遮挡与地面振动,定位可用不等于作业覆盖完成。


多模态输入预算:图像尺寸、张数和资源峰值

文字请求正常,多图或视频请求失败,需单独预算视觉编码和缓存。


长上下文模型:容量、检索与关键证据

窗口能容纳大量资料,不表示模型能稳定利用所有关键证据。


CUDA 容器访问:驱动与镜像依赖边界

镜像包含 CUDA 库,不表示容器自动获得 GPU,宿主机驱动和运行接口需配套。


NVIDIA 驱动排障:内核模块、用户库与设备

nvidia-smi 失败时,先区分设备发现、模块加载和用户库,避免直接重装全部环境。


舵机校准通信:单读、同步读与有效反馈

工具显示 connected 但同步读没有状态包,应区分端口打开与目标协议完成。


3D 打印装配测试:版本对照与实际尺寸

多次改模型仍不适配,可能尺寸与打印条件同时变化。


CAD 模型交付:工程源、交换文件与校验

客户要可修改模型时,只给渲染图或网格不满足工程交付。


横屏内容放进竖屏:标题、人物与安全区域

主内容、数字人与标题同时进入竖屏,位置和遮挡要通过确定参数管理。


口播时间轴:从最终音频产生字幕与画面

稿件估算时长不能直接作为最终字幕时码,语速和停顿会改变时间。


MuseTalk 口型驱动:视频姿态与音频对齐

已有视频需要更换口播时,保留人物姿态与局部口型质量是主要条件。


数字人素材路线:照片动画与视频口型

只有照片与已有真人视频承担不同生成任务,应分别选择候选。


声音克隆验证:统一素材、读音与停顿

不同方案各用最佳演示不能公平比较,需同稿件和同质量参考材料。


钢材标签读码:跟踪结果怎样成为出入库记录

钢材物流中的运动标签需要把成像、跟踪与业务入库关联,重点在目标身份和时序去重。


CPU 处理 PCB 图像:配准、差分与检出边界

PCB 图像可以通过几何配准和局部差分产生缺陷候选,关键前提是参考与成像可比。


机器人视觉定位:像素到执行坐标的标定链

目标像素正确而抓取位置错,可能是深度、外参或工具中心点关系不符。


机器人动作超时:START、COMPLETE 与错误

收到 START 后没有 COMPLETE,需要定位执行阶段,不能因为命令发出就继续下一步。


机器人目标丢失:观察失败不能当任务完成

视觉目标消失可能因遮挡、视野移动或识别失败,不能直接推进抓取和后退。


ROS 控制调试:从最小动作到实际反馈

服务返回 success 不能独立证明机器人移动,需对照通信和真实动作。


叉车预警案例:车载感知与事件证据

公开车载预警方案将驾驶行为、周边感知与车辆状态组合,工程重点在证据和事件管理。


办公室登录正常而现场失败:请求入口对照

同账号不同入口结果不同,先检查是否到同一后端与账号库。


人脸登录耗时:采集、识别和页面切换分段

点击到主界面慢,不一定是特征计算;采集、网络和会话初始化也可能等待。


人脸登录工作点:误放行和误拒绝一起评估

陌生人误匹配与已注册人员难通过需要同一测试集比较,不能只收紧一侧。


ONVIF 接入:发现、认证和媒体 URI

发现设备后还需认证、查询能力并获取实际码流,不能只用设备列表说明接入完成。


图片二进制完整性:后缀、文件头与解码

图片文件存在但网站显示失败,可能是格式不符或上传截断。


多入口内容发布:唯一正文与平台状态

多个渠道分别保存正文容易漏同步,应保留明确唯一源与真实投递状态。


文章发布完整性:最终 HTML 哈希与素材

正文构建后变化而内容包仍绑定旧摘要,会让状态与读者看到的内容不同。


人机协同审核:可审阅结果与执行授权

需要审核的操作应先准备具体结果,而不是让审核者批准抽象计划。


智能体工作流重试:避免重复创建和发布

多步任务在最后失败后重跑全部,可能重复创建前面已完成的对象。


智能体审计:计划、权限、工具和结果

只保存对话文本,无法解释工具实际执行了什么。


智能体任务取消:页面关闭后后台是否仍执行

前端取消不一定停止后台工具,任务需传播取消并记录已发生副作用。


RAG 技术报告:文档、GIS 与计算证据

报告要把文件、地图和数值连成可反查依据,流畅段落不足以完成任务。


模型缓存管理:输入身份与版本失效

缓存返回快但答案过期,可能没有把资料权限或模型版本纳入键。


Orin NX Super 负载预算:功耗、温度与推理

边缘算力提升后,仍需要同时观察显存共享、温度和功耗模式。


Jetson 备份:应用、rootfs 与整机恢复

边缘设备环境重建成本高,备份需先确定希望恢复到哪个层次。


2024

模型服务并发:吞吐与首 token 延迟

并发增加会提升整体吞吐,也可能让单请求等待更长,需要按业务目标选择。


多卡推理:分片、通信与单卡峰值

两卡部署未必比一张更快,通信与不均衡分片可能成为成本。


首个模型会话 OOM:健康响应与资源就绪

健康接口正常而首会话显存分配失败,说明目标模式仍有初始化路径。


V100 推理兼容:算子支持和容量分别排查

模型加载后仍失败,可能同时存在注意力实现不支持和后续峰值不足。


Jetson 串口进容器:驱动、映射与权限

宿主机识别 USB 串口而应用看不到,需要分层核对设备访问。


Jetson 部署环境:系统、CUDA 与容器版本

同为 Jetson,模块、载板和系统版本可能不同,不能直接复制另一台的驱动与镜像。


工程案例分享:保留技术价值与脱敏边界

删去客户名字仍可能留下可识别场景,公开文章应审查内容组合。


模型服务接口:输入、执行状态与结果文件

任务受理后返回 ID,并不表示模型输出已经可用。接口应区分排队、运行、完成与失败。


Python 桌面打包:运行路径、资源与依赖

脚本可运行,打包后资源缺失或依赖不符,说明运行环境改变。


同步进度估计:文件数量、字节与剩余时间

按文件数计算进度会让大文件阶段停很久,ETA 需要考虑实际传输和扫描阶段。


NAS 路径兼容:共享名、UNC 与本地挂载

同一个共享在不同系统使用不同路径表示,登录与文件操作也可能走不同协议。


文件同步方向:镜像与只增加的语义

本机主导镜像和只增加有不同删除行为,界面应明确哪一端拥有权威。


Mac 双账号浏览器:Profile 与独立数据目录

需要两个常驻账号时,配置空间和启动入口应明确分离。


一张图集成案例:入口统一与数据责任

公开智能工厂案例融合多个系统,统一入口之后还需明确每份数据由谁维护。


无人行车案例:点云、作业目标与 PLC 执行

公开工业项目把库区扫描与行车控制连接起来,关键在于目标、路径和执行边界。


Android WebView 实时断线:页面生命周期

浏览器正常而 WebView 周期断开,需检查是否定时 reload 销毁连接。


容器网络排障:DNS、路由与应用端口

能 ping 外网但业务连接失败,说明网络验收不能只测试一条路径。


连接池旧会话:参数变化后为何仍报错

服务配置改了但部分请求仍异常,可能已有连接保留旧会话状态。


PostgreSQL 只读:恢复状态与会话参数

应用突然只读,需要从实际连接区分服务器角色和事务状态。


设备事件关系:时间线与关联图各有什么用

同一报警涉及设备、位置与处置,单列表难以表达关系,但图也不自动解释原因。


GIS 坐标参考:经纬度、投影与距离计算

把经纬度差直接当米,会产生错误距离。空间字段需要明确参考系。


技术报告证据结构:主张、计算和待确认项

材料与报告段落分开管理会造成引用和图表不一致。


环境 GIS 分析:空间计算与文字解释分工

空间邻近、上下游与时间趋势必须有计算依据,不能由文字生成直接猜测。


数字孪生对象:设备台账、实时状态与历史

三维展示和实时数据放一起,不证明对象关系正确。台账和运行状态需要独立身份。


IT 与 OT 接口:业务授权和设备联锁

统一平台能读设备,不意味着应该无条件控制设备。读取、任务请求和实际动作有不同边界。


多模态模型看图:描述、定位与证据支持

模型能描述场景,不表示能精确读取小字或定位目标。任务应限定可核验输出。


交互分割模型:提示、边界与工程验证

通用分割提供候选掩膜,但目标完整性和小缺陷保留还需要验证。


视觉输入质量:模糊、遮挡与曝光检测

图像无效时模型仍返回候选,业务可能把它误当正常。输入质量应进入结果条件。


视频采集线程:最新帧与完整事件两种策略

实时显示可以丢旧帧,证据记录未必可以,采集设计需区分用途。


相机到推理传输:减少复制前先看生命周期

减少一次数组复制可能提速,也可能让采集线程覆盖正在计算的帧。


推理引擎构建:目标设备与执行配置

某设备生成的引擎在另一环境不可用,说明引擎不只是通用模型文件。


ONNX 模型导出:算子支持与数值一致性

导出成功后部署结果变化,需要核对算子、输入和后处理,而非只看文件可加载。


模型产物管理:权重、标签与前后处理

拿到一个权重文件不能独立重现推理,还需要标签表、输入规则和后处理。


批量推理上下文:避免上一条证据进入下一条

汇总报告目标和计数错位,可能来自共享可变对象生命周期。


本地推理冷启动:模型加载与首请求分开测

服务启动快但首次请求慢,可能在请求时才完成额外初始化。


llama.cpp 服务预算:上下文、KV 缓存与并发

工程助手请求含工具和代码,服务窗口必须按最终请求计算。


本地模型量化:权重容量与运行内存

量化文件能放进显存,不表示长上下文和并发都能运行。


2023

智能体状态保存:上下文与业务进度分开

对话历史还在,任务进度却丢失,说明聊天上下文没有承担可靠状态管理。


知识问答缺少依据:拒答条件如何具体化

系统为了每题给答案可能编造证据,需定义什么情况只能回答有限内容。


企业知识检索:权限过滤放在哪个阶段

用户只能访问部分资料,检索和生成都需要遵守对象权限。


工具结果进入模型:计算值、解释与引用

模型解释统计结果时,若不保留查询范围,容易把工具值扩展为没有依据的结论。


工业 AI 发布门槛:数据、模型与运行条件

模型文件更新后现场结果改变,发布需要同时固定前后处理、参数与成像条件。


工业项目复盘:算法效果与整体收益分开记录

集成项目同时包含网络、设备与平台,整体效率提升不能全部归给某个算法。


技术交付文档:部署说明与接口契约怎样对应

文档描述和代码不一致,会让现场维护依赖作者记忆。交付需要把环境、接口与验证对应起来。


技术选型:从演示效果到验证条件

展示视频可以发现候选,不能替代目标设备和数据上的评价。选型需要先定义问题与验收。


数据库变更脚本:顺序、幂等与回退条件

每次人工改表难以重现部署,迁移脚本需要跟随应用版本管理。


数据库排障:从出错连接查询实际后端

管理员查到数据库可写,而应用报只读,可能两者连接不同后端。证据应来自同一入口与会话。


前端发布缓存:旧页面和新 API 的兼容

后台已升级,平板仍使用旧脚本,可能导致接口参数不一致。发布需管理缓存和兼容窗口。


服务资源预算:CPU、内存与连接数量

服务能在空载启动,不代表并发时资源足够。预算需要覆盖峰值和共享依赖。


异步事件排序:序列号、时间与重复处理

网络恢复后事件乱序到达,按接收顺序更新当前状态可能回退到旧值。


慢变测量滤波:平滑、延迟与异常保留

平滑后的曲线漂亮,但突变告警可能变迟。滤波需要说明目标噪声和允许延迟。


视觉测量标尺:参考平面与透视误差

一张图上计算像素比例后,换到不同深度误差变大,说明尺度只适用于参考条件。


远距读码:成像、跟踪与业务去重

远距离运动标签受视角、景深、粉尘与遮挡影响,单帧解析失败不能直接结束任务。


多目标跟踪:轨迹 ID 与业务身份不同

跟踪 ID 连续不证明识别到同一业务对象,遮挡和交叉可能交换轨迹。


目标检测 NMS:重叠目标与重复框的取舍

检测框重复与相邻目标被抑制,是同一后处理规则的不同风险。NMS 参数需结合场景。


模板匹配与特征匹配:尺度、旋转与重复纹理

相同图案在不同尺度和角度出现时,固定模板可能失效,而特征匹配也可能被重复纹理误导。


工业光源频闪:曝光与供电纹波的关系

画面周期性条纹或亮度波动,可能由光源纹波与快门采样共同产生。


工业相机像素数:分辨率不等于可检缺陷

像素多不表示目标细节一定清晰,视野、镜头、照明与运动共同决定可观察尺度。


机械公差与视觉误差:误差预算如何分层

视觉定位结果不能直接成为机械加工精度,传感、标定、安装和运动各有误差。


3D 打印配合件:插入、旋转与锁紧分开验证

能插入却转不动,是不同间隙条件冲突。尺寸调整应对应具体动作。


二维图纸转三维:参数实体与网页模型

三维预览漂亮不表示工程几何正确。图纸理解、实体构造和浏览器网格应分开。


PDF 图纸处理:矢量尺寸与栅格化比例

PDF 转图片后测量比例改变,先检查页面尺寸、分辨率与裁剪,而非直接调整相机。


OCR 文档布局:识别文字与还原阅读顺序

文字识别正确但段落和表格混乱,说明布局还原与字符识别是不同任务。


OCR 一致性:文件名和图片文字为什么不能互证

文件名、底栏和结构字段相同,若都由一份 OCR 派生,只说明复制一致。


模型更新回归:固定问题集与失败类型

新模型回答更流畅,仍可能在权限、引用或结构上退步。发布要比较同一问题集。


知识库引用:一段结论需要哪些依据

文章末尾列几个链接,不能证明每个判断都有支持。引用应靠近主张并能回到具体位置。


流式模型接口:首字延迟、断流和取消

流式响应已经开始,不代表整段回答会完成。连接中断、取消和服务超时需要独立状态。


大模型上下文预算:历史、工具与输出空间

用户输入很短仍可能超限,因为最终请求还包含历史、系统说明和工具结果。


模型结构化输出:可解析不等于可执行

模型返回合法 JSON 也可能包含错误枚举、范围或对象。解析后还需要业务校验。


知识库安全:外部文档不能授予工具权限

检索材料可能包含要求模型改变行为的文字。应用必须把资料当数据,而不是当新的授权来源。


混合检索:关键词与语义召回如何互补

设备编号和术语需要精确匹配,而自然语言问题可能需要语义检索,两者适合互补。


向量检索:距离、归一化与相似度阈值

距离最小的候选不一定相关,分数还取决于嵌入模型与索引度量。


文档切块:长度、重叠和语义边界

切块太短会割裂定义,太长会挤占上下文。应按文档结构与问题分布比较,而非固定一个万能长度。


工业巡检案例:让视频异常进入可追溯处置

工业装置巡检需要观察位置分散、登高频繁的状态。公开项目显示视频监测与统一平台能够减少反复切换系统,但仍要设计证据与处置。


2022

检索增强生成:检索结果怎样进入回答

模型可以生成流畅文字,却可能缺少业务依据。检索增强生成把外部材料与生成阶段连接起来。


文档检索系统:解析、索引和可定位证据

找到包含关键词的文件不表示找到支持结论的段落,检索应保存内容位置和版本。


工业系统集成:账号、对象与接口边界

统一入口不等于统一数据与权限,多个业务系统还可能拥有各自对象和生命周期。


部署可观察性:日志、指标与请求身份

同一个错误分散在多个服务中,没有共同请求身份就难以还原链路。


边缘系统验收:断网、重启与资源峰值

在线演示成功不足以覆盖边缘设备常遇到的断网和重启。验收应按实际故障条件回放。


工序视觉校验:动作序列与物料状态

检测到动作不证明工序按顺序完成,还需要关联物料和前置条件。


工业视频监测:成像条件与模型覆盖

白天测试正常,夜间和粉尘条件误报增加,说明测试范围没有覆盖实际输入变化。


视频巡检告警:从单帧识别到处置闭环

识别到异常后还需形成可处理事件,避免每帧都生成一条新报警。


工业平台一张图:统一对象而非只拼画面

多子系统汇到大屏以后,仍可能需要重复确认设备和位置。一张图需要共享对象身份与状态含义。


系统集成数据契约:字段含义比字段名重要

两个系统都有 status 字段,取值和生命周期却不同,直接映射会改变业务含义。


GPU 计时:异步执行为何让前向看起来很快

CPU 时钟包住 GPU 调用,可能只测入队时间。需要明确等待与同步边界。


多 GPU 显存:容量不能直接相加

两张卡各有空闲,不表示单个分配能使用两卡总量。模型执行方式决定分片与峰值。


容器 USB 设备访问:映射、权限与重插

宿主机出现设备节点,容器却看不到,是访问边界问题;刷新应用列表不会补上创建时的设备配置。


静态 IP 多网卡:默认路由与地址冲突

配置静态地址后反复掉线,应分开检查链路、地址冲突与路由,而不是只改 DNS。


地图验收:覆盖、重复定位和变化环境

地图看着完整不表示导航可用。应检查通行区域、定位重复性和环境变化。


点云与 IMU 融合:时间同步先于参数调优

运动时点云拉伸,可能来自时间偏差和扫描运动,而不是单一滤波参数。


里程计漂移:局部连续与全局校正

轮速里程计长期偏移,通常不是简单清零能解决。打滑、尺度和积分误差需分别分析。


ROS 2 QoS:发现话题却收不到数据

话题存在但订阅无消息,除了网络还应核对发布订阅 QoS 兼容性。


机器人坐标系:map、odom、base 与传感器

同一个位置在不同坐标系中的数值不同,目标识别结果要转到控制参考系再使用。


深度与彩色对齐:内参、外参与无效像素

彩色目标中心不能直接在深度数组中同索引取值,两个成像单元可能具有不同视野与坐标。


颜色空间分割:HSV 范围和亮度变化

RGB 直接筛颜色受亮度变化影响,转换 HSV 可分开部分色调与亮度条件,但仍需检验曝光和白平衡。


视觉数据真值:标签、元数据与原始观测

文件名或结构字段可能来自另一次识别,不能因为它们相同就当成独立真值。


转台偏心:机械重复性怎样影响视觉检测

旋转中心偏移会改变边缘位置、相机距离和光照,需将机械误差转成成像误差评价。


面阵窄条拼接:颜色、位移和队列节奏

面阵采集窄条拼接可用于特定运动场景,但颜色错误和吞吐不足会同时破坏结果。


线扫成像:行频、运动速度与像素比例

单线图像要通过相对运动形成二维展开,运动采样比例和横向光学比例分别决定几何。


图像配准的边界:几何对齐不能恢复反光

轮廓对齐以后异常热点仍移动,说明问题可能来自亮度和光路,而不仅是位置。


正常特征库维护:怎样避免异常混入

自动收集高分样本有助于复盘,但自动加入正常库可能把缺陷也学习进去。


异常分数阈值:误报、漏检与区域差异

热力图看着明显,不代表阈值适合生产。阈值需要对照错误成本和固定验证集。


大图切块检测:边界上下文与坐标合并

缩小大图损失细节,切块又可能产生边缘伪异常,裁剪策略要独立验证。


PatchCore 正常样本学习:反光为何成为异常

缺陷样本少时正常特征库有吸引力,但反光变化也可能给出高异常分。


视觉触发与工件身份:防止错图错件

检测结果正确却剔除错误工件,可能是触发、图像和执行身份没绑定。算法准确性不能代替时序关联。


录像分段:断电恢复与事件前后片段

长文件在异常退出后可能难以播放,事件还需要定位前后时段。录像分段需兼顾封装完整性与索引。


边缘数据保留:容量预算与清理顺序

录像、事件图和日志共用磁盘时,保留天数不是一个静态数字,实际码率与事件量会改变需求。


Node-RED 上下文状态:重启后哪些变量还在

流程运行时去重正常,重启后又重复执行,可能是状态只保存在内存。上下文持久性需要显式设计。


工业采集时间戳:扫描周期与平台时间

多个通道在同一页面显示,不证明在同一时刻测得。顺序轮询会引入通道间时间差。


工业远程命令:受理、执行和完成回执

平台显示命令发送成功,设备却没有动作,常因把通信受理当成执行完成。


2021

OPC UA 数据接入:节点身份、类型与质量

能浏览服务器节点不表示已经理解测点。变量类型、时间戳和质量状态决定数据能否进入业务。


现场报表追溯:统计结果如何反查原始测点

汇总数字合理却无法解释来源,会削弱日报可信度。报表应保存查询条件、测点版本和计算规则。


备份验收:从文件存在到独立恢复

任务成功退出不能证明灾难后可恢复,程序、配置和数据库版本应一起确认。


设备协议更新:新字段和旧终端兼容

新增字段可能让旧终端误读,版本和兼容行为应显式定义。


监测告警处置:保留原始证据与状态变化

列表显示已处理而没有原因,难以区分设备故障、误报和真实异常。


多进程处理:模型加载、队列与退出回收

进程隔离也会重复加载模型,需预算内存并管理未完成任务。


线程池并发:任务状态与共享资源隔离

线程池不必然提升吞吐,共享字典和输出路径还可能互相覆盖。


图像输出检查:保存、解码与坐标回写

生成路径不等于保存成功,文件存在不证明完整,还需检查目标坐标。


前景分割:掩膜误差怎样影响后续检测

先分离目标可减少背景,也可能删掉边缘缺陷,分割应独立验收。


检测数据集:按场景划分避免相邻帧泄漏

连续视频随机切分让同一背景对象出现在训练与测试,指标难代表新场景。


特征检索提速:FAISS 与传输一起计时

前向快而全链慢,可能是特征转换、CPU 查询或逐条检索成本。


视觉模型评估:固定数据、阈值与错误分布

权重还在而旧指标不可追溯,应重建测试,不能补写目标精度。


视频帧时间戳:采集、等待和处理顺序

最新显示帧可能来自旧缓存,算法延迟应追踪完整时间链,而非只记前向时间。


RTSP 和 ONVIF:入口与媒体延迟分开比较

不同入口画面延迟不同,先核对最终 URI。ONVIF 可能最终仍使用相同 RTSP 流。


工程图对齐:裁剪、匹配和内点分布

有匹配点不代表全图叠加正确,边框文字可能贡献大量无关匹配。


图像红蓝反转:Bayer 与 RGB 格式契约

红蓝交换可能发生在去马赛克或显示接口,需沿格式链追踪。


Python 队列背压:有限缓存与丢弃策略

采集快于处理时无限队列会持续增加延迟与内存。必须明确样本保留价值。


ARM 安装 dlib:Building wheel 在哪个阶段

C++ 扩展安装长时间停在构建提示,先确定编译活动还是工具和资源失败。


时序聚合:窗口边界与晚到数据

不规则上传按行平均,可能给高频区间更大权重。统计需先明确目标和时间权重。


设备日报计算:公式、单位和缺测

日报支持四则运算以后,仍可能因采样不同步或单位不一致产生错误。公式需绑定时间窗口和输入语义。


报警限流:优先级、恢复与持续状态

同时告警时重复提示可能遮挡更重要变化,限流需管理事件身份和优先级。


信号防抖:时间过滤和滞回如何选择

开关抖动和阈值波动导致反复事件,需先观察原始变化时间与幅度。


设备数值换算:原始值、单位与校准

两万多寄存器值不直接等于电压或温度。换算需确认布局、量程和参考条件。


CSV 导入:编码、引号与字段类型

表格软件显示正常而导入错列,常与编码、引号及自动类型推断有关,需要明确文件契约。


跨域登录:CORS、Cookie 与认证状态

登录接口成功但页面未登录,可能是 Cookie 没保存或没随请求发出。响应可读与凭据可用是不同条件。


WebSocket 连接管理:重连与旧定时器

页面重建可能保留多条 socket 和定时器,服务端连接数量增加,页面仍显示旧状态。


HTTP 重试:时间预算、退避与未知结果

自动重试可能改善瞬时失败,也可能放大下游故障。调用方要限制整体预算,而非只设每次连接超时。


离线补传队列:领取、退避与幂等确认

任务长期处于 uploading,不能只看累计次数判断卡住。应检查领取、超时、租约与失败后的下一次时间。


MQTT 遗嘱与离线:异常断开和数据失效

遗嘱能辅助表达失联,但离线状态还受心跳间隔、网络分区与正常退出影响。


MQTT 主题设计:设备身份、命令和访问范围

多设备共用命令主题容易广播误执行。命名需要和设备身份、数据类型及权限共同设计。


热点缓存过期:回源并发与失效窗口

热点键过期后请求同时回源,可能造成短时过载。缓存未命中并不意味着数据库容量增加。


分页查询:排序不稳定为何重复和漏行

列表翻页出现重复记录,可能是排序键不唯一或数据在分页期间变化。分页需明确顺序和读取范围。


数据库兼容迁移:从连接成功到业务等价

驱动能连接不表示原 SQL、类型和事务假设兼容。迁移先定义业务结果的等价条件,再决定替换范围。


内网访问公网入口:回流 NAT 与分流解析

外部用户可访问公网入口,内网同一地址失败,不能只据此判断后端停止。回到本地目标的路径不同于真正外网访问。


Docker 双网络:独立局域网地址与服务互联

容器既要独立出现在物理网络,又要按服务名连接内部服务,可以研究 macvlan 与 bridge 分工。


systemd 网络配置:终端可访问而后台服务失败

同一命令在交互终端成功,服务执行却失败,应先比较运行环境。终端继承的代理、PATH 和工作目录不会自动成为系统服务配置。


服务健康检查:进程存活与业务就绪分别定义

首页能打开,数据库操作却失败,说明健康接口检查得过浅。反过来,一个可降级的依赖短暂故障也不一定需要重启整个应用。


2020

Docker 镜像构建:依赖层、缓存与运行产物

每次修改一行代码都重新安装全部依赖,构建会很慢;但过度依赖缓存又可能隐藏依赖变化。Dockerfile 的层顺序应配合文件变化频率设计。


文件上传接口:内容验证、存储路径与任务状态

上传页面进度到百分之百,只说明客户端发送完毕,服务器仍可能验证失败或尚未处理文件。接口应把传输、接收、处理与结果获取分开。


相机标定:重投影误差之外还要检查什么

标定返回一个较小误差,仍可能在工作区域测量不准。样本姿态覆盖、标定板尺寸和目标距离都影响参数可用范围。


工业镜头选型:视野、焦距和光圈分开计算

目标能否进入画面和不同深度是否清楚,是不同选型问题。焦距、传感器尺寸与工作距离决定视野,光圈还影响曝光、景深和衍射。


运动目标成像:曝光时间与速度造成多少拖影

静止目标清晰,运动后细纹消失,原因可能在曝光而非焦点。先估算目标在一次曝光期间移动多少,再决定增加照明或改变采样方式。


轮廓筛选:面积、长宽比与位置约束如何组合

分割以后常有多个候选区域,按最大面积选择不一定找到目标。目标形状、位置与邻接关系应形成明确的筛选条件。


OpenCV 二值分割:阈值与形态学各自解决什么

把暗色目标分离出来,通常先想到固定阈值。但亮度、噪声和目标内部孔洞会使结果变化,阈值选择与形态学修补应分别解释。


USB 扩展异常:用交叉测试区分线材与驱动

串口接原接口正常,接扩展坞失败,继续修改串口参数可能无效。加入鼠标等简单设备,可以判断异常是否超出某个业务驱动。


USB 串口稳定命名:编号变化与设备身份

多个适配器插拔以后 ttyUSB 编号变化,应用可能连上错误的设备。问题应由设备身份与映射管理解决,不能假设第一个端口永远属于同一模块。


SQLite 边缘存储:事务、并发写入与备份

边缘设备需要离线保存事件,SQLite 便于单机部署,但把每个线程直接写数据库,会遇到锁等待与状态不一致。存储方案要结合写入节奏和恢复要求设计。


配置文件更新:临时文件与原子替换的边界

程序写配置时被中断,下一次启动读到半个 JSON,说明文件写入也需要发布边界。直接打开原文件覆盖,会把读者暴露在中间状态。


Python 异常处理:保留错误原因并明确恢复范围

用一个 except 包住整个程序,可以让进程不退出,却也容易让错误数据继续进入后续流程。异常边界应和可恢复的操作范围一致,而不是尽量吞掉所有错误。


Python 导入异常:定位同名模块与解释器环境

标准库函数突然不存在,未必是 Python 安装损坏。项目中的 platform、json 或 logging 同名文件可能改变导入来源,同时多个解释器也会让安装与运行不属于同一环境。


无人值守称重:一车多次读数如何形成业务记录

地磅持续输出重量,但业务需要一条完整称重记录。车辆驶入、停稳、离开,以及重复称重,都需要通过过程状态而非单次数值判断。


污染源监测数据接入:时间、质量码与补传

在线监测平台需要持续采集,并在网络恢复后补齐历史。数据接入不能只保存一个数值,设备状态、质量码、采样时间与接收时间影响后续统计含义。


设备在线判断:心跳、数据新鲜度和业务可用性

终端还在发送心跳,测量值却很久没有更新。只用在线图标描述系统状态,会让使用者误以为采集功能也正常。


Node-RED 数据入口:先统一状态语义再写规则

同一设备数据可能以 Buffer、字符串或对象到达,而组合信号可能把多个条件压成一个布尔值。入口不统一,业务层会把格式错误和真实状态混在一起。


PLC 与上位机握手:处理提前回执和重复消息

上位机已经返回完成,PLC 却还停在等待,或下一轮直接被旧完成码放行。问题往往在接收、锁存与消费的时间关系,需要把消息生命周期写清楚。


Modbus 寄存器解析:地址、字节序和数据类型

两个 16 位寄存器读到数值以后,还需要确认它们是两个通道,还是一个 32 位量的高低字。错误拼接可能生成看似连续却完全错误的物理值。


RS485 采集超时:从物理链路到有效回包

串口软件显示 connected 以后仍然 timeout,说明打开端口与设备返回有效帧是不同阶段。总线、权限、协议参数和寄存器解释需要分别取证。


MQTT 保留消息:最新状态不能当实时事件

新订阅者一连接就收到设备状态,这通常是保留消息的用途。但如果把同一条状态当作新发生的报警,重新连接就可能重复触发业务。


MQTT QoS 与业务去重:收到一次和执行一次不同

设备使用较高 QoS 后,业务仍可能重复处理。协议确认覆盖的是消息传递阶段,应用的数据库写入和执行结果还需要自己的身份与确认机制。


接口重复提交:用幂等键处理回执丢失

请求已经被服务端处理,客户端却因为超时又发一次,会导致重复订单或重复操作。网络结果未知与业务处理失败不能直接画等号。


Git 管理部署版本:代码、配置与镜像一起追踪

代码回退了,服务行为却没有恢复,原因可能是镜像、依赖或数据库状态没有一起回退。交付版本应描述真正运行的组合,而不是只记一个分支名字。


设备时间不一致:采集时间、接收时间与时区

同一事件在设备、服务器和页面显示不同时间,可能是时区,也可能是设备时钟漂移。要先确定每个时间字段代表什么,不能把它们按字符串相等来核验。


Linux 日志增长:如何保留排查证据并控制磁盘

服务稳定运行一段时间后根分区满,日志可能来自 journal、容器或应用目录。直接删除全部日志会丢失故障证据,应先确认增长源与保留要求。


Java 数据库连接池:连接超时与 SQL 超时分开查

接口等待很久后报超时,可能在等待连接,也可能已经连接却执行 SQL 缓慢。统一把超时值调大,会增加请求积压并掩盖真正的瓶颈。


Spring Boot 配置加载:环境变量与配置文件谁生效

修改配置文件以后应用仍使用旧地址,排查应确认最终生效值,而不是只比较仓库里的文本。启动参数、环境变量、Profile 与外置配置可能覆盖包内默认设置。


Docker 服务名访问:为什么 localhost 找不到另一个容器

应用与数据库各自启动正常,但应用连接 localhost 失败。容器网络隔离让同一个地址在不同环境里代表不同目标,应先画出发起请求的一方。


Redis 缓存更新:过期策略与数据库一致性

数据库已经修改,页面仍显示旧值,常见原因是缓存没有按同一个业务键失效。缓存提升读取速度,同时也增加了一份数据副本,需要写清什么时候可以使用旧值。


数据库事务:提交、异常回滚与跨接口一致性

一个业务动作更新多张表,如果中间异常,只恢复页面提示还不够,数据库可能已经留下部分状态。事务设计应从完整业务动作开始,而不是每条 SQL 各自提交。


MySQL 慢查询:先读执行计划再添加索引

页面列表越来越慢时,给每个字段添加索引并不能保证改善。问题可能是扫描范围、排序、连接顺序或返回数据量,应先保留原 SQL 和实际查询条件。


Nginx 反向代理路径:多一个斜杠为何请求不同

浏览器访问 /api 正常,经过反向代理以后后端却收到不同路径。很多此类问题来自 location 与 proxy_pass 的 URI 处理,不应首先怀疑数据库或鉴权。


用 systemd 管理后台服务:启动、退出和日志

终端里长期运行的程序,需要在主机启动后自动运行,并能保留退出原因。把命令追加一个 &,只解决当前终端阻塞,无法明确描述运行用户、工作目录和恢复条件。


Docker 数据卷:容器删除后哪些数据还能保留

应用重建以后出现空目录,并不一定是数据被删除,也可能是卷名或挂载目标改变。部署前应先把程序文件、运行配置、可重建缓存和必须保存的业务数据分开。


Linux 服务访问失败:从监听端口找到实际进程

进程存在、启动脚本返回成功,浏览器却连接不上。排查需要先确定请求发送到哪里、哪个进程实际监听、监听范围是否包含目标网卡。仅比较进程名称,容易把旧进程与新实例混在一起。


用 Docker Compose 部署 Web 服务:网络、数据与故障恢复

从一个可验证的小服务开始,把容器网络、持久化、健康检查和故障恢复的条件写清楚。


2019

物联网与视觉研究复盘:把能力边界写进交付清单

研究成果如果只剩演示视频,下一次接手很难知道环境、输入和失败条件。


文档视觉小应用:从上传到标题、印章与复核结果

模型能画框之后,还要让用户找到原页、理解失败并保存确认结果,才能成为完整应用。


物联网小系统:把采样、上报、趋势和告警串起来

一个环境监测演示要真正闭环,需要从采样一路追到趋势与异常恢复,而不只是让看板有数字。


物联网视觉联动:识别到了不代表动作完成

检测到目标后发出控制命令,整个流程至少有观察、决策、发送和执行反馈四个阶段。


边缘视觉队列:图像处理慢时不要无限堆内存

相机持续采图,推理速度跟不上时,队列会把有限内存吃完。


物联网与视觉融合:事件、图片和设备状态如何对齐

一张图和一条传感器消息时间接近,不足以证明它们来自同一次业务事件。


视觉应用:低置信度结果怎样进入人工复核

让模型必须给出一个确定答案,会把不确定输入包装成业务事实。


视觉泛化:换扫描仪后效果为何可能变化

同一模型在一种扫描来源正常,换来源后失误增多,可能是输入分布发生了变化。


视觉迭代:误检样本怎样进入下一轮数据

线上误框一段红字后,直接改阈值可能同时漏掉浅色印章。


物联网告警:触发、持续、恢复要有完整状态

阈值每超过一次就发一条告警,可能把同一个持续异常变成几百条重复通知。


视觉服务性能:解码、预处理和推理分别计时

只报告网络前向耗时,会忽略文档读取、图片解码、后处理和结果保存。


边缘视觉部署:先算内存、温度和并发预算

模型在开发机能跑,不代表小型边缘设备能同时承担采集、推理和界面。


物联网命令:谁能控制、控制了什么要可追溯

界面上能看到设备,不意味着拥有执行全部命令的权限。


叠彩山业务维权记录

录音记录


物联网设备身份:批量共用一个密码的问题

所有设备使用同一凭据,一台泄露就可能影响整个群体。


物联网安全研究:TLS 加密还需要验证对端身份

连接启用了 TLS,却关闭证书校验,仍然不能确认连接到的是预期服务。


大幅文档切片:边缘目标和重复框怎样合并

切片让小目标变大,也可能把一个标题切成两半,并在重叠区预测多次。


文档小目标研究:输入缩小后还剩多少像素

原图里清楚的印章,缩到网络输入后只剩很少像素,模型再复杂也无法利用已经丢掉的细节。


视觉评估研究:阈值选择要对应业务代价

同一模型把阈值调高,误检少了,漏检可能同时增加。


视觉训练研究:文档增强要像真实成像

把图片旋转、变色和裁剪到很夸张,不一定让模型更强。


视觉训练研究:负样本与类别不均衡怎样观察

多数页面没有印章,少数页面有多个印章。


YOLOv3 文档研究:锚框要与目标尺寸分布匹配

自然图像的默认锚框未必适合宽标题和小印章。


文档视觉:旋转图片时标注框也要一起旋转

增强后的图片方向正确,标签仍留在旧位置,模型就会被错误监督。


文档视觉:透视矫正需要可靠的四角对应

手机斜拍页面像梯形,透视变换能校正平面关系,但四角顺序错误会把文字翻转或交叉。


视觉几何:等比例缩放补边后的框怎样还原

把补边后的预测框直接除以比例,可能整体偏移。


树莓派网关:断网缓存需要容量和补传规则

本地缓存能应对短断网,但磁盘有限,恢复后也不能无限速把历史数据压向服务端。


树莓派网关:两个寄存器怎样组合成浮点数

两个十六位数合成三十二位浮点时,字节顺序和字顺序都可能影响结果。


树莓派网关:Modbus 文档地址与协议偏移

手册写四万开头地址,库函数却要求从零开始的偏移。


Node-RED 工程化:流程文件之外还要保存什么

导入 flows.json 后缺节点,说明交付遗漏了运行依赖。


Node-RED 流程验证:用固定消息回放检查转换

节点分别能跑,串起来却字段丢失。


Node-RED 0.19:文件上下文不等于每次写入立刻落盘

启用持久上下文后,异常退出仍可能丢失最近变更。


ESP32 看门狗:喂狗要反映真实进度

独立定时器一直喂狗,业务线程即使卡死也可能不重启。


ESP32 OTA:下载完成之前先设计失败恢复

无线升级不只是把固件下载到设备。


ESP32 配置持久化:NVS 键值也需要版本

固件升级后读取旧配置失败,可能是字段类型和配置结构已经改变。


物联网时间研究:采样时刻与接收时刻不能混成一列

断网补传后,几小时前的温度突然堆在当前时间,趋势图就失去了真实过程。


MQTT 重连:会话恢复与业务补传分别设计

设备重连后收到旧消息,可能是会话策略正常恢复。


MQTT 设备在线:遗嘱、心跳和数据新鲜度分开看

代理显示客户端在线,但传感器已经停止采样,说明连接健康和数据健康不是同一指标。


2018

视觉模型交付:权重、阈值和数据口径一起版本化

同一个权重文件换了阈值,业务结果就可能变化。


Darknet 应用服务:输入、任务状态与结果文件

把命令行包成 HTTP 接口后,还需要处理并发、文件归属和进程失败。


文档应用:标题定位、裁剪与 OCR 怎样衔接

标题检测框可以减少 OCR 输入范围,但缩放和坐标还原错误会让裁剪漏字。


印章检测应用:找到印章与验证真伪是两项任务

检测器给出 seal 框,最多说明模型认为那里像训练中的印章区域,不能据此判定文件有效。


文档检测研究:印章压住标题时怎样标注

标题和印章重叠时,如果为了让框不重叠而改变标注,会让模型学到不一致目标。


印章检测研究:先建立颜色与轮廓基线

红色印章很醒目,可以先做简单视觉基线,但不能据此认定颜色分割足够处理所有文档。


视觉评估:IoU、召回率和误检不能只看一个分数

框画得像样不代表检测满足业务。


Darknet 训练:断点、配置和数据版本一起保存

只备份一个 weights 文件,之后可能无法解释它是用哪份数据与配置训练出来的。


YOLOv3 自定义训练:classes 与 filters 必须对应

把类别数改成两类,却只修改一个检测头,会让配置与权重维度不一致。


文档数据集:同一原件的变体不能跨训练和测试

训练集与测试集文件名不同,也可能是同一页经过旋转或压缩后的副本。


文档标注:像素框怎样正确转成 YOLO 坐标

框在标注工具里正确,训练图上却偏移,常见原因是坐标基准、缩放或宽高换算错误。


文档标题检测:先约定什么才算标题

大字体不一定是标题,页眉、表头和正文强调也可能很醒目。


Darknet 自定义数据:路径、类别与标注一一对应

训练能开始但效果异常,先检查数据文件关系,而不是立即修改网络结构。


Darknet 与 YOLOv2:检测头输出的是什么

检测框和类别不是图像里所有语义。


Darknet 研究:先跑通 CPU,再核对 GPU 构建

编译器、CUDA 和 cuDNN 同时变化时,出错很难定位。


Node-RED 接米家思路:用适配层隔开设备协议

规则直接依赖某个品牌的原始字段,换设备时就要重画全部流程。


智能家居规则:阈值附近抖动要用迟滞处理

温度在阈值附近波动,设备就反复开关。


米家与本地自动化:断网后哪些能力仍然成立

“支持本地控制”需要说明是哪条链路。


树莓派研究:UART 能接上软件之前先确认电平

串口编号、TX/RX 和电平都正确,才有机会讨论协议。


树莓派研究:把采集脚本交给 systemd 管理

SSH 断开后采集停止,说明脚本仍依赖终端会话。


树莓派研究:随机重启先查供电与存储

程序偶发退出、文件系统异常或板子重启,不一定是业务代码造成。


Arduino 串口:先定义一条命令怎样结束

串口读到一两个字节就解析,可能把半条命令当完整消息。


Arduino 编程:用 millis 替代长时间 delay

长时间 delay 让灯按计划闪,却也让按键与通信处理暂停。


Arduino 环境:板卡核心与库版本怎样共同影响编译

同一份 sketch 换电脑后不能编译,可能是板卡核心或库版本变化,而不是源码突然出错。


ESP32 联网:连接、取地址与业务上线分开

Wi-Fi 连接事件出现,不表示设备已经拿到地址,更不表示 MQTT 业务已经恢复。


ESP32 采样:ADC 原始值不能直接当电压

读到一个 ADC 数字,只能说明转换器输出了原始计数。


ESP32 入门:先打通编译、烧录和串口监视

串口能识别板子,仍可能因为工具链、启动模式或供电导致烧录失败。


Node-RED 异常处理:重试应有边界和原始身份

异常节点接回输入口,看起来实现了自动恢复,也可能形成无限循环与消息洪峰。


Node-RED 状态:context、flow 与 global 的归属

两个设备共用一个计数变量,会让状态互相串扰。


Node-RED 入门:先看完整 msg,再接下一根线

Debug 面板里只有一个数字,很难知道下游期待的 topic、时间和设备身份是否还在。


米家研究:设备、网关、云与授权的关系

米家应用能控制设备,不代表外部程序已经拥有相同接口和权限。


物联网基础:HTTP、MQTT 与 CoAP 按交互方式比较

协议选择不能只比较报文大小。


物联网基础:设备数据契约先定义单位和质量

温度值都是二十多,不代表每台设备使用相同单位、量程和校准关系。


MQTT 保留消息:适合状态,不适合随便保存动作

新订阅者立刻收到一条旧消息,可能是 retained(保留消息)机制正常工作,不是设备刚刚执行了一次。


MQTT QoS:协议确认不等于业务只执行一次

把 QoS 设置为较高级别,也不能直接宣称下游业务永远不会重复处理。


物联网协议:命令、遥测和状态主题分开设计

所有数据都发到一个主题,接收端很快就会靠猜字段判断用途。


2017

车灯控制研究:命令已发出与灯真正改变要分开验证

发送函数返回成功,只说明数据进入某层发送流程,不能直接作为物理动作完成证据。


车灯控制台架:先在 vcan 上验证左右灯状态机

真实车辆协议尚未确认时,可以先验证上层状态机与通信封装,避免把软件逻辑错误带到硬件试验。


大众尚酷车灯研究:网关可能隔开诊断口与目标模块

诊断接口能看到一些车辆数据,不代表可以直接访问灯光模块所在的全部网段。


大众尚酷 CAN 研究:怎样筛选左右灯候选信号

某个字节与转向灯同时变化,只能成为候选证据,不能直接认定它就是控制位。


车联网学习:先用 SocketCAN 建立可重复的只读记录

分析车灯动作需要带时间和实验条件的日志,只有一张报文截图很难区分因果。


车联网学习:CAN 仲裁、帧与物理层先分清

接上两根线看到报文,只是研究开始。


Android 交付:用一张场景表验证完整软件

一台手机上点通一次,不足以说明应用可以交付。


Android 发布:调试包与正式签名包的区别

调试安装没问题,替换正式包却失败,可能是签名身份不一致。


Android 小应用实作:从列表、编辑到本地保存闭环

把控件分别跑通之后,需要一个完整用户任务来验证应用是否真正可用。


Android 权限:清单声明与运行时授权分别处理

清单已经写了权限,功能仍然被拒绝,可能是运行系统与目标 SDK 采用了运行时授权机制。


Android 本地存储:SQLite 建表与版本升级

应用升级后本地表结构改变,直接删库重建会丢掉用户数据。


Android 网络:请求放到后台,结果回到有效界面

界面卡住或抛网络线程异常,说明请求执行位置需要与 UI 更新位置分开。


Android 列表:RecyclerView 复用时必须重绑完整状态

快速滚动后某行出现别人的勾选或图片,通常是复用视图残留了旧状态。


Android 界面:dp、sp 与真实像素分开设计

同一像素宽度在不同手机上显示大小不同。


Android 深入:旋转屏幕后为什么重新创建页面

旋转后输入消失,不一定是控件保存失效,而是页面经历了重新创建。


Android 从零到应用:让第一个 Activity 真正在设备运行

编辑器能预览布局,不代表 APK 已安装,更不代表启动入口配置正确。


Android 工程结构:模块、Manifest 和资源目录

找不到入口页面、资源引用失败或依赖没有生效,常常是修改了错误层级的文件。


Android 开发起步:JDK、SDK、Gradle 与 IDE 的关系

安装 Android Studio 后,工程仍可能因为 SDK 或 Gradle 版本不匹配而无法构建。


前端深入研究:组件接口要表达状态与事件

组件把界面拆小,却可能通过共享变量重新绑在一起。


前端深入研究:新布局能力要配合回退方案

新浏览器里布局漂亮,旧浏览器却堆成一列,说明技术选型需要覆盖真实使用环境。


前端深入研究:编辑草稿与服务器事实分开保存

用户正在修改表单时,后台刷新覆盖了输入,通常说明临时草稿与已保存记录共用了同一状态。


深入 PostgreSQL:窗口函数保留明细又计算排名

既想显示每条订单,又想看到该客户最近一单,普通聚合会把明细折叠掉。


深入 PostgreSQL:递归 CTE 查询组织树

查询一个部门及其所有下级,固定写几层 join 无法覆盖不确定深度。


深入 PostgreSQL:JSONB 与关系字段各放什么

把所有字段塞进 JSONB 很灵活,也可能让约束、统计和查询变得难以管理。


深入 PostgreSQL:B-tree、GIN 与 BRIN 怎样选择

数据库支持多种索引,并不表示新类型就更适合当前查询。


深入 PostgreSQL:EXPLAIN ANALYZE 会真正执行语句

执行计划能解释访问路径,但带 ANALYZE 的检查不是纯静态查看。


深入 PostgreSQL:更新为什么会留下旧版本

表频繁更新后体积增长,不一定是数据行数增加。


深入 PostgreSQL:pg_dump 成功后还要验证恢复

备份文件生成并不说明能恢复应用。


深入 PostgreSQL:编码、时区与时间字段语义

同一时刻在两台机器显示不同,可能是时区呈现差异;乱码则需要沿字符编码链路分析。


深入 PostgreSQL:先确认连到哪台库和哪个 schema

表明明存在却提示找不到,或查到另一组数据,先别急着重建表。


公司经营笔记:需求变更要连到工期和验收

客户说“顺手加一个小功能”,实际可能改变接口、数据结构和验收路径。


公司经营笔记:项目毛利里哪些成本容易漏掉

项目报价看起来有利润,交付后却不赚钱,可能是实施、差旅、返工和售后没有进入估算。


公司经营笔记:现金还能支撑多久要按情景计算

把现金余额除以本月支出,得到的月份数可能忽略回款延迟和一次性付款。


互联网投融资笔记:资料包应让数字能追溯

同一个收入数字在汇报、合同表和银行流水中口径不同,会使经营判断失去基础。


互联网投融资笔记:投前、投后与稀释的简单演算

说出让百分之二十股权时,需要先明确分母是投前还是投后,以及是否包含其他安排。


互联网投融资笔记:融资要解决哪一个经营问题

融资不是产品成立的证据。


2016

高并发系统研究:过载时拒绝比无限等待更可控

入口持续接收超出能力的请求,会让排队、内存和超时一起增长。


高性能研究:减少对象分配之前先量化来源

看到垃圾回收耗时就建立对象池,可能增加共享状态和内存保留,反而让程序更复杂。


高性能框架研究:Disruptor 的序号比环形数组更关键

环形数组只是存储形式。


Redis 缓存研究:热键与大值分别怎样拖慢系统

单个键访问过于集中和单个值过大,是不同的压力来源,处理方式不能混用。


Redis 缓存研究:热点过期后的回源洪峰

一个热点键过期后,大量请求同时查数据库,缓存本身正常也可能让下游承受突发压力。


Redis 缓存研究:先更新数据库再删缓存仍有竞争

Cache Aside(旁路缓存)常用数据库更新后删除缓存,但并发读写仍可能产生短暂陈旧值。


分库分表研究:全局排序和聚合会付出什么成本

每个分片取二十条后拼起来,不能直接当成全局第二页。


分布式编号研究:时间、节点与序号的约束

分库后自增编号不再天然全局唯一。


分库分表研究:分片键要跟主要查询走

按用户分片后,按订单号查询却不知道去哪一库。


Netty 研究:ByteBuf 的引用计数与跨线程传递

内存增长不一定出现在 Java 堆里。


Netty 研究:EventLoop 里为什么不能随便查数据库

一个通道处理器里执行慢查询,可能拖住同一事件循环负责的其他连接。


Netty 研究:粘包拆包其实是消息边界问题

一次 write 不对应一次 read。


高并发研究:平均延迟会遮住哪些问题

大多数请求很快,少部分等待数秒,平均值仍可能看起来不错。


高并发研究:压测客户端也可能掩盖过载

固定几个线程等响应再发下一次请求,服务变慢时客户端发得也更慢,可能掩盖真实排队压力。


高并发研究:用 Little 定律理解在途请求

吞吐没有提高,请求数却越积越多,通常意味着系统在用排队换取更长等待。


Spring Cloud 隔离:慢服务不能占满全部请求容量

多个接口共享一个执行池,一个非关键依赖变慢后,也可能挤占关键业务的线程。


Spring Cloud 调用链:每层超时要服从总预算

三层服务各自超时一秒,加上重试后,用户可能等待远超一秒。


Spring Cloud Zuul:路径转发与业务权限的边界

网关能把请求转到服务,不代表被调接口就可以省略数据权限检查。


Spring Boot 定时任务:多实例会不会重复执行

单机时每天运行一次,部署两个实例后可能运行两次。


Spring Boot 异步方法:线程边界会带走哪些上下文

把慢操作标为异步后,请求很快返回,但任务仍可能失败,而且原事务不会自动随线程移动。


Spring Boot 性能:连接池大不等于数据库更快

请求排队时把连接池翻倍,可能把等待从应用移到数据库,并增加锁竞争。


前端性能研究:读写布局交错为什么会变慢

循环里每改一次样式就读取尺寸,可能迫使浏览器反复计算布局。


前端安全研究:innerHTML 与纯文本输出

把评论字符串交给 innerHTML,浏览器会按 HTML 解析,而不只是显示文字。


浏览器跨域:预检请求与业务请求分开看

接口在命令行能调用,浏览器却拒绝读取结果,可能是跨域访问规则而不是服务器没启动。


深入 JavaScript:搜索请求返回乱序怎样处理

用户先搜甲再搜乙,乙先返回、甲后返回时,旧结果可能覆盖当前输入。


深入 JavaScript:setTimeout 的零毫秒不是立即执行

计时器延迟写成零,回调仍会等待当前任务结束。


深入 JavaScript:事件委托为何适合动态列表

列表不断添加新行,为每行单独绑定处理器会增加管理成本。


深入 JavaScript:this 由调用方式决定什么

把对象方法赋给另一个变量后再调用,this 可能不再指向原来的对象。


深入 JavaScript:循环回调为什么都读到最后一个值

循环中创建多个回调,最后触发时却都看到同一个编号,原因在于共享了同一变量绑定。


深入 JavaScript:变量提升不会替你完成赋值

在声明前读取变量得到 undefined,不代表那行赋值已经被执行。


深入 CSS Flexbox:为什么子项有时不肯缩小

设置 flex 后,长文件名仍把卡片撑破,问题可能来自子项默认的最小尺寸约束。


深入 CSS:浮动、父容器高度与 BFC

子元素浮动后,父容器背景像消失了一样,常见原因是普通文档流没有为浮动子项撑出同样高度。


深入 CSS:盒模型中的宽度究竟包括什么

两个看似各占一半宽度的元素,加上 padding 后却换行,原因通常在盒模型计算。


彻底卸载 Navicat Premium for Mac

小计安装过程


深入 HTML:图片尺寸、比例与页面跳动

图片加载前页面很短,加载后文字突然下移,往往是没有提前保留布局空间。


深入 HTML:表单提交的默认行为与校验

点击按钮突然刷新页面,有时不是 JavaScript 失效,而是按钮处在表单内并触发默认提交。


深入 HTML:语义结构比 div 数量更重要

页面能显示不等于结构清楚。


2015

Spring Cloud 学习:跨服务排查先打通请求身份

一个请求经过多个服务,只靠各自本地时间搜索日志,很难还原完整路径。


Spring Cloud Hystrix:隔离和降级不能伪造成功

一个慢依赖占满线程后,可能拖垮原本不依赖它的请求。


Spring Cloud Config:配置仓库也要有版本依据

配置中心把文件集中起来,但程序究竟读取了哪一版配置,仍需要可追踪。


Spring Cloud Ribbon:负载均衡选中实例以后仍可能失败

客户端负载均衡把请求分配给实例,不会自动消除单个实例的故障和请求副作用。


Spring Cloud Eureka:注册成功不等于所有调用方立刻可见

服务已经注册,另一端暂时找不到实例,可能是注册、缓存和拉取周期共同作用。


Spring Cloud 学习:先划服务边界,再接注册中心

把单体每个模块都拆成服务,可能只增加远程调用和部署成本。


深入 MySQL:读写分离为什么会读到旧数据

写入主库后立刻从副本读取,可能看不到刚刚提交的记录。


深入 MySQL:redo log 与 binlog 各自解决什么

都叫日志,redo 与 binlog 却处在不同层次。


深入 MySQL:EXPLAIN 的估计不能当成实测

执行计划有 rows 数字,但它不是本次查询真实扫描行数。


深入 MySQL:死锁要从等待环看起

死锁不是某条 SQL 天生有问题,而是多个事务的持锁与等待形成了环。


Linux tomcat https访问设置

小计安装过程


深入 MySQL:一致性读与当前读分开理解

同一事务先后读取数据是否变化,与隔离级别和读取类型都有关系。


Ubuntu 12.4 安装Docker

小计安装过程


深入 MySQL:联合索引怎样利用最左前缀

索引包含三个字段,不意味着任意一个字段单独查询都能获得相同收益。


MyBatis:分页不只是给 SQL 加 limit

翻到第二页出现重复记录,可能是排序不稳定,也可能是第一页之后数据发生变化。


MyBatis:批处理执行、刷新和事务提交

批量接口返回了控制流,不代表每一行都已被数据库成功写入。


MyBatis:一级缓存不等于全局实时数据

同一个查询在一个会话中重复执行,可能没有再次访问数据库。


MyBatis:联表结果的别名与 resultMap

两张表都有 id 和 name,联表后直接映射,容易让字段来源变得含糊。


MyBatis:动态 where 与空条件的业务风险

动态查询没有语法错误,却可能在条件为空时查出全表。


MyBatis:占位参数与字符串替换的边界

把用户输入直接拼入 SQL,即使页面限制了输入,也会把数据与语法混在一起。


Spring Boot 测试:不要每个规则都启动整个容器

业务判断很简单,却每次都启动完整应用,反馈速度会被环境成本拖慢。


Linux后台进程管理利器:supervisor

小计安装过程


Spring Boot 部署:可执行 jar 与外部配置

可执行 jar 简化交付,但部署仍需要明确运行身份、工作目录、配置来源和日志位置。


Spring Boot:把零散配置收敛成有类型的对象

配置散落在多个字符串读取语句中,字段拼错和单位不一致都难以及时发现。


Spring Boot Actuator:健康响应要说明检查了什么

一个进程能响应 HTTP,不表示数据库和关键依赖已经可用。


Spring Boot 数据访问:事务要放在业务边界

一个服务方法先写订单再写明细,需要作为整体成功或整体失败。


Spring Boot Web:表单校验与业务校验分层

接口接受了 JSON,并不表示其中所有值都能用于业务写入。


Spring Boot 配置:同一个端口为什么读取了另一个值

配置文件写了端口,启动后却用了别的值,通常需要查看属性来源与优先级。


Spring Boot 深入:自动配置为何会生效或退让

添加一个依赖后行为变了,往往是自动配置条件被满足。


Spring Boot 入门:从一个可执行 Web 工程开始

Spring Boot 的方便之处,是把常见 Web 依赖和启动方式组织起来。


研究 Git:小提交应该按业务意图拆分

提交越小不一定越清楚。


研究 Git:用二分查找定位回归提交

历史提交很多时,逐个检查成本高。


研究 Git:fetch、pull 与远端跟踪分支

看到 origin/master 有新提交,不代表本地 master 已经包含这些变化。


研究 Git:撤销提交与移动分支不是同一操作

线上发现某次改动有问题,撤销业务变化和删除历史记录是两种不同意图。


研究 Git:rebase 改变的是提交身份

rebase 能让历史更线性,但它不是把原来的提交原封不动搬过去。


研究 Git:合并冲突解决的是意图,不只是标记

冲突标记能够指出文本重叠,却不能告诉我们两个人原本想实现什么。


研究 Git:忽略规则为什么挡不住已经跟踪的文件

把配置写进 .gitignore 后,Git 仍提示它有修改,因为忽略规则主要作用于未跟踪路径。


研究 Git:分支只是指向提交的可移动引用

创建分支很快,因为它不需要复制整个工作目录。


研究 Git:工作区、暂存区与 HEAD 三份状态

文件改完后直接提交,有时会漏掉刚写的内容。


2014

团购网站创业:把客服问题变成可追踪的产品反馈

同一问题反复由客服口头解释,意味着规则、页面或流程可能有缺口。


阿里云服务器Ubuntu安装jdk7

小计安装过程


阿里云服务器Ubuntu安装mysql

小计安装过程


阿里云服务器Ubuntu安装tomcat

小计安装过程


团购网站创业:浏览、支付与核销分别看转化

访问量上升却没有收入,或付款很多却很少核销,都需要拆开漏斗观察。


团购网站创业:商家上线先把履约条件说清楚

商家愿意提供优惠,不等于已经具备线上售卖条件。


Java Web 部署:端口、上下文路径和代理地址

服务器能打开 Tomcat 首页,却打不开应用,说明网络入口和应用地址还需要继续区分。


Java Web 工程:WAR 包要能从干净环境重新构建

开发目录可以运行,打包部署却失败,常常是某些依赖只存在于本机。


Java Web 工程:一条请求日志应该留下什么

报错只记一句异常信息,无法知道对应哪个请求。


团购网站设计:券过期与商家结算不要共用一个状态

一张券过期,并不自动说明可以向商家结算。


团购网站设计:退款申请不等于资金已退回

用户提交退款后,系统若立即显示已退款,可能把审核、通道处理与到账几个阶段混为一谈。


团购网站设计:消费券核销怎样避免重复使用

消费券二维码只是载体,核销是否成功需要由服务端以同一条券记录裁决。


团购网站设计:成团人数与支付状态分别建模

有人提交订单,不代表已经达到成团门槛。


团购网站设计:最后一份库存怎样防止超卖

先查库存大于零再扣减,在并发请求下仍可能卖出超过库存的份数。


团购网站设计:商品、套餐与成交快照

商家修改套餐内容后,历史订单仍应能说明用户当时买了什么。


Velocity:宏、公共布局与模板缓存

多个页面复制同一段导航,改动时容易漏一处。


Velocity:输出编码要按 HTML 上下文处理

用户输入经过模板渲染后仍可能成为浏览器脚本。


Velocity:页面模型与空值约定

模板输出了变量名或空白,可能是模型缺字段,也可能是模板把空值与有效值混在一起。


Hibernate:分页查询与 N+1 不能只改 fetch

第一页只有十张订单,SQL 却执行很多次;直接把明细一起抓取,又可能破坏分页结果。


Hibernate:版本字段怎样避免覆盖别人的修改

两个人先后打开同一订单,各自保存,后保存者可能把前一个人的修改覆盖掉。


Hibernate:flush 与 commit 为什么不是同一个动作

SQL 日志已经出现 UPDATE,另一个连接却还看不到变化,这是事务可见性而非日志矛盾。


Hibernate:一对多映射中谁维护外键

集合里加入了明细,数据库外键却没有按预期变化,需要检查关联维护方而不是只看对象结构。


Hibernate:懒加载异常为什么发生在页面渲染时

服务层已经查到订单,模板访问明细时却抛错,往往因为懒加载发生在会话关闭之后。


Hibernate:瞬时、持久与游离对象的区别

对象里有一个数据库编号,不代表它当前正在被会话管理。


Spring MVC:文件上传先划清存储和访问边界

上传成功不只是收到一个文件。


Spring MVC:统一异常响应要保留错误含义

所有异常都返回“操作失败”,用户无法行动,开发也难定位。


Spring MVC:参数绑定成功不代表输入合法

请求参数能转成对象,只说明完成了类型绑定。


Spring 学习:Bean 生命周期与资源释放

连接、线程和文件句柄如果由组件创建,就需要有对应的释放时机。


Spring AOP 学习:同类内部调用为何绕过事务

方法上有事务注解,运行时却没有预期事务行为,常见原因是调用没有经过代理边界。


Spring 学习:用构造依赖说明 IoC 的价值

对象自己创建数据库访问对象时,业务规则和基础设施容易绑在一起。


Maven 依赖冲突:为什么编译和运行用到不同的类

项目能编译,运行却报找不到方法,可能是实际加载的 jar 与编译期版本不同。


Eclipse 调试:从一个断点还原请求状态

断点停住以后看所有变量,很容易被框架对象淹没。


Eclipse 配置:工程 JDK、编译级别和运行时分开检查

Eclipse 能启动,不代表工程使用了正确的 JDK。


SVN 分支与标签:复制便宜,合并仍要有依据

分支并不会自动隔离所有风险。


SVN 冲突处理:先理解双方修改,再标记解决

更新后出现冲突文件,删除冲突标记只是文本清理。


SVN 入门:工作副本、状态和提交范围

文件保存在本地,不代表已经进入 SVN 历史。


初入职场:接手旧代码先画请求链路

面对陌生项目,从头通读所有类往往效率很低。


初入职场:把“做个列表”拆成可验收任务

需求写成“做个订单列表”,开发和验收可能各自理解成不同东西。


初入职场:怎样写一份能复现的缺陷记录

一句“页面有问题”很难进入修复流程。


2013

移动互联网创业笔记:把技术学习转成可交付的小闭环

学习框架很容易停留在能运行示例。


移动互联网创业笔记:弱网下的移动接口怎样设计

移动网络断开后,用户可能不知道提交是否成功。


移动互联网创业笔记:一单赚钱不代表公司有现金

成交金额、毛利和现金余额分别回答不同问题。


移动互联网创业笔记:留存要按同批用户比较

总活跃人数增长,可能只是不断买来新用户。


移动互联网创业笔记:最小可行产品的边界

最小可行产品不是删掉一半功能,而是用最少投入验证一个足以改变决策的假设。


移动互联网创业笔记:先验证问题,再讨论功能

创业想法很容易从“可以做一个应用”开始,真正需要验证的是谁在什么情况下愿意改变现有做法。


大型支付系统学习:超时、重试与结果未知

网络超时最危险的误解,是把“没有收到成功响应”当成“对方没有执行”。


大型支付系统学习:对账不是只比较总金额

双方总金额一样,仍可能存在一笔多记、一笔少记。


大型支付系统学习:金额精度与账务分录

用浮点数计算金额,可能在累计和比较时产生难以解释的差异。


大型支付系统学习:回调验签以后还要核对什么

一个通知通过签名校验,不代表金额、订单和状态都可以直接写入本地。


大型支付系统学习:用唯一键约束重复请求

用户重复点击、网关重试和超时补发都可能把同一个业务请求送来多次。


大型支付系统学习:订单状态不能只靠一个成功标记

用户页面显示成功,与服务端确认到账,必须来自不同可信度的证据。


透彻学习 JDK:阻塞队列如何连接生产者和消费者

队列解耦了生产和消费速度,但不能消除速度差。


透彻学习 JDK:对象不可用了,为何还没被回收

业务不再使用对象,与垃圾回收器判定它不可达,是两套不同的标准。


透彻学习 JDK:堆、线程栈与永久代怎样区分

都叫内存不足,扩大堆却未必有效。


透彻学习 JDK:Future 超时以后任务停了吗

等待结果超时,只说明调用方停止等待。


透彻学习 JDK 7:ConcurrentHashMap 的分段锁

并发容器不只是给整个 Map 加一把锁。


透彻学习 JDK:线程池队列满了以后怎么办

线程池限制线程数量,却可能把压力转移到任务队列。


透彻学习 JDK:volatile 能见度不等于复合操作原子性

给计数器加 volatile 后,多线程累加仍可能丢失更新,因为一次自增不是一个不可分割步骤。


透彻学习 JDK:wait 为什么必须放在 while 中

等待通知后条件未必仍然成立。


透彻学习 JDK:start 与 run 的线程边界

直接调用 run 能得到输出,却没有创建新的执行线程。


透彻学习 JDK:字节流、字符流与乱码定位

中文读写乱码通常不是文件突然损坏,而是字节在错误的字符集下被解释。


透彻学习 JDK:反射调用失败要看哪一层异常

反射方法存在,却仍然调用失败,可能是查找参数错误、访问限制,也可能是目标方法自身抛错。


透彻学习 JDK:类加载器也参与类型身份

相同包名和类名的对象,仍可能无法互相转换。


透彻学习 JDK:try-with-resources 怎样处理两个异常

读取文件失败时,关闭资源也可能失败。


透彻学习 JDK:泛型擦除为何仍会出现类型转换错误

泛型在编译期帮助发现错误,但混入原始类型后,错误可能拖到读取元素时才暴露。


透彻学习 JDK 7:HashMap 的桶、冲突与扩容

研究 HashMap 要固定版本。


透彻学习 JDK:ArrayList 扩容与遍历删除

列表增加元素通常很快,但扩容时需要复制数组。


透彻学习 JDK:equals 与 hashCode 必须一起设计

把自定义对象放进 HashSet 后,明明相等却仍然重复,通常需要检查散列契约。


透彻学习 JDK:String 相等与常量池

String 看起来一样,引用却可能不同。


软考复习:策略、工厂和适配器不要混用

设计模式名称记得很多,遇到题目仍可能选错。


软考复习:关键路径与总时差怎样手算

项目中最耗时的任务未必在关键路径上。


软考复习:从订单表拆出函数依赖与第三范式

订单表里同时放客户地址和商品名称,查询看起来方便,修改时却会出现多个版本。


软考复习:补码、溢出与位运算边界

补码计算容易把“二进制结果”与“它代表的有符号整数”混在一起。


软考复习:用迷宫理解栈、队列与搜索

栈和队列都能保存待访问节点,差别会直接改变搜索顺序。


软考复习:时间复杂度到底在数什么

同一个双重循环,内层边界不同,增长速度可能完全不同。