軟件開發必知必會的計算機基礎

1. 計算機基本介紹

1.1 什麼是計算機

image

計算機(Computer)俗稱爲電腦,計算機是一種高速計算的電子機器,計算機可以進行數值運算邏輯判斷接收或者是存儲信息數據(文本、圖片、音頻、視頻),按照存儲在其內部的程序對海量的數據進行高速、自動化的處理,然後將處理的結果輸出(到屏幕)的一種現代化的智能電子設備。

Q:如何知道當前使用的計算機上運行了哪些程序?

A:Windows系統使用任務管理器查看,macOS系統使用活動監視器查看,它們都可以查看進程(正在運行的程序)佔用的CPU、內存、硬盤、網卡資源。

Windows11 任務管理器

image

macOS Ventura 活動監視器

image

1.2 常見的計算機

在日常生活中常見的手機、平板電腦、筆記本電腦、臺式機都是屬於計算機。

手機-iPhone14 Pro

image

平板電腦-iPad Pro

image

筆記本電腦-MacBook Pro

image

臺式機-iMac

image

臺式機-Mac Studio

image

臺式機-Mac Pro

image

從事開發或者是運維相關的工作,那麼關注的更多的是筆記本電腦或者是臺式機,因爲開發或者是運維相關工作的具體內容就是去公司使用筆記本電腦或者是臺式機來開發和維護項目的。而手機和平板電腦對於大部分人來說是娛樂設備,例如使用手機和平板電腦去聽歌、打遊戲、追劇、購物等等

2023款16寸MacBook Pro

image

Q:除了手機、平板電腦、筆記本電腦、臺式機四種計算機以外,還有沒有其他類型的計算機?

A:除了上述介紹的四種計算機以外,還有提供各種商業應用(電商、支付、物流、金融、社交)支撐的大型服務器集羣(Server Cluster)。

服務器就是一臺高配的計算機,服務器一般是放在機房的,機房一般是位於比較偏遠的地方,例如騰訊和蘋果的部分服務器就是放在貴州的大山裏面,而互聯網公司(百度、騰訊、阿里、美團、字節跳動、螞蟻)一般會安排Linux運維工程師遠程管理這些服務器,服務器集羣就是**成千上萬臺(甚至幾十萬臺)**高配的計算機,具體服務器集羣的數量和公司業務規模有關係,例如谷歌在全世界很多國家都有業務往來,服務器集羣數量到達上百萬臺。

戴爾(DELL)PowerEdge R750 2U機架式服務器

image

image

Q:服務器的配置爲什麼會這麼高?

A:服務器的用途:處理海量用戶請求,存儲和計算海量用戶數據

從事開發或者運維相關的工作,除了會使用筆記本電腦、臺式機開發項目,項目開發完成後還會將項目部署到服務器,因此需要對服務器有個基本瞭解。

1.3 計算機的使用場景

在當今的社會,計算機(手機、平板電腦、筆記本電腦、臺式.機)幾乎是無處不在的,是無所不能的,當擁有了一臺計算機以後就可以使用計算機來解決在日常生活中和工作中的常見需求,其背後依賴的是計算機軟硬件的共同協作來實現的。

日常生活中的常見需求和軟件解決方案

需求解決方案(軟件)
社交微信QQ
看電影、追劇愛奇藝、優酷、騰訊視頻
聽歌QQ音樂、酷狗音樂、網易雲音樂
購物京東、淘寶
訂機票、酒店飛豬、美團、攜程
訂外賣美團外賣、餓了麼
打遊戲王者榮耀、英雄聯盟

日常工作中的常見需求和軟件解決方案

需求軟件解決方案
辦公釘釘企業微信飛書
在線會議騰訊會議、金山會議
收發郵件個人:網易郵箱大師、QQ郵箱 企業:騰訊企業郵箱、釘釘郵箱
打車滴滴打車、美團打車
看學習視頻bilibili慕課網騰訊課堂極客時間

2. 計算機核心硬件

2.1 計算機核心硬件-CPU

2.1.1 CPU基本介紹

CPU(Central Processing Unit) 中文就是中央處理器,有時候直接簡稱爲處理器,或者叫做芯片

CPU類似於人的大腦,CPU是計算機最核心的硬件。

CPU的好壞會直接影響整個計算機的硬件性能,內存和硬盤的好壞也會直接影響整個計算機的硬件性能,所以我們通常都會將CPU、內存、硬盤稱爲計算機的三大核心硬件。

image

Q:計算機除了三大核心硬件還有哪些其他的硬件設備?如果有的話通過什麼工具查看硬件設備的配置

A:Windows通過魯大師的硬件參數查看,macOS通過系統報告查看

魯大師-計算機硬件參數(Windows)

image

系統報告(macOS)

image

2.1.2 CPU主要組成

