打卡MatrixCamp活動,成為了MatrixOne社群的一員
阿新 • • 發佈:2022-04-06
初識
一週前,在一個數據庫技術交流群中,偶然看見了群友轉發的這個活動。當時點進去一看,竟然是分散式資料庫領域的寫函式的活動。由於自己之前在學6.824和6.830,對分散式、資料庫、Go語言都產生了興趣,所以看見這次的活動自己變得很興奮,立即就點進連結報名了,當天就領取到了屬於自己的函式。
參與其中
1.看文件
領取了自己的函式後就開始看文件並著手進行除錯開發了。首先根據開發文件中的指示,看完了示例abs()函式的實現過程。第二步開始看如何為社群貢獻程式碼的文件,按照文件中的工作流程來進行開發並在Github上提交修改。
2.安裝MatrixOne
3.寫程式碼
前提:熟悉Golang語言的基礎語法、go mod 包管理工具、make工具的使用即可。
完成的程式碼展示:
說幾個需要注意的點:
Acos函式的定義域是[-1,1],所以我們要注意判空。這裡需要注意我們的空值不應該為NaN,而是NULL
results := encoding.DecodeFloat64Slice(resultVector.Data) results = results[:len(origVecCol)] nulls.Set(resultVector.Nsp, origVec.Nsp) acosResult := acos.AcosUint8(origVecCol, results) if nulls.Any(acosResult.Nsp) { if !nulls.Any(origVec.Nsp) { resultVector.Nsp = acosResult.Nsp } else { resultVector.Nsp.Or(acosResult.Nsp) } } resultVector.Col= acosResult.Result return resultVector, err
4.測試
本地單元測試:需要自己寫測試樣例,注意考慮周全
真實環境中執行:
這裡需要我們把更改的程式碼重新執行下面兩條命令。
$ make config
$ make build
測試後發現結果是正確的:
5.merge提交,等待review
這裡需要贊一下社群的成員,反饋非常的及時!!!
最後,成為Contributor,完結撒花!感謝MatrixOne!!!