`
jandroid
  • 浏览: 1899361 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

学习某些API的方法

 
阅读更多

<!-- [if !mso]> <style> v/:* {behavior:url(#default#VML);} o/:* {behavior:url(#default#VML);} w/:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} </style> <![endif]--><!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:PunctuationKerning/> <w:DrawingGridVerticalSpacing>7.8 pt</w:DrawingGridVerticalSpacing> <w:DisplayHorizontalDrawingGridEvery>0</w:DisplayHorizontalDrawingGridEvery> <w:DisplayVerticalDrawingGridEvery>2</w:DisplayVerticalDrawingGridEvery> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:Compatibility> <w:SpaceForUL/> <w:BalanceSingleByteDoubleByteWidth/> <w:DoNotLeaveBackslashAlone/> <w:ULTrailSpace/> <w:DoNotExpandShiftReturn/> <w:AdjustLineHeightInTable/> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:UseFELayout/> </w:Compatibility> <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> </w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" LatentStyleCount="156"> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:"Table Normal"; mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin:0cm; mso-para-margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:10.0pt; font-family:"Times New Roman"; mso-fareast-font-family:"Times New Roman"; mso-ansi-language:#0400; mso-fareast-language:#0400; mso-bidi-language:#0400;} </style> <![endif]--><!-- [if gte mso 9]><xml> <o:shapedefaults v:ext="edit" spidmax="1037"/> </xml><![endif]--><!-- [if gte mso 9]><xml> <o:shapelayout v:ext="edit"> <o:idmap v:ext="edit" data="1"/> </o:shapelayout></xml><![endif]-->

学习某些 API 的方法

这里的 API 可能是某个系统平台,开发包,开发平台,开发工具等等,因为任何系统和技术方法提供给开发者的打包方式都是一系列 API

无论你有在哪一层级开发,从硬件驱动到系统软件,从应用程序到网页服务器总是要依赖和使用某些 API(Application Programming Interface 应用程序接口 ) ,当然,通常要依赖和作用更底层或同层的 API 。因此,我们总是要学习和使用各种 API 。当学习的时候要注意总结一些方法,以提高学习的效率:

首先,要了解 API 的功能和作用。也就是说知道它是什么,能用来做什么。可能通过 Google 一些介绍或是某些入门级的教程,都可以达到了解的目的。这一级别可以称作 Level 1

然后,要学会使用它们,使用它们去构建你的程序,实现你想做的事。这可以通过学习一些教程和参考 API 的文档。这时可做一些质量要求不高的和不太复杂的小练习。这里是 Level 2

之后,就可以通过不断练习进尔掌握一些高级技巧,以达到熟练应用的目的。这可以通过学习某些高级教程,或者到论坛,网上寻找资料,或跟高手进行学习。这时可以做一些专业级别的或是比较复杂的,质量较高的练习。这里就到了 Level 3

再后,因为这时对它们的使用已经了如知掌了,就要去了解它们的内部实现,去看看它们的源码,总结它的优缺点,发现隐藏的陷阱和深处的秘密。这通常没有什么教程,只能去看它们的源码,去论坛和网上寻找资料,也要跟高人学习或切磋。这里是 Level 4

最后,就是定制,修改,扩展或优化它们的实现。这没办法,只能通过源码了。这里是最高境界 Level 5


基于上面的讨论,如果学习的 API 是一套开源的系统,那么可从头走到底,最终达到扩展和定制,这也是所有的开源软件的发展模式和魅力所在。但对于更多的非开源系统和平台,当能熟练使用后,最多也只能去猜测它们底层以实现,当然,也能去发现其深处的秘密并进行 Hack ,如现在人们对于 Windows 的研究也不仅仅止步于熟练使用它们。

当我们走完了这一过程,就可以去学习另一个系统平台,另一套 API 了。

另外,每一个阶段,都可要多多总结,多多实践,把所得进行梳理写成文档,这就是常言的经验。特别是,后面二三个阶段更是要把所得写下来,因为它们得来不易,非常宝贵。前面二个阶段所有人通过学习一些教程即可达到,但最后二个阶段要靠更多的练习和参悟,也靠几分天赋才能走过,所以一旦达到后面二个阶段,就更要把它们变成经验。

当然,我们的精为是有限的,不可能对每个系统平台的 API 都达到 Level 5 的境界,都需要走到最后一个 Level 。我们要有所选择,根据我们的需要,达到某个 Level ,够用即可。但是我们必须在某个或某几个系统平台上达到最高境界。正所谓有主有从,有我所选。

分享到:
评论

相关推荐

    JAVA语言学习方法

    JAVA语言学习方法 C语言是各大操作系统的基础,Unix、Linux、Windows其内核都清一色是C语言开发的,(某些地方是和汇编语言混合开发的),君不见Windows API都是C语言函数的接口?Unix/Linux绝大多数应用都是C语言开发...

    常用的深度学习模型训练、评估和预测相关代码,基于Tensorflow高阶API(Estimator)实现;尽量做到可读性和通用性

    1. 常用的深度学习模型训练、评估和预测相关代码,基于Tensorflow高阶API(Estimator)实现;尽量做到可读性和通用性 2. 关于其中某些模型的介绍,请参考文章《主流CTR预估模型的演化及对比》!《深度CTR预估模型中...

    百度离线地图API V2.1 内含示例Demo,亲测可用

    5)此API用户大家交流学习,本人没有能力提供太多的技术帮助 6)由于某些用途导致的商业纠纷,和本人无关 新增: 1)支持显示卫星混合地图,瓦片图放到 tiles_hybrid 目录下 2)支持支定义混合图,瓦片图放到 tiles...

    ActionScript 3.0 API文档及Flex开发详解电子书

    附录,比较 ActionScript 2.0 与 ActionScript 3.0 的某些关键语言和 API 的改动 有关错误和警告的附录(带注释)具有关使用 XML 支持补间动画和 FLVPlayback 字幕的参考信息的附录。 具有关对 Adobe AIR 使用数据库...

    ArcGIS API for Python学习笔记(一)环境配置

    因为学习需要,尝试使用Pyhton API,但在使用过程中踩雷不少,特立贴记录。 主要参考教程: ESRI官网环境配置教程 1. 前言 2. Python安装 3. Anaconda安装 4. ArcGIS API开发环境配置 5. 测试 1.前言 之前刚接触...

    C/C++ 网页版API中文参考文档

    由于发现chm文档在某些平台上打开全是空白页,所以上传一份C/C++网页版的API中文参考文档,文档更新日期是在2019年4月份,仅供学习开发使用,有需要的可以下载参考

    深度学习相关的模型训练、评估和预测相关代码

    常用的深度学习模型训练、评估和预测相关代码,基于Tensorflow高阶API(Estimator)实现;尽量做到可读性和通用性较好。 部分模型子目录下有较详细的文档介绍! 关于其中某些模型的介绍,请参考文章《主流CTR预估...

    WebAPI编程资料WebAPI 案例 代码 素材 笔记 作业资料.zip

    WebAPI编程资料WebAPI 案例 代码 素材 笔记 作业资料,学习资料,教程 Web APIs-day01 Web APIs-day02 Web APIs-day03 Web APIs-day04 Web APIs-day05 Web APIs-day06 Web APIs-day07 2-案例 3-素材 4-笔记 5-作业 ...

    Web API推荐,具有功能集合和“学以致用”的特点

    因此,我们提出了一种Web API推荐方法,该方法采用了功能集成和等级学习的方法。 根据混搭和Web API的可用数据,提取文本特征,最近邻居特征,API特定的特征,API的标记特征以估计回归模型中混搭需求与候选API之间...

    Linux系统设计-linux系统以及api学习

    许多知名的云计算服务提供商都采用Linux系统作为其基础架构,一些游戏平台和游戏开发工具采用Linux作为支持的操作系统,例如Steam平台上的某些游戏。Linux系统在科学计算、数据分析和机器学习等领域也有广泛应用。...

    使用TensorRT网络定义API实施流行的深度学习网络-Python开发

    TensorRTx旨在通过tensorrt网络定义API实现流行的深度学习网络。 众所周知,tensorrt内置了解析器,包括caffeparser,uffparser,onnxparser等。但是,当我们使用这些解析器时,经常会遇到一些“不受支持的操作或层...

    rest-api-design-guidelines:REST API设计准则

    而是,指南描述了API规范和相关实现必须遵循的属性,以便被认为符合某些标准。 为什么API设计很重要? API可能是公司最大的资产之一 客户大量投资:购买,写作,学习 停止使用API​​的成本可能令人望而却步 成功...

    Guava 16.0 API (CHM格式)

    下面我们就开启优雅Java编程学习之旅!  项目相关信息:  官方首页:http://code.google.com/p/guava-libraries  官方下载:http://code.google.com/p/guava-libraries/downloads/list  官方文档:...

    window32 API大全 win32编程

    通用对话框为用户提供了一个统一的用户界面,使用户在不同的应用程序中完成通用任务时的操作都相同,不必每次都学习不同的操作过程。 光标函数(Cursor) 光标是显示屏幕上的一个小图形,其所在的位置由指点设备...

    webApi-angularjs:绝对简化了服务器端的工作,并组织了webApi布局以进一步管理

    创建一个新文件,该文件将负责某些功能请求组以使用API​​。 例如:如果您有很多包含一些重复代码的类似请求,只需将它们包括在适当的类别中(“ api / food / manage / {id} / delete”,“ api / food / manage

    于API串口操作的源码

    查了好多关于API串口操作的源码 不知道什么原因 都无法使用 索性自己查了一天的资料写出来了 吐槽一下:某些人 你写出来了 还发出来了 结果是打乱的。。这就特么尴尬了,难道各位易友参考学习下你的源码 还得先给你...

    TensorFlow C#使用Demo

    TensorFlow 是谷歌的第二代机器学习系统,按照谷歌所说,在某些基准测试中,TensorFlow的表现比第一代的DistBelief快了2倍。 TensorFlow 内建深度学习的扩展支持,任何能够用计算流图形来表达的计算,都可以使用...

    erlang api 最新资源

    学习 Erlang一个非常重要的内容就是模式匹配 但是请不要混淆 这个匹配和正则表达式没有任何干系 "&gt;1 简单小巧 Erlang中只有 8种基本的数据类型: integer float atom reference fun port pid bitstring 同时提供 2...

    PortalDemo:SpediA API 演示门户

    这是一个 Web 应用程序,用于演示如何使用 SpediA 的 API 的某些功能。 该应用程序是使用 WebForms 在 .NET (C#) 中开发的,以促进对 SpediA 的 API 的学习和独特的理解。 运行应用程序的要求 SQLServer 2012 视觉...

    api:参考HAL API实施

    项目目标我借此机会学习如何将api开发的许多核心概念应用到节点。 兼容Hypermedia / HATEOAS API 访问控制 有限的只读访问,没有身份验证上下文 特权提升以执行高级操作OAuth或进行授权 消费者驱动的合同 契约提供者...

Global site tag (gtag.js) - Google Analytics