自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 架构风格和设计模式类型

创建型模式对象的。

2025-04-10 10:56:13 11

原创 Qt Creator插件系统详解及插件开发实战

Qt Creator作为Qt官方IDE,其插件系统允许开发者扩展IDE功能。本文以Qt Creator 4.11(基于Qt5.12.12构建)为例,深入解析插件系统规则,并提供从零开发插件的完整指南。// 创建菜单项。

2025-03-11 10:51:06 623

原创 Qt 多线程误区:QThread 任务未正确执行及收尾回调未触发的原因分析

在开发 Qt 项目时,我们希望并行执行多个任务来提高效率,并在所有任务完成后进行收尾处理。需要更灵活的线程管理(如持续运行任务)只是空跑了一下,没有执行任何任务。,它只是提供了一个独立的事件循环。任务是一次性的,无需额外管理线程。代码更简洁,自动管理线程,避免。仍然卡在主线程,请一定要改用。事件触发时调用收尾函数。(主线程)的方法,因此。线程控制权更强,可绑定。

2025-02-24 14:49:38 405

原创 系统架构设计师备考策略

著称,官方教材《系统架构设计师教程(第2版)》厚达 700 余页,若盲目通读耗时费力。“数据库响应慢问题,建议采用读写分离(理论)+ 增加从库(方案)+ 监控 QPS 验证(数据)。“本文以××项目为背景,通过引入××架构,解决了××问题,使系统吞吐量提升××倍。:通过关键词(如“高并发”、“数据一致性”)匹配知识模块。:用图表展示性能提升(如 TPS 对比图)。:掌握 80% 高频考点,建立知识框架。:不透露企业机密,使用“某银行”代替。:抓住核心考点,合理分配时间,用。:全真模考,提升应试稳定性。

2025-02-22 18:01:42 279

原创 领域模型:驱动软件进化的战略核心与实践指南

从 2003 年 DDD 提出到 2025 年 AI 建模普及,领域模型已从方法论演变为软件工程的基石。只有将模型视为活的有机体,而非静态图纸,软件才能真正具备应对未知挑战的进化能力。“未来的软件战争,本质上是领域模型的战争。

2025-02-15 15:41:28 586

原创 软件质量属性全景解析:从理论到工程实践

在Gartner 2025年技术成熟度曲线中,自适应质量管理系统(AQMS)已进入生产力 Plateau期(成熟应用阶段)。质量即代码(Quality as Code)实践可观测性驱动的质量优化隐私计算与安全多方计算的融合通过将质量属性融入DevOps全流程,构建真正具备抗风险能力的软件系统。正如Martin Fowler所言:"优秀的架构不是在会议室设计的,而是在质量属性的持续博弈中进化出来的。

2025-02-12 16:05:06 946

原创 软件架构评估中的敏感点、权衡点、风险点

是三个至关重要的概念。理解它们之间的关系,并合理评估它们的影响,有助于构建稳定、高效、可扩展的系统。本文将深入探讨这三个概念,并结合实际案例进行分析。在软件架构设计和评估过程中,架构师需要关注多个关键因素,以确保系统满足功能性和非功能性需求。通过深入理解这三者的关系,架构师可以更好地设计出。,我们来看如何分析敏感点、权衡点和风险点。假设我们正在设计一个。

2025-02-11 09:49:42 980

原创 华为 MindStudio 安装指南

它支持 模型训练、推理、算子开发、性能优化 等 AI 任务,并依赖 CANN(Compute Architecture for Neural Networks) 作为计算架构基础。本指南介绍如何在 KunLun G2280 服务器上安装 MindStudio,包括环境准备、依赖安装、CANN 安装及 MindStudio 安装等步骤。安装完成后,你可以使用 MindStudio 进行 Ascend AI 计算 相关开发,如 模型训练、算子开发、AI 推理 等任务。

2025-02-10 15:43:19 926

原创 基于架构的软件设计(Architecture-Based Software Design, ABSD)

