<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[azurehan01的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/azurehan01</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; azurehan01]]></copyright><item><title><![CDATA[矩阵求导及微分知识]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/139240520</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/139240520</guid><author>azurehan01</author><pubDate>Tue, 14 Apr 2026 11:27:55 +0800</pubDate><description><![CDATA[首先需要明确的问题是我们在对什么求导，当我们对多元函数说求导时，我们一般是在说偏导数，如,这表示固定不变时，的微小变动会引起两倍的变动,对矩阵函数的求导也是一样的，譬如我们有矩阵变元其中每一个元素都是变量，若想知道固定其他元素不变的情况下，某一元素的变动对矩阵行列式的影响，这就是，一般而言我们可以将所有偏导结果重新组合为矩阵或是向量，这样在形式上是更方便的。一般地来说，对向量变元及其标量函数,定义行偏导向量为而对矩阵变元及其标量函数。]]></description><category></category></item><item><title><![CDATA[AI_agent学习]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/160022434</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/160022434</guid><author>azurehan01</author><pubDate>Tue, 14 Apr 2026 11:27:39 +0800</pubDate><description><![CDATA[主要作用是为字段添加描述信息。这个描述在生成 API 文档（例如使用 FastAPI 时）时会非常有用，它能清晰地告诉 API 的使用者这个字段是做什么的。AI 需要知道刚才说了什么，才能回答现在的问题。List 能够完美地保存这种“你一句、我一句”的时间顺序。是一个函数，用于为模型中的字段提供更精细的控制。你可以把它理解为字段的“配置项”。时，这个类就不再是一个普通的 Python 类，而变成了一个功能强大的数据模型。是 Pydantic 提供的一个基础类。让我们扩展一下你的代码，看看。]]></description><category></category></item><item><title><![CDATA[CAD工件图和实物图对比识别项目总结]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/160011091</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/160011091</guid><author>azurehan01</author><pubDate>Fri, 10 Apr 2026 10:46:04 +0800</pubDate><description><![CDATA[利用 Transformer 直接从图像中学习稠密特征，一步预测像素级匹配，利用全局上下文信息。利用 2x3 变换矩阵，保持平行性（平行线变换后仍平行），处理旋转、缩放、剪切。利用单应性矩阵（3x3），将任意四边形映射为矩形，纠正“近大远小”的透视畸变。：精度极高，泛化能力强，支持多模态提示，但模型大，需高性能GPU。，单权重支持8+种未见过的跨模态任务，无需针对特定任务重新训练。：性能与效率的平衡，比传统方法在低纹理区域表现更好，速度较快。：速度快，无需训练，但参数需手动调优，对噪声敏感。]]></description><category></category></item><item><title><![CDATA[计算机视觉学习笔记专有名词学习~1]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/159546923</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/159546923</guid><author>azurehan01</author><pubDate>Tue, 31 Mar 2026 15:57:37 +0800</pubDate><description><![CDATA[一句话总结：自注意力机制让序列中的每个元素能够直接关注序列中所有其他元素，从而捕捉长距离依赖关系，是Transformer架构的核心组件。多头自注意力机制将Query、Key、Value分成多个头并行计算，每个头关注序列的不同方面优势：增强模型表达能力，不同头可关注局部语义关系或长距离依赖关系例如：在句子"我 喜欢 吃 苹果，因为 它 富含 维生素"中，一个头关注"我"和"喜欢"的主谓关系，另一个头关注"苹果"和"维生素"的因果关系应用场景。]]></description><category></category></item><item><title><![CDATA[C++利用数组创建二叉树]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/148977384</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/148977384</guid><author>azurehan01</author><pubDate>Sat, 28 Jun 2025 16:24:34 +0800</pubDate><description><![CDATA[这里我想的是使用队列来解决这个问题,即每走一个子节点,我们都将其当作备用的父亲节点存入队列中。3、还有一种极端情况如果输入的是如下队列[1,2,3,4,5,NULLvalue,NULLvalue,NULLvalue,NULLvalue,6,7,NULLvalue,NULLvalue,NULLvalue,NULLvalue,,NULLvalue,NULLvalue,NULLvalue,NULLvalue,8,9];其中x为题目所给的队列,parent_node 为父亲节点队列,parent为父亲节点。]]></description><category></category></item><item><title><![CDATA[[LEECODE每日一题]找出最具竞争力的子序列]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/139175096</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/139175096</guid><author>azurehan01</author><pubDate>Fri, 24 May 2024 15:25:49 +0800</pubDate><description><![CDATA[因为子数组是顺序的缘故,所以我们可以拿后面每个比前面小的数字进行逐一比较,如果比前面的一个位置的小,我们就让前面位置的数字进行出栈,再对出栈前一个比较,直到满足比前面的一个栈的元素大为止,如果比前面的数字大我们就直接入栈。题目给的很清楚,既输入一个序列要求给定一个子序列长度,让其输出为一个最有"竞争力"的序列,说白了就是在所有子序列比较中,处于靠前位置的元素要尽可能的小,而且这个子序列是按照顺序进行排列的。当然我们如果不停的入栈出栈,我们怎么保证里面的元素是我们想要的子序列长度的大小呢?]]></description><category></category></item><item><title><![CDATA[基于模糊神经网络的嘉陵江水质预测]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/138792145</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/138792145</guid><author>azurehan01</author><pubDate>Mon, 13 May 2024 10:39:13 +0800</pubDate><description><![CDATA[数据集采用的是水质检测的六个指标。]]></description><category></category></item><item><title><![CDATA[[论文解读]Joint symbol-level precoding and reflecting designs for IRS-enhanced MU-MISO system]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137976220</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137976220</guid><author>azurehan01</author><pubDate>Fri, 19 Apr 2024 20:55:03 +0800</pubDate><description><![CDATA[文章主要思路采用了符号级预编码以及智能反射面来减少发射能量其中优化方法分为了两个子问题,采用的是交替方向进行优化对预编码信号优化,由于问题是凸问题所以采用的是CVX工具包,以及作者给予的一个共轭梯度算法对RIS反射角的优化问题,通过化简后采用黎曼共轭梯度法进行优化,后续有介绍到如何选取初始RIS角度以及QoS平衡问题这次阅读是第一次精度文章,所以关注点主要在如何进行建模以及对于问题(6)的分解以及部分FIG.4代码出现的阅读,对于黎曼几何算法,笔者不在研究范围内,既没有细看。]]></description><category></category></item><item><title><![CDATA[[数据结构]栈和队列结构的简单制作]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137567319</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137567319</guid><author>azurehan01</author><pubDate>Wed, 10 Apr 2024 07:00:00 +0800</pubDate><description><![CDATA[队列：只允许在一端进行插入数据操作，在另一端进行删除数据操作的特殊线性表，队列具有先进先出 FIFO(First In First Out) 入队列：进行插入操作的一端称为队尾 出队列：进行删除操作的一端称为队头。栈：一种特殊的线性表，其只允许在固定的一端进行插入和删除元素操作。进行数据插入和删除操作的一端 称为栈顶，另一端称为栈底。栈可以用顺序表或者链表进行实现,但是相对而言顺序表的优势较为大,以下是栈的实现方法,因比较简单所以读者可以自行阅读代码。压栈：栈的插入操作叫做进栈/压栈/入栈，入数据在栈顶。]]></description><category></category></item><item><title><![CDATA[[数据结构]双向带头循环链表制作]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137463027</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137463027</guid><author>azurehan01</author><pubDate>Tue, 09 Apr 2024 07:00:00 +0800</pubDate><description><![CDATA[实际中使用的链表数据结构，都 是带头双向循环链表。第一、防止头节点为空,既有头结点，头指针始终指向头结点，那么无论链表是否为空，头指针均不为空；需要注意的是,里面仍有一些判断可以完善,如有需要可以自行完善,这部分代码仅仅是一个简单的带头双向循环链表的制作。第二、有头结点时，插入/删除第一个结点时，空链表/非空链表操作逻辑一致，不需要额外判断。第三、插入或者删除头结点的时候不需要改变头节点，只需要改变头结点的下一个即可。这里我们介绍一个双向带头循环链表的制作方法。前面我们有提到，单向不带头循环链表的制作。]]></description><category></category></item><item><title><![CDATA[[数据结构]不带头单向非循环链表]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137463392</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137463392</guid><author>azurehan01</author><pubDate>Mon, 08 Apr 2024 07:00:00 +0800</pubDate><description><![CDATA[我们有学过，顺序表如何制作，还有一个与其非常相似的结构就是链表的制作，不过链表在数据中的存储不像顺序表一样是按照内存的顺序进行存储的，其在内存中是一块一块的进行存储,具体如何我们可以看看下面这张图。我们知道如果我们要增加数据,我们无法像静态顺序表一样一开始就定下来最大数据量为多少，因此我们这边采用动态内存的方式进行开辟内存。此链表有一个头指针pList,我们要创造的链表为不带头指针的链表,既我们创造一个结构体，其中一部分为数据部分,另外一部分为下一个数据的地址。SeqList.c文件。]]></description><category></category></item><item><title><![CDATA[[数据结构]动态顺序表制作源码分享]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137164660</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137164660</guid><author>azurehan01</author><pubDate>Tue, 02 Apr 2024 07:00:00 +0800</pubDate><description><![CDATA[静态顺序表只适用于确定知道需要存多少数据的场景。静态顺序表的定长数组导致N定大了，空 间开多了浪费，开少了不够用。所以现实中基本都是使用动态顺序表，根据需要动态的分配空间 大小，所以下面我们实现动态顺序表。顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构，一般情况下采用数组存 储。在数组上完成数据的增删查改。2. 动态顺序表：使用动态开辟的数组存储。1. 静态顺序表：使用定长数组存储元素。具体接口代码以及菜单代码如下。]]></description><category></category></item><item><title><![CDATA[[数据结构]时间复杂度、空间复杂度的计算]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/137163489</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/137163489</guid><author>azurehan01</author><pubDate>Mon, 01 Apr 2024 07:00:00 +0800</pubDate><description><![CDATA[如何衡量一个算法的好坏呢,对于实现同一个功能，我们可能有不同的代码,在编写成可执行程序后，运行时需要耗费时间资源和空间(内存)资源。因此衡量一个算法的好坏，一般 是从时间和空间两个维度来衡量的，即时间复杂度和空间复杂度。时间复杂度主要衡量一个算法的运行快慢，而空间复杂度主要衡量一个算法运行所需要的额外空间。在计算 机发展的早期，计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展，计 算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度。]]></description><category></category></item><item><title><![CDATA[[C语言]文件操作大全fopen,fclose,fgetc,fputc,fgets,fputs,fscanf,fprintf,fread,fwrite,fseek,ftell,rewind.]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136993416</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136993416</guid><author>azurehan01</author><pubDate>Wed, 27 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[我们如果要在VS对其进行操作，这个时候就得用到fopen函数，fopen即为打开一个文件，这个函数返回的类型为FILE类型的一个指针，所谓FILE类型也就是文件类型，意思就是有个指针指向你打开的文件，类型为FILE类型。文件变成了乱码，因为我们输入的数据在文件中是以二进制的形式进行输入的，正常来说我们输入的数据是以ASCII码值对应的文本显示，但是这里我们直接输入二进制数据，显示的就这一系列二进制对应的ASCII码值，得到一个很奇怪的文案。不同的C编译器的FILE类型包含的内容不完全相同，但是大同小异。]]></description><category></category></item><item><title><![CDATA[[C语言]柔性数组]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136993209</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136993209</guid><author>azurehan01</author><pubDate>Tue, 26 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[我们先看一下怎么制造一个柔性数组呢?int i;int a[0];//柔性数组成员}type_a;我们可以看到，在结构体里面有一个整形变量有一个柔性数组变量，其中，柔性数组的大小是没有被定义的，这代表了我们可以分配动态内存给这个数组。]]></description><category></category></item><item><title><![CDATA[[C语言]利用动态内存制作一个通讯录]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136943106</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136943106</guid><author>azurehan01</author><pubDate>Mon, 25 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[我们先输入一个判断，如果联系人个数sz等于我们的容量了，那我们将realloc我们的空间，返回值我们用结构体指针Pepoinfo修改指针变量为结构体变量，增加大小为我们要设置的add_size的大小，这里我们设置的2就是每次都多增加2个人，我们用ret接收这个指针，接受这个指针是怕传回来的为空，不可以直接用我们之前data指向的地点来接受，不然我们找不到我们原数据的内容。有时会我们发现过去申请的空间太小了，有时候我们又会觉得申请的空间过大了，那为了合理的时 候内存，我们一定会对内存的大小做灵活的调整。]]></description><category></category></item><item><title><![CDATA[[C语言]结构体、位段、枚举常量、联合体]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136922126</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136922126</guid><author>azurehan01</author><pubDate>Sun, 24 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[其实我们仔细分析一下，a作为占2比特的变量，结构体分给其第一个字节后两位，接着剩下的还是在第一个定义的int的四个字节内，所以依次剩下的6个比特以及12个比特分给了b，如所示区域，但是当分配给c的时候，c占用32个比特，第一个int所占的四个字节无法接纳那么大的内存，所以开辟了一段新的空间给它，但是上一个没用完的空间是不分配给c的，所以我们最终看到系统分配内存方式如下。当最大成员大小不是最大对齐数的整数倍的时候，就要对齐到最大对齐数的整数倍。2. 其他成员变量要对齐到某个数字（对齐数）的整数倍的地址处。]]></description><category></category></item><item><title><![CDATA[[C语言]memcpy memmove的模拟实现 memcmp memset解析]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136921197</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136921197</guid><author>azurehan01</author><pubDate>Sat, 23 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[我们知道在学字符串的时候有strcpy strcmp 等等的库函数，但这些都只能进行字符串的操作，如果我们要对一个整数的数组进行比较和复制呢?我们可以采用什么方法呢?以下就是对这些函数的解析以及对memcpy和memmove的模拟实现。]]></description><category></category></item><item><title><![CDATA[[C语言]手动实现strcat strcmp strcpy strstr strtok(静态全局指针初始化方式)代码]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136905104</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136905104</guid><author>azurehan01</author><pubDate>Fri, 22 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[strcat strcmp strcpy strstr strtok这些代码均存储在c语言的头文件中，如果要使用的话直接调用即可，但是为了增加我们对代码的理解，我们看一下如何手动实现这些代码吧！]]></description><category></category></item><item><title><![CDATA[[C语言]指针笔试题]]></title><link>https://blog.youkuaiyun.com/azurehan01/article/details/136837835</link><guid>https://blog.youkuaiyun.com/azurehan01/article/details/136837835</guid><author>azurehan01</author><pubDate>Thu, 21 Mar 2024 07:00:00 +0800</pubDate><description><![CDATA[这里第一个输出结果为0x100014因为程序认为其为一个结构体，结构体加1就是跳过这个结构体因此大小加20而16进制的20为14第二个输出结果为0x100001，将其转化成整型变量加一得到的结果即为加1后的结果第三个输出结果为0x100004，将其转化成整型指针加一，既编译器认为其指向一个整型变量，加一后就是加四个字节。]]></description><category></category></item></channel></rss>