- 博客(64)
- 收藏
- 关注
原创 WPF中自定义消息弹窗
一、XAML 布局设计文件:MessageInfo.xaml-- 窗口图标 -- > Title="Message" Height="200" Width="350" <!-- 标题、尺寸 --> WindowStartupLocation="CenterScreen"> <!-- 窗口居中 --> < Grid Background = " #FF333333 " > <!
2025-05-29 14:21:05
560
原创 WPF中的图标闪烁功能
本文展示了C#中使用Windows API实现窗口闪烁功能的代码示例。通过定义FLASHWINFO结构体存储闪烁参数,并调用user32.dll中的FlashWindowEx方法,可实现窗口标题和任务栏按钮的闪烁效果。代码提供了开始闪烁(FlashWindow)和停止闪烁(StopFlashingWindow)两个方法,支持设置无限闪烁次数直到窗口激活。该实现通过WindowInteropHelper获取窗口句柄,并使用Marshal处理与非托管代码的交互。
2025-05-27 22:08:51
440
原创 JWT令牌验证
JWT(JSON Web Token)是一种用于安全传输信息的令牌,其验证过程包括令牌解析、签名验证、声明校验和可选的状态校验。首先,JWT被分割为Header、Payload和Signature三部分,分别解析算法、声明和签名。签名验证通过重新计算签名并与JWT中的签名对比,确保令牌未被篡改。声明校验则检查令牌的过期时间、签发者、接收方等是否符合业务规则。对于需要主动失效的令牌,可以通过黑名单进行状态校验。后端实现中,Spring Boot结合JJWT库可以方便地生成和验证JWT,前端如Uniapp等框架
2025-05-17 16:23:10
793
原创 C++中的智能指针
C++ 智能指针是一种自动管理动态内存的工具,通过 RAII 机制在对象生命周期结束时自动释放内存,避免内存泄漏和悬垂指针问题。标准库提供了三种智能指针:unique_ptr、shared_ptr 和 weak_ptr。unique_ptr 独占资源所有权,不可拷贝但可转移;shared_ptr 通过引用计数共享资源,支持拷贝和赋值;weak_ptr 配合 shared_ptr 使用,解决循环引用问题。智能指针的核心优势包括自动内存管理、异常安全、避免悬垂指针和明确所有权语义。使用场景中,unique_pt
2025-05-17 10:52:10
370
原创 C++中的&和*(指针)
本文整理了C++中取地址运算符(&)、指针声明(*)和指针解引用(*)的核心用法。取地址运算符用于获取变量的内存地址,指针声明用于定义存储地址的指针变量,而指针解引用则用于访问指针所指向的变量值。文章通过示例代码详细说明了每种操作的语法和注意事项,并对比了三者的区别。常见错误包括未初始化的指针、类型不匹配的指针以及空指针解引用,这些错误可能导致程序崩溃或未定义行为。通过理解和练习这些操作,可以更好地掌握指针的使用逻辑。
2025-05-17 10:35:35
389
原创 C++中的深拷贝和浅拷贝
深拷贝与浅拷贝的核心差异在于资源管理方式。浅拷贝仅复制对象的成员变量值(包括指针地址),导致多个对象共享同一块动态资源,可能引发悬垂指针、内存泄漏等问题。深拷贝则复制对象的成员变量值,并为动态资源重新分配内存,确保每个对象拥有独立的资源,避免共享资源带来的风险。浅拷贝的典型问题包括数据污染和重复释放,而深拷贝通过手动定义拷贝构造函数和赋值运算符,确保资源独立和安全释放。深拷贝适用于包含动态资源(如堆内存、文件句柄)的场景,而浅拷贝则适用于无动态资源的对象。通过对比和示例代码,可以更清晰地理解深拷贝的必要性和
2025-05-17 10:27:17
320
原创 WPF中如何自定义控件
本文介绍了如何在WPF中创建一个自定义控件“账户菜单按钮”(AccountButton),该控件支持标题显示、渐变背景和选中状态高亮。实现过程分为三个步骤:首先,创建一个UserControl作为控件容器;其次,定义依赖属性以支持外部配置;最后,设计XAML布局并绑定依赖属性。控件的外观包括一个圆形/圆角按钮,中间显示标题,背景支持自定义渐变颜色,选中时左侧显示高亮竖线。通过XAML和后台代码的结合,实现了控件的核心功能,并展示了完整的代码实现。
2025-05-10 17:31:16
933
1
原创 OCCT中的基础变换
在 OCCT 中,基础的几何变换(平移、旋转、缩放、镜像等)是对几何形状进行操作和处理的重要手段。下面为你详细介绍这些变换及其示例程序。
2025-05-08 20:12:51
434
原创 WPF中解决数据绑定不匹配的问题
用途:在数据绑定中进行单值转换,例如将布尔值转换为可见性状态、颜色等。实现要点:实现Convert和方法,Convert用于正向转换,用于反向转换。适用场景:当源数据和目标数据之间存在一对一的转换关系时使用。用途:在数据绑定中进行多值转换,例如将多个数值进行计算后显示结果。实现要点:实现Convert和方法,Convert接收一个对象数组作为输入,返回一个对象数组。适用场景:当源数据和目标数据之间存在多对一或一对多的转换关系时使用。
2025-05-08 16:12:44
561
原创 哈希表和红黑树的区别
哈希表(Hash Table)和红黑树(Red-Black Tree)都是在计算机科学中广泛使用的数据结构,用于高效地存储和检索数据。
2025-04-16 15:53:18
839
原创 键值对和Map的区别
数组里存储键值对和使用Map(在不同语言里也被叫做字典、哈希表等)存在多方面的区别,下面从多个维度进行分析,同时给出C#和C++的代码示例。
2025-04-16 15:51:41
774
原创 绝对编码器和增量编码器
绝对编码器通过唯一编码直接输出位置信息,解决了增量编码器依赖累计和初始化的问题,在高精度、高可靠性场景中不可或缺。绝对编码器是一种用于精确测量机械位置(角度或线性位移)的传感器,其核心特点是每个位置对应唯一的数字编码,能够直接输出当前位置的绝对坐标,无需依赖初始参考点或累计增量。通过光源(如 LED)和光敏元件扫描码盘,将光信号转换为电信号,直接输出绝对位置的数字编码(如并行 TTL/CMOS 信号、串行 SSI、CANopen、EtherCAT 等)。
2025-04-11 13:17:44
470
原创 WPF中viewmodel单例模式
单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点来获取这个实例。它常用于需要全局唯一访问点的场景,如配置管理、日志记录、数据库连接等。
2025-04-01 16:40:39
528
原创 网络套接字
网络套接字(Socket)是计算机网络中实现进程间通信(IPC)的端点,是操作系统提供的一种编程接口。它类似于现实中的 “电话插座”,允许不同设备(如服务器、客户端)通过网络传输数据。
2025-04-01 11:25:27
877
原创 uniapp中的本地存储API
在 UniApp 里,setStorage和getStorage属于本地存储 API,能够把数据存于设备本地,在应用关闭后数据依然存在,再次打开应用时可继续使用。下面为你详细介绍它们的特性、使用方法以及经典示例。
2025-03-27 10:28:24
732
原创 GET请求和POST请求
3、这里的接收格式表单用@RequestParam,json数据用@RequestBody。2、注意如果想用get请求来传参,不能使用json数据。1、Controller层代码示例。
2025-03-27 09:23:00
244
原创 自定义回复信息
在进行前后端通信时都需要数据回复,我们可以建立一个方法来定义回复的接口。- 这个接口定义的为code、msg、data三个数据进行回复。
2025-03-21 10:57:51
190
原创 在三维坐标系中通过四阶矩阵实现平移和旋转
旋转矩阵用于实现绕 X、Y 或 Z 轴的旋转。旋转矩阵是 4x4 的齐次变换矩阵,其中前三列为旋转变换,第四列通常为 (0,0,0,1)。平移矩阵用于将点沿各轴平移,矩阵中的最后一列包含平移的距离。旋转与平移组合可以通过矩阵乘法将旋转和平移同时应用于一个点,形成复合变换。
2025-01-17 14:20:04
906
原创 C++中的类型转换
转换方法使用场景类型检查示例用于多态类之间的类型转换,支持运行时检查运行时检查从基类指针转换为派生类指针用于已知类型之间的转换,或类间的静态类型转换编译时检查基类指针到派生类指针的转换(已知转换合法)强制转换,不做类型检查,适用于不相关类型间的转换无检查强制转换不同类型的指针。
2025-01-10 11:09:51
842
原创 C++中迭代器 for 循环
通常,传统的迭代器 for 循环是这样的it!++it) {// 对容器的每个元素执行操作这类循环通常适用于需要对容器进行精确控制的场景,例如修改容器元素、跳过某些元素,或者进行多次复杂的遍历。++it 通常用于手动跳过某些元素或精细控制遍历。它使得你可以对每一步的迭代器进行控制,从而更灵活地处理容器元素。it = container.begin() 用于在需要重置迭代器时重新开始遍历。通常出现在嵌套循环、特定条件下需要从头开始重新遍历的情况。
2025-01-08 11:23:33
931
原创 C++中的初始化
初始化父类:当派生类从一个基类继承时,你需要在派生类的构造函数中通过初始化列表显式调用基类的构造函数。这是为了确保基类部分正确初始化。初始化派生类的成员变量:在派生类的构造函数中,初始化列表可以直接初始化派生类的成员变量,确保它们在构造函数体执行前已经有了正确的值。
2025-01-08 10:28:17
394
原创 C++中class和include的区别
这是一个前向声明(forward declaration)。它告诉编译器有一个名为的类存在,但并不提供该类的具体定义。减少编译依赖:避免因为包含头文件而增加编译时间。解决循环依赖:当两个类互相引用时,前向声明可以避免头文件包含的死循环。示例// 只声明类存在,不包含具体定义public:// 使用指针或引用这是一个头文件包含。它将文件的内容完整地包含到当前文件中,包括类的完整定义。这意味着编译器可以访问该类的所有成员和方法。
2024-11-27 13:19:51
309
原创 QT-protected
在 Qt 和 C++ 中,protected是一个访问控制关键字,用于定义类成员(如变量、方法等)的访问权限。protected提供了一种介于public和private之间的访问级别,主要用于继承和派生类的情况。
2024-11-26 09:52:09
496
原创 QT-installEventFilter
是 Qt 框架中的一个方法,用于在对象之间建立事件过滤机制。具体来说,它允许一个对象(称为事件过滤器)监视另一个对象(称为被监视对象)的事件,并在这些事件被处理之前对其进行拦截和处理。
2024-11-26 09:38:48
792
原创 QT中的知识点
是 C++ 标准库中的一个模板类,用于实现动态数组。它可以自动管理内存,支持随机访问、快速插入和删除操作。1.stringstream是一个类,用于创建一个可以读写字符串的流对象。
2024-10-25 21:29:08
245
原创 uniapp中的页面跳转
4.uni.switchTab跳转到 tabBar 页面,并关闭其他所有非 tabBar 页面。用于关闭所有页面,打开到应用内的某个页面,可以是tabBar页面或非tabBar页面。用于跳转到应用内的某个非tabBar页面,并且会保留当前页面,将其推入页面栈中。用于关闭当前页面,重定向到应用内的某个非tabBar页面,不会保留当前页面。
2024-10-22 17:48:37
484
WPF中的多语言切换资源
2024-07-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人