关于API

关于API,第1张

API(Application Programming Interface,应用程序编程接口)是一套用来控制Windows的各个部件(从桌面的外观到为一个新进程分配的内存)的外观和行为的一套预先定义的Windows函数用户的每个动作都会引发一个或几个函数的运行以告诉Windows发生了什么

这在某种程度上很象Windows的天然代码其他的语言只是提供一种能自动而且更容易的访问API的方法VB在这方面作了很多工作它完全隐藏了API并且提供了在Windows环境下编程的一种完全不同的方法

这也就是说,你用VB写出的每行代码都会被VB转换为API函数传递给Windows例如,Form1PrintVB 将会以一定的参数(你的代码中提供的,或是默认参数)调用TextOut 这个API函数

同样,当你点击窗体上的一个按钮时,Windows会发送一个消息给窗体(这对于你来说是隐藏的),VB获取这个调用并经过分析后生成一个特定事件(Button_Click)

API函数包含在Windows系统目录下的动态连接库文件中(如User32dll,GDI32dll,Shell32dll)

API 声明

正如在"什么是API"中所说,API函数包含在位于系统目录下的DLL文件中你可以自己输入API函数的声明,但VB提供了一种更简单的方法,即使用API Text Viewer

要想在你的工程中声明API函数,只需运行API Text Viewer,打开Win32apitxt(或MDB如果你已经把它转换成了数据库的话,这样可以加快速度注:微软的这个文件有很多的不足,你可以试一下本站提供下载的api32txt),选择"声明",找到所需函数,点击"添加(Add)"并"复制(Copy)",然后粘贴(Paste)到你的工程里使用预定义的常量和类型也是同样的方法

你将会遇到一些问题:

假设你想在你的窗体模块中声明一个函数粘贴然后运行,VB会告诉你:编译错误Declare 语句不允许作为类或对象模块中的 Public 成员看起来很糟糕,其实你需要做的只是在声明前面添加一个Private(如 Private Declare Function)--不要忘了,可是这将使该函数只在该窗体模块可用

在有些情况下,你会得到"不明确的名称"这样的提示,这是因为函数常量或其他的什么东西共用了一个名称由于绝大多数的函数(也可能是全部,我没有验证过)都进行了别名化,亦即意味着你可以通过Alias子句使用其它的而不是他们原有的名称,你只需简单地改变一下函数名称而它仍然可以正常运行

你可以通过查看VB的Declare语句帮助主题来获取有关Alias的详细说明

消息(Messages)

好了,现在你已经知道什么是API函数了,但你也一定听说过消息(如果你还没有,你很快就会)并且想知道它是什么消息是Windows告诉你的程序发生了哪些事件或要求执行特定 *** 作的基本方法例如,当用户点击一个按钮,移动鼠标,或是向文本框中键入文字时,一条消息就会被发送给你的窗体

所有发送的消息都有四个参数--一个窗口句柄(hwnd),一个消息编号(msg)还有两个32位长度(Long)的参数

hwnd即要接受消息的一个窗口的句柄,msg即消息的标识符(编号)该标识符是指引发消息的动作类型(如移动鼠标),另外两个参数是该消息的附加参数(例如当鼠标移动时光标的当前位置)

但是,当消息发送给你时你为什么看不到呢--就象有人在偷你的信一样请先别恼火,让我告诉你

小偷其实是Visual Basic但它并没有偷走你的信,而是在阅读了之后挑出重要的以一种好的方式告诉你这种方式就是你代码中的事件(Event)

这样,当用户在你的窗体上移动鼠标时,Windows会发送一条WM_MOUSEMOVE消息给你的窗口,VB得到这条消息以及它的参数并运行你在事件MouseMove中的代码,同时VB会把这条消息的第二个32位数(它包含了x,y坐标,单位为像素(Pixel),每个位16位)转换为两个单精度数,单位为缇(Twip)

现在,如果你需要光标坐标的像素表示,然而VB已经把它转换成了缇,因此你需要重新把它转换为以像素为单位在这里,Windows给了你所需要的,但VB"好意地"进行了转换而使你不得不重新转换你可能会问--我难道不能自己接收消息吗答案是肯定的,你可以使用一种叫做子类处理(Subclass)的方法但你除非必须否则最好不要使用,因为这与VB的安全程序设计有一点点的违背(注:子类处理确实有很大的风险,但如果使用得当,是很有用处的不过有一点一定要注意,即千万不要使用VB的断点调试功能,这可能会导致VB崩溃!)

