自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(253)
  • 收藏
  • 关注

原创 【工作】-git工作中常用的场景开发指南,看这篇工作基本够用了

git statusgit add .git pullgit pushclone↓创建分支↓开发↓add↓commit↓push↓↓↓merge版本管理团队协作代码历史。

2026-03-08 13:19:18 252

原创 [项目]-搭建一个git服务器呢,完整详细的落地方案

Ubuntu虚拟机↓安装 git + ssh↓创建 git 用户↓创建 bare 仓库↓客户端 clone / push10分钟就能跑起来。如果你愿意,我可以再给你一套“个人开发者最舒服的 Git 架构”Gitea + Git + CI + 代码门禁整个系统只需要 300MB 内存,但体验接近 GitHub,非常适合个人或小团队。

2026-03-08 13:14:25 695

原创 [项目]-代码门禁方案

效果:4空格缩进大括号换行最大100列本地门禁(Git Hook)统一格式(clang-format)静态分析(cppcheck / clang-tidy)CI检查代码统一Bug减少Review效率提升。

2026-03-08 13:10:42 252

原创 [Google Test]- Google Test Ubuntu 完整验证指南

您可以直接复制使用!参数化测试 TestWithParam + INSTANTIATE_TEST_SUITE_P。解决: 使用 FetchContent 或手动编译 /usr/src/gtest。浮点比较 EXPECT_DOUBLE_EQ / EXPECT_NEAR。解决: 编译时添加 -DGTEST_HAS_DEATH_TEST=1。// 测试夹具(Test Fixture)- 用于模板测试。

2026-02-22 12:34:08 678 1

原创 RSA加密解密代码

生成RSA密钥对:generate_rsa_keys函数会生成2048位的RSA密钥对,并将它们分别保存为private.pem和public.pem。下面是一个用C++和OpenSSL库在Ubuntu下进行RSA加密和解密的验证代码示例。RSA私钥解密:decrypt_with_rsa_private_key函数使用私钥解密加密后的消息。RSA公钥加密:encrypt_with_rsa_public_key函数使用公钥对消息进行加密。// 使用RSA公钥加密。// 使用RSA私钥解密。

2026-02-15 15:33:07 752

原创 【加密】-AES与对称加密

其实,AES 是 对称加密,而非 非对称加密,这是一个常见的误解。密钥和IV(初始化向量):我们使用OpenSSL生成一个128位密钥(16字节)和初始化向量(IV),它们是AES加密中不可或缺的部分。假设你和朋友有一个秘密的锁(密钥),你用这个锁把信封加锁(加密),然后朋友用同样的锁打开信封(解密)。加密和解密:首先用AES_cbc_encrypt进行加密,然后用相同的密钥和IV进行解密,恢复明文。对称加密是加密和解密使用相同密钥的加密方式,AES是经典的对称加密算法,广泛用于保护数据的机密性。

2026-02-15 15:18:32 707

原创 数值截断问题记录

std::cout << “frame.timestamp类型大小: " << sizeof(frame.timestamp()) << " 字节” << std::endl;std::cout << “send_ts类型大小: " << sizeof(send_ts) << " 字节” << std::endl;

2026-01-20 20:20:44 493

原创 CMake 详细介绍

CMake 详细介绍CMake 是一个开源的跨平台自动化构建系统工具。它使用配置文件(通常是 CMakeLists.txt 文件)来定义项目的构建过程,然后生成特定平台和编译器的构建文件(如 Makefile、Visual Studio 项目文件、Xcode 工程等)。它非常适合跨平台开发,尤其在 C++ 项目中广泛使用。CMake 的工作原理CMakeLists.txt 文件:这是 CMake 的配置文件,你在项目中定义构建指令(如编译源文件、链接库、设置编译选项等)。

2026-01-17 17:30:19 356

原创 spdlog介绍使用