在实际项目中,架构设计往往会复用一些通用的软件模板(Software Patterns),这些模板提供了标准化的软件结构设计方案。采用系统化的方法,通过架构驱动整个软件开发生命周期,以确保系统的稳定性、可扩展性和适应性。不同的架构风格适用于不同的场景,在实际项目中,需要根据业务需求选择合适的架构风格。:分析业务需求,明确系统的功能性和非功能性需求,为架构设计提供依据。:由外部专家或客户评审架构方案,确保架构的合理性和可行性。:随着业务需求的变化,优化架构,确保系统的长期可维护性。基于架构的软件设计包括。

2025-02-07 11:14:07 1071

原创 机器学习-学习类型

监督学习是一种利用标注数据(输入和对应的目标输出)训练模型的方法,其目标是学习输入与输出之间的映射关系。这种方法广泛应用于分类和回归任务。无监督学习在没有标签的情况下,通过分析数据的结构和模式,挖掘数据的内在规律。其目标是从数据中发现潜在的模式或分布。半监督学习结合少量有标签数据和大量无标签数据进行训练,利用无标签数据弥补标注数据不足的问题。强化学习是一种通过与环境交互来学习最优策略的方法。智能体根据环境反馈的奖励信号调整策略,以最大化累计奖励。自监督学习通过数据生成伪标签来训练模型,无需人工标注。

2025-01-22 12:08:41 1008

原创 利用硬盘虚拟内存解决华为手机模拟器运行内存不足问题

在进行鸿蒙开发时,华为手机模拟器是必不可少的工具。然而,对于只有8GB物理内存的电脑来说,运行模拟器可能会遇到"系统内存不足"的提示,导致模拟器无法正常启动。华为手机模拟器需要较大的内存支持,而只有8GB内存的电脑无法满足其运行需求。通过设置硬盘虚拟内存,可以将部分硬盘空间划分为虚拟内存,与物理内存共同使用,从而达到16GB的总内存需求,顺利运行模拟器。再次尝试运行模拟器,就能成功运行啦,欧耶。打开任务管理器,切换到“性能”选项卡。在“内存”部分,在“已提交”内存发现可用内存有16G啦。

2025-01-17 21:01:18 485

原创 QT程序崩溃的背后:一次离奇的调试经历

程序崩溃是开发者无法避免的挑战,但也是提高能力的机会。通过这次经历,我不仅解决了问题,还对 Qt 框架有了更深入的理解。希望这篇博客能为其他开发者提供一些启发,在面对类似问题时更有信心和方向。如果你也遇到过类似的棘手问题,欢迎在评论区分享你的经验!

2025-01-15 14:54:28 679

原创 在 Visual Studio Code 中使用 qmake 构建和调试 Qt 项目

通过配置tasks.json和,我们可以在 VSCode 中无缝集成qmake项目,实现构建和调试。同时,使用配置 IntelliSense,可以提高代码编辑体验。虽然 VSCode 不像 Qt Creator 那样对 Qt 项目有内置支持,但它丰富的插件生态(如笔记和 AI 辅助插件)和高度的可定制性,使得它成为 Qt 开发的一个优秀选择。

2025-01-10 10:15:21 1663

原创 linux双网卡配置双路由指南

