Steven Lung

@steven1lung

Joined on Nov 1, 2020

  • contributed by < steven1lung > Documentation 在 Linux 核心中,有許多地方都有使用到紅黑樹。但是我們可能會想說為什麼要使用紅黑樹,而不是其他的二元樹像是:AVL Tree 之類。雖然二者平均時間複雜度都是 $O(\log n)$,但因行為和特性的落差,有不同的應用場景。 以下簡述 AVL Tree 和紅黑樹的差異: 平衡AVL Tree 比紅黑樹還要平衡(左右子樹的高度不能差超過 2),但是會在平衡自己的時候花費比紅黑樹多的時間。 如果考慮到要更快速地去 search 一個節點,那 AVL tree 會比較適合。
     Like 2 Bookmark
  • contributed by <steven1lung> and <Niomoo> Git 是所有開發者、工程師必定要學會如何使用的工具,今天就打算講解一下我們為什麼會需要版本控制工具,以及要如何去初步使用它。 ![](https://i.imgur.com/PGzKhpN.jpg =500x) 課程投影片請點我。 介紹 Git 是由 Linux Kernel 的開發者 Linus Torvalds 在開發 kernel 時,因為需要一個版本控制工具而發明的。
     Like 6 Bookmark
  • contributed 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 最後是我誤會中括號的用法,所以並沒有被採納,但跟這些厲害的人交流讓人有點興奮><
     Like 21 Bookmark
  • contributed 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 系統呼叫的使用
     Like  Bookmark
  • contributed by < steven1lung > 會使用到的技術 Polygon Next.js Tailwind ( CSS 的套件 ) Solidity Hardhat Ether.js
     Like 2 Bookmark
  • contributed by < steven1lung > Dapp 所要具備的條件 不能控制使用者的 private key 不能幫助使用者簽署 transaction 合約 重要的資料跟程式碼都要在區塊鏈上 智能合約上要有資安工具在執行 Dapp 要先在 public testnet 測試過 使用以太位址來區分使用者
     Like  Bookmark
  • contributed by < steven1lung > 測驗二 Hazard pointer Hazard pointer 是處理 lock-free 資料結構的記憶體管理問題的一種方式,通常這個問題會出現是因為執行環境沒提供資源回收的機制。 Lock-free 的資料結構都會使用 CAS() 來處理同步問題,例如: Node* currentNode = this->head; // assume the load from "this->head" is atomic Node* nextNode = currentNode->next; // assume this load is also atomic
     Like 4 Bookmark
  • ![](https://i.imgur.com/ceCZ4TU.png =320x) 什麼是 NFT ? NFT 全名 Non-fungible token,非同質化代幣。 fungible : easy to exchange or trade for something else of the same type and value 簡而言之就是這個 token 是獨一無二的,例如說:你可以用同一顆 bitcoin 交換到同一顆等值的bitcoin,但是你用 NFT 只會交換到不一樣的 NFT,很像是小時候玩的卡片遊戲,每個人的卡片都是不一樣的。 NFT 是在區塊鏈上的 cryptographic 產品,有著獨特的 ID 跟 metadata 來區分不同的 NFT。
     Like 2 Bookmark
  • contributed by < steven1lung > Introduction IPFS 全名 InterPlanetary File System,是一個提供檔案、網頁、app 資料存取的分散式系統。 IPFS 是一個 P2P 的 storage network,裡面的 content 可以透過世界各地的 peers 去存取,IPFS 會從 content address 去找你要的資料。 What's Special about IPFS ? 比如說我們想要到維基百科查有關 apple 的資料,那我們可能會到下面的網址瀏覽我們要的資訊。 https://wikipedia.org/wiki/apple
     Like  Bookmark
  • contributed by < steven1lung > 測驗一 瞭解程式碼 #include <stdint.h> uint32_t average(uint32_t a, uint32_t b) { return (a + b) / 2; }
     Like  Bookmark
  • contributed by < steven1lung > 測驗一 瞭解程式碼 int ceil_log2(uint32_t x) { uint32_t r, shift; x--; r = (x > 0xFFFF) << 4;
     Like  Bookmark
  • contributed by < steven1lung > 什麼是白名單 白名單,顧名思義就是一份寫滿被准許的使用者的名單。使用者可以是公司、企業、電腦程式、一個人、或是一個錢包位址。通常來說,我們會把白名單使用在一些特定的場合或是我們想提供的服務裡。 舉例來說,我們訂閱一個經濟平台的日報時,都會被提醒要將此平台的信箱位址加到白名單裡,不然我們的信箱很可能就將我們想收到的信直接丟到垃圾桶裡。或者是有些企業會付錢給一些的網際網路提供者,讓他們企業寄出去的信件不會被標示成垃圾郵件。 所以說在電子信箱使用白名單可以讓我們順利地收到我們需要的資訊,也可以過濾掉我們不想要的資料。 白名單在區塊鏈裡的使用
     Like  Bookmark
  • contributed by < steven1lung > EIP20 介紹 EIP 全名 Ethereum Improvement Proposals,這個專案是為了將 ethereum 的標準合約都集中起來說明,讓使用 ethereum 的客戶或是應用程式可以更輕鬆使用。 EIP20 就是一個標準的加密貨幣介面,可以允許一些智能合約透過 API 溝通。這個合約提供了基本貨幣功能,像是轉帳或是允許貨幣經過認證被使用在其他的鏈上的第三方程式。 EIP20 原始碼 變數 name
     Like  Bookmark
  • contributed by < steven1lung > ERC721A 可以做到什麼 ERC721A 是一個實做的 IERC721,可以達到在單次鑄造多顆 NFT 時省下可觀的 gas fee。 這個合約讓我們可以用鑄造一顆 NFT 的價格來鑄造多顆 NFT。 ERC721A 在開發的時候有跟外部的安全顧問合作來確認這個合約是可行的。 ERC721A 鼓勵大家使用他們的合約來省下 gas fee。 先瞭解一下 Gas Fee
     Like 2 Bookmark
  • contributed by < steven1lung > 什麼是 Solana Solana 是一個開源的區塊鏈專案,可以讓我們建立一個快速、高效率且不需准許的區塊鏈。 為什麼要使用 Solana 一個基本的中心化的資料庫在 gigabit 網路上是有可能可以達到 710,000 筆資料每秒,中心化的資料庫也可以複製自己一份來備份達成很好的 availability。 區塊鏈的不可能三角有:安全、效率、去中心化,這3個條件最多只能滿足 2 個,舉例來說 :
     Like 1 Bookmark
  • contributed by < steven1lung > 開發環境 $ uname -a Linux steven--laptop 5.13.0-28-generic #31~20.04.1-Ubuntu SMP Wed Jan 19 14:08:10 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux $ gcc -v gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) 作業要求 K01: lab0、2022q1 Homework1 (作業區)
     Like 1 Bookmark
  • contributed by < steven1lung > CSR 在沒有CSR 之前,我們的 HTML 檔會通常都會被一大堆 element 所塞滿,但是有了 CSR 後,現在的 HTML 檔案只會放入一個 tag 來裝我們的 script. <html> <head></head> <body> <div id="root"></div> <script src="./script.js"></script> </body>
     Like 1 Bookmark
  • contributed by < steven1lung > 什麼是 2-layer solution Layer 2 是將交易過程從 ethereum mainnet (Layer 1) 移走來達到擴充應用程式的方法,並且保留其安全性跟去中心性。Layer 2 可以增加處理量跟減少 gas fee。著名的 ethereum 2-layer solutions 有 Immutable X, Polygon, Polkadot。 為什麼會需要 2-layer solution 他重要的原因是因為他的可擴充性還有增加的吞吐量,並且在達到這兩者的前提下仍然保持著 ethereum blockchain 的特性,依舊保持去中心、透明公開、安全的過程中,也減少碳足跡的排放 ( gas 減少就代表能量的使用減少,也就代表碳排放減少)。 就算 ethereum 區塊鏈是最常被大家所使用或是大家說是很安全的區塊鏈,ethereum 還是不可避免的有缺點。Ethereum 網路最被大家所詬病的點就是他的處理速度 (每秒最多 13 transactions) 還有昂貴的費用。 2-layer 就可以建立在 ethereum 區塊鏈之上,保證交易安全、快速、可以擴充。
     Like 1 Bookmark
  • 龍帆軒 20210111 DDoS DDoS 全名 distributed denial-of-service ,是一種網路攻擊手法,用多個電腦當作「殭屍」向一個特定的目標發動DoS式攻擊 Dos : denial-of-service 阻斷服務 DoS會對目標發送大量的封包或請求,使得目標系統不堪負荷,達到影響目標系統的目的 DDoS 攻擊大致分為以下幾種 :
     Like 1 Bookmark
  • 龍帆軒 楊舒翔 20201123 使用自己定義的topology 這次修改了p4lang/tutorials/exercise裡的 basic 將原本的四角形拓樸改成兩個switch各接2個host 使他們可以互相傳送封包 因為這次並沒有使用controller 所以table entries跟rules都要自己寫進switch 在pod-topo資料夾裡新增 s1-runtime.json跟s2-runtime.json 在json檔裡寫好需要的table entry
     Like 1 Bookmark