- 博客(585)
- 收藏
- 关注
原创 C++ 原子操作、内存模型与无锁并发编程
本文系统阐述了C++并发编程中的原子性、数据竞争与线程安全核心概念。指出普通自增非原子,易引发数据竞争(未定义行为);原子操作保证不可分割性,但不等于线程安全或无锁。通过std::atomic实现原子读写、交换与加减,其是否无锁取决于平台与类型。内存模型中,sequenced-before定义单线程顺序,synchronizes-with建立跨线程同步。强调:原子操作提供语言级语义保障,具体实现依赖硬件与编译器,性能需结合实际评估。
2026-10-26 00:00:00
819
1
原创 DINOv3 --- 自监督通用视觉特征引擎
DINOv3 是 Meta AI 于 2025 年 8 月发布的视觉基础模型,采用自监督学习在 17 亿张无标注图像上预训练,通过 Teacher-Student 蒸馏框架实现强大通用表征。其基于 Vision Transformer 架构,将图像划分为 Patch Token,结合 CLS、Register 与 Patch 特征,支持分类、分割、检索等多任务。作为可复用的视觉特征引擎,其核心价值在于统一骨干网络(Backbone)与灵活下游适配,具备全局语义与局部空间感知能力,推动通用视觉理解发展。
2026-10-26 00:00:00
704
原创 C++ 栈展开(Stack Unwinding)
栈展开是C++异常处理的核心机制,指异常传播时按逆序销毁已构造的自动对象,确保资源安全释放。它不仅涉及栈帧的清理,还包含控制流转移、析构调用与上下文恢复,区别于单纯的栈指针移动。通过实例可见,对象析构严格遵循作用域规则,仅清理已离开作用域的局部变量。该过程由编译器与运行时协同完成,是实现RAII和程序健壮性的关键基础。
2026-10-24 00:00:00
172
原创 MCP(Model Context Protocol)
MCP(模型上下文协议)是标准化AI Agent与外部工具、数据源交互的开放协议,通过统一接口实现能力接入。其核心架构包含Host(应用宿主)、Client(通信组件)、Server(能力提供方),基于JSON-RPC 2.0与stdio/Streamable HTTP传输层,支持无状态通信。MCP定义三大能力:Tools(执行操作)、Resources(提供数据)、Prompts(引导交互),实现模型决策、协议执行与业务逻辑的三层解耦,显著降低多系统集成复杂度,推动AI Agent向自主协作演进。
2026-10-24 00:00:00
829
原创 数据结构 --- 无锁队列(Lock-Free Queue)
在高并发系统中,无锁队列通过原子操作(如CAS)实现线程安全,避免传统互斥锁带来的阻塞与上下文切换开销。其核心在于满足线性化语义与锁无关进展保证(Lock-Free),而非绝对无等待。根据生产者/消费者数量(SPSC、MPSC等)和结构选择(环形缓冲区或链表),可优化性能与复杂度。正确使用C++内存模型(如acquire/release)确保数据同步顺序,防止ABA问题并实现安全内存回收。工程上应优先选用适配场景的简化模型,而非盲目追求通用性。
2026-10-23 00:00:00
471
原创 Linux --- 进程虚拟地址空间
本文系统解析了Linux进程虚拟地址空间的核心机制,厘清ELF文件结构(Section、Segment)与运行时内存布局(VMA)的本质区别。重点剖析.text、.rodata、.data、.bss四大节的特性与作用,揭示.bss节省磁盘空间的原理。深入探讨堆(brk/sbrk)、mmap匿名映射、共享库映射等关键机制,阐明malloc内存来源多样性和mmap在现代内存管理中的核心地位,强调三者视角差异:链接视图(Section)、加载视图(Segment)、运行时视图(VMA),不可混淆。
2026-10-23 00:00:00
713
原创 Linux --- CPU 调度机制
本文系统阐述了Linux CPU调度机制在延迟敏感场景中的核心作用。针对工业控制、机器人视觉等高实时性需求,文章解析了调度器如何平衡公平性、响应时间与实时性,并介绍Linux采用的分层架构——调度核心协同调度类(如公平、实时、截止时间类)与每核运行队列,实现多任务高效调度。重点强调线程作为基本调度单位、调度策略与类的区别,以及任务状态与实际执行间的差异,揭示上下文切换、优先级抢占与负载均衡的本质,为高性能系统设计提供理论支撑。
2026-10-22 00:00:00
919
原创 时间同步 --- PTP 与 Scheduled Action Command
在机器人视觉系统中,多相机同步需确保各相机在相近物理时刻曝光,并实现时间戳与机器人位姿精确对应。仅靠软件触发易受主机调度、网络延迟影响,导致时序偏差。采用PTP协议建立统一时钟基准,结合Scheduled Action Command实现提前预约未来触发时刻,可有效消除网络抖动影响。该方案通过“时间同步+定时触发”双机制,保障多视角采集的时序一致性,适用于高速抓取、动态三维重建等高精度应用。
2026-10-22 00:00:00
780
原创 Linux --- 虚拟内存 1.fork、2.COW、3.mmap、4.page fault、5.TLB、6.页表
在Linux系统编程与内核学习中,`fork`、`mmap`、`page fault`、`TLB`、页表、Copy-on-Write(写时复制,简称COW)是**CPU硬件、内存管理单元(MMU)、Linux内核内存管理子系统、进程模型**协同工作所构成的一整套虚拟内存运行机制。真正打通这条链路后,会发现从用户态的一次内存访问,到物理页的最终落地,每一步都有清晰的硬件与软件协作逻辑。
2026-10-21 00:00:00
753
原创 机器人通信 --- FANUC TCP 并发请求-响应错位 Bug 复盘
在基于ROS 2的工业机器人控制中,多线程共享TCP Socket导致请求-响应错位问题。尽管TCP保证字节有序可靠,但应用层未引入事务ID或串行化机制,致使并发读写时响应被错误匹配,引发状态异常。问题本质为时序依赖的竞争条件,非网络或协议错误,需通过事务隔离与响应关联机制解决。
2026-10-21 00:00:00
736
原创 系统设计 --- 基于运动相位的时间域稳像设计
针对机器人摆弧焊熔池视觉中因60Hz机器人状态采样与200Hz相机采样导致的视角偏移问题,本文提出基于运动先验与ISP后处理的系统重构方案。通过将机械臂运动分解为慢变焊缝跟随与已知周期摆弧分量,将全轨迹重建降维为关键相位时间估计;进一步将空间补偿转为时间域相位选帧,实现同相位成像。结合传感器200Hz RAW连续采集与仅对关键帧执行ISP处理的解耦架构,突破传统系统瓶颈,显著提升熔池观测稳定性与时间分辨率。
2026-10-20 00:00:00
568
原创 Windows 多 AP 同名 Wi-Fi 网络异常问题复盘
本次故障从“Windows网络莫名卡顿”的模糊现象出发,通过逐层排查、假设验证,最终收敛为一个明确的工程问题:多AP同SSID场景下的终端AP选择偏差,叠加Windows定位权限导致的自定义BSSID绑定机制失效。整个排查过程验证了高密度无线部署场景下Sticky Client机制的普遍影响,也揭示了系统权限对自定义网络策略的隐性作用。通过“优选BSSID固定 + 开机守护脚本 + 权限配置保障 + 标准化排查流程”的组合方案,形成了完整的问题闭环
2026-10-20 00:00:00
268
原创 DTO --- 数据封装
在C#/.NET Web API中,DTO(数据传输对象)是系统分层边界上的数据契约,用于隔离接口与内部模型,实现安全、解耦与高效的数据传输。它不承载业务逻辑,而是精准控制输入输出字段,防止敏感信息泄露与过度提交攻击。通过区分Request DTO与Response DTO,可避免数据库结构“渗漏”到接口,提升系统可维护性与安全性。结合Entity、Domain Model等概念,明确各层职责,是构建健壮API的关键实践。
2026-10-19 00:00:00
658
原创 操作系统 --- 消息队列
消息队列是实现并发解耦、异步通信与流量削峰的核心机制,通过生产者-消费者模型解耦任务时序。从进程内共享内存队列到内核级IPC,再到分布式中间件,其架构分层对应不同通信范围与性能需求。关键机制包括阻塞/事件驱动消费、背压控制及消息持久化,需根据场景选择合适策略以保障可靠性与实时性。
2026-10-19 00:00:00
1086
原创 设备安全---IP防护
IP防护等级是工业电气设备外壳防护能力的国际通用编码体系,依据IEC 60529:2013(等同GB/T 4208-2017),由两位数字构成:第一位表示固体异物及人员接触防护(0–6级),第二位表示水侵入防护(0–9级)。常见等级如IP65(尘密+喷水)、IP66(尘密+强力喷水)、IP67(尘密+短时浸水)、IP69(高压高温喷水)等,三类防水路线(喷水、浸水、高压高温)不可横向比较。系统级防护受最薄弱环节制约,且IP仅覆盖防尘防水,不涵盖温湿循环、腐蚀、振动等环境因素。选型需结合实际工况,确认完整测试
2026-10-17 00:00:00
586
原创 Linux --- 内存故障
在嵌入式Linux、工业机器人等长期运行系统中,内存泄漏、释放后重用、缓冲区溢出等问题频发,导致系统运行数小时后崩溃或内存持续上涨。内存泄漏虽单次影响小,但高频调用下可累积至严重后果。需警惕free()后RSS不降的假象,因glibc分配器缓存机制延迟归还内存。排查应结合/proc/<pid>/smaps等工具,开发阶段使用AddressSanitizer、Valgrind等检测工具,并优先采用RAII、智能指针等现代C++机制规避生命周期管理错误,实现内存安全的工程化保障。
2026-10-17 00:00:00
374
原创 V4L2 --- 像素格式、控制参数、调试和项目化
Video for Linux API version 2(V4L2)是 Linux 系统下用户态访问视频设备的标准内核接口,广泛应用于 USB 摄像头、MIPI CSI 工业相机、视频采集卡、ISP 处理链路等场景
2026-10-16 00:00:00
738
原创 Fail-Safe 故障安全
Fail-Safe 是一整套从危害分析到落地验证的系统工程思想。它的底层逻辑非常朴素:**永远不要假设系统正常工作,要为所有可能的故障预设安全退路**。对于工业上位机开发者而言,最重要是先建立“**故障导向安全**”的设计思维,在控制链路中埋下独立的安全防线。
2026-10-16 00:00:00
301
原创 多模态传感器软件同步后的数据关联时序误差测算
本文系统剖析多传感器系统中“时间同步”与“数据关联误差”的本质差异,指出时钟同步精度(如1ms)不等于真实物理采样时刻的对齐误差。从时钟同步、时间戳语义、采样周期、传输延迟等六大环节构建时序误差模型,揭示数据关联误差 $e_{assoc}$ 是多因素叠加结果。通过理论分析与实测方法,提出以“真实物理采样时刻错位”为核心评价指标,强调需区分“时间戳残差”与“实际融合误差”,并给出最近邻匹配下的最大误差上限($\frac{T}{2}$)及统计特性,为高精度多模态融合提供工程化误差评估框架。
2026-10-15 00:00:00
377
原创 实时系统通信抖动(Jitter)
1. **测量(Measure)**:建立全链路时间链,用硬件时间戳拆分各段时延,定位主要抖动源;2. **降低(Reduce)**:针对来源分层优化,减少排队、降低调度阻塞、消除不必要的缓冲;3. **边界(Bound)**:给出最坏情况的上界,确保抖动在可接受范围内,关注 P99.9 与最大值;4. **补偿(Compensate)**:对于无法消除的残余抖动,通过时间戳、插值、缓存、预测等算法手段,在应用层消除其对系统功能的影响。
2026-10-15 00:00:00
682
原创 Linux --- Socket 用户进程与内核网络协议栈之间的统一接口
Socket 是内核提供的通信端点抽象,通过 socket() 创建并返回文件描述符,其背后对应完整的 struct sock 内核对象,管理协议、地址、缓冲区及连接状态。用户态调用 send()/recv() 触发系统调用,数据经由内核协议栈逐层封装(TCP/IP/以太网)发送或接收。domain、type、protocol 三参数决定通信方式(如 TCP 流式或 UDP 数据报)。服务端需经 bind 绑定地址端口、listen 设置监听队列、accept 接收已建立连接,其中半连接与全连接队列控制并发
2026-10-14 00:00:00
775
原创 Linux --- 内存管理内核子系统
Linux内存管理是内核主导的分层系统,涵盖虚拟地址空间、页表、缺页异常、内存分配与回收等核心功能。以new char[1024]为例,链路为:用户态分配器(ptmalloc)→ 内核MM子系统 → 物理内存。进程通过mm_struct和VMA管理虚拟地址空间,实现隔离与按需加载;硬件通过MMU、TLB与多级页表完成虚拟地址到物理地址的映射,支持虚拟连续、物理分散的高效内存管理。
2026-10-14 00:00:00
689
原创 Linux --- 内存问题定位 1.ASan、2.Valgrind、3.GDB、4.heaptrack
在Linux C/C++工业级开发中,内存错误因“时空分离”特性难以定位。AddressSanitizer通过编译插桩与影子内存,实现越界、释放后使用等错误的实时捕获,适合开发与CI;Valgrind/Memcheck基于动态二进制翻译,支持未初始化值检测与精细泄漏分类,适用于深度排查;GDB则通过断点、观察点与核心转储,实现崩溃现场的事后分析。三者协同构建从预防、检测到溯源的完整内存问题应对体系。
2026-10-13 00:00:00
807
原创 C++的condition_variable:为什么wait必须用while循环而不是if?
在并发编程中,std::condition_variable 的正确使用关键在于始终用 while 循环包裹 wait()。原因包括:防止虚假唤醒、应对多线程竞争导致的条件状态变化、避免通知丢失及“丢失唤醒”竞态。notify 仅表示“状态可能变更”,而非“条件已成立”。wait() 必须配合 unique_lock 实现锁的原子释放与重获,确保同步安全。正确的模式是 while (!predicate) cv.wait(lock),以保证条件在获取锁后仍有效,这是实现可靠线程同步的核心原则。
2026-10-13 00:00:00
346
原创 软件缓存一致性
本文以FANUC机械臂控制系统为案例,系统探讨软件缓存一致性问题,涵盖数据完整性、多副本一致性和新鲜度控制三大维度。通过互斥锁保障原子更新,结合版本号与条件变量实现高效同步,揭示锁仅解决并发安全而无法自动保证缓存新鲜度。借鉴数据库MVCC、Linux RCU及ROS 2 QoS等工业实践,构建从线程安全到快照一致性的完整工程解决方案。
2026-10-12 00:00:00
475
原创 C++ 智能指针:RAII、所有权与对象生命周期
现代C++智能指针的核心在于将资源所有权与对象生命周期显式编码于类型系统中,通过RAII机制确保资源在作用域结束时自动释放。unique_ptr实现独占所有权,禁止拷贝但支持移动,适用于单一所有者场景;shared_ptr允许多个所有者共享生命周期,仅在必要时使用;weak_ptr则用于观察共享资源而不影响其销毁。优先选择值对象或unique_ptr,避免不必要的共享,提升代码安全性与可维护性。
2026-10-12 00:00:00
1318
原创 数据结构---红黑树
理解红黑树不是为了在工作中重新实现它(除非是写标准库),而是为了理解它的设计思想和性能特性,从而在实际开发中做出更明智的技术选择
2026-09-14 00:00:00
1419
3
原创 图像直方图
在计算机视觉中,**直方图(Histogram)**本质是**图像特征的结构化统计结果**。直方图是将图像数据按照预定义区间(bins)完成的计数统计,统计对象不局限于灰度亮度,可拓展为颜色、梯度幅值、梯度方向、纹理特征等任意可量化的视觉特征,是对图像信息的轻量化压缩表征。直方图最核心的特性:**不关注像素的空间坐标位置,只统计特征数值的出现频次、占比与分布形态**。这一特性让其摆脱了像素级冗余数据,成为极简、高效的图像分析工具。
2026-09-14 00:00:00
919
原创 前端页面部署 --- Cloudflare全栈式云服务平台
Cloudflare 通过权威 DNS 与 Anycast 全球网络,将自身置入用户与应用之间,在全球边缘节点上统一执行网络接入、安全防护、缓存加速与应用计算
2026-09-12 00:00:00
634
原创 工业机械臂 --- 上电位置检测
在伺服使能、抱闸释放、机器人进入可运行状态之前,控制系统需要完成一套完整的位置可信度建立与验证流程——从传感器数据有效性校验,到机械关节位置的唯一确定,再到运动控制器与安全控制器的状态同步。这一过程在不同厂商的技术文档中有诸多命名:绝对位置初始化、转数计数器同步、安全位置同步、Mastering校验等,但其目标高度一致:**在上电瞬间确认机械臂每个关节的真实物理位置,确保后续伺服控制、运动学计算与安全监控都建立在可信的位置基础之上**。
2026-09-12 00:00:00
535
原创 光流传感器
**光流传感器是移动机器人、无人机领域中无GNSS环境下的测速器件**,其本质是通过**捕捉连续帧间的图像纹理**运动,输出图像平面的二维相对位移
2026-09-11 00:00:00
782
原创 ISP---RAW数据解析:从PixelFormat、Packed_Buffer到Bayer解码
内容详细阐述了RAW图像解析中像素格式、存储布局、传输缓冲等概念,强调区分Sensor Bit Depth、Pixel Format、Storage Layout、Buffer Layout,按PFNC标准处理,并给出RAW12打包解包方法。摘要需简明概括核心要点,≤150字。注意要涵盖:RAW解析需区分多层概念,不能凭位深直接判断;遵循PFNC标准,注意Packed与Unpacked差异及布局不统一;正确解包需依赖元数据。
2026-09-11 00:00:00
720
原创 ISP---RAW 成像的物理基础
**RAW 像素值是光学系统、图像传感器与电子读出链对入射光进行一次物理测量后得到的数字编码结果**。假设某 Bayer 阵列 R 通道像素的 RAW 值为 $y=1260\ \mathrm{DN}$,这个数字本身无法直接对应场景的亮度等级。要还原其物理意义,至少需要知道黑电平、系统增益、曝光时间、模拟增益、量子效率、入射光波长、饱和电平,以及相机内部是否做过预处理。
2026-09-10 00:00:00
625
原创 ISP--- RAW 图像 从传感器噪声模型到快门时序与频闪效应
相机噪声并非简单地在真实图像上叠加固定强度的高斯随机数,真实 RAW 噪声与信号强度、曝光时间、温度、模拟增益、读出模式乃至像素位置均强相关。EMVA 1288 标准定义了线性图像传感器的完整噪声模型,是目前工业界最权威的量化依据。
2026-09-10 00:00:00
909
原创 Linux --- epoll (I/O就绪事件通知机制)
epoll是Linux内核提供的高效I/O多路复用机制,通过“兴趣注册与事件获取分离”实现对海量文件描述符的低延迟监控。其核心为双集合模型:兴趣集合(红黑树存储)用于注册待监控的fd及事件,就绪集合(链表)仅返回已就绪事件,避免全量遍历。借助epoll_create1、epoll_ctl和epoll_wait三类系统调用,epoll在高并发场景下性能远超select/poll,成为Nginx、Redis等高性能服务的标准事件引擎。
2026-09-09 00:00:00
954
1
原创 标注平台---CVAT
CVAT是完整工业级标注平台,三级架构(Project/Task/Job),标注语义(Label/Attribute/Shape/Track),几何类型选择,AI辅助标注,质量控制。需要精炼。输出为中文摘要。注意字数限制。</think>CVAT是工业级数据标注全链路平台,采用Project→Task→Job三级架构,实现数据分层与分布式执行。标注语义区分Label、Attribute、Shape与Track,支持关键帧
2026-09-09 00:00:00
233
原创 点云处理 --- 主成分分析(PCA)
主成分分析(Principal Component Analysis, PCA)是三维点云处理中最基础的几何算法之一。从表面法向估计、物体主方向提取,到点云粗配准、定向包围盒生成,PCA以严格的统计几何意义为基础,为大量上层算法提供了可靠的几何先验。PCA的思想是在最小二乘意义下寻找点集的最佳拟合低维子空间。
2026-09-08 00:00:00
483
原创 .NET 异步编程体系
本文模型——Task、TAP、async/await、CancellationToken、SemaphoreSlim、SynchronizationContext——对 **.NET Framework 4.8** 同样成立;文中提到的 ValueTask、异步流 `IAsyncEnumerable<T>` 等属于现代 .NET(.NET Core/.NET 5+)的进一步扩展。Microsoft 将这套官方推荐的异步编程模型称为 **Task-based Asynchronous Pattern(TAP,
2026-09-08 00:00:00
1289
原创 奇异值分解(SVD)
奇异值分解(Singular Value Decomposition, SVD)是数值线性代数中普适性最强、应用最广泛的矩阵分解工具,区别于仅适用于方阵的特征值分解(EVD),**任意实/复矩阵均可执行SVD分解**。
2026-09-07 00:00:00
526
原创 信号量(Semaphore)
信号量是一个支持原子操作的非负整数计数器,用于在并发执行体之间分配“许可”;有许可则继续执行,无许可则阻塞等待,其他执行体可释放或产生许可
2026-09-07 00:00:00
209
【CMake构建系统】基于CMake的项目构建与管理:宏定义、嵌套CMakeLists及流程控制详细介绍了文档的主要内容
2025-04-03
### 【CMake项目构建工具】CMake保姆级教程:跨平台项目自动化构建与管理
2025-04-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