Python C Linux知識總結

2021-09-19 13:13:47 字數 4467 閱讀 5056

2019.7.30

程序和執行緒

1. 守護程序:

在系統後台執行,不受終端控制的程序。

系統啟動就存在的, 不予任何終端關聯的, 用於處理一些系統級別任務的特殊程序。

檢視守護程序: ps -axj

普通程序,可以變成守護程序。

join操作, 多執行緒, 相關知識點聯絡整理

(多執行緒和join)

1)當乙個程序啟動,預設產生乙個主線程。設定多執行緒時,主線程會建立多個子執行緒,setdaemon(false)時,主線程執行完自己任務,就退出了。子執行緒繼續執行自己的任務,直到任務結束。

2)setdaemon(true), 設定子執行緒為守護執行緒,主線程一旦結束,全部執行緒都被終止執行,被迫終止。

3)join,為了執行緒同步,主線程任務結束後,進入阻塞狀態,等待其他子執行緒執行結束,主線程才終止。

(linux面試總結)

python多執行緒:

start(). 執行緒準備就緒,等待cpu排程。

setdaemon(true): 設定為(主線程的)守護執行緒(主線程結束後,子執行緒自動結束)。

join(), 逐個執行每個執行緒,執行完畢後,繼續往下執行。

run(), 執行緒被cpu排程後,自動執行run裡的方法。

time.sleep(), 執行緒暫時掛起。

多執行緒,需要獨佔某一資源時,把它鎖住,使用互斥鎖。

文字處理三劍客

1. awk(處理文字檔案的語言,強大的文字分析工具)

(awk詳細介紹)

(linux文字常用指令)

2. sed(stream editor, 行編輯器, 流編輯器, 便捷的檢視和修改檔案。)

一次處理一行內容,處理時,把當前處理的行儲存在臨時緩衝區,處理完成後把緩衝區的內容輸出到螢幕。然後一行行的處理,直到檔案末尾。

3. grep(global search, regular expression, print out the line, 全域性文字搜尋匹配工具)

根據指定模式,對目標文字進行匹配檢查,並列印到螢幕上。

^ 匹配開頭, $匹配結尾,

-i 忽略大小寫, -v 只顯示不被匹配到的行, -o, 只顯示匹配到的行, -w 匹配整個單詞。

wc (對單詞總數、行總數、位元組總數和字元總數,進行統計)

sort(整理過的文字,顯示在螢幕上, 不改變原檔案)

uniq (輸入中,刪除前後相接的重複的行) 常常和sort一起使用。

2019.7.11

c++是一種編譯型的、靜態型別的(編譯時即知道資料型別錯誤)、通用的、大小寫敏感的程式語言, c++支援過程化程式設計、物件導向程式設計(封裝、繼承、多型)、泛型程式設計(概念、模型化、強化)(c++的兩種抽象方法)。

泛型程式設計的實現:函式模板、類模板,stl是泛型程式設計思想的具體實現。

stl以**迭代器(iterators)容器(containers)**為基礎,是一種泛型演算法庫,容器用來存放操作的東西迭代器是stl的核心,是泛型指標,指向其他物件的物件,迭代器用來遍歷物件區間。

c語言最底層,可以和硬體互動,所以是最高端的語言, c++ 融合了高階語言和低階語言的特點,擴充完善了c語言, 相當於是c語言的乙個超集,任何合法的c程式都是合法的c++程式。c++ > c

c++標準庫:

標準c++由三個重要部分組成:核心語言(提供所有構件快、資料型別、變數、常量等)、c++標準庫(提供大量操作檔案、字串等方法)、標準模板庫(stl,提供大量運算元據機構的方法)

ansi標準: 編寫的c++**,在任何機器平台上都能編譯通過。

c++ 變數宣告: extern,(向編譯器保證以給定的型別和名稱存在,編譯時有意義。 當使用多個檔案時,只在其中乙個檔案中定義變數時,使用變數宣告; 定義變數的檔案在程式鏈結時使用)

變數可以宣告多次,但是定義只能一次。

函式宣告,只提供乙個函式名。 函式的定義可以在任何地方進行。

全域性變數和區域性變數: 區域性變數裡面,區域性變數會覆蓋全域性變數。

c++ 定義常量的方式:1)#define, 2)const

c++指標:c++引用

引用只是換個名字,實際上是同乙個東西,占用同乙個記憶體。

引用被初始化後,就不能在改變了。

引用在建立時必須初始化,引用不能為空。

引用變數是乙個別名,是某個已存在變數的另乙個名字。

不存在空引用,引用必須連線到一塊合法的記憶體中。

