是如何工作的:人人都能懂的計算機(jī)軟硬件工作原理》第 13 章 現(xiàn)代計算機(jī) 閱讀筆記 16)
《計算機(jī)是如何工作的人人都能懂的計算機(jī)軟硬件工作原理》第 13 章 現(xiàn)代計算機(jī) 閱讀筆記 16第 13 章 現(xiàn)代計算機(jī)本章將對現(xiàn)代計算機(jī)的幾個精選領(lǐng)域進(jìn)行概要介紹??紤]到計算機(jī)的多樣性和廣泛性可選擇的主題有很多。我所選擇的領(lǐng)域并不是當(dāng)今計算機(jī)所發(fā)生趣事的詳盡清單。相反它們代表了我認(rèn)為值得考慮的一些主題。本章將介紹 app、虛擬化、云計算、比特幣等。我們以一個最終設(shè)計作為結(jié)束這個設(shè)計匯集了本書介紹的許多主題。13.1 app從計算機(jī)發(fā)展的早期開始人們就把被用戶直接使用的軟件程序稱為應(yīng)用程序 **(application)。為了方便將這個詞縮寫為 app。**在過去這兩個詞是可以互換的。不過隨著蘋果在 2008 年開設(shè) iPhone 應(yīng)用商店以來app 一詞已經(jīng)有了不同的含義。雖然沒有標(biāo)準(zhǔn)技術(shù)定義把軟件程序定義為 app但 app 通常具有許多共同特征。app 是為最終用戶設(shè)計的。app 一般面向的是移動設(shè)備比如智能手機(jī)或平板電腦。app 通常通過基于互聯(lián)網(wǎng)的數(shù)字商店應(yīng)用商店—比如蘋果應(yīng)用商店、Google 播放商店或者 Microsoft 商店分發(fā)。app 對運(yùn)行其的系統(tǒng)只有有限的訪問權(quán)限而且常常必須聲明它們需要哪些特定功能才能操作。app 傾向于使用觸摸屏作為用戶輸入的主要方式。在單獨(dú)使用的時候app 一詞通常是指安裝在直接使用操作系統(tǒng) API 的設(shè)備上的軟件。換句話說app 這個詞一般意味著 “本機(jī) app”?即為特定操作系統(tǒng)構(gòu)建的 app。反過來網(wǎng)絡(luò) app 是用網(wǎng)絡(luò)技術(shù)HTML、CSS和JavaScript設(shè)計的 app不與特定的操作系統(tǒng)綁定。圖 13-1 提供了本機(jī) app 和網(wǎng)絡(luò) app 的高級視圖。圖 13-1 本機(jī) app 為特定操作系統(tǒng)構(gòu)建網(wǎng)絡(luò) app 用網(wǎng)絡(luò)技術(shù)構(gòu)建如圖 13-1 所示本機(jī) app 通常從應(yīng)用商店安裝旨在利用特定操作系統(tǒng)的功能。網(wǎng)絡(luò) app 通常從網(wǎng)站運(yùn)行旨在使用網(wǎng)絡(luò)技術(shù)。網(wǎng)絡(luò) app 在瀏覽器或其他呈現(xiàn)網(wǎng)絡(luò)內(nèi)容的進(jìn)程中運(yùn)行?,F(xiàn)在讓我們更細(xì)致地看看本機(jī) app 和網(wǎng)絡(luò) app。13.1.1 本機(jī) app如前所述本機(jī) app 為特定操作系統(tǒng)而構(gòu)建。蘋果應(yīng)用商店和之后類似的應(yīng)用商店開創(chuàng)了本地軟件開發(fā)的新時代為開發(fā)人員提供了新的目標(biāo)平臺、新的軟件分發(fā)方法以及用軟件賺錢的新方法。本機(jī) app 的開發(fā)目前主要集中在兩個平臺上iOS 和 Android。當(dāng)然仍然要為其他操作系統(tǒng)開發(fā)軟件但一般這樣的軟件不具備 app 的典型特性移動友好、基于觸摸屏的輸入、通過應(yīng)用商店分發(fā)等?。**Android 和 iOS 的區(qū)別在于它們的編程語言和 API 等。**因此編寫在 Android 和 iOS 上都運(yùn)行的 app 需要維護(hù)獨(dú)立的代碼庫或者使用跨平臺框架比如 Xamarin、React Native、Flutter、Unity。這些跨平臺解決方案把每個操作系統(tǒng) API 的底層細(xì)節(jié)進(jìn)行了抽象使得開發(fā)人員可以編寫能在多個平臺上運(yùn)行的代碼。許多本機(jī) app 也依賴于網(wǎng)絡(luò)服務(wù)這意味著 app 開發(fā)人員不僅必須為 iOS 和 Android 編寫并維護(hù)代碼而且還必須構(gòu)建或集成網(wǎng)絡(luò)服務(wù)。開發(fā)跨平臺的、網(wǎng)絡(luò)連接 app 需要大量的工作和專業(yè)知識過去開發(fā)人員一般只關(guān)注一個平臺比如 Windows PC 或 Mac。對于針對多個平臺和網(wǎng)絡(luò)的開發(fā)人員來說現(xiàn)在的工作當(dāng)然更為復(fù)雜。平臺競爭對于用戶而言通常是好事但對于開發(fā)人員而言則意味著更多的工作。有意思的是app 開發(fā)的當(dāng)前狀態(tài)本可能會完全不同。當(dāng) 2007 年 1 月發(fā)布 iPhone 時關(guān)于 iPhone 上的第三方 app 開發(fā)Steve Jobs蘋果當(dāng)時的 CEO是這樣說的iPhone 內(nèi)部有完整的 Safari 引擎。你可以編寫令人驚嘆的 Web 2.0 和 Ajax app它們在外觀和行為上與 iPhone 的 app 完全一樣。這些 app 可以與 iPhone 服務(wù)完美地集成。它們可以打電話可以發(fā)郵件可以在 Google 地圖上查找位置。你猜怎么著你不需要 SDK注意SDKSoftware Development Kit軟件開發(fā)工具包是開發(fā)人員用于為特定平臺構(gòu)建應(yīng)用程序時使用的軟件集合。根據(jù)這段話蘋果對于第三方 app 開發(fā)的初始計劃是簡單地讓開發(fā)人員構(gòu)建能使用 iPhone 功能的類 app 網(wǎng)站。本機(jī) app 的開發(fā)將局限于蘋果開發(fā)比如相機(jī)、電子郵件、日歷app。當(dāng)時把網(wǎng)絡(luò)用作應(yīng)用程序開發(fā)的平臺并不常見。蘋果的立場是具有前瞻性的??上У氖?007 年網(wǎng)絡(luò)的底層技術(shù)還不夠成熟不能讓網(wǎng)絡(luò)成為真正的 app 平臺。到 2007 年 10 月蘋果改變了它的說法宣布蘋果將允許開發(fā)人員為 iPhone 構(gòu)建本機(jī) app。2008 年蘋果開放了應(yīng)用商店作為向用戶分發(fā)本地 iPhone app 的唯一受支持的機(jī)制。蘋果策略的逆轉(zhuǎn)使公司受益因為應(yīng)用商店成為蘋果收入的來源。注冊為應(yīng)用商店開發(fā)人員需要付費(fèi)蘋果還從每一筆銷售額中收取一定比例的費(fèi)用。應(yīng)用商店和本機(jī) iPhone 開發(fā)也為獨(dú)家內(nèi)容打開了大門app 只能在蘋果設(shè)備上運(yùn)行。應(yīng)用商店還為最終用戶帶來了好處。帶有評級的精選 app 列表很有幫助且商店提供了對用戶信任度的度量。進(jìn)入應(yīng)用商店的 app 必須符合特定的質(zhì)量標(biāo)準(zhǔn)。集中式支付服務(wù)意味著用戶不必把自己的支付信息提供給多個公司。app 自動更新這相對于傳統(tǒng) PC 軟件來說是一個優(yōu)勢不過對于網(wǎng)絡(luò)來說不算優(yōu)勢因為網(wǎng)絡(luò) app 也能在沒有用戶參與的情況下更新。隨著蘋果應(yīng)用商店的成功其他公司也創(chuàng)建了類似的數(shù)字商店來分發(fā)軟件。Google 播放商店、Microsoft 商店和 Amazon 應(yīng)用商店的運(yùn)營模式都與蘋果商店類似而且提供的好處也類似。盡管這個系統(tǒng)對這些公司和最終用戶都有很好的效果但它也給開發(fā)人員創(chuàng)造了一個復(fù)雜的環(huán)境多個商店、多個平臺以及各種技術(shù)。每個數(shù)字市場都有自己的需求而 app 開發(fā)人員必須滿足這些需求而且每個商店都占銷售收入的一定份額。13.1.2 網(wǎng)絡(luò) app伴隨本機(jī) app 的興起網(wǎng)絡(luò)逐漸成熟成為有相當(dāng)能力運(yùn)行 app 的平臺。一種被稱為 HTML5 的成熟 HTML 版本被引入其中網(wǎng)絡(luò)瀏覽器在處理內(nèi)容方面變得更加強(qiáng)大更加一致。瀏覽器開發(fā)人員使其 JavaScript 實現(xiàn)符合 ECMAScript 5 標(biāo)準(zhǔn)為 JavaScript 代碼提供了更好的基礎(chǔ)。在瀏覽器更新之外網(wǎng)絡(luò)開發(fā)人員社區(qū)接受一種被稱為響應(yīng)式網(wǎng)絡(luò)設(shè)計的概念即不論顯示屏幕的大小如何都能確保網(wǎng)絡(luò)內(nèi)容得到很好呈現(xiàn)的一種方法。使用響應(yīng)式設(shè)計技術(shù)網(wǎng)絡(luò)開發(fā)人員可以維護(hù)一個跨不同設(shè)備仍然運(yùn)行良好的網(wǎng)站而不是針對不同設(shè)備創(chuàng)建不同的網(wǎng)站。此外近年來還發(fā)布了多個網(wǎng)絡(luò)開發(fā)框架比如 Angular 和 React。這些框架讓開發(fā)人員更加輕松地編寫和維護(hù)網(wǎng)絡(luò) app——行為類似于 app 的網(wǎng)站。開發(fā)人員已經(jīng)意識到現(xiàn)代網(wǎng)絡(luò)技術(shù)可以用于構(gòu)建與本機(jī) app 非常相似的體驗許多開發(fā)人員搭建了充當(dāng) app 的網(wǎng)站。一些開發(fā)人員選擇完全放棄本機(jī) app而只構(gòu)建網(wǎng)絡(luò) app。這個方法的好處是網(wǎng)絡(luò) app 可以在具有現(xiàn)代網(wǎng)絡(luò)瀏覽器的任意設(shè)備上運(yùn)行而代碼只需要編寫一次。不過網(wǎng)絡(luò) app 也有一些缺點(diǎn)。網(wǎng)絡(luò) app 不能訪問全部的設(shè)備功能往往比本機(jī) app 要慢要求用戶在線而且通常不會出現(xiàn)在應(yīng)用商店中。為了解決網(wǎng)絡(luò) app 的一些不足漸進(jìn)式網(wǎng)絡(luò) app (Progressive Web AppPWA) 提供了一組技術(shù)和指南來幫助彌補(bǔ)本機(jī) app 和網(wǎng)絡(luò) app 之間的差距。PWA 只是一個具有一些額外功能的網(wǎng)站這些功能有助于使它更像 app。漸進(jìn)式網(wǎng)絡(luò) app 必須通過 HTTPS 提供服務(wù)在移動設(shè)備上恰當(dāng)?shù)爻尸F(xiàn)下載后能離線加載向瀏覽器提供描述 app 的清單在頁面之間快速轉(zhuǎn)換。對最終用戶而言運(yùn)行 PWA 與運(yùn)行本機(jī) app 應(yīng)該是一樣的響應(yīng)迅速且自然。如果網(wǎng)站符合 PWA 的標(biāo)準(zhǔn)那么現(xiàn)代網(wǎng)絡(luò)瀏覽器會給用戶提供為其主屏幕或桌面添加 PWA 圖標(biāo)的選項。這表示用戶可以像啟動本機(jī) app一樣啟動網(wǎng)絡(luò) app。app 在自己的窗口而不是瀏覽器窗口中打開而且一般表現(xiàn)得就像本機(jī) app 一樣。PWA 可以為那些希望把網(wǎng)絡(luò)技術(shù)用于其 app但又不想針對不同平臺構(gòu)建多個 app 的開發(fā)人員提供非常大的好處。不過PWA 仍然存在一些缺點(diǎn)。一個重要問題就是PWA 不會出現(xiàn)在應(yīng)用商店中。多年以來移動操作系統(tǒng)一直使用戶認(rèn)為app 應(yīng)該通過應(yīng)用商店獲得。用戶不習(xí)慣通過瀏覽網(wǎng)頁獲得 app。在撰寫本書的時候只有 Microsoft 商店允許PWA直接發(fā)布到商店。其他平臺希望從瀏覽器安裝 PWA或者將其重新打包成呈現(xiàn)網(wǎng)絡(luò)內(nèi)容的本機(jī) app然后把這個重新打包的 app 提交到商店。另一個潛在的缺點(diǎn)是 PWA 可能看起來不像本機(jī) app它們在所有平臺上的外觀通常都基本一樣盡管有些人可能認(rèn)為這是件好事。PWA 仍然不具有本機(jī) app 的性能也不能訪問底層平臺的所有功能但根據(jù) app 的需求這不一定是個問題。13.2 虛擬化和仿真什么時候計算機(jī)不是物理設(shè)備當(dāng)然是在它是虛擬計算機(jī)的時候虛擬化 是使用軟件 創(chuàng)建計算機(jī) 虛擬表示的 過程。相關(guān)的 仿真技術(shù) 允許 為某種類型的設(shè)備 設(shè)計的應(yīng)用程序 運(yùn)行在完全不同的設(shè)備上。本節(jié)將探討虛擬化和仿真。13.2.1 虛擬化虛擬計算機(jī)被稱為虛擬機(jī) (Virtual MachineVM)它像物理計算機(jī)一樣運(yùn)行操作系統(tǒng)。應(yīng)用程序可以在這個操作系統(tǒng)上運(yùn)行。從應(yīng)用程序的角度來看虛擬化硬件就像物理計算機(jī)一樣。虛擬化支持幾個有用的場景。運(yùn)行一個操作系統(tǒng)的計算機(jī)可以在虛擬機(jī)中運(yùn)行另一個操作系統(tǒng)。例如運(yùn)行 Windows 的計算機(jī)可以在虛擬機(jī)中運(yùn)行 Linux 的實例。虛擬機(jī)還允許數(shù)據(jù)中心在一個物理服務(wù)器上托管多個虛擬服務(wù)器。這為互聯(lián)網(wǎng)托管公司提供了一種方法只要客戶愿意使用虛擬服務(wù)器就能輕松迅速地為客戶提供專用服務(wù)器。VM 易于備份、還原和部署。管理程序 (hypervisor) 是運(yùn)行虛擬機(jī)的軟件平臺。管理程序有兩種類型如圖 13-2 所示。圖 13-2 類型 1 管理程序和類型 2 管理程序如圖 13-2 左側(cè)所示管理程序可以直接與底層硬件交互實際上管理程序放置在技術(shù)棧中內(nèi)核的下面。管理程序與物理硬件通信并把虛擬化硬件呈現(xiàn)給 OS 內(nèi)核它被稱為類型 1 管理程序。與之相比圖 13-2 右側(cè)所示的類型2管理程序則作為應(yīng)用程序運(yùn)行在操作系統(tǒng)上。微軟的 Hyper-V 和 VMware ESX 是類型1管理程序而VMware Player 和 VirtualBox 是類型 2 管理程序。另一種常見的虛擬化方法是使用容器。容器提供隔離的用戶模式環(huán)境應(yīng)用程序在這個環(huán)境中運(yùn)行。與虛擬機(jī)不同容器與主機(jī)操作系統(tǒng)以及在同一臺計算機(jī)上運(yùn)行的其他容器共享內(nèi)核。在容器中運(yùn)行的進(jìn)程只能看到物理計算機(jī)上部分可用資源。例如每個容器都能被授予自己的獨(dú)立的文件系統(tǒng)。容器可隔離 VM無須為每個 VM 運(yùn)行單獨(dú)的內(nèi)核。通常由于內(nèi)核是共享的容器被限制運(yùn)行于主機(jī)相同的操作系統(tǒng)。像 OpenVZ 一樣的容器技術(shù)被用于虛擬化操作系統(tǒng)的整個用戶模式部分而其他的容器技術(shù)比如Docker則被用于在獨(dú)立的容器中運(yùn)行單個應(yīng)用程序。注意你可能還記得第 10 章將操作系統(tǒng)進(jìn)程描述為 “容器”?這與虛擬化容器不是一回事。13.2.2 仿真仿真 是用軟件 讓一種類型的 設(shè)備的 行為 類似于 另一種類型的 設(shè)備的 行為的 過程。仿真和虛擬化的相似點(diǎn)在于它們都為軟件運(yùn)行提供虛擬環(huán)境但虛擬化提供的是底層硬件的一部分而仿真提供的虛擬硬件則與使用的物理硬件不同。例如在 x86 處理器上運(yùn)行的虛擬機(jī)或容器直接使用物理 CPU 運(yùn)行為 x86 編譯的軟件。相比之下在 x86 處理器上運(yùn)行的仿真器執(zhí)行仿真的程序可以運(yùn)行為完全不同的處理器編譯的軟件。除了處理器之外仿真器通常還提供其他虛擬硬件。例如世嘉 Genesis20 世紀(jì) 90 年代的電子游戲系統(tǒng)的完整仿真器可以模擬摩托羅拉 68000 處理器、雅馬哈 YM2612 聲音芯片、輸入控制器以及世嘉 Genesis 中的所有其他硬件。運(yùn)行時這樣的仿真器會把最初設(shè)計在世嘉 Genesis 上運(yùn)行的 CPU 指令轉(zhuǎn)換為在 x86 代碼中實現(xiàn)的功能。這帶來了巨大的開銷因為每條CPU 指令都必須進(jìn)行轉(zhuǎn)換但足夠快的現(xiàn)代計算機(jī)仍然可以全速仿真速度慢得多的世嘉 Genesis。其結(jié)果就是能在完全不同的平臺上運(yùn)行針對某個平臺設(shè)計的軟件如圖 13-3 所示。圖 13-3 為系統(tǒng) A 編譯的代碼可以在系統(tǒng) A 的仿真器上運(yùn)行仿真在保留為過時平臺所設(shè)計的軟件方面起著重要作用。隨著計算機(jī)平臺的老化找到能工作的硬件變得越來越難。那些希望把舊軟件引入現(xiàn)代平臺的軟件開發(fā)人員往往就使用仿真技術(shù)。最初的源代碼可能會丟失或者對其進(jìn)行現(xiàn)代化的任務(wù)可能會很繁重。在這種情況下使用仿真器能讓原始已編譯的代碼無須修改就可在新平臺上運(yùn)行。進(jìn)程虛擬機(jī)還有另外一類虛擬機(jī)它與仿真器有一些共同特性。進(jìn)程虛擬機(jī)運(yùn)行應(yīng)用程序的執(zhí)行環(huán)境是對底層操作系統(tǒng)細(xì)節(jié)的抽象。它與仿真器類似因為它提供了一個與運(yùn)行它的硬件和操作系統(tǒng)分離的執(zhí)行平臺。但是與仿真器不同的是進(jìn)程 VM 不會嘗試模擬真實硬件。相反它提供的環(huán)境旨在運(yùn)行平臺無關(guān)的軟件。如同我們在第 9 章討論的一樣Java 和 .NET 利用了運(yùn)行字節(jié)碼的進(jìn)程虛擬機(jī)。13.3 云計算云計算是指通過互聯(lián)網(wǎng)提供計算服務(wù)。本節(jié)將介紹各種類型的云計算但首先讓我們快速回顧一下遠(yuǎn)程計算的歷史。13.3.1 遠(yuǎn)程計算的歷史從有計算以來我們就可以觀察到一個鐘擺模式從遠(yuǎn)程集中式計算從終端訪問的服務(wù)器到本地計算桌面計算機(jī)?現(xiàn)在再回到從智能本地設(shè)備如智能手機(jī)訪問的遠(yuǎn)程計算網(wǎng)絡(luò)?。當(dāng)前許多應(yīng)用程序同時依賴于遠(yuǎn)程計算和本地計算。對于網(wǎng)絡(luò)有些代碼在瀏覽器上運(yùn)行有些代碼在網(wǎng)絡(luò)服務(wù)器上運(yùn)行。與早期那些像房間那么大的計算機(jī)相比今天我們在口袋里揣著的設(shè)備要強(qiáng)大得多但是很多我們想在這些設(shè)備上做的工作都涉及與其他計算機(jī)的通信因此在本地設(shè)備與遠(yuǎn)程服務(wù)器之間分擔(dān)處理責(zé)任是有意義的。隨著遠(yuǎn)程計算的重新出現(xiàn)組織需要維護(hù)服務(wù)器。在過去這意味著購買物理服務(wù)器按需對其進(jìn)行配置將其與網(wǎng)絡(luò)連接并讓它在某個地方的機(jī)柜中運(yùn)行。組織可以物理訪問計算機(jī)并完全控制其配置。但是維護(hù)一臺服務(wù)器或一組服務(wù)器可能是一項復(fù)雜且成本高昂的工作這涉及購買和維護(hù)硬件、及時更新軟件、處理安全問題和容量規(guī)劃問題、管理網(wǎng)絡(luò)配置等。一般來說這項工作所需的技能和專業(yè)知識與組織目標(biāo)并不一致。即便是以技術(shù)為主的公司也不一定想要做維護(hù)服務(wù)器的業(yè)務(wù)。這就是云計算的用武之地。云計算通過互聯(lián)網(wǎng)云提供遠(yuǎn)程計算功能。**底層硬件由云服務(wù)公司云提供商維護(hù)使需要這些功能的組織或用戶云用戶免于維護(hù)服務(wù)器。**云計算允許按需購買計算服務(wù)。對于云用戶而言這就意味著釋放對某些事物的控制權(quán)并相信第三方可提供可靠服務(wù)。云計算有多種形式讓我們看看其中的一些。13.3.2 云計算的分類云計算的各種類別通常由在云提供商和云用戶之間劃分責(zé)任的界限來定義。圖 13-4 展示了四類云計算IaaS、PaaS、FaaS 和 SaaS及各自的責(zé)任劃分。稍后我們將逐一介紹它們。圖 13-4 各類云計算產(chǎn)品的責(zé)任劃分圖 13-4 中的垂直棧表示應(yīng)用程序運(yùn)行所需的組件。不論使用哪種云計算產(chǎn)品都需要全部的組件——不同類型之間的差異在于每個組件是由云用戶負(fù)責(zé)管理還是由云提供商負(fù)責(zé)管理。每個棧中的各種組件應(yīng)該看著很熟悉因為我們之前已經(jīng)介紹過這些內(nèi)容了。但是?“運(yùn)行時” 還需要解釋一下。運(yùn)行時環(huán)境是應(yīng)用程序執(zhí)行的環(huán)境它包括了所有需要的庫、解釋器、進(jìn)程虛擬機(jī)等?,F(xiàn)在讓我們從左到右介紹一下圖 13-4 中的四類云計算?;A(chǔ)設(shè)施即服務(wù) (Infrastructure as a ServiceIaaS)是一種云計算場景在這個場景中云提供商只管理硬件和虛擬化允許用戶管理操作系統(tǒng)、運(yùn)行時環(huán)境、應(yīng)用程序代碼和數(shù)據(jù)。IaaS 的用戶通常會得到連接到互聯(lián)網(wǎng)的虛擬計算機(jī)以按照他們認(rèn)為合適的方式使用一般是作為某種類型的服務(wù)器使用。這個虛擬計算機(jī)常常實現(xiàn) 為基于管理程序的虛擬機(jī) 或者Linux發(fā)行版的 用戶模式部分的 容器。IaaS 虛擬服務(wù)器的用戶可以訪問虛擬機(jī)的操作系統(tǒng)還可以按照自己的想法對它進(jìn)行設(shè)置。這給了用戶最大的靈活性但這也意味著維護(hù)系統(tǒng)軟件包括操作系統(tǒng)、第三方軟件等的責(zé)任完全落在了用戶的肩上。IaaS 提供了一臺虛擬計算機(jī)用戶負(fù)責(zé)在該計算機(jī)上運(yùn)行的所有內(nèi)容。Amazon Elastic Compute Cloud(EC2)、Microsoft Azure Virtual Machines和Google Compute Engine 都是 IaaS 的例子。平臺即服務(wù) (Platform as a ServicePaaS)賦予云提供商更多的責(zé)任。在 PaaS 場景中云提供商不僅管理硬件和虛擬化還要管理用戶希望使用的操作系統(tǒng)和運(yùn)行時環(huán)境。PaaS 用戶開發(fā)一個應(yīng)用程序這個應(yīng)用程序的目的是在他們選擇的云平臺上運(yùn)行它會利用這個平臺的各種功能。PaaS 產(chǎn)品的云用戶不需要關(guān)心如何維護(hù)底層 OS 或運(yùn)行時環(huán)境可以只關(guān)注應(yīng)用程序代碼。盡管云提供商確實抽象了底層系統(tǒng)的詳細(xì)信息但是用戶還是需要管理提供商預(yù)配了哪些資源以處理應(yīng)用程序。預(yù)配置資源包括所需的存儲容量和被分配的虛擬機(jī)類型。PaaS 為運(yùn)行中的代碼提供了一個托管平臺用戶負(fù)責(zé)在該平臺上運(yùn)行的應(yīng)用程序。Amazon Web Services Elastic Beanstalk、Microsoft Azure App Service和Google App Engine 都是 PaaS 的例子。函數(shù)即服務(wù) (Function as a ServiceFaaS) 采用了 PaaS 模型但是比它更進(jìn)一步。FaaS 不需要用戶部署完整的應(yīng)用程序或提前給出平臺實例相反用戶只需要部署響應(yīng)某些事件的運(yùn)行代碼函數(shù)?。例如開發(fā)人員可以編寫一個函數(shù)返回到最近雜貨店的距離。這個函數(shù)可以響應(yīng)網(wǎng)絡(luò)瀏覽器把它當(dāng)前的 GPS 坐標(biāo)發(fā)送到 URL。這種事件驅(qū)動模型意味著云提供商負(fù)責(zé)按需調(diào)用用戶代碼。用戶不再需要一直運(yùn)行應(yīng)用程序代碼等待請求。這可以簡化用戶的工作并降低成本盡管在函數(shù)尚未運(yùn)行時這可能意味著在請求到來時響應(yīng)時間會更長。FaaS 是一種無服務(wù)器計算即一種用戶無須處理管理服務(wù)器或虛擬機(jī)問題的云計算模型。當(dāng)然這個術(shù)語用法不當(dāng)服務(wù)器實際上是要運(yùn)行代碼的只是用戶不需要考慮這些問題罷了FaaS 為運(yùn)行代碼提供了一個事件驅(qū)動平臺用戶負(fù)責(zé)為了響應(yīng)事件而運(yùn)行的代碼。Amazon Web Services Lambda、Microsoft Azure Functions和Google Cloud Functions 是 FaaS 的例子。軟件即服務(wù) (Software as a ServiceSaaS) 是一種完全不同的云服務(wù)。SaaS 向用戶交付完全在云中管理的應(yīng)用程序。IaaS、PaaS 和 FaaS 適合于希望在云中運(yùn)行自己代碼的軟件工程團(tuán)隊而 SaaS 則向最終用戶或組織交付已編寫好的、完整的云應(yīng)用程序。現(xiàn)在有那么多軟件都在云上運(yùn)行這看起來似乎并不顯眼但是它卻與用戶或組織在本地設(shè)備和網(wǎng)絡(luò)上安裝并維護(hù)軟件形成了鮮明對比。SaaS 提供了在云中管理的完整應(yīng)用程序用戶只需負(fù)責(zé)存儲在該應(yīng)用程序中的數(shù)據(jù)。甚至連數(shù)據(jù)管理也有部分是提供商處理的包括數(shù)據(jù)如何存儲、備份等細(xì)節(jié)。Microsoft 365、Google G Suite和Dropbox 是 SaaS 的例子。云提供商領(lǐng)域的一些主要參與者包括Amazon Web Services、Microsoft Azure、Google Cloud Platform、IBM Cloud、Oracle Cloud 和Alibaba Cloud。13.4 深網(wǎng)和暗網(wǎng)你可能已經(jīng)看過關(guān)于發(fā)生在暗網(wǎng)(dark Web)或深網(wǎng)(deep Web)中的邪惡事件的新聞。不幸的是這兩個術(shù)語經(jīng)常被搞混但它們的含義是不同的。如圖 13-5 所示網(wǎng)絡(luò)可以分成三大類表層網(wǎng)、深網(wǎng)和暗網(wǎng)。圖 13-5 表層網(wǎng)、深網(wǎng)和暗網(wǎng)**任何人都可以免費(fèi)訪問的內(nèi)容是表層網(wǎng)的一部分。**公共博客、新聞網(wǎng)站、公共推特帖子都是表層網(wǎng)內(nèi)容的例子。表層網(wǎng)由搜索引擎索引有時表層網(wǎng)也被定義為可以用搜索引擎找到的內(nèi)容。**深網(wǎng)是指不登錄網(wǎng)站或網(wǎng)絡(luò)服務(wù)就無法訪問的網(wǎng)絡(luò)內(nèi)容。**大多數(shù)互聯(lián)網(wǎng)用戶會定期訪問深網(wǎng)內(nèi)容。查看銀行賬戶余額、通過像Gmail這樣的網(wǎng)站閱讀電子郵件、登錄Facebook、查看Amazon上的個人購買記錄——這些都是深網(wǎng)活動的例子。**深網(wǎng)只是一些不公開的內(nèi)容通常需要某種密碼才能訪問。**大多數(shù)用戶不想公開自己的電子郵件或銀行賬戶所以有充分的理由說明為什么這種內(nèi)容不公開且不能被搜索引擎索引。**暗網(wǎng)是需要用專用軟件來訪問的網(wǎng)絡(luò)內(nèi)容。**只使用標(biāo)準(zhǔn)的網(wǎng)絡(luò)瀏覽器是無法訪問暗網(wǎng)的。最流行的暗網(wǎng)技術(shù)是 Tor洋蔥路由器?。通過加密和中繼系統(tǒng)Tor 允許匿名訪問網(wǎng)絡(luò)防止用戶的 ISP 監(jiān)控訪問了哪些網(wǎng)站也防止網(wǎng)站知道訪問者的 IP 地址。此外Tor 還允許用戶訪問那些被稱為洋蔥服務(wù)的網(wǎng)站如果沒有 Tor 就根本無法訪問它們——這些網(wǎng)站就是暗網(wǎng)的一部分。Tor 隱藏了洋蔥服務(wù)的 IP 地址使它們變成匿名的。如你所料暗網(wǎng)的匿名性有時會被用于犯罪目的。但是暗網(wǎng)提供的隱私也有其合法用途比如舉報和政治討論。建議在訪問暗網(wǎng)內(nèi)容時要謹(jǐn)慎。13.5 比特幣**加密貨幣是一種用于金融交易的數(shù)字資產(chǎn)是傳統(tǒng)貨幣的替代品。**加密貨幣的用戶持有該貨幣的余額就像在傳統(tǒng)的銀行一樣也可以把這些貨幣用于購物和服務(wù)。有些用戶主要把加密貨幣看作一種投資而不是一種商業(yè)手段對這些用戶來說它更類似于黃金。與傳統(tǒng)貨幣不同的是加密貨幣通常是分散的 (decentralized)沒有單一組織控制它們。13.5.1 比特幣基礎(chǔ)**比特幣于 2009 年推出是第一種分布式加密貨幣也是現(xiàn)在最著名的加密貨幣。**從那時起大量的加密貨幣稱為山寨幣如雨后春筍般涌現(xiàn)但沒有一個能挑戰(zhàn)比特幣的主導(dǎo)地位。比特幣的主要貨幣單位也簡稱為比特幣縮寫為 BTC。**比特幣和類似的加密貨幣都以區(qū)塊鏈技術(shù)為基礎(chǔ)。**在區(qū)塊鏈中信息被分組成稱為區(qū)塊的數(shù)據(jù)結(jié)構(gòu)區(qū)塊按照時間順序鏈接在一起。也就是說當(dāng)創(chuàng)建一個新區(qū)塊時它被添加到區(qū)塊鏈的末端。以比特幣為例區(qū)塊保存著交易記錄跟蹤比特幣的移動軌跡。圖 13-6 展示了比特幣的區(qū)塊鏈。圖 13-6 比特幣的區(qū)塊鏈按時間順序鏈接交易記錄區(qū)塊區(qū)塊鏈通過互聯(lián)網(wǎng)等網(wǎng)絡(luò)運(yùn)行由多臺計算機(jī)一起來處理交易和更新區(qū)塊鏈。一起工作以處理比特幣交易的計算機(jī)被稱為比特幣網(wǎng)絡(luò)。連接到比特幣網(wǎng)絡(luò)的計算機(jī)被稱為節(jié)點(diǎn)某些節(jié)點(diǎn)保存了區(qū)塊鏈的副本沒有單一的底本。通過加密和解密來保證交易的完整性并防止篡改區(qū)塊鏈中的數(shù)據(jù)。一旦寫入?yún)^(qū)塊鏈中的數(shù)據(jù)就是不可變的即無法更改。比特幣的區(qū)塊鏈?zhǔn)且粋€公開的、分布式的、不可變的交易賬本。這個賬本用于記錄比特幣網(wǎng)絡(luò)上發(fā)生的所有事件比如比特幣的轉(zhuǎn)賬。13.5.2 比特幣錢包最終用戶的比特幣存儲在所謂的比特幣錢包中。不過更準(zhǔn)確地說是比特幣錢包持有加密密鑰對的集合如圖 13-7 所示。圖 13-7 比特幣錢包包含密鑰對比特幣地址派生于公鑰如圖 13-7 所示錢包中的每一對密鑰都含有兩個數(shù)字一個私鑰和一個公鑰。私鑰是一個隨機(jī)生成的 256 位數(shù)字。這個數(shù)字必須保密任何知道私鑰的人都可以使用與該密鑰對關(guān)聯(lián)的比特幣。公鑰用于接收比特幣它從私鑰派生而來。在接收比特幣時公鑰表示為比特幣地址一個由公鑰生成的文本字符串例如 13pB1brJqea4DYXkUKv5n44HCgBkJHa2v1。假設(shè)我有一個比特幣要發(fā)給你。這個比特幣和我控制的一個地址關(guān)聯(lián)。也就是說我有這個地址的私鑰。如果你把由你控制的比特幣地址的文本字符串給我我就可以把我的比特幣發(fā)送到這個地址。你不需要也不應(yīng)該把你的私鑰發(fā)給我。我可以把我的比特幣發(fā)給你是因為我有自己地址的私鑰這允許我使用自己的比特幣。反過來我不能從你的地址轉(zhuǎn)出任何比特幣因為我沒有你的私鑰。這段話其實是在講一件事為什么你可以把比特幣地址給別人收錢但別人不能憑地址偷走你的幣??梢赃@樣理解概念相當(dāng)于什么能不能給別人比特幣地址銀行賬號 / 收款碼可以給私鑰銀行卡密碼 / 支付密碼絕對不能給轉(zhuǎn)賬用私鑰簽名證明“我同意轉(zhuǎn)走這筆錢”只有私鑰持有者能做原話拆成白話版“我有一個比特幣它和我控制的一個地址關(guān)聯(lián)”意思是這筆幣記錄在區(qū)塊鏈上屬于某個地址?!拔矣羞@個地址的私鑰”意思是我掌握這個地址的“支付密碼”所以能花里面的幣?!澳惆涯愕牡刂方o我我就能把幣轉(zhuǎn)給你”意思是你只需要給我收款地址就像給我銀行賬號我就能往里面打錢。“你不應(yīng)該把私鑰發(fā)給我”意思是私鑰等于資產(chǎn)控制權(quán)誰拿到私鑰誰就能轉(zhuǎn)走那個地址里的所有幣。“我能轉(zhuǎn)幣是因為我有自己地址的私鑰”意思是轉(zhuǎn)賬時我用我的私鑰對交易做數(shù)字簽名網(wǎng)絡(luò)驗證簽名合法后才承認(rèn)這筆錢是我同意轉(zhuǎn)出去的?!拔也荒軓哪愕牡刂忿D(zhuǎn)出幣因為我沒有你的私鑰”意思是我知道你的地址只能往里面打錢沒有你的私鑰就簽不了名也就動不了你的幣。最簡版本地址 收錢用的門牌號私鑰 開門用的鑰匙。別人知道門牌號只能往你家寄東西但只有拿著鑰匙的人才能從屋里把東西拿走。要不要順帶說說公鑰在這套機(jī)制里起什么作用私鑰和公鑰的配合方式其實是理解為什么地址不能反推私鑰的關(guān)鍵。13.5.3 比特幣交易讓我們仔細(xì)看看這是如何工作的。比特幣的轉(zhuǎn)賬被稱為交易。為了發(fā)送比特幣錢包軟件會構(gòu)造一個交易指定轉(zhuǎn)賬的細(xì)節(jié)用私鑰對其進(jìn)行數(shù)字簽名并向比特幣網(wǎng)絡(luò)廣播該交易。比特幣網(wǎng)絡(luò)中的計算機(jī)會驗證交易并把它添加到區(qū)塊鏈的一個新區(qū)塊中。圖 13-8 展示了一個比特幣交易例子。圖 13-8 比特幣交易把 0.5 比特幣移動到地址 B忽略交易費(fèi)用如圖 13-8 所示交易包含輸入和輸出表示比特幣從哪里來到哪里去。圖的左側(cè)是前一個交易只顯示了輸出因為與前一個交易的輸入無關(guān)。在前一個交易中有 0.5 比特幣被送到了地址 A。圖 13-8 的右側(cè)是新的交易它把 0.5 比特幣從地址 A 移動到地址 B。為了簡單起見這個交易只有一個輸入和一個輸出。輸入表示要轉(zhuǎn)賬的比特幣的來源。你可能認(rèn)為這是個比特幣地址但它不是的。相反這個輸入是前一個交易的輸出。我們假設(shè)地址 A 是我的地址我想把 0.5 比特幣轉(zhuǎn)到你的地址即地址 B。現(xiàn)在我知道之前的 0.5 比特幣已經(jīng)轉(zhuǎn)到了我的地址所以我可以把前一個交易的輸出當(dāng)作新交易的輸入從而把 0.5 比特幣轉(zhuǎn)給你。交易的輸出部分包含了發(fā)送比特幣的地址。盡管你可以認(rèn)為地址具有比特幣余額但與地址關(guān)聯(lián)的比特幣數(shù)量并不存儲在比特幣錢包中并且余額也不會直接存儲在區(qū)塊鏈中。相反與這個地址相關(guān)的交易歷史被存儲在區(qū)塊鏈中而且根據(jù)這個歷史可以計算出某個地址的余額。提醒一下比特幣錢包只包含支持比特幣交易的密鑰。13.5.4 比特幣挖掘**維護(hù)比特幣區(qū)塊鏈的過程稱為比特幣挖掘 (Bitcoin mining)。**來自全球的計算機(jī)把交易區(qū)塊添加到區(qū)塊鏈中這些計算機(jī)被稱為礦工(miner)。圖 13-9 展示了比特幣挖掘過程。圖 13-9 比特幣挖掘過程為了把交易區(qū)塊添加到區(qū)塊鏈礦工必須驗證區(qū)塊中包含的交易確保每個交易在語法上是正確的輸入的貨幣尚未被消費(fèi)等?還必須完成一個困難問題的計算。要求礦工解決這個問題可以防止篡改區(qū)塊鏈因為改變一個區(qū)塊 就需解決 被改變區(qū)塊以及該區(qū)塊鏈上 其后所有區(qū)塊的問題。作為阻止不需要行為的手段這種解決困難問題的系統(tǒng)被稱為 “工作證明” (proof of work)。**要找到計算問題的解決方案就需要大量的試錯計算。**解決方案難以產(chǎn)生但易于驗證。第一個解決問題的礦工將獲得一筆比特幣。這就是新比特幣產(chǎn)生并被引入系統(tǒng)的方式。在這種情況下比特幣挖掘就類似于傳統(tǒng)的挖礦——礦工進(jìn)行工作并在可能的情況下 “挖到金子”?。除了獲得新 “鑄造” 的比特幣之外礦工還可以對該區(qū)塊中包含的每筆交易收取一定費(fèi)用這個費(fèi)用要從交易的比特幣總量中扣除。比特幣被設(shè)計成總共只允許挖掘2100萬比特幣。一旦達(dá)到這個數(shù)字比特幣礦工將不再獲得比特幣只能依靠交易費(fèi)用來獲得其運(yùn)營資本。比特幣的開端比特幣區(qū)塊鏈開始于 2009 年 “挖掘” 的第一個區(qū)塊這個區(qū)塊被稱為 “創(chuàng)世區(qū)塊”?。這個區(qū)塊由 Satoshi Nakamoto 挖掘他被視為比特幣的發(fā)明人。?“Satoshi Nakamoto” 被認(rèn)為是一個化名在撰寫本書時此人的身份仍存在爭議。要通過比特幣挖掘獲利運(yùn)行挖掘硬件的成本不能超過獲得的比特幣的價值。比特幣挖掘硬件常常很耗電所以比特幣挖掘者的電費(fèi)可能很高。最初比特幣是在普通計算機(jī)上挖掘的但現(xiàn)在使用專門的昂貴硬件進(jìn)行盡可能快的挖掘請記住獎勵授予第一個解決問題的計算機(jī)?。這些成本加上比特幣高度波動的價格意味著比特幣挖掘不是一個有保障的盈利途徑比特幣區(qū)塊鏈?zhǔn)枪_的——任何人都可以查看全部交易。但是區(qū)塊鏈不包含比特幣轉(zhuǎn)賬的個人身份記錄。所以雖然余額和交易歷史記錄是公開的但并沒有便捷的方法能把地址和個人聯(lián)系起來。出于這個原因比特幣吸引了那些想要保持匿名的人比如那些在暗網(wǎng)上經(jīng)營商業(yè)網(wǎng)站的人。區(qū)塊鏈技術(shù)與加密貨幣密切相關(guān)它被用作金融賬本還可以用于其他目的。任何需要防篡改歷史記錄的系統(tǒng)都可以使用區(qū)塊鏈。時間會證明比特幣或其他加密貨幣是否能取得長期成功但無論如何我們可能都會看到區(qū)塊鏈以其他新穎的方式發(fā)揮作用。13.6 虛擬現(xiàn)實和增強(qiáng)現(xiàn)實虛擬現(xiàn)實 (Virtual RealityVR) 和增強(qiáng)現(xiàn)實 (Augmented RealityAR) 這兩項技術(shù)有可能從根本上改變我們與計算機(jī)交互的方式。虛擬現(xiàn)實是一種計算形式它讓用戶沉浸在三維虛擬空間中這個空間一般通過頭戴式設(shè)備來呈現(xiàn)。VR 允許用戶通過各種輸入方式與虛擬對象交互輸入方式包括用戶的注視、語音命令和專用手持控制器。相比之下增強(qiáng)現(xiàn)實是把虛擬元素疊加到現(xiàn)實世界中要么通過頭戴式設(shè)備實現(xiàn)要么由用戶 “通過” 手持便攜設(shè)備比如智能手機(jī)或平板電腦實現(xiàn)。VR 讓用戶沉浸在另一個世界AR 改變現(xiàn)實世界。盡管幾十年以來已經(jīng)對 VR 進(jìn)行了各種嘗試但直到 21 世紀(jì) 10 年代VR 才變成主流。Google 在 2014 年通過 Google Cardboard 幫助推廣了VRGoogle Cardboard 的命名出自 VR 頭戴式設(shè)備可以由紙版、鏡片和智能手機(jī)構(gòu)成的想法。通過把左眼內(nèi)容呈現(xiàn)在智能手機(jī)一半屏幕上右眼內(nèi)容呈現(xiàn)在屏幕的另一半上專門設(shè)計的 Cardboard 應(yīng)用程序把 VR 內(nèi)容呈現(xiàn)給用戶如圖 13-10 所示。圖 13-10 專門為 Google Cardboard 設(shè)計的應(yīng)用程序的 VR 模式為 Cardboard 設(shè)計的應(yīng)用程序依賴于智能手機(jī)檢測陀螺儀運(yùn)動的能力允許顯示內(nèi)容隨著用戶頭部的移動而更新。這樣的頭戴式設(shè)備據(jù)說有 3 個自由度 (3DoF)頭戴式設(shè)備可以追蹤有限的頭部運(yùn)動但無法追蹤空間中的其他運(yùn)動。這使得用戶可以使用頭戴式設(shè)備環(huán)顧但不能移動。Cardboard 還支持基本的一鍵輸入。Cardboard 簡單但有效。它向許多用戶介紹了 VR否則他們可能不會嘗試 VR。更具有沉浸感的體驗需要 6 個自由度 (6DoF)用戶可以通過在現(xiàn)實空間中物理移動身體以實現(xiàn)在 VR 中的四處移動。有些 VR 頭戴式設(shè)備支持6DoFVR 控制器可以支持 3DoF 或 6DoF。握在用戶手中的 6DoF 控制器可以追蹤控制器在 VR 空間中的位置從而允許與 VR 環(huán)境進(jìn)行更自然的互動。自 Google Cardboard 推出以來消費(fèi)市場已經(jīng)發(fā)布了許多 VR 解決方案。有些依賴于智能手機(jī)Samsung Gear VR和Google Daydream?。另外一些通過連接 VR 頭戴式設(shè)備和控制器Oculus Rift、HTC Vive和Windows Mixed Reality?使用個人計算機(jī)進(jìn)行處理。還有一些是獨(dú)立設(shè)備不需要智能手機(jī)或 PCOculus Go、Oculus Quest和Lenovo Mirage Solo?。一般來說連接 PC 的解決方案提供了最高的圖形保真度但也是最貴的特別是考慮到所需計算機(jī)的成本時。如前所述增強(qiáng)現(xiàn)實 (AR) 是一種相似但獨(dú)特的技術(shù)。VR 試圖讓用戶完全沉浸在虛擬世界中而 AR 則把虛擬元素疊加到現(xiàn)實世界中。這可以通過移動設(shè)備來完成使用后置攝像頭觀察現(xiàn)實世界將模擬元素疊加到攝像頭所看到的內(nèi)容上。先進(jìn)的 AR 技術(shù)允許軟件理解房間內(nèi)的物理元素這樣疊加的虛擬元素就可以與環(huán)境進(jìn)行無縫交互。移動應(yīng)用程序中的 AR 是以基本形式實現(xiàn)的但在專用設(shè)備中它的實現(xiàn)更為充分比如在Google Glass、Magic Leap 的頭戴式設(shè)備和 Microsoft HoloLens。將這種 AR 設(shè)備戴在頭上可以把計算機(jī)生成的圖形疊加到用戶視野中。用戶能以各種方式比如語音命令或手部跟蹤與虛擬元素進(jìn)行交互。各種 VR 和 AR 技術(shù)統(tǒng)稱為XR為軟件開發(fā)人員提供了多種目標(biāo)平臺。許多 VR 開發(fā)人員依賴于現(xiàn)有的游戲引擎這些游戲引擎一般用于制作 3D 游戲比如 Unity 游戲引擎或 Unreal 游戲引擎。游戲開發(fā)人員對這些游戲引擎已經(jīng)非常熟悉了使用它們能讓開發(fā)人員相對輕松地面向多個 VR 平臺制作自己的軟件。網(wǎng)絡(luò)開發(fā)人員可以使用被稱為 WebVR 和 WebXR 的 JavaScript API 開發(fā) VR 和 AR 內(nèi)容。WebVR 先出現(xiàn)它專注于 VR。WebXR 緊隨其后出現(xiàn)它同時支持 AR 和 VR。13.7 物聯(lián)網(wǎng)傳統(tǒng)上我們認(rèn)為服務(wù)器在互聯(lián)網(wǎng)上提供服務(wù)用戶通過聯(lián)網(wǎng)的個人計算機(jī)設(shè)備比如PC、筆記本計算機(jī)和智能手機(jī)與這些服務(wù)器進(jìn)行交互。近些年我們已經(jīng)看到與互聯(lián)網(wǎng)連接的新型設(shè)備越來越多—如揚(yáng)聲器、電視機(jī)、恒溫器、門鈴、汽車、燈泡應(yīng)有盡有這種把各種設(shè)備連接到互聯(lián)網(wǎng)的概念稱為物聯(lián)網(wǎng) (Internet of ThingsIoT)。電子元件的成本和物理尺寸正在下降Wi-Fi 和蜂窩互聯(lián)網(wǎng)接入正在普及消費(fèi)者希望他們的設(shè)備更加 “智能”?。所有這些都促成了把一切都連接到互聯(lián)網(wǎng)的趨勢。如果沒有某種網(wǎng)絡(luò)服務(wù)的支持IoT 設(shè)備一般不會運(yùn)行所以云計算的興起也促進(jìn)了物聯(lián)網(wǎng)的傳播。對消費(fèi)者而言IoT 設(shè)備在 “智能家居” 中很突出而 “智能家居” 中所有類型的家用電器都能被監(jiān)視和控制。在商業(yè)領(lǐng)域在制造業(yè)、醫(yī)療保健、交通運(yùn)輸?shù)阮I(lǐng)域中都能找到 IoT 設(shè)備。雖然這些類型的連接設(shè)備帶來了明顯的好處但這些設(shè)備也帶來了風(fēng)險。它們的安全性是一個特別值得關(guān)注的領(lǐng)域。不是所有的 IoT 設(shè)備都能很好地抵御惡意攻擊。即使攻擊者對設(shè)備上的數(shù)據(jù)沒興趣攻擊者也可能將這個設(shè)備充當(dāng)攻擊其他防御良好的網(wǎng)絡(luò)的一個據(jù)點(diǎn)或者當(dāng)成對不同目標(biāo)進(jìn)行遠(yuǎn)程攻擊的發(fā)射點(diǎn)。特別是對消費(fèi)者來說IoT 設(shè)備似乎已經(jīng)足夠無害了并且在把這樣的設(shè)備連接到家庭網(wǎng)絡(luò)時安全問題通常不是首要考慮的問題。隱私是 IoT 設(shè)備帶來的另一個風(fēng)險。許多這樣的設(shè)備本質(zhì)上就是收集數(shù)據(jù)的。這些數(shù)據(jù)常常被發(fā)送給云服務(wù)進(jìn)行處理。最終用戶應(yīng)該在多大程度上信任使用他們的個人數(shù)據(jù)運(yùn)行這些服務(wù)的組織即使是善意的組織也有可能成為數(shù)據(jù)泄露的受害者用戶數(shù)據(jù)可能以意想不到的方式被暴露。**像智能音箱這樣的設(shè)備必須一直處于聽的狀態(tài)以等待口頭命令。這就產(chǎn)生了意外記錄私人對話的風(fēng)險。**看到今天的消費(fèi)者心甘情愿用隱私換取便利George Orwell 的小說《1984》的現(xiàn)代讀者可能會發(fā)現(xiàn)某種諷刺意味。IoT 設(shè)備的所有功能常常依賴于云服務(wù)這也是它們帶來的一個風(fēng)險。如果一個設(shè)備與互聯(lián)網(wǎng)的連接中斷這個設(shè)備可能會暫時變得不那么有用。更令人擔(dān)憂的是設(shè)備制造商可能會在某天永久關(guān)閉支持該設(shè)備的服務(wù)。那時智能設(shè)備就會還原成非智能設(shè)備13.8 總結(jié)本章討論了與現(xiàn)代計算機(jī)相關(guān)的各種主題。你學(xué)習(xí)了 app包括本機(jī) app 和網(wǎng)絡(luò) app。你了解了虛擬化和仿真是如何讓計算機(jī)在虛擬硬件上運(yùn)行軟件的。你還了解了云計算是如何為運(yùn)行軟件提供新平臺的。你學(xué)習(xí)了表層網(wǎng)、深網(wǎng)和暗網(wǎng)的區(qū)別以及比特幣等加密貨幣如何實現(xiàn)分布式支付系統(tǒng)。我們談到了虛擬現(xiàn)實和增強(qiáng)現(xiàn)實以及它們?nèi)绾螢橛嬎銠C(jī)提供獨(dú)特的用戶界面。你還了解了 IoT并有機(jī)會搭建一個聯(lián)網(wǎng)的 “自動販賣機(jī)”?。在這里讓我們總結(jié)性地回顧一些主要的計算機(jī)概念看看它們是如何結(jié)合在一起的。計算機(jī)是二進(jìn)制數(shù)字設(shè)備其中的所有信息都表示為 0 和 1。二進(jìn)制邏輯也被稱為布爾邏輯為計算機(jī)運(yùn)算打下了基礎(chǔ)。計算機(jī)用數(shù)字電路實現(xiàn)其電平表示為二進(jìn)制狀態(tài)—低電平為 0高電平為 1。數(shù)字邏輯門是基于晶體管的電路它能執(zhí)行布爾運(yùn)算比如 AND 和 OR。我們可以把這樣的邏輯門排布成更加復(fù)雜的電路比如計數(shù)器、存儲設(shè)備和加法電路。這些類型的電路為計算機(jī)硬件提供了概念基礎(chǔ)這些硬件包括執(zhí)行指令的中央處理器 (CPU)上電時存儲指令和數(shù)據(jù)的隨機(jī)存取存儲器 (RAM) 以及與外界交互的輸入/輸出 (I/O) 設(shè)備。計算機(jī)是可編程的它們可以在不改變硬件的情況下執(zhí)行新任務(wù)。告訴計算機(jī)要做什么的指令被稱為軟件或代碼。CPU 執(zhí)行機(jī)器碼而軟件開發(fā)人員則通常用高級編程語言編寫源代碼。計算機(jī)程序一般在操作系統(tǒng)上運(yùn)行操作系統(tǒng)即與計算機(jī)硬件通信并為程序執(zhí)行提供環(huán)境的軟件。計算機(jī)用互聯(lián)網(wǎng)通信互聯(lián)網(wǎng)是一組全球連接的計算機(jī)網(wǎng)絡(luò)這些網(wǎng)絡(luò)都使用 TCP/IP 協(xié)議套件。互聯(lián)網(wǎng)的一個流行的應(yīng)用是萬維網(wǎng)它是一組分布式的、可尋址的、鏈接的資源通過 HTTP 在互聯(lián)網(wǎng)上傳遞。所有這些技術(shù)都為現(xiàn)代計算機(jī)的創(chuàng)新提供了一個蓬勃發(fā)展的環(huán)境。我希望這本書能讓你全面了解計算機(jī)是如何工作的。本書涵蓋了大量的基礎(chǔ)知識但我們?nèi)匀恢簧婕按蠖鄶?shù)主題的表面。**如果某個特定的領(lǐng)域引起了你的注意那么我鼓勵你繼續(xù)探索這個主題**還有大量關(guān)于計算機(jī)的知識有待發(fā)現(xiàn)。