<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[m0_73952999的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/m0_73952999</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; m0_73952999]]></copyright><item><title><![CDATA[Unity协程（Coroutine）底层原理全解析]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/161141661</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/161141661</guid><author>m0_73952999</author><pubDate>Sat, 16 May 2026 13:26:29 +0800</pubDate><description><![CDATA[其核心价值是简化“需要分段执行、需要等待条件”的逻辑（如延时、异步操作等待），避免回调嵌套，提升代码可读性，但无法解决主线程阻塞问题。// 当前 yield 返回的等待对象（null / WaitForSeconds 等）// 状态标识：记录协程执行到哪一步（0/1/2/-1，-1表示结束）// 返回false，标识协程执行结束。// 表示协程未结束，还有后续执行。E2 -->|MoveNext返回false| E4[协程结束，移出调度队列]]]></description><category></category></item><item><title><![CDATA[C++理解模板类型推导]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/146171361</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/146171361</guid><author>m0_73952999</author><pubDate>Tue, 11 Mar 2025 10:07:28 +0800</pubDate><description><![CDATA[通过引用参数的类型声明是T&&，如果expr是一个左值，T和ParamType都会被推到成左值引用(T&&->T&)；如果expr是const的，也要忽略掉const.如果是volatile的，也要忽略掉。如果expr的类型是一个引用，忽略引用的部分，然后利用expr的类型和ParamType对比去判断T的类型。编译器在对T的类型进行推导时，不仅仅只取决于‘expr’的类型，还取决于‘ParamType’的形式。虽然通常情况下，一个数组会退化成一个指向其第一个元素的指针，但是数组类型的指针类型是不一样的。]]></description><category></category></item><item><title><![CDATA[Unity/C++/C# 多线程与协程(Coroutine)原理与用法详解]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145962680</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145962680</guid><author>m0_73952999</author><pubDate>Sun, 02 Mar 2025 15:17:52 +0800</pubDate><description><![CDATA[协程，从字面意义上理解就是协助程序的意思，我们在主任务进行的同时，需要一些分支任务配合工作来达到最终的效果稍微形象的解释一下，想象一下，在进行主任务的过程中我们需要一个对资源消耗极大的操作时候，如果在一帧中实现这样的操作，游戏就会变得十分卡顿，这个时候，我们就可以通过协程，在一定帧内完成该工作的处理，同时不影响主任务的进行如果你需要执行一些并行的、异步的工作，并且希望更高级的抽象和异步编程模型，那么使用 Task 是更合适的选择。]]></description><category></category></item><item><title><![CDATA[实现Unity shader扭曲效果]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145952443</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145952443</guid><author>m0_73952999</author><pubDate>Sat, 01 Mar 2025 19:46:40 +0800</pubDate><description><![CDATA[1、扭曲材质赋于面片
2、抓取当前一帧的图片内容
3、获取屏幕坐标
4、利用屏幕坐标对抓取的图片采样
5、再采样张扰动贴图做扭曲]]></description><category></category></item><item><title><![CDATA[C++虚函数]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145951308</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145951308</guid><author>m0_73952999</author><pubDate>Sat, 01 Mar 2025 18:56:28 +0800</pubDate><description><![CDATA[如果父类的虚函数没有被子类改写，那么子类虚函数表的指针就是父类对应的虚函数的指针；否则，虚表的指针是子类虚函数的指针。虚函数表是由编译器自动生成与维护的，virtual成员函数会被编译器放入虚函数表中，当存在虚函数时，每个对象都有一个指向虚函数的指针（vptr指针）。如果父类的析构函数不是虚函数，则不会触发动态绑定（多态），结果就是只会调用父类的析构函数，而不会调用子类的析构函数，造成。如果我写了一个类，它的构造函数是虚函数，请问会在什么时候报错？，在父类构造完成之后，子类的vptr才指向自己的虚函数表。]]></description><category></category></item><item><title><![CDATA[C++左值与右值 将亡值 移动语义 完美转发 引用折叠]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145945139</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145945139</guid><author>m0_73952999</author><pubDate>Sat, 01 Mar 2025 14:28:34 +0800</pubDate><description><![CDATA[传入 forward 实参是右值类型： 根据以上的分析，可以知道T将被推导为值类型，也就是不带有引用属性，假设为 int。传入 forward实参是左值类型：根据以上的分析，可以知道T将被推导为左值引用类型，假设为int&。右值引用是C++11引入的，与之对应C++98中的引用统称为左引用。由于临时对象是右值，这里就需要使用一个move函数，它的作用的将左值强制转换为右值。并用&来表示左值引用。引用折叠就是，如果间接创建一个引用的引用，那么这些引用就会折叠。& + &->& : 左值的左值引用是左值。]]></description><category></category></item><item><title><![CDATA[图形学 渲染管线]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145944008</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145944008</guid><author>m0_73952999</author><pubDate>Sat, 01 Mar 2025 10:31:10 +0800</pubDate><description><![CDATA[此外透视校正插值也在这个阶段执行。大体逻辑是：执行视锥剔除，查询出可能需要绘制的图元并生成渲染数据，设置渲染状态和绑定各种Shader参数，调用DrawCall，进入到下一个阶段，GPU渲染管线。简单来说就是两次裁剪的粒度不同，前者是在物体对象层面的，一般对对象的包围盒做剔除，剔除掉不在视锥体内的物体，NDC裁剪是在三角形层面做的，裁剪掉不在屏幕内的像素。a. 三角形设置(图元装配)，计算出三角形的一些重要数据(如三条边的方程、深度值等)以供三角形遍历阶段使用，这些数据同样可用于各种着色数据的插值。]]></description><category></category></item><item><title><![CDATA[C++STL标准模板库]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145936100</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145936100</guid><author>m0_73952999</author><pubDate>Fri, 28 Feb 2025 22:29:52 +0800</pubDate><description><![CDATA[底层数据结构：动态开辟的二维数组，一维数组从2开始，以二倍的方式进行扩容，每次扩容之后，每次扩容之后，原来第二维的数组，从新的第一维数组的下标oldsize/2开始存放，上下都预留相同的空行，方便支持deque的首元素添加。先在mapper另一个空间中去扩容，如果一维空间不足时，以的MAP_SIZE大小进行扩容，然后调整二维空间和一维空间的对应位置（将原来的数据放到一维中间，可以方便前后元素的添加）适配器底层没有自己的数据结构，它是另外一个容器的封装，他的方法全部由底层依赖的容器进行实现的；]]></description><category></category></item><item><title><![CDATA[C++里面四种强制类型转换]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/145932240</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/145932240</guid><author>m0_73952999</author><pubDate>Fri, 28 Feb 2025 17:27:40 +0800</pubDate><description><![CDATA[const_cast: 只能应用于指针引用，用来移除变量的const或volatile限定符；不要妄图去修改const，const_cast转化后的const仍然无法被修改。2.static_cast已经能解决类型转换的问题，那么为什么还需要reinterpret_cast？reinterpret_cast：允许将任何指针转换为任何其他指针类型，并不安全。static_cast：用于各种隐式转换，比如void*转ptr*对于无隐式的类型转换，static_cast已经不可用。]]></description><category></category></item><item><title><![CDATA[【unity3D客户端开发】技能系统的实现（上）（个人复习笔记/侵删）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/144140704</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/144140704</guid><author>m0_73952999</author><pubDate>Tue, 03 Dec 2024 21:15:59 +0800</pubDate><description><![CDATA[比如回合制战斗中的普通攻击，要发动攻击的角色移动到被攻击角色的前方，并且触发技能特效，之后受击角色可能会播放其受击动画，血量UI，怒气UI都要发生变化，攻击后攻击者回到其原本位置。Skillconfig需要记录事无巨细的技能属性，包括前摇后摇时间，攻击的持续时间，技能图标，技能伤害类型等。这样就可以获取到攻击类型的攻击列表，例如传入参数，攻击发起者和攻击目标类型，最终返回目标Team的列表。寻找攻击目标时，先按照技能的信息进行，并且判断目标是否死亡，如死亡则攻击处于同一排列的目标。]]></description><category></category></item><item><title><![CDATA[【合肥工业大学】操作系统 习题解析 作业答案（仅作学习与交流/侵删）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/143454510</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/143454510</guid><author>m0_73952999</author><pubDate>Sat, 02 Nov 2024 18:45:40 +0800</pubDate><description><![CDATA[1．设计现代OS的主要目标是什么？答：（1）有效性 （ 2）方便性 （ 3）可扩充性 （ 4）开放性2． OS 的作用可表现在哪几个方面？答：（1） OS 作为用户与计算机硬件系统之间的接（2）作为计算机系统资源的管理者（3）OS 实现了对计算机资源的抽象3．为什么说操作系统实现了对计算机资源的抽象？答： OS 首先在裸机上覆盖一层I/O 设备管理软件，实现了对计算机硬件操作的第一层次抽象；在第一层软件上再覆盖文件管理软件，实现了对硬件资源操作的第二层次抽象。]]></description><category></category></item><item><title><![CDATA[【人工智能原理】合肥工业大学 宣城校区 实验三 神经网络之网络基础]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/143218805</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/143218805</guid><author>m0_73952999</author><pubDate>Thu, 24 Oct 2024 20:42:15 +0800</pubDate><description><![CDATA[下列说法错误的是  DA、激活函数可以使神经元搭建输入到输出之间的映射关系。B、反馈网络模型在不同 的时刻有属于当前不同的状态，具有一定的记忆功能。C、所有神经网络一定都包含输入层、隐藏层、输出层三部分。D、理论上而言，网络层次的深度越深，神经网络能够拟合的能力越强，越能够解决更复杂的问题。]]></description><category></category></item><item><title><![CDATA[【Unity】什么是定点数？定点数的实现原理（个人复习笔记/侵删/不足之处欢迎斧正）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/142916175</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/142916175</guid><author>m0_73952999</author><pubDate>Mon, 14 Oct 2024 14:12:40 +0800</pubDate><description><![CDATA[且这个位置固定不变，小数点前、后的数字，分别用二进制表示，然后组合起来就可以把这个数字在计算机中存储起来，这种表示方式叫做「定点」表示法，用这种方法表示的数字叫做「定点数」。在使用帧同步开发中，如果不使用定点数而采用浮点数，会出现各种而样的问题（浮点误差）真正使用定点数时，基本保留0位小数，完全使用整形数据，误差最小。]]></description><category></category></item><item><title><![CDATA[【Unity】unity安卓打包参数（个人复习向/有不足之处欢迎指出/侵删）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/142716212</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/142716212</guid><author>m0_73952999</author><pubDate>Sat, 05 Oct 2024 17:08:29 +0800</pubDate><description><![CDATA[启用后，对于测试和迭代Java和Kotlin代码很有用，如果你重新导出Unity项目，你在导出的项目对之前的Java和Kotlin源文件的任何更改都会保留。以全分辨率存储RGBA纹理，使用16位存储每个像素，质量较低，纹理可能会丢失有价值的颜色信息，内存占用相对较少。公共符号文件包含将函数地址解析为人类可读字符串的信息，包小于调试符号的包，可以看到函数调用的情况，方便调试。它包含一个表，将活动内存地址转换为我们可以使用的信息，比如方法名，可以利用符号包来检测调试应用程序的信息。]]></description><category></category></item><item><title><![CDATA[计算机组成原理 期末复习笔记整理（上）（个人复习笔记/侵删/有不足之处欢迎斧正）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/137449921</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/137449921</guid><author>m0_73952999</author><pubDate>Wed, 12 Jun 2024 17:32:06 +0800</pubDate><description><![CDATA[零、计算机的发展
冯.诺依曼计算机的特点:
1.计算机由五大部件组成
2.指令和数据以同等地位存于存储器，可按地址寻访
3.指令和数据用二进制表示
4.指令由操作码和地址码组成
5.存储程序（首次提出存储结构）输入输出系统的发展概况
1. 早期
分散连接
CPU 和 I/O设备 串行 工作 程序查询方式
2. 接口模块和 DMA 阶段
总线连接
CPU 和 I/O设备 并行 工作
3. 具有通道结构的阶段
4. 具有 I/O 处理机
6.以运算器为中心（现代计算机一般以存储器为核心，cpu=运算器+控制器）]]></description><category></category></item><item><title><![CDATA[编译原理 期末复习笔记整理(上)]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/139079431</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/139079431</guid><author>m0_73952999</author><pubDate>Mon, 27 May 2024 14:39:44 +0800</pubDate><description><![CDATA[基本字（保留字：组成命令的关键字，系统定义好的单词）：void，int，float 标识符 （用户定义的函数名、变量名等）：jisuan，a，b，c，d，x，y 整常数：50 运算符：*， +， = 界限符（分隔开两部分的符号）：{  }；转换规则包括：对基本字、运算符、界限符的转换规则（有限的、可数的），对标识符的转换规则，对常数的转换规则等。对于语言来说，不仅要给出它的词法、语法规则，而且要定义它的单词符号和语法符号的意义。对某种语言，定义一组规则，用它可以定义一个程序的意义，称为语义规则。]]></description><category></category></item><item><title><![CDATA[【机器学习】乳腺癌——决策树方法的实现]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/138975273</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/138975273</guid><author>m0_73952999</author><pubDate>Thu, 16 May 2024 21:14:39 +0800</pubDate><description><![CDATA[【代码】【机器学习】乳腺癌——决策树方法的实现。]]></description><category></category></item><item><title><![CDATA[大学物理实验 期末复习笔记整理（个人复习笔记/侵删/有不足之处欢迎斧正）]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/138494910</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/138494910</guid><author>m0_73952999</author><pubDate>Wed, 08 May 2024 08:30:01 +0800</pubDate><description><![CDATA[（1）：零点漂移，简称零漂，是指当放大电路输入信号为零（即没有交流电输入）时，由于受温度变化，电源电压不稳等因素的影响，使静态工作点发生变化，并被逐级放大和传输，导致电路输出端电压偏离原固定值而上下漂动的现象。总不确定度：由于扩展测量不确定度反映各个不确定度分量的综合贡献，并且一般作为测量报告的结果，以前也称总不确定度。在这个例子中，由于标准电阻是在20℃下标定的，但在实际使用中环境温度为30℃，这种温度变化会导致电阻值的变化，这种变化是系统性的、可预测的，并且与电阻的实际使用条件（温度）相关。]]></description><category></category></item><item><title><![CDATA[【Unity】利用二进制数据持久化 【练习学习项目/有不足之处欢迎斧正/侵删】]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/136570480</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/136570480</guid><author>m0_73952999</author><pubDate>Sat, 09 Mar 2024 11:50:53 +0800</pubDate><description><![CDATA[利用FileStream读取文件流，再利用IExcelDataReader类，从流中读取Excel数据，使用DataSet数据集合类，将Excel数据转存进其中方便读取。Editor文件夹可以放在项目的任何文件夹下，可以有多个，放在其中的内容，项目打包时不会被打包到项目中。Dll文件：库文件，可以理解为它是许多代码的集合，将相关代码集合在库文件中可以方便迁移和使用，方便用户直接使用。容器：放一个字典，存储整张表的数据，对应数据结构类的类型，key利用唯一ID来设置（保证主键不一样）]]></description><category></category></item><item><title><![CDATA[【Unity】二进制文件 数据持久化(修改版)【个人复习笔记/有不足之处欢迎斧正/侵删】]]></title><link>https://blog.youkuaiyun.com/m0_73952999/article/details/136545836</link><guid>https://blog.youkuaiyun.com/m0_73952999/article/details/136545836</guid><author>m0_73952999</author><pubDate>Fri, 08 Mar 2024 15:08:03 +0800</pubDate><description><![CDATA[在内存中都以字节的形式存储着，通过sizeof方法可以看到常用变量类型占用的字节空间长度（1byte = 8bit，1bit(位)不是0就是1，不仅可以节约存储空间，提升效率；还可以提升安全性；而且在网络通信中我们直接传输的数据也是字节数据（2进制数据）]]></description><category></category></item></channel></rss>