CPU主要是由運算器控制器組成,運算器主要是負責數據的運算,控制器主要是負責控制其他計算機硬件設備的協同工作,控制器類似於交警,交警是用於指揮協調地面的交通。

CPU的三級緩存(L1 Cache,L2 Cache,L3 Cache)

image

2.1.3 CPU主要作用

CPU的主要作用就是用於執行計算機指令以及處理計算機軟件的數據,每種CPU都是有自己的計算機指令系統,例如手機的CPU就是基於ARM架構的精簡指令集,而PC(Windows系統的筆記本電腦、臺式機)的CPU就是基於X86架構的複雜指令集,不同的計算機設備(手機、筆記本電腦)所使用的CPU可能不相同,計算機指令系統也不相同,這就是爲什麼手機上的程序不能直接在電腦上運行的本質原因。

2.1.4 主流計算機CPU

當我們從事開發或者是運維相關的工作以後,難免每天都會和計算機(服務器、PC)打交道,其中如果你是從事運維的工作那麼和服務器打交道更多些,如果你從事開發(前端開發、後端開發)那麼和PC打交道更多些。

主流服務器的CPU廠商是Intel,主流的服務器(戴爾聯想、浪潮、超聚變)採用的CPU是Intel的至強可擴展處理器(第二代、第三代、第四代)

戴爾服務器

image

聯想服務器

image

浪潮服務器

image

超聚變服務器

image

主流PC的CPU廠商是Intel、AMD、Apple

Intel目前用於PC(臺式機)性能最強的CPU型號是13900KS,想要了解Intel CPU最新的相關信息訪問Intel官方網站即可。

image

image

Apple目前用於PC(臺式機 Mac Pro)的性能最強的CPU型號是M2 Ultra(2個M2 Max),想要了解Apple CPU最新的相關信息訪問Apple官方網站即可。

image

image

2.2 計算機核心硬件-內存

2.2.1 內存基本介紹

內存是計算機的存儲部件,內存也被稱爲內部存儲器,CPU可以直接訪問內存中的數據,而且讀寫的效率比較(和硬盤比較)高。

2.2.2 內存主要作用

  1. 內存用於暫時存儲CPU運算的指令和數據,程序是由指令數據組成的(程序是在內存中運行的)。例如微信程序的微信好友就是數據,而點擊發送按鈕給微信好友發送消息的背後就是一系列的指令,消息本身也是數據。

  2. 內存和硬盤等外部設備進行數據交換,例如使用程序將硬盤中的數據加載(讀取)到內存中,或者使用程序將內存中的數據寫入到硬盤。

2.2.3 內存分類

  1. 按照DDR代數分類:目前主流的DDR代數是DDR4和DDR5,其中DDR4的內存頻率一般是在3600MHz左右,而DDR5的內存頻率要更高一些,一般是4800MHz-6400MHz甚至更高(7200MHz、8000MHz)

內存的實際運行頻率取決於CPU和主板

image

標配的運行頻率和實際運行頻率可能不一致

image

  1. 按照平臺分類:筆記本電腦、臺式機、服務器這三種計算機都是有內存,但是它們三者之間的內存是不通用的。

筆記本電腦內存

三星 DDR5 16GB 5600MHz 筆記本內存條

image

三星 DDR5 32GB 4800MHz 筆記本內存條

image

臺式機內存

芝奇 DDR5 6400 32GB*2

image

芝奇 DDR5 7200 16GB*2

image

芝奇 DDR5 8000 24GB*2

image

美商海盜船 96GB(48*2) DDR5 5600image

服務器內存

三星 DDR5 64GB 4800MHz RECC 服務器內存

image

海力士 128GB DDR5 4800 RECC服務器內存

image

2.2.5 內存主要特點

  1. 內存的容量比較(和硬盤)小,單根容量一般是16GB-128GB,其中個人使用的筆記本電腦、臺式機總內存容量通常都是16GB起步,最大可以達到192GB(48GB*4),而服務器總內存容量通常都是64GB起步,最大可以達到512GB甚至1TB-2TB,1TB=1024GB。

  2. 不能永久存儲數據,一旦斷電之後數據就會丟失

2.2.4 個人使用電腦如何防止數據丟失

數據是公司最寶貴的資源,在硬件層面和軟件層面有很多方法防止數據丟失

以前個人在使用電腦的時候經常使用快捷鍵Ctrl+s/Command+s將數據保存到硬盤,從而實現數據的永久存儲。

現在很多的軟件提供了自動保存的功能,例如Typora,Visual Studio Code,IntelliJ IDEA等等,我們可以通過設置開啓自動保存以後就能夠實現將數據自動保存到硬盤。

Typora設置自動保存

依次點擊文件>偏好設置>通用,勾選保存&恢復右邊的自動保存

image

Visual Studio Code開啓自動保存