在Linux系统中配置双网卡以实现基于不同路由策略的网络访问,是一个常见的需求,特别是在需要同时连接多个网络或者进行特定网络流量管理的场景中。本文将详细介绍如何在Linux系统中配置有线网卡A和无线网卡B,分别通过不同的网关访问不同的网络。现在,系统会根据定义的规则,通过不同的网卡路由不同的网络流量。172.x.x.x 和 10.x.x.x 网段的数据通过网卡A路由。是无线网卡的常见名称,实际使用时请替换为你的无线网卡名称(可以使用。是有线网卡的常见名称,实际使用时请替换为你的有线网卡名称。

2024-12-24 14:25:56 1474

原创 警告:文件XXX的修改时间在未来XXX秒后

原来是电脑的系统时间错乱了,变成2021年2月17号,将电脑系统时间改回来之后,编译正常。警告:文件XXX的修改时间在未来XXX秒后。

2023-09-27 15:50:14 626

原创 dbus简介及使用

观察DBus消息:在d-feet窗口的上部面板中,单击“Session Bus”选项卡以打开DBus消息视图。检查DBus对象和接口:在d-feet窗口的左侧面板中,展开“org”文件夹以查看可用的DBus对象和接口。d-feet是一个python编写的可视化DBus接口工具,可以在Linux系统上使用。发送DBus消息:在d-feet窗口的左侧面板中选择一个对象,选择一个方法并双击。uint32:32位无符号整数类型。int32:32位有符号整数类型。### 查询当前生效的连接名。

2023-08-14 21:10:22 1020

原创 systemd编写自启动服务文件的常见错误

这个错误一般是工作目录填错了,检查下WorkingDirectory或ExecStart填错了。这个错误一般是所属用户或用户组找不到,检查下User和Group字段是不是填错了。

2023-08-11 17:03:57 1342

原创 交叉编译工具链

官网下载压缩包,要注意自己的CPU架构,比如我是在x86_64电脑上编译arm上的目标文件,因此下载gcc-linaro-{version}-x86_64_arm-linux-gnueabihf。CodeSourcery:Codesourcery是一家提供定制编译器的公司,其提供的交叉编译链工具链包括GCC和Binutils,可用于ARM和MIPS等架构的编译。Linaro:Linaro是一家致力于ARM架构开发的公司,其提供的交叉编译工具链包括GCC和Binutils,可用于ARM架构的编译。

2023-08-06 10:53:03 618

原创 开发板配置

CPU:NXP i.MX6ULL,单核,ARM Cortex-A7。核心板存储:4G emmc flash。MAC地址:1C877651E685。核心板内存:256M DDR3。

2023-08-06 10:36:26 123

原创 Ubuntu软件包安装失败:代码 bionic 和 focal的区别

不同版本的Ubuntu的软件源及软件包依赖关系是不同的,Ubuntu就是靠版本信息中的Codename代号来区分的。不光是对 Ubuntu 适用,对deepin、uos等debain系列的操作系统都适用。我在Ubuntu上使用apt安装软件时总是报一些错误,不是版本不对,就是依赖关系不对。尝试了各种方法,突然想到是不是软件源有问题。可见我的Ubuntu版本是20.04,代号是focal。看到上面的bionic代号,我就知道果然是软件源的问题。

2023-07-15 13:55:07 3818

原创 VScode配置Linux内核环境

接着输入远程主机的用户名和ip,如root@192.168.50.170,接着连接远程主机,会要求输入远程主机的密码,成功后即可访问远程主机,并可访问远程主机上的文件。在linux内核源码目录执行python scripts/clang-tools/gen_compile_commands.py命令,即可生成compile_commands.json,该文件包含了内核编译实际使用了的源文件。如果是远程阅读和开发代码的话,需要安装该插件,该插件的作用是通过ssh协议使vscode能够访问远程服务器。

2023-07-02 16:19:38 1296

原创 vs code打开windows子系统Ubuntu(WSL)文件夹

vs code打开windows子系统Ubuntu(WSL)文件夹

2022-11-29 22:11:26 2354

原创 低功耗蓝牙(BLE)的工作模式

介绍BLE常见的四种工作模式

2022-11-16 21:41:26 1767

原创 Json介绍,QT解析和生成Json

介绍json组成结构,已经QT中相关数据结构和json文件的解析及生成

2022-11-08 11:07:46 1248

原创 nordic 52832中添加RTT打印

nordic 52832中添加RTT打印

2022-11-03 10:54:27 738

原创 ADS1292检测原理及其驱动

讲解ADS1292R的检测原理及其驱动函数

2022-11-03 10:10:00 5057

原创 Git使用SSH、HTTPS的异同及其原理

详细解说git使用https和ssh的不同与原理

2022-10-26 16:43:55 2704

原创 SPI读写Flash的时序

SPI的读写时序,Nordic52832的spi读写配置

2022-10-20 16:54:16 1723

原创 QT .pro中 PKGCONFIG配置项搜索不到库

编译失败,提示gsettings-qt未安装,但是我明明在Ubuntu下安装了libgsettings-qt-dev开发包,唯一的解释是,qt没有搜索到该库。一顿操作之后,居然是因为Ubuntu下没有安装pkg-config!,执行“sudo apt-get install pkg-config”,问题解决。qmake在遇到PKGCONFIG配置项后,会调用pkg-config去在特定的几个目录下搜索依赖库。既然说到这里,就再讲讲qt creator添加第三方库的几种方式。

2022-10-15 16:32:54 1460

原创 反反编译的手段

理论上来说,没有不能破解的程序,因为程序最终都要部署到目标机器上,在目标机器上运行,当然有的程序反编译后只能得到汇编源码,但有了汇编源码就还原了功能。反反编译的手段,主要是提高反编译的难度和门槛。尤其像C#和java这类语言很容易反编译,因为这类语言编写的程序,都首先会被翻译成一种在.net或java虚拟机平台上运行的“中间语言”IL,只有在程序运行时,运行时编译器(JITter)才将IL代码编译成机器语言。这种IL以dll的形式存在,很容易通过反射、ILDASM和ILASM等方式将代码识别出来。为了保

2021-12-27 14:56:08 1108

原创 proteus8.9安装教程

目录软件介绍安装教程破解方法后续软件介绍Proteus软件是英国Lab Center Electronics公司出版的EDA工具软件)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是比较好的仿真单片机及外围器件的工具。受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。proteus8.9支持stm32f4的仿真,下面我们介绍安装教程,文末有下载链接。安装教程1.在安装包中找到proteus8.9.SP2.exe,双击安

