自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 位运算的异或,与

得到这一位后,再让数组里面的每一项去和这个rightone去做异或运算,因为刚刚我们知道再这一位上这两个数异或是1所以肯定是一个是0一个是1,我们把数组中的数字根据这一位分开,再这一位上是1的是一类,是0的是一类,当数组里的每一项和rightone做&运算不是0的时候说明再这一位是1,再去获得eor的这个数最右边的1的位置,为什么获得1的位置,因为两个数异或出现1,说明在这一位上,两个数一个是1一个是0,如果两个都是1或者两个都是0在这一位相加就变成0了,所以找到这一位是1的异或位置。

2023-12-08 17:31:13 351

原创 C#算法动态规划

动态规划类似于分治法,都是把复杂问题分割化然后求和,但是分治法是子类互相不相关的进行运算,而动态规划则是涉及到其他子类之间,进行叠加的处理,比如钢管的分割问题。

2023-08-10 11:25:16 123

原创 C#数据结构树形结构

树有很多种,主要以二叉树为主,二叉树是说每一个父节点,最多只能有两个子节点,二叉树相当于对树结构进行了某种规范化的限制,二叉树中的三种遍历方式,前序遍历,中序遍历和后续遍历,这个前中后指的是父节点。二叉排序树则是链式的存储方式,定义一个链式结构,里面是左节点,右节点和父节点以及数据。如果是前序遍历那就是:A,B,D,H,I,E,J,C,F,G。中序遍历就是:H,D,I,B,J,E,A,F,C,G。后序遍历是:H,J,D,J,E,B,F,G,C,A。

2023-08-09 14:58:02 381

原创 C#分治法获取最大子数组

public static SubArray GetMaxSubArray(int low, int high, int[] array)//这个方法是用来取得array 这个数组 从low到high之间的最大子数组。采用分治法的策略把复杂的东西切割成简单的进行处理,取得开始索引-中间索引,中间索引+1-结束索引的最大子数组,最后使用递归的方式一层一层对比,加和。// 低区间 [low,mid] 高区间[mid=1,high]//从【mid+1,high】找到最大子数组[mid+1,j]

2023-08-09 14:40:46 80

原创 QFromeWork框架

关于对象的数据以及方法写在系统层,对于要继承MonoBehaviour的写在表现层,当想要使用系统里的方法或者要对系统里的字段进行修改时,发送指令。1.系统层,枪械系统,把要对外提供的方法以及数据写在接口里,在枪械系统中实现。对数据进行初始化,对方法进行编写。2.使用IController接口发送指令。3.在命令中对枪械系统的字段以及方法进行调用。

2023-08-07 16:21:42 90

原创 Lua中的面向对象思想

如上图所示,当我们使用new方法时,表t内没有元素,在元表里我们进行了设定,当你访问表t的时候,如果找不到就把自身的东西给他,最后把t返回,当我们进行new方法并且有一个接受值的时候,person1其实就是t,当我们调用person1.name的时候,因为t表本身是空表,里面没有数据,所以触发元表逻辑,返回person中的数据。以此实现面向对象的理念。

2023-07-27 10:26:18 27

原创 Lua中的携程

携程的暂停,使用coroutine.yield会把携程暂停,再次调用coroutine.resume重新启动携程,再次启动携程不需要传参只需要传递要继续运行的携程名称即可。创建携程的两种方式,一种是通过create创建,resume调用,另一种是通过wrap创建,根据携程的名称直接调用。

2023-07-26 15:59:29 170

原创 Lua中的元表及元表关键字

当你想要对一个普通表内没有的索引去添加一个数据的时候,会调用 与普通表绑定的元表内的方法,但是执行该方法后普通表内并没有成功添加到我们想添加的元素而是要使用另一个关键字rawset,对我们的数据进行赋值。当你想要查询一个表里没有的该索引的数据时,会执行元表里面的Function方法,tab就是传入的普通表,key是你想要查找的索引,如果你找了一个表内没有的索引才会执行。创建一个普通的表,以及一个元表,使用setmetatable把两个表进行绑定,从而能通过其中一个表来对另一个进行一些操作。

2023-07-25 17:48:58 67

原创 Lua中的模块

使用规则如下,值得一提的是,即使在声明的类内部,也得使用Enemy.的方式来对方法以及变量进行修饰才能在外界被访问到。类似于C#中的类,将一些方法和变量可以封装到一个文件中进行使用。在调用这个方法文件的时候,所采用的规则如下。

2023-07-25 15:41:26 35

原创 C#中使用链表实现队列

Console.WriteLine("当前队列为空");Console.WriteLine("当前链表为空");2.自定义接口,链表的结构不是用数组实现的,因此需要自定义结构。3.使用自定义结构实现接口。4.实现我们自己创建的队列。

2023-07-17 17:45:02 62

原创 C#使用顺序表实现队列

2.实现接口顺序表使用数组结构来实现。

2023-07-17 17:40:03 36

原创 单链表实现栈

Console.WriteLine("已经没有了");2.使用自定义结构实现接口。

2023-07-13 18:55:13 32

原创 使用线性表实现栈

Console.WriteLine("已经满了");1.定义需要实现的接口。

2023-07-13 18:45:26 41

原创 C#数据结构链式数据

有一个要注意的地方是当你把头节点head的值给temp时,temp就是1所以往后移动节点的话得从1的位置开始,最后得移动到索引的前一个位置,所以得是《=index-1.= null) //如果这个节点有下一个节点,让这个节点等于自己的下一个节点,相当于把节点往后移。同时我们要定义一个结构,因为之前实现泛型List是根据数组实现的,而单链表我们得自己定义一个结构,结构内部信息也比较简单,主要是一个T类型的单链表存储数据,和下一个单链表的信息。//一直把节点往后移,直到要插入位置的前一个节点。