依次點擊左下角的齒輪>Settings,然後在搜索框搜auto save,在Files:Auto Save選擇afterDelay,在Files:Auto Save Delay設置100即可

image

2.3 計算機核心硬件-硬盤

2.3.1 硬盤基本介紹

硬盤是計算機的存儲部件,硬盤也被稱爲外部存儲器,CPU是不能直接訪問硬盤中的數據,如果想要CPU訪問硬盤中的數據,那麼我們就需要使用程序(操作系統)將硬盤中的數據加載(讀取)到內存中,然後再提供給CPU訪問。

Q:程序運行的基本流程是什麼?操作系統以及CPU、內存、硬盤、網卡四大核心硬件各自發揮什麼作用?

A: Windows環境下雙擊程序所在桌面的快捷方式之後,操作系統會根據快捷方式查找到對應可執行程序的硬盤路徑,並將該硬盤路徑下的可執行程序加載到內存中,並且會爲其創建相應的進程。CPU從內存中讀取該可執行程序的指令和數據並執行。如果該程序涉及到網絡相關的操作,那麼網絡數據的收發由網卡完成。

我們以網易有道翻譯爲例介紹程序運行的基本流程以及在該過程中CPU、內存、硬盤、網卡四大核心硬件各自發揮什麼作用

當前桌面有很多程序,實際上大部分程序都只是快捷方式

image

選中網易有道翻譯,然後右鍵屬性

image

在網易有道翻譯 屬性 面板中選擇目標路徑,就可以查看到快捷方式對應可執行程序的路徑C:\Users\liuguanglei\AppData\Local\youdao\dict\Application

image

然後在文件資源管理器中打開,桌面的快捷方式 網易有道翻譯可執行程序路徑就是,Windows下可執行程序是.exe結尾

C:\Users\liuguanglei\AppData\Local\youdao\dict\Application\YoudaoDict.exe

image

當雙擊桌面的網易有道翻譯快捷方式,操作系統會執行該快捷方式對應的可執行程序YoudaoDict.exe從硬盤加載到內存中,然後會爲其創建進程,任務管理器中可以查看到該進程以及該進程佔用的CPU、內存、硬盤、網絡資源。

image

CPU會從內存中讀取網易有道翻譯的指令和數據然後執行。

如果在網易有道翻譯輸入需要翻譯的單詞或者句子後點擊查詢,此時網卡會負責數據的收發

image

2.3.2 硬盤的特點

  1. 硬盤的容量比較大,通常都是TB(1TB=1024GB)級別的,例如單塊硬盤的容量通常都是1TB,2TB,4TB,8TB,16TB等等

  2. 硬盤主要是用於永久存儲數據的,內存中的數據斷電後會丟失,但是硬盤中的數據斷電後不會丟失。

2.3.3 硬盤分類

image

2.3.3.1 機械硬盤

機械硬盤容量大(TB級別),例如單塊機械硬盤的容量通常都是1TB,2TB,4TB,8TB,16TB等等,價格比較便宜,讀寫速度比較慢(拷貝文件:50MB/s-100MB/s,實際速度取決於文件的數量)

機械硬盤拷貝文件

image

機械硬盤按照轉速不同分類:

機械硬盤常見的轉速有5400RPM,7200RPM,10000RPM,15000RPM,轉速越高讀寫的速度就會越高。

其中5400RPM,7200RPM一般是普通家用、辦公使用

而7200RPM,10000RPM,15000RPM通常都是服務器使用

機械硬盤按照尺寸不同分類:2.5英寸和3.5英寸

希捷2TB 3.5英寸機械硬盤

image

2.3.3.2 固態硬盤

固態硬盤容量比較大(TB級別),例如單塊固態硬盤的容量通常是1TB,2TB,4TB,8TB,價格比較貴,讀寫速度快(拷貝文件:500MB/s-3GB/s,實際速度取決於文件的數量),1GB=1024MB

固態硬盤拷貝文件

image

固態硬盤按照接口分類:分成M.2接口(NVMe協議)和M.2接口(SATA總線),其中NVMe協議又分成了PCIe3.0、PCIe4.0和PCIe5.0,目前主流的固態硬盤一般都是PCIe4.0

三星 990Pro 2TB

image

致態 TiPro7000系列

image

宏碁掠奪者(PREDATOR)GM7000系列 4TB

image

梵想(FANXIANG)S790 4TB

image

2.3.4 硬盤選型

因爲機械硬盤體積大,讀寫速度慢,所以目前新出的筆記本電腦是無法使用機械硬盤的,不過如果是臺式機或者是服務器可以同時使用機械硬盤和固態硬盤

一般情況下無論是個人還是企業對於硬盤的選型在滿足性能要求的前提條件下考慮性價比,因此大部分場景下機械硬盤和固態硬盤混合使用。

