自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Lua热更新解析

Lua 语言是在一个名为 _ENV 的预定义上值(一个外部的局部变量,upvalue)存在的情况下编译所有的代码段的。因此,所有的变量要么绑定到一个名称的局部变量,要么是 _ENV 中的一个字段,而 _ENV 本身是一个局部变量。例如:local z = 10x = 0y = 1x = y + z等价于local z = 10_ENV.x = 0_ENV.y = 1_ENV.x = _ENV.y + z

2020-08-21 14:45:10 7070

原创 Lua元表与元方法解析

Lua元表与元方法解析元表元表的概念元方法元方法的概念算术类和关系类的元方法rawget 和 rewset 方法index 元方法ipairs 和 pairsnewindex 元方法简单应用实例具有默认值的 table跟踪 table 的访问只读 table元表lua中的变量是没有数据类型的,值有类型。类型有八种nil,number,boolean, string, function, thread, userdata以及table。table 作为 Lua 中唯一的数据结构,我们可以利用 table

2020-08-21 12:59:35 555

原创 Lua闭包函数解读

Lua闭包函数解析闭包函数概念闭包组成Lua函数闭包与C函数的比较实例闭包在迭代器中的运用闭包函数概念通过调用含有一个内部函数加上该外部函数持有的外部局部变量(upvalue)的外部函数(就是工厂)产生的一个实例函数闭包组成外部函数+外部函数创建的upvalue+内部函数(闭包函数)闭包是一个内部函数,它可以访问一个或者多个外部函数的外部局部变量。每次闭包的成功调用后这些外部局部变量都保存他们的值(状态)。当然如果要创建一个闭包必须要创建其外部局部变量。所以一个典型的闭包的结构包含两个函数:一个

2020-08-20 08:37:18 214

原创 Lua的GC回收机制

Lua的GC机制GC的原理及其算法设计GC的数据结构Lua垃圾回收详细过程步骤源码详解1.新建对象阶段2.触发条件3.GC函数状态机4.标记阶段5.清除阶段GC的原理及其算法设计不同的语言,对GC算法的设计不同,常见的GC算法是引用计数和Mark-Sweep算法, c#采用的是Mark-sweep && compact算法, Lua采用的是Mark-sweep算法,分开说一下:引用计数算法:在一个对象被引用的情况下,将其引用计数加1,反之则减1,如果计数值为0,则在GC的时候回收,这个

2020-08-19 17:09:36 512

原创 Lua表的底层实现

Lua表的底层实现Table结构Table特点Table的数据结构Table的重要操作1.创建table2.插入键值**table空间的动态扩展****键的创建规则**键值的赋值for循环的分析for循环的入栈操作键值的查找Table结构Table特点容器功能:与其他语言相似,lua也内置了容器功能,也就是table。而与其他语言不同的是,lua内置容器只有table。正因为如此,为了适配不同的应用需求,table的内部结构也比较考究,分为了数组和哈希表两个部分,根据不同需求来决定使用哪个部分。面向

2020-08-19 16:31:50 1707

原创 深度广度优先算法、A*算法

深度广度优先算法、A*算法深度优先算法(DFS)实现步骤实现代码广度优先算法(BFS)实现步骤实现代码A*算法Dijkstra算法A*算法介绍实现流程实现过程实现代码深度优先算法(DFS)深度优先搜索属于图算法的一种,是一个针对图和树的遍历算法,英文缩写为DFS即Depth First Search。深度优先搜索是图论中的经典算法,利用深度优先搜索算法可以产生目标图的相应拓扑排序表,利用拓扑排序表可以方便的解决很多相关的图论问题,如最大路径问题等等。一般用堆数据结构来辅助实现DFS算法。其过程简要来说是

2020-08-19 15:25:11 5305 1

原创 归并/基数/堆/希尔排序

基数排序基数排序介绍基数排序(Radix Sort)是桶排序的扩展,它的基本思想是:将整数按位数切割成不同的数字,然后按每个位数分别比较。具体做法是:将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后, 数列就变成一个有序序列。基数排序思想1.求出数组中最大的元素。2.求出最大元素是几位数。设为i位。3.对所有的数进行i轮排序。首先排个位,然后在十位,然后百位…4.每一轮的排位都需要分桶,桶是有顺序的,然

2020-08-19 11:38:49 126

原创 树的概念以及AVL树、红黑树

简述红黑树、AVL树树定义名词解释二叉树普通树转二叉树二叉树的遍历特殊的树AVL树定义概述红黑树树定义1.有且仅有一个根结点;2.从一个结点到另一个结点只有一条通路;名词解释1.孩子结点(子结点)/双亲结点(父结点)/兄弟结点(具有同一双亲结点);2.结点的度:子结点的数量;3.叶子结点:度为0的结点;二叉树每一个结点的度不超过2;1.二叉树的深度:高度,树的最大层次;2.二叉树的第k层最多具有2^(k-1)结点;3.拥有k层的树,最多拥有2^k - 1个结点;4.满二叉树:拥有

2020-08-19 09:27:58 161

原创 简述顺序表、链表、栈和队列以及队列实现栈、栈实现队列

简述顺序表、链表、栈和队列以及队列实现栈、栈实现队列顺序表Vector原理使用方法优点和缺点链表List原理使用方法优点和缺点栈Stack定义和特点使用方法队列定义和特点使用方法队列实现栈原理实现过程代码实现栈实现队列原理实现过程代码实现顺序表Vector原理顺序表存储是将数据元素放到一块连续的内存存储空间,相邻数据元素的存放地址也相邻(逻辑与物理统一)。使用方法添加:insert / push_back删除:erase / pop_back / clear访问:at / back / beg

2020-08-12 10:10:14 1405

原创 冒泡、快速、选择、插入排序以及时间复杂度、空间复杂度的解析

四大排序的时间复杂度和空间复杂度时间复杂度时间复杂度的表示方法时间复杂度的分析和计算方法常见的几种时间复杂度常见的时间复杂度排序空间复杂度时间复杂度(1)时间频率一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。并且一个算法花费的时间与算法中语句的执行次数成正比例,哪个算法中语句执行次数多,它花费时间就多。一个算法中的语句执行次数称为语句频度或时间频度。记为T(n)。(2

2020-08-11 17:17:40 2082

空空如也

空空如也

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

TA关注的人

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