最近花很多力氣優化 msgpack-nodejs 這個專案
參考了其他先進的優化策略、把效能拉到跟當時 nodejs 生態圈最快的專案同等級
但不夠多自己原創的東西,也還是覺得有優化空間,所以還是努力一點一滴的累積優化
終於在今天,撇除跑分太鬼的 msgpackr,編碼速度贏了 22%、解碼速度贏 19%,覺得終於可以休息了
這邊文章是想在把這些細節遺忘前做點紀錄
今天在寫 benchmark-js-object-…
在 Javascript 裡面,整數、浮點數沒有區隔
比如我寫 11 / 2
會拿到 5.5
,但在 Java 會拿到 5
因此在使用 Javascript 除法的時候,我們時常要在除法外面包一層 Math.floor()
我們的預期是 Math.floor(5.5)
會回傳 5
所以我們也預期 Math.floor(-5.5)
會回傳 -5
……,但其實會回傳 -6
改用 Math.trunc() 就可以了,寫法是 Math.trunc(-5.5)
ArrayBuffer 是本篇文章將提到各個 API 的根本
它的別稱是「Byte Array」,就是 Byte Array 的意思,在這個「Array」中每一個 element 就是一個 Byte(8 bits)。
因為在宣告時就要定義長度,比如 new ArrayBuffer(4)
便會分配總共 4 Bytes(32 bits)的空間。對於這樣連續的記憶體,JS 不允許你直接寫資料到裡面,而要透過一些 View 幫你操作,比如有多種類型讀寫能力、但一次只能讀寫一個數字的 DataView,或者一次只能使用一種資料類型、但可以一次性寫入多個數字的 TypedArray。
CloudFront 是 CDN 服務,其提供的 Origin Shield 的功能就是降低(CDN 後方) origin server 的壓力。
CloudFront 在定價頁面中,關於 Origin Shield 的定價說的有點模糊,不過在文件裡有解釋。簡單來說,是Cache miss requests * Origin Shield charge per 10,000 requests / 10,000
。
上述公式的主要變數在前者。而後者的費率在不同區域是固定的,比如把 Origin Shield 放在 Tokyo 就是 $0.0090。
本篇文章整理了後端開發的各種知識點,可以在每次面試前再次確定自己是否瞭解並能解釋出這些概念。
START TRANSACTION
和 COMMIT
把 SQL 包起來執行,不要太小包,也不要大包到要跑好幾個小時LOCK TABLES
敘述--sql_mode=NO_ENGINE_SUBSTITUTION
參數在上一份工作,偶爾會有種「要是我當初有認真念書」就好的感覺。
離職後,邊休息邊複習一些基礎科目:作業系統、計算機網路、資料結構,而網路上已經相當多人描述過這類主題,提供各式各樣的教材,這篇文章的目的是記錄我最終用來複習的教材。
最近買了 圖解 TCP/IP 網路通訊協定 (涵蓋IPv6) 來重新學習網路的相關知識,這本書真的不錯。雖然這本書是用由下至上(Bottom-up)的方式介紹網路,但讀完之後個人認為這樣的安排也很不錯。
看完之後我認為這本書是很營養的,因為除了網路的基本知識,它也介紹了與網路安全有關的機制。
這五年間我努力讓自己做事更順暢、更完善,為此需要努力從每一次的專案汲取經驗。
這篇文章算是為自己這五年的職涯作一些心得分享,有興趣的話可以點進來看看。
但如果是有心想要成就自己的人,還是買本 The Pragmatic Programmer 來看吧 XD
因為我偶爾會突然想到很重要的一些心得,所以會時不時加入新東西到這篇文章