例如個人在使用臺式機時,系統盤使用固態硬盤,然後將操作系統、應用軟件安裝在系統盤中,這樣開機快,軟件運行速度也快,節省時間就是掙錢(時間就是金錢)。數據盤使用機械硬盤,然後將學習資源存放在數據盤,例如D盤、E盤、F盤中。

如果不考慮性價比,那麼推薦全部使用固態硬盤

2.4 計算機核心硬件-網卡

2.4.1 網卡基本介紹

網卡的名字有很多,在服務器領域經常會看到NIC(Network Interface Card),中文就是網絡接口卡,簡稱爲網卡,除此以外網卡也被稱爲以太網卡或者是網絡適配器

2.4.2 網卡的作用

網卡的作用就是用於將客戶端服務器相互連接的電路板組件。

客戶端:發起請求的那一方,例如PC(筆記本電腦、臺式機)上通常使用瀏覽器發起請求,移動設備(手機)上通常使用App發起請求

服務器:響應請求/處理請求的那一方,例如京東服務器/淘寶服務器等等

網卡的作用案例:使用瀏覽器客戶端訪問京東網站,訪問京東網站就是訪問京東服務器的那個京東網站程序

打開瀏覽器後,在瀏覽器的地址欄輸入jd.com然後回車,瀏覽器客戶端就會給京東服務器發送請求,請求的數據是京東網站首頁。請求的數據是由網卡發送給京東服務器。

京東服務器收到瀏覽器後將京東網站首頁的數據內容返回給瀏覽器客戶端,返回的數據是由網卡接收,瀏覽器客戶端負責渲染頁面。

任務管理器中可以查看到瀏覽器佔用的CPU、內存、硬盤、網絡,此時只需要終端關注網絡數據量的變化。

image

2.4.3 網卡分類

image

常見網卡的分類方式有如下四種

  1. 網卡按照連接方式分類:分成有線網卡和無線網卡,有線網卡是通過網線或者是光纖將設備連接到網絡,無線網卡通常是有一根或者多根小天線,利用無線電波和其他設備進行通訊。

  2. 網卡按照接口類型分類:分成PCI-E、USB

  3. 網卡按照端口類型分類:分成RJ-45端口網卡(筆記本電腦、臺式機)和光端口(光口)網卡(服務器)

  4. 網卡按照連接速度分類:分成百兆網卡(100Mbps)、千兆網卡(1000Mbps、3000Mbps)、萬兆網卡(10Gbps、25Gbps、40Gbps、100Gbps) 1Gbps=1000Mbps,10Gbps=10000Mbps

2.4.4 常見計算機網卡

個人使用的PC(筆記本電腦、臺式機)一般是同時內置有線網卡和無線網卡兩種網卡,其連接速度一般是千兆(1000Mbps、3000Mbps)左右

COMFAST AX200 臺式機 PCI-E接口 無線網卡

image

COMFAST P25 V2 臺式機 PCI-E接口 有線網卡

image

硬件參數-網卡

image

服務器一般內置的網卡都是有線網卡,連接速度一般都是萬兆(10Gbps、25Gbps、40Gbps、100Gbps)

10G四光口光纖網卡

image

25G四光口光纖網卡

image

40G單光口光纖網卡

image

100G雙光口光纖網卡

image

3. 計算機軟件

3.1 爲什麼會有軟件

計算機軟件有時候簡稱爲軟件

人們在日常生活中和工作中有各種各樣的需求,例如社交、打車、旅遊、辦公(在線會議、收發郵件、在線文檔)等等,正是由於有這些需求,因此有些人(老闆)成立軟件公司\互聯網公司招聘一批程序員開發各種各樣的軟件。

軟件出現的目的就是爲了幫助人們更加方便地解決在日常生活中和工作中的常見需求。

比如以打車爲例,在沒有打車軟件之前想要打車的話是需要自己去馬路上招手叫車,有了打車軟件(滴滴)以後只需要註冊賬號,然後在軟件上叫車即可,而且還可以通過打車軟件支付打車費用。

軟件的價值是遠遠超過硬件的價值的,例如抖音微信的估值是幾千億人民幣,因爲其擁有海量用戶,可以產生巨大的商業價值。現在有越來越多的人從事軟件相關的工作(產品、UI、開發、測試、運維),因爲軟件行業要比其它行業更好些,例如軟件行業相對比較公平,在一線城市起步薪水10000以上,工作3-5年以後可以拿到20000-50000月薪。

3.2 軟件組成

軟件主要就是由一系列按照特定順序組織的計算機指令和數據組成,除此以外還有一些其他的,例如設計文檔、開發文檔、用戶使用手冊等等。

  • 計算機指令就是由程序員(開發者/軟件工程師/開發工程師/碼農/新型農民工)採用某種編程語言(C/C++/Java/JavaScript/Scala/Swift/Kotlin/Python/Go/Rust)編寫的代碼,代碼最終會被編譯器或者是解釋器翻譯成計算機指令,例如點擊微信的發送按鈕給微信好友發送消息的背後就是一系列的計算機指令。

  • 數據就是由不同的業務場景產生的,例如微信的微信好友數據就是加好友產生的,微信的微信消息數據就是給微信好友發消息產生的。

