演算法與基礎

2021-10-04 07:40:13 字數 2043 閱讀 7269

程序:程式執行後,**+用到的資源稱之為程序,它是作業系統分配資源的基本單元。

執行緒(英語:thread):是作業系統能夠進行運算排程的最小單位。包含在程序之中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。

並行:多個cpu同時執行多個任務,比如兩個程式,這兩個程式在兩個不同的cpu內同時被執行。

併發:cpu交替處理多個任務,還是有兩個程式,但是只有乙個cpu,會交替處理這兩個程式,而不是同時執行,只不過因為cpu執行的速度過快,而會使得人們感到是在「同時」執行,執行的先後取決於各個程式對於時間片資源的爭奪。

三次握手——建立tcp連線

1)客戶程序發出連線請求,此時首部同步為syn=1,同時選擇乙個初始序號seq=x,客戶程序進入syn_sent(同步傳送)狀態;

2)服務程序接收到客戶程序傳送的連線請求報文段,如果同意建立連線,在確認報文段中syn=1,ack=1,同時選擇乙個初始序號seq=y,服務程序進入syn_rcvd(同步接收)狀態;

3)客戶程序收到服務程序的響應後,再次給出確認,傳送ack=1,序號seq=x+1,確認序號ack=y+1,此時可以攜帶資料,此時客戶程序進入established(已建立連線)狀態。

四次揮手——釋放tcp連線

此時客戶程序和服務程序都處於established狀態。

1)客戶程序主動關閉tcp連線,連線釋放報文段的終止控制位fin=1,客戶程序進入fin-wait1(終止等待1)狀態,等待服務程序連線釋放確認;

2)服務程序收到客戶程序的連線釋放報文段,發出確認報文段,然後服務程序進入close-wait(關閉等待)狀態,此時客戶程序到服務程序這個方向的tcp連線被釋放,tcp連線處於半關閉狀態(half-close),即客戶程序不會向服務程序傳送資料

3)客戶程序收到服務程序的確認報文段後進入(fin-wait2)終止等待2狀態,等待服務程序發出連線釋放報文段;

4)若此時服務程序沒有資料要傳送,則服務程序發出連線釋放請求,服務程序進入last-ack(最後確認狀態),等待客戶程序確認;

5)客戶程序收到服務程序的連線釋放請求,服務程序進入closed狀態

6)服務程序收到客戶程序的確認報文段後進入closed 狀態;

死鎖:死鎖是指多個程序相互等待,互不相讓,導致所有程序無限期等待

活鎖:每乙個程序需要兩個資源並使用try_lock()試圖獲取鎖,程序a獲得了資源1,程序2獲得了資源2,接下來,它們分別試圖獲取另乙個鎖但都失敗了,於是它們分別釋放當前持有的鎖,然後再試一次,這個過程會一直重複,就像兩個人在一條路上相遇並同時給對方讓路一樣,相同對步調將導致雙方無法前進

飢餓:一些程序永遠無法獲得執行機會,導致餓死。比如在印表機總是先列印最小檔案的程序,那麼大檔案就可能因為不斷需要列印對小檔案而無法執行導致餓死。

時間複雜度

內層執行次數最多的語句就是演算法的複雜度,for是n,while是log(n)

空間複雜度:指演算法在計算機內執行時所需儲存空間的度量,就是看建立了多少次,複雜度就是多少。

都是傳輸層協議

tcp是面向連線的

tcp效率低,udp效率高

tcp是全雙工的,udp不是

tcp傳輸速度慢,udp傳輸速度快

tcp面向位元組流,udp面向報文

https是在http的基礎上呼叫ssl協議來加密內容

1xx 訊息

2xx 成功

3xx 重定向

4xx 客戶端錯誤

5xx 伺服器錯誤

閉包是指函式內部巢狀函式,內部的函式可以改變外部函式的值

即全域性直譯器所(global interpreter lock),每個執行緒在執行時候都需要先獲取gil,為了保證同一時刻只有乙個執行緒可以執行**,即同一時刻只有乙個執行緒使用cpu,也就是說多執行緒並不是真正意義上的同時執行。

通過加鎖,可以解決多執行緒之間資料完整性和狀態同步, 有了gil這把鎖,就可以保證同乙個時刻只允許乙個執行緒使用cpu。

左值通常是位址,右值為位址所存的數值資料

程式設計與基礎演算法

演算法 algorithm 是指解題方 而完整的描述,是一系列解決問題的清晰指令,演算法代表著用系統的方法描述解決問題的策略機制。也就是說,能夠對一定規範的輸入,在有限時間內獲得所要求的輸出。乙個演算法的優劣可以用空間複雜度與時間複雜度來衡量。有窮性 finiteness 演算法必須在執行有限個步驟...

演算法基礎與排序

演算法 algorithm 乙個計算過程,解決問題的方法 程式等於資料結構加演算法 資料結構表現在python中,就是列表,元組,字典和集合等,就是變數和物件等 程式的執行過程就是靠演算法,乙個函式就是乙個演算法 引數就是輸入經過演算法,遞迴有兩個特點 呼叫自身 必須要有結束條件 例子一 def f...

Hash演算法與雜湊表基礎演算法

把乙個較大集合p對映到乙個較小集合q中,其中對映演算法位h,即q h p 每乙個p對應乙個q,乙個q可能對應多個p,這就是hash編碼的初步理解。其中雜湊表,可以認為是一種特殊的資料結構,有 q 個所謂的槽,儲存相應的q值,其中p中的元素出現,就在q中相對應的結果中進行記錄,對於不同p1,p2對應到...