第一章 計算機的三大原則
- 計算機是執(zhí)行輸入鹅髓、運算舞竿、輸出的機器。
- 程序是指令和數據的集合窿冯。
- 計算機的處理方式有時與人類的思維習慣不同
- 輸入骗奖、運算、輸出是計算機硬件的基礎,輸入执桌、輸出的都是數據鄙皇,運算是對數據的計算、加工處理仰挣。
- 對計算機來說什么都是數字伴逸,然后通過編碼技術才能轉換成人類能直接識別的信息。
- 任何新技術的產生都離不開計算機的三大原則膘壶,為提升效率而貼合人類習慣错蝴。
第二章 試著制作一臺計算機吧
第二章內容看的是云里來霧里去,各種IC元件組裝成一臺微型計算機颓芭,主要的三大件是CPU顷锰、內存、I/O亡问,其他元件都是輔助作用官紫。計算機中最小的信息單位是比特,二進制數中一位就是1比特玛界,信息中基本單位是字節(jié)万矾,1字節(jié)=8比特,K=2^10=1024慎框,2K字節(jié)=8×1024×2
第三章 體驗一次手工匯編
匯編:一種使用助記符的編程語言良狈,很簡單,但不適合編寫大型程序笨枯,因為計算機三大件的每步操作都要處理非常細致薪丁。
助記符:每種CPU都可能有不同的操作指令,而且CPU所能識別的任何指令合數據都是二進制格式馅精,很不便于人們記憶和識別严嗜,所以就用固定的英文單詞符號表示每個指令(為什么是英文?因為是說英語的人發(fā)明的)洲敢。手工匯編就需要對照CPU說明書漫玄,每個指令所對應的二進制格式,然后在計算機中運行压彭。
第四章 程序像流水一樣流動著
- 程序執(zhí)行流程:順序睦优、循環(huán)、分支
- VBScript小游戲:石頭剪刀布.vbs
Dim gesture(2)
gesture(0) = "石頭"
gesture(1) = "剪刀"
gesture(2) = "布"
wins = 0
Randomize
MsgBox "石頭剪刀布游戲 Ver.1.00 by Eugene"
For i = 1 To 5
user = CInt(InputBox("0:石頭壮不。1:剪刀汗盘。2:布"))
computer = CInt(Rnd * 2)
s ="玩家:" & gesture(user) & "、計算機:" & gesture(computer)
If user = computer Then
MsgBox s & "...平局询一!"
ElseIf computer = (user+1) Mod 3 Then
MsgBox s & "……玩家獲勝隐孽!"
wins = wins + 1
Else
MsgBox s & "……計算機獲勝!"
End If
Next
MsgBox "玩家獲勝次數: " & wins
-
流程圖(Flowchart)
石頭剪刀布.png - 結構化程序設計:良好的程序設計都是通過程序的基本三大操作流程完成癌椿,但是CPU中存在跳轉操作指令
goto
,會導致程序變得混亂菱阵,所以在很早就有學者戴克斯特拉結構化程序設計**思想踢俄。但其本意并不是摒棄CPU的goto
指令,而是在一些高級語言中不推薦有類似的功能語法送粱,比如Java中的goto語句褪贵,只是保留了這個關鍵字,但是并沒有用到抗俄。 - 特殊的程序流程:
- 中斷處理:Interrupt脆丁,計算機硬件具有的一種處理中斷的能力。
- 事件驅動:這是一種適用于GUI編程的一種設計風格动雹,通過事件的產生觸發(fā)程序的執(zhí)行槽卫。
第五章、第六章 算法與數據結構
- 從計算機的機械式的工作方式介紹了算法胰蝠、數據結構的作用歼培,介紹了典型的算法,最基本的數據結構:數組和鏈表茸塞,還介紹的哨兵技巧躲庄,是在線性查找中所使用的一種技巧。
- 算法:計算機的工作方式不能跟人比钾虐,只能依靠數據機械式的盡量邏輯推理噪窘,所以算法并不是單純的數學公式,一段簡單的代碼程序也可以稱為算法效扫,但是有了數學公式的基礎可以實現更為高效的代碼程序倔监。
- 數據結構:計算機的存儲是靠連續(xù)的物理介質存儲的,比如最基礎的數組和鏈表類型數據結構菌仁,為什么它們在不同的數據操作性能完全不同浩习,最主要的原因就是數組存儲在連續(xù)的物理內存中,而鏈表不需要济丘,只需要隨機存儲谱秽,依靠指針相連,數組雖然查找數據很快摹迷,但是如果想插入數據弯院,則需要挪動插入位置后面的所有數據,甚至可能需要重新分配連續(xù)的內存空間泪掀,這個開銷還是很大的,而鏈表性能表現則是想反的颂碘,當然也是跟它的數據存儲根本方式有直接的原因异赫。
第七章 面向對象編程
- 這本書已經很老了椅挣,以至于在讀這個章節(jié)的時候回覺得面向對象編程才剛剛開始……
- 面向對象:三大特性:繼承、封裝塔拳、多態(tài)鼠证。書中也截取了很多學者的領悟,來闡述什么是面向對象靠抑。面向對象只是一種編程思想量九,主要是為了解決大工程項目那已維護和擴展的問題,就好像與其對立的面向過程編程思想颂碧,在項目達到一定規(guī)模就會變得難以維護荠列,而面向對象則會充分體現出它的特性的優(yōu)勢,不論是是分工協作還是代碼組織上都會變得簡單可行载城,正是有了這種編程思想才有了眾多出色的面向對象編程語言肌似,最具代表性的就是Java語言,經久不衰這么多年诉瓦,似乎也快被Kotlin所替代川队,個人也體驗了一段時間,確實比Java靈活睬澡、便捷固额、安全,我覺得他的精髓就在于類型推導煞聪,才能寫出各種靈活便捷的lamda高階函數斗躏,以及各種便捷的語法特性。
第八章 數據庫
想當初在學校的時候SQL語句還是很6的米绕,如今都還給老師了……
- DBMS:Data Base Management System瑟捣,數據庫管理系統(tǒng),用于協助應用程序對數據庫進行操作栅干,保證數據一致且安全的存儲迈套。
- 數據庫設計:拆表實現規(guī)范化、設置主鍵和外鍵碱鳞、確保沒有多對多的關系(連接表實現一對多)桑李、根據需要設置參照完整性(數據安全機制)和索引(提升排序和檢索效率)。
- CRUD:CREAT窿给、REFER(SELETE)贵白、UPDATE、DELETE
- 事務控制:由多條SQL語句構成數據庫操作崩泡,為防止意外發(fā)生禁荒,可以保證數據一致性,事務操作主要有:BEGIN TRANSACTION(開啟事務)角撞、COMMIT(提交事務)呛伴、ROLL BACK(事務回滾)
第九章 TCP/IP
- 通過幾個小實驗勃痴,了解計算機網絡大概全貌,計算機網絡大致分為局域網热康、城際網沛申、廣域網等等,不論哪種計算機網絡姐军,最終都是通過線纜將計算機設備連接到一起铁材,而且從物理形態(tài)或虛擬形態(tài)看都是切切實實的網狀,每個交叉節(jié)點或是一臺計算機奕锌、或是集線器著觉、或是路由器初家。
- 網絡有了辛孵,計算機互相之間想要通信就需要有規(guī)則,而TCP/IP就是這個規(guī)則之一洛心,規(guī)則就好像漢語缴守、英語等語法葬毫,說不同語言的人就好比是計算機,如果想互相溝通無障礙屡穗,就得按規(guī)則進行表達發(fā)音贴捡,這里的發(fā)音就好比是網卡將數字信息轉化出的電信號,然后通過集線器村砂、路由器傳達給其他計算機烂斋。
- 其實網絡通信協議非常復雜,而書只是蜻蜓點水的對協議進行描述础废,如果想了解網絡數據是如何從計算機1->運營商網絡->計算機2汛骂,可以先看一下《網絡是怎樣連接的》,如果只想了解通信協議评腺,可以看其他TCP/IP系列叢書帘瞭。
- TCP/IP實際上是兩個協議,IP是計算機的地址協議蒿讥,是一個虛擬地址蝶念,最終信號傳輸還需要通過物理(MAC)地址進行確認,舉個例子:快遞員第一次去你家送快遞芋绸,但是找不到門媒殉,就會打電話聯系你確認具體地址怎么找,然后問清楚之后就會把快遞送給你摔敛。這里的電話就好比IP地址廷蓉,而具體地址就好比MAC地址。
第十章 加密數據
- 對稱加密:在加密和解密過程中共用同一個秘鑰串马昙,秘鑰的安全性決定了數據的安全性苦酱。
- 非對稱加密:加密過程中使用公鑰售貌,解密過程用私鑰,公鑰需要被公開使用疫萤,私鑰只能是授權人才能獲取,安全性相比對稱加密要安全敢伸。
- 數字簽名:數字簽名可以驗證發(fā)送方身份扯饶,以及數據的完整性,防止收到未授權用戶或者被串改的數據池颈。
第十一章 XML
- Extensible Markup Language尾序,可擴展的標記語言。HTML就是其中一種躯砰,可以用html編寫網頁每币,XML是標記語言的元語言,可以定義各種新語言琢歇。W3C組織為其制定了一系列標準兰怠,還退出了XHTML網頁標記語言。XML也可以用于通用數據格式在互聯網中傳輸李茫,早期還有CSV(Comma Separated Value揭保,逗號分隔值),但是CSV不便于解讀魄宏,不如XML每個字段值都定義標簽秸侣,為其賦予意義,但是如今有更火的JSON數據格式宠互,json結合了XML和CSV的優(yōu)點味榛,便于解讀,數據體量小予跌。
- 適用領域
名稱 | 用途 |
---|---|
XSL | 為XML中的信息提供顯示格式 |
MathML | 描述數學算式 |
SML | 把多媒體數據嵌入到網頁中 |
MML | 描述電子病歷 |
SVG | 用向量表示圖形數據 |
JepaX | 表示電子書 |
WML | 表示移動終端上的數據 |
CHTML | 表示手機上的內容 |
XHTML | 用XML定義HTML4.0 |
SOAP | 實現分布式計算 |
第十二章 SE負責監(jiān)管計算機系統(tǒng)的構建
- SE:system engineer搏色,系統(tǒng)工程師∝暗茫《日經計算機術語辭典2002》解釋:SE指的是在進行業(yè)務信息化時继榆,負責調查、分析業(yè)務內容汁掠,確定計算機基礎設計及其詳細規(guī)格的技術人員略吨。同時SE也負責系統(tǒng)開發(fā)的項目管理和軟件的開發(fā)管理、維護管理工作考阱。由于主要的工作是基礎設計翠忠,所以不同于編寫程序的程序員,SE需要具備從硬件結構乞榨、軟件的構建方法乃至橫跨整個業(yè)務的廣泛知識以及項目管理的經驗秽之。也就是說SE未必寫過程序当娱,但要對計算機相關知識有一定了解,比如前十一個章節(jié)的內容考榨,然而更多的是對項目需求的分析跨细、設計和管理。
- IT:information technology河质,信息技術冀惭。很多時候提到IT這個詞更多想到的是計算機(電腦),畢竟計算機的普及掀鹅,代替和提高了很多行業(yè)中手動處理信息的方式散休,但事實上計算機并不能代表IT,任何一個能有效處理信息的工具和方法都可以稱為IT乐尊,只不過當今最廣泛所使用的就是計算機戚丸。如果哪天量子技術或生物技術有了突破,計算機可能還叫計算機扔嵌,但形態(tài)和組成未必是現在的樣子限府。(想想都覺得科幻??)
- 軟件開發(fā)過程模型:瀑布模型、螺旋模型对人、原型模型等等谣殊。書中主要以瀑布模型為例進行講解,回想實際工作中的規(guī)范流程牺弄,似乎大部分都是從瀑布模型演變而來姻几,盡管并沒有完全按照規(guī)范執(zhí)行,但規(guī)范畢竟是規(guī)范势告。瀑布模型流程:開始->需求分析->外部設計->內部設計->程序設計->編碼實現->測試->部署蛇捌、維護->目標。需要說明的可能主要是外部和內部設計咱台,外部設計主要是面向用戶的設計络拌,比如UI(用戶界面)、功能流程等等回溺,內部設計主要面向程序員春贸,比如架構模型、技術選型等遗遵。
- 設計:所謂設計萍恕,就是拆解。任何事物流程都可以拆解成細小的子任務车要,然后再將每個子任務組合起來允粤,并且能有效地運作起來,這便能成為系統(tǒng)。但是否是一個成功的系統(tǒng)并不是系統(tǒng)實現有多完美类垫,而是系統(tǒng)能否解決用戶問題司光,這就取決于最開始的需求分析,老話說得好悉患,萬事開頭難残家。設計方法也有很多種:
設計方法 | 拆解時關注的事物 |
---|---|
通用功能分割法 | 在整個系統(tǒng)中通用的功能 |
STS法 | 數據流(輸入、變換购撼、輸出) |
TR法 | 事務(數據的處理單位) |
Jackson法 | 輸入數據和輸出數據 |
Warnier法 | 輸入數據 |
面向對象法 | 構成計算機系統(tǒng)的事物(對象) |
一個結論:將計算機系統(tǒng)的構成要素設計成多機備份跪削,可以大幅提升設備利用率。
例如:90%利用率設備a ?? 80%設備利用率b = 72%整體設備利用率
(90%利用率設備a??2) ?? (80%設備利用率b??2) = 95%整體設備利用率