3.3 軟件分類

軟件分成系統軟件應用軟件兩大類

image

3.3.1 系統軟件

常見的系統軟件有操作系統、語言處理程序、數據庫、硬件驅動

3.3.1.1 操作系統

不管是服務器、還是PC以及手機都是有操作系統

  • 服務器操作系統

服務器操作系統又叫做服務端操作系統,主流的服務器操作系統是Unix、Linux、Windows Server

Unix是最早出現的操作系統,採用C語言編寫的,後來基於Unix發展出很多分支,例如IBM AIX、Sun Solaris、HP HP-UX等等

Linux是基於Unix,後來也發展出很多分支發行版本,例如CentOS、Ubuntu Server,主流互聯網公司(百度、騰訊、阿里、美團、字節、螞蟻)的服務器操作系統使用的幾乎都是Linux

服務端操作系統-CentOS

image

服務端操作系統-Ubuntu Server

image

Windows Server是微軟公司推出的企業版Windows,由於容易上手因此在一些中小型企業中使用。

  • PC操作系統

PC指的就是個人電腦,包括筆記本電腦以及臺式機

主流的PC操作系統或者叫PC端操作系統是Windows、macOS、Ubuntu Desktop

目前全世界使用人數最多的PC操作系統是Windows,包括Windows11、Window10等等

image

Mac電腦(MacBook Pro, Mac Studio ,Mac Pro)標配的都是macOS系統,非常適合做軟件開發。

image

Ubuntu Desktop顧名思義就是桌面版Ubuntu,有少部分人使用該系統做軟件開發

image

  • 移動端操作系統

移動端通常指的手機、手錶、平板、車機等移動設備

主流的移動端操作系統是Android,iOS,鴻蒙OS

Android系統是全世界使用人數最多的手機操作系統,三星、小米、OPPO、VIVO都是使用Android系統

image

iOS系統是蘋果手機(例如iPhone 14 Pro Max)操作系統

image

鴻蒙OS是華爲推出的分佈式操作系統,支持手機、手錶、平板、車機、智慧屏

image

我們前期在學習項目開發大部分時間都會使用Windows或者macOS,項目測試、部署時會使用Linux,例如CentOS或者是Ubuntu Server。

3.3.1.2 語言處理程序

語言指的是編程語言或者是計算機語言,常見的語言處理程序有編譯器和解釋器。

例如C語言編寫的C程序需要通過編譯器編譯後再運行,Python編寫的Python程序需要經過Python解釋器邊解釋邊運行

3.3.1.3 數據庫

數據庫是用於存儲海量用戶數據,常見的數據庫有關係型數據庫MySQL、PostgreSQL、Oracle等等,常見的NoSQL數據庫有RedisMongoDB等等。

3.3.1.4 硬件驅動

計算機硬件設備通常是要安裝對應的驅動程序才能使用,例如想要上網除了有網卡還要安裝網卡驅動,想要使用打印機還需要安裝對應的打印機驅動,想要玩遊戲也需要對應的顯卡驅動。

3.3.2 應用軟件

在日常辦公時我們會使用到非常多的應用軟件,而且絕大部分應用軟件既有Windows版本,又有macOS版本。

Windows常用應用軟件

image

macOS常用應用軟件

image

image

我們以後在下載和安裝軟件時需要根據所使用操作系統的版本來選擇對應的軟件版本

釘釘

image

微信

image

騰訊會議

image

3.4 軟件交互方式

運行在不同操作系統上的軟件 交互方式是不一樣的,使用的人羣也是不一樣的。

  • 服務端操作系統(Unix/Linux)的軟件交互方式是基於命令行(Command Line Interface CLI)的字符界面,主要是提供給程序員/Linux運維工程師使用的。

image

  • PC端操作系統(Windows,macOS)的軟件交互方式是基於鼠標鍵盤的圖形化界面(Graphical User Interface GUI),主要是提供給程序員/Linux運維工程師/普通人使用的。

image

  • 移動端操作系統(Android,iOS/iPadOS,鴻蒙OS)的軟件交互方式是基於手勢觸控(滑動)、語音的圖形化界面,主要是提供給程序員(Android工程師,iOS工程師)/普通人使用

image

4. 計算機系統

4.1 計算機系統組成

計算機系統是由計算機硬件系統和計算機軟件系統兩部分組成

image

4.1.1 計算機硬件系統

