<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          聊聊源碼貢獻這件大事

          共 2119字,需瀏覽 5分鐘

           ·

          2021-05-28 10:58

          點擊上方藍色字體,選擇“標星公眾號”

          優(yōu)質(zhì)文章,第一時間送達

            作者 |  碼以致用

          來源 |  urlify.cn/6Bfauq

          一、我目前的社區(qū)貢獻

          以下列出的內(nèi)容都滿足如下條件:被社區(qū)merge;在業(yè)界足夠知名

          1、Presto

          (1)14007

          使kudu connector支持kerberos認證,且在續(xù)期有效期過了后能自動獲取新票據(jù)

          (2)14422

          刪除連接器時新增清理PlanOptimizerProvider,修復核心模塊的bug,為以后添加動態(tài)加載連接器功能打下了基礎

          2、Flink

          (1)12442、12789

          官方文檔的flink事件時間章節(jié)

          (2)12748

          官方文檔的數(shù)據(jù)類型章節(jié)

          (3)12794

          官方文檔的用戶自定義函數(shù)章節(jié)

          (4)14938

          Flink將數(shù)據(jù)寫進es時處理異常數(shù)據(jù)支持并發(fā),由自己發(fā)現(xiàn)bug,同事提交

          二、重要性

          1、對公司業(yè)務

          我們在大數(shù)據(jù)系統(tǒng)中使用的絕大部分基礎設施都是基于開源軟件的,很多開源軟件都具有版本更新快、文檔不充分的特點,如果能讀懂源碼,我們便能做到知其然更知其所以然,小到可以充分理解某配置參數(shù)的含義從而優(yōu)化系統(tǒng)性能,大到可以修改源碼添加、優(yōu)化功能以滿足公司業(yè)務場景的需求。所謂外行看熱鬧,內(nèi)行看門道,在軟件行業(yè)尤其是大數(shù)據(jù)領域,那些ppt、營銷包裝過的數(shù)字其實并沒有多大意義,反而是對開源社區(qū)的貢獻可以體現(xiàn)一個公司的技術價值,在立足于以技術贏得市場的行業(yè)里,做好開源或技術文檔輸出是非常重要的,有助于爭取到話語權。

          2、對自身技術發(fā)展

          我相信對每一個立志做技術的從業(yè)人員來說,都不想滿足于只做個sql boy或crud boy,想提升自己的技術架構水平,那怎么辦,按大牛們常說的把《深入理解計算機系統(tǒng)》、《java編程思想》這類有名的大部頭經(jīng)典讀一遍嗎?不盡然,至少對我來說不是。在我看來,編程技術首先是一門實踐型的技術,搞懂一個知識點對我的刺激遠比不上自己的代碼解決了一個個具體的業(yè)務場景,看著自己的代碼運行在眾多的機器向很多人提供高效安全的服務,我想這就是我作為一個技術人的浪漫,在其中我能感受到高層次的多巴胺,那是一種強烈而持久的快樂。而想得到這種快樂,最好的辦法就是向業(yè)界某些關鍵領域如流計算、OLAP里最流行的開源社區(qū)輸出自己的貢獻,當然即使發(fā)現(xiàn)社區(qū)已經(jīng)足夠完善難以進行貢獻,閱讀這些開源社區(qū)的代碼本身就像攀登高山一樣,不斷地磨礪自己的心智,提升自己的技術水平。

          三、方法

          1、把握技術架構和關鍵特性,熟悉擴展機制

          技術架構和關鍵特性是我們閱讀源碼時要遵循的基本思路,比如得知一個開源框架是Master/Worker架構,在看系統(tǒng)加載運行的源碼時要有目的地去看Master、Worker相關的代碼。

          官方文檔一般會講解有關擴展開發(fā)相關的內(nèi)容,這部分內(nèi)容要重點去看,比如Presto官方提供了SPI文檔,有一些介紹和示例,可以幫助我們快速掌握擴展方法

           2、切忌追求完全看懂,多用跳躍式思維

          當然這個跳躍式思維不是說看不懂了就跳過,而是看懂基本的意思即可,或者合理腦補出晦澀難懂的部分,然后跳到下一部分

          每個開發(fā)人員的思維習慣、技術優(yōu)勢都是不一樣的,這就導致同一種功能在不同人手上會有千差萬別的實現(xiàn)方式,如果我們一旦陷入這種差異而無法脫身,將會很大程度拖延進度,也可能丟了西瓜撿了芝麻走上彎路,更可能產(chǎn)生強烈的挫敗感以至知難而退。

          更可取的方式是領會作者的意圖即可,不用過分深究實現(xiàn)方式,領會代碼的編寫框架和意圖是核心,有以下方法:

          • 方法、接口、變量名都一般蘊含了意圖的概要信息

          • 注釋信息包含了大量的詳細解釋

          • 若一個功能有示例實現(xiàn),可以重點看這個示例,屏蔽了很多技術細節(jié),便于理解

          • 代碼一般是由少到多、由簡單到復雜,可以看看老版本的實現(xiàn)

          • 查這個功能相關的pull request,里面會有作者一些開發(fā)思路和意圖

           3、敢于動手,大膽驗證想法

          當我們有了一個想法時,不要停留在思想層面,可能這就是一個很好的靈感,大膽在源碼上進行修改、編譯后驗證自己的想法,若沒達到預期,這很正常,從運行日志里找問題原因,排錯后解決問題,或者開啟debug運行模式,看函數(shù)跳轉(zhuǎn)的邏輯和關鍵值的變化。一步步靠近想要的結(jié)果

           4、分解任務,循序漸進

          不要追求一蹴而就,可能最終要實現(xiàn)一個很復雜的功能,但可以先將這個復雜功能分解為核心功能、附加功能、優(yōu)化功能

          比如要實現(xiàn)presto kudu數(shù)據(jù)源的kerberos認證功能,核心功能是kerberos認證,附加功能是配置kerberos連接信息讓presto可以感知到,優(yōu)化功能是可在不重啟presto的情況下感知到kerberos連接信息的變更







          瀏覽 29
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  亚洲天堂久久 | 影音先锋91少妇 | 日韩精品一区二区在线观看 | 亚洲精品www久久久久久 | 成人三级片免费 |