一旦引用被初始化為乙個物件,就不能被指向到另乙個物件,指標可以隨意指向另乙個物件。

引用必須在建立時,被初始化; 指標可以在任何時候被初始化。

int i = 17;

int& r = i; &叫做引用, 為i宣告的引用變數。(r是乙個初始化為i的整型引用)

double& s = d; s是乙個初始化為d的double型引用。

引用在函式中,

1)引用作為形參傳遞,可以改變實際的交換值;

2)引用作為返回值,c++函式可以返回乙個引用,實質返回乙個指向返回值的隱藏指標。

實現多型機制,必須的。 泛型技術,用不變的**,實現多種可變的方式

虛函式, 是基類中希望過載的函式,虛函式必須過載,一般呼叫虛函式,呼叫的是繼承類的版本。

用父類的指標指向其子類的例項。 用父類指標,呼叫實際子類的成員函式。

訪問許可權不一樣,

struct的成員預設是public,class預設是private。

(1)python物件的三個基本要素:id(身份標識)、 type(資料型別)、 value(值)

語法:is 和 『== 』的區別

『==『比較的是數值value,is 比較的是id(身份標識)

(2)python中的迭代器、 生成器、 裝飾器

迭代器:是乙個抽象概念,對於容器string、list、dict、tuple等等,像for迴圈一樣進行遍歷, iter()、 next()兩個方法, iter()返回迭代器物件,next()指向下乙個。

生成器: 建立迭代器的簡單而強大的工具,生成器能做迭代器能做的所有事情, 生成器簡潔高效,節省大量記憶體。 返回資料是使用yield。 next()呼叫時,生成器返回它脫離的位置,記憶語句最後一次執行的位置和所有的資料值。

大資料檔案讀取:使用迭代器 for line in file 和生成器 generator。

yield: 生成器,節約系統資源,避免不必要的記憶體占用,

yield可以算是乙個return, 同時也是個生成器的一部分。帶yield的函式是乙個迭代器

next(func), 呼叫next, 函式func正式開始執行,從上一次執行的地方。

(3)gil(global interpreter lock) 全域性解釋鎖,並不是真的多執行緒

python底層的設計,保證同一時刻只有乙個執行緒在執行。(python**的執行由python虛擬機器控制),不停地在切換執行緒,使表面上看起來像是多執行緒。。。。

range, yield, zip

(4)linux指令:

find 和 grep的區別:

find:在特定目錄下搜尋符合要求的檔案,就相當於搜尋功能,搜尋檔案的。

grep:文字搜尋工具,搜尋文字內容的。

(5)python類,實現公有私有。

python屬性,預設是公有的。

『』__ init __「」, 相當於建構函式,建立物件時自動執行的, self實際上就是乙個物件(當前創造的類的物件),

「__name」, 兩個下劃線開頭,這個方法或變數,就是私有。類的外部不能被使用。

(6)深拷貝和淺拷貝

淺拷貝:僅僅只是位址指向,不開闢新空間。 改變原始物件的值,同時也會影響拷貝物件的值。

深拷貝:deepcopy,原始物件和拷貝物件的所有元素位址都沒有相同的了。

python:

物件直接賦值,屬於淺拷貝; 傳遞了引用。

改變乙個的值,另乙個也會直接改變。

copy(), 也是淺拷貝。

深拷貝, copy.deepcopy(), 包含物件裡面的自物件的拷貝,原始物件改變,不會造成新物件的改變。

hashMap hashtable知識點總結

a hashmap實際上是乙個 鍊錶雜湊 的資料結構,即陣列和鍊錶的結合體。hashmap的底層結構是乙個陣列,陣列中的每一項是一條鍊錶。b hashmap的例項有倆個引數影響其效能 初始容量 和 裝填因子。c hashmap實現不同步,執行緒不安全。hashtable執行緒安全 d hashmap...

Jupyter Notebook基礎知識總結

一 各個選項解釋 在notebook頁面開啟時,頁面的右上角有乙個news選項 裡面有四個選項 text file 文字檔案 類似於乙個文字編輯器 folder 資料夾 terminal 終端 開啟python3會來到如下介面 第一行的選項分別為 file 檔案 edit 編輯 view inser...

Se Map Proxy Symbol知識點總結

se map proxy symbol總結 是es6中新增的乙個資料結構。可以理解為乙個內容不可重複的陣列 初始化 常用方法和屬性 add item 用於向set物件內新增一項 item 被新增的項 注 如果新增的是已經存在的內容 則新增失敗 var set new set 0,1,2,3,set....