計算機硬件系統是由CPU、內存、硬盤、網卡、主板、輸入輸出設備等組成,常見的輸入設備是鼠標、鍵盤,常見的輸出設備是聲卡、顯卡、顯示器,其中鍵盤叫做標準輸入設備,顯示器叫做標準輸出設備

從事開發或者是運維相關的工作,那麼需要重點關注CPU、內存、硬盤、網卡四大核心硬件。因爲在開發項目的過程中可能會遇到某些錯誤,這些錯誤可能是業務問題,例如開發電商系統時通常會有訂單金額計算業務,如果沒有搞清楚訂單金額計算規則,那麼就可能導致訂單金額計算錯誤,也可能是因爲項目的某些錯誤導致計算機硬件相關的問題。

[優先級: 1] CPU高負載

[優先級: 2] 內存溢出

[優先級: 3] 硬盤寫滿

[優先級: 4] 網絡不通

4.1.2 計算機軟件系統

計算機軟件系統是由系統軟件和應用軟件組成

從事開發或者是運維相關的工作,那麼需要重點關注操作系統,操作系統在計算機系統中的地位非常重要,操作系統既要給系統軟件和應用軟件提供運行平臺,還要負責和底層計算機硬件設備進行交互

4.2 計算機系統體系結構

image

  1. 軟件(Software)是運行在硬件(Hardware)之上

  2. 無論是系統軟件還是應用軟件都是運行在操作系統(Operating System)之上

  3. 操作系統(例如Linux)主要是由內核(Kernel)和外殼(Shell)兩部分組成,內核(Kernel)主要是負責和計算機硬件設備進行交互,外殼(Shell)主要是負責和用戶(程序員/Linux運維工程師)進行交互。Shell可以有多種實現,例如bash,csh,zsh等等,其中CentOS默認是bash,macOS默認是zsh。Linux命令都是提交給Shell執行的,Shell也是一門腳本語言,通過Shell編程實現自動化運維。

5. 計算機常用單位

5.1 計算機常用容量單位

5.1.1 計算機常用容量單位介紹

計算機常用的容量指的就是內存容量硬盤容量,例如2023款MacBook Pro最高可以選擇96GB統一內存以及8TB固態硬盤

image

這裏的GBTB都是容量單位

但是在物理層面,我們使用高低電平來記錄信息的,通常都是使用高電平表示1,低電平表示0

因此在計算機底層只能識別0和1兩種狀態,但是0和1能夠表示的信息太少了,因此我們需要更大的容量單位

常用的容量單位以及使用場景(從小到大排序)

容量單位使用場景
位(bit)計算機最小的容量單位,只能存儲0或者1,通常用於門電路
字節(Byte)計算機最基本的容量單位(計算機中實際使用的最小單位),通常用於表示文件大小、網絡傳輸(上傳文件、下載文件)
千字節(KB)通常用於表示文件大小、網絡傳輸(上傳文件、下載文件)
兆字節(MB)
吉字節(GB)通常用於表示文件大小、內存、硬盤的容量
太字節(TB)通常用於表示服務器內存、硬盤的容量
拍字節(PB)通常用於表示大數據系統處理的數據容量
艾字節(EB)通常用於表示互聯網大廠(百度、騰訊、阿里、美團、字節跳動、螞蟻)的區域數據中心的總容量

它們的換算關係如下所示

1EB=1024PB
1PB=1024TB
1TB=1024GB
1GB=1024MB
1MB=1024KB
1KB=1024Byte
1Byte=8bit

5.1.2 計算機常用容量單位使用

爲什麼我買的4TB硬盤的實際總容量沒有4TB,只有3.63TB左右?

計算機中的4TB容量換算成字節

4TB=4*1024*1024*1024*1024Byte

硬盤廠商的4TB容量換算成字節

4TB=4*1000*1000*1000*1000Byte

以上看出計算機容量單位是以1024 進行換算的,但是硬盤廠商(希捷、西部數據、三星、金士頓)是以1000進行換算的

因此4TB硬盤的實際可用容量

4*1000*1000*1000*1000/1024/1024/1024/1024≈3.63TB

2T的固態硬盤實際可用容量也只有1.86TB左右

image

5.2 計算機常用速度單位

5.2.1 網絡速度單位

網絡速度簡稱網速

常用的網速單位是Mbps,Mbps是megabits per second的縮寫,是一種傳輸速率單位,指每秒傳輸的位(比特)數量。1Mbps代表每秒傳輸1,000,000位(bit),計算機中實際使用的最小容量單位是字節,因此需要將位(比特)轉換成字節,即每秒傳輸的數據量爲:1,000,000/8=125,000Byte/s。

寬帶運營商(電信、移動、聯通)聲稱的百兆帶寬也就是100Mbps,但是100M帶寬的峯值下載速度也就是10MB/s左右,它們的換算關係就是100Mbps/8=12.5MB/s,1Byte=8bit