spdlog 是一个高性能、易于使用的 C++ 日志库,专注于提供快速的日志记录功能。它支持多线程、异步日志、格式化日志以及多种日志输出方式(例如,控制台、文件等)。由于它的高性能特点,spdlog 很适合用于对性能要求较高的应用程序,例如游戏开发、实时系统、无人机系统等。高性能:spdlog 是为高性能设计的,通常比其他日志库更快。提供了丰富的功能,包括日志级别、异步日志、多线程支持、日志格式化等,可以满足大多数项目的需求。spdlog 是一个高效、易用、灵活的 C++ 日志库,适用于高性能、实时应用。

2026-01-17 17:16:48 850

原创 c++ 大型项目科学的命名规范总结

在大型 C++ 项目中,良好的命名规范能够提高代码的可读性、可维护性、可扩展性,并且能够减少潜在的错误和混淆。以下是一些广泛认可的 C++ 命名规范,适用于不同类型的标识符,如文件、类、变量、函数、常量等。避免命名冲突:使用前缀(如 g_、s_)或后缀(如 _)能有效避免全局变量、静态变量、成员变量和局部变量之间的命名冲突。蛇形命名(snake_case):用于文件名、目录名、宏定义(常量、宏、预处理指令)。私有成员变量:使用 后缀下划线(snake_case),例如:testValue_。

2026-01-17 16:59:39 692

原创 tftp 介绍,是啥,解决啥问题,怎么用,用于哪里

与 FTP(文件传输协议)不同,TFTP 不具备身份验证、目录列表、数据加密等复杂功能,因此,它的实现和使用都非常轻量。它通过 UDP 实现,不需要建立持久的连接,也不需要大量的内存或计算资源,因此对低功耗设备(如路由器、嵌入式设备)特别适用。简单的文件传输需求:在一些简单的网络设备(如路由器、交换机、嵌入式系统)上,需要通过网络从一台计算机传输文件,而这些设备没有能力处理复杂的文件传输协议(如 FTP)。TFTP 服务器是提供文件的设备,它监听 UDP 69 端口,等待客户端的请求。

2026-01-13 17:50:27 380

原创 【工具】-Google Test 是啥,有啥用,有啥好处,怎么用,谁发明的,为了解决啥问题

Google Test(gTest)概述Google Test(简称 gTest)是一个开源的 C++ 测试框架,由 Google 开发,用于编写和运行单元测试。它提供了丰富的断言、测试组织和运行工具,使得编写和管理测试变得更简单和高效。gTest 是 Google 内部开发和使用的测试框架,后来开源贡献给了社区,因此广泛应用于 C++ 项目中。

2026-01-12 16:23:30 987

原创 【项目】-Docker入门实战:从零到一运行FastDDS Shapes Demo

一、什么是Docker?Docker是一个开源的容器化平台,它允许开发者将应用程序及其依赖打包到一个轻量级、可移植的容器中。容器与虚拟机不同,它直接运行在宿主机的操作系统内核上,无需额外的操作系统层,因此启动更快、资源占用更少。核心概念:镜像(Image):只读模板,包含运行应用所需的所有文件和配置容器(Container):镜像的运行实例,可启动、停止、删除仓库(Registry):存储镜像的地方,如Docker Hub二、Docker安装验证实战。

2026-01-10 21:07:52 1040

原创 30分钟关机命令

shutdown’ 不是内部或外部命令,也不是可运行的程序。‘cmd’ 不是内部或外部命令,也不是可运行的程序。

2026-01-07 19:07:15 232

原创 MinGW

MinGW:Windows上的Linux风编译环境历史背景:text1998年:MinGW诞生(原名mingw32)2000年:纳入GNU工具链2005年:MSYS发布(提供类Unix shell)2007年:MinGW-w64分叉,支持64位2018年:成为独立项目,广泛用于Windows开发2. MinGW解决了什么核心问题?核心问题:在Windows上,微软的Visual Studio编译器(MSVC)是主流,但:不兼容POSIX标准不能编译Linux风格的代码。

