contributed by < steven1lung >
Solana 是一個開源的區塊鏈專案,可以讓我們建立一個快速、高效率且不需准許的區塊鏈。
一個基本的中心化的資料庫在 gigabit 網路上是有可能可以達到 710,000 筆資料每秒,中心化的資料庫也可以複製自己一份來備份達成很好的 availability。
區塊鏈的不可能三角有:安全、效率、去中心化,這3個條件最多只能滿足 2 個,舉例來說 :
Solana 就是能在這三者都有著不錯的成績,所以才能在區塊鏈世界中佔有一席之地。而達到這些的關鍵就是透過分時系統的概念: Time Sharing。當節點沒辦法使用時候,找到可以將時間分配給其他節點的方法,這樣過去幾十年的分散式系統的研究就可以被使用在區塊鏈上。
並且,分時的方法甚至可以使用比特幣一早就有的機制來達成,這個比特幣的機制叫作 nLocktime。nLocktime 使用在利用一個 block height 來使一個交易延後,而不是使用時間讓交易延後。一個區塊鏈的使用者再沒有網路的時候會選擇使用 block height,可以把 block height 想成是密碼學裡的 veriable delay function,簡單來說就是用加密的方式來說一段時間已經過了。
Solana 使用的是更細緻的 verifiable dealy function 和一個 SHA256 hash chain 來檢查帳本和交易。透過這些方式,Solana 可以達到理論性的限制: 710,000 資料每秒。
contributed by < steven1lung > Documentation 在 Linux 核心中,有許多地方都有使用到紅黑樹。但是我們可能會想說為什麼要使用紅黑樹,而不是其他的二元樹像是:AVL Tree 之類。雖然二者平均時間複雜度都是 $O(\log n)$,但因行為和特性的落差,有不同的應用場景。 以下簡述 AVL Tree 和紅黑樹的差異: 平衡AVL Tree 比紅黑樹還要平衡(左右子樹的高度不能差超過 2),但是會在平衡自己的時候花費比紅黑樹多的時間。 如果考慮到要更快速地去 search 一個節點,那 AVL tree 會比較適合。
Jul 28, 2023contributed by <steven1lung> and <Niomoo> Git 是所有開發者、工程師必定要學會如何使用的工具,今天就打算講解一下我們為什麼會需要版本控制工具,以及要如何去初步使用它。  課程投影片請點我。 介紹 Git 是由 Linux Kernel 的開發者 Linus Torvalds 在開發 kernel 時,因為需要一個版本控制工具而發明的。
Nov 18, 2022contributed by < steven1lung > 我自己的心得 在看老師的書 Demystifying the Linux CPU Scheduler 的時候,突然好奇說每一個任務的 loading 是如何運算的,畢竟排程器上的任務如此多,計算出 load 然後依據每個 CPU 的狀態去做 task migration 應該是很重要的課題。所以我就跑去 pelt.c 看了一下實際的運算是如何做到的。 pelt 全名是 Per Entity Load Tracking 在看程式碼的時候,發現有個地方的中括號打反了變成 [1002..1024[,我就想說試試看發人生第一個 patch。 結果自己在摸索如何發 patch 花了好多時間...,轉眼間就早上了。所以就記錄了一下自己發 patch 的過程來紀念逝去的時間。雖然這個 patch 最後是我誤會中括號的用法,所以並沒有被採納,但跟這些厲害的人交流讓人有點興奮><
Sep 29, 2022contributed by < steven1lung > :checkered_flag: 自我檢查清單 [x] 參照 Linux 核心模組掛載機制,解釋 $ sudo insmod khttpd.ko port=1999 這命令是如何讓 port=1999 傳遞到核心,作為核心模組初始化的參數呢? [ ] 參照 CS:APP 第 11 章,給定的 kHTTPd 和書中的 web 伺服器有哪些流程是一致?又有什麼是你認為 kHTTPd 可改進的部分? [ ] htstress.c 用到 epoll 系統呼叫,其作用為何?這樣的 HTTP 效能分析工具原理為何? [x] 給定的 kecho 已使用 CMWQ,請陳述其優勢和用法 [x] 核心文件 Concurrency Managed Workqueue (cmwq) 提到 "The original create_*workqueue() functions are deprecated and scheduled for removal",請參閱 Linux 核心的 git log (不要用 Google 搜尋!),揣摩 Linux 核心開發者的考量 [ ] 解釋 user-echo-server 運作原理,特別是 epoll 系統呼叫的使用
Jun 17, 2022or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up