NULL 指標檢查與不檢查之間的比較
根據 C standard, 7.20.3.2/2 [link]
If ptr is a null pointer, no action occurs.
在前篇(下面這連結)
在閱讀編輯器最佳化介紹文章的時候,其中有一段介紹到如何最佳化除法。
因為 bitwise 的位移的速度和乘法的速度會遠小於除法的速度,所以若是能把除法轉換為乘法和位移的組合,就可以在某種程度上加速除法運算的數度。
因此在文章中發現了一段神秘的數學:
除以 3 的話,因為 除法比乘法慢非常非常多,所以編譯器會把 x / 3 改成 (x * 2863311531) >> 33
x / 3
(x * 2863311531) >> 33
身為一個出社會就一直寫 C 的程式碼生物,switch case 在 C 裡面可以編譯成 jump table (轉移表) 算是個不可或缺的小知識。Jump table 可以有效的讓程式跑得更快,以常數時間去執行不同 condition 的分支,並避免 branch prediction 預測錯誤所造成的 penalty。
string 在 Go 裡面是一個唯讀的物件,並且等同 bytes 所構成的 slice。因為本質上是 bytes 所以裡面是用什麼編碼 (UTF-8 或 Unicode) 都沒有關係。
當 debug 的時候需要確定 string 內容有沒有問題的時候,Go 提供了不少有趣的有工具。我們可以透過格式化輸出 fmt.Printf 的不同格式化參數得到不同的結果。
fmt.Printf
MQTT 的 client 和 通訊服務(telemetry service) 之間會維護一份他們兩者間通信期(session)狀態的資訊。這份狀態資訊是用來確保 MQTT 三種訊息傳輸時所選的 QoS (Quality of Service),分別是 :
This article would focus on how to use the MAM library in itoa monorepo entangled. I may write the other…
大家都知道在 iota 中是使用 Trinary (三進位)系統,因此在送資料的時候必須從電腦原本的二進位編碼轉換為三進位編碼。這本身沒有什麼問題,說不定反而要說是 IOTA 的特色之一。當初幾個 IOTA 理想主義色彩濃厚的元素,三進位就是其中之一。但是呢本人最近在開發 IOTA 軟體的時候發現被大大的 gank 了,所以特別寫了這篇文章來解釋一下。