Adapter Pattern
※ 情境 : 當你希望使用某個類, 但是其介面與其他程式碼不相容時, 可以使用轉接器類。
Interface
1 | type Charger interface { |
每天都比昨天進步一點
※ 情境 : 當你希望使用某個類, 但是其介面與其他程式碼不相容時, 可以使用轉接器類。
Interface
1 | type Charger interface { |
※ 情境 : 當多個類的演算法除了一些細微不同之外,其他幾乎完全一樣時,可以使用樣板方法模式。但其後果就是,只要演算法發生變化,你就可能需要修改所有的類。
Interface
1 | type SpendMoney interface { |
※ 情境 : 當有許多僅在執行某些行為時略有不同的相似類時,可使用策略模式。
Interface
1 | type Transportation interface { |
※ 情境 : 如果程式碼需要與多個不同系列的相關產品互動, 但是由於無法提前獲取相關資訊, 或者出於對未來擴展性的考慮, 你不希望程式碼基於產品的具體類進行建構, 在這種情況下, 你可以使用抽象工廠。
Interface
1 | type Shirts interface { |
Define
1 | type BeverageType string |
Interface
1 | type Beverage interface { |
※ 定義 : 可以動態地為物件附加額外的職責。使用裝飾器來擴展功能比使用繼承更有彈性。
FunctionType 定義一個函數類型
1 | type FunctionType func(string) string |
Message 函數返回一個基本的消息
1 | func Message(name string) string { |
目的是為了降低資料的「重覆性」與避免「更新異常」的情況發生。
正規化層級 (每一層皆需符合前面層級的正規化) :
正規化步驟 :
層級 | 處理 |
---|---|
未經正規化資料表 | - |
↓ | 除去重複群 |
第一正規化 | - |
↓ | 除去部份相依 |
第二正規化 | - |
↓ | 除去遞移相依 |
第三正規化 | - |
目前透過 rollup 鏈 (Arbitrum, Optimism) 解決可擴充性問題,不過由於底層 Layer-1 鏈的設計架構導致仍然過於昂貴和緩慢,因此做出以下更新 :
※ 資料可用性抽樣 原理 : 當一個節點收到一個新的區塊時,它不會立即下載整個區塊,而是先隨機抽樣區塊中的一部分數據,然後它會詢問網絡中的其他節點來驗證這部分數據的有效性,如果網絡中的大多數節點都確認這些數據是有效的,那麼這個節點就可以確定整個區塊的數據是可用的,然後再下載和驗證整個區塊。這種技術可以防止”壞節點“發送包含無效或不完整數據的區塊,並且可以在不需要下載和驗證整個區塊的情況下快速確定區塊數據的可用性,從而提高了區塊鏈的效率和可擴展性。 (此技術主要用於 PoS)
檢視函數和純函數是在智能合約中執行操作時不需要支付 gas 費用的函數。檢視函數是唯讀的函數,不會對智能合約狀態進行更改,而純函數是不會讀取或更改智能合約狀態的函數。
在智能合約中使用迴圈會導致額外的 gas 費用。因此,盡可能避免使用迴圈。例如,可以使用 Solidity 的 map 和 array 類型來替代迴圈。
在智能合約中使用事件可以使資料在智能合約和外部應用程式之間傳遞,而不需要支付額外的 gas 費用。
在智能合約中儲存資料會導致額外的 gas 費用。因此,盡可能避免儲存不必要的資料。例如,可以使用檢視函數來返回計算結果,而不需要將結果儲存在智能合約中。
盡可能使用簡單的計算和演算法來減少 gas 費用。一些常見的最佳化技巧包括快取計算結果,避免使用昂貴的加密演算法,以及使用位運算子。
tag:
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true