自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 C/C++ `volatile` 关键字详解

必须用 volatile 的地方访问外设寄存器中断与主程序共享变量标志位(flag)用于线程之间简单通信volatile是一个十分重要但经常被误用的关键字,它本质上是一个“禁止优化”标志,用于确保程序每次都从内存读取一个变量的最新值。它在嵌入式开发和底层编程中非常重要,但不能用于保证线程安全。记住:volatile 解决“可见性”,atomic/mutex 解决“原子性”和“同步”。

2025-11-26 22:18:05 410

原创 最长递增子序列(LIS)详解:从 dp[i] 到 O(n²) 动态规划

最长递增子序列(Longest Increasing Subsequence, LIS)笔试 / 面试(字节、阿里、腾讯高频)算法竞赛今天用图文结合的方式,从状态定义 → 转移方程 → 代码实现 → 复杂度分析,一步步带你彻底掌握!在一个数组中,找出最长的严格递增的子序列的长度。LIS 是动态规划的“入门神题”状态定义状态转移子问题分解下一步建议手写一遍代码用手算dp表尝试 O(n log n) 优化(耐心排序)欢迎留言你的 LIS 手算过程!,我们下篇见!参考资料。

2025-11-04 17:09:35 880

原创 深入浅出:马尔科夫链完全指南

马尔科夫链(Markov Chain)是一种描述随机过程的数学模型,由俄国数学家安德雷·马尔科夫(Andrey Markov)在20世纪初提出。✅ 用简单的数学模型描述复杂系统✅ 预测系统的长期行为✅ 在AI、金融、生物等领域解决实际问题虽然有局限性,但马尔科夫链及其扩展模型(HMM、MDP等)仍然是现代科学和工程的核心工具。

2025-10-23 15:07:49 987

原创 深入理解进程、线程与协程

进程是操作系统进行资源分配和调度的基本单位,是程序在计算机上的一次执行活动。当你双击打开一个应用程序时,操作系统就会创建一个进程。线程是进程中的一个执行单元,是CPU调度的基本单位。一个进程可以包含多个线程,它们共享进程的资源。协程是一种用户态的轻量级线程,由程序自己控制调度,而不是由操作系统内核调度。协程可以在执行过程中暂停,并在稍后恢复执行。进程是资源分配的基本单位,提供完整的隔离和独立性线程是 CPU 调度的基本单位,轻量级但需要处理同步问题协程。

2025-10-22 17:38:45 922

原创 RT-Thread完全指南:从入门到实战

在嵌入式开发领域,选择一个合适的实时操作系统(RTOS)至关重要。今天介绍一款国产开源RTOS——RT-Thread,它不仅功能强大,而且对中文开发者非常友好。RT-Thread(Real-Time Thread)是一个开源的嵌入式实时操作系统,诞生于2006年,主要面向物联网(IoT)领域。它就像是嵌入式设备的"大脑",帮助开发者管理多个任务、协调硬件资源。RT-Thread作为一款国产开源RTOS,具有以下显著优势:✅功能完善:不只是内核,而是完整的操作系统✅易于上手:丰富的中文资料和活跃社区。

2025-10-12 20:02:34 1275

原创 深入理解队列(Queue):从原理到实践的完整指南

队列是一种线性数据结构,遵循**先进先出(FIFO, First In First Out)**的原则。队列是一种简单但强大的数据结构,其"先进先出"的特性使其在计算机科学的各个领域都有广泛应用。通过本文,我们学习了:✅ 队列的基本概念和生活中的类比✅ 三种C++实现方式:数组、链表、STL✅ 实际应用案例:银行排队系统✅ 队列的变种和高级应用✅ 性能分析和面试常见题目掌握队列不仅能帮助你解决实际编程问题,更能加深对算法和数据结构的理解。队列就像生活中的排队,先到先得,公平合理!

2025-10-08 18:19:26 902

原创 深入浅出:C++ 链表完全指南

