Golang零碎筆記 2

2022-02-22 06:51:18 字數 1937 閱讀 5328

1.主協程(main協程)退出後,子協程會相繼退出,這個是如果主協程不阻塞看不到子協程列印結果的原因。

2.runtime.goexit()函式用於終止當前 goroutine,但 defer 函式將會被繼續呼叫。

3.gomaxprocs(n int) int 用來設定可同時執行的執行緒數,並返回當前設定的值,如果 n<1 將不會改變當前的設定。numcpu()返回當前的cpu核數,通常這樣使用:

runtime.gomaxprocs(runtime.numcpu())

4.併發和並行是兩個概念。併發是對單核進行輪詢執行,並行是多核平行執行。

5.匿名函式的呼叫記得加上括號。

6.goroutine 之間通過 channel 來通訊,可以認為 channel 是乙個管道或者先進先出的佇列。你可以從乙個 goroutine 中向 channel 傳送資料,在另乙個 goroutine 中取出這個值。生產者/消費者是最經典的 channel 使用示例。協程消費者在沒有接收到資料前,是阻塞的。

7.channel 可以是多種資料型別。生產者直到資料被消費者取走後才能傳送下一條資料;channel 的消費者直到生產者放入資料後繼續取資料。正是這種機制,才保證資料的不會錯亂,從而實現同步。

8.go 裡的定時器相關的函式有 time.after,time.afterfunc,time.tick .//返回 channel 型別,10秒後向 channel 傳送當前時間t :=

9.golang 可以在任何平台上開發,只要到目標平台上編譯即可。我們所需要做的就是複製交叉編譯的二進位制檔案來實現可移植性。

10.gin是乙個mvc的web開發框架,跟php的傳統框架很相似。

11.如果兩個或者多個 goroutine 在沒有互相同步的情況下,訪問某個共享的資源,並試圖同時 讀和寫這個資源,就處於相互競爭的狀態,這種情況被稱作競爭狀態(race candition)。競爭狀態 的存在是讓併發程式變得複雜的地方,十分容易引起潛在問題。對乙個共享資源的讀和寫操作必 須是原子化的,換句話說,同一時刻只能有乙個 goroutine 對共享資源進行讀和寫操作。

C 零碎筆記2 常量

常量是固定值,在程式執行期間不會改變。這些固定的值,又叫做字面量。常量可以是任何的基本資料型別,可分為整型數字 浮點數字 字元 字串和布林值。常量就像是常規的變數,只不過常量的值在定義後不能進行修改。整數常量可以是十進位制 八進位制或十六進製制的常量。字首指定基數 0x 或 0x 表示十六進製制,0...

C 零碎筆記

1 編寫c 儲存為.cs檔案。2 通過csc.exe程式來將.cs檔案編譯為.net程式集 exe或.dll 是 偽exe 包含很多內容其中有微軟中間語言il可以被翻譯成類似彙編的中間碼 此時的exe或dll並不是機器碼 cpu不可理解 csc out c a.exe c program.cs 3 ...

Python零碎筆記

魔法方法 在python中,有一些內建好的特定的方法,這些方法在進行特定的操作時會自動被呼叫,稱之為魔法方法。常見的魔法方法有 init 初始化函式,在建立例項物件為其賦值時使用,必須至少有乙個引數self。new 建構函式,建立並返回乙個例項物件。必須要有返回值,返回例項化出來的例項。class ...