api 功能与实现的些许感想

2023-05-16

api 功能与实现

对于 api 功能的了解,通过学习源码的实现便能做到。反之,通过研究源码,也能对api 功能有所了解。api 功能与实现的这种相互联系意味着我们不应该将 api 的功能与实现切割开,我们应该将这两者统一进行研究。

直奔实现的问题

我们研究的大部分 api 实现很多都不是自己写的,看源码时对 api 功能不了解极有可能看的一头雾水,不仅不利于进一步的学习,甚至可能削弱人的兴趣。

只研究 api 功能的问题

api 是开发者提供给我们的软件接口,它有明确的功能。在开发过程中我们只需要阅读
api 手册就能够进行开发。这样看来我们其实完全不用研究 api 的实现就能够完成日常的开发工作,可如果有一天我们要自己实现 api 呢?我们能一直作调库侠吗?

实际上对一个开发者来说,他应该对 api 功能的实现进行研究。这既有助于开发者进一步的思考 api 功能本身,也提高了开发者解决复杂问题的能力。

正常的学习路线

实际的开发过程中 api 功能应该是首先需要明确的东西,需求分析就是要提炼出产品所要实现的各种 api 功能。

代码只是实现 api 功能的手段。我们研究源码应该从 api 功能出发,由外及内。对于未使用过的 api ,应该先跑跑 demo,学习如何使用,对各种接口有进一步的了解,这之后从接口到源码进一步学习即可。

进一步的思考

从一开始就直奔源码很可能走火入魔。不看源码,只了解 API 功能则不能达成进一步学习的目标。

开始时应该先学习怎样用,通过使用来对问题有更深入的认识,对于问题背后体现的原理建立基本的好奇心,然后逐步研究实现的细节,最后去思考当前的实现与接口之间的关系,可以进一步的追问为什么要这样实现的问题。

弱水三千,只取一瓢。在研究源码时最好带着问题,这样就意味着你明白自己要取哪一瓢,也就不至于陷入到三千若水中而迷失了方向!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

api 功能与实现的些许感想 的相关文章