需要补充说明的是:你可以发送消息给你自己的窗口或其他的窗口,只需调用SendMessage或PostMessage(SendMessage会使接受到消息的窗口立刻处理消息,而PostMessage是把消息发送到一个称为消息队列的队列中去,等候处理(它将会在该消息处理完后返回,例如有些延迟))你必须制定接受消息的窗口的句柄,欲发送消息的编号(所有的消息的编号均为常量,你可以通过API Text Viewer查得)以及两个32位的参数。

API:应用程序接口(API:Application Program Interface)

应用程序接口(API:application programming interface)是一组定义、程序及协议的集合,通过 API 接口实现计算机软件之间的相互通信。API 的一个主要功能是提供通用功能集。程序员通过使用 API 函数开发应用程序,从而可以避免编写无用程序,以减轻编程任务。

API 同时也是一种中间件,为各种不同平台提供数据共享。根据单个或分布式平台上不同软件应用程序间的数据共享性能,可以将 API 分为四种类型:

远程过程调用(RPC):通过作用在共享数据缓存器上的过程(或任务)实现程序间的通信。

标准查询语言(SQL):是标准的访问数据的查询语言,通过通用数据库实现应用程序间的数据共享。

文件传输:文件传输通过发送格式化文件实现应用程序间数据共享。

信息交付:指松耦合或紧耦合应用程序间的小型格式化信息,通过程序间的直接通信实现数据共享。

当前应用于 API 的标准包括 ANSI 标准 SQL API。另外还有一些应用于其它类型的标准尚在制定之中。API 可以应用于所有计算机平台和 *** 作系统。这些 API 以不同的格式连接数据(如共享数据缓存器、数据库结构、文件框架)。每种数据格式要求以不同的数据命令和参数实现正确的数据通信,但同时也会产生不同类型的错误。因此,除了具备执行数据共享任务所需的知识以外,这些类型的 API 还必须解决很多网络参数问题和可能的差错条件,即每个应用程序都必须清楚自身是否有强大的性能支持程序间通信。相反由于这种 API 只处理一种信息格式,所以该情形下的信息交付 API 只提供较小的命令、网络参数以及差错条件子集。正因为如此,交付 API 方式大大降低了系统复杂性,所以当应用程序需要通过多个平台实现数据共享时,采用信息交付 API 类型是比较理想的选择。

API 与图形用户接口(GUI)或命令接口有着鲜明的差别:API 接口属于一种 *** 作系统或程序接口,而后两者都属于直接用户接口。

有时公司会将 API 作为其公共开放系统。也就是说,公司制定自己的系统接口标准,当需要执行系统整合、自定义和程序应用等 *** 作时,公司所有成员都可以通过该接口标准调用源代码,该接口标准被称之为开放式 API。

另一种含义:

1:美国石油协会(API:American Petrolenm Institute):

API610/682是机械密封的设计和选用标准;

API676 转子泵的标准;

2:API还有一种含意:空气污染指数。英文 air pollution index 的缩写

空气污染指数(AIR POLLUTION INDEX,简称API)是一种反映和评价空气质量的方法,就是将常规监测的几种空气污染物的浓度简化成为单一的概念性数值形式、并分级表征空气质量状况与空气污染的程度,其结果简明直观,使用方便,适用于表示城市的短期空气质量状况和变化趋势。

空气污染指数的确定原则:空气质量的好坏取决于各种污染物中危害最大的污染物的污染程度。空气污染指数是根据环境空气质量标准和各项污染物对人体健康和生态环境的影响来确定污染指数的分级及相应的污染物浓度限值。目前我国所用的空气指数的分级标准是:(1)空气污染指数(API)50点对应的污染物浓度为国家空气质量日均值一级标准;(2)API100点对应的污染物浓度为国家空气质量日均值二级标准;(3)API200点对应的污染物浓度为国家空气质量日均值三级标准;(4)API更高值段的分级对应于各种污染物对人体健康产生不同影响时的浓度限值,API500点对应于对人体产生严重危害时各项污染物的浓度。

