本文对 ChatGPT 解答编程问题的情况进行了测试。测试了不同难度的问题,并对 ChatGPT 的回答结果进行了鉴别。测试结果表明,ChatGPT 在解答简单的编程问题时表现较为出色,但在解决复杂的问题时则不太理想。因此,也总结出了如何更好地向 ChatGPT 提问的方法,但是并不建议没有编程经验的人直接使用 ChatGPT 来解决编程问题。本文最后含彩蛋 ......
345
0
0
2023-03-20
大多数开发者可能都用过 Postman,根据其官网的介绍:Postman 是一个用于构建和使用 API 的 API 平台,简化了 API 生命周期的每个步骤,提供更便捷的团队协作,因此可以更快地创建更好的 API。这里的 API,除了我们常用的 HTTP API 之外,还包括 Websocket(BETA),gRPC。本文中,我们将以最常用的 REST AP ......
442
0
0
2023-03-19
Lua是一种嵌入式语言,这就意味着Lua并不是一个独立运行的应用,而是一个库,它可以链接到其他应用程序,将Lua的功能融入这些应用。因为能够当作库来扩展某个应用程序,所以Lua是一种嵌入式语言。同时,使用了Lua语言的程序也可以在Lua环境中注册新的函数,比如用C语言实现函数,从而增加一些无法直接用Lua语言编写的功能。因此Lua也是一种可扩展的语言。 上述 ......
429
0
0
2023-03-10
Lua语言不支持真正的多线程,即不支持共享内存的抢占式线程。原因有两个,其一是IOS C没有提供这样的功能,因此也没有可移植的方法能在Lua中实现这种机制:其二,也是更重要的原因,在于我们认为在Lua中引入多线程不是一个好主意。 多线程一般用于底层编程。像信号量和监视器这样的同步机制一般都是操作系统上下文提供的,而非应用程序提供。要查找和纠正多线程相关的bu ......
827
0
0
2023-03-10
Lua中的“数组”就是特殊方式使用的表。像lua-settable和lua-gettable这种用来操作表的通用函数,也可用于操作数组。不过,CAPI为使用整数索引的表的访问和封信提供了专门的函数。void lua_geti (lua_State *L, int index, int key); void lua_seti (lua_State *L, i ......
434
0
0
2023-03-10
函数dir会遍历目录并返回一张包含指定目录下所有内容的表。这里对dir新的实现会返回一个迭代器,每次调用这个迭代器时它都会返回一个新元素。通过这种实现,我们就能使用如下的循环来遍历目录:for fname in dir.open(".")do print(fname) end 要在C语言中遍历一个目录,我们需要用到DIR结构体。DIR的实例由open ......
488
0
0
2023-03-10
协程可以颠倒调用者和被调用者的关系,而且这种灵活性解决了软件架构中被称为“谁是老大”或者”谁拥有主循环“的问题。这正是对诸如事件驱动编程、通过构造器构建迭代器和协作式多线程等几个看上去并不相关的问题的泛化,而协程以简单和高效的方式解决了这些问题。从多线程的角度看,协程与线程类似:协程是一系列的可执行语句,拥有自己的栈、局部变量和指令指针,同时协程又与其他协程 ......
496
0
0
2023-03-03
在Lua语言中,函数是对语句和表达式进行抽象的主要方式。函数既可以用于完成某种特定任务,也可以只是进行一些计算然后返回计算结果。在前一种情况下,我们将一句函数调用视为一条语句;而在后一种情况下,我们则将函数调用视为表达式:(adsbygoogle = window.adsbygoogle || []).push({});print(8*9 , 9/8) a ......
564
0
0
2023-03-03
Lua语言中的表并不是一种数据结构,它们是其他数据结构的基础。我们可以用Lua语言中的表来实现其他语言提供的数据结构,如数组、记录、列表、队列、集合等。而且,用Lua语言中的表实现这些数据结构还很高效。(adsbygoogle = window.adsbygoogle || []).push({});在像C和Pascal这样更加传统的语言中,通常使用数组和列 ......
510
0
0
2023-03-03
反射是程序用来检查和修改其自身某些部分的能力。像Lua语言这样的动态语言支持几种反射机制:环境允许运行时观察全局变量;诸如type和pairs这样的函数允许运行时检查和遍历未知数据结构;诸如load和require这样的函数允许程序在自身中追加代码或更新代码。不过,还有很多方面仍然是缺失的:程序不能检查局部变量,开发人员不能跟踪代码的执行,函数也不知道是被谁 ......
554
0
0
2023-02-12
Lua语言使用自动内存管理。程序可以创建对象,但却没有函数来删除对象。Lua语言通过垃圾收集自动删除称为垃圾的对象,从而将程序员从内存管理的绝大部分负担中解放出来。(adsbygoogle = window.adsbygoogle || []).push({});更重要的是,将程序员从与内存管理相关的大多数Bug中解放出来。例如无效指针和内存泄露等问题。 在 ......
478
0
0
2023-02-12
从很多意义上讲,Lua语言中的一张表就是一个对象。首先,表与对象一样,可以拥有状态。其次,表与对象一样,拥有一个与其无关的标识(self);特别地,两个具有相同值的对象(表)是两个不同的对象,而一个对象可以具有多个不同的值;最后,表与对象一样,具有创建者和被创建位置无关的声明周期。 对象有其自己的操作。表也可以有自己的操作,例如:Account = {bal ......
421
0
0
2023-02-12
表是Lua中最主要和强大的数据结果。使用表,Lua语言可以以一种简单、统一且高效的方式表示数组、集合、记录和其他很多数据结果。Lua语言也使用表来表示包和其他对象。当调用函数math.sin时,我们可能认为是“调用了math库中函数sin”;而对于Lua语言来说,其实际含义是“以字符串sin”为键检索表math。Lua语言中的表本质上是一种辅助数组。这种数组 ......
430
0
0
2023-02-12
目录引言1. 对象1.1 上层代码中查找1.1.1 查找对象调用方法1.1.2 设置符号断点1.2 swift_allocObject1.3 swift_showAlloc1.4 查看HeapObject结构体1.5 对象内存大小计算1.6 总结2. 类2.1 查找HeapMetadata2.2. TargetHeapMetaData2.3. TargetM ......
358
0
0
2023-01-31
在计算机中,所有的数据在存储和运算时都要使用二进制数表示(因为计算机用高电平和低电平分别表示1和0),例如,像a、b、c、d这样的52个字母(包括大写)以及0、1等数字还有一些常用的符号(例如*、#、@等)在计算机中存储时也要使用二进制数来表示,而具体用哪些二进制数字表示哪个符号,当然每个人都可以约定自己的一套(这就叫编码),而大家如果要想互相通信而不造成混 ......
396
0
0
2023-01-27