学习某些API的方法
学习某些 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,够用即可。但是我们必须在某个或某几个系统平台上达到最高境界。正所谓有主有从,有我所选。
学习某些API的方法的更多相关文章
- canvas学习之API整理笔记(二)
前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- 学习FFmpeg API
ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...
- Java操作mongoDB2.6的常见API使用方法
对于mongoDB而言,学习方式和学习关系型数据库差不太多 開始都是学习怎样insert.find.update.remove,然后就是分页.排序.索引,再接着就是主从复制.副本集.分片等等 最后就是 ...
- 【转】学习FFmpeg API – 解码视频
ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...
- 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法 Siamese CNN Temporally Constrained Metrics T ...
- 学习linux/unix编程方法的建议(转)
假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...
- atitit.api设计 方法 指南 手册 v2 q929.docx
atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...
- Java学习-026-类名或方法名应用之二 -- 统计分析基础
前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...
随机推荐
- C/C++ XMPP/Jabber 客户端类库对比/点评 (转)
原文转自 http://blog.csdn.net/educast/article/details/31359835 1.gloox Ans. 老牌库,推荐 gloox是一个稳定功能完整的XMPP客户 ...
- 标准C程序设计七---76
Linux应用 编程深入 语言编程 标准C程序设计七---经典C11程序设计 以下内容为阅读: <标准C程序设计>(第7版) 作者 ...
- Vue中的computed 解读
computed相当于属性的一个实时计算,如果实时计算里关联了对象,那么当对象的某个值改变的时候,同事会出发实时计算.比如: <body id="content"> & ...
- Group by 两表联查取另一表与之关联数据的总数
使用group by 需要查询的字段 必须要放在group by 后面 SELECT U.UserLotterySn,count(W.Userlotterysn) as WinCount,U.Acti ...
- ASP.NET MVC Identity 使用自己的SQL Server数据库
之前在网上看到的一篇后来找不到了,现在自己记录一下. 1.在web.config中添加一个数据库连接. <add name="dataContext" connectionS ...
- BZOJ3751 NOIP2014 解方程(Hash)
题目链接 BZOJ3751 这道题的关键就是选取取模的质数. 我选了4个大概几万的质数,这样刚好不会T 然后统计答案的时候如果对于当前质数,产生了一个解. 那么对于那些对这个质数取模结果为这个数的数 ...
- 洛谷—— P2183 巧克力
https://www.luogu.org/problemnew/show/P2183 题目描述 佳佳邀请了M个同学到家里玩.为了招待客人,她需要将巧克力分给她的好朋友们.她有N(1<=N< ...
- Nginx三种模式的虚拟主机(附Apache基于域名的虚拟主机)
1.安装nginx # pcre中文"perl兼容正则表达式",安装pcre库是为了让nginx支持具备URL重写功能 # 的Rewrite模块,rewrite可以实现动态页面转成 ...
- idea的快捷键和操作
IntelliJ Idea 常用快捷键列表 修改方法如下: 点击 文件菜单(File) –> 点击 设置(Settings… Ctrl+Alt+S), –> 打开设置对话框. 在左侧的 ...
- 低成本安全硬件(二):RFID on PN532
引言 鉴于硬件安全对于大多数新人是较少接触的,而这方面又非常吸引我,但是部分专业安全研究设备较高的价格使人望而却步.在该系列中,笔者希望对此感兴趣的读者在花费较少金钱的情况下体会到硬件安全的魅力所在. ...