- 博客(86)
- 收藏
- 关注
原创 NVIC嵌套向量中断控制器是什么?作用是什么?
在没有 NVIC 的传统架构中,中断处理往往需要软件轮询来判断中断源,且难以高效处理嵌套情况。NVIC 通过硬件化的优先级仲裁、向量跳转和自动上下文管理,使得基于 ARM Cortex-M 的微控制器能够以极低的延迟、确定的时间响应复杂的中断事件,是现代实时嵌入式系统高效运行的基石。
2026-02-25 21:26:44
449
原创 ROM就是程序存储器,实际的存储介质是Flash闪存。上述描述中的程序存储器是什么意思?
在“ROM就是程序存储器,实际的存储介质是Flash闪存”这句话中,“程序存储器”是从功能用途的角度来定义的。简单来说,它是微控制器中专门用来长期存放代码(程序)的地方。以下是详细解读:这是“程序存储器”最本质的特征,也是它区别于“运行内存 (RAM)”的关键:虽然历史上真正的 ROM (Read-Only Memory,只读存储器) 是出厂就写好、永远不能改的(比如老式游戏卡带),但在现代微控制器(如STM32)中,我们需要一种既能长期保存,又能在开发时反复修改的存储器。因此,在现代嵌入式语境下,大家习惯
2026-02-24 21:05:24
871
原创 时钟周期是什么?
时钟周期是 CPU 动作的最小时间切片。CPU 所有的运算、控制、通信,都是在这个微小的时间切片里,一步一步“踩点”完成的。它是衡量芯片速度最底层的标尺。
2026-02-24 20:44:45
285
原创 STM32F1有72MHz的Cortex-M3内核。72MHZ是什么意思?指的是什么?
72MHz表示这颗STM32芯片的“大脑”每秒钟震荡7200万次。它是衡量芯片运算速度快慢的核心指标,数值越大,处理数据越快,控制精度越高,但同时功耗也会相应增加。对于经典的STM32F103系列来说,72MHz是其最高性能标志,足以胜任大多数工业控制、消费电子和物联网应用。
2026-02-24 20:37:37
333
原创 STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器。上述文字中的内核是什么意思?作用是什么?
在“STM32是ST公司基于ARM Cortex-M内核开发的32位微控制器”这句话中,“”(Core)指的是微控制器芯片中负责执行指令、处理数据和控制整个系统运行的(CPU)的核心架构。
2026-02-24 20:33:19
838
3
原创 Bootstrap是什么?作用是什么?使用场景是什么?如何使用?
Bootstrap = 快速 + 响应式 + 组件化 + 移动优先它是前端开发的“瑞士军刀”,特别适合需要快速产出美观、兼容多端页面的场景。虽然现代前端框架(React/Vue)生态中有更灵活的 UI 库,但 Bootstrap 依然是全栈开发者、后端工程师和初学者构建 Web 界面的首选工具之一。📌一句话记住它“用 Bootstrap,一行 class 就能做出专业级按钮和布局。
2025-11-30 11:03:33
1350
原创 SpringBoot是什么?作用是什么?如何使用?使用场景?
Spring Boot 是现代 Java 开发的基石工具之一,它让开发者从繁琐的配置中解放出来,专注于业务逻辑实现。无论是构建单体应用还是微服务系统,Spring Boot 都提供了高效、简洁、可靠的解决方案。📌一句话概括:Spring Boot = Spring + 自动配置 + 内嵌服务器 + 生产就绪功能 + 快速开发体验。如果你正在使用 Java 开发后端服务,Spring Boot 几乎是当前的最佳选择。
2025-11-30 10:43:28
671
原创 什么是用例?
用例 = 谁 + 做什么 + 如何做 + 异常处理它不是代码,也不是界面设计,而是对系统行为的抽象描述,帮助团队从用户角度理解系统应该如何工作。无论是敏捷开发还是传统开发模式,用例都是需求分析阶段的重要产出物。如果你使用禅道这类项目管理工具,可以在“测试”模块中创建“测试用例”,其灵感就来源于这里的“用例”概念,只是更侧重于验证功能是否正确。
2025-08-25 13:44:21
858
原创 在mysql中,modify ,change ,rename to的作用是什么
- 将 user_age 列的数据类型从 INT 改为 TINYINT,并设置为 NOT NULL-- 修改 email 列,增加唯一约束-- 修改 status 列,使用 ENUM 类型并保留默认值MODIFY不能修改列名。-- ❌ 错误!-- 修改列名:将 user_name 改为 username,同时保持数据类型-- 修改列名并改变数据类型-- 只修改数据类型,不改列名(需要重复列名)🔁CHANGE相当于“先删后增”列,因此即使只改类型,也要写两次列名。命令作用。
2025-08-24 16:45:51
773
原创 双精度浮点型和单精度浮点型的区别
特性单精度 (float双精度 (double存储大小32 位 (4 字节)64 位 (8 字节)精度~7 位十进制有效数字~15-17 位十进制有效数字数值范围较小 (±10³⁸)极大 (±10³⁰⁸)内存使用低高计算速度通常较快(尤其在GPU)通常稍慢,但现代CPU差异小推荐用途图形、嵌入式、大数据量科学计算、金融、高精度需求✅一般建议:在没有特殊性能或内存限制的情况下,优先使用double,因为它能提供更高的精度和更广的范围,避免潜在的精度损失问题。
2025-08-21 20:59:36
1704
原创 有符号和无符号的区别
特性有符号 (Signed)无符号 (Unsigned)能否为负是否符号位最高位是符号位所有位都表示数值范围特点包含负数,正数范围较小仅非负数,正数范围更大典型用途通用计算、可能为负的值索引、计数、大小、位操作等选择使用哪种类型应基于数据的实际含义和范围需求。正确选择有助于避免溢出错误、逻辑错误,并提高代码的清晰度和效率。
2025-08-21 20:56:28
1227
原创 @Valid 的作用
问题回答@Valid的作用是什么?标记参数对象需要进行数据校验(如非空、格式、范围等)它在哪一层起作用?通常在Controller 层由 Spring 自动处理Service 层加@Valid有用吗?主要是语义提示,若要生效需配合@Validated和目的是什么?防止非法数据进入业务逻辑,保障系统稳定性。
2025-08-06 10:15:05
751
原创 @Builder的作用
方式优点缺点构造函数简单参数多时难读、易错setter灵活代码啰嗦@Builder清晰、灵活、优雅、易读需要 Lombok 支持当一个类的字段比较多时,用@Builder就像从“盲填表格”升级到了“可视化配置”,既安全又舒服!
2025-08-06 09:51:14
497
原创 在java后端项目中,controller、dal、service的作用是什么?
总结来说,在一个典型的Java后端项目中,controller层处理外部请求和服务分发,service层实现业务逻辑,DAL层提供数据访问能力,VO和DO分别用于展示层的数据封装和数据持久化的对象表示,而Mapper则提供了数据库操作的具体实现。Mapper接口中的方法通常对应SQL语句,用于执行数据库的CRUD操作。在Java后端项目中,controller、dal(Data Access Layer)、service层以及带有特定后缀如VO、DO、Mapper的代码各自扮演着重要的角色。
2025-07-18 15:05:14
577
原创 @Data是什么?
Data是 Lombok 项目中的一个注解,Lombok 是一种 Java 库,它通过注解来简化代码的编写过程。使用 Lombok 可以帮助开发者减少样板代码(boilerplate code),比如 getter、setter 方法、构造函数、toString 方法等。
2025-07-10 11:55:16
614
原创 @Schema是什么?
Schema是一个用于描述数据结构的注解,通常出现在使用 OpenAPI 或者 Swagger 进行API文档生成的上下文中。它属于这些框架的一部分,用于帮助开发者定义API响应和请求体的数据模型,从而自动生成详细的API文档。
2025-07-10 11:24:44
703
原创 在Java写的管理系统中,controller、dal、service三个文件夹存放的代码的作用
controller层:负责接收外部请求,处理用户输入,调用合适的业务逻辑,并返回结果给客户端。它关注的是请求的路由和响应的组装。service层:实现了具体的业务逻辑,处理来自控制器的请求,并可能调用数据访问层来完成数据的操作。这一层是应用程序的核心,确保业务逻辑的独立性和可测试性。dal层:提供了对数据库的访问接口,隐藏了具体的数据库操作细节,使得上层可以以一种抽象的方式访问数据。这种分层设计有助于提高代码的可维护性、灵活性和可扩展性,同时也方便团队协作开发,因为每一层都有明确的责任划分。
2025-07-10 11:12:09
447
原创 @Service是什么?
Service是 Spring 框架中的一个注解,主要用于标记服务层组件(通常用于业务逻辑层),使其成为Spring容器管理的Bean。它属于Spring的 stereotype 注解之一,其他类似的注解包括@Component, 和等。
2025-07-10 10:44:21
525
原创 java中的List 和 ArrayList
List: 是一个接口,定义了一组用于操作有序集合的方法。ArrayList: 是List接口的一个实现类,基于动态数组实现,提供高效的随机访问能力。理解这两者的区别有助于更好地利用 Java 集合框架来管理和操作数据。
2025-07-10 08:33:17
463
原创 http get和http post的区别
特性GETPOST数据位置URL 参数请求体数据大小限制受限(URL长度限制)理论上没有限制(实际受服务器限制)缓存可以缓存不缓存幂等性幂等非幂等安全性较低,数据公开相对较高,数据不公开历史记录记录在浏览器历史中不记录根据具体的应用场景选择合适的 HTTP 方法非常重要。如果你只是检索数据而不打算修改服务器上的资源,那么 GET 是合适的选择;而当你需要向服务器发送数据来创建或更新资源时,则应使用 POST。
2025-07-09 17:48:54
579
原创 Java中的Bean
在 Spring 框架中,Bean 是被 Spring 容器管理的对象。一个类的实例(对象)这个对象由 Spring 来创建、配置和管理我们不需要手动 new 它,而是交给 Spring 去处理。
2025-07-09 08:33:58
795
原创 动态规划算法详解(C++)
特性动态规划(DP)贪心算法(Greedy)问题类型重叠子问题,最优子结构贪心选择性质算法策略全局优化(考虑所有子问题的解)局部优化(只关注当前最优选择)解的质量保证全局最优解不一定是全局最优解时间复杂度一般较高,通常是多项式O(n^2)或更高通常较低,O(n log n)或O(n)空间复杂度较高,通常需要存储子问题的解较低,通常只需要常数空间适用场景背包问题、最长公共子序列、最短路径等活动选择问题、最小生成树、霍夫曼编码等动态规划适用于具有重叠子问题和最优子结构。
2025-04-25 16:44:42
2978
原创 #include<bits/stdc++.h>
✅ 适合场景:算法竞赛、快速原型开发。⚠️ 注意事项:避免在正式项目中使用,注意编译器兼容性。
2025-04-15 09:53:30
1325
原创 for循环,while循环,do while循环三者的区别是什么
**for循环**:结构紧凑,适合固定次数的迭代。**while循环**:灵活,适合条件驱动的循环。**do...while循环**:保证至少执行一次,但需谨慎使用。
2025-03-09 22:01:33
806
原创 顶层const和底层const
在C++中,const关键字可以用于定义常量,它主要有两种使用形式,分别是顶层const和底层const。理解这两种const的作用是掌握C++类型系统的关键。
2024-12-29 16:22:39
660
原创 size_t(详解)
是 C 和 C++ 中一个无符号整数类型,主要用于表示对象的大小或数组的索引。它在标准库中定义,并且其实际类型通常是。是一个专门用于表示内存大小和对象大小的类型,是C/C++中处理相关操作时的标准选择。,具体取决于平台的位数(32位或64位系统)。例如,C++ 标准库中的许多函数(如。类型,以确保返回的大小总是正值。或 unsigned long。
2024-12-17 14:43:01
440
原创 C++ 引用
引用是C++中的一种高效特性,提供了一种操作变量的便捷方式,同时避免了指针的复杂性和潜在风险。通过左值引用、常量引用和右值引用,C++实现了灵活高效的变量访问和操作方式,在参数传递、返回值优化和对象管理中发挥了重要作用。
2024-12-16 21:24:55
1014
原创 形参和实参的区别
实参(实际参数)**是与函数调用相关的两个重要概念。形参与实参的交互方式,决定了它们之间是否会相互影响。形参是实参值的拷贝,修改形参不会影响实参。在编程语言中,**形参(形式参数)函数需要两个整数作为输入。
2024-12-16 14:34:11
1994
原创 列表(list)
💻示例代码💻cout <<"初始化list为:";cout <<"Reverse后的list为:";return 0;初始化list为:1 2 0 3 4 5Reverse后的list为:5 4 3 0 2 1⑧ assign()——将值赋给容器assign()方法用于将链表中的元素替换为新的元素序列。它可以接受不同形式的参数,提供了两种重载形式。第一种形式接受迭代器范围作为参数,用于将另一个容器或数组中的元素复制到链表中。它会将链表清空,并将指定范围内的元素复制到链表中。
2024-11-13 20:50:54
1511
原创 预处理、编译、汇编和链接
把一些#define的宏定义完成文本替换,然后将#include的文件里的内容复制到.cpp文件里,如果.h文件里还有.h文件,就递归展开。在预处理这一步,代码注释直接被忽略。过程将上一步的汇编代码(main.s)转换成机器码(machine code),这一步产生的文件叫做目标文件(main.o),是二进制格式。只是把我们写的代码转为汇编代码,它的工作是检查词法和语法规则,所以,如果程序没有词法或则语法错误,那么不管逻辑是怎样错误的,都不会报错。每个步骤都会生成对应的文件。才能变成可执行文件。
2024-11-09 20:55:14
419
原创 C++虚函数(详解)
在基类中使用virtual关键字修饰的成员函数称为虚函数。虚函数是 C++ 中实现多态性的重要机制,它允许在派生类中重写基类中的函数。虚函数的核心特性在于,它使得通过基类指针或引用调用函数时,可以根据实际对象的类型选择相应的函数实现。
2024-10-31 15:27:37
5547
原创 #include <typeinfo>
头文件的作用是支持在 C++ 中使用运行时类型信息。它通过typeid操作符和type_info类提供了对象类型的识别、比较和相关信息获取功能,尤其在处理多态和动态类型时非常有用。
2024-10-31 10:27:34
383
原创 C++extern关键字(详解)
extern "C"是在 C++ 中与 C 语言代码进行链接时的关键工具,它确保函数的名称不会被 C++ 编译器进行修改,保证了 C 和 C++ 代码之间的兼容性。通常在需要混合 C 和 C++ 代码的场景中使用,特别是调用 C 标准库或其他用 C 编写的库时。
2024-10-30 17:09:42
1689
1
原创 C++模板(详解)
C++ 模板是一个强大的编程工具,它允许我们编写通用的代码,适用于多种数据类型,从而提高代码的复用性和灵活性。模板包括函数模板和类模板,能够根据不同的类型进行实例化,编译时自动生成相应的代码。模板不仅提高了编程效率,还提供了更好的类型安全性。
2024-10-23 22:02:49
1234
原创 代码解释(10.20)
保留了默认构造函数(但受保护,外部无法直接调用),允许类内部的控制方式来创建实例。:删除了拷贝构造函数,防止通过拷贝创建新实例。:删除了拷贝赋值运算符,防止通过赋值来复制对象。这三部分共同作用,确保Singleton类的实例是唯一的,符合单例模式的设计要求。
2024-10-20 21:32:37
572
原创 template <typename T>详解
提高代码的通用性和可复用性:模板使得函数和类可以接受不同类型作为参数,避免了大量的代码重复。编译期类型检查:模板代码在编译时实例化为具体的类型,确保类型安全性。简化代码维护:通过减少代码重复,维护工作只需集中在模板定义处。在泛型编程中,是一种强大的工具,它使代码更灵活、更具扩展性。
2024-10-20 21:26:01
693
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