- 博客(183)
- 资源 (13)
- 问答 (1)
- 收藏
- 关注

原创 STM32F429IGT6的RT-Thread移植Fatfs文件系统
STM32F429IGT6的RT-Thread移植Fatfs文件系统,并用SPI方法驱动Fatfs文件系统保存文件
2024-08-21 16:16:07
1044

原创 STM32L151CCT6与 UNI/O®串行EEPROM通信(Druck RPS8100气压传感器)
stm32的单I/O UNI/O®串行接口总线通讯
2024-04-15 15:39:55
1166

原创 Ubuntu环境下C++使用onnxruntime和Opencv进行YOLOv8模型部署
在Ubuntu系统下,使用C++工具和onnxruntime、Opencv等库,对YOLOv8训练好的onnx模型进行推理,解析,部署,方便使用低配置机器进行深度学习的体验。
2023-08-17 15:59:40
3210
9

原创 Windows10+Python+Yolov8+ONNX图片缺陷识别,并在原图中标记缺陷,有onnx模型则无需配置,无需训练。
Windows10+Python+Yolov8+ONNX图片缺陷识别,并在原图中标记缺陷,无需高配置,无需训练,任何人轻松上手。
2023-05-09 16:13:35
3313
12
原创 C++从入门到精通系列教程之第十六篇:设计模式基础与实践
设计模式是针对软件设计中常见问题的通用解决方案,它们不是现成的代码,而是一套经过总结的设计思想和实践经验。提高代码复用性:避免重复造轮子,解决类似问题时可以借鉴已有的方案。降低耦合性:通过明确分工和接口设计,使系统各模块间的依赖降低。增强灵活性与可扩展性:让系统更容易应对需求变化,便于后期维护和扩展。单例模式确保在系统中某个类只有一个实例,并提供一个全局访问点。适用于需要全局共享资源的场景,如配置管理器、日志系统、数据库连接池等。
2025-03-11 15:00:00
790
原创 C++从入门到精通系列教程之第十五篇:模板元编程与编译期计算
模板元编程指的是在编译期间利用C++模板机制进行计算和逻辑推导。提高运行效率:编译期计算的结果直接嵌入到可执行代码中,避免运行时重复计算。类型安全:编译期间检查类型和逻辑错误,能在编译时发现问题。灵活性:可以通过模板递归、偏特化等技术,实现复杂的编译期逻辑。编译器在处理模板元编程时,会展开模板递归,直到遇到特化的基例,从而得到最终的编译结果。
2025-03-11 09:00:00
1401
原创 C++从入门到精通系列教程之第十四篇:数据库编程与SQL
数据库是存储和管理大量数据的重要工具。将程序运行中的数据持久化存储;使用SQL语句对数据进行增删改查操作;构建高效的数据管理系统,便于后续分析和维护。在C++中,可以使用多种数据库,例如MySQL、PostgreSQL、SQLite等。SQLite因其轻量、无需独立服务器、易于集成等优点,非常适合初学者入门数据库编程。SQLite是一个轻量级的嵌入式数据库,其数据库引擎以单个文件形式存储所有数据。零配置:无需安装独立的数据库服务器;易于集成:通过链接SQLite库即可在C++项目中使用;
2025-03-10 15:00:00
1403
原创 C++从入门到精通系列教程之第十三篇:网络编程基础
网络编程主要涉及通过网络协议实现计算机之间的数据通信。在C++中,我们通常使用BSD套接字(socket)API进行网络编程。创建网络通信端点(socket);绑定IP地址和端口号;监听和接受连接(服务器端);建立连接(客户端);发送和接收数据。TCP协议(传输控制协议)是一种面向连接的、可靠的数据传输协议,适用于要求数据完整性和顺序性的应用场景。
2025-03-10 09:00:00
890
原创 C++从入门到精通系列教程之第十二篇:多线程编程
多线程编程允许程序同时运行多个执行流,从而充分利用多核处理器的计算资源,实现并发任务处理。提高性能:将耗时任务分配到多个线程中并行执行,可大幅提升程序效率。响应性更佳:在用户界面程序中,后台线程可以处理耗时操作,而前台界面保持流畅响应。资源共享:线程之间可以共享数据,但这也可能引发数据竞争问题,需要同步机制保证数据一致性。在C++11中,标准库提供了来简化多线程编程,同时配合std::mutex等同步机制,可以有效地管理线程间的数据访问。
2025-03-09 15:00:00
1576
原创 C++从入门到精通系列教程之第十一篇:动态内存管理与智能指针
大家好,欢迎继续关注C++从入门到精通系列教程!在前面的教程中,我们已经掌握了C++的基础语法、数据类型、控制流、函数、数组、字符串、指针与引用、面向对象、模板与STL、文件操作以及异常处理等内容。这些内容构成了C++编程的坚实基础。随着程序规模和复杂度的不断提高,如何高效、正确地管理内存成为了每个C++程序员必须掌握的重要技能。今天,我们将详细探讨动态内存管理的基本概念,以及C++11引入的智能指针如何帮助我们避免内存泄漏和悬挂指针问题。
2025-03-09 09:00:00
570
原创 C++从入门到精通系列教程之第十篇:异常处理与调试技巧
C++允许我们自定义异常类,以便传递更丰富的错误信息。自定义异常类通常继承自,并重写what()方法返回错误描述。#include <exception> // 包含std::exception// 定义一个自定义异常类,继承自std::exceptionprivate:// 异常描述信息public:// 构造函数,初始化错误信息// 重写what()方法,返回错误描述// 修改除法函数,抛出自定义异常throw DivideByZeroException("错误:尝试除以零!")
2025-03-08 15:00:00
746
原创 C++从入门到精通系列教程之第九篇:文件操作与流
大家好,欢迎继续关注C++从入门到精通系列教程!在前面的教程中,我们已经学习了C++的基础语法、数据类型、控制流、函数、数组、字符串、指针与引用、面向对象、模板与STL等内容。这些知识为构建高质量的C++程序打下了坚实的基础。本篇博客将聚焦于,详细讲解如何在C++中利用输入输出流对文件进行读写操作。通过本篇文章,你将学会如何利用fstream库中的ifstreamofstream和fstream进行文本文件和二进制文件的操作,同时附带大量实战案例和详细中文注释,帮助你快速掌握文件操作的核心技术。
2025-03-08 09:00:00
708
原创 C++从入门到精通系列教程之第八篇:模板与STL
STL(Standard Template Library)是C++标准库的一部分,它提供了大量模板化的容器、算法和迭代器。借助STL,我们可以编写高效、通用且可重用的代码,而无需从零实现常用数据结构和算法。
2025-03-07 15:00:00
1612
原创 C++从入门到精通系列教程之第七篇:面向对象编程 —— 类与对象
面向对象编程是一种程序设计范式,它将数据与对数据的操作封装在一起,形成“对象”。在C++中,类是构造对象的蓝图。模块化:将复杂问题拆分成小模块,每个类负责一部分功能。封装性:数据与操作封装在一起,保护数据不被外部随意修改。继承性:允许从已有类中派生新类,实现代码复用。多态性:通过虚函数实现不同对象对同一接口的不同响应,使程序更灵活。本篇主要聚焦于类与对象的基础,帮助新手理解如何定义类、创建对象及使用其成员。类是对一类事物的抽象描述,包含数据成员和成员函数。
2025-03-07 09:00:00
911
原创 C++从入门到精通系列教程之第六篇:指针与引用
大家好,欢迎继续关注C++从入门到精通系列教程!在前几篇文章中,我们已经学习了C++的基本语法、数据类型、控制流、循环、函数、数组与字符串等基础知识。这些内容为理解更深层次的C++概念奠定了坚实基础。本篇博客将深入介绍C++中两个十分关键的概念——与。通过本篇教程,你将学会如何使用指针进行内存地址的操作、进行动态内存分配,并了解引用的定义与用法,掌握它们在实际开发中的应用。文章中包含了详细的代码示例和中文注释,帮助新手逐步掌握指针与引用的核心概念。
2025-03-06 15:00:00
813
原创 C++从入门到精通系列教程之第五篇:数组与字符串
数组是存储相同数据类型的一组连续内存空间,便于批量存储和操作数据。固定大小:数组的长度在声明时确定,不能动态改变(标准数组)。下标索引:数组元素可以通过下标(从0开始)访问。连续存储:数组中的数据在内存中连续存放,有助于提高访问效率。
2025-03-06 09:00:00
672
原创 C++从入门到精通系列教程之第四篇:函数、参数与递归
在C++中,函数是完成特定任务的代码块。模块化设计:将大问题拆分成多个小问题,各自用函数解决,便于管理和维护。代码复用:将常用代码封装为函数,重复使用而不必多次编写。逻辑清晰:使主程序结构更清晰,便于调试和扩展。在C++中,为了让编译器知道函数的存在,我们通常需要先声明函数,再定义函数。函数声明(原型):告诉编译器函数的名称、返回类型和参数列表,但不提供函数体。函数定义:包括函数声明和函数体,实现具体的功能。// 函数声明:声明一个计算两个整数之和的函数// 调用函数return 0;
2025-03-05 15:00:00
835
原创 C++从入门到精通系列教程之第三篇:控制流与循环结构
在编程中,控制流语句决定了程序的执行顺序。通过条件判断和循环控制,我们可以使程序根据不同条件做出不同的决策,或重复执行某段代码直到满足特定条件。条件判断语句ifif-elseelse if:根据布尔表达式的真假选择执行代码块。:针对一个变量的多个可能取值进行多路分支选择。循环语句for循环:通常用于已知循环次数的场景。while循环:用于在条件满足时重复执行。do-while循环:至少会执行一次循环体,再根据条件判断是否继续执行。
2025-03-05 09:00:00
504
原创 C++从入门到精通系列教程之第二篇:基础语法与数据类型
在C++中,程序由一系列函数、语句和表达式构成。C++程序的核心是main()函数,所有代码的执行都从这里开始。变量与常量的声明和初始化基本数据类型(整型、浮点型、字符型、布尔型)算术、关系、逻辑运算符的使用基本输入输出方法常量是其值在程序运行期间不会改变的数据。C++中可以使用const关键字定义常量。这样定义后,PI的值就不能再修改。
2025-03-04 17:00:00
832
原创 C++从入门到精通系列教程之第一篇:C++基础入门与环境搭建
大家好,欢迎来到C++从入门到精通系列教程的第一篇博客!本系列旨在帮助广大初学者从零开始,逐步掌握C++这门功能强大、用途广泛的编程语言。文章中我们将穿插大量实训案例和代码解析,并且所有代码都附有详细的中文注释,力求让大家能够轻松跟上学习进度。
2025-03-04 12:44:47
527
原创 C++游戏开发系列教程之第二篇:面向对象编程与游戏架构设计
大家好,欢迎回到C++游戏开发系列教程!在第一篇中,我们介绍了C++游戏开发的基本概念和如何搭建一个简单的游戏循环,为新手打开了C++游戏开发的大门。本篇博客将深入讲解面向对象编程(OOP)在游戏开发中的重要性,以及如何设计一个简单而有效的游戏架构。通过本篇文章,你将学到如何利用C++的类与继承构建游戏中的各个对象(如玩家、敌人等),并结合游戏循环实现一个基础的游戏状态管理系统。所有代码均附有详细中文注释,帮助大家快速理解和掌握。
2025-02-26 15:00:00
1097
原创 C++游戏开发系列教程之第一篇:入门与基础概念
大家好,今天正式开启C++游戏开发系列教程的第一篇文章。本系列旨在帮助初学者从零开始,逐步掌握C++游戏开发的核心知识和实战技能。文章中将穿插大量实训案例和代码解析,所有代码均附有详细中文注释,确保你能轻松跟上。C++作为一门高性能的编程语言,因其出色的运行速度和底层控制能力,长期以来一直是游戏开发领域的首选语言。主要原因有:在正式编写游戏代码之前,我们需要了解几个基本概念:在本系列中,我们将从基础的游戏循环编写开始,逐步扩展到图形渲染、物理模拟、AI控制等各个模块。对于C++游戏开发,首先需要搭建合适的开
2025-02-26 09:13:33
1054
原创 Python爬虫系列教程之第十六篇:代理IP池构建与管理策略
获取代理:通过爬取免费代理网站(如西刺代理)获取IP和端口信息。验证代理:通过访问测试网站(如 httpbin.org/ip)验证代理的可用性。构建代理池管理器:封装成类,支持线程安全的更新与随机获取代理。在爬虫中的应用:利用代理池动态切换代理,降低单个IP被封风险。分布式共享:利用 Redis 实现代理池在多节点间的共享,适应大规模爬虫需求。管理注意事项:关注代理质量、更新频率、失败重试与监控,构建高效稳定的代理系统。
2025-02-24 15:00:00
2428
原创 Python爬虫系列教程之第十五篇:爬取电商网站商品信息与数据分析
本篇博客详细讲解了如何从电商网站中爬取图书商品信息,并对采集到的数据进行清洗、统计与可视化分析。爬取数据使用 Requests 与 BeautifulSoup 结合循环遍历分页,提取图书标题、价格、库存和评分等信息。将采集到的数据保存为 CSV 文件,便于后续处理。数据清洗与分析利用 Pandas 对价格数据进行格式转换,并将英文评分映射为数字。进行基本统计,计算平均价格、各评分图书数量以及按评分分组的平均价格。数据可视化。
2025-02-24 08:46:09
2597
1
原创 Python爬虫系列教程之第十四篇:爬虫项目部署、调度与监控系统
APScheduler(Advanced Python Scheduler)是一个基于 Python 的轻量级任务调度器,支持定时执行任务。它提供了多种调度方式,包括间隔调度、定时调度和 Cron 表达式调度,能够满足绝大多数爬虫任务的调度需求。如果希望在应用层面实现简单的监控和自动重启,可以使用 Python 的psutil和subprocess模块编写监控脚本。下面的示例代码演示了如何检查指定的爬虫进程是否在运行,若未运行则自动重启该进程。注意:请确保已安装psutil模块,可通过安装。
2025-02-21 15:00:00
1967
原创 Linux命令终极指南:从入门到精通掌握150+核心指令
Linux命令非常多,所以需要合理分类,比如文件管理、系统管理、网络管理、权限管理、文本处理、软件管理、进程管理、磁盘管理、Shell相关、开发工具、备份恢复、安全相关、性能监控等。每个类别下选择最重要的命令,详细说明其用法、参数和示例。然后,我需要确保每个命令的解释足够详细,但又不冗长。例如,对于ls命令,不仅要列出常用参数,还要解释每个参数的作用,并给出示例。同时,要注意命令的常见使用场景,比如查找文件时find和locate的区别,或者grep的不同选项如何影响搜索结果。还要考虑用户可能的进阶
2025-02-21 13:48:42
438
原创 Python爬虫系列教程之第十三篇:构建高可用爬虫系统 —— 混合架构与自动化监控
大家好,欢迎继续关注本系列爬虫教程!随着爬虫项目规模的不断扩大和业务需求的提升,单一技术方案往往难以满足实际应用中对和的要求。如何构建一个既能应对多种反爬策略,又能在异常情况下自动恢复、实时监控运行状态的高可用爬虫系统,成为每个爬虫工程师必须面对的问题。接下来,我们将逐步展开讲解。
2025-02-21 08:49:43
1848
原创 《Linux内核与Python的深度对话:构建百万级并发的字符设备驱动》
传统认知中Python不适合系统级编程?本文将通过实现百万QPS的日志采集系统,展示如何让Python与Linux内核深度协作。你将掌握:可装载内核模块(LKM)开发技巧io_uring异步I/O极致优化BPF性能分析技术用户态-内核态共享内存实时流量控制系统日志采集成本降低:服务器数量从50台缩减至8台端到端延迟优化:交易系统延迟从3ms降至0.8ms运维效率提升:故障定位时间缩短92%
2025-02-20 18:00:00
267
原创 Python爬虫系列教程之第十二篇:爬虫异常处理与日志记录
大家好,欢迎继续关注本系列爬虫教程!在实际的爬虫项目中,网络请求可能会因为各种原因失败,如连接超时、目标服务器拒绝访问、解析错误等。此外,大规模爬虫任务运行过程中,各种异常情况层出不穷,如何快速定位问题、追踪爬虫运行状态显得尤为重要。本文将介绍如何通过异常处理和日志记录机制,提升爬虫项目的健壮性和可维护性。
2025-02-20 15:00:00
892
原创 Python爬虫系列教程之第十一篇:Scrapy框架实战
大家好,欢迎继续关注本系列爬虫教程!本篇博客将为大家介绍如何使用 Scrapy 框架构建一个高效、可扩展的爬虫项目。Scrapy 是一个功能强大的爬虫框架,它内置了许多优秀的特性,如异步请求、内置中间件、Item 管道等,非常适合用于大规模数据采集和项目维护。在本文中,我们将以抓取 Quotes to Scrape 网站为例,详细讲解如何从创建项目、定义数据结构、编写爬虫、数据清洗到数据存储的全过程,并附上详细的代码及中文注释,帮助你快速掌握 Scrapy 的使用方法。
2025-02-20 09:17:39
718
原创 Python爬虫系列教程之第十篇:爬虫数据清洗与存储到MySQL数据库
大家好,欢迎继续关注本系列爬虫教程!在前面的几篇博客中,我们介绍了爬虫的基本原理、如何处理反爬机制、如何实现异步爬虫、如何爬取API数据等内容。然而,当我们抓取到的数据量越来越大时,数据的存储与管理就成为了一个不可忽视的问题。在本篇博客中,我们将探讨如何对爬虫抓取的数据进行数据清洗,并将数据存储到MySQL数据库中,便于后续的分析与管理。具体内容包括:数据清洗:去除无用数据、处理缺失值、格式化数据等。数据存储:如何将清洗后的数据存储到MySQL数据库。
2025-02-19 15:00:00
2238
1
原创 Python爬虫系列教程之第九篇:爬取API数据与解析JSON格式
大家好,欢迎继续关注本系列爬虫教程!在之前的博客中,我们讲解了如何构建爬虫并应对反爬机制、如何使用多线程和分布式爬虫提高效率等技术。然而,很多网站并不是直接通过HTML页面展示数据,而是通过 API(应用程序接口) 以 JSON 格式提供数据。这种方式不仅提高了数据交换的效率,也让爬虫获取数据变得更加简便。本篇博客将介绍如何爬取通过 API 提供的数据,如何解析 JSON 格式,并展示如何使用 Python 获取并处理API返回的JSON数据。
2025-02-19 09:00:00
2262
1
原创 《Python云原生机器学习平台架构实战:从模型开发到千万QPS推理服务》
开发效率提升:模型迭代周期从2周缩短至2天资源成本降低:GPU利用率从35%提升至82%业务指标增长:推荐系统CTR提升18.7%运维复杂度下降:故障定位时间减少90%
2025-02-18 19:00:00
397
原创 Python爬虫系列教程之第八篇:分布式爬虫与队列管理
分布式爬虫是指将爬虫的任务分配到多个机器或多个进程中并行执行。每个节点负责抓取不同的页面或数据,从而提高抓取效率和速度。调度器(Scheduler):负责任务的分配和调度。将待抓取的URL队列分配给各个爬虫节点。爬虫节点(Spider):实际执行抓取任务的工作,每个节点独立运行,可以是不同的机器或进程。数据存储(Storage):存储抓取到的数据,可以是数据库、文件系统或分布式存储系统。队列管理(Queue):管理任务队列,确保任务的高效分配。
2025-02-18 15:00:00
1964
原创 Python爬虫系列教程之第七篇:处理反爬机制——User-Agent、验证码与IP封禁
大家好,欢迎继续关注本系列爬虫教程!在前几篇中,我们已经学习了如何编写基本爬虫,如何通过异步和多线程提升效率,以及如何使用 Selenium 处理动态网页。今天,我们将重点讨论如何处理常见的了解如何应对这些反爬机制,可以让我们的爬虫更加高效、稳定,避免被目标网站屏蔽。
2025-02-18 09:00:00
1697
原创 《Python分布式系统架构深度解析:从Celery集群到千万级任务调度实战》
传统认知中Python不适合构建大型分布式系统?本文将通过某头部电商日均1.2亿订单处理系统的实战案例,颠覆这一认知。动态DAG工作流引擎设计跨机房数据一致性保障GPU与CPU异构资源调度毫秒级延迟的优先队列实现全链路可观测性体系建设吞吐量:借助Numba与C扩展突破GIL限制可靠性:基于Raft/Paxos实现强一致性可观测性:OpenTelemetry+Prometheus全链路覆盖弹性:K8S与Serverless无缝集成。
2025-02-17 18:23:44
441
1
原创 Python爬虫系列教程之第六篇:异步爬虫与多线程
大家好,欢迎继续关注Python爬虫系列教程!在前几篇博客中,我们掌握了爬虫的基础知识、数据解析技巧、动态网页的抓取方法以及如何存储数据。然而,当我们需要抓取大量数据时,单线程爬虫的效率显然不足。为了提高爬虫的性能,我们需要使用异步编程或多线程来并发抓取多个页面,从而提升爬虫的抓取速度。在本篇博客中,我们将深入讨论如何通过和。
2025-02-17 15:00:00
1694
原创 Python爬虫系列教程之第五篇:动态网页与Selenium
大家好,欢迎继续关注本系列爬虫教程!在前四篇博客中,我们已经掌握了爬虫的基础、数据解析技巧、反爬策略的应对以及如何将数据存储到不同的格式中。今天,我们将深入学习如何处理,尤其是如何使用来模拟浏览器渲染并获取动态加载的数据。在许多网站中,数据并不是在页面加载时就完全渲染的。相反,数据是通过JavaScript异步加载的,这些数据通常在HTML源代码中并不可见,只有在浏览器执行JavaScript后才会显示出来。针对这些情况,我们可以使用来模拟真实浏览器的操作,从而抓取这些动态内容。
2025-02-17 09:00:00
1539
原创 Python爬虫系列教程之第四篇:数据存储与管理
大家好,欢迎继续关注本系列爬虫教程。前几篇博客中,我们依次学习了爬虫的基础知识、数据解析技巧以及应对反爬策略的高级请求方法。在实际爬虫项目中,数据采集只是第一步,如何将提取到的数据进行存储与管理同样非常重要。本篇博客将详细介绍如何将数据保存到CSV文件、JSON文件以及SQLite数据库中,并附上完整的代码示例,代码中均包含详细的中文注释,方便大家理解和学习。
2025-02-16 15:00:00
1744
原创 Python爬虫系列教程之第三篇:网络请求进阶与反爬策略
大家好,欢迎继续关注本系列。在前两篇博客中,我们已经了解了爬虫的基本原理以及如何解析网页数据(使用 XPath 与正则表达式)。在实际爬虫开发中,网站往往会采取各种反爬策略,比如检测请求头、限制IP访问、要求登录等。本篇博客将重点介绍如何在网络请求阶段模拟浏览器行为,设置代理、管理会话以及处理请求异常,从而应对常见的反爬机制。
2025-02-16 09:00:00
1469
AD7792不配置SPI,时序读取3通道数值,下载后直接使用
2025-01-06
文本内指令多行发送,通过串口将文本内多行指令发送给下位机,可选择端口,波特率,文本,应答内容,利用多线程可随时运行和结束
2024-12-31
Matrix-Rain-Screensaver
2024-12-20
32f10x系列头文件
2024-12-20
上升沿触发和下降沿触发VI
2022-11-25
信号分析与处理系统2016
2022-10-14
robotstudio6.08建立一个码垛工作站,将20块60*40*10的木块,排成4层,奇数层和偶数层的排布方式如图所示。
2022-05-11
robotstudio建立由平面和斜面组成的模型,并编写画图程序,绘制的图形一半在斜面上,一半在平面上。
2022-05-11
robotstudio6.08创建工具笔、工作台,建立书中所示工作站,完成绘图程序编程。
2022-05-11
python,opencv-python人脸识别,并且发邮件对镜头前未知人员进行报警;
2022-05-09
robotstudio6.08创建自己的三张纸画图工作站。要求绘制图案应包含直线和曲线,能通过示教器指定纸张,指定绘图参数。
2022-04-06
Ubuntu系统使用zsh后,拉动终端窗口大小为什么会出现这种情况
2023-08-01
pycharm缺失Manage Repositories选项,无法更换国内镜像源
2022-05-02
TA创建的收藏夹 TA关注的收藏夹
TA关注的人