2021-11-12 14:48:27 2002

原创 单片机还能这样学:数码管

单片机还能这样学:数码管前言这一章介绍数码管,通过数码管显示字符。数码管简介led数码管是由多个发光二极管封装在一起组成“8”字型的器件,引线已在内部连接完成,只需引出它们的各个笔划和公共电极。led数码管常用段数一般为7段有的另加一个小数点。led数码管根据LED的接法不同分为共阴和共阳两类,了解LED的这些特性,对编程是很重要的,因为不同类型的数码管,除了它们的硬件电路有差异外,编程方法也是不同的。颜色有红,绿,蓝,黄等几种。led数码管广泛用于仪表,时钟,车站,家电等场合。选用时要注

2021-11-08 11:23:23 214

原创 单片机还能这样学:直流电机

单片机还能这样学:直流电机前言这一章介绍单片机通过控制L298N从而驱动直流电机。L298N简介L298N是一种高电压、大电流电机驱动芯片,工作电压最高可达46V,输出电流瞬间峰值可达3A,持续工作电流为2A。内部含有两个H桥的全桥式驱动器,可以用来驱动直流电机、步进电机、继电器线圈等感性负载。采用标准逻辑电平信号控制,具有两个使能端,可以外接检测电阻,将变化量反馈给控制电路。下图是L298N对直流电机控制的逻辑真值表。以上5种模式通过模块的BS0~2设置,BS0~2的设置与模块接口模

2021-10-24 18:19:34 859

原创 bool类型在VS中引发的血案

起因今天在vs2010中编写代码的时候,定义了一个函数 bool funcA(void);编译的时候,莫名其妙的报了个错误:error C2061: 语法错误: 标识符“funcA”。funcA明明已经定义了,在头文件中也声明了,但是编译器就认定 funcA无法识别。解决历程刚开始以为函数名起的不规范,重新命名后依然报同样的错,解决失败。接着怀疑是不是头文件重复包含了,理了一遍头文件包含关系,确认没问题。最后想着函数的类型是否有问题,参数类型void这绝对没有问题,函数返回类型b

2020-09-28 14:45:52 3492

