https://mvbbb.cn/mybatis-generator-maven-plunge-and-lombok/
2022/12/22
2022/11/30
NPM node package manager
- NPM node package manager 列入NodeJS默認模塊管理工具
- npm -v
- NPM兩大核心
- 模塊倉庫 Register/Repository
- 內置模塊 built-in modules
- http ... etc
- 第三方模塊 3rd party modules
- CLI 命命行介面
- NPM 模塊查詢頁面
- https://www.npmjs.com/
- NPM CLI
- 下載 更新 卸載模塊
- 指令
- npm init 初始化項目
- 生成 package.json
- npm intall xxx@version 安裝xxx模塊
- npm install --save xxx (默認)
- 所有被安裝的模塊都會被保存在 node_modules
- xxx模塊內也有package.json
- npm uninstall xxx 卸載xxx模塊
- 清除node_modules
- npm -l 查看
- npm install --save-dev mockjs 安裝開發用的模塊
- npm install 依照package.json內容下載安裝所有模塊
- package.json
- "dependencies" 項目需要依賴的第三方模塊
- "devDependencies" 項目開發依賴 , 不會打包
- /node_modules
- 所有被安裝的模塊都會被保存在 node_modules
- /dist
- 編譯後待發布的檔案
2022/11/28
Vue 筆記
- 核心
- 聲明式編碼:
- 插值語法&指令語法
- vscode extension plugin
- open in browser
- Vue 2 Snippets
- Live Server
- dev tool & Vue config
Vue.config
是一个对象,包含 Vue 的全局配置。可以在启动应用之前修改下列 property
- $ 符號開頭為vue提供給程序員使用的屬性
- vue cli
- vue --version
- npm install -g @vue/cli
- vue create 項目
- MVVM模型
- Vue 數據代理
2022/9/27
2022/8/8
Golang
- 與java比較
- GMP模型 官方
- GMP模型 來源
- G:Goroutine,实际上我们每次调用 go func 就是生成了一个 G。没有数量限制。但会受内存限制(Goroutine 创建需申请 2-4k 连续内存块)
- P:Processor,处理器,一般 P 的数量就是处理器的核数,可以通过 GOMAXPROCS 进行修改。 本地隊列存放G
- M:Machine,系统线程。默认数量限制是 10000
- 流程:
1. 调用 go func()创建一个goroutine;
2. 新创建的G优先保存在P的本地队列中,如果P的本地队列已经满了就会保存在全局的队列中;
3. M需要在P的本地队列弹出一个可执行的G,如果P的本地队列为空,则先会去全局队列中获取G,如果全局队列也为空则去其他P中偷取G放到自己的P中
4. G将相关参数传输给M,为M执行G做准备
5. 当M执行某一个G时候如果发生了系统调用产生导致M会阻塞,如果当前P队列中有一些G,runtime会将线程M和P分离,然后再获取空闲的线程或创建一个新的内核级的线程来服务于这个P,阻塞调用完成后G被销毁将值返回;
6. 销毁G,将执行结果返回
7. 当M系统调用结束时候,这个M会尝试获取一个空闲的P执行,如果获取不到P,那么这个线程M变成休眠状态, 加入到空闲线程中
- GM模型(舊)與GMP模型(新) 來源
- GM缺點
- 调度 : 获取G全局队列锁,形成了激烈的競争
- 轉移 : P0執行G0生成G1 , 為了繼續執行G0需要轉移給P1執行 , 但G0和G1又共享資料
- GPM:
- 調度 : 因為多了P的本地隊列, 減少鎖競爭
- 轉移 : P0執行G0生成G1 , G1优先存放到P0的本地队列中,如果队列满了,则会把P0队列中一半的G移动到全局队列
- 如果P的本地队列为空,那么他会先到全局队列中获取G,如果全局队列中也没有G,则会尝试从其他线程绑定的P中偷取(steal)一半的G
- 效能調教工具 pyroscope
- wget https://dl.pyroscope.io/release/pyroscope-0.31.0-linux-amd64.tar.gz
- tar -zxvf pyroscope-0.31.0-linux-amd64.tar.gz
- "github.com/pyroscope-io/pyroscope/pkg/agent/profiler"
- profiler.Start(profiler.Config{
- ApplicationName: "name",
- ServerAddress: "address",
- })
- /tmp/pyroscope adhoc go run main.go
- 效能調教工具 pprof
- main.go
- _ "net/http/pprof"
- gorace()
- func gorace() {
- c := make(chan bool)
- m := make(map[string]string)
- go func() {
- m["1"] = "a" // First conflicting access.
- c <- true
- }()
- m["2"] = "b" // Second conflicting access.
- <-c
- for k, v := range m {
- fmt.Println(k, v)
- }
- http.ListenAndServe("localhost:6060", nil)
- }
- 所有效能資訊
- http://localhost:6060/debug/pprof/
- cpu報告
- go tool pprof http://localhost:6060/debug/pprof/profile
- heap報告
- go tool pprof http://localhost:6060/debug/pprof/heap
- cli模式
- top10 前10名
- list [method] 查看method
- pdf 匯出pdf
- flat : func執行所需heap或cpu時間(不包含內部func所需時間)
- cum : func所有所需heap或cpu時間
- online分析報告
- go tool pprof -http=:8080 C:\Users\david\pprof\pprof.alloc_objects.alloc_space.inuse_objects.inuse_space.003.pb.gz
2022/8/7
乙太鏈
- 乙太歷史 來源
- 乙太鏈 2.0 升級
- 為何升級
- 1.0 採用POW , 遇到交易堵塞, 手續費高...等問題
- 2.0 採用POS , 分片技術 (64個分片 , 每分片1秒15個交易) , 預計要到2024年完成
- 合併
- 執行層面 execution layer
- 智能合約
- DApps
- 共識層面 Consuensus layer
- 2020/12/01 已有一個 POS機制的Beacon chain , 將於2022/09使用
- 升級優點
- 交易速度增加
- 交易費降低
- 升級缺點
- 分片過程的風險
- DApps的風險
- 安全性的風險
- EIP 提案
- 介紹 https://github.com/ethereum/EIPs
- 所有提案列表 https://eips.ethereum.org/all
- 提案狀態
- ERC 智能合約
- 所有介面標準 https://eips.ethereum.org/erc
2022/8/2
比特幣
- 背景
- 作者 : 中本聰 (未公開長相 ,已消失於網路上)
- 比特幣曾經歷過多次分叉
- 如硬分叉 > 比特幣現金BCH
- 帳戶模型: utxo-based model
3 種比特幣核心地址格式:
P2PKH (pay to pubkey hash)
1開頭
non Segwit
P2SH (pay to Segregated hash)
3開頭
BIP13
Segwit
bech32
bc1開頭
Segwit
- github主流項目
- Bitcoin Core
- 中本聰發起 , C++語言
- 官網 https://bitcoin.org
- 節點 https://bitcoin.org/en/full-node
- RPC DOC https://developer.bitcoin.org/reference/rpc/index.html
- bitpay發起 , javascript語言
- Btcd ,
- btcsuite發起 , golang語言
- 配置 bitcoin.conf
- 產生器 : https://jlopp.github.io/bitcoin-core-config-generator/#config=eyJfX2ludGVybmFsIjp7InBsYXRmb3JtIjoiTGludXgifX0=
- 介紹 : https://en.bitcoin.it/wiki/Running_Bitcoin
- 手續費計算
- https://bitcoinops.org/en/tools/calc-size/
- 字節說明
- https://en.bitcoin.it/wiki/Script
- test net scan
- https://www.blockchain.com/explorer?view=btc-testnet
- main net scan
- https://www.blockchain.com/explorer?view=btc
- RPC URL 說明
- https://en.bitcoin.it/wiki/API_reference_(JSON-RPC)
- BIP Bitcoin Improvement Proposals
- https://ithelp.ithome.com.tw/articles/10279944
- 開發者向比特幣社群提出比特幣Bitcoin 新功能或改進建議的技術設計文件
- 目前所有BIP提案內容 https://github.com/bitcoin/bips
- 地址產生器Mnemonic Code Converter
- https://iancoleman.io/bip39/
- BIP 32 : 定義 Hierarchical Deterministic wallet (簡稱 “HD Wallet”),是一個系統可以從單一個 seed 產生一樹狀結構儲存多組 keypairs(私鑰和公鑰)
- https://ithelp.ithome.com.tw/articles/10279944
- BIP 39 : 將 seed 用方便記憶和書寫的單字表示。一般由 12 個單字組成,稱為 mnemonic code(phrase),中文稱為助記詞或助記碼。
- https://ithelp.ithome.com.tw/articles/10280092
2022/7/30
區塊鏈淺嚐
- 名詞解釋
- 區塊鍊
- 區塊 : 內含被打包的多筆交易 , 產生 block hash
- 鏈 : 因為每一個塊都有前一個塊的block hash , 故能串成鏈
- 最長鏈 : 當多個節點同時在打包區塊時, 以算力最快者打包出的最長鏈為正確結果 , 經驗以超過六個區塊的機率會降低近乎於0
- 節點 : 即有安裝服務的獨立主機 , 可以與網路上其他節點取得共識 , 複製塊數據資料, 或挖礦
- 挖礦 : 是一個獎勵行為 , 因為沒有特定維護人員 , 故誰可以維護將提共獎勵
- 打包交易>出塊 > 必須符合條件 > 挖礦成功 > 獲得獎勵
- 軟分叉 : 節點版本升級 , 新舊版本節點互相認同,傳送區塊資訊
- 硬分叉 : 新舊版本節點無法相容 , 已是獨立的區塊鏈。新節點無法傳送資料給舊版本,舊版本節點卻可以傳送給新版本,在這樣的情況下,新版本的節點可以接收新舊版本,最長鏈就會在新節點
- 帳務模型
- Account Model
- 例如乙太幣 , 馬蹄幣... etc
- 每一個帳戶皆有餘額欄位
- UTXO Mode
- Unspent Transaction Output
- 例如 比特幣 , 比特幣現金...etc
- 沒有餘額欄位 , 因每次交易都會記錄找零 , 故餘額來自於 所有找零的總和.
- 隔離見證 SegWit
隔離(Segregated): 見證數據(簽名數據)從交易信息里抽離出來,單獨存放
見證(Witness): 對交易合法性的驗證 , 即付款人擁有該筆交易的”UTXO輸出”
在基本塊大小(base block)有限下 , 改變儲存結構隔離出見證數據(scriptSig) , 騰出更多存放交易數據的空間,得到提高交易速度與降低手續費的效果
- 共識機制
- 不可能三角
- 去中心化(Decentralization)
- 可擴展性(Scability)
- 安全性(Security)
- POW ( Proof-of-Work)工作量證明機制
- 猜數字競賽
- POS (Proof of Stake)權益證明
- 以"持幣數量"有更高的機率能夠獲得記帳的權利,以及相對應的報酬
- 區塊鏈4大核心技術
- 分佈式帳本
- 數據儲存
- 去中心化
- 當一筆數據產生後, 數據將同步到所有節點服務上
- Q1 : 雙花問題: 同一筆錢因為網路問題或惡意行為 , 造成重複消費
- A: UTXO+時間戳
- UTXO模型 : 鏈上會先確認該筆資金來源是否已被消費過,並通知全網節點
- 時間戳 : 提供時間烙印,按時間順序處理
- 共識機制
- 數據處理
- 因所有節點服務都在處理數據, 需要決定一套處理規則
- Q1 : 拜占庭將軍問題: 多個將軍(節點)分散在不同地點 , 必須同時完成同一件事情, 並且沒有數據安全性問題(偽造,錯誤)
- A: 只要超過一半多數節點投讚成票 , 即數據是正確的.
- 密碼學
- 數據安全
- 打包好的數據, 透過密碼學的hash函數加密, 並且每一塊都有前一個塊的hash值故串出區塊鏈結構 , 防止數據竄改
- 智能合約
- 數據應用
- 透過智能合約的接口 , 故能調用數據加以應用
- 匯率 https://www.coingecko.com/
- https://api.coingecko.com/api/v3/coins/matic-network/?localization=false
- https://api.coingecko.com/api/v3/coins/tether/?localization=false
- https://www.blocktempo.com/what-is-l0-l1-l2-l3/
訂閱:
文章 (Atom)