2026-01-07 10:40:57 629

原创 【项目】-添加辐射源点的接口

/ 内环半径为最大半径的3/4(和你原有彩色环内环一致)对外接口:仅暴露addRadarPoint(添加 / 更新点)和clearAllPoints(清空点),内部逻辑完全封装,外部调用极简。内环分散显示:根据每个点的方位角计算极坐标,再转换为屏幕坐标,同时加入随机比例,让点在内环内分散不重叠;// 方位角(0-360°,用于内环不同位置绘制)// 你的原有刷新定时器。// 1. 定义辐射源点结构体:包含时间、方位(用于内环分散)、编号等核心属性。// 2. 对外接口:添加辐射源点(外部调用此接口传点)

2025-12-31 15:14:58 856

原创 2025-西安跨年了,下雪了

111。

2025-12-31 15:00:17 379

原创 2025年底 -对工作做个跨年总结

今年只有8,9月没加班,其他时间一直都是晚上加班,有时候周六周日加班,晚上一般都是加到9点。今年新学用qt 做了两个项目,1个纯应用的,一个有界面的,交付了。用的最多的ai工具以前是chatgpt,现在是豆包了,能拍照。希望来年,继续在成长,长期主义实现财富自由梦想的路上,加油。最迟是晚上12:30才下班,连续了两天。年底了,在这家公司的可能是最后一周了。

2025-12-29 14:39:53 304

原创 SingleApplication介绍

它的开发者是 Itay Grudev,该库是对 Qt 早期官方工具 QtSingleApplication 的替代升级(支持 Qt5/Qt6,功能更现代),代码托管在 GitHub(仓库地址:itay-grudev/SingleApplication)。app 是 main 函数中创建的 SingleApplication 实例,它继承自 Qt 原生 QApplication,因此 app.exec() 等价于 QApplication::exec(),同时还会启动单实例的事件监听。

2025-12-16 14:05:28 693

原创 【编程】-详解 QList 中迭代器删除与元素删除的核心差异

在 Qt 开发中,QList 是常用的容器类,用于存储和管理一系列元素。但在删除元素时,很多开发者会混淆 “通过迭代器删除” 和 “通过元素删除” 的用法,甚至写出编译报错的代码。本文将以 “学生成绩列表” 为例,深入解析这两种方式的本质差异,帮你彻底掌握 QList 的删除逻辑。这段代码的目的是 “从列表中删除成绩为 targetScore 的学生记录”,但编译器会直接报错。原因很简单:QList::erase 函数不接受 “元素本身” 作为参数。// 要删除的成绩值。// 错误的删除逻辑。

2025-11-06 19:54:16 1015

原创 【编程】-inline通俗说明

用 extern:总部(.cpp)建一块板,各部门(.h)只挂个牌子说“去总部看”→ 能用,但麻烦。不加 inline:每个部门(.cpp)都自己建一块公告板 → 内容不一致,管理混乱(链接错误)。编译器看到 inline,就知道:“这个变量可能在多个 .cpp 中出现,但它们其实是同一个”;加 inline:你发一个“虚拟公告板”,所有部门看到的其实是同一块板 → 简洁、统一、高效。inline 就是 C++17 给你的“虚拟公告板”能力。🧩 先讲背景:C++ 的“一个定义规则”(ODR)

2025-11-05 11:48:34 370 1

原创 【QT】-封装双向查询map接口

使用 std::optional(C++17)避免异常,更安全。如果你用 C++11/14,可以用 QPair<bool, T> 或抛异常。:封装一个 BidirectionalMap<K, V>为你的枚举创建一个全局双向映射实例。进阶:更简洁的接口(可选)并提供统一的查询接口。

2025-10-29 10:54:16 309

原创 【招聘】-音视频行业企业的招聘分析

