- 博客(256)
- 收藏
- 关注
原创 Go 微服务框架 go-zero 深度解析
return// 校验通过后继续next(w, r)@server(middleware: Auth // 路由分组使用 Auth 中间件生成后,rest.WithMiddleware 会被 goctl 自动装配,你只需要在 svc.NewServiceContext 中把中间件实例传入。go-zero 默认 httpx.Error 返回 {"code":..., "message":...}。// 自定义业务错误Code intMsg string// logic 中返回业务错误。
2026-10-27 14:21:58
289
原创 Python LangGraph 深度解析:从 StateGraph 到多 Agent 编排
"""带最大迭代上限的自定义 ReAct 循环 Agent(兼容 OpenAI 兼容端点/Ollama)。"""# 1) 定义工具@tool"""执行 TDengine 查询并返回结果(演示用假数据)"""return f"模拟 TDengine 结果: {sql} 返回 12 条点位记录"@tool"""查询设备实时状态"""return f"{device_id}: RUNNING, 主轴负载 62%, 当前无报警"# 2) 定义状态(消息追加 + 迭代计数)
2026-10-26 16:24:42
307
原创 Python Polars 高性能数据处理引擎深度解析
Polars 是一个用 Rust 编写的列式 DataFrame 库,用「表达式 + 惰性执行 + 多线程 + SIMD」把 Python 侧的数据处理性能推到接近 C 的水平,是工业数采场景下 Pandas 的强力替代者。
2026-10-24 17:15:02
439
原创 Go 语言 TCP 网络编程与自定义二进制协议深度解析
TCP 是字节流,消息边界必须应用层自己定:长度前缀是最实用的方案,"固定头(含长度)+ 载荷 + 校验"是工业私有协议的标准骨架。长连接的核心是生命周期管理:心跳探测、指数退避重连、优雅关闭、CLOSE_WAIT 治理,比重连逻辑本身更重要——连接"假活"是工业现场最难排查的问题。Go 的心智模型是 goroutine-per-connection + 阻塞式读写:netpoller 让 10 万连接不占 CPU,代价是写侧要加锁、读侧要按 io.Reader 契约处理部分读。
2026-10-24 08:15:00
332
原创 MySQL 服务端机制与 SQL 优化深度解析:从 InnoDB 内核到工业数采业务库实战
读懂 MySQL,不是背命令,而是理解「一条 SQL 从客户端到磁盘经历了什么」。本文从 InnoDB 存储引擎、B+ 树索引、事务与锁、binlog 与主从复制四条主线,把 MySQL 的"黑盒"拆开,并给出 8 组可直接运行的生产级示例、25 条高频翻车点与工业数采场景的落地模板。
2026-10-23 13:30:00
781
原创 C++ 日志库深度解析:spdlog
如果你的 C++ 程序还在用 printf + std::cout + 手写日志文件拼接,这篇文章就是为你准备的——spdlog 如何用一行代码完成「多级别日志、格式化、滚动文件、异步落盘、线程安全」全套能力,以及为什么它被称为 C++ 生态的日志事实标准。
2026-10-23 08:59:48
301
原创 MongoDB 开源文档型数据库深度解析:从 BSON 到 WiredTiger 的柔性数据底座
文档是原子单位:以"业务对象"建模而非"表结构",嵌套表达关系,字段自由生长;BSON 是性能基础:类型标记 + 跳读遍历,投影/聚合天然高效;WiredTiger 是稳定性保证:MVCC 快照 + journal + 检查点,crash-safe 且读写并发友好;副本集是生产底线:3 节点 + w=majority 才能谈高可用;分片只在体量真实增长后引入;索引与聚合是工程师技能:文档库没有 SQL 优化器兜底,查询性能完全取决于索引设计与管道编排。
2026-10-22 13:15:00
1260
原创 Python 多线程与多进程并发深度解析
判断句:任务瓶颈在"等"用线程,在"算"用进程;GIL 只锁 Python 字节码,不锁 I/O 等待,也不锁释放了 GIL 的 C 扩展。正确姿势:并发入口永远优先 concurrent.futures 的线程池/进程池——一个单词切换模型,自带限流与复用。通信铁律:线程间用 queue.Queue,进程间用 multiprocessing.Queue/Pipe/Value;共享状态必须加锁,读也要加锁。平台一致性。
2026-10-22 08:50:11
95
原创 vLLM 开源大语言模型推理服务引擎深度解析
PagedAttention 是核心:KV Cache 分页 + 块表,解决显存碎片与浪费,是 vLLM 吞吐优势的根基。连续批处理是引擎:迭代级动态调度,让 GPU 每个 step 满载。前缀缓存/Chunked Prefill/投机解码是加速器:分别优化 TTFT、延迟稳定性和生成速度。OpenAI 兼容是生态:一行 base_url 接入一切 LLM 应用,降低集成成本。选型分层。
2026-10-21 09:00:29
450
原创 C++ 并发与内存模型深度解析:从 std::thread 到无锁编程
数据竞争 = 未定义行为:不是「可能出错」,而是整个程序行为失定义;正确性只能靠同步关系(happens-before),不能靠 sleep 撞时序。mutex 是默认答案:RAII 锁 + 带谓词条件变量可以解决 90% 的并发问题;性能问题出现后,再考虑原子与无锁。memory_order 是语言契约:relaxed 只管原子性,release-acquire 配对建立可见性,seq_cst 提供全局一致性;选择「恰好正确」的最弱序。无锁的真谛是控制缓存与重排。
2026-10-21 08:54:25
299
原创 Go 语言 WebSocket 深度解析
协议层:WebSocket = HTTP 握手 + 帧级双向通道;客户端必须掩码、服务端不掩码、Accept 由 SHA1 魔数算出;编程模型:gorilla 一读一写并发约束是铁律,用「读协程保活 + 写协程心跳 + Hub 广播」三分离架构;保活:每次 Read 前重设 deadline + PongHandler 续期,这是检测半开连接的唯一可靠手段;关闭:先 Close 帧再断 TCP,服务端停机要维护连接表逐个优雅关闭;性能:先减推送量(订阅+批量+二进制),再调库参数;慢消费者必须踢。
2026-10-16 16:23:02
357
原创 Nginx 开源 Web 服务器与反向代理深度解
http {# 限流:按客户端 IP 分桶,rate=10r/s,10m 共享内存# 连接数限制:每 IP 最多 20 个并发连接server {# burst=20:瞬时放行 20 个排队,nodelay 不延时语义:rate=10r/s 是长期平均速率;burst 是突发令牌;nodelay 表示突发请求立即处理而非排队延时(不设 nodelay 时超出平均速率的请求会按延时释放)。返回 503 表示被限流。Nginx = 事件驱动 + 多进程。
2026-10-16 16:16:03
380
原创 Qt Widgets 控件体系与布局系统深度解析:从 QWidget 类层次到布局管理器实战
public:protected:// 卡片底色// 标题// 状态文字"运行正常" : "异常停机");update();private:Qt Widgets 的本质是QWidget 双角色(控件/窗口)+ 对象树所有权 + 布局几何引擎;sizeHint(控件意愿)、sizePolicy(伸缩策略)、stretch(额外空间分配),三者必须配合理解;表单密集型桌面应用仍以 Widgets 为主力;动效/现代风格场景选 QML,两者可混合;
2026-10-14 08:55:15
172
原创 PostgreSQL 服务端机制与 SQL 实战深度解析:从 MVCC 到查询优化器
模型:进程模型 + 共享内存,每连接一 backend;MVCC 让读写互不阻塞,这是并发能力的根。正确性:WAL 预写日志保证崩溃不丢已提交事务;四档隔离级别中 PG 用快照隔离实现 RR/SERIALIZABLE。性能真相:SQL 快慢由规划器基于统计信息决定;"EXPLAIN + 统计信息新鲜 + 索引匹配"是调优三板斧。运维底线:别关 autovacuum、别让长事务悬挂、备份必须配 WAL 归档、连接用池化。生态定位。
2026-10-14 08:52:11
697
原创 FAISS 开源向量相似度检索库深度解析:从暴力搜索到十亿级 ANN
精确检索用 IndexFlatL2/IP,超过几十万条再谈 ANN;语义相似 = 归一化 + 内积,这是 RAG 场景的黄金组合;中等规模选 HNSW(免 train、召回高),大规模选 IVF+PQ(省内存),更高精度加 OPQ;IVF/PQ 必须先 train,训练集 ≥ nlist×39 且与线上同分布;FAISS 是内存索引库不是数据库,持久化、增量、分布式都要自己设计(写盘分片 + 定期重建 + 双索引合并)。
2026-10-13 13:00:00
562
原创 Docker 容器技术深度解析:从镜像分层到容器运行时的完整地图
网络模式说明使用场景bridge(默认)容器间通过网桥互通,NAT 出外网,端口映射单机多容器host容器直接用宿主机网络栈,无隔离性能敏感、端口直通none无网络纯计算、离线任务共享另一个容器的网络栈sidecar 模式自定义 bridge自动 DNS 解析(服务名即主机名)Compose 服务间通信首选# 自定义网络 + 服务名互访docker exec worker ping api # 直接 ping 服务名,无需查 IP端口映射语义。
2026-10-13 08:55:55
367
原创 Python Matplotlib 数据可视化库深度解析
采集 → 清洗 → 建模 → 结论。前三步有 NumPy/Pandas/scikit-learn,但"结论"要被人看懂,必须落到图上。设备点位(主轴负载、主轴转速、进给倍率)的历史趋势,一眼看出异常窗口;良率分布直方图 + 箱线图,直接回答"这批工件尺寸波动是不是变大了";多通道传感器相关性热力图,快速定位"哪个工艺参数在悄悄影响质量"。对象模型即一切:Figure 管布局、Axes 管坐标系、Artist 管内容;排错先问"我现在操作的是哪个对象"。工程代码用面向对象式。
2026-10-12 17:13:50
485
原创 Git 版本控制系统内部原理深度解析:从对象模型到 packfile 与合并算法
Git 是内容寻址的不可变对象数据库 + DAG 图结构:blob/tree/commit/tag 四类对象构成一切,哈希即地址即校验。三区模型(工作区/暂存区/仓库)是排障总纲:任何命令的"神秘行为"都能拆解为"它动了 index/工作区/引用的哪一部分"。分支只是引用,历史只增不改:rebase/amend/filter 都是"创建新对象、移动指针",旧对象留在库里等 GC——reflog 是最后的救命稻草。合并是算法问题。
2026-10-12 13:15:00
315
原创 FFmpeg 开源多媒体处理框架深度解析:从命令行到 libav* 全家桶
容器 ≠ 编码:排查问题先 ffprobe 分清 format_name 与 codec_name;时间基是一切:PTS/DTS 换算永远用 av_rescale_q,跨层必转;引用计数内存模型:AVFrame/AVPacket 只 ref/unref,不手工 free;send/receive 推拉模型:EAGAIN 是正常状态,EOF 要 flush 冲刷缓冲;先命令行验证、再 C API 集成:ffmpeg -vf 能跑通的效果,转成 C 就是一段可对照的滤镜图代码。
2026-10-12 08:51:05
738
原创 Redis 源码深度解析:从常用命令到内部实现
一条命令 = 事件循环单线程串行 + 字典/SDS 数据结构 + AOF/复制同步传播:理解 processCommand → call 这条链路,就理解了 Redis 全部一致性保证与性能边界。五大数据结构的编码切换(listpack/quicklist/intset/skiplist/ht)是"小对象快、大对象省"的工程平衡,也是众多性能坑的根源(编码转换一次性 O(N)、intset 不可逆升级)。持久化三件套。
2026-10-10 13:30:00
698
原创 etcd 深度解析:Go 分布式一致性 KV 存储与 Raft 共识实战
强一致是它的灵魂:所有写操作经 Raft 过半 ACK 才返回,读支持线性读,保证分布式环境下"看到的配置/锁状态一定是全网一致的"。Watch + Lease 是它区别于普通 KV 的两把利器:配置推送、服务上下线感知、锁自动释放都建立在这两个机制上,是构建自愈分布式系统的关键原语。只做协调,不做存储:它适合存"谁在干活、配置是什么、谁有锁"这种小数据高可靠元数据;数据本体交给 Kafka/TDengine/Redis。
2026-10-10 08:48:47
342
原创 Go 语言 cobra + viper 命令行应用与配置管理深度解析
cobra = 命令树 + 生命周期钩子 + 自动补全,是 Go CLI 的事实标准框架,Kubernetes/etcd/Prometheus 同款;viper = 五层优先级配置(Set > flag > env > 文件 > 默认值),配合 Unmarshal 到结构体使用才是工程正解;Changed 是判断 flag 是否设置的唯一可靠手段,默认值判断是最高频错误;配置校验与热更新(config validate + WatchConfig)是运维友好性的分水岭;
2026-10-09 16:15:00
664
原创 Go 语言 cgo 与 C/C++ 互操作深度解析:从 fwlib 直连到工业数采网关实战系列
场景推荐方案原因FANUC fwlib / snap7 / 厂商 C SDK 轮询采集cgo 封装SDK 只提供 C 接口、有状态句柄简单系统调用(getpid/ioctl)syscall 包免 C 工具链、开销更低低频一次性外部工具(ffmpeg/git)进程隔离、无需 C 依赖热路径编解码纯 Go 重写 / SIMD 汇编cgo 切换开销不可接受跨平台分发CGO_ENABLED=0 纯 Go + fallback静态链接、免 glibc 依赖C 主程序 + Go 插件。
2026-10-09 08:58:37
1049
原创 C++ Redis 客户端深度解析(hiredis 与 redis-plus-plus)——工业数采实时缓存 C++ 侧实战
C++ 侧访问 Redis 的主流路径是hiredis(官方 C 客户端,RESP 解析器 + 同步/异步双模型)与其上层的redis-plus-plus(C++17 现代封装)。对工业数采网关而言,Redis 实时层承担"点位最新值、命令下发、分布式锁、实时告警"四类职责,与 Kafka/TDengine 的历史流形成"实时 + 历史"双通道,与 Go 侧 go-redis 构成跨语言对照。掌握本文的 API 分层、RESP 解析原理、异步事件驱动模型与 20 条高频坑点,即可在生产采集链路上稳定落地。
2026-10-09 08:48:22
611
原创 Go 语言 gRPC(grpc-go)深度解析
采集网关服务:负责连 PLC/CNC(见既有篇目 libmodbus / snap7 / 三菱 MC 协议 / FANUC FOCAS),把点位数据清洗、打标;汇聚/转发服务:接收各网关数据,做规则校验、去重、路由到 Kafka / MQTT / TDengine;元数据服务:设备点位表、报警规则、权限配置;分析/AI 服务:离线统计、边缘 AI 推理(ONNX Runtime / llama.cpp);Web/可视化服务:对外提供 Dashboard 与 API。
2026-10-08 08:57:20
332
原创 Python pytest 测试框架深度解析:从断言重写到插件生态的工程化测试体系
痛点unittest 表现工程后果样板代码必须写类 + 方法 + setUp/tearDown小型测试也要 10+ 行骨架断言能力assertEqual/assertTrue/assertRaises 命名割裂记忆成本高、失败信息弱参数化依赖 subTest 或手写循环用例可读性与失败定位差插件/生态无统一扩展点覆盖率、Mock、异步各自为政pytest 的设计哲学是「纯函数式收集 + 断言重写 + fixture 依赖注入 + 钩子插件体系」零样板。
2026-10-08 08:52:23
397
原创 Kubernetes 深度实践:架构、API 与避坑指南
2014-2016 年间出现过 Docker Swarm、Apache Mesos、HashiCorp Nomad、Kubernetes 等多个编排方案。Google Borg / Omega 的经验背书:K8s 脱胎于 Google 内部运行了十余年的 Borg 系统,设计上继承了大规模集群管理的实战沉淀,而非从零摸索;声明式 API 而非命令式:用户只需描述"最终要达到什么状态"(如"我要 3 个副本"),系统自行完成达成路径;相比命令式指令,声明式天然支持自愈、审计与 GitOps;
2026-10-05 09:00:00
349
原创 Python SQLAlchemy 2.0 深度解析:从 Core 到 ORM 的数据访问双引擎
变化1.x(旧)2.0(新)查询方式select(User).where(...)(统一 select 表达式)声明式映射DeclarativeBase + Mapped[T] + mapped_column(),全类型注解结果处理session.query(...).all() 返回 ORM 对象列表session.execute(stmt) 返回 Result,.scalars() 取标量自动提交session.autocommit=True(易踩坑)
2026-10-05 07:15:00
544
原创 ROS2 安装完全指南(Ubuntu 版):从零开始到跑通第一个节点本文
本文是一篇面向初学者的 ROS2 安装教程,覆盖版本选择、环境准备、完整安装步骤与常见问题排查,全程以 Ubuntu 22.04 + ROS2 Humble(LTS) 为主线,兼容其他 LTS 组合。文中所有命令均在真实环境中验证过,可直接复制执行。
2026-10-04 05:30:00
427
原创 llama.cpp 开源大语言模型推理引擎深度解析:从 GGUF 到本地 LLM 部署
场景推荐方案个人电脑跑 7B/13B 对话模型llama-cli + Q4_K_M + CPU/集显内网部署 LLM API 服务llama-server + OpenAI 兼容端点 + FastAPI/Gin 网关离线文档问答 / RAGembedding 模型 + 向量库 + chat 模型代码补全专用 Code 模型(如 Qwen2.5-Coder GGUF)+ /infill工业数采数据分析数采 → TDengine → LLM 生成报表/告警解释(本地部署保隐私)
2026-10-04 03:15:00
708
原创 Go 语言内存管理与垃圾回收(GC)深度解析:从逃逸分析到性能调优适
适用版本:Go 1.21+(覆盖 Go 1.19 引入的 GOMEMLIMIT 软内存限制、1.20 起默认关闭部分 GC 选项等演进)。
2026-10-03 13:57:25
465
原创 Python scikit-learn 机器学习库深度解析
scikit-learn 是工业数采 AI 链路中性价比最高的建模层统一 API:fit/predict/transform 四件套 + Pipeline + GridSearch,工程化心智极简;算法全覆盖:分类/回归/聚类/降维/特征选择/评估一站式,表格数据场景传统 ML 往往优于深度学习;底层高效:NumPy/SciPy/Cython 实现,多核并行、稀疏支持、增量学习,可扩展至百万级样本;部署成熟:joblib 持久化、ONNX 导出、线程安全预测,与 FastAPI/Gin 无缝集成;
2026-10-03 13:51:55
306
原创 Go 语言 database/sql 标准库深度解析:从连接池到驱动抽象
/ 方案一:内置 Null 类型var (value sql.NullFloat64 // 工业点位值:可能为 NULL(传感器未回数)} else {// 方案二:自定义 Scanner / Valuer —— 处理数据库没有原生类型的场景// 例:把数据库 TEXT "on/off" 映射为 boolreturn nilreturn nildefault:if s {// 使用:Scan(&state) 与 Exec(..., state) 都会自动走自定义转换实现要点。
2026-10-01 07:45:00
267
原创 snap7 开源西门子 S7 通信协议库深度解析
面向工业数采场景:西门子 S7-300/400/1200/1500 以太网通信、客户端/服务器/伙伴三端模型、DB/MB/定时器/计数器读写、TSAP 与机架槽位配置、C++ 官方 API 与 Go 绑定 gos7 多语言对照。
2026-10-01 03:30:00
725
原创 ONNX Runtime 深度解析:从模型导出到生产级推理部署
场景推荐组合服务端推理(微服务/离线批处理)Python + CUDA EP + 固定 batch + IO Binding工业视觉 / 边缘盒子C++ + CPU/DirectML EP + 量化 + 线程调优嵌入式(树莓派/工控机)动态量化 + enable_cpu_mem_arena=false + 低线程数多硬件统一交付一套 .onnx + EP 列表配置,按机器选择。
2026-09-30 07:15:00
487
原创 Go 语言 encoding/json 标准库深度解析:从 Tag 反射到流式处理
/ 示例:对内容做 Base64 包装(实际业务常做脱敏/加密)err!= nil {return err*s = SafeString(raw) // 实际应做解码return nilvar c2 Cmd要点:MarshalJSON 返回值必须仍是合法 JSON(通常内部再调 json.Marshal 包装);UnmarshalJSON 接收的是该字段的原始 JSON 片段。// time.Time 实现了 MarshalJSON/UnmarshalJSON(RFC3339)
2026-09-30 05:00:00
713
原创 Eclipse Paho MQTT C 客户端库(paho.mqtt.c)深度解析
MQTT 协议与 Eclipse Paho C 客户端(paho.mqtt.c)同步/异步双 API 实战
2026-09-29 08:00:00
797
原创 Go 语言 reflect 反射包深度解析:从 Type/Value 到三大定律与工业实践
面向读者:已掌握 Go 基础语法与 interface 语义、正在阅读 GORM/zap/encoding/json 等源码或需要实现通用工具的 Go 开发者。 阅读收益:彻底搞懂 reflect 的 Type/Value 双视图、三大定律、底层实现,学会写出正确的反射代码并避开 20+ 个高频坑。
2026-09-29 07:30:00
448
原创 Go 泛型(Generics)深度解析:从类型参数到生产实践
场景是否适合泛型说明通用算法(排序、查找、Map/Filter/Reduce)✅ 强烈推荐标准库 slices/maps 已覆盖大部分通用容器(Set、Stack、LRU、缓存)✅ 强烈推荐comparable 做键,性能零损耗数值计算(Sum、Max、归一化)✅ 推荐constraints.Ordered/数值联合约束配置/JSON 的泛型转换✅ 推荐编译期类型安全替代 interface{} + 断言策略模式、插件体系❌ 用接口需要运行时多态需要特化/偏特化行为。
2026-09-28 09:35:02
490
原创 三菱 PLC MC 协议(SLMP / QnA 兼容 3E 帧)深度解析:从帧结构到 C++/Go 双语言采集实战
裸 TCP + 无校验和 + 全小端多字节字段 + 长度自定界。帧结构:9 字节固定头 + 请求长度(从定时器起)/ 响应长度(从结束码起);字节序:二进制帧多字节字段全部 LSB first,数据区字/双字同样小端;寻址:软元件代码 + 编号(16 进制编码),X/Y 进制随系列,设备头注意 QnA 4 字节 vs SLMP 5 字节;命令:批量读 0x0401 / 批量写 0x1401 / 随机读 0x0403 / 随机写 0x1402,子命令 0=字 1=位;
2026-09-28 09:31:56
708
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