- 博客(69)
- 收藏
- 关注
原创 算法的时间和空间复杂度
时间复杂度一、究竟什么是时间复杂度「时间复杂度是一个函数,它定性描述该算法的运行时间」。我们在软件开发中,时间复杂度就是用来方便开发者估算出程序运行的答题时间。那么该如何估计程序运行时间呢,通常会估算算法的操作单元数量来代表程序消耗的时间,这里默认CPU的每个单元运行消耗的时间都是相同的。假设算法的问题规模为n,那么操作单元数量便用函数f(n)来表示,随着数据规模n的增大,算法执行时间的增长率和f(n)的增长率相同,这称作为算法的渐近时间复杂度,简称时间复杂度,记为 O(f(n))。二、大O符号
2021-08-19 19:47:32
188
转载 Lua 协同程序coroutine(转载)
前言Lua协同程序: 开启另一个逻辑处理和c#一样,同一时间只能有一个协同程序被执行线程:同一时间,可以有多个线程执行进程:线程的一个载体,一个程序的运行独立为一个进程,进程和进程之间都有自己独立的储存单元、一个进程可以包含多个线程、多个线程之间共享存储单元。比如打开一个手机游戏,这个游戏就有一个进程,游戏内部有很多线程同时运行,线程都有一个共享单元来获取存储数据Lua中协同程序的所有函数都被放进一个叫coroutine的表(table)中Lua中协同程序的4种状态: 运行、挂起、死亡、正常一
2021-07-02 16:28:54
188
原创 Lua中保留X位小数的实现方案
在使用Lua进行开发的时候,经常会遇到保留n位小数的问题,这里以保留两位小数为例,记录一下需要注意的地方!在选择处理方案之前,首先要确认需求,搞清楚保留两位小数是指小数点后第三位四舍五入还是从小数点后第三位开始直接舍去!Case 1Desc小数点后第三位四舍五入Methodstring.format("%.2f", num)Demolocal num1, num2 = 0.1234, -1.5678print(string.format("%.2f", num1), string.form
2021-07-02 16:03:11
363
原创 Lua中使用点号与冒号的区别
Lua中使用点号(.)与冒号(:)的区别在于:在函数定义的时候使用:会默认接收self参数;在函数调用的时候使用:会默认传递调用者自己为参数;在函数定义和调用的时候使用.则需要显式接收或者传递self参数。local test = {} function test:funcA() print("I`m funcA")end function test.funcB(self) print("I`m funcB")end test:funcA()test.funcA
2021-07-02 15:58:34
830
原创 Lua错误处理
为什么需要错误处理机制在真实的系统中程序往往非常复杂,它们经常涉及到文件操作、数据库事务操作或网络服务调用等,这个时候错误处理就显得非常重要。不关注错误处理可能在处理诸如涉密或金融交易这些业务时造成重大的损失。无论什么时候,程序开发都要求小心地做好错误处理工作。在 Lua 中错误可以被分为两类:语法错误运行时错误语法错误语法错误是由于不正确的使用各种程序语法造成的,比如错误的使用操作符或表达式。下面即是一个语法错误的例子:a == 2 -- E:\lua-5.3.5_bin\lua
2021-07-02 15:32:00
708
原创 Lua OS库整理
Lua OS库整理os.clock()返回一个程序使用CPU时间的一个近似值local x = os.clock();print("---begin----",os.clock())local s = 0;for i = 1, 100000000 do s = s + i;endprint("---end----",os.clock())print(string.format("程序用时 : %.2f\n", os.clock() - x));os.date()返回一个
2021-07-02 11:36:32
1225
原创 Lua中string库以及应用
Lua中string库以及应用一、不需要模式匹配的函数1. string.byte() —— 字符转换为编码(ASCII码)原型:string.byte (s [, i [, j] ])函数返回字符s[i], s[i+1], ···, s[j]的内部数字编码(ASCII码),其中参数i的默认值是1,而参数j的默认值是ilocal str = "012abcd"print("\n常规1~4的编码(012a):")print(string.byte(str,1,4))-- 字符串处理库的所有
2021-06-30 11:21:36
1697
原创 Lua 基础知识、数据类型和基本语法
Lua 基础知识、数据类型和基本语法一、基础知识特性轻量级可拓展支持面向过程编程和函数式编程自动内存管理闭包和多线程应用场景游戏开发独立应用脚本Web 应用脚本扩展和数据库插件如:MySQL Proxy 和 MySQL WorkBench安全系统,如入侵检测系统为什么Lua可以进行热更新?Lua是使用C写的脚本语言,在运行时读入Lua编写的代码,在解释Lua时不是翻译为机器码,而是使用C代码进行解释,不用开辟可执行权限的内存空间,也不会有新代码执行,执行解释的是用C语言
2021-06-30 10:27:27
276
原创 Lua 实现 class类
Lua没有类这一说,本身是不能像C++那样直接实现继承,但我们可以用万能的table表来接近实现类的功能,实现面向对象类的实现由两种,一种是纯copy所有的域,还有一种是元表访问,只有修改时才会在当前类真的添加父类的键,而不是修改父类的,这里用的是元表访问一、Lua 实现 class 的基本方式众所周知,lua 可以通过元表来实现一些骚操作,目前主流的 class 实现也是通过元表来实现的。local t = {}local mt = { __index = { a = 1
2021-06-29 21:14:58
4999
原创 Lua 几种常用的数据结构实现
一、链表(linked list)function TestLinked() local list = nil print("生成链表Begin") for i = 10, 1, -1 do print("向链表的头部添加:",i) list = { next = list ,value = i} end print("生成链表End") print("打印链表:") local ret = "" l
2021-06-29 17:36:37
348
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人