随机推荐

  • FreeRTOS学习(四) 列表的插入和删除

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 首先定义列表 xff0c 以及列表项 List t TestList 列表 ListItem t ListItem1 列表项1 ListItem
  • FreeRTOS学习(六) 时间片调度

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 对于FreeRTOS 允许同等任务优先级存在 那么对于多个同等优先级的任务运行 情况的是如何 FreeRTOS 的机制就是对于同等优先级任务来说
  • FreeRTOS学习(十) 信号量

    声明及感谢 跟随正点原子资料学习 在此作为学习的记录和总结 环境 keil stm32f103 二值信号量 二值信号量 通常用于互斥访问 或同步 大多数用于同步 任务与任务 或 任务 与中断的同步 和队列一样 信号量API函数允许设置一个阻
  • Arduino 操控 12v 电压控制电磁铁 (线性振动马达?

    在此记录一下制作过程 xff0c 以作日后参考 效果 xff1a 线性震动马达 xff1f 大概思路 xff1a 通过L298N xff0c 用外接12v电源给电磁铁进行12v供电 xff0c 给arduino进行5v供电 一个电磁铁的供电
  • Dijkstra算法详解

    1 dijkstra算法简介 Dijkstra算法是由E W Dijkstra于1959年提出 xff0c 又叫迪杰斯特拉算法 xff0c 它应用了贪心算法模式 xff0c 是目前公认的最好的求解最短路径的方法 算法解决的是有向图中单个源点
  • C++建立动态二维数组

    C 43 43 建立动态二维数组主要有两种方法 xff1a 1 使用数组指针 xff0c 分配一个指针数组 xff0c 将其首地址保存在b中 xff0c 然后再为指针数组的每个元素分配一个数组 int b 61 new int row 分配
  • 理解负载均衡

    什么是平均负载 xff1f 单位时间内 xff0c 系统处于可运行状态和不可中断状态的平均进程数 xff0c 也就是平均活跃进程数 xff0c 它和CPU使用率并没有直接关系 所谓可运行状态的进程 xff0c 是指正在使用CPU或者等待CP
  • 理解CPU使用率和CPU上下文切换

    1 CPU使用率 1 1 CPU使用率查看 当发现服务或机器卡的时候 xff0c 我们都是先通过top命令查看服务器CPU使用率 默认每3秒刷新一次 top top 18 10 58 up 1216 days 7 38 4 users lo
  • 自动驾驶概述

    1 自动化能力定义 对自动驾驶能力有多个定义标准 xff0c 比较常用的是SAE International关于自动化层级的定义 具体是 L0 驾驶员完全掌控车辆 L1 自动系统有时能够辅助驾驶员完成某些驾驶任务 L2 自动系统能够完成某些
  • 2014百度校招笔试题之动态链接库&静态链接库详解

    1 什么是静态连接库 xff0c 什么是动态链接库 静态链接库用通俗的话讲 静态库就是将代码编译到一个二进制文件下 通常扩展名为 LIB 然后客户端调用程序 只需要包含相关的 h文件及LIB库文件一起链接到exe文件中 可执行程序发布后 不
  • @武汉人民,请收好这份名单

    1月27日 xff0c 武汉本地众多商户联合阿里巴巴旗下饿了么口碑 盒马 飞猪等业务 xff0c 从衣食住行各个角度 xff0c 为武汉一线医护人员提供安全 高品质的餐品及生活配套服务 首批100家餐厅已准备就绪 其中麦当劳 华莱士 大米先
  • java遍历泛型的方法

    一 List遍历 Java中List遍历有三种方法来遍历泛型 xff0c 主要为 xff1a 1 for循环遍历 2 iterator遍历 3 foreach遍历 package com gmail lsgjzhuwei import ja
  • java web文件下载功能实现

    需求 xff1a 实现一个具有文件下载功能的网页 xff0c 主要下载压缩包和图片 两种实现方法 xff1a 一 xff1a 通过超链接实现下载 在HTML网页中 xff0c 通过超链接链接到要下载的文件的地址 lt DOCTYPE htm
  • java创建线程的三种方式及其对比

    Java中创建线程主要有三种方式 xff1a 一 继承Thread类创建线程类 xff08 1 xff09 定义Thread类的子类 xff0c 并重写该类的run方法 xff0c 该run方法的方法体就代表了线程要完成的任务 因此把run
  • 'hibernate.dialect' must be set when no Connection available

    今天碰到的这个问题 xff0c 很无厘头 xff0c 网上搜索了很多 xff0c 都不靠谱 xff0c 还是靠自己 解决方法是在hibernate cfg xml中添加 lt property name 61 34 dialect 34 g
  • javascript动态插入html元素

    主要有是两种方案 xff1a 1 使用DOM span class hljs comment 使用createElement创建元素 span span class hljs keyword var span dialog 61 docum
  • python中switch语句用法

    python中是没用switch语句的 xff0c 这应该是体现python大道至简的思想 xff0c python中一般多用字典来代替switch来实现 coding utf 8 from future import division d
  • ROS的 sudo rosdep init 的报错终极解决方案

    ROS的 sudo rosdep init 的报错解决方案 安装ROS时sudo rosdep init指令报错 xff1a ERROR span class token operator span cannot download span
  • 图解Word2vec

    作者 xff1a 龙心尘 时间 xff1a 2019年4月 出处 xff1a https blog csdn net longxinchen ml article details 89077048 审校 xff1a 龙心尘 作者 xff1a
  • api 功能与实现的些许感想

    api 功能与实现 对于 api 功能的了解 xff0c 通过学习源码的实现便能做到 反之 xff0c 通过研究源码 xff0c 也能对api 功能有所了解 api 功能与实现的这种相互联系意味着我们不应该将 api 的功能与实现切割开 x