5、熟悉典型外设调试,比如MIPI LCD、TP、USB、AudioCodec/Amp 、Power/BatteryManager、Bootloader、WIFI、BT等驱动。熟悉H264/H265,MP4/MOV, V4L2、ALSA、DRM、GUI、屏幕驱动,MIPI LCD、TP、USB、HAL。嵌入式 Linux 应用开发 C/C++、多线程、内存管理、同步、调试 “熟悉Linux开发”、“稳定性、性能、功耗优化”

2025-10-18 21:46:00 1577

原创 【学习】USB摄像头 -> FFmpeg -> H264 -> AI模型

这是一个极其经典且强大的学习路径,完美地结合了嵌入式视觉、媒体处理和AI。你手头的设备(USB摄像头+电脑+虚拟机)完全足够进行深入学习了。我们把这个路径拆解成一个具体的、可执行的“三步走”实战项目,最终目标是:打造一个“智能摄像头”,能实时识别摄像头画面中的特定物体(比如猫、狗、人,或者你自己定义的物体)。阶段一:基础环境搭建与“看见”图像目标: 让你的电脑能够通过USB摄像头捕获视频,并理解视频的本质。具体步骤:环境选择(二选一):推荐方案A: 在你的虚拟机中安装Ubuntu桌面系统。

2025-10-17 17:43:20 854

原创 【AI】-RNN/LSTM ,Transformer ,CNN 通俗介绍

比如,在一张街景图中,要理解“一个孩子正在追一个飞向马路对面的球”,Transformer能更好地关联“孩子”、“球”和“马路对面”这几个分散区域的关系。当讨论某个议题(处理某个词)时,团队里的每个人(序列中的每个词)都可以同时发言并听取所有人的意见,通过投票(注意力分数)来决定谁的意见最重要,从而快速高效地做出全局最优决策。LSTM的改进:LSTM是RNN的超级升级版,它有一个精巧的“记忆细胞”和三个“门”(输入门、遗忘门、输出门),可以像电脑内存一样,选择性地记住重要的信息,忘掉不重要的信息。

2025-10-17 17:16:15 869 1

原创 【项目-】Qt + QCustomPlot 实现频谱监测仪:四图联动、高频信号注入、鼠标交互全解析

在 Qt Designer 中提升 4 个 QWidget 为 QCustomPlot。四个联动图表(main1/main2 联动,sub3/sub4 联动)外部系统调用 addHighFreqSignal(x, y) 注入信号。使用 QSplitter 实现可拖动调整大小的 2x2 布局。将 qcustomplot.h/.cpp 放在项目根目录。高频信号由外部接口实时传入(X, Y 坐标)鼠标跟随竖线 + 点击显示坐标。黑底紫轴绿柱的视觉风格。#关键:包含当前目录。

2025-10-17 16:48:29 488

原创 【QT】-qt界面样式表最推荐的方法

Qt 官方也推荐使用样式表文件管理复杂 UI 样式(参考 Qt 文档:Qt Style Sheets )你在 style.qss 中写的 QPushButton 样式,自动应用到所有按钮,包括子对话框里的!// 错误 1:在 .ui 中为每个按钮设置样式(Qt Designer 里点“样式表”)最科学、推荐的做法:使用统一的 QSS 样式表文件(.qss) + 按需局部微调。这样,主界面、所有 Dialog、所有按钮都会自动应用蓝色样式!// 错误 3:把所有样式写在 main() 里用字符串拼接。

2025-10-17 16:27:28 1180

原创 【选购电脑】-刚入大学的工科大学生或者职场开发者选择电脑品牌和型号的建议

不同品牌、不同系列在性能、耐用性、便携性和价格上差异巨大。职场开发者 ThinkPad T / P 系列工作站 戴尔 XPS / 惠普 ZBook / 拯救者 Legion 高强度开发、多任务、虚拟机、复杂建模或偶尔渲染。联想(Lenovo) 小新(Xiaoxin)、ThinkPad、拯救者(Legion) 覆盖轻薄办公到高性能游戏/专业工作站,耐用性高 小新:轻便办公。惠普(HP) Pavilion、Envy、ZBook、Omen 办公、创意设计、游戏本 Pavilion/Envy:轻薄办公。

