计算机程序中的辅助库是啥?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机程序中的辅助库是啥?相关的知识,希望对你有一定的参考价值。

计算机程序中的辅助库是什么?

1.辅助库提供了一些便捷函数,方便在 C 中为 Lu a 编程。 基础 API 提供了 C 和 L ua 交互用的主要函数, 而辅助库则为一些常见的任务提供了高阶函数。
所有辅助库中的函数和类型都定义在头文件 lauxlib.h 中, 它们均带有前缀 luaL_。
辅助库中的所有函数都基于基础 API 实现。 故而它们并没有提供任何基础 API 实现不了的功能。 虽然如此,使用辅助库可以让你的代码更为健壮。
2.一些辅助库函数会在内部使用一些额外的栈空间。 当辅助库使用的栈空间少于五个时, 它们不去检查栈大小;而是简单的假设栈够用。
一些辅助库中的函数用于检查 C 函数的参数。 因为错误信息格式化为指代参数 (例如,"bad argument #1"), 你就不要把这些函数用于参数之外的值了。
如果检查无法通过, luaL_check* 这些函数一定会抛出错误。
3.设置给定活动记录中的局部变量的值。 参数 ar 与 n 和 lu a_getlocal 中的一样 ()。 lua_setlocal 把栈顶的值赋给变量然后返回变量的名字。 它会将值从栈顶弹出。
当索引大于活动局部变量的数量时,返回 NULL (什么也不弹出)。
lu a_setupvalue
const char *l ua_setupvalue (lua_State *L, int funcindex, int n);
4.设置闭包上值的值。 它把栈顶的值弹出并赋于上值并返回上值的名字。 参数 funcindex 与 n 和 lu a_getupvalue 中的一样 (参见 lu a_getupvalue )。
当索引大于上值的数量时,返回 NULL (什么也不弹出)。
lu a_upvalueid
void *lu a_upvalueid (lua_State *L, int funcindex, int n);
5.返回索引 funcindex 处的闭包中 编号为 n 的上值的一个唯一标识符。 参数 funcindex 与 n 和 lu a _getupvalue 中的一样 (参见 l ua_getupvalue )。 (但 n 不可以大于上值的数量)。
6.这些唯一标识符可用于检测不同的闭包是否共享了相同的上值。 共享同一个上值的 Lu a 闭包(即它们指的同一个外部局部变量) 会针对这个上值返回相同的标识。
lu a_upvaluejoin
void lu a_upvaluejoin (lua_State *L, int funcindex1, int n1, int funcindex2, int n2);
让索引 funcindex1 处的 L ua 闭包的第 n1 个上值 引用索引 funcindex2 处的 Lua 闭包的第 n2 个上值。

参考技术A 系统软件有两个主要特点:一是通用性,即无论哪个应用领域的计算机用户都要用到它们;二是基础性,即应用软件要在系统软件支持下编写和运行。系统软件通常包括操作系统、语言处理系统、数据库管理系统、系统实用程序等。

1. 操作系统
操作系统(Operating System,OS)是对计算机的全部软硬件资源进行控制和管理的大型软件系统,是直接运行在裸机上的最基本的系统软件,其他软件必须在操作系统的支持下才能运行,它是软件系统的核心。操作系统主要包括进程和处理器管理、作业管理、存储管理、设备管理和文件管理五大功能,其作用是管理计算机的全部硬件资源和软件资源,合理组织计算机工作流程,为用户提供高效、方便的服务界面。常见的单机操作系统有DOS、Windows 95/98等,网络操作系统有UNIX、NetWare、Windows NT/2000/XP等。

2. 数据库管理系统
数据处理在计算机应用中占很大比例,对于大量的数据如何存储、利用和管理,如何使多个用户共享同一数据资源,是数据处理中必须解决的问题,为此20世纪60年代末开发出了数据库系统,使数据处理成为计算机应用的一个重要领域。数据库系统主要由数据库(Date Base,DB)和数据库管理系统(Data Base Management System,DBMS)组成。

数据库是按一定方式组织起来的相关数据的集合。它与信息管理系统是密切相关的,是建立信息管理系统的主要软件工具。数据库已成为计算机应用的一个重要领域。目前,数据库主要用于人事管理、财务管理、档案管理、图书资料管理和仓库管理等方面的数据管理。数据管理包括数据的组织编目、定位、存储、搜索、查询、修改、排序、分类等内容。数据库技术就是针对这些数据处理而发展起来的。

数据库管理系统是对数据库进行有效管理和操作的系统,是用户与数据库之间的接口,它提供了用户管理数据库的一套命令,包括数据库的建立、修改、检索、统计和排序等功能。

具有联系的数据结构形式称为数据模型。一般数据库管理系统是按不同的数据模型把数据组织到数据库的,常用的数据模型可分为层次型、网络型和关系型3种。其中关系型数据库管理系统应用广泛,常见的有FoxBASE、FoxPro、Oracle、Sybase和Informix等。

