自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lua中的元表和元方法的解析

元表:什么是表?:表是一种引用类型,一种数据结构,使用关联型数组,你可以用任意类型的值来作数组的索引,但这个值不能是nil,大小不固定什么是元表?:元表是用来定义对table操作方式的表。例如:local t1={1} local t2={2} local t3=t1+t2这个时候程序不知道如何对两个表执行+运算,因此就需要通过元表来定义如何执行t1的+运算(有点类似于c++中的运算符重载)实现方法如下:local mt={} --定义一个mt._add.

2020-08-20 23:10:06 393

原创 解析Lua中的GC

Lua回收算法的原理:不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法, c#采用的是Mark-sweep && compact算法Lua采用的是Mark-sweep算法,分开说一下:引用计数算法:在一个对象被引用的情况下,将其引用计数加1,反之则减1,如果计数值为0,则在GC的时候回收,这个算法有个问题就是循环引用。Mark-sweep算法(标记清除法):标记:每次执行GC时,先以若干根节点开始,逐个把直接或间接和它们相关的节点都

2020-08-18 11:49:31 1089

原创 平衡二叉树、AVL树和红黑树

平衡二叉树、AVL树和红黑树平衡二叉树 想要知道AVL树和红黑树,首先我们得了解什么是平衡二叉树,因为从AVL树和红黑树都属于自平衡二叉树。什么是平衡二叉树: 二叉树得每个节点得左右子树得深度都不能超过1。平衡得四种类型: LL型:在左子树的左孩子上插入元素;解决办法:(左旋) 如下图:RR型:在右子树的右孩子上插入元素;解决办法(右旋)如下图: RL型:在右子树的左孩子上插入元素;解决办法(先右旋再左旋) 如下图:...

2020-08-12 22:59:50 424 1

原创 通过四大排序解析时间复杂度和空间复杂度

时间复杂度在算法的分析中,语句的执行次数T(n)是一个关于n(问题规模)的一个函数。分析n的变化引起T(n)的改变,进而得到T(n)的数量级,也就是时间频率。如果存在某一个辅助函数f(n),当n趋于无穷大时,T(n)/f(n)的值为一个不为0的常数,有T(n)=O(f(n)),这就是算法的渐进时间复杂度,也就是我们常说的时间复杂度。大O表示法:用O(f(n))来体现时间复杂度的方法被称作大O表示法;大O推导法:O(1)叫做常数阶;O(n)叫做线性阶;O(n^2)叫做平方阶。用常数1取代运行时间中

2020-08-11 23:07:56 546

原创 用两个栈形成一个队列

两个栈形成一个队列解题思路:队列是先进先出,有队头和队尾,因此用第一个栈的栈顶表示队头,第二个表示队尾。 队列插入的时候是从尾巴插入,因此代表尾部的栈可以定义成一个插入栈也是队尾栈。 队列输出遵守先进先出原则,输出的元素是队头,因此代表头部的栈可以定义一个输出栈也叫队头栈。 为避免队列顺序错乱,因此两个栈在做插入或者输出时应该保持另一个栈为空图解:如上图:当要插入时所有元素放入第一个栈栈顶为队尾插入即插入队列尾部,取出队头的时候所有元素放入第二个栈中栈顶就为队头取出就为队头,...

2020-08-11 22:47:34 1802 1

原创 时间复杂度和空间复杂度—选择排序

时间复杂度和空间复杂度的简述时间复杂度**定义:**每个算法都有自己的执行时间,但我们无法算出来,只能上机去测试。但不是所有的算法都去上机测试,我们只需要知道那个算法的循环次数少也就知道这个算法执行时间比较少,因此我们根据一个算法的循环次数去判断他的执行时间,也把这个循环次数叫做这个算法的时间复杂度。常见的时间复杂度常数阶O(1),如果算法的执行时间不随着问题规模n的增加而增长,即使算法中有上千条语句,其执行时间也不过是一个较大的常数。此类算法的时间复杂度是O(1)。对数阶O(log2 n

2020-08-10 22:21:18 1907

原创 DirectX正方体类的封装个人思路

DirectX正方体类的封装个人思路首先,我们封装正方体类的时候要考虑一个正方体呈现在我们面前需要一些什么东西然后开始动手1)一个正方体有8个顶点(这是必备条件不考虑如何绘制的情况下8个顶点)2)有了顶点我们需要保存这8个顶点以便后面使用(保存数据是需要顶点缓冲区) 3)要将正方体展现出来需要的变换4)最后一部绘制正方形这是我想的4个步骤,有了四个步骤之后要划分每个步骤之后明白每个步骤在类中称当什么角色:1)首先8个顶点毫无疑问应该属于正方体的数据成员;而在DirectX中

2020-07-12 22:45:58 346

空空如也

空空如也

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

TA关注的人

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