链表(Linked List)是一种线性数据结构,它由一系列节点(Node)组成。与数组不同的是,链表中的元素在内存中不是连续存储的,而是通过指针连接在一起。操作时间复杂度说明访问O(n)需要从头遍历搜索O(n)需要遍历查找头部插入O(1)直接修改头指针尾部插入O(n)需要遍历到末尾头部删除O(1)直接修改头指针尾部删除O(n)需要找到倒数第二个节点中间插入/删除O(n)需要先找到位置画图!画图!画图!在纸上画出节点和指针的变化过程这是理解指针操作的最佳方法理解指针。

2025-09-29 19:29:34 922

原创 小波变换深度解析:从理论到实践的完整指南

*小波(Wavelet)**的名字来源于法语"ondelette",意为"小波浪"。与傅里叶变换使用无限长的正弦波不同,小波是一种既在时间上局部化,又在频率上局部化的函数。小波的数学定义:ψ(t) = 小波母函数参数说明:• a: 缩放参数 (控制"宽度",影响频率分析)• b: 平移参数 (控制"位置",影响时间定位)

2025-09-24 18:49:10 1076

原创 贪心算法详解:从分数背包问题说起

贪心算法(Greedy Algorithm)是一种在每一步选择中都采取在当前状态下最好或最优选择的算法策略。在做选择时,总是选择看起来最好的选项,相信这样的局部最优选择能够导致全局最优解。贪心算法是一种简单而强大的算法设计策略。通过分数背包问题,我们看到了贪心算法的核心思想:在每个决策点选择当前最优的选项。虽然贪心算法不是万能的,但在适用的场景下,它往往能以较低的时间复杂度获得最优解。识别问题是否具有贪心选择性质设计合适的贪心策略证明或验证策略的正确性。

2025-09-22 10:16:55 956

原创 深入理解PID控制:从理论到实践的可视化演示

PID控制器是工业控制领域最重要的控制算法之一,广泛应用于温度控制、电机调速、机器人控制等场景。本文将从控制理论出发,结合可视化演示,深入理解PID控制的本质。控制系统的目标:使被控对象的输出跟随期望的设定值,并尽可能地:闭环控制结构:1.2 PID数学模型连续时间PID公式离散时间PID公式参数说明:作用:作用:作用:步骤:调节步骤:调节原则:为了直观理解PID控制的作用机理,这里有一个可视化演示系统。通过调节不同的PID参数,可以实时观察系统的响应特性。3.1 系统特点✅ 实时参数调节

2025-09-15 09:49:54 672

原创 C++面向对象编程

封装:保护你的数据,提供清晰的接口继承:复用现有代码,建立类型层次多态:统一接口,灵活实现。

2025-09-11 10:28:31 244

原创 C++字符串操作完全指南:从基础到工程实践

场景推荐方案理由短字符串操作SSO优化,高效内存使用只读访问零拷贝,减少内存分配大量拼接减少临时对象创建格式化输出(C++20)类型安全,性能优异正则匹配std::regex标准库支持,功能强大C++字符串操作是现代软件开发的基础技能。提升代码质量: 写出更安全、更健壮的字符串处理代码优化程序性能: 减少不必要的内存分配和复制操作解决实际问题: 处理复杂的文本解析和数据转换需求增强工程能力: 构建高性能的文本处理系统📚相关资源本文涵盖了C++字符串操作的核心概念和实战技巧。

2025-09-10 12:59:24 815

原创 深度学习中的梯度消失与爆炸:从数学本质到工程实践

在深度学习复兴之前,传统神经网络很少超过3-4层。这不是因为计算资源不足,而是因为一个根本性问题:深层网络无法有效训练。经典案例回顾:观察结果:在深层神经网络中,梯度通过链式法则进行反向传播:关键洞察:梯度是多个偏导数的连乘积对于第 lll 层的梯度:临界条件分析:关键发现:Hessian矩阵定义:几何解释:Hessian的特征值描述了损失曲面的曲率因此,Hessian 矩阵可以写成整体形式:实际计算示例:3. 优化理论视角:一阶与二阶方法的差异3.1 梯度下降:一阶优化方法标准梯度下降:

2025-09-08 11:29:54 762

原创 Linux文件系统导航

路径操作符是Linux文件系统导航的基础语言。通过熟练掌握这些符号和技巧,你不仅能提高日常工作效率,还能写出更加健壮和可维护的脚本。./用于明确当前目录操作../是相对导航的核心工具让你随时回到安全的港湾提供绝对定位的可靠性在目录间快速切换处理特殊字符的利器最重要的是,在实际使用中要考虑安全性、可读性和可维护性。多练习,多思考,你很快就能在Linux的文件系统中游刃有余。现在,打开你的终端,开始探索这个强大而优雅的文件系统世界吧!每一次cd命令,都是一次新的冒险。

2025-09-05 15:12:42 1115

原创 Linux文件操作指令完全指南

掌握Linux文件系统操作的必备技能,从基础到进阶全覆盖📅 2024年9月 • ⏱️ 15分钟阅读 • 🏷️ Linux系统管理💡 为什么要学习Linux文件操作?无论你是开发者、系统管理员还是技术爱好者,熟练掌握Linux文件操作都是必不可少的技能。这些命令不仅能提高你的工作效率,更是深入理解Unix/Linux系统的基础。

2025-09-04 16:55:59 598

原创 Makefile教程:从入门到精通

目标(Target):要生成的文件依赖(Dependencies):生成目标所需的文件命令(Commands):如何从依赖生成目标# 变量定义CC = gcc# 使用变量clean:恭喜你!通过本教程,你已经从Makefile初学者成长为能够编写专业级构建脚本的开发者。让我们回顾一下学到的关键内容:✅掌握了基本语法:目标、依赖、命令的关系✅学会使用变量:让Makefile更灵活和可维护✅掌握自动化变量:减少重复代码,提高效率✅学会使用函数:强大的文本处理能力✅掌握最佳实践。

2025-09-04 16:30:02 1008

原创 CMake实战教程:从项目结构到构建管理

添加编译选项endif()CMake是一个强大而灵活的构建系统,通过合理的项目结构和CMakeLists.txt配置,可以有效管理复杂的C++项目。清晰的项目结构:分离应用代码、库代码和测试代码模块化的CMake配置:使用子目录和target-specific命令灵活的构建选项:支持不同的构建类型和平台良好的依赖管理:正确处理内部和外部依赖关系。

2025-09-04 14:15:38 432

原创 UDP vs TCP解析

应用类型特点实例实时监控数据时效性 > 完整性传感器数据采集、股票行情流媒体连续数据流,容忍丢失视频直播、音频传输在线游戏低延迟,高频更新FPS游戏、实时对战物联网大量设备,轻量协议温度监测、智能家居广播系统一对多通信网络电视、消息推送。

2025-09-02 21:26:09 666 1

原创 Qt结合SQLite

在Qt桌面应用开发中,数据持久化是一个永恒的话题。SQLite作为一个轻量级的嵌入式数据库,与Qt的结合可以说是天作之合。本文将从理论基础到实践应用,深入探讨Qt与SQLite的结合使用,并通过一个真实的UDP数据处理项目来分析常见问题和最佳实践。使用参数绑定:防止SQL注入,提高安全性合理使用事务:批量操作时显著提高性能统一错误处理:建立完善的异常处理机制资源及时清理:使用RAII模式管理数据库连接索引优化查询:为常用查询字段添加索引。

2025-09-02 16:25:49 674

原创 Arduino非阻塞式多任务完全指南:从单线程到多核的并发编程之旅

核心原理:用millis()替代delay()实现非阻塞任务管理:统一的任务调度器管理多个定时任务状态驱动:复杂逻辑用状态机清晰表达事件机制:异步操作用事件队列解耦性能优化:减少函数调用,避免浮点运算,合理使用内存✅优先选择:协作式多任务(Arduino Uno)✅设计原则:一个任务做一件事,保持简单✅性能优化:缓存millis(),避免重复计算✅错误处理:增加看门狗和超时检测✅调试友好:详细的串口输出和状态监控。