根据我国空气污染的特点和污染防治工作的重点,目前计入空气污染指数的污染物项目暂定为:二氧化硫、氮氧化物和总悬浮颗粒物。随着环境保护工作的深入和监测技术水平的提高,再调整增加其它污染项目,以便更为客观地反应污染状况。

空气污染指数的计算与报告:

污染指数与各项污染物浓度的关系是分段线性函数(见表1和图1),用内插法计算各污染物的分指数In(具体计算方法请参见《环境监测简报》1997年第9期),取各项污染物分指数中最大者代表该区域或城市的污染指数。即:API=max(I1,I2···Ii,···In)

该指数所对应的污染物即为该区域或城市的首要污染物。当污染指数API值小于50时,不报告首要污染物。

3:在JAVA中,API除了有应用“程序程序接口”的意思外,还特指JAVA API的说明文档,也称为JAVA帮助文档。

4API Q1质量体系认证是您向用户证明您有一套API认可的完善的质量管理体系, 有些石油、天然气设备制造商所生产的产品目前没有所适用API会标产品的规范对应, 但他们又想向用户证明他们的产品或服务符合API标准的要求,所以API Q1质量体系认证可以帮您办到。API Q1质量体系认证特别适用于那些所生产的产品没有相应的API会标产品规范所对应的石油、天然气设备生产厂家, 或向石油、天然气行业提供服务的公司。

5原料药(Active Pharmaceutical Ingredients): 指的是药物活性成分,也就是我们通常所说的原料药。

另一种含义:

使用API(应用编程接口,英文全称:Application Programming Interface)构建业务是实现开放式业务结构的关键技术,也是下一代网络区别于传统电信网的主要特点之一。目前,关于下一代网络的开放式业务API标准主要包括:由Parlay组织、3GPP和ETSI SPAN共同制定的Parlay/OSA API以及由SUN公司在Java平台上推出的JAIN API。

Parlay API是由Parlay组织定义的便于业务开发者快速创建电信业务的应用编程接口,自1999年成立以来,Parlay组织已制定了4个版本的Parlay协议。开放式业务结构(OSA)是3GPP制定的多媒体业务框架,选定Parlay作为其开放式业务接口API。两者结合的Parlay/OSA API独立于具体的实现技术,可以应用于固定网络、移动网络以及下一代网络的业务提供;独立于具体的实现语言,可以用C、C++、Java等各种语言实现;定义了完善的认证和授权机制,以支持对第3方应用的支持。

Parlay/OSA API位于由网络运营商管理的Parlay网关和由业务提供商管理的应用服务器之间。Parlay网关对应用服务器屏蔽了下层网络的技术实现细节,使得应用服务器可以使用统一的方式对网络能力进行访问。

Parlay/OSA API包括两类接口:业务接口和框架接口。业务接口提供应用访问网络能力和信息的接口,框架接口提供业务接口安全、管理所必需的支持能力。业务接口保证用户能够接入传统网络,如呼叫控制、呼叫管理、发送消息、用户交互等;框架接口提供的功能有:业务登记、业务预订、业务发现、认证、授权和综合管理。

JAIN API和Parlay/OSA API设计思想相近,功能上具有互补性。它采用专一的Java语言实现,并且定义了比较完备的访问各种网络的网络协议API。目前Parlay/JAIN联合工作组正在进行两者的融合工作。

API:医药活性物原料药

参考资料:

>

就是测试计算机是否是智能的!图灵(Turing)奖”是美国计算机协会(ACM,Association for Computer Machinery)干 1966年设立的,专门奖励那些对计算机科学研究与推动计算机技术发展有卓越贡献的杰出科学家。设立的初衷是因为计算机技术的飞速发展,尤其到20世纪60年代,其已成为一个独立的有影响的学科,信息产业亦逐步形成,但在这一产业中却一直没有一项类似“诺贝尔”、“普利策”等的奖项来促进该学科的进一步发展,为了弥补这一缺陷,于是“图灵”奖便应运而生,它被公认为计算机界的“诺贝尔”奖。

“图 灵”为 何 如 此 幸 运

不少人梦寐以求的国际计算机的最高奖项——图灵奖,为何它如此幸运,真是说来话长。