2023-07-13 15:03:16 130

原创 C#数据结构

自定义顺序结构,以List为例。声明接口,创建各个方法,在自定义类中实现方法,比如获取集合的长度,集合是否为空,清空集合,向集合内添加元素,向集合指定的位置添加元素,移除集合中的某个元素,移除集合某个位置的元素,获取当前索引处的集合元素是什么。

2023-07-12 16:52:26 30

原创 使用LINQ进行查询

var res=masterList.Where(Test) //Test里面是判断条件,最后返回满足条件的res数组。foreach(var temp in res) //因为之前已经把满足条件的对象返回到了res中,变成了新的集合。var res=from m in masterList //类似于foreach方法,对集合中的对象进行遍历。var res=masterList.Where(Func)

2023-07-11 16:58:42 110

原创 C#中的线程,任务和同步

比如上述类中的字段state在创建对象后存储在多个线程中,线程中的state指向的地址都是一个,有的线程刚刚执行到state++的地方,有的可能执行到了state=5的地方,因此会导致state的值不统一,造成资源上的冲突,针对这一情况就使用锁的思想,当一个线程已经取得该方法后,将这个方法锁起来不然其他的线程用,等用完了再解开,以此让其他的线程使用。线程的优先级一共有五个等级,分别是最高级,高级,普通,低级,最低级,是线程对象的属性,在创建线程对象的时候可以进行修改。//启动线程,相当于启动方法。

2023-07-11 14:53:39 62

原创 匿名方法和兰博达表达式()=>{}

变成了这样,当我们的兰博达表达式内只有一条语句时,我们还可以继续简化写法把括号和return都删除掉变成。这里使用delegate把匿名方法放到func委托。同样我们可以使用兰博达表达式来简化这个写法。匿名方法,匿名方法就是没有名称的方法,比如。当形参只有一个的时候也可以把括号去掉。

2023-07-06 15:39:37 56

原创 C#委托事件

委托的核心思想是分发,将方法作为变量进行传递,先定义委托然后创建委托的实例,最后在实例中添加方法,通过调用变量从而调用方法。内置委托一个是Action,一个是Func,Action是不能有返回值的,Func是必须得有返回值的,使用委托的方式实现冒泡排序。列:首先定义一个泛型的方法,要求传入一个随机类型的数组,以及一个委托事件,根据委托事件中所携带的方法的返回值Bool值,去判断是否需要进行交换位置。声明一个Func的委托,把判断的条件函数添加进行。最后在主函数里面调用。

2023-07-06 15:23:47 37

原创 C#的抽象类

抽象类的使用方法和虚方法类似,最大的区别是抽象类中的抽象方法不能有方法体,所有的抽象成员都必须在子类里面实现,抽象的对象也只能存在于抽象类中,抽象类无法创建自己的实例。抽象的关键字是abstract,子类中实现抽象方法的关键字是override(和虚方法一样)。

2023-07-04 14:34:53 31

原创 C#中的虚方法

可以看到使用重写后会覆盖掉原有父类的方法,所以当你的父类变量存储子类对象时,直接调用变量里面的方法就可以了,相比里氏转换还要转换一下类型方便了许多。在学习继承的时候有学到里氏转换,那就是实例出来的父类对象可以存储子类对象,但是父类对象还是无法表现出子类的特点,需要将其强转为子类才能使用,否则依旧是父类的,如下图所示,将子类的对象存到父类的变量当中,所展现出来的特性依旧是父类的。但是当使用里氏转换对其进行转换后。

2023-07-04 13:39:35 26

原创 C#的装箱和拆箱

在这个过程中把引用类型的值变成了值类型是否发生了拆装箱呢,答案是没有发生,拆装箱有一个隐式的条件是双方具有继承关系,像之前的例子object是所有类的父类,所以是能够发生装拆箱的过程的,而string和int是两个毫无交集的类型,一个在堆上一个在栈中,他们并无继承关系因此无法发生拆装箱(PS:不是所有的继承都能发生拆装箱,但是发生拆装箱了就会有继承。常见的值类型是:结构体(数值类型,bool型,用户定义的结构体),枚举,可空类型。常见的引用类型是:数组,用户定义的类、接口、委托,object,字符串。

2023-07-04 09:59:41 542

原创 里氏转换的使用技巧

在这里虽然我们声明了一个父类的变量并且把子类对象存了进去,但是当想调用子类的方法时,提示找不到这个方法,这是因为虽然test里面存的是子类的对象,但是本质上他还是Parent类,父类的变量,所以得先把它转换成子类的变量再调用子类的方法 ,转换的方式有两种,如下所示。当两个类具有继承关系时,父类的变量能够存子类的对象,从而使用子类的方法。

2023-06-29 16:21:53 17

原创 继承中的构造函数

当手动给父类添加无参的构造函数时错误取消,出现该错误的原因是在创建了一个子类的对象时,因为子类继承了父类,所以会先创建一个父类的对象出来,当对象出现的时候会先默认调用父类无参的构造函数,当执行完父类对象的构造函数后,才会执行子类的构造函数,但是父类的无参构造函数被有参替代了所以无法调用到。2.当在类中声明了一个有参数的构造函数时,每个类自带的没有参数的构造函数将会被取代,如果这个有参数构造函数的类作为父类,当子类不去给父类的有参构造函数提供相应的参数值就会错。解决办法:使用关键字base。

2023-06-29 15:51:30 69

原创 ref,out,params

ref,out,params的使用

2023-06-27 10:14:50 22

原创 C#中String和StringBuilder

C#string与StringBuilder

2022-11-23 17:29:25 206 1

原创 Unity的Socket通讯,Unity作为服务端

Unity的socket通讯服务器端

2022-10-31 19:01:07 1099

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除