- 博客(188)
- 收藏
- 关注
原创 【C++内存管理】 DES数据加解密
即使正好8字节,也要再加8字节的填充(全是8)。A:如果最后一个块全是填充(比如加了8个8),那这个块就不应该输出任何数据。你把钥匙交给保安(DES算法),保安记住了,以后就用这把钥匙开锁。A:因为解密时无法区分"原始数据最后就是8"和"填充的8"。如果你只有5块饼干,必须加3块"假饼干"才能烤。PKCS#7规则:缺几块,就加几块值为几的饼干。你放的"钥匙"不同,盒子转的方式就不同。DES就像一台一次只能烤8块饼干的烤箱。正好8字节就加一个完整的填充块。cH5躿Yosyt糬。最终得到8字节密文。
2026-03-03 15:36:19
867
原创 【C++内存管理】 C++17 内存池 memory_resource
配置定规矩创建建池子使用allocate拿内存,deallocate还内存,release清空。
2026-03-02 13:48:23
680
原创 【C++内存管理】 虚函数原理与内存分析
class 遥控器 {public:void 按钮() { cout << "普通遥控器" << endl;virtual void 智能按钮() { cout << "智能遥控器" << endl;class 空调遥控器 : public 遥控器 {public:void 按钮() { cout << "空调" << endl;void 智能按钮() override { cout << "智能空调" << endl;普通函数:按什么遥控器就是什么功能虚函数。
2026-02-28 16:40:48
366
原创 【C++内存管理】 多继承中的二义性和虚基类内存问题分析
class 父亲1 { ... };class 父亲2 { ... };class 儿子 : public 父亲1, public 父亲2 { ... };// 多继承普通多继承像两个独立的家庭,每个爸爸都有自己的家产(c1);虚继承像两个儿子住在一起,共用一套家产(c1)。要哪个c1,就看你怎么继承!
2026-02-28 16:05:17
148
原创 【C++内存管理】 construct_at 和 uninitialized_copy 方法
【代码】【C++指针】 construct_at 和 uninitialized_copy 方法。
2026-02-28 15:01:58
250
原创 【C++指针】 数组名与指针:为什么&datas和sizeof(datas)的行为不同?
【代码】【C++指针】 数组名与指针:为什么&datas和sizeof(datas)的行为不同?
2026-02-28 11:28:37
262
原创 【C++内存管理】 分配器allocator
/ 一个超级简单的分配器,只做一件事:打印日志public:// 必须的类型定义(STL容器需要)// 构造函数(可以为空)// 模板构造函数(用于分配器之间的转换)// 最重要的函数:分配内存cout << "【分配器】分配 " << n << " 个元素,大小: "<< n * sizeof(T) << " 字节" << endl;// 一个超级简单的分配器,只做一件事:打印日志 template < typename T > class LogAllocator {
2026-02-27 16:29:29
216
原创 【C++指针】 智能指针作为函数参数和返回值
传递方式语法所有权适用场景引用不转移只借用,不管理移动转移转让所有权指针T*不涉及只是临时用一下智能指针传参像借书:shared_ptr像电子书(可复制),unique_ptr像实体书(只能移动),weak_ptr像阅览室的书(只能看不能借走)。选择哪种方式,取决于你想让函数拥有什么权限:借用、共享、还是永久占有!
2026-02-27 14:53:15
375
原创 【C++指针】 数组传参,数组会“偷偷“变成指针
数组传参就像寄快递:你寄出一整箱东西(数组),但快递单上只写了第一个箱子的地址(指针),收件人只知道从哪开始拿,不知道一共有几箱。解决方法要么单独告诉他有几箱(传长度参数),要么用带清单的箱子(模板或容器)!
2026-02-27 14:22:25
255
原创 【C++指针】 weak_ptr解决shared_ptr循环引用_
小明抱着小张,不放手小张也抱着小明,也不放手两个人想分开?谁也动不了!这就是循环引用!weak_ptr 就像"旁观者":它看着对象但不插手管理,需要帮忙时(使用对象)就临时转为 shared_ptr,帮完就退回去。这样就打破了循环引用,让对象该释放时就能释放!
2026-02-27 13:37:37
290
原创 【C++指针】 shared_ptr共享指针
智能指针自动管理内存的指针// 传统指针的痛点// ... 一堆代码delete p;// 万一忘了写?内存泄漏!// 智能指针的优雅// 不用写 delete!自动释放!// 方式1:普通函数cout << "自定义删除函数" << endl;delete p;// 方式2:Lambda表达式(推荐)cout << "Lambda删除" << endl;delete p;});// 实际应用:管理文件句柄fclose(f);cout << "文件已关闭" << endl。
2026-02-27 10:37:34
466
原创 【C++指针】unique_ptr自定义删除器
/ 普通指针:直接delete就行delete p;// 简单!public:// 这个就是"删除器" - 告诉程序怎么释放XPacketcout << "正在释放XPacket..." << endl;// 步骤1:先释放内部的数据缓冲区// 步骤2:再释放包本身delete p;🔑 关键点operator()让这个类的对象可以像函数一样被调用// 创建一个删除器对象// 像调用函数一样调用它!神奇吧?
2026-02-26 16:39:19
354
原创 【C++指针】 智能指针unique_ptr和数组的访问
在C++中,手动管理内存(newdelete内存泄漏:忘记delete二次释放:多次delete同一块内存异常安全:异常发生时忘记释放智能指针的出现解决了这些问题,它遵循RAII原则,让资源管理自动化和安全化。RAII(Resource Acquisition Is Initialization)——资源获取即初始化在构造函数中获取资源在析构函数中释放资源利用栈对象的生命周期自动管理资源操作语法说明创建推荐方式,异常安全创建数组创建n个元素的数组访问成员p->member或。
2026-02-26 15:46:36
255
原创 【C++指针】 指针操作二维数组对opencv灰度图做反色
图像在计算机中本质上是一个二维数组(灰度图)或三维数组(彩色图)。使用指针操作图像数据是图像处理中最基础也是最重要的技能,它让我们能够直接访问和修改内存中的像素数据,实现高效的图像处理算法。字节对齐是指数据在内存中存放的起始地址必须是某个值的倍数(通常是2、4、8等)。这是为了CPU访问效率而设计的硬件要求。图像本质:图像是内存中的二维数组指针操作:通过img.data可以访问原始像素数据索引计算:第i行j列的位置 = i × 每行字节数 + j × 每像素字节数字节对齐:使用img.step而不是。
2026-02-26 11:26:56
565
原创 【C++指针】 常量指针与指针常量
很多C++初学者看到"常量指针"和"指针常量"这两个词就头晕,因为它们太像了!其实区分它们有一个简单口诀“左定值,右定向”const在左边,修饰的是指向的值;const在右边,修饰的是指针本身)常量指针= 指针指向的值是常量,不能通过该指针修改代码分析const int*const在左边,修饰的是int,表示"指向常量的指针"pi1指向i1(常量)尝试(*pi1)++会编译错误,因为不能修改指向的值指针常量= 指针本身是常量,不能改变指向,但可以修改指向的值代码分析int* constconst在。
2026-02-26 10:40:28
596
原创 【C++指针】 void 指针和指针类型转换
想象一下,内存就像一个大仓库,不同类型的变量就像不同形状的箱子。指针就是指向这些箱子的标签。有时候我们需要用不同的方式看待同一个箱子,这就需要进行指针类型转换。转换类型const_castC风格转换相关类型转换✅❌❌✅去除const❌✅❌✅无关指针转换❌❌✅✅安全性高中低极低使用频率高低极低避免。
2026-02-26 09:50:40
1507
原创 C++11范围for循环 range-based for loop
public:// 需要提供begin()和end()方法// 现在可以这样遍历。
2026-02-25 14:40:03
232
原创 【C++指针】第一个指针程序
这段代码演示了C++指针的基本概念和操作,包括动态内存分配、指针的基本特性、指针运算以及内存释放等内容。// 1. 动态分配内存// 2. 使用指针*ptr = 100;// 3. 释放内存delete ptr;// 4. 置空指针// 5. 使用前检查if (ptr!// 安全使用指针。
2026-02-25 10:53:21
175
原创 003 卷积神经网络(CNN)-- 原理到实践
卷积操作:局部连接,权重共享池化操作:降维,增加平移不变性经典架构现代技巧:批归一化,Dropout,残差连接实践应用:图像分类,特征可视化# 尝试设计一个用于MNIST的CNN# 你的设计pass# 前向传播pass。
2025-12-25 16:43:46
886
原创 002 PyTorch实战:神经网络回归任务 - 气温预测
数据预处理:标准化、分割、Tensor转换回归模型设计:输出层无激活函数,使用MSE损失训练技巧:BatchNorm、Dropout、梯度裁剪、早停评估指标:MSE、MAE、R²、可视化分析模型部署:保存、加载、新数据预测。
2025-12-23 21:28:04
671
1
原创 000 深度学习环境搭建指南(Windows/Linux)
通俗理解Python解释器(Python本身)包管理工具(conda)常用的科学计算库(NumPy、Pandas等)多个虚拟环境管理器(可以创建相互独立的Python环境)为什么要用Anaconda?环境隔离:不同的项目可以用不同的Python版本和库版本,互不干扰包管理方便:conda可以自动解决包依赖问题预装常用库:已经包含了数据分析、机器学习常用的库有输出能看到dl_env成功激活环境:提示符显示(dl_env)能在浏览器打开。
2025-12-18 15:49:37
943
原创 001 PyTorch实战:手写数字识别(MNIST)从零开始
本文介绍了使用PyTorch构建全连接神经网络进行MNIST手写数字识别的完整流程。主要内容包括:MNIST数据集结构(6万训练+1万测试28×28灰度图);三层64神经元网络架构(输入784→隐藏层→输出10);关键组件如ReLU激活函数和Adam优化器;以及数据加载、模型训练评估的代码实现。通过3个epoch训练,模型可达到较高识别准确率。文章提供了从环境配置、网络定义到训练评估的完整代码示例,适合深度学习初学者实践图像分类任务。
2025-12-18 15:29:25
1162
原创 奇怪的 ASTM 报文解析事故
最近在给某 LIS 公司对接 ASTM 报文的时候,遇到一个非常诡异的问题:我这边发过去的报文完全没毛病,但对方的系统就是解析失败。更离谱的是,它直接把报文截断了!
2025-12-10 10:40:43
158
原创 TCP/UDP调试助手
TCP/IP调试助手是用于在TCP/UDP的应用层上进行通信连接、数据传输的Windows工具。所谓应用层上就是说,TCP调试工具是不涉及TCP/IP协议层实现的问题,而只是利用TCP/IP进行数据传输。
2025-11-21 10:00:09
254
原创 VCPKG && Tesseract OCR
vcpkg是一个跨平台的开源 C++ 包管理器,旨在帮助开发人员轻松地管理 C++ 项目中的外部库和依赖项。它提供了一种简便的方式来安装、更新、卸载和管理 C++ 库,从而避免了手动下载、编译和集成的繁琐过程。vcpkg是由 Microsoft 开发并维护的,尤其适合在 Windows 和其他平台上使用。
2025-11-18 16:33:27
832
原创 【OpenCV + VS】用addWeighted实现图像线性融合
本文详细介绍了OpenCV中函数的语法规则、参数含义和使用注意事项,并通过完整代码实现了图像线性融合。融合的关键是src1和src2的尺寸、通道数必须一致;权重分配虽然不限制,但是建议遵循,避免画面失真;gamma参数可灵活调整融合图像的亮度。
2025-11-14 20:20:14
1380
原创 【OpenCV + VS】C++实现动态下雪特效
本文通过一个下雪特效的实现,介绍了OpenCV在图像处理和动画制作中的应用。随机数生成与分布控制帧循环与动画原理基本图形绘制函数的使用视频与图像的读写操作面向对象的特效建模方法。
2025-11-14 19:17:58
1309
1
原创 【OpenCV + VS】 使用 OpenCV 实现实时人脸检测
本文将展示如何利用 OpenCV 和 DNN(深度神经网络)模块来实现一个实时人脸检测应用。我们将使用 TensorFlow 预训练的人脸检测模型,并通过摄像头捕获视频流进行实时检测。
2025-11-13 21:01:04
1127
原创 【OpenCV + VS】直方图与模糊操作
直方图(1D/2D):图像质量分析(如曝光是否正常)、色彩分割(如提取特定色相的物体)、图像检索(通过直方图匹配相似图像)。直方图均衡化:监控摄像头图像增强、老照片修复、逆光照片提亮、医学图像(如X光片)细节增强。模糊操作均值模糊:快速降噪、图像压缩前预处理。高斯模糊:磨皮效果、边缘检测前降噪(如Canny检测前用高斯模糊去噪)。双边模糊:人像美化、文物照片修复、保留边缘的降噪场景。
2025-11-13 16:35:26
752
原创 【OpenCV + VS】视频流处理与图像处理:实时视频流与视频保存
OpenCV 提供了强大的视频流处理功能,可以让我们轻松地读取摄像头或视频文件、进行实时视频处理、保存处理后的结果,并执行各种图像处理操作,如灰度化、目标检测、边缘检测、ROI 提取等。
2025-11-13 15:36:51
1462
1
原创 【OpenCV + VS】调用摄像头与视频文件处理
通过 OpenCV 的类,你可以方便地访问摄像头,实时显示视频流,或者读取视频文件并进行处理。图像处理操作如灰度变换、HSV 转换以及简单的图像分割(抠图)可以在视频流的每一帧上应用,使得你能够实现实时的视觉效果和目标检测。这个流程在许多应用场景中都非常重要,例如监控、增强现实、对象追踪等。
2025-11-13 13:46:44
896
原创 【OpenCV + VS】图像翻转与旋转
图像翻转使用flip()可以轻松实现图像的上下翻转、左右翻转和对角线翻转,适用于图像方向的调整和镜像效果的创建。图像旋转通过生成旋转矩阵,配合函数,可以实现任意角度的图像旋转,旋转时需要调整图像的尺寸以避免剪切。这些操作不仅可以用来修正图像的方向,还可以用于增强数据集和生成不同视角的图像。在实际应用中,翻转和旋转常用于图像处理、计算机视觉任务、数据增强等场景。%5Ctheta。
2025-11-13 11:39:56
404
1
原创 【OpenCV + VS】图像缩放与插值
图像缩放(resizing)是指改变图像的宽度和高度。缩小:减小图像的尺寸时,需要丢弃一些像素,可能会导致图像细节的丢失。放大:增大图像时,新的像素需要根据周围已有的像素进行插值生成,这可能导致图像模糊或失真。插值方法:插值决定了缩放过程中如何计算新像素的值,常见的插值方法包括最近邻插值双线性插值和立方插值。
2025-11-13 11:19:16
866
原创 【OpenCV + VS】 图像像素类型转换与归一化
在 OpenCV 中,像素类型转换和归一化是图像处理的基础操作,广泛应用于各种图像处理任务中。通过像素类型转换,我们可以调整图像的精度和内存占用;通过归一化,我们可以让图像数据符合算法的要求,增强图像特征或统一数据范围。
2025-11-13 10:56:34
985
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