如果想要獲取寬帶的網速,那麼使用網速管家測試網速,測試結果僅供參考

image

5.2.2 CPU速度單位

CPU的速度一般是由CPU的時鐘頻率體現的,而時鐘頻率的單位就是赫茲(Hz),而目前主流CPU的時鐘頻率一般都是在2GHz以上,赫茲(Hz)就是秒分之一,也就是每秒鐘的週期性變動重複次數的計量

不過在早期CPU的速度是經歷KHz、MHz逐步發展的,GHz、MHz、KHz、Hz的換算關係如下所示

1KHz=1000Hz
1MHz=1000KHz
1GHz=1000MHz

假設你的臺式機CPU是13900KS,那麼它睿頻頻率最高是6GHz

image

6GHz轉換成Hz

6GHz=6*1000*1000*1000Hz= 6 000 000 000Hz

也就意味着6GHz的CPU每秒鐘可以變化60億次

Windows中可以通過任務管理器中查看CPU的速度,不同的CPU速度是不一樣的。

image

6. 計算機語言

6.1 什麼是計算機語言

語言是人和人之間進行溝通交流的一種表達方式,例如中國人和中國人之間使用漢語進行溝通交流,而中國人和美國人之間使用漢語或者使用英語進行溝通交流,但是溝通交流的前提條件就是必須要使用溝通雙方都能夠理解的語言

計算機語言是人(程序員)和計算機進行溝通交流的一種表達方式。程序員可以使用計算機語言對計算機下達命令,讓計算機完成程序員需要的功能。

計算機語言有時候也被稱爲編程語言,因爲學習計算機語言的目的就是爲了編程(寫代碼、寫程序、開發項目)

計算機語言有很多種,每年都會出現一些新的計算機語言,但是主流的計算機語言只有20多種,例如C/C++/Java/JavaScript/Scala/Swift/Kotlin/Python/Go/Rust等等,如果你想要成爲一名程序員,就需要系統、深入地掌握其中的一到兩種語言這些語言都有很多類似的地方,當你掌握其中一種語言後,可以快速地掌握其他類似的語言。image

6.2 計算機語言發展史

任何事物都是從無到有逐漸發展壯大起來的,計算機語言也是一樣的。

計算機語言的發展經歷了機器語言、彙編語言高級語言(高級程序設計語言、高級編程語言、高級計算機語言)三個階段,其特點就是讓程序的開發、測試、部署變得越來越高效、簡單、方便,不過是以犧牲了程序的運行效率(性能)作爲代價的,但是隨着計算機硬件的高速發展,在絕大多數場景下程序運行效率(性能)的損失是可以忽略不計的。

  • 第一代計算機語言-機器語言

在計算機發展的早期,程序員採用二進制的機器指令(1000111001001100)來編寫程序,每種CPU都是有各自不同的指令系統,例如x86,ARM等等,這樣導致同一個程序在不同的機器上需要使用不同的機器語言,也就意味着面向機器編寫的程序是不能夠移植的,需要手動處理底層硬件的差異性。而且二進制的機器指令編寫的程序是難以理解和維護的,但是機器語言編寫的程序的運行效率(性能)是最高的,因爲計算機可以直接識別二進制的機器指令

  • 第二代計算機語言-彙編語言

隨着計算機技術的高速發展,後來彙編語言和彙編器的出現解決了機器語言需要記住非常多的機器指令,也就是將機器指令轉換成了人類更加容易理解和記憶的英文單詞(例如MOV,AX,BX),然後由彙編器將英文單詞編譯成機器指令,因爲計算機最終只能夠識別二進制的機器指令

彙編語言也是面向機器的,不同機器的彙編指令也是不一樣的,彙編語言編寫的程序也是不能移植的。但是儘管如此,彙編語言在工業電子編程、軟件的加密解密、計算機病毒分析等場景中廣泛使用。

  • 第三代計算機語言-高級語言

高級語言的高級之處體現在程序員在編寫代碼的時候不需要關注底層硬件的差異性,而只需要關注實現的業務功能即可。高級語言編寫的程序是需要通過編譯器編譯後再運行或者是通過解釋器邊解釋邊運行,而且相比機器語言、彙編語言而言,高級語言更加容易學,因此會有更加充足的人力資源(程序員)來開發大型的商業軟件。

高級語言分類

image

高級語言按照編程思想分類:分成面向過程和麪向對象兩大類,例如C語言就是面向過程的高級語言,而Java,Python、Go等等都是面向對象的高級語言

高級語言按照運行機制分類:分成編譯型解釋型兩大類,例如C/C++是編譯型語言,Python是解釋型語言。

編譯型:編譯的含義指的是編譯型語言編寫的源程序使用編譯器一次性翻譯特定平臺的機器指令**。**

編譯型語言的特點是性能更高,但是通常不能跨平臺

