python全栈开发学习 01
計算機發明者約翰·馮·諾依曼。計算機是20世紀最先進的科學技術發明之一,對人類的生產活動和社會活動產生了極其重要的影響,并以強大的生命力飛速發展。它的應用領域從最初的軍事科研應用擴展到社會的各個領域,已形成了規模巨大的計算機產業,帶動了全球范圍的技術進步,由此引發了深刻的社會變革,計算機已遍及一般學校、企事業單位,進入尋常百姓家,成為信息社會中必不可少的工具。
計算機的應用在中國越來越普遍,改革開放以后,中國計算機用戶的數量不斷攀升,應用水平不斷提高,特別是互聯網、通信、多媒體等領域的應用取得了不錯的成績。1996年至2009?年,計算機用戶數量從原來的630萬增長至6710?萬臺,聯網計算機臺數由原來的2.9萬臺上升至5940萬臺。互聯網用戶已經達到3.16?億,無線互聯網有6.7?億移動用戶,其中手機上網用戶達1.17?億,為全球第一位。
計算工具的演化經歷了由簡單到復雜、從低級到高級的不同階段,例如從“結繩記事”中的繩結到算籌、算盤計算尺、機械計算機等。它們在不同的歷史時期發揮了各自的歷史作用,同時也啟發了電子計算機的研制和設計思路。
1642年法國哲學-數學家Blaise?Pascal?發明了世界上第一臺手搖式機械式計算機,利用齒輪傳動原理制成,能做加減法。
1889年,美國科學家赫爾曼·何樂禮研制出以電力為基礎的電動制表機,用以儲存計算資料。
1930年,美國科學家范內瓦·布什造出世界上首臺模擬電子計算機。
1933年,美國數學家D.N.Lehmer造出一臺電氣計算機用來分解1-1000萬之間的所有自然數為素數因子。
1946年2月14日,由美國軍方定制的世界上第一臺電子計算機“電子數字積分計算機”(ENIAC?Electronic?Numerical?And?Calculator)在美國賓夕法尼亞大學問世了。ENIAC(中文名:埃尼阿克)是美國奧伯丁武器試驗場為了滿足計算彈道需要而研制成的,這臺計算器使用了17840支電子管,大小為80英尺×8英尺,重達28t(噸),功耗為170kW,其運算速度為每秒5000次的加法運算,造價約為487000美元。ENIAC的問世具有劃時代的意義,表明電子計算機時代的到來。在以后60多年里,計算機技術以驚人的速度發展,沒有任何一門技術的性能價格比能在30年內增長6個數量級。
第1代:電子管數字機(1946—1958年)
硬件方面,邏輯元件采用的是真空電子管,主存儲器采用汞延遲線、陰極射線示波管靜電存儲器、磁鼓、磁芯;外存儲器采用的是磁帶。軟件方面采用的是機器語言、匯編語言。應用領域以軍事和科學計算為主。
特點是體積大、功耗高、可靠性差。速度慢(一般為每秒數千次至數萬次)、價格昂貴,但為以后的計算機發展奠定了基礎。
第2代:晶體管數字機(1958—1964年)
硬件方的操作系統、高級語言及其編譯程序。應用領域以科學計算和事務處理為主,并開始進入工業控制領域。特點是體積縮小、能耗降低、可靠性提高、運算速度提高(一般為每秒數10萬次,可高達300萬次)、性能比第1代計算機有很大的提高。
第3代:集成電路數字機(1964—1970年)
硬件方面,邏輯元件采用中、小規模集成電路(MSI、SSI),主存儲器仍采用磁芯。軟件方面出現了分時操作系統以及結構化、規模化程序設計方法。特點是速度更快(一般為每秒數百萬次至數千萬次),而且可靠性有了顯著提高,價格進一步下降,產品走向了通用化、系列化和標準化等。應用領域開始進入文字處理和圖形圖像處理領域。
第4代:大規模集成電路機(1970年至今)
硬件方面,邏輯元件采用大規模和超大規模集成電路(LSI和VLSI)。軟件方面出現了數據庫管理系統、網絡管理系統和面向對象語言等。特點是1971年世界上第一臺微處理器在美國硅谷誕生,開創了微型計算機的新時代。應用領域從科學計算、事務管理、過程控制逐步走向家庭。
由于集成技術的發展,半導體芯片的集成度更高,每塊芯片可容納數萬乃至數百萬個晶體管,并且可以把運算器和控制器都集中在一個芯片上、從而出現了微處理器,并且可以用微處理器和大規模、超大規模集成電路組裝成微型計算機,就是我們常說的微電腦或PC機。微型計算機體積小,價格便宜,使用方便,但它的功能和運算速度已經達到甚至超過了過去的大型計算機。另一方面,利用大規模、超大規模集成電路制造的各種邏輯芯片,已經制成了體積并不很大,但運算速度可達一億甚至幾十億次的巨型計算機。我國繼1983年研制成功每秒運算一億次的銀河Ⅰ這型巨型機以后,又于1993年研制成功每秒運算十億次的銀河Ⅱ型通用并行巨型計算機。這一時期還產生了新一代的程序設計語言以及數據庫管理系統和網絡軟件等。
隨著物理元、器件的變化,不僅計算機主機經歷了更新換代,它的外部設備也在不斷地變革。比如外存儲器,由最初的陰極射線顯示管發展到磁芯、磁鼓,以后又發展為通用的磁盤,現又出現了體積更小、容量更大、速度更快的只讀光盤(CD—ROM)。
02 計算機的組成
?
計算機是由硬件系統(hardware system)和軟件系統(software system)兩部分組成的。傳統電腦系統的硬體單元一般可分為輸入單元、輸出單元、算術邏輯單元、控制單元及記憶單元,其中算術邏輯單元和控制單元合稱中央處理單元(Center Processing Unit,CPU)。
?
- 電源
?
電源是電腦中不可缺少的供電設備,它的作用是將220V交流電轉換為電腦中使用的5V、12V、3.3V直流電,其性能的好壞,直接影響到其他設備工作的穩定性,進而會影響整機的穩定性。手提電腦在自帶鋰電池情況下,為手提電腦提供有效電源。?
- 主板
?
主板是電腦中各個部件工作的一個平臺,它把電腦的各個部件緊密連接在一起,各個部件通過主板進行數據傳輸。也就是說,電腦中重要的“交通樞紐”都在主板上,它工作的穩定性影響著整機工作的穩定性。?
- CPU
?
CPU即中央處理器,是一臺計算機的運算核心和控制核心。其功能主要是解釋計算機指令以及處理計算機軟件中的數據。CPU由運算器、控制器、寄存器、高速緩存及實現它們之間聯系的數據、控制及狀態的總線構成。作為整個系統的核心,CPU也是整個系統最高的執行單元,因此CPU已成為決定電腦性能的核心部件,很多用戶都以它為標準來判斷電腦的檔次。?
- 內存
?
內存又叫內部存儲器或者是隨機存儲器(RAM),分為DDR內存和SDRAM內存,(但是SDRAM由于容量低,存儲速度慢,穩定性差,已經被DDR淘汰了)內存屬于電子式存儲設備,它由電路板和芯片組成,特點是體積小,速度快,有電可存,無電清空,即電腦在開機狀態時內存中可存儲數據,關機后將自動清空其中的所有數據。 內存有DDR、DDR II、DDR III三大類,容量1-64GB。?
- 硬盤
?
硬盤屬于外部存儲器,機械硬盤由金屬磁片制成,而磁片有記憶功能,所以儲到磁片上的數據,不論在開機,還是關機,都不會丟失。硬盤容量很大,已達TB級,尺寸有3.5、2.5、1.8、1.0英寸等,接口有IDE、SATA、SCSI等,SATA最普遍。移動硬盤是以硬盤為存儲介質,強調便攜性的存儲產品。市場上絕大多數的移動硬盤都是以標準硬盤為基礎的,而只有很少部分的是以微型硬盤(1.8英寸硬盤等)為基礎,但價格因素決定著主流移動硬盤還是以標準筆記本硬盤為基礎。因為采用硬盤為存儲介質,因此移動硬盤在數據的讀寫模式與標準IDE硬盤是相同的。移動硬盤多采用USB、IEEE1394等傳輸速度較快的接口,可以較高的速度與系統進行數據傳輸。固態硬盤用固態電子存儲芯片陣列而制成的硬盤,由控制單元和存儲單元(FLASH芯片)組成。固態硬盤在產品外形和尺寸上也完全與普通硬盤一致但是固態硬盤比機械硬盤速度更快。?
- 聲卡
?
聲卡是組成多媒體電腦必不可少的一個硬件設備,其作用是當發出播放命令后,聲卡將電腦中的聲音數字信號轉換成模擬信號送到音箱上發出聲音。?
- 顯卡
?
顯卡在工作時與顯示器配合輸出圖形、文字,作用是將計算機系統所需要的顯示信息進行轉換驅動,并向顯示器提供行掃描信號,控制顯示器的正確顯示,是連接顯示器和個人電腦主板的重要元件,是“人機對話”的重要設備之一。?
- 網卡
?
網卡是工作在數據鏈路層的網路組件,是局域網中連接計算機和傳輸介質的接口,不僅能實現與局域網傳輸介質之間的物理連接和電信號匹配,還涉及幀的發送與接收、幀的封裝與拆封、介質訪問控制、數據的編碼與解碼以及數據緩存的功能等。網卡的作用是充當電腦與網線之間的橋梁,它是用來建立局域網并連接到Internet的重要設備之一。?
在整合型主板中常把聲卡、顯卡、網卡部分或全部集成在主板上。?
- 調制解調器
?
英文名為“Modem”,俗稱“貓”,即調制解調器,類型有內置式和外置式,有線式和無線式。調制解調器是通過電話線上網時必不可少的設備之一。它的作用是將電腦上處理的數字信號轉換成電話線傳輸的模擬信號。隨著ADSL寬帶網的普及,內置式調制解調器逐漸退出了市場。?
- 光驅
?
?
03 計算機的基本原理
?
1.3 ?基本工作原理
?
(1)數制轉換
?
10進制轉換成其他的都是除以要轉換成的那個數,也就是說轉換成二進制的就除以2,轉換成八進制的就除以8,轉換成十六進制的就除以16,然后倒取余數。
?
不同的進位制數轉化為十進制數:按權展開相加
十進制是權是10;二進制是權是2;十六進制是權是16;八進制是權是8;
例:110011(二進制數)=1*2^5+1*2^4+0*2^3+0*2^2+1*2^1+1*2^0=32+16+2+1=51
1507(八進制數)=1*8^3 + 5*8^2 + 0*8^1 + 7*8^0 = 839?
2AF5(十六進制數)=2*16^3 + A*16^2+ F*16^1 + 5*16^0 = 10997
?
二進制換算八進制?
將二進制數從右到左,三位一組,不夠補0
例:二進制數10110111011換八進制數:?
010 110 111 011?
結果為:2673?
?
二進制轉換十六進制?
二進制數轉換為十六進制數的方法也類似,從右到左,四位一組,不夠補0
如上題:?
0101 1011 1011?
結果為:5BB
?
(2)機器數與碼制
?
各種數據在計算機中表示的形式稱為機器數,其特點是采用二進制計數制,數的符號用0、1表示,小數點則隱含表示而不占位置。機器數對應的實際數值稱為真值。
? ? ? ?機器數有無符號數和帶符號數之分。無符號數表示正數,在機器數中沒有符號位。對于無符號數,若約定小數點的位置在機器數的最低位之后,則是純整數;若約定小數點的位置在機器數的最高位之前,則是純小數。對于帶符號數,機器數的最高位一晴地正負的符號位,其余位則表示數值。若約定小數點的位置在機器數的最低數值位之后,則是純整數;若約定小數點的位置 在機器數的最高數值位之前,則是純小數位。
? ? ? ??為了便于運算,帶符號的機器右數可采用原碼,反碼和補碼等不同的編碼方法,機器數的這些編碼方法稱為碼制。
1. 原碼表示法
? ? 數值X的原碼記為[X]原,最高位是符號位,0表示正號,1表示負號,其余位表示數值的絕對值。
2.反碼表示法
? ? ?數值X的原碼記為[X]反,最高位是符號位,0表示正號,1表示負號,正數的反碼和原碼相同,負數的反碼則是其絕對值按位求反。
3.補碼表示法
? ???數值X的原碼記為[X]補,最高位是符號位,0表示正號,1表示負號,正數的補碼與其原碼和反碼相同,負數的補碼則等于其反碼的末尾加1。
4.移碼表示法
? ? ?.移碼表示法是在數X上增加一個偏移量來定義的,常用于表示浮點數中的階碼。如果機器字長為n,在偏移2的(n-1)次方的情況下,只要將將碼的符號位取反便可獲得相應的移碼表示。
?
(3)漢字編碼
?
區位碼
?
? 為了使每一個漢字有一個全國統一的代碼,1980年,我國頒布了第一個漢字編碼的國家準:?GB2312-80《信息交換用漢字編碼字符集》基本集,這個字符集是我國中文信息處理技術的發展基礎,也是目前國內所有漢字系統的統一標準。
?
?所有的國標漢字與符號組成一個94×94的矩陣。在此方陣中,每一行稱為一個"區",每一列稱為一個"位",因此,這個方陣實際上組成了一個有94個區(區號分別為0 1到94)、每個區內有94個位(位號分別為01到94)的漢字字符集。一個漢字所在的區號和位號簡單地組合在一起就構成了該漢字的"區位碼"。在漢字的區位碼中,高兩位為區號,低兩位為位號。
?
在區位碼中,01-09區為682個特殊字符,16~87區為漢字區,包含6763個漢字?。其中16-55區為一級漢字(3755個最常用的漢字,按拼音字母的次序排列),56-87區為二級漢字(3008個漢字,按部首次序排列)。
?
· ?需要注意的是:區位碼通常都是用十進制表示的,例如“誠”字的區位碼為1947,也就說它位于19區第47個字符。
?
國標碼
?
國家標準代碼,簡稱國標碼,是中華人民共和國的中文常用漢字編碼集。國家標準強制標準冠以“GB”。現時中華人民共和國官方強制使用GB 18030標準,但較舊的計算機仍然使用GB 2312。國標碼 =區位碼(16進制化--區碼和位碼分別進行16進制轉化)+2020H。
?
機內碼
?
計算機只識別由0、1組成的代碼,ASCII碼是英文信息處理的標準編碼,漢字信息處理也必須有一個統一的標準編碼。 漢字交換碼(國標碼)主要用于漢字信息交換,我國國家標準局于1981年5月頒布了《信息交換用漢字編碼字符集——基本集》,代號為GB2312-80,共對6763個漢字和682個圖形字符進行了編碼。
?
其編碼原則為:漢字用兩個字節表示,原則上,兩個字節可以表示 256×256=65536種不同的符號,作為漢字編碼表示的基礎是可行的。但考慮到漢字編碼與其它國際通用編碼,如ASCII西文字符編碼的關系,我國國家標準局采用了加以修正的兩字節漢字編碼方案,只用了兩個字節的低7位。這個方案可以容納128×128=16384種不同的漢字,但為了與標準ASCII碼兼容,每個字節中都不能再用32個控制功能碼和碼值為32的空格以及127的操作碼。所以每個字節只能有94個編碼。這樣,雙七位實際能夠表示的字數是:94×94=8836個。
?
機內碼 = 國標碼 + 8080H
機內碼 = 區位碼(16進制化--區碼和位碼分別進行16進制轉化) + a0a0H
?
相互轉換
?
內碼轉換為區位碼
?
???????? 區位碼:??區碼=內碼高字節-0xa0
?
? ? ? ? ? ? ? ? ? ? ? ?位碼=內碼低字節-0xa0
?
???????? 例如:“國”內碼為:0xb9,0xfa
?
16進制表示的區位碼:0x19,0x5a
?
? ? ? ? ? ? ? ? ? 其區位碼(默認為10進制):2590
?
區位碼轉換為內碼
?
? ? ? ? 內碼: ?內碼高字節=區碼+0xa0
?
? ? ? ? ? ? ? ? ? 內碼低字節=位碼+0xa0
?
???????? 例如:“海”區位碼為:2603
?
16進制表示的區位碼:0x1a,0x03
?
? ? ? ? 其內碼(默認為16進制):0xba,0xa3
?
字模
?
漢字在顯示的時候,是以點陣的形式顯示出來的,常見到的有16*16點陣、24*24點陣、32*32點陣。比如說“啊”的16*16點陣字模如下,共256Bits,占用32 Bytes:
?
0x00,0x00,0xf7,0x7e,0x95,0x04,0x95,0x04,0x96,0x74,0x96,0x54,0x95,0x54,0x95,0x54,0x95,0x54,0xf5,0x54,0x97,0x74,0x04,0x04,0x04,0x04,0x05,0x04,0x04,0x14,0x04,0x08
?
字模顯示的時候,以兩個字節表示一行像素點,16行就構成了一個完整的字模。屏幕在顯示的時候,1顯示為亮色,0顯示為背景色,這樣就能把字體顯示出來。
?
?
?
字庫
?
字庫,就是所有漢字字模的集合。顯然,在編排這些字模的時候需要一定的順序(規則),而這個規則就是“機內碼”。根據機內碼的漢字布局,將對應的漢字字模進行整合,形成字庫文件。在使用的時候,應用程序根據漢字的機內碼,從字庫中找到對應的存儲位置,取出字模,進行顯示。機內碼就是漢字在字庫中的索引。
?
在區位碼中,01-09區為682個特殊字符,16~87區為漢字區,有效漢字6768個。在制作字庫的時候把特殊字符刪除,只使用有效漢字區。也就是說我們從第16區的第1位開始進行字模收集,當第16區收集結束,緊接著收集第17區,直到第87區編排結束。總共收集6768個漢字,占用空間216576 Bytes。
?
(4)CPU
?
CPU從邏輯上可以劃分成3個模塊,分別是控制器、運算器和內部寄存器,這三部分由CPU內部總線連接起來。如下所示:
?
?
?
控制器:控制單元是整個CPU的指揮控制中心,由指令寄存器IR(Instruction Register)、指令譯碼器ID(Instruction Decoder)和操作控制器OC(Operation Controller)等,對協調整個電腦有序工作極為重要。它根據用戶預先編好的程序,依次從存儲器中取出各條指令,放在指令寄存器IR中,通過指令譯碼(分析)確定應該進行什么操作,然后通過操作控制器OC,按確定的時序,向相應的部件發出微操作控制信號。操作控制器OC中主要包括節拍脈沖發生器、控制矩陣、時鐘脈沖發生器、復位電路和啟停電路等控制邏輯。
?
運算器:是運算器的核心。可以執行算術運算(包括加減乘數等基本運算及其附加運算)和邏輯運算(包括移位、邏輯測試或兩個值比較)。相對控制單元而言,運算器接受控制單元的命令而進行動作,即運算單元所進行的全部操作都是由控制單元發出的控制信號來指揮的,所以它是執行部件。
?
內部寄存器:包括CPU片內緩存和寄存器組,是CPU中暫時存放數據的地方,里面保存著那些等待處理的數據,或已經處理過的數據,CPU訪問寄存器所用的時間要比訪問內存的時間短。采用寄存器,可以減少CPU訪問內存的次數,從而提高了CPU的工作速度。但因為受到芯片面積和集成度所限,寄存器組的容量不可能很大。寄存器組可分為專用寄存器和通用寄存器。專用寄存器的作用是固定的,分別寄存相應的數據。而通用寄存器用途廣泛并可由程序員規定其用途,通用寄存器的數目因微處理器而異。這個是我們以后要介紹這個重點,這里先提一下。
?
我們將上圖細化一下,可以得出CPU的工作原理概括如下:
?
?
?
總的來說,CPU從內存中一條一條地取出指令和相應的數據,按指令操作碼的規定,對數據進行運算處理,直到程序執行完畢為止。
? ?上圖中我沒有畫總線,只是用邏輯方式對其進行呈現。原因早期Intel的微處理器,諸如8085,8086/8088CPU,普遍采用了地址總線和數據總線復用技術,即將部分(或全部)地址總線與數據總線共用CPU的一些引腳。例如8086外部地址總線有20根,數據總線復用了地址總線的前16根引腳。復用的數據總線和地址總線雖然可以少CPU的引腳數,但卻引入了控制邏輯及操作序列上的復雜性。所以,自80286開始,Intel的CPU才采用分開的地址總線和數據總線。
? ?不管是復用還是分開,對我們理解CPU的運行原理沒啥影響,上圖沒畫總線的目的就是怕有些人太過于追求細節,一頭扎下去,浮不起來,不能從宏觀上藐視敵人。
?? 總結一下,CPU的運行原理就是:控制單元在時序脈沖的作用下,將指令計數器里所指向的指令地址(這個地址是在內存里的)送到地址總線上去,然后CPU將這個地址里的指令讀到指令寄存器進行譯碼。對于執行指令過程中所需要用到的數據,會將數據地址也送到地址總線,然后CPU把數據讀到CPU的內部存儲單元(就是內部寄存器)暫存起來,最后命令運算單元對數據進行處理加工。周而復始,一直這樣執行下去
??
?
?
?
?關于一些筆記
關于編碼?? http://www.cnblogs.com/skynet/archive/2011/05/03/2035105.html
32位的系統最多可以使用 4 G 的內存 64位的系統可以使用16T 左右的內存。
變量的命名規則:
? 01 具有描述性,見名知意
? 02 由數字,字母,下劃線組成
? 03 不能以數字開頭
? 04 不可以是保留字符
? 05 變量名不能是中文
? 06 在python中 區分大小寫
以下關鍵詞不能是變量:
?? and? as? assert? break? class? continue def? del? elif? else? except? exec? finally? for? from? global? if? import? in? is? lambda? not? or? pass? print? raise????? return? try? while? with? yield
在python 2.7 中寫入中文,需要在程序第一行加上
?#!-*- coding:utf-8 -*-
input 接受的所有數據都會默認當作字符串處理
if 后面必須加 : (縮進)
tab 鍵 != 4個空格
縮進級別必須保持一致
?
轉載于:https://www.cnblogs.com/root1/p/9244521.html
總結
以上是生活随笔為你收集整理的python全栈开发学习 01的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL Gap Lock问题
- 下一篇: Python 学习日记 第四天