<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[BraveRunTo的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/BraveRunTo</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; BraveRunTo]]></copyright><item><title><![CDATA[行为树原理简介]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/121295272</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/121295272</guid><author>BraveRunTo</author><pubDate>Fri, 12 Nov 2021 20:27:12 +0800</pubDate><description><![CDATA[行为树原理简介
本篇博客整理总结自行为树（Behavior Tree）详细介绍。
前言
首先需要说明的是行为树和状态机都是实现游戏AI的一种手段，二者各有利弊。相对于行为树，经典状态机实现起来更简单，且执行效率更高，但是随着状态数量的增加，状态机的结构将会向着不可控的方向发展。而经典行为树则是使用起来结构更加清晰，对于复杂AI的开发效率更高，但是实现起来复杂，且执行效率较低。所以说二者各有千秋。不过现在行为树已经逐渐成为游戏AI开发的主流，具体原因可以看由赖勇浩翻译的《有限状态机时代终结的10大理由》这篇博]]></description><category></category></item><item><title><![CDATA[C#连接MySql]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/120625307</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/120625307</guid><author>BraveRunTo</author><pubDate>Wed, 06 Oct 2021 15:35:27 +0800</pubDate><description><![CDATA[C#连接MySql
文章目录C#连接MySql连接数据库连接数据库操作数据库增删改
连接数据库
在MySql连接的流程上和微软自带的MSSql的流程是一样的，但是首先我们需要先为我们的项目安装Mysql.data插件，本插件可以通过NuGet来获得。通常MySql5.7对应6.7.9的版本即可，不需要最新版本。
在实际应用上，我们应当将连接数据库的逻辑做成一个单例类，这样可以更好的方便我们的管理。
连接数据库

声明一个连接的对象字符串

首先在使用之前我们需要引入命名空间：
using MySql.Dat]]></description><category></category></item><item><title><![CDATA[C#异步编程基础]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/120611366</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/120611366</guid><author>BraveRunTo</author><pubDate>Tue, 05 Oct 2021 10:15:22 +0800</pubDate><description><![CDATA[C#异步编程基础
文章目录C#异步编程基础什么是异步为什么要学习异步编程async/awaitasync/await特性的结构什么是异步方法异步方法控制流await表达式取消一个异步操作等待任务Task.Delay方法Task.Yield方法使用异步Lambda表达式BackgroundWorker主要成员：属性方法事件其他异步编程模式BeginInvoke和EndInvoke等待直到完成轮询回调
什么是异步
启动程序时，系统会在内存中创建一个新的进程，进程是构成运行程序的资源的集合。这些资源包括虚地址空间]]></description><category></category></item><item><title><![CDATA[C#设计模式之备忘录模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/119139440</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/119139440</guid><author>BraveRunTo</author><pubDate>Tue, 27 Jul 2021 11:22:36 +0800</pubDate><description><![CDATA[备忘录模式
文章目录备忘录模式模式分类模式产生的原因模式类图代码实现备忘录模式总结备忘录模式的优点：备忘录模式的缺点：
本篇博客将介绍备忘录模式，备忘录模式是软件系统中的“月光宝盒”，它提供了一种对象状态的撤销实现机制，当系统中一个对象需要恢复某一个历史状态时，就可以使用备忘录模式进行设计。
模式分类
行为型设计模式。
模式产生的原因
在使用软件的过程中大家难免会产生一些误操作，例如不小心删除了某些文字或者图片，为了使软件更加人性化，对于这些误操作，需要提供一种类似于后悔药的机制，让软件系统可以回到误操作之]]></description><category></category></item><item><title><![CDATA[C#设计模式之访问者模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/119104470</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/119104470</guid><author>BraveRunTo</author><pubDate>Mon, 26 Jul 2021 10:36:49 +0800</pubDate><description><![CDATA[访问者模式
文章目录访问者模式模式分类模式产生的原因模式类图代码实现访问者模式总结访问者模式的优点：访问者模式的缺点：
本篇博客将介绍访问者模式，访问者模式是一种较为复杂的行为型设计模式，它包含访问者和被访问者两个重要组成部分，这些被访问元素具有不同的类型，且不同的访问者可以对其施加不同的访问操作。当我们的数据集合存在多种不同的访问方式的时候，我们可以使用访问者模式。
模式分类
行为型设计模式。
模式产生的原因
在医生开具处方单后，很多医院都存在这样的处理流程：划价人员拿到处方单之后根据药品名称和数量计算总]]></description><category></category></item><item><title><![CDATA[C#设计模式之模板方法模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/119077954</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/119077954</guid><author>BraveRunTo</author><pubDate>Sun, 25 Jul 2021 09:51:15 +0800</pubDate><description><![CDATA[模板方法模式
文章目录模板方法模式模式分类模式产生的原因模式类图代码实现模板方法模式总结模板方法模式优点：模板方法模式缺点：
本片博客将介绍模板方法模式，模板方法模式是最简单的行为型设计模式，它是一种类行为模式，在其结构中只存在父类和子类之间的继承关系。通过使用模板方法模式，可以将一些复杂流程的实现步骤封装在一系列基本方法中，在抽象父类中提供了一个被称为模板方法的方法用于定义这些基本方法的次序，并通过其子类来覆盖某些步骤，从而使得相同的算法框架可以有不同的执行结果。
模式分类
行为型设计模式。
模式产生的原]]></description><category></category></item><item><title><![CDATA[C#设计模式之策略模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/119062572</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/119062572</guid><author>BraveRunTo</author><pubDate>Sat, 24 Jul 2021 19:07:55 +0800</pubDate><description><![CDATA[策略模式
文章目录策略模式模式分类模式产生的原因模式类图代码实现策略模式总结策略模式的优点：策略模式的缺点：
本篇博客将介绍策略模式，策略模式用于算法的自由切换和扩展，他是使用较为广泛的设计模式之一。基本上凡是涉及到父类和父类之间的交互都会或多或少的涉及到这个模式。策略模式提供了一种对象在面对多项选择时的解决方案。
模式分类
行为型设计模式。
模式产生的原因
在软件开发中，我们常常会遇到一种情况：实现一个功能需要用到多种算法或者途径，一种常用的方式是我们通过硬编码将所有的算法集中在一个类中，在该类中通过多个]]></description><category></category></item><item><title><![CDATA[C#设计模式之状态模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/119044641</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/119044641</guid><author>BraveRunTo</author><pubDate>Fri, 23 Jul 2021 21:23:23 +0800</pubDate><description><![CDATA[状态模式
文章目录状态模式模式分类模式产生的原因模式类图代码实现状态模式的总结状态模式的优点：状态模式的缺点：
本篇博客将介绍状态模式，状态模式是一种较为复杂的设计模式，用于解决系统中复杂对象的状态转换以及不同状态下的封装问题。当一个系统中的某个对象存在多个状态，这些状态之间可以进行转换，而且对象在不同状态下会存在不同的行为时可以使用状态模式。
模式分类
行为型设计模式。
模式产生的原因
在现实生活中的水存在多种状态，他可以凝固成冰，也可以蒸发为水蒸气。在软件系统中，有些对象也会像水一样有多种状态，这些状态]]></description><category></category></item><item><title><![CDATA[C#设计模式之观察者模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118993574</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118993574</guid><author>BraveRunTo</author><pubDate>Thu, 22 Jul 2021 10:40:11 +0800</pubDate><description><![CDATA[观察者模式
文章目录观察者模式模式分类模式产生的原因模式灵感的来源模式类图代码实现观察者模式总结观察者模式的优点：观察者模式的缺点：
本片博客将介绍观察者模式，观察者模式用于描述对象之间的依赖关系，为实现多个对象的联动提供一种解决方案，是一种使用频率非常高的设计模式。
模式分类
行为型设计模式。
模式产生的原因
在软件系统中，对象并不是孤立存在的，一个对象行为的改变可能会导致一个或者多个其他与之相关的对象行为发生改变。他们之间将产生联动，所谓牵一发而动全身。为了更好的描述对象之间存在的这种一对多或者一对一的]]></description><category></category></item><item><title><![CDATA[C#设计模式之中介者模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118971124</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118971124</guid><author>BraveRunTo</author><pubDate>Wed, 21 Jul 2021 17:07:40 +0800</pubDate><description><![CDATA[中介者模式
文章目录中介者模式模式分类模式产生的原因模式类图代码实现中介者模式总结中介者模式的优点：中介者模式的缺点：
本篇博客将介绍中介者模式，中介者模式提供一种对象之间简化复杂交互的解决方案，通过引入中介者，将原本对象之间两两交互的关系转变为每个对象和中介者之间的关系，中介者可以对对象之间的通讯进行控制和调节，降低原来系统的耦合度，使得系统更加灵活和易于拓展。
模式分类
行为型设计模式。
模式产生的原因
在QQ的聊天中，存在两种聊天方式，一种是两个用户之间直接进行聊天，另一种是将所有相关用户放在一个QQ]]></description><category></category></item><item><title><![CDATA[C#设计模式之迭代器模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118932059</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118932059</guid><author>BraveRunTo</author><pubDate>Tue, 20 Jul 2021 12:05:28 +0800</pubDate><description><![CDATA[迭代器模式
文章目录迭代器模式模式分类模式产生的原因模式的灵感来源模式类图代码实现迭代器模式总结迭代器模式的优点：迭代器模式的缺点：
本篇博客将介绍迭代器模式，迭代器模式将一个聚合对象保存数据的职责，和它遍历数据的职责分离，在引入迭代器后，聚合对象只负责保存数据，而遍历数据交给迭代器来完成。迭代器模式的介绍将参考.NET中的迭代器来进行说明。
模式分类
行为型设计模式。
模式产生的原因
在软件开发中，为了可以更加方便的操作聚合对象，同时可以很灵活的为聚合对象增加不同的遍历方法，我们需要一个解决方案可以让我们]]></description><category></category></item><item><title><![CDATA[C#设计模式之解释器模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118911565</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118911565</guid><author>BraveRunTo</author><pubDate>Mon, 19 Jul 2021 19:18:25 +0800</pubDate><description><![CDATA[解释器模式
文章目录解释器模式模式分类模式产生的原因文法规则和抽象语法树模式类图代码实现解释器模式总结解释器模式的优点：解释器模式的缺点：
本篇博客将介绍解释器模式，解释器模式是一个学习难度相对较大，但是使用频率又比较低的设计模式。通常如果你不涉及开发新语言的话，是不会用的这个模式的。虽然很少使用，但是对它进行学习后可以加深面向对象思想的理解，并且掌握编程语言中语法规则解释的原理和过程。
模式分类
行为型设计模式。
模式产生的原因
虽然目前计算机编程语言有很多种，但有时人们还是希望可以使用一些简单的语言来实]]></description><category></category></item><item><title><![CDATA[C#设计模式之命令模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118873370</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118873370</guid><author>BraveRunTo</author><pubDate>Sun, 18 Jul 2021 09:28:53 +0800</pubDate><description><![CDATA[命令模式
文章目录命令模式模式分类模式灵感的来源模式类图代码实现命令队列命令模式总结命令模式的优点：命令模式的缺点：
本篇博客将介绍命令模式，命令模式是常用的行为型设计模式之一，他将请求发送者与请求接收者解耦，请求发送者通过命令对象来间接引用接收者，使得系统具有更好的灵活性。
模式分类
型卫星设计模式。
模式灵感的来源
在现实生活中，人们通过使用开关来控制一些电器的打开和关闭，例如电灯或者电风扇。在购买开关时，购买者并不知道它将来会控制什么电器，也就是说开关本身和电器是没有直接关系的。一个开关在安装之后可能]]></description><category></category></item><item><title><![CDATA[C#设计模式之责任链模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118805271</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118805271</guid><author>BraveRunTo</author><pubDate>Fri, 16 Jul 2021 16:17:11 +0800</pubDate><description><![CDATA[责任链模式
文章目录责任链模式模式分类模式产生的原因模式类图代码实现责任链模式总结责任链模式的优点：责任链模式的缺点：
本篇博客将介绍责任链模式，责任链模式是行为型设计模式，行为型模式关注对象之间的交互，研究系统在运行时对象之间的相互通讯和协作，进一步明确对象的职责。当我们的系统中存在多个对象可以处理同一个请求的时候，我们就可以通过责任链模式将这些处理请求的对象连成一条链，让请求可以沿着这个链传播。如果链上的对象可以处理该请求就处理，否则就转发给下家。
模式分类
行为型设计模式。
模式产生的原因
在很多情况]]></description><category></category></item><item><title><![CDATA[C#设计模式之代理模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118761338</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118761338</guid><author>BraveRunTo</author><pubDate>Thu, 15 Jul 2021 15:51:18 +0800</pubDate><description><![CDATA[代理模式
文章目录代理模式模式分类模式产生得原因模式灵感的来源模式类图代码实现代理模式总结代理模式的优点：代理模式的缺点：
本篇博客将介绍代理模式，代理模式是常用的结构型设计模式之一，当用户无法直接访问某个对象或者访问某个对象存在困难时，可以通过一个代理对象来间接访问，为了保证客户端使用的透明性，所访问的真实对象和代理对象会使用相同的接口。
模式分类
结构型设计模式。
模式产生得原因
在软件开发中，由于某些原因，我们不想或者不能直接访问一个对象，此时我们可以通过一个被称为代理的第三者来实现间接访问，这就是代]]></description><category></category></item><item><title><![CDATA[C#设计模式之享元模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118723240</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118723240</guid><author>BraveRunTo</author><pubDate>Wed, 14 Jul 2021 11:11:02 +0800</pubDate><description><![CDATA[享元模式
文章目录享元模式模式分类模式产生的原因模式类图代码实现享元模式的总结享元模式的优点：享元模式的缺点：
本篇博客将介绍享元模式，当系统中存在大量相同或者相似的对象时，我们就可以考虑使用享元模式。享元模式通过共享技术实现相同或者相似的细粒度对象的复用，从而节约内存空间，提高系统性能。在享元模式中会提供一个享元池用于存储已经创建好的享元对象。
模式分类
结构型设计模式。
模式产生的原因
如果一个软件系统在运行时所创建的相同或者相似的对象数量太多，将导致运行代价过高，带来系统资源的浪费、性能下降等问题。例]]></description><category></category></item><item><title><![CDATA[C#设计模式之外观模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118702291</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118702291</guid><author>BraveRunTo</author><pubDate>Tue, 13 Jul 2021 15:54:10 +0800</pubDate><description><![CDATA[外观模式
文章目录外观模式模式分类模式产生的原因模式灵感的来源模式类图代码实现外观模式总结外观模式的优点：外观模式的缺点：
本篇博客将介绍外观模式，外观模式是一种使用频率非常高的设计模式，它通过引入一个外观角色来简化客户端与子系统之间的交互，为复杂的子系统调用提供一个统一的入口，使子系统与客户端的耦合度降低，且客户端调用非常方便。
模式分类
结构型设计模式。
模式产生的原因
在软件开发中，当我们需要访问一系列子系统来完成一个功能，此时由于涉及的类比较多，导致使用时代码就会比较复杂。而这些需要交互的类又经常会]]></description><category></category></item><item><title><![CDATA[C#设计模式之装饰器模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118672436</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118672436</guid><author>BraveRunTo</author><pubDate>Mon, 12 Jul 2021 12:21:08 +0800</pubDate><description><![CDATA[装饰器模式
文章目录装饰器模式模式分类模式产生的原因模式的灵感来源模式类图代码实现经典代码实现：装饰器模式总结装饰器模式的优点：装饰器模式的缺点：
本片博客将介绍装饰器模式，装饰器模式是一种用于替代继承的技术，它通过一种无需定义子类的方式给对象动态的添加职责，使用对象之间的关联关系替代继承关系。装饰器模式降低了系统的耦合度，可以动态增加或者删除对象的职责，并使得需要装饰的具体构件类和用于装饰的具体装饰类可以相互独立的变化。
模式分类
结构型设计模式。
模式产生的原因
在软件开发时，有些时候我们不能使用继承对]]></description><category></category></item><item><title><![CDATA[C#设计模式之组织模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118655449</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118655449</guid><author>BraveRunTo</author><pubDate>Sun, 11 Jul 2021 16:01:44 +0800</pubDate><description><![CDATA[组织模式
文章目录组织模式模式分类模式产生的原因模式类图代码实现组合模式总结组合模式的优点：组合模式的缺点：
本篇博客将介绍组织模式，组织模式关注那些包含叶子构件和容器构件的结构以及它们的组织形式。在叶子构件中不包含成员对象，而容器构建中可以包含成员对象，这些对象通过递归组合可构成一个树形结构。组合模式使用面向对象的方式处理树形结构，他为叶子节点和容器构件提供了一个统一的抽象构件类，客户端可以针对抽象构件进行处理，而无需关心所操作的是叶子节点还是容器节点。
模式分类
结构型设计模式。
模式产生的原因
树形结]]></description><category></category></item><item><title><![CDATA[C#设计模式之桥接模式]]></title><link>https://blog.youkuaiyun.com/BraveRunTo/article/details/118639320</link><guid>https://blog.youkuaiyun.com/BraveRunTo/article/details/118639320</guid><author>BraveRunTo</author><pubDate>Sat, 10 Jul 2021 19:16:09 +0800</pubDate><description><![CDATA[桥接模式
文章目录桥接模式模式分类模式产生的原因模式灵感的来源模式类图代码实现桥接模式和适配器模式的联用桥接模式的总结桥接模式的优点：桥接模式的缺点：
本片博客将介绍桥接模式，桥接模式可以说就是一个组合复用原则的例子，其主要思想就是组合复用。桥接模式是一个比较常用的设计模式，一般情况下，当我们想要构建一个复杂对象时，往往都会使用到桥接模式来进行设计。桥接模式可以将一个复杂对象的多个独立维度分离。
通常情况下，使用桥接模式的复杂对象往往会使用建造者模式来构建。
模式分类
结构型设计模式。
模式产生的原因
如果]]></description><category></category></item></channel></rss>