精簡的言語講述技術人,必須掌握基礎性IT知識技能,第一篇

前言

此係列將以精簡的言語講述技術人,必須掌握基礎性IT知識技能,請持續關注,希望給大家都是一些精簡的乾貨.

第一部分:必須掌握的設計模式的6大基本原則

23個設計模式,都是從這六大設計模式中演化而來,所以這六大原則是產生23個設計模式的原則,作爲技術人,可以不知道23個設計模式,但不能不知道這六個原則,這是心法

23個設計模式那是招式,所以基本原則比23個設計模式更爲重要

原則一:單一職責

定義:一個類只負責一個功能領域中的相應職責;

亦即:你定義的類就一個因素可以引起它的變化。

簡化理解:一個類單純地幹好一個活。

思考:繼承關係(IS-A)是否有些違背了這一原則,在以後軟件生命週期中,編碼人需要考慮:基類要對子類負責。是不是Has-A更好呢?

原則二:開閉原則

定義:一個軟件模塊(或類)僅對擴展開放,對修改關閉。

亦即:不要想着修改現有功能,而是如何擴展現有功能。

簡化理解:修改現有的功能,就意味着一切從來,帶來不穩定。

思考:這一原則是對既有功能穩定性的維護,另一方面體現了面向抽象(接口)編程的重要性,接口不變,實現內容裏面做調整。

 

原則三:迪特米法則

定義:最少知識原則

亦即:軟件模塊(或類)間儘量避免相互影響,相互不該知道就不要暴露。

簡化理解:這是對安全和穩定性的維護

思考:安全領域的一個思想就是:權限最小化。

 

原則四:接口隔離原則

定義:類所需的接口應該是最小的,是自己需要的。

亦即:使用多個專門的接口,而不使用單一的總接口,即客戶端不應該依賴那些它不需要的接口。

簡化理解:不要設計一個很大的接口,自以爲包羅萬象,帶來的是冗餘。

 

原則五:依賴導致原則

定義:抽象不應該依賴於細節,細節應當依賴於抽象。換言之,要針對接口編程,而不是針對實現編程。

思考:爲什麼IOC大行其道?解決的問題是爲了什麼?

 

原則六:里氏替換原則

定義:使用的基類可以在任何地方使用繼承的子類,完美的替換基類。

思考:面向抽象編程,面向接口編程

 

第二部分:數據在內存中的存儲形式

2.1 三碼的表示方式

計算機的二進制在內存中的存儲形式:補碼,且因CPU架構等不同採用了大小端存儲在內存中,關於大小端大家自行閱讀相關文章,至於有什麼用,目前我能告訴你的是:

當我們設計底層編程及對數據存儲和通訊時,我們可以頭腦清醒.

正數的原碼、反碼、補碼都是就是原碼;提示,因爲計算機採用補碼,所以技術人腦子裏面應該是補碼,多轉幾圈沒有必要.

 

負數的反碼=符號位不變,其他位取反;

負數的補碼=反碼+1;

 

[+1] = 0000 0001

[-1] = 1000 0001

 

[+1] = [00000001] = [00000001]

[-1] = [10000001] = [11111110]

 

[+1] = [00000001] = [00000001] = [00000001]

[-1] = [10000001] = [11111110] = [11111111]

 

2.1 爲什麼計算機內採用補碼

原因如下:

1.原碼不能表示減法:  1 - 1 = 1 + (-1) = [00000001] + [10000001] = [10000010] = -2

2.反碼出現+0,-0:   

1 - 1 = 1 + (-1) = [0000 0001]原 + [1000 0001]原= [0000 0001]反 + [1111 1110]反 = [1111 1111]反 = [1000 0000]原 = -0

3.所以出現補碼

PS:所以作爲技術人,先記住你的數據在內存中是補碼

 

注意:有一個行規,最大的負數的補碼用1000...00進行表示

 

所以:類似於int的取值範圍用(2^-31 -->2^31-1)進行表示 (中間有一個0)

 

第三部分:通訊協議必備知識

下圖屬於一個TCP/IP協議的全貌,大家可以收藏,多看看多瞭解,對於做通訊的技術人,這圖很有價值,

對於普通人而言至少需要知道實際的四層協議,這個小圖具有比較精簡的直觀理解,而大圖值得收藏後期查閱使用,

本篇到此爲止,後續接着寫,

 

 

 

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