3. 系统实用程序
系统实用程序是一些工具性的服务程序,便于用户对计算机的使用和维护。主要的实用程序有语言处理程序、编辑程序、连接装配程序、打印管理程序、测试程序和诊断程序等。
参考技术B OpenGL规范描述了绘制2D和3D图形的抽象API。尽管这些API可以完全通过软件实现,但它是为大部分或者全部使用硬件加速而设计的。

  OpenGL的程序编程接口(API)定义了若干个可被客户端程序调用的函数(例如:WINGDIAPI void APIENTRY glBegin(GLenum mode);),以及一些具名整型常量(例如,常量GL_LINES对应的十六进制数为0x0001)。虽然这些函数的定义表面上类似于C编程语言,但它们是语言独立的。即OpenGL可以与很多编程语言进行绑定,例如:C语言绑定的WGL、GLX和CGL;javascript绑定的WebGL(基于OpenGL ES 2.0在Web浏览器中的进行3D渲染的API)等。

WebGL

图1-2 WebGL logo
  OpenGL也是一个不断进化的API。新版的OpenGL规范会定期由Khronos Group发布,新版本通过扩展API来支持各种新功能。每个版本的细节由Khronos Group的成员一致决定,包括一些GPU厂商、显卡厂商、操作系统设计人员以及类似Mozilla和谷歌的一般性技术公司。

在android开发中,不能导入开源的库是啥原因

参考技术A 前言
--project //项目目录
|
build.gradle //项目的gradle配置文件
|
settings.gradle //gradle设置,会保存所有的module
|
app //module 目录
|__build.gradle module的配置
|
module2 //module2目录
|__build.gradle module的配置

  同eclipse中的项目一样,gradle/android studio 构建也可以有module,将moudle放到项目目录下面,然后在settings.gradle中增加该module,最简单的方法是用文件夹名。比如我们上面的结构,build.gradle文件应该如下:
include ':app', ':module2'

  更多关于gralde的知识可以看我以前的文章:
  使用gradle构建android项目(续) 使用Gradle构建Android项目
  导入Jar文件
  这种可能很常见,可以下载到别人搞好的jar包,这样可以直接在自己的主module下创建libs文件夹(我这里这样,只是为了兼容eclipse方式),然后把jar文件放进去,然后在module的build.gradle文件中的dependecies添加如下代码:
compile files('libs/name.jar')

  当libs文件夹下面有多个文件时,可以用一句代码包含这些包:
compile fileTree(dir: 'libs', include: ['*.jar'])

  当有文件不需要被包含时,可以这样:
compile fileTree(dir: 'libs', exclude: ['android-support*.jar'], include: ['*.jar'])

  从上面的代码中可以看到我们可以使用通配符, +表示一个字符,*表示0到多个字符。
  导入maven中的库
  如果开源库作者有将代码放到Maven库中,我们可以在gradle配置中直接引入,类似如下:
compile 'com.github.dmytrodanylyk.android-process-button:library:1.0.1'

  一般我们可以在开源库的github页面上面看有没有这样一个地址,或者到maven库中根据包名搜索有没有,我们前面这个引入的项目分三个部分 group:name:version,我们引入其他的包也有遵守这个规则。
  导入gradle构建的开源库
  这种情况的比较少用到,因为这张的开源库,作者一般都有放到maven库中,但是偶尔也会用到这里也提一下。
  首先下载文件,将我们需要的这个库的module文件夹拷贝到我们的项目的目录下面,然后在setting.gradle文件中增加文件夹名称, 然后在我们需要依赖这个模块的module中的build.gradle文件中加入如下代码:
compile project(':libmodule')

  这样就可以了。
  导入基于Eclipse构建的开源库
  基于Eclipse构建的项目,和基于Android Studio构建的项目的很大区别是目录结构不同。我们首先将module文件夹拷贝到我们的项目目录下面,然后在settings.gradle文件中增加这个module,然后在要使用的module中的build.gradle文件中引入依赖,这样看的话,似乎和引入基于gradle构建的没什么不同。但是,基于Eclipse构建的项目中,没有build.gradle文件,所以我们需要自己新建一个放到module下面,下面是一个模版:
apply plugin: 'android-library'

repositories
mavenCentral()


android
compileSdkVersion 19
buildToolsVersion "20.0.0"

defaultConfig
minSdkVersion 9
targetSdkVersion 19


sourceSets
main
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']




lintOptions
abortOnError false




dependencies
compile fileTree(dir: 'libs', include: ['*.jar'])


  当然,根据各自的sdk和buildtools版本等等,以及其他,配置会有变化,可以看我之前的文章。
  其他
  以上就是主要的集中导入场景,自己可以根据自己的实际情况然后改变配置等等。
  另外,我们导入的仓库可能不是maven中心仓库,或者可能是我们自己搭建的仓库,我们可以自定义仓库地址的,修改build.gradle文件中的repositories就可以了,例如:
buildscript
repositories
jcenter()
mavenCentral()
maven
url "https://oss.sonatype.org/content/repositories/snapshots"




  另外,project层的buildscript在module层也是会生效的,所以不用在每个module都配置。

以上是关于计算机程序中的辅助库是啥?的主要内容,如果未能解决你的问题,请参考以下文章

python数据分析方向的第三方库是啥

嵌入式 是啥

计算机术语中的debug是啥意思

计算机术语中的debug是啥意思

计算机中的cmd是啥意思,全称是啥

Unity3d 和其他看起来不像传统应用程序的软件使用的 GUI 库是啥?