一.python是一種編程語言
編程語言:本質(zhì)是一門語言
語言:兩種事物溝通的表達方式/工具
編程:按自己的思維邏輯换况,運用編程語言表達出來
編程的目的:按照人類的思維邏輯去工作钻蔑,從而解放人力
人--------------程序語言----------->計算機
二.計算機基礎(chǔ)
計算機:俗稱”電腦“, 即通電的大腦从绘,電腦二字蘊含了人類對計算機的終極期望张弛,希望它能真的像人腦一樣去工作,從而解放人力。
使用計算機的原因:為了執(zhí)行人類的程序硬萍,從而把人類解放出來
大前提:計算機所有的組成都是模仿人的某一功能或器官
1.計算機的五大組成部分(重點)
控制器 作用:是計算機的指揮系統(tǒng),負責(zé)控制計算機所有其他組件的運行
-
運算器 作用: 是計算機的運算功能傀顾,用來做算術(shù)運算和邏輯運算襟铭,相當于人腦
控制器+運算器=cpu, cpu相當于人的大腦
-
存儲器/IO設(shè)備 作用:是計算機的記憶功能短曾,負責(zé)數(shù)據(jù)的存取
分類:
內(nèi)存(基于電工作):存取數(shù)據(jù)都快寒砖,斷電數(shù)據(jù)丟失,只能臨時存取數(shù)據(jù)
ps: cpu存取的數(shù)據(jù)和指令都來自于內(nèi)存
外存(硬盤嫉拐,基于磁工作):存取速度都慢哩都,斷電數(shù)據(jù)也不丟,可以永久保存數(shù)據(jù)
ps:內(nèi)存的存取速度要遠遠高于外存
輸入設(shè)備input : 計算接收外界輸入數(shù)據(jù)的工具 ,如鍵盤婉徘,鼠標
-
輸出設(shè)備output : 計算機向外輸出數(shù)據(jù)的工具 ,如顯示器漠嵌,打印機
ps:存儲器如內(nèi)存、磁盤等既是輸入設(shè)備又是輸出設(shè)備盖呼,統(tǒng)稱為IO設(shè)備
2.一個程序的運行與三個核心硬件的關(guān)系(重點)
三個核心硬件:cpu儒鹿、內(nèi)存、硬盤
<mark style="box-sizing: border-box; background: rgb(255, 255, 0); color: rgb(0, 0, 0);">程序最先是存放于硬盤之上几晤,程序的運行一定事先把程序的代碼加載到內(nèi)存约炎,然后cpu從內(nèi)存中讀取指令執(zhí)行</mark>
3.操作系統(tǒng)
概念:操作系統(tǒng)是一個協(xié)調(diào)、管理蟹瘾、控制計算機硬件資源與應(yīng)用軟件資源的一個控制程序 作用: (1)控制計算機硬件的基本運行 (2)把使用硬件的復(fù)雜操作封裝成簡單的功能圾浅,給上層的應(yīng)用程序使用
3.1 系統(tǒng)軟件與應(yīng)用軟件
計算機硬件是死的,計算機硬件的運行都受軟件控制憾朴,所以說狸捕,軟件相當于計算機的靈魂 具體來說軟件分類: (1)應(yīng)用軟件:應(yīng)用程序相關(guān)邏輯 (2)系統(tǒng)軟件:控制底層硬件的,操作系統(tǒng)應(yīng)用軟件與硬件之間的一個橋梁,是協(xié)調(diào)众雷、管理灸拍、控制計算機硬件與應(yīng)用軟件資
3.2 計算機系統(tǒng)三層結(jié)構(gòu)
我們開發(fā)應(yīng)用程序本質(zhì)是在控制硬件做祝,但是我們直接打交道的是操作系統(tǒng),應(yīng)用程序都是通過操作系統(tǒng)來間接地操作硬件的株搔,所以一套完整的計算機系統(tǒng)分為三層剖淀,如下
平臺
應(yīng)用程序都是運行于操作系統(tǒng)之上,而操作系統(tǒng)則是運行于硬件之上的纤房,所以承載應(yīng)用程序的是一臺運行有操作系統(tǒng)的計算機,稱之為應(yīng)用程序的運行平臺翻诉,即: 計算機硬件+操作系統(tǒng)=平臺
常見的平臺有:windows系統(tǒng)+某款硬件炮姨、linux系統(tǒng)+某款硬件、ubuntu+某款硬件等
軟件的跨平臺性指的是:一款軟件可以任意平臺上運行碰煌,是衡量軟件質(zhì)量高低的一個非常重要的指標
4.cpu
-
cpu的分類與指令集
指令集:把程序員控制cpu的指令舒岸,轉(zhuǎn)成cpu操作某個組件的指令。這些指令不會自發(fā)的運行芦圾,由人類控制它才能運行
-
cpu的分類:精簡指令集蛾派,復(fù)雜指令集
<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="" cid="n52" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit;"> 精簡指令集:指令集簡短,完成的事情个少,非常的簡單洪乍。
優(yōu)點:不容易錯,更穩(wěn)定夜焦。
缺點:實現(xiàn)復(fù)雜的操作壳澳,需要的指令集就會成堆,才會完成這一件事茫经。
作用:爭對穩(wěn)定的需求巷波,爭對大型的計算機架構(gòu)的服務(wù)器,它就需要精簡指令集卸伞。(例子:網(wǎng)絡(luò)設(shè)備抹镊,服務(wù)器等) </pre><pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="" cid="n53" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit;"> 復(fù)雜指令集: 單條指令比較復(fù)雜
優(yōu)點:單條指令集完成的事情比較多,意味著完成復(fù)雜的事荤傲,只需要幾條就夠垮耳。
缺點:單挑指令比較復(fù)雜,容易出錯弃酌,不穩(wěn)定氨菇。
作用:爭對功能更豐富,更強大妓湘,因該需要cpu內(nèi)部的復(fù)雜指令集查蓉。(例子:個人電腦)</pre>
4.1.x86-64(重點)
x86-cpu型號
64位-cpu一次性能從內(nèi)存中取出64位二進制指令(cpu的位數(shù)指的是cpu一次性能從內(nèi)存中取出多少位二進制指令)
cpu具有向下兼容性:64的cpu既能運行32位的程序也能運行64位的程序
4.2.內(nèi)核態(tài)與用戶態(tài)(重點)
cpu的兩種工作狀態(tài):內(nèi)核態(tài),用戶態(tài)
內(nèi)核態(tài):運行的程序是操作系統(tǒng)榜贴,可以操作計算機硬件
用戶態(tài):運行的程序是應(yīng)用程序豌研,不能操作計算機硬件
內(nèi)核態(tài)與用戶態(tài)的轉(zhuǎn)換
- 應(yīng)用程序的運行必然涉及到計算機硬件的操作妹田,那就必須有用戶態(tài)切換到內(nèi)核態(tài)下才能實現(xiàn),所以計算機工作時在頻繁發(fā)生內(nèi)核態(tài)與用戶態(tài)的轉(zhuǎn)換
多線程與多核芯片
2核4線程:2核代表有兩個cpu鹃共,4線程指的是每個cpu都有兩個線程=>假4核
4核8線程:4核代表有4個cpu鬼佣,8線程指的是每個cpu都有兩個線程=>假8核
5.存儲器
-
結(jié)構(gòu)從上到下:cpu,寄存器霜浴,高速緩存晶衷,內(nèi)存,硬盤阴孟,磁盤
存儲器.png
* 為了提高cpu讀取數(shù)據(jù)的速度晌纫,所以在cpu與磁盤之間引入了內(nèi)存,然后cpu從內(nèi)存中讀取數(shù)據(jù)其實也是慢的永丝,所以之間加入的高速緩存锹漱,高速緩存還是不夠塊,又在cpu與高速緩存之間又增加了寄存器慕嚷,這樣一步一步提高cpu讀取數(shù)據(jù)的速度
* 寄存器: 使用cpu同等材質(zhì)制造而成哥牍,在cpu內(nèi)部集成,cpu運行下一步操作立馬需要的指令喝检。
* 高速緩存:存放cpu經(jīng)常使用的數(shù)據(jù)嗅辣。cpu讀取數(shù)據(jù)的時候,先從高數(shù)緩存中查看自己所需要的數(shù)據(jù)蛇耀,如果有直接從高速緩存中取走辩诞,速度很快2ns(這時高速緩存命中)。
RAM(random access memory 隨機存取存儲器):內(nèi)存
ROM(ready only memory 只讀存儲器):“只讀內(nèi)存” 存放計算機廠商寫死計算機上的一段核心程序=》BIOS
CMOS(Complementary Metal-Oxide-Semiconductor Transistor 互補金屬氧化物半導(dǎo)體):存取速度慢纺涤,斷電數(shù)據(jù)丟失译暂,耗電量極低
-
硬盤:
-
機械硬盤:磁盤
機械硬盤: 依賴于機械的轉(zhuǎn)動,盤片基于磁型號撩炊,所以也稱之為磁盤外永。高低磁性號,高磁性號:代表1拧咳,二進制1伯顶。低磁性號:代表0,二進制0.
磁頭:負責(zé)讀寫數(shù)據(jù)
磁道:磁盤的一圈數(shù)據(jù)骆膝,對應(yīng)著一串二進制(1bit代表一個二進制位)
單位換算
<pre spellcheck="false" class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" lang="" cid="n107" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-position: inherit; background-size: inherit; background-repeat: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-radius: 3px; padding: 8px 4px 6px 0px; margin-bottom: 15px; margin-top: 15px; width: inherit;"> 注意:嚴格區(qū)分大小寫祭衩,1kb是1kbit 而不是 1kBytes。小寫b表示比特位阅签,大寫比表示字節(jié)掐暮。
1bit(比特位) = 8Bytes(字節(jié))
1024Bytes = 1KBytes
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB
?
拓展:對應(yīng)產(chǎn)商的硬盤存儲單位1000表示為一個單位,例200G=20010001000B</pre> -
**扇區(qū)**:
注意:**硬盤**的一**次性讀寫數(shù)據(jù)**的**最小單位**就是**扇區(qū)**政钟。1個扇區(qū)為512Bytes路克。
**拓展**:**操作系統(tǒng)**的**一次性讀寫的單位**是**1個block塊**樟结,block的概念**對應(yīng)**的是**8個扇區(qū)的大小**,也就是4096Bytes精算。操作系統(tǒng)攢夠了block塊的容量才交給硬盤瓢宦,以此來減少與硬盤打交道的次數(shù),從而減少IO次數(shù)灰羽。(block塊大小可以自定義驮履,默認1個block等于8個扇區(qū)大小)
##### 柱面:
柱面是哪一部分谦趣?所有的盤片疲吸,多個盤片上下當成一個整體.
磁盤的分區(qū)的概念,從一個柱面開始前鹅,到第二個柱面開始,下面的所有范圍的整體峭梳,就是一個磁盤的分區(qū)舰绘。
* **固態(tài)硬盤**
基于電子工作,取代機械硬盤容易損壞的缺點葱椭,使用的是物理元件捂寿,閃存芯片。
-
IO延遲(*****)
例:假設(shè)當前硬盤磁頭轉(zhuǎn)速是7200/min孵运,也就是120/s秦陋,那么轉(zhuǎn)一圈需要花費1/120≈8ms,半圈也就是4ms 治笨。
平均尋道時間: 硬盤讀數(shù)據(jù)時 驳概,機械手臂轉(zhuǎn)到數(shù)據(jù)所在磁道需要花費的時間。受限于物理工藝水平旷赖,目前機械硬盤可以達到的是5ms
平均延遲時間: 機械手臂找到該數(shù)據(jù)所在磁道時顺又,需要定位到該數(shù)據(jù),定位到該數(shù)據(jù)得時間等孵,叫平均延遲時間 稚照。轉(zhuǎn)半圈需要花費4ms,受限于硬盤的轉(zhuǎn)速
IO延遲=平均尋道時間+平均延遲時間
優(yōu)化程序運行效率的一個核心法則:能從內(nèi)存取數(shù)據(jù)俯萌,就不要從硬盤取
-
虛擬內(nèi)存
內(nèi)存不夠用的時候果录,在硬盤上劃一塊空間,這個空間就叫虛擬內(nèi)存(拓展:linux系統(tǒng)的swap分區(qū)就是虛擬內(nèi)存)
作用:當內(nèi)存不夠用的時候咐熙,保證程序的正常運行弱恒。
IO設(shè)備=設(shè)備的控制+設(shè)備本身
-
磁帶
- 一般用于備份,價格低糖声,容量大斤彼,便于攜帶
6.總線
所有的計算的組成部分分瘦,這些硬件,都是集成在一塊板子上琉苇,這塊板子就叫主板嘲玫。而總線就是組件于組件之間來回傳輸數(shù)據(jù)的一種橋梁。
北橋即PCI橋:負責(zé)連接CPU與內(nèi)存并扇,可以發(fā)現(xiàn)北橋連接的都是高速設(shè)備去团。
南橋即ISA橋:負責(zé)連接SCSI(硬盤的一種接口)、USB(鼠標鍵盤等一些接口)穷蛹,可以發(fā)現(xiàn)南橋連接的是慢速設(shè)備土陪。
7.操作系統(tǒng)的啟動流程
BIOS介紹:
BIOS:Basic Input Output System
BIOS被寫入ROM設(shè)備
裸機下的3大硬件:
cpu
ROM:充當內(nèi)存,存放BIOS系統(tǒng)
CMOS:充當硬盤
安裝操作系統(tǒng)的啟動流程(重點)
1.計算機加電
2.BIOS開始運行肴熏,檢測硬件:cpu鬼雀、內(nèi)存、硬盤等
3.BIOS讀取CMOS存儲器中的參數(shù)蛙吏,選擇啟動設(shè)備
4.從啟動設(shè)備上讀取第一個扇區(qū)的內(nèi)容(MBR主引導(dǎo)記錄512字節(jié)源哩,前446為引導(dǎo)信息,后64為分區(qū)信息鸦做,最后兩個為標志位)
5.根據(jù)分區(qū)信息讀入bootloader啟動裝載模塊波附,啟動操作系統(tǒng)
6.然后操作系統(tǒng)詢問BIOS夭禽,以獲得配置信息绪商。對于每種設(shè)備咪奖,系統(tǒng)會檢查其設(shè)備驅(qū)動程序是否存在,如果沒有治筒,系統(tǒng)則會要求用戶按照設(shè)備驅(qū)動程序屉栓。一旦有了全部的設(shè)備驅(qū)動程序,操作系統(tǒng)就將它們調(diào)入內(nèi)核矢炼, 完成了BIOS與操作系統(tǒng)的交接系瓢,獲取了控制所有硬件的最高權(quán)限。
安裝操作系統(tǒng)后的3大硬件
cpu
RAM: 開機以后句灌,操作系統(tǒng)就加載到內(nèi)存夷陋。
本地硬盤:分區(qū),啟動盤存放操作系統(tǒng)這個應(yīng)用程序
BIOS
1胰锌、存有win10系統(tǒng)的光盤骗绕、u盤、移動硬盤:無密碼
2资昧、本地硬盤上的win7系統(tǒng):密碼
8.密碼破解與相關(guān)安全
-
破解操作系統(tǒng)設(shè)置的密碼
1酬土、拿個存有無密碼的操作系統(tǒng)的U盤,插入電腦U盤接口格带,充當硬盤
2撤缴、啟動BIOS刹枉,設(shè)置該沒有密碼的操作系統(tǒng)的啟動優(yōu)先級,待BIOS與該沒有密碼的操作系統(tǒng)交接完畢屈呕,重啟計算機微宝,此時優(yōu)先加載的就是該沒有密碼的操作系統(tǒng)。
3虎眨、該沒有密碼的操作系統(tǒng)此時獲取了控制所有硬件的最高權(quán)限蟋软,而那個設(shè)置密碼了的操作系統(tǒng),僅僅只是躺在硬盤上的一堆普通的程序無恙嗽桩,這時就可以隨意修改密碼岳守。
4、修改過后碌冶,重啟計算機湿痢,進入BIOS中,把修改密碼的操作系統(tǒng)的啟動優(yōu)先級扑庞,設(shè)置為最優(yōu)先蒙袍,重啟計算機,拔出U盤嫩挤,達到修改密碼鎖定的問題。
-
破解BIOS中設(shè)置的密碼
歸根結(jié)底消恍,BIOS存放在ROM中岂昭,而提供啟動信息的參數(shù),都存放在CMOS中狠怨,可知道的是CMOS由主板電池供電约啊,拔插 主板電池,數(shù)據(jù)緩存消失佣赖,插入以后恰矩,原始數(shù)據(jù)不存在,BIOS中的密碼設(shè)置也不起作用了憎蛤。所以說沒有絕對的安全外傅。
9.應(yīng)用程序的啟動流程(重點)
1、雙擊exe快捷方式--》exe文件的絕對路徑
2俩檬、操作系統(tǒng)會根據(jù)文件路徑找到exe程序在硬盤的位置萎胰,控制其代碼從硬盤加載到內(nèi)存
3、然后控制cpu從內(nèi)存中讀取剛剛讀入內(nèi)存的應(yīng)用程序的代碼執(zhí)行棚辽,應(yīng)用程序完成啟動
三.python入門
1.編程語言
分類:
機器語言:直接用二進制編程
匯編語言: 用一個英文標簽代表一組二進制指令
高級語言(編譯型技竟、解釋型): 用人類的字符去編寫程序
編譯型(是把程序所有代碼編譯成計算機能識別的二進制指令,之后操作系統(tǒng)會拿著編譯好的二進制指令直接操作硬件)
總結(jié):
1屈藐、執(zhí)行效率:機器語言>匯編語言>高級語言(編譯型>解釋型)
2榔组、開發(fā)效率:機器語言<匯編語言<高級語言(編譯型<解釋型)
3熙尉、跨平臺性:解釋型具有極強的跨平臺型
2.python介紹
python語言:指的是python的語法風(fēng)格
python解釋器:專門用來識別python這門語言的語法并解釋執(zhí)行的
python語言與python解釋器的關(guān)系:
1.python解釋器是一款應(yīng)用程序?qū)iT用來解釋python這門語言的語法風(fēng)格并執(zhí)行的
2.python語言縮寫的程序最終都是被解釋器執(zhí)行的,所以我們可以這么說python語言更多地都是在調(diào)用python解釋器的功能搓扯,所以解釋器性能的高低很大程度決定了我們用python寫出來的程序執(zhí)行效率的高低
3.解釋器多版本共存
3.1python解釋器部分文件夾介紹
DDLS:病毒程序需要獲取該目錄的控制權(quán)限
scripts:存放pip等exe可執(zhí)行程序检痰,用來安裝第三方庫。pip pip2 都是一樣的功能擅编,只是名字不同攀细。
3.2關(guān)于解釋器的一些CMD命令操作
切換盤:D:
查看python3安裝的第三方庫目錄位置:pip3 -V (前提:安裝了path環(huán)境變量)
查看python2安裝的第三方庫目錄位置:pip2 -V (前提:安裝了path環(huán)境變量)
3.3配置環(huán)境變量需要了解的細節(jié)
環(huán)境變量尋找的優(yōu)先級:計算機先從當前文件夾下找,找不到則到設(shè)置的環(huán)境變量中從前往后檢索爱态。
用戶環(huán)境變量只對當前用戶生效谭贪,系統(tǒng)環(huán)境變量爭對所有用戶都生效。
windows7中:使用分號锦担,分隔不同的path路徑
3.4python庫的虛擬環(huán)境介紹
- 開發(fā)一款軟件俭识,需要定義虛擬環(huán)境,避免每個項目所需下載的第三方庫在一個pip安裝目錄下洞渔,以免對原生庫產(chǎn)生混亂的影響套媚。
環(huán)境變量:一般是指在操作系統(tǒng)中用來指定操作系統(tǒng)運行環(huán)境的一些參數(shù)
4、 運行python程序的兩種方式
-
交互式
即時得到程序的運行結(jié)果磁椒,多用于調(diào)試
-
腳本的方式
把程序?qū)懙轿募?約定俗稱文件名后綴為.py)堤瘤,然后用python解釋器解釋執(zhí)行其中的內(nèi)容
5、一個python應(yīng)用程序的運行的三個步驟(重點)
python3.8 c.py
1浆熔、先啟動python3.8解釋器
2本辐、解釋器會發(fā)送系統(tǒng)調(diào)用,把c.py的內(nèi)容從硬盤讀入內(nèi)存医增,此時c.py中的內(nèi)容全部為普通字符慎皱,沒有任何語法意義
3、解釋器開始解釋執(zhí)行剛剛讀入內(nèi)存的c.py的代碼叶骨,開始識別python語法
文本編輯器讀取C:\a\b\c.py文件內(nèi)容三個步驟
1茫多、先啟動文本編輯器 2、文本編輯器會發(fā)送系統(tǒng)調(diào)用忽刽,把c.py的內(nèi)容從硬盤讀入內(nèi)存 3天揖、文本編輯會將剛剛讀入內(nèi)存的內(nèi)容控制輸出到屏幕上,讓用戶看到結(jié)果
總結(jié): 二者在前兩個階段做的事情完全一致 唯一不同的就是第三個階段對讀入內(nèi)存的python代碼的處理方式不同
6.注釋
注釋:對代碼的解釋說明,被注釋的代碼不會被執(zhí)行
注釋的原因:增加代碼的可讀性
分類:單行注釋(#注釋內(nèi)容)多行注釋('''注釋內(nèi)容''' """注釋內(nèi)容""")
7缔恳、IDE集成開發(fā)環(huán)境pycharm
什么是集成開發(fā)環(huán)境宝剖?
- 實際開發(fā)中,除了編譯器是必須的工具歉甚,我們往往還需要很多其他輔助軟件万细。例如:編輯器、代碼提示器、調(diào)試器赖钞、項目管理工具腰素、漂亮的界面,這些工具通常被打包在一起雪营,統(tǒng)一發(fā)布和安裝弓千,它們統(tǒng)稱為集成開發(fā)環(huán)境
**如何安裝pycharm集成開發(fā)環(huán)境?****