解釋型:解釋的含義指的是解釋型的語言編寫的源程序使用解釋器逐行邊解釋邊運行。

解釋型語言的特點是性能略低,但是通常可以跨平臺

三代計算機語言的主要特點彙總

計算機語言開發效率排行榜運行效率(性能)排行榜程序可維護性排行榜程序是否可以移植學習難度
第一代計算機語言-機器語言第3名第1名第3名★★★★★
第二代計算機語言-彙編語言第2名第2名第2名★★★★
第三代計算機語言-高級語言第1名第3名第1名★★★

目前大部分人學習計算機語言時通常都是選擇第三代計算機語言-高級語言,例如Java,Python,Go,JavaScript,C/C++等等,很少有人選擇機器語言和彙編語言。

6.3 計算機語言排行榜

如果現在想要知道這些計算機語言的活躍程度排名,那麼可以訪問TIOBE計算機語言排行榜

2023年7月計算機語言排行榜前20名(每個月會更新一次)

image

目前排名第一的是Python,Python是由於人工智能火起來的,但是人工智能的門檻非常高,例如學歷必須是計算機相關專業的碩士、博士,而且人工智能的學習難度非常高,對數學的要求比較高,因此對於大部分人來說都不太適合做人工智能的開發。

緊隨其後的就是C、C++和Java

從TIOBE提供的計算機語言歷史走勢圖可以看出,從2002年到2022年大部分時間都是C和Java輪流做老大(排名第一)

image

6.4 計算機語言使用場景

每一種計算機語言都是有自己擅長的使用場景(開發方向),大家如果想要從事軟件開發行業,那麼就應該根據市場的需求再結合自己的喜好選擇對應的計算機語言。

高級計算機語言應用場景

高級計算機語言應用場景
C操作系統(Unix/Linux/Windows/macOS/Android,iOS,鴻蒙OS)、硬件驅動、中間件(Redis,Nginx)、嵌入式
C++大型應用軟件(PhotoShop、Office、Chrome)、網絡通訊、科學計算、 遊戲開發、中間件(MySQL、JVM)、人工智能
C#Windows應用、Web應用、遊戲開發
Java大型分佈式系統後臺(淘寶、天貓、支付寶、菜鳥物流)、Android App 、大數據開發(Hadoop、HBase、Zookeeper)、中間件(RocketMQ、Sharding-Sphere)
Go雲計算(Docker、Kubernates)、大型分佈式系統(高併發)、爬蟲、大數據、人工智能
Objective-C/SwiftiOS應用、iPadOS應用、macOS應用
PythonWeb開發、人工智能、爬蟲、自動化測試、自動化運維、數據分析、大數據
JavaScriptWeb前端、服務端(Node.js)、PC端(Electron)
Scala大數據
KotlinAndroid App

6.5 我該選擇哪種計算機語言

沒有最好的計算機語言,只有在特定場景下相對最合適的計算機語言而已,因爲這些語言創造出來的目的就是爲了解決某個場景的需求,但是無法解決所有需求。

如果你想要找個高薪工作(15k-30k),那麼建議系統、深入地學習Java語言以及Java開發相關類庫框架中間件基礎架構等內容。

因爲Java相比C/C++而言,上手比較容易,而且功能非常強大,無論是大型分佈式系統的後臺還是大數據或者是Android App、中間件都可以使用Java語言來開發。

目前在招聘市場中Java的需求一直都是比較旺盛的,大家可以通過訪問招聘網站(Boss直聘拉勾前程無憂)去搜索Java相關的崗位來了解具體的崗位要求(學歷要求、技術要求、項目經驗要求)。

  • 中國有51%的程序員使用Java,這個比例全球最高

  • Java開發人員最多的地方是亞洲,大約有250萬的開發人員使用Java作爲他們的主要編程語言,全世界大概有680萬。

上海得物 Java

image

上海拼多多 Java

image

上海鈞正網絡科技 Java

image

杭州阿里巴巴 Java

image

7. 推薦給開發者的計算機

7.1 選購計算機的原則

想要成爲一名開發者/程序員之前需要學習很多相關的技術,而這些技術都是需要高配置的計算機硬件提供支撐的,因此建議大家在選購電腦時通常選擇新款高配置的筆記本電腦。

例如在自學Java、前端、大數據時建議購買一臺筆記本電腦,另外再加一臺顯示器,這樣可以邊看視頻或者看文檔學習邊寫代碼。

筆記本電腦可以選擇華碩或者蘋果以及其他你喜歡的品牌

7.2 Windows筆記本電腦

華碩筆記本電腦參考配置

image

微星筆記本電腦參考配置

image

7.3 蘋果筆記本電腦

蘋果筆記本電腦參考配置

image

7.4 顯示器

顯示器可以選擇戴爾或者是你喜歡的其他品牌

顯示器參考配置

image

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章