lua元表 本文简译自一篇老外的博客,写得不错可惜我翻译的太烂,简译如下。(key–value常见翻译为“键值对”,我翻译为索引、值)在这篇教程里我会介绍Lua中一个重要的概念: metatable(元表),掌握元表可以让你更有效的使用Lua。 每一个tabel都可以附加元表, 元表是带有索引集合的表,它可以改变被附加表的行为。看下例:t = {} – 普通表 mt = {} – 元表...
c++内联函数 定义: 内联函数是c++为提高程序运行速度的一项改进。 为什么使用内联函数: 在执行常规函数调用指令时,程序会立即存储该指令的内存地址,并将函数参数复制到堆栈,调到标记函数起点的内存单元,执行函数代码,然后跳回地址被保存的指令处。像这样来回跳跃意味着会有一定的开销。如果有些函数本身很短,使用频率又高,那么这样的开销是不值得的。 内联函数的使用: 内联函数可以在一开始仅声明一次 内联函数...
C++引用 定义: c++新增的一种复合类型,是已定义变量的别名。例如:int & a = b; a是b的别名,二者完全等价,可以交替使用。 主要用途: 用作函数的参数。通过将引用变量作为函数参数,函数将使用原始的数据而非拷贝之后的,这样在对结构和类变量进行传递的时候,便不需要额外创建临时变量,增加开销。 创建引用: int & a =...
windows下配置ipfs 下载ipfs: 下载之后解压到自己的工作目录: 打开控制台进入到工作目录,执行ipfs init命令,结果如下 此时,在图中路径会生成一个.ipfs的文件夹 通过ipfs daemon 启动ipfs后台程序 到这一步,完成了节点启动工作,后续可以通过客户端处理查看文件等操作。 使用ipfs 将本地测试文件加入到ipfs网络中 另起cmd,进入到工作目
从概念到底层技术,一文看懂区块链架构设计 前言区块链作为一种架构设计的实现,与基础语言或平台等差别较大。区块链是加密货币背后的技术,是当下与VR虚拟现实等比肩的热门技术之一,本身不是新技术,类似Ajax,可以说它是一种技术架构,所以我们从架构设计的角度谈谈区块链的技术实现。无论你擅长什么编程语言,都能够参考这种设计去实现一款区块链产品。与此同时,梳理与之相关的知识图谱和体系,帮助大家系统的去学习研究。基本概念区块链的概念最
new分配内存的详细解释 用new 来在堆上分配内存时,使用的都是new operator,即平时使用最多的new。 new operator(C++中的new有三重含义, operator new,new operator, placement new)在申请内存的时候,首先会调用operator new 来分配内存,operator new在申请内存失败时,缺省行为是抛出异常,一旦抛出异常,而不对异常进行捕获处理,程序
c++字符串的输入 首先,对于cin我们需要知道,它是通过空白(空格、制表符、换行符)来确定结束位置的。所以当我们输入一串单词例如:jon snow的时候,只会读取第一个单词,后面的单词则放在输入队列中。{ char name[20]; char dessert[20]; cout cin >> name; cout cin >> dessert;
快速排序 void Qsort(int num[], int startIndex, int endIndex){ if (startIndex >= endIndex) { return; } int first = startIndex; int last = endIndex; int key = num[first]; while (first < last) { whi
c++ 共用体 int main(){ /* 一种数据结构,可以存储不同类型的数据结构,但只能同时存其中的一种。 * 所有数据类型共享一段内存,因此这段内存的大小由最大的成员长度决定。 * 成员默认是公有,有成员函数 * 主要用途就是节省内存 */ union { int num; char ch; void print() { cout << num << endl;
stack #ifndef _STACK_H_#define _STACK_H_#include using std::cout;using std::endl;templateclass stack{public: stack(int size = 10); virtual ~stack(); void Add(const T& data); T operator[](int i
Android旧版本NDK的下载 1. Android Studio 可以从http://www.androiddevtools.cn/ 或http://www.android-studio.org/下载2. NDK下载,以下载r10c为例,直接放到浏览器中下载或通过正式下载工具下载Windows 32 bithttp://dl.google.com/android/ndk/android-ndk-r10c-windo
Cocos2d-x 中加载骨骼动画资源 在讲骨骼动画之前我们先了解一下创建骨骼动画的编辑器Cocos Studiococos Studio是一套基于Cocos2d-x的免费游戏开发工具集,它能帮助开发者快速创建游戏资源,将大部分繁琐的游戏开发工作使用编辑器来快速制作,进一步帮助游戏开发者减短开发周期、提高开发效率。Cocos Studio本身不光只是针对骨骼动画的编辑而设计的,它还提供了UI、场景和数据等信息
lua 内存 lua内存泄露首先第一点,lua中的内存泄露和我们所说的c/c++中的内存泄露本质上是不一样的。lua中有垃圾回收机制(GC),所以理论上是不会有内存泄露的。当它进行GC的时候,会从根部开始扫描所有的对象,如果某个地方对这个对象还有引用,就不会把这个对象内存collect,这个对象就没有被GC。所以lua中的内存泄露是指那些:已经没有被使用了,但外部依然还有引用存在的对象。
lua 关于__index,__newindex的理解 table存在两种行为:查询和修改(赋值),我们可以通过元方法__index和__newindex来改变table的这两种行为。__index主要用于table的查询table[key] 的访问过程,首先检查table表中是否存在key的字段,如果有则返回,否则检查是否有__index的元方法,没有返回nil,有则查找元方法。__index元方法可以是不一定是一个函数,还可以是一个
lua中集合的操作 定义一个集合:local Set = {}local mt = {}function Set.new(t) local set = {} setmetatable(set, mt) for k,v in pairs(t) do set[v] = true end return setend设置集合的交集,并集方法function Set.union(a,b) lo
lua 链表,集合,字符串缓冲 链表简单实现:头结点变量:list插入操作:list = {next = list,value = v} 集合的实现:用集合的元素作为引用放入到table基本结构:local reserved = { ["white"] = true, ["red"] = true, ["function"] = true, }if reserved["white"] then
Lua 双向队列的实现 local Queue ={}function Queue:new() local t = {firstId = -1, lastId = 0} setmetatable(t, self) self.__index = self return tendfunction Queue:pushFirst(data) local newFirstId = self.first
Lua 栈的简单实现 local Stack = {}function Stack:new() local t = {} setmetatable(t, self) self.__index = self return tendfunction Stack:push(data) self[#self+1] = dataendfunction Stack:pop() local data =