什麼是API

来源:https://www.cnblogs.com/LaiY9/archive/2020/06/10/13090309.html
-Advertisement-
Play Games

API是什麼,Linux系統中系統調用可以理解是操作系統為用戶提供的一系列操作的介面(API), 以C語言為例,我們使用fopen()函數可以打開一個文件,感覺非常簡單。文件保存在硬碟上,要經過複雜的處理才能顯示,這些細節對我們來說是透明的,由操作系統完成。也就是說,我們調用fopen()函數來通知 ...


API是什麼,Linux系統中系統調用可以理解是操作系統為用戶提供的一系列操作的介面(API),

以C語言為例,我們使用fopen()函數可以打開一個文件,感覺非常簡單。文件保存在硬碟上,要經過複雜的處理才能顯示,這些細節對我們來說是透明的,由操作系統完成。也就是說,我們調用fopen()函數來通知操作系統,讓操作系統打開一個文件。

那麼,我們如何告訴操作系統打開文件呢?

看似簡單的操作到底層都非常複雜,打開文件首先要掃描硬碟,找到文件的位置,然後從文件中讀取一部分數據,將數據放進I/O緩衝區,放進記憶體;這些數據都是0、1序列,還要對照ASCII表或Unicode表”翻譯“成字元,再在顯示器上顯示出來。

怎麼辦呢?操作系統想了一個很好的辦法,它預先把這些複雜的操作寫在一個函數裡面,編譯成一個組件(一般是動態鏈接庫),隨操作系統一起發佈,並配上說明文檔,程式員只需要簡單地調用這些函數就可以完成複雜的工作,讓編程變得簡單有趣。這些封裝好的函數,就叫做API(Application Programming Interface),即應用程式編程介面。

說得更加通俗易懂一些,別人寫好的代碼,或者編譯好的程式,提供給你使用,就叫做API。你使用了別人代碼(或者程式)中的某個函數、類、對象,就叫做使用了某個API。

操作系統 API。

 操作系統已經為我們實現了很多功能,它們都被封裝成了一個一個的函數,有成百上千個之多,這些函數就叫做 API。程式員要想使用某個功能,只需要調用相應的函數。Windows、Linux、Mac OS、Unix 這些常見的操作系統大部分功能都使用C語言開發,它們的 API 也以C語言的形式呈現。操作系統 API 數目眾多,官方必須提供詳細的說明文檔(Windows API 的說明文檔叫 MSDN),程式員在使用 API 時,需要頻繁地查閱這些文檔。

Windows API控制項與消息函數 ,如:

                 1.AdjustWindowRect 給定一種視窗樣式,計算獲得目標客戶區矩形所需的視窗大小。

                 2.AnyPopup 判斷屏幕上是否存在任何彈出式視窗。

                 3.ArrangeIconicWindows 排列一個父視窗的最小化子視窗。

編程語言 API。

各種編程語言自帶的標準庫其實也是API。這些API由編程語言的開發者們編寫,安全、高效、健壯,為我們實現了常見的功能,讓我們不用再重覆造輪子。

C語言 API 以函數的形式呈現,例如 printf()、scanf()、fopen() 等。

Java API 主要以類的形式呈現,例如 String、Thread、Date 等。

C++ 是在C語言的基礎上進行的擴展,所以 C++ API 既包含函數也包含類。

第三方庫(框架)

libxml2——xml的c語言版庫,2個項目使用過,win和Linux下都很犀利~~比較快捷

CURL—— 這個用的主要是使用了他的封裝的http和https的請求,比較犀利,其中包含了openssl的內容

iconv——功能強大的編碼格式轉化庫,UTF8,Unicode等互相轉化很方便

openssl——C的開源密庫,可以進行證書加密和https的訪問的模擬提交可以和CURL配合使用

cocos2d——2D游戲引擎,相比較傳統的UI自己控制的重畫

OpenCV——開源圖像庫

還有很多第三方(非官方)的組織機構、公司、個人提供的代碼,也是一種 API。這些代碼有的免費,有的收費;有的開源,有的閉源。這些代碼大都針對某個特定的應用領域編寫,有時候被稱為框架或者庫。例如基於C語言的圖形界面庫GTK,基於C++的網路庫ACE,基於Java的大數據處理平臺Hadoop,基於Python的Web開發框架Django,基於JavaScript的前端開發框架React。