2025-10-14 16:24:37 7043

原创 【项目】-QPainter介绍及用QPainter实现极坐标雷达图

当你需要创建一个标准 Qt 部件无法满足其外观或行为需求的 UI 元素时,你就需要重写它的 paintEvent(QPaintEvent *) 方法,并在其中使用 QPainter 进行绘制。核心思想:无论你的“画布”是屏幕、内存中的图像、打印机还是矢量文件,只要它继承自 QPaintDevice,你就可以用同一支 QPainter 的画笔在上面作画。双缓冲(Double Buffering):先在内存中的 QImage 上完成所有复杂的绘制操作,然后再将整个图像一次性绘制到屏幕上,这样可以避免闪烁。

2025-10-14 13:55:40 827

原创 【交换机】-线序定义

2025-10-11 14:25:37 135

原创 【问题】-浮点型自加的问题

0.0001(十进制) = 1.00000110001001001101110100101111000110101001111111 × 2^-14(二进制)0.0001 无法用二进制精确表示(就像 1/3 无法用十进制精确表示为 0.333…结果:tmtc1 被赋值为 true(1)或 false(0),而不是你想要的数值!实际执行顺序:tmtc1 = (tmtc1 + 1 > 62000)// 注意:这里 tmtc1+1 计算了两次,效率低且易错。// 方法2:用括号明确优先级(但可读性差)

2025-10-10 10:05:41 337

原创 【项目】-Orange Pi Zero 3 修改、编译与验证 LED 灯:设备树与驱动调试全记录

注:要是只改设备树就不用全编译内核了,只需要编译生成设备树文件替换即可,全编译是因为修改了驱动,项目的感觉是积累微小的成功体验和把控感,从灯开始,从简单入手,上来别搞很难的。通过修改 设备树(Device Tree) 和 内核 LED 驱动,让 Orange Pi Zero 3 的板载 LED 实现可观察行为(如心跳闪烁),通过最简单的来了解设备树的作用,原理,和驱动的关系。设备树:arch/arm64/boot/dts/allwinner/sun50i-h618-orangepi-zero2w.dtb。

2025-10-08 13:13:05 598

原创 【QT】-QT为啥喜欢用类而不是结构体

小知识:在 Qt 中,QPoint、QSize、QRect 等被称为 “值类型(value types)”,它们设计得像 int 一样轻量、可复制,但又有面向对象的便利性。虽然 QPoint 不是 QObject,但 Qt 整体 API 风格统一用 class,降低用户认知负担。Qt 为什么用 class 而不是 struct 封装 QPoint、QRect 等?首先澄清:QPoint 其实“像 struct”,但声明为 class。Qt 选择了更现代、更安全、更易用的面向对象封装。

2025-09-30 10:15:30 370

原创 【编程】-spdlog介绍

提供一个高性能、线程安全、易用、格式化灵活的 C++ 日志库,满足企业级系统的需求。扩展困难 内置多种日志 sink(控制台、文件、滚动文件、syslog、串口)格式不统一 提供模式化日志格式:时间、线程、等级、颜色等。控制台日志可用颜色:%^ 开始颜色,%$ 结束颜色。扩展困难:切换日志输出、滚动文件、异步日志麻烦。1️⃣ spdlog 的诞生背景与解决的问题。格式不灵活:难以统一时间、等级、线程信息。支持颜色:不同等级日志可用不同颜色。时间戳、线程 ID、日志等级、消息。

2025-09-26 16:47:48 480

原创 【项目】-Orange Pi Zero 3 编译内核测试LED

echo 1 > /sys/class/leds/red-led/brightness # 点亮红灯。echo 0 > /sys/class/leds/red-led/brightness # 熄灭。3. 生成头文件链接(关键!解决 dt-bindings 找不到)1,设置环境变量(写入 ~/.bashrc)一次完整的嵌入式 Linux 驱动学习之旅。内核启动不起来,我再研究下。2,、修改设备树:添加 LED 节点。彻底清理(避免缓存干扰)替换 SD 卡中的文件。

2025-09-14 15:42:09 395

原创 【QT】-怎么实现瀑布图

Qt Charts 适合:柱状图、折线图、饼图等基础图表,不适合科学/工程级瀑布图。将 qcustomplot.h 和 qcustomplot.cpp 加入你的项目。官网下载:https://www.qcustomplot.com/官网:https://www.qcustomplot.com/一、QCustomPlot 实现瀑布图步骤(附代码)±---------------> 时间 (s)三、高级优化技巧(QCustomPlot)步骤 3:实时更新瀑布图(如频谱分析)✅ 开源免费(GPL/商业许可可选)

2025-09-10 15:23:04 1266

原创 【QT】-QT下最科学的命名

成员变量 (Member Variables) | 小驼峰法,并强烈推荐加 m_ 前缀 | m_fileName, m_isConnected | 这是最重要的约定!| 用于登录的按钮 | pushButton, btn_login, login_btn | loginButton | 清晰、直接、与代码风格统一。| 显示用户名的标签 | label, label2, lbl_username | userNameLabel | 立即明白它显示的是userName,并且它是一个Label。

2025-09-10 10:19:02 757

原创 【项目】-mipi摄像头从0开发的过程

我们来完整梳理一下 工业级 MIPI 摄像头从 0 开发到应用的全过程,尽量通俗、详细,并指出每一步涉及的技术、难点、协议支持等。我会给出示例和关键注意点。内核版本建议:LTS 内核 6.x(6.1+ 或 6.5+),带 Media Controller/CSI driver 支持。Sensor Driver:通过 I2C 控制摄像头寄存器(分辨率、曝光、增益、帧率)输出接口:MIPI CSI-2,RAW/YUV/ISP处理后的数据。目标:工业生产线视觉采集,低延迟、高帧率、长时间稳定运行。

2025-09-08 10:42:26 1356

原创 【ai】-训练一个做豆腐的ai模型

批次级时间序列工艺数据(必须):每个批次从浸豆、磨浆、过滤、加热到点卤、凝固、压制的实时传感器数据(时间戳):温度曲线、加料时间与质量、搅拌转速、pH、传感器测得的粘度/流变、卤水浓度、電导率等。理化检测数据(客观指标):含水率、蛋白含量、脂肪、颗粒度(微观结构)、组织显微图(如显微照片)、质构分析仪(Texture Analyzer)给出的硬度/弹性/断裂力等数值。基础改造 + 传感器(温度探针、pH、电导、流量计、粘度/流变传感器、相机若干、视频设备):$5k – $50k(小作坊到半自动生产线)。

2025-09-08 09:57:16 433

原创 【学习】-论兴趣

你怎么看有的人是喜欢吃豆腐才开始做豆腐的,但慢慢的做发现,起早贪黑,每天面对的都是无聊的豆子,闻着这个味道都发呕呢,,像好多工作,如开发,你一开始是觉得好玩,才开始做的,后面以此为职业后发现要按别人的意思做,要坐在固定的地方,要加班,不是你想象的美好,慢慢就普通没兴趣了,很多事,是不是站在岸上看很有兴趣,真正下水就没兴趣了,你怎么看,啥是真正的兴趣,怎么培养,还是说是天生的呢。比如做开发,可能你想尝试新东西,但公司要你维护旧系统,久而久之就觉得无聊。所以,我觉得兴趣不等于职业,职业也不一定要靠兴趣支撑。

2025-09-08 09:54:39 378

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除