- 博客(235)
- 收藏
- 关注
原创 深入浅出 PID 算法:原理、实现与应用实战
PID 的核心优势:结构简单、易于实现、鲁棒性强,无需精确的系统数学模型。常见问题及解决方法稳态误差:增大积分系数 Ki,或引入积分分离策略(偏差大时关闭积分,偏差小时开启积分)。系统震荡:减小比例系数 Kp 和微分系数 Kd,增大采样周期 T。积分饱和:增加积分限幅,或采用增量式 PID。抗干扰差:对传感器数据滤波,减小微分系数 Kd。
2025-12-26 16:09:54
1439
原创 一文读懂 Keil uVision5:嵌入式开发的 “瑞士军刀”(附核心价值 + 使用场景)
Keil uVision5 不是简单的 “代码编辑器”,而是 ARM 嵌入式开发的 “全流程解决方案”—— 它的核心优势在于对 ARM 架构的原生适配、一站式开发体验、强大的调试能力,这也是它能占据嵌入式开发主流地位的根本原因。
2025-12-25 14:09:48
654
原创 从 0 到 1!Keil uVision5 开发 STM32 实战教程(附完整工程 + 调试技巧)
本文通过「点亮 LED」实战,覆盖了 Keil5 开发的核心流程:项目创建→代码编写→编译配置→调试下载。按键中断控制 LED;USART 串口打印;PWM 驱动蜂鸣器 / 电机;FreeRTOS 任务调度。
2025-12-25 14:05:36
1019
原创 超详细 Keil uVision5 下载安装教程(附激活 + 器件库 + 排错)
管理员权限 + 纯英文路径,这两个点踩坑率超 80%;注册机仅用于学习,商业项目务必购买正版 Keil 授权(避免法律风险);器件库按需安装,无需全装(节省硬盘空间);定期备份 Keil 安装目录(避免重装后丢失激活信息);若 Keil 启动慢,关闭不必要的组件(如 Pack Installer 自动更新)。
2025-12-25 13:34:02
1159
原创 【实战】C/C++ 实现 PC 热点(手动开启)+ 手机 UDP 自动发现 + TCP 通信全流程
本文聚焦 “手动开启 PC 热点” 场景,通过 UDP 广播实现设备自动发现,TCP 实现可靠通信,代码全程添加详细注释,兼顾可读性和实用性。无需手动配置 IP,手机连接热点即自动发现 PC;心跳保活 + 自动重连,保障通信稳定性;代码解耦,仅负责通信逻辑,热点由用户手动管理,降低权限依赖。该方案可直接应用于本地数据交互、工业控制、移动调试等场景,也可基于此扩展外网通信(如 FRP 内网穿透)。
2025-12-16 15:22:57
608
原创 VS2019 远程连接 Ubuntu 失败的解决方法
VS2019 远程连接 Ubuntu 失败的核心是SSH 服务未配置、网络不通、权限限制安装并启动 Ubuntu 的 SSH 服务;验证 Windows 与 Ubuntu 的网络连通性;核对 SSH 端口、用户名 / 密码;开启 root 用户的 SSH 登录权限。通过以上步骤,即可稳定建立 VS2019 与 Ubuntu 的远程连接,顺利进行跨平台开发。
2025-12-04 14:07:05
898
原创 Ubuntu 16.04 超详细 MySQL 安装配置教程(含可视化与 C++ 开发环境)
镜像源配置与环境准备;服务端、客户端及开发依赖安装;安全选项优化与服务测试;可视化工具部署;远程连接两种配置方案;C++ 开发环境配置(VS2019)。
2025-12-03 19:37:30
1225
原创 Ubuntu 16.04 安装配置 MySQL 数据库(含远程连接与可视化工具)
服务端与客户端的安装验证;安全选项优化;可视化工具部署;远程连接配置。
2025-12-02 16:11:51
1094
原创 【MySQL 基础】为什么安装 MySQL 需要同时装 server 和 client?
MySQL 的和server 是 “数据引擎”:提供存储和计算能力;client 是 “操作入口”:提供与引擎交互的工具。只有同时安装,才能实现数据库的完整功能 —— 这也是 C/S 架构软件的典型设计逻辑。
2025-12-02 15:50:35
396
原创 Ubuntu 16.04 实现 root 自动登录
核心流程:启用 Root 密码→编辑配置文件→写入配置→重启生效;遇到 vi 方向键问题,优先用「方法 1 安装完整版 Vim」彻底解决;测试环境用 Root 自动登录,生产环境用免密码 sudo。
2025-12-01 18:44:52
740
原创 深入浅出理解 NTP 协议:网络时间同步的核心技术解析
NTP 协议作为网络时间同步的 “基础设施”,其稳定性直接影响分布式系统的日志溯源、数据一致性和安全合规性。掌握 “原理 + 配置 + 排查” 的核心能力,是运维和开发人员的必备技能。
2025-12-01 14:42:48
1784
原创 Navicat 连接 Ubuntu 远程 MySQL 数据库:从配置到实战全教程
Ubuntu 端配置 MySQL 远程访问 → Navicat 填写连接信息 → 可视化管理数据库。必须修改 MySQL 的为0.0.0.0,并授权远程用户;开放 Ubuntu 防火墙 3306 端口,否则会被拦截;旧版 Navicat 需适配 MySQL 8.0 的加密方式,切换为。按本文步骤操作后,即可通过 Navicat 便捷地管理 Ubuntu 上的 MySQL 数据库,无需在终端中编写复杂的 SQL 语句,大幅提升开发效率。
2025-11-26 11:34:40
641
原创 Ubuntu 安装 MySQL 数据库超详细教程
更新源 → 安装 mysql-server → 初始化 root 密码 → 配置远程访问 → 验证连接。MySQL 8.0 默认无密码,需手动设置 root 密码;远程访问需修改并授权用户,同时开放 3306 端口;加密方式优先用,旧客户端兼容问题可切换为。
2025-11-26 11:13:50
1934
原创 Windows VS2019 远程 Linux(Ubuntu)开发注意事项
远程开发的核心是「网络互通 + 跨系统适配 + 权限 / 同步一致性」,以下是覆盖。
2025-11-25 19:14:04
510
原创 Windows 下VS2019 远程 Linux 开发完整教程:从连接配置到项目创建(附报错解决)
VS2019 远程 Linux 开发的核心流程可概括为「Linux 端环境准备 → VS 远程连接配置 → 项目创建与编译 → 调试运行」,关键是确保 SSH 通信正常、Linux 端依赖齐全、本地智能感知关联远程头文件。通过本文的步骤,你可以在 Windows 端用 VS2019 无缝开发 Linux 项目,既能利用 VS 的强大编辑和调试功能,又能直接在 Linux 环境中运行程序,完美解决unistd.h等 Linux 专属头文件识别问题。
2025-11-25 18:14:22
885
原创 VMware 中 Ubuntu 与 Windows 双向复制粘贴失效?完整解决教程(含 Wayland 冲突修复)
安装→ 2. 开启 VMware 剪贴板双向共享 → 3. 切换 / 默认 Xorg 协议。该方案覆盖临时 / 永久场景,操作后剪贴板可稳定实现跨系统同步。
2025-11-25 16:58:33
1156
原创 Ubuntu 的 Qt 窗口正常显示但仍有 Wayland 警告?彻底消除 + 原理详解
若窗口正常显示,可忽略警告(不影响使用);若想消除警告,优先用「方法 1(永久配置 X11 协议)」,简单高效且无兼容风险;避免盲目尝试 Wayland 协议,尤其是 Qt 5.x 用户,容易引发新的窗口问题。按以上方法操作后,警告即可彻底消除,且不影响 Qt 程序的正常运行。
2025-11-25 16:31:48
634
原创 Ubuntu 的 Qt 窗口不显示:xcb 插件加载失败(Wayland/X11 兼容问题)全解
在 Ubuntu 22.04 Gnome 桌面环境下开发 Qt 项目时,不少开发者会遇到这样的困境:编译无报错,但运行后窗口迟迟不出现,终端却抛出错误,同时伴随提示。这并非插件缺失,而是 Wayland 显示协议与 Qt 兼容性冲突、xcb 插件依赖不足导致的典型问题。本文将从问题根源出发,提供可落地的分步解决方案,帮你彻底解决窗口渲染故障。
2025-11-25 16:25:19
967
原创 解决 Ubuntu的Qt 编译核心报错:cannot find -lGL: No such file or directory
在 Ubuntu 环境下使用 Qt 开发时,很多开发者(尤其是新手)会在编译项目阶段遇到报错。这个问题看似复杂,实则是导致的 ——Qt 窗口渲染、图形绘制等核心功能依赖 OpenGL 库,编译器找不到libGL.so链接文件就会触发该错误。本文将从问题根源出发,提供 3 套循序渐进的解决方案,覆盖常规场景到特殊配置,确保彻底解决问题。
2025-11-25 16:16:46
1022
原创 FFmpeg 按 Unix 时间戳精准截取视频
该实现完全保留了原始代码的逻辑结构和功能,通过 FFmpeg 实现了 “按 Unix 时间戳精准截取视频且仅保留视频轨道” 的需求。无重新编码:仅复制视频流和符合条件的帧,截取速度快、画质无损失。时间精准:通过时间基转换和校准,确保截取的时间范围准确无误。资源安全:完善的资源释放逻辑,避免内存泄漏。兼容性强:支持 FFmpeg 兼容的绝大多数视频输入格式,输出为通用的 MP4 格式。使用时只需根据实际场景修改输入 / 输出路径和时间戳参数,即可快速实现视频截取功能。
2025-11-24 14:42:12
1028
原创 FFmpeg 核心参数配置:time_base 与 framerate 设置完全指南(含代码示例)
设置时机:编码时需在前配置codec_ctx的time_base和framerate,并同步到AVStream;核心逻辑:时间基精度必须高于帧间隔,毫秒级{1, 1000}是兼容性和精度的最优选择;时间戳是关键:帧的 PTS 基于,数据包时间戳需转换为;避坑要点:避免使用与帧率分子相同的时间基(如 240fps 用{1,240}),否则必踩精度坑。
2025-11-22 11:06:55
1089
原创 FFmpeg 录制视频模糊问题解决:time_base 参数的关键作用
FFmpeg 的time_base参数看似简单,实则直接影响视频编码的时间戳精度和编码器的决策逻辑。本文通过一个实际案例,说明了「时间基精度不足导致视频模糊」的问题根源,并给出了具体的解决方案和最佳实践。时间基精度应高于帧率要求的帧间隔,推荐使用毫秒级或微秒级时间基。
2025-11-22 10:43:06
1059
原创 解决 Qt TCP 传输中视频文件分片丢失问题:缓冲区等待机制的应用
在 TCP 文件传输开发中,一定要注意发送缓冲区的特性。发送完成后检查缓冲区状态确保所有数据都已实际发送处理网络异常情况这种等待缓冲区清空的机制虽然简单,但能有效解决分片丢失问题,提高文件传输的可靠性。在实际项目中,还可以根据需求调整等待间隔和超时时间,以平衡传输效率和可靠性。
2025-11-21 15:14:58
658
原创 C++ 使用 FFmpeg 录制音频完整教程(麦克风采集 + AAC 编码 + MP3/MP4 输出)
FFmpeg 作为音视频处理领域的核心工具库,提供了跨平台的音频采集、编码、封装能力。本文聚焦纯音频录制场景,详细讲解如何使用 C++ 结合 FFmpeg 实现从麦克风采集音频,编码为 AAC 格式,最终封装为 MP3 或 MP4 文件并保存到本地。相比音视频同步录制,纯音频录制流程更简洁,但需重点关注音频格式转换、采样率匹配、编码器配置等核心要点。本文适用于 Windows、Linux 平台,提供完整可运行代码及详细调试指南。FFmpeg 音频设备采集(麦克风)的核心 API 使用。
2025-11-20 17:09:59
1001
原创 C++ 使用 FFmpeg 录制音视频完整教程(同步采集 + 编码封装 MP4)
FFmpeg 作为音视频处理领域的 “瑞士军刀”,支持跨平台音视频采集、编码、封装等全流程操作。上一篇教程我们实现了纯视频录制,本文将在此基础上扩展音频同步采集功能,实现从摄像头 + 麦克风同步录制音视频,编码为 H.264(视频)+ AAC(音频)格式,最终封装为标准 MP4 文件。音频设备(麦克风)的采集与配置音视频同步录制的核心逻辑AAC 音频编码与 H.264 视频编码的协同音视频流同步写入文件的实现跨平台(Windows/Linux/macOS)兼容方案。
2025-11-20 15:51:16
1094
原创 C++ 使用 FFmpeg 录制视频完整教程(附可运行代码)
FFmpeg 是一套强大的音视频处理工具库,支持跨平台音视频采集、编码、解码、转码等功能。本文将详细讲解如何使用 C++ 结合 FFmpeg 实现本地视频录制,包括环境搭建、核心 API 解析、完整代码实现及测试步骤,适用于 Windows/Linux/macOS 平台。FFmpeg 开发环境搭建视频设备采集(摄像头)视频编码(H.264)MP4 格式文件封装完整录制流程的实现与调试。
2025-11-20 15:46:02
835
原创 Qt TCP 发送核心:flush ()+processEvents () 与 flush ()+waitForBytesWritten () 深度对比
实时不阻塞,用组合 1;完整要确保,用组合 2”
2025-11-18 17:42:32
399
原创 Qt TCP 发送核心:缓冲区堆积检查逻辑详解(实时帧 vs 文件传输)
实时帧场景:通过「短等待 + 小阈值 + 放弃旧帧」,平衡流畅度和内存占用;文件传输场景:通过「长等待 + 大阈值 + 循环等待」,保障数据完整性和传输稳定性;核心是「因地制宜」:根据业务诉求调整策略,而不是照搬代码。
2025-11-18 16:57:57
331
原创 Qt 网络编程避坑:flush 与 processEvents 组合,解决 TCP 数据发送时序错乱
在 Qt 多线程 TCP 编程中,flush()和flush():主动提交缓冲区数据,触发发送请求:处理发送事件,确保数据真正提交两者配合打破了msleep()的阻塞限制,实现了 "非阻塞等待 + 可靠发送"
2025-11-18 11:56:49
539
原创 TCP 性能调优:深入理解发送与接收缓冲区的作用及配置
发送缓冲区:存放应用程序要发送但尚未被对端确认的数据接收缓冲区:存放已从网络接收但应用程序尚未读取的数据应用类型发送缓冲区接收缓冲区Nagle算法说明交互式应用小 (32-64KB)小 (32-64KB)禁用低延迟优先文件传输大 (512KB-2MB)大 (1-4MB)启用高吞吐量优先视频流中 (256-512KB)大 (1-2MB)视情况平衡延迟和吞吐量游戏小 (16-64KB)小 (16-64KB)禁用最低延迟要求VoIP小 (8-32KB)小 (8-32KB)禁用。
2025-11-11 17:43:14
1135
原创 TCP 效率与延迟的博弈:深入理解 Nagle 算法及其禁用方法
在任意时刻,网络上最多只能有一个未被确认的小数据段。这里的“小数据段”指的是长度小于MSS(最大报文段长度,通常是 1460 字节)的数据包。特性Nagle 算法诞生目的解决“愚蠢窗口综合征”,提升网络效率工作原理通过缓存和合并小包,确保网络中最多只有一个未被确认的小数据段优点减少小包数量,降低网络拥塞,提高带宽利用率缺点引入发送延迟,与 TCP 延迟确认结合时问题加剧适用场景FTP、电子邮件等对延迟不敏感的大文件传输应用禁用场景在线游戏、远程桌面、高频交易、VoIP、即时通讯等所有对延迟敏感的应用。
2025-11-11 17:38:36
859
原创 Qt 3D 开发工具配置全攻略:从环境搭建到首程序运行
Qt 3D 工具配置的核心是正确安装 Qt SDK 并勾选 3D 模块,再通过.pro 文件关联依赖,最后用简单 demo 验证环境。配置完成后,即可基于此环境学习 Qt 3D 的 “实体 - 组件” 架构、场景搭建等核心内容。若后续开发中遇到模型加载失败、渲染异常等问题,可借助 RenderDoc 或 Qt Creator 的 3D 调试工具定位,逐步提升问题解决能力。
2025-11-01 12:31:57
1521
原创 从零到精通:Qt 3D 系统学习路线指南
着色器基础GLSL 语法:顶点着色器(处理顶点位置)、片段着色器(处理像素颜色)基础语法Qt 3D 集成:QShaderProgram 加载着色器代码,通过指定顶点 / 片段着色器内容自定义材质实战步骤:创建 QMaterial→关联 QShaderProgram→通过 QParameter 传递 Uniform 变量(如时间、颜色)特效案例:发光效果(片段着色器添加亮度叠加)、卡通渲染(边缘检测 + 纯色填充)
2025-11-01 12:27:42
937
原创 探索Qt 3D:开启3D开发新世界的大门
Qt 3D 以 “实体 - 组件” 为核心,兼具跨平台、高性能、易交互优势,覆盖多领域开发需求。未来将进一步优化渲染引擎、增强 Vulkan 适配。建议从简单场景入手,结合官方文档拓展高级用法,快速落地 3D 应用。
2025-11-01 12:23:05
1021
原创 Ubuntu 系统下载与安装 Qt 框架的实用方法(附常见问题解决)
Qt 作为一款强大的跨平台 C++ 开发框架,在桌面应用、嵌入式开发等领域应用广泛。在 Ubuntu 系统中搭建 Qt 开发环境,是很多开发者的刚需。本文将详细介绍两种最常用的安装方式,分别适合不同场景的需求,帮助大家快速上手 Qt 开发。两种安装方式各有侧重:官方安装包能获取最新版本和完整工具链,适合正式开发;包管理器安装快捷,适合快速体验或依赖旧版本的场景。根据自身需求选择合适的方式,安装完成后即可开启 Qt 应用开发之旅。
2025-10-29 11:22:57
1619
原创 VMware 深度配置 Ubuntu 22.04 全流程指南(含进阶优化与问题排查)
对于开发者和 Linux 学习者而言,通过 VMware 搭建 Ubuntu 虚拟机是高效且安全的方案。但基础安装往往无法满足生产级需求 —— 屏幕分辨率异常、文件传输卡顿、性能瓶颈等问题频繁出现。本文将从虚拟机硬件精细化配置系统安装隐藏选项VMware Tools 深度适配到性能调优进行全流程拆解,兼顾新手入门与进阶需求。打开 VMware → 「文件」→「新建虚拟机」→ 选择「自定义(高级)」→ 「下一步」硬件兼容性:默认「Workstation 17.x」(确保支持最新功能)→「下一步」
2025-10-28 14:50:27
1427
原创 Qt精准过滤控制台输出:简单高效的日志过滤方案
Qt 提供了函数,允许我们自定义日志处理逻辑。通过实现一个日志过滤器,我们可以对日志类型、内容进行判断,选择性输出需要的日志。
2025-10-22 16:53:33
317
原创 FFmpeg 实现视频录制功能:从初始化到停止的完整流程
首先定义录制过程中需要用到的核心变量,包括录制状态、文件名、FFmpeg 上下文等:cpp运行// 录制状态标记// 录制文件名// FFmpeg格式上下文(管理文件格式)// 编码器上下文(控制编码参数)// 视频流索引// 图像转换上下文(用于格式转换)// 时间戳计数器(保证帧时序正确)
2025-10-22 09:46:51
527
原创 Qt 实现大文件分片传输(TCP 协议)
本文实现了基于 Qt 和 TCP 的大文件分片传输,通过将文件分割为固定大小的分片,结合结构化的头部信息,实现了可靠的文件传输。该方案适用于需要在网络中传输大文件的场景(如视频、文档等),且可扩展为支持断点续传、进度显示等功能。
2025-10-21 18:56:46
481
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