转载 本机ip地址、localhost与127.0.0.1的区别

很多人会接触到这个ip地址127.0.0.1。也许你会问127.0.0.1是什么地址?其实127.0.0.1是一个回送地址,指本地机,一般用来测试使用。大家常用来ping 127.0.0.1来看本地ip/tcp正不正常,如能ping通即可正常使用。  对于大多数习惯用localhost的来说,实质上就是指向127.0.0.1这个本地IP地址。在操作系统中有个配置文件将localhost与127.0.0.1绑定在了一起。可以理解为本地主机的意思。localhost与127.0.0.1的区别是什么.

2020-09-20 11:52:20 1143

原创 Stm32F103R6之串口

目录概述USART介绍多处理器通信LIN(局域互联网)模式多处理器通信和LIN模式区别概述串口分为通用同步异步收发器(USART)和通用异步收发器(UART)。USART在UART的基础上增加数据同步时钟,异步通讯需要数据收发双方约定波特率,如115200,同步通讯不需要约定,靠同步时钟来同步数据。异步通讯的弊端是数据收发因双发的晶振差异,时钟误差等导致波特率有误差,有可能对通讯造成影响,尤其是高速串口通信。而同步通讯没有波特率的差异,但需要多一个同步时钟信号脚。USART介

2020-09-20 11:09:23 4234

原创 Stm32F103R6之调试支持

目录概述SWJ调试端口(serial wire and JTAG)利用串行接口并释放不用的调试脚作为普通I/O口概述Cortex™-M3内核含硬件调试模块,支持复杂的调试操作。硬件调试模块允许内核在取指(指令断点)或访问数据(数据断点)时停止。内核停止时,内核的内部状态和系统的外部状态都是可以查询的。完成查询后,内核和外设可以被复原,程序将继续执行。当STM32F10x微控制器连接到调试器并开始调试时,调试器将使用内核的硬件调试模块进行调试操作。支持两种调试接口:● 串行接口

2020-09-20 11:02:06 1441

原创 Stm32F103R6之器件签名

目录概述闪存容量寄存器产品唯一身份标识寄存器(96位)概述电子签名存放在闪存存储器模块的系统存储区域,可以通过JTAG/SWD或者CPU读取。它所包含的芯片识别信息在出厂时编写,用户固件或者外部设备可以读取电子签名,用以自动匹配不同配置的STM32F10xxx微控制器。闪存容量寄存器基地址:0x1FFF F7E0只读,它的内容在出厂时编写。图 1闪存容量寄存器产品唯一身份标识寄存器(96位)产品唯一的身份标识非常适合:● 用来作为序列号(例如USB字符序列

2020-09-20 11:00:00 386

原创 Stm32F103R6之以太网

目录概述功能介绍站点管理接口(SMI)独立于介质的接口:MII精简的独立于介质的接口:RMII精确时间协议(IEEE1588 PTP)概述stm32以太网模块支持两种标准接口:1、 连接到外接的物理层(PHY)模块2、 IEEE 802.3协议定义的独立于介质的接口(MII)和简化的独立于介质的接口(RMII)。功能介绍如果要详细介绍以太网,一天一夜也讲不完,这里只能大概讲讲stm32以太网模块的特点。站点管理接口(SMI)站点管理接口(SMI)允许应

2020-09-20 10:55:08 2740

原创 Stm32F103R6之I2C

目录概述I2C功能SMBus概述I2C(芯片间)总线接口连接微控制器和串行I2C总线。它提供多主机功能,控制所有I2C总线特定的时序、协议、仲裁和定时。支持标准和快速两种模式,同时与SMBus 2.0兼容。I2C模块有多种用途,包括CRC码的生成和校验、SMBus(系统管理总线—System Management Bus)和PMBus(电源管理总线—Power Management Bus)。图 1I2C功能框图I2C功能网上有评论说stm32的硬件I2C有bug,经

2020-09-20 10:42:26 976

空空如也

空空如也

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

TA关注的人

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