2025-09-01 17:04:19 946

转载 CCS Theia报错:‘launch.json‘ is not a valid JSON file. Missing debug configuration propertie

然后点击open folder把你之前创建的那个文件夹打开。这个是因为你的初始保存项目的文档有问题,你可以在主页。再往里面添加project再正常使用就行。点击new folder。

2025-08-31 19:22:07 61

原创 逻辑运算符 vs 位运算符:深度解析与应用

特性逻辑运算符位运算符符号&&, `操作对象布尔值/表达式数字的二进制位返回值布尔值数字短路求值✅ 支持❌ 不支持主要用途条件判断、流程控制底层操作、性能优化性能一般高(底层操作)可读性高中等(需要理解二进制)

2025-08-26 16:50:15 518

原创 SWD与JTAG详解:嵌入式调试接口的区别与选择

JTAG(Joint Test Action Group)是IEEE 1149.1标准定义的边界扫描测试接口,最初设计用于电路板级别的测试,后来发展成为嵌入式系统调试的重要工具。JTAG接口使用5根信号线SWD(Serial Wire Debug)是ARM公司开发的专用调试接口,专门针对ARM Cortex-M系列处理器设计,是JTAG的简化替代方案。SWD普及化:越来越多的ARM项目采用SWD速度提升:SWD时钟频率不断提高功能增强:SWO、ITM等实时跟踪功能完善工具支持。

2025-08-25 14:39:20 1889

原创 指针详解:从零基础到深入理解

初学编程的同学经常被指针搞得头晕脑胀。什么是指针?为什么要用指针?指针到底指向了什么?今天我们用最直观的方式来彻底理解指针这个概念。指针是一个变量,但它存储的不是普通的数据值,而是另一个变量的内存地址。🧠 指针完整知识图谱指针 (Pointer)││ │ │基础概念 语法操作 高级应用│ │ │内存地址 指向关系 声明赋值 解引用 函数传参 数据结构│地址│ │箭头│ │int* │ │ * │ │ & │ │链表││概念│ │示意│ │声明│ │操作│ │传递│ │树形│。

2025-08-24 22:49:46 450

原创 堆与栈的区别:深入理解程序内存管理

堆是一块用于动态内存分配的空间区域,程序可以在运行时根据需要申请和释放内存。特性维度栈 (Stack)堆 (Heap)分配速度⚡ 极快 - O(1)时间,仅移动指针🐌 较慢 - 需要搜索合适的空闲块释放速度⚡ 瞬间 - 自动释放,无开销🔄 中等 - 需要标记为空闲,可能合并内存大小📏 有限 - 通常1-8MB📈 灵活 - 可到几GB甚至更多碎片问题✅ 无碎片 - 连续分配⚠️ 可能碎片化 - 分配回收后产生碎片线程安全🔒 天然安全 - 每线程独立栈⚡ 需要同步 - 多线程共享需加锁访问模式。

2025-08-24 19:10:09 373

原创 Python-matplotlib-中文字体显示和设置

plt.rcParams['font.family'] = 'SimHei' # 替换为你选择的字体。

2024-03-24 22:04:40 784 2

研究文献自动化搜索与数据抓取工具

作品亮点 高效自动化搜索:利用先进的自动化技术,省去手动搜索的繁琐,实现高效率的文献检索。 智能数据抓取:智能识别并抓取搜索结果的关键信息,包括论文标题、作者、发表时间、来源等,为您的研究提供准确数据支持。 绕过自动化检测:特殊的浏览器属性修改技术,使得工具在访问中国知网时不被识别为自动化软件,保障搜索任务的顺利进行。 用户友好的操作界面:简洁直观的操作界面,无需复杂配置,即插即用。 作品介绍 通过自动化技术,本工具能够自动执行搜索操作,并从搜索结果中智能抓取关键信息,如论文链接、作者、发表来源和时间等,极大地提高了文献收集和预研的效率。此外,本工具还配备了绕过自动化检测的特殊技术,确保搜索过程的平稳无阻。

2024-04-09

空空如也

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

TA关注的人

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