阿兰·图灵(Alan Turing),1912年6月23日出生于英国伦敦,他被认为成二十世纪最著名的数学家之一,谁也没有想到他的名字会和计算机产业挂钩。

20世纪的数学界正在热烈的讨论本世纪最伟大的科学发现之一 ——昆特哥德尔的不完全性定理,在那以前,数学家们总认为,一个数学问题虽然要找到答案也许会很困难,但理论上总有一个确定的答案,一个数学命题,要么是真的,要么是假的。而哥德尔的不完全定理指出:在一个稍微复杂一点的的数学公理系统中,总存在那样的命题,我们既不能证明它是真的,也不能证明它是假的。数学家们大吃一惊,发现以往大家认为绝对严密的数学中,原来有令人如此不安的不确定性。每个逻辑学家都在苦苦思索,试图为陷入了危机的数学找到一条出路,这些逻辑学家包括当时在剑桥的贝特朗罗素( Bertrand Russell ) 、阿尔弗雷德怀特海(Alfred Whitehead)、路德维格维特斯根坦 ( Ludwig Wittgenstein) 等著名的逻辑学家。这时的图灵正在剑桥求学,他也同样为此问题陷入了困境。

1936年,图灵作出了他一生最重要的科学贡献,他在其著名的论文《论可计算数在判定问题中的应用(On Computer numbers with an Application to the Entscheidungs -problem)》一文中,以布尔代数[i]为基础,将逻辑中的任意命题(即可用数学符号)用一种通用的机器来表示和完成,并能按照一定的规则推导出结论。这篇论文被誉为现代计算机原理开山之作,它描述了一种假想的可实现通用计算的机器,后人称之为“图灵机”。

这种假想的机器由一个控制器和一个两端无限长的工作带组成。工作带被划分成一个个大小相同的方格,方格内记载着给定字母表上的符号。控制器带有读写头并且能在工作带上按要求左右移动。随着控制器的移动,其上的读写头可读出方格上的符号,也能改写方格上的符号。这种机器能进行多种运算并可用于证明一些著名的定理。这是最早给出的通用计算机的模型。图灵还从理论上证明了这种假想机的可能性。尽管图灵机当时还只是一纸空文,但其思想奠定了整个现代计算机发展的理论基础。

1945年,图灵被调往英国国家物理研究所工作。他结合自己多年的理论研究和战时制造密码破译机的经验,起草了一份关于研制自动计算机器(ACE:Automatic Computer Engine )的报告,以期实现他曾提出的通用计算机的设计思想。通过长期研究和深入思考,图灵预言,总有一天计算机可通过编程获得能与人类竞争的智能。1950年10月,图灵发表了题为《 机器能思考吗?》的论文,在计算机科学界引起巨大震撼,为人工智能学的创立奠定了基础。同年,图灵花费4万英镑,用了约800个电子管的ACE样机研制成功,它的存储容量比爱尼亚克[ii]大了许多。在公开演示会上,被认为是当时世界上速度最快、功能最强的计算机之一。图灵还设计了著名的“模仿游戏试验”,后人称之为“图灵测试”。该实验把被提问的一个人和一台计算机分别隔离在两间屋子,让提问者用人和计算机都能接受的方式来进行问答测试。如果提问者分不清回答者是人还是机器,那就证明计算机已具备人的智能(1993年美国波士顿计算机博物馆举行的著名的“图灵测试” [iii]充分验证了图灵的预言)。

这让我想起前几年IBM公司研制的计算机“深蓝”与国际象棋世界冠军卡斯帕罗夫进行的那场人机大战,最终以“深蓝”战胜卡斯帕罗夫而宣告结束,让我们不得不佩服图灵的天才预言。

现代计算机之父冯·诺依曼[iv]生前曾多次谦虚地说:如果不考虑巴贝奇[v]等人早先提出的有关思想,现代计算机的概念当属于阿兰·图灵。冯·诺依曼能把“计算机之父”的桂冠戴在比自己小10岁的图灵头上,足见图灵对计算机科学影响之巨大。

毒 液 浸 透 苹 果,如 睡 之 死 渗 入 ……