全球最大的代碼托管網站GitHub也貢獻了很多優秀的代碼,它們大都開源免費。作為開源代碼庫以及版本控制系統,Github擁有超過900萬開發者用戶。隨著越來越多的應用程式轉移到了雲上,Github已經成為了管理軟體開發以及發現已有代碼的首選方法。。這些第三方的API數目眾多,種類豐富,我們應該大膽去使用,儘量避免重覆造輪子。

常見問題:

假設你想在你的窗體模塊中聲明一個函數,粘貼然後運行,VB會告訴你:編譯錯誤...Declare 語句不允許作為類或對象模塊中的Public(公共的) 成員。..看起來很糟糕,其實你需要做的只是在聲明前面添加一個Private(私有的)。不要忘了,可是這將使該函數只在該窗體模塊可用。. 在有些情況下,你會得到"不明確的名稱"這樣的提示,這是因為函數、常量或其他的什麼東西共用了一個名稱。由於絕大多數的函數都進行了別名化,亦即意味著你可以通過Alias子句使用其它的而不是他們原有的名稱,你只需簡單地改變一下函數名稱而它仍然可以正常運行。

 

 原文出處:http://baijiahao.baidu.com/s?id=1586026960877760125&wfr=spider&for=pc

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 0. 前言 通過前兩篇,我們創建了一個項目,並規定了一個基本的數據層訪問介面。這一篇,我們將以EF Core為例演示一下數據層訪問介面如何實現,以及實現中需要註意的地方。 1. 添加EF Core 先在數據層實現層引入 EF Core: cd Domain.Implements dotnet add ...
  • vs版本 2019,鏈接資料庫使用Navicat,資料庫MySql abp的官網:https://aspnetboilerplate.com/,我們去Download這裡下載一個模板,需要選好Target Version、輸入項目名字,我這裡使用abp的mvc版本、項目名為AbpLearn下載一份 ...
  • LiveCharts 提示框(DataTooltip)百分比一直為0.00%解決辦法 問題描述:在使用LiveCharts 開源圖標庫的時候,使用CartesianChart類圖表,當Series為LineSeries(多個對象)類型時,DataTooltip數據提示框會提示每個點對應的百分比,但一 ...
  • 後臺修改前臺不刷新可能的原因: 1.前臺頁面沒有寫Binding 2.後臺數據定義的欄位沒有get和set 3.數據容器沒有使用ObservableCollection 4.欄位內容修改時沒有重置數據源 首先簡單舉例界面代碼如下: <DataGrid Name="DG" ItemsSource="{ ...
  • 隨著微服務的火熱,DDD(領域驅動設計模式)思想風起雲涌,衝擊著整個軟體生態系統。其中,事件匯流排那是必須知道的了,於是我便抱著一個學習DDD的心態搭建了一個博客網站,目前該網站正在建設階段,後續會不斷完善,這裡我只是講一下我裡面所用到的事件匯流排。 事件匯流排,我的理解就是發佈訂閱模式,這裡有一篇文章寫 ...
  • 使用請求頭認證來測試需要授權的 API 介面 Intro 有一些需要認證授權的介面在寫測試用例的時候一般會先獲取一個 token,然後再去調用介面,其實這樣做的話很不靈活,一方面是存在著一定的安全性問題,獲取 token 可能會有一些用戶名密碼之類的測試數據,還有就是獲取 token 的話如果全局使 ...
  • 系列文章 基於 abp vNext 和 .NET Core 開發博客項目 - 使用 abp cli 搭建項目 基於 abp vNext 和 .NET Core 開發博客項目 - 給項目瘦身,讓它跑起來 基於 abp vNext 和 .NET Core 開發博客項目 - 完善與美化,Swagger登場 ...
  • 《C# 敏捷開發實踐》 [作者] (英) Gary McLean Hall[譯者] (中) 許順強[出版] 人民郵電出版社[版次] 2016年07月 第1版[印次] 2016年07月 第1次 印刷[定價] 69.00元 【第一部分】 (P001) 編寫代碼是軟體開發的核心工作,而編寫好用的代碼有很多 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...