程序課堂小結day28

2022-08-12 12:15:12 字數 2489 閱讀 9782

粘包問題:

無法確認傳送資料的大小。

短時間內傳送多次資料量小並且間隔時間短的資料會一次性打包傳送。

struct

可以將乙個很長的資料,壓縮成固定的長度,比如4.

解決粘包問題:

通過struct模組弄乙個報頭。

可以把字典壓縮成乙個報頭,傳送給服務端。

服務端接收到報頭後解壓縮,獲取真實字典資料長度。

​ 接收字典真實資料。

注意:字典裡可以攜帶即將傳送的資料描述資訊,以及資料的真實大小。

上傳大檔案

客戶端傳送字典到服務端

服務端接收到字典後,利用字典內檔案的名字,以刻名字建立檔名。

字典內包含著大檔案的資料大小,然後迴圈一點一點接收。

udp:

socketserver

基於socket模組封裝而成,內建的theadingtcp(),可以支援多個使用者同時連線伺服器。

ftp

1)穿孔卡片:

乙個計算機機房,一次只能被乙個卡片使用。

缺點:cpu利用率最低。

2)聯機批處理系統

支援多使用者去使用乙個計算機機房。

3) 離線批處理系統

高速磁碟:

提高檔案的讀取速度。

優點:提高cpu的利用率

3)多道技術(基於單核情況下研究):

- 單道:

多個使用使用cpu時是序列。

- 多道技術:

- 空間上的復用(*******):

乙個cpu可以提供給多個使用者去使用。

- 時間上的復用(*******):

切換 + 儲存狀態

io操作:

input()

print()

time.sleep(3)

1) 若cpu遇到io操作,會立即將當前執行程式cpu使用權斷開。

優點:cpu的利用率高。

2) 若乙個程式使用cpu的時間過長,會立即將當前執行程式cpu使用權斷開。

缺點:程式的執行率降低。

- 併發與並行:

併發: 指的是看起來像同時在執行,多個程式不停 切換 + 儲存狀態。

並行: 真實意義上的同時執行,在多核(多個cpu)的情況下,同時執行多個程式。

2.程序

- 程式與程序

- 程式: 一堆**。

- 程序: 一堆**執行的過程。

- 程序排程:

當代作業系統排程:

時間片輪轉法 + 分級反饋佇列

1)先來先服務排程:

a,b程式,若a程式先來,先占用cpu。

缺點:程式a先使用,程式b必須等待程式a使用cpu結束後才能使用。

2)短作業優先排程:

a,b程式,誰的用時短,先優先排程使用cpu。

缺點:若程式a使用時間最長,有n個程式使用時間短,

必須等待所有用時短的程式結束後才能使用。

3) 時間片輪轉法

cpu執行的時間1秒中,載入n個程式,要將1秒等分成多n個時間片。

4) 分級反饋佇列

將執行優先分為多層級別。

- 1級; 優先順序最高。

- 2級: 優先順序第二,以次類推。

- 3級

....

- 程序的三個狀態:

- 就緒態:

所有程序建立時都會進入就緒態,準備排程。

- 執行態:

排程後的程序,進入執行態。

- 阻塞態:

凡是遇到io操作的程序,都會進入阻塞態。

若io結束,必須重新進入就緒態。

- 同步和非同步:

指的是提交任務的方式。

- 同步:

若有兩個任務需要提交,在提交第乙個任務時,

必須等待該任務執行結束後,才能繼續提交並執行第二個任務。

- 非同步:

若有兩個任務需要提交,在提交第乙個任務時,

不需要原地等待,立即可以提交並執行第二個任務。

- 阻塞與非阻塞:

- 阻塞:

阻塞態。遇到io一定會阻塞。

- 非阻塞:

就緒態執行態

面試題: 同步和非同步,阻塞和非阻塞是同乙個概念嗎?

強調: 不是同乙個概念,不能混為一談!

最大化提高cpu的使用率:

盡可能減少不必要的io操作。

程序號**的兩種條件:

1.join,可以**子程序與主程序。

2.主程序正常結束,子程序與主程序也會被**。

3.殭屍程序與孤兒程序(了解):

殭屍程序:

指的是子程序已經結束,但pid號還存在,未銷毀.

缺點:占用pid號,占用作業系統資源.

孤兒程序:

指的是子程序還在執行,但父程序意外結束.

作業系統優化機制:

提供乙個福利院,幫你**沒有父親的子程序.

4.守護程序:

指的是主程序結束後,該主程序產生的所有子程序跟著結束,並**.

前端學習Day28

一 補充 1.js中的三大特殊資料 undefined,null,nan nan 非法的數值運算得到的結果 特殊之處 1.是乙個數值型的資料,但是不是乙個數字 2.nan不等於任何值,和任何資料都不相等,nan不等於nan 檢測方法 isnan 要檢測的資料 true 檢測結果為 nan 或能轉成 ...

day28 什麼是變數

第28節 什麼是變數 變數是什麼?在程式的程序中需要儲存一些資料。大家之前學彙編的時候知道了,儲存資料可以存到cpu中也就是存在暫存器裡也可以存在記憶體中。但是在c語言中儲存資料的時候我們要把這個資料儲存到 呢?在c語言裡所為的變數就是乙個容器,也就是一塊記憶體。1 宣告變數 變數型別 變數名 變數...

day28 物件列舉

var obj for var prop in obj 如果用obj.prop的形式訪問,相當於訪問obj prop 系統把這個prop當成屬性而不是變數。所有繼承了 object.prototype 的物件都會從原型鏈上繼承到 hasownproperty 方法,使用 hasownproperty...