身为一名数学家, 图灵模型研制计算机的梦想在第二次世界大战的爆发中粉碎。当时,德国法西斯正对英伦三岛狂轰滥炸,图灵的祖国危在旦夕,怀着一腔报国热情,图灵前往英国外交部承担“超级机密”研究工作,即主持对德军通讯密码的破译工作。图灵便和历史上著名的布莱奇利公园以及加密电子机械装置ENIGMA联系在了一起。

ENIGMA是德国发明家亚瑟谢尔比乌斯(Arthur Scherbius)发明的一种加密电子器,它被证明是有史以来最可靠的加密系统之一,二战期间它开始被德军大量用于铁路、企业当中。英国第40局(英国政府负责破译密码的间谍机构)开始恐慌,因为出现了大量他们无法破译的电文。在整整13年里,英国人和法国人都认为ENIGMA是不可破译的。针对这一情况,40局新设了它的机构——英国政府代码及加密学校(GC&CS ,Government Code and Cipher School),总部坐落在白金汉郡的布莱奇利公园。在布莱奇利公园有一大批为破译ENIGMA作出卓越贡献的人们,图灵无疑是他们当中最值得叙述的一个。图灵发明了绰号为“炸d” (Bombes)的解密机器,他被看成一位天才解密分析专家。战争结束,布莱奇利公园被关闭,“炸d”被拆毁,所有战时有关密码分析和破译的档案资料都被销毁,直到1967年波兰出版第一本关于波兰破译ENIGMA方面的书,以及1974年温特伯坦姆写的《超级机密The Ultra Secret》一书出版,人们才知道图灵在分析解密方面的贡献。

1938年迪斯尼公司著名的动画片《白雪公主和七个小矮人》上映,图灵也观看了这部影片,在后来的日子里,他的同事常常听见他哼**中巫婆王后泡制毒苹果的台词:“毒液 浸透苹果如睡之死渗入……”而图灵的一生正是在这首歌词中结束。

图灵在他生命的最后时光,没有机会看到自己被当作一个解密英雄来尊敬,相反,由于他同性恋的性倾向而倍受折磨。1952年因小偷入室行窃,图灵向警察报了案,但他却忘了向警察掩藏他和另一位男士同居的事实,同年他被警方逮捕,以“有伤风化罪”罪名遭到起诉,并被判为有罪。而这期间,他不得不忍受报纸媒体对他案件的公开全面报道。性倾向被公开,私生活曝光于大众,政府也取消了他情报部门的工作。他的脾气变的躁怒不安,性格阴沉郁悒。1954年6月8日,人们在图灵的寓所发现了他的尸体。他在自己的住处服用沾过氰化物的苹果而自杀。临死的前夜,也许图灵的耳边还回响着那首歌:“毒液浸透苹果如睡之死渗入……”

迄今为止,作为计算机界“诺贝尔奖”的图灵奖已走过了36个春秋。40多位图灵奖得主均对计算机科学与技术的发展创新做出了杰出贡献。他们在珍惜自己所获崇高荣誉的同时,也深切怀念阿兰·图灵这位在计算机创新史上永放光芒的先驱。

就是这样的测试!

正则表达式的话,建议你不要那样写吧,

MatchCollection matches=RegexMatches(sHtmlText,@"^mm_[0-9]{8}_[0-9]+_[0-9]+$");

这样就可以了,如果用using 得到matches实例更好,可以在调用完后马上放掉内存

除重复的话,看代码:

List<string> strs = new List<string>();

foreach (Match s in matches)

{

if (!strsContains(sValue))

{

strsAdd(sValue);

}

}

string[] sUrlList = strsToArray(); /////这个可以不要,可以直接用列表就可以了

当然了也可以用别的方法,上面是比较简单的,用冒泡比较法也可以,不过代码会很多,你可以自己搞一下别的方法

如果你觉得php语法没有问题了,

可以考虑多学习几门语言,

也可以参考一下框架的原理,(我参考thinkphp和codeigniter有写一个适合自己项目的框架)

推荐看一些关于“设计模式”的书,(我现在也在看这方面的书籍)。

语言只是基础,一个程序员应该掌握多种语言,但是,掌握了多种语言也只能做一个 code worker (代码工人)

再进一步就应该接触一些,设计模式,设计思想等深层次的东西,这些不仅能提高编程的能力,更是成为软件架构师必备技能了。

以上就是关于关于API全部的内容,包括:关于API、api是什么、图灵测试是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10214658.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存