看着筆記裏寫了一半的「2019年總結」,總以爲莫名喜感,而後我又想說時間過得真快了,又到了每一年寫總結覆盤的時候,2020年是我長這麼大以來經歷過最魔幻的一年,疫情、金融危機、世界格局「百年未有之大變」……巨大信息量的衝擊下人很難有獨立思考的空間和意識,還好本文只是對2020年技術方面的總結,否則不知道要寫到何時才寫完。php
首先看一下我主要使用的兩個代碼託管平臺上的代碼提交概覽,分別是Github和Gitee。前端
第一季度的代碼提交集中在Github上,在這以前我只是把Gitee做爲一個國內的備份,隨着美國的制裁不斷收緊,Github又幾回宣佈封殺某幾個國家以後,我就以爲國外的東西始終仍是不那麼靠譜,轉而把代碼提交到Gitee,並把GitHub做爲備份,並且後來在公司也開始使用Gitee的企業版,因此後半年在Gitee的提交特別多~vue
我看了一下,今年主要涉及的技術(語言)按代碼量排序:Python -> C# -> Flutter(Dart) -> 前端(JS) -> Kotlin -> Go -> Java -> PHPjava
下面挑幾個說說相關的應用和心得吧~python
Python排在第一位毫無懸念的,我一直的主力語言都是Python,今年用到的主要領域是Web後端、機器學習(深度學習)、數據分析處理、爬蟲、桌面程序等,都是工做生產上賺錢的東西,用Python又快又穩,好比Web開發,用上Django半天能夠完成靜態類型語言至少一天的工做,事半功倍,人生苦短,我用python這句話真不是說說而已~linux
Python的Web後端方面主要是用Django框架,在以前簡單使用的基礎上深刻了一些,讀了一部分的框架代碼(大呼牛逼),而後今年也用上了作RESTFul Api標配的DRF框架,一樣啃了一部分框架代碼(PS:drf不少功能不看代碼根本不知道咋用,文檔有待提升)android
由於在工做中作後端服務主要用Django的緣故,今年對這個框架的學習和研究比較多,還本身作了一個快速開發模板,功能包括:Docker部署,緩存,自動業務代碼生成器,接口限流,DjangoAdmin驗證碼,登陸次數嘗試,屏蔽了RestFramework默認的API主頁等,代碼也開放出來了~git
部分關於Django的折騰研究記錄我發了專欄,這裏整理一部分出來:github
篇幅關係只整理關於Django這一部分,看更多文章能夠在我公衆號或者知乎上搜一下……(偷懶)web
除了Django以外,我還試用了今年很火的異步開發框架 FastApi,一個要和Go語言比速度的框架,並且還把靜態類型(100%類型註解覆蓋)做爲賣點,emm用起來感受就像Flask同樣簡單方便,不過和Flask同樣,這個框架自己提供的功能很少,拿來開發的話須要搭配一大堆第三方庫使用,能夠用Flask的生態,前景應該蠻好的~ 不過仍是Django全家桶用着舒服hhh
今年在機器學習這一塊也作了一些小東西,年初繼續作個人NLP,包括情感分析、對話預測這類…沒啥特別好說的,值得一提的是我入坑了BERT,果真是挺強的,作了一箇中文文本分類項目(主要是新聞文章的分類),效果蠻好的,一樣是開源代碼自取
除了完善以前開坑的NLP以外,今年還入坑了推薦系統,搭配上爬蟲、元搜索引擎、上面提到的文本分類,作了一個相似今日頭條那樣的聚合閱讀 & 推薦的App,幫我拿了畢設全級第一和優秀畢業生,發現四年大學也不算白讀了~
(此處插播這個App的視頻)
後面在工做中又作了一些計算機視覺的東西,調研了人臉檢測識別這塊的幾個技術棧,由於咱們的服務要分兩個部分部署,一個部署在GPU服務器上,一個要部署在NVIDIA的那個嵌入式設備(Jetson),服務器性可以隨便用,主要看準確度,嵌入式設備只能用輕量的算法,不追求準確了,但求性能不要崩~
而後就MTCNN、FaceNet、ResNet還有OpenCV的幾個機器學習的檢測器都用上了,搭配着使用,還有同事用YOLO作另外的目標檢測部分,我就打打醬油~
剩下的數據分析、爬蟲、桌面(PyQt),大部分都跟工做有關,也比較容易沒啥值得記錄的,我當時沒寫博客,(或許接下來有時間再來水一水)
開始說C#篇啦,這是優雅的好語言,netcore平臺今年的發展也很迅猛,年末已經推出了正式版的 net5平臺打算一統天下了,不過好像今年一年的時間生態也不見有什麼大的進步,因此在生態沒有大發展以前我暫時不會把netcore這一套拿來當主力。不過會持續關注學習~
netcore這塊主要就都是Web開發的東西了,年初原本打算用ASPNetCore來作畢設的後端框架,後面由於時間關係仍是換了Django,不過我卻是認真作了一個練習項目放在Github,代碼在下面。
當時接觸ASPNetCore不久,不少東西都不熟悉,不過中間件、依賴注入這些跟Spring那套差很少(你問我爲啥跟Django不同?動態語言能夠不須要依賴注入,懂的都懂),後面我繼續學習和用了這方面的技術作了一些東西,主要是熟悉了MVC的那套,雖然如今MVC沒啥用了,不過架不住一我的開發快啊,ASPNetCore的MVC多好用也說不上,不過功能挺豐富的,總體性能也還能夠(雖然我仍是以爲Django的MVC順手)
而後跟着楊旭大佬學了一些ORM、RPC、WebAssembly這類的,最重要是還比較系統的複習了一下C#基礎,感受受益不淺,惋惜沒那麼多時間去刷完全部課程,但願接下來的2021年把楊旭大佬的課都賺下來~
後面又接觸了一下下Abp vNext框架,而且學了一些關於gRPC、微服務網關、認證中心、監控系統的東西,算是對整個netcore體系有所瞭解了,後面我也在生產環境用了一些netcore,好比公司的新版數據中臺和一個小程序的後端+PC端,感受還不錯啦,就是我還不是特別熟練,開發效率上不如Django……
同樣的,學習和使用過程當中我寫了一些文章,這裏也列一些:
由於工做平常各類爬蟲、數據分析、機器學習的緣故,C#我也拿來作爬蟲和數據處理了,效率還蠻高的,Python寫爬蟲雖然是最快最方便的,可是架不住部署麻煩啊,C#就不同了,寫完直接全平臺可部署,我用WinForm作個界面也行,Windows系統啥也不用安裝直接打開就能用,Linux或者Mac也有相應的UI框架,經過 .Net Standard標準,底層能夠共用一套代碼,很舒服。
不過dotnet項目有一個很麻煩的地方就是隻能有一個main入口,雖說起來是理所固然的事情,可是這對爬蟲來講根本不方便,常常要寫一個單獨執行的東西來驗證的時候,每每就得在 solution 裏面新建一個project來測試,依賴什麼的都要從新導入,比較麻煩…… 雖然也有其餘代替方法好比單元測試、LinqPad、dotnet script等,不過總歸不像Python、Java、kotlin、dart這類同樣方便~(話說go也是這樣)
PS:今年爬蟲這塊,selenium用得不少,C#+selenium搭配IE driver,上古老系統全都被安排得服服帖帖的~
.NetCore 將來可期~
時間來到0202年,若是評選開發人員最喜好的前端技術,那麼Flutter絕對榜上有名… 雖然咱們一直在吐槽坑多不穩定啥的,可是架不住你們對Google家技術的熱情,flutter如今的生態很不錯了,中文社區、教程、交流羣遍地都是,可能搞得單純學原生App開發(Android / iOS)的人愈來愈少了……
今年的Flutter應用主要放在了畢設那個聚合閱讀&搜索App的開發上了,綜合運用了不少我以前積累的東西,除此外就是作了個Flutter爬蟲框架放在github開源了(地址下面有),emmm還有把19年作的極簡詩詞例行更新了幾個小版本……
作那個爬蟲框架雖然最終的效果不是很完美,不過仍是收穫了很多,主要就是深刻了一下DartVM的EventLoop和Isolate,當時(20年初)Dart的Isolate仍是有很多缺陷的,致使這個爬蟲框架實際上無法實現真正的多線程爬蟲… 也不知道如今dart團隊改進了沒……
由於我之前是從Android原生開發接觸Flutter,因此不少Android有的東西我就會想flutter上找替代品,好比EventBus、ORM、OKHttp這類,如今是Flutter的ORM好像還沒找到比較成熟好用的,其餘的還OK,簡單點的能夠直接用原生的來調用。坑人的地方就是Flutter框架更新太快,常常會有Break Changes,不少第三方庫每每跟不上Flutter的更新速度,因此……謹慎升級吧(能用就湊合一下)。
Flutter方面的文章整理:
前端這塊雖然是常常寫的(代碼量還很多),但還不是很熟練,多是我沒有系統的學前端,常常被js坑到,還好有大師帶飛~
今年接觸了很多新的前端的東西,一開始想搞個簡單的後臺管理,發現了上古的LayUI,用起來甚至還挺簡單順手的,不過在知乎看到不少專業的前端對其有抨擊,基本都是說模塊化的問題,不過我以爲這個LayUI確實和它官網說的同樣,是對後端開發很友好的一個框架,不須要不少的前端知識,cv操做就完事了~
發現了一個相似Bootstrap的前端樣式框架叫SemanticUI的,語義化的class確實有點意思,看膩了Bootstrap的默認樣式,這個SemanticUI的界面也讓人眼前一亮,不過我還沒深刻使用,也就大概看了一下,用習慣了Bootstrap忽然換成這種語義化的class還有點不習慣的,不過我有感受這是個不錯的東西,接下來持續關注。能夠把一些Bootstrap的網站用這個SemanticUI重寫一下,工做量應該不是很大~
而後由於接了個項目要作小程序,時間比較緊只有三天,我就用了頗有名的uni-app肝了出來,期間遇到了很多坑,這個uniapp雖然廣告說支持七八個端多多方便啥的天花亂墜,可是文檔寫得卻不怎麼樣,不少東西文檔內並無寫明,要靠搜索他的論壇什麼的,挺麻煩的,並且不一樣端上也有不一樣的坑,還好我只作了微信小程序,若是要作其餘的不知道還會遇到什麼奇奇怪怪的問題,恐怖。
後面在網上逛了下發現有個叫Taro的小程序框架也還不錯,不過我還沒用上,有機會能夠看看。
年末在大師的安利下開始入坑React,真不錯,有Flutter的基礎學React簡直不要太容易,響應式的界面開發真不戳,如今就差一個好用點的樣式框架來搭配使用,接下來繼續關注趴~
哦對了,還有vue,雙向綁定很適合作管理後臺這種須要大量表單的東西,不過感受相關的東西太多了,我仍是喜歡React~
PS:前端的東西實在太多了……
Kotlin是19年開始接觸的,說是要取代Java,也不知道在Java被淘汰以前能不能實現這個目標。
Kotlin的語言設計真不戳,函數變成一等公民,我喜歡這種設計,比C#高多了~
今年用Kotlin+Springboot作了一個網站,ORM用了Ktorm,仍是有不習慣的地方,後來我寫了一篇總結的推文,裏面吐槽了一下,結果被ktorm的做者看到…… 後面加了微信接受大佬教育…
整理了兩篇文章:
除此外就是用Kotlin來寫Android,自從Android能夠kotlin寫以後就很舒服了,不用寫繁瑣的Java代碼也能夠開發Android真好~
關於語言技術棧的最後說一下這三個,Go語言以前接觸過,今年繼續學了一些,由於編譯成原生代碼以後部署很方便,因此有時拿來作一點小東西很方便,不過要拿來寫業務仍是不如Java、C#、Python這些…
Java這塊主要仍是寫寫Android,維護一下我以前上架的App,那時候Kotlin還沒學,只能Java…
關於Android開發我還想寫幾篇文章,可是年末狀態差有點懶,差很少兩個月沒發新文章了…… 不過關於Android開發的我已經基本寫好一篇了,等完善後就發出來。
PHP原本是好久沒用了,不過最近要魔改WordPress的一些插件主題,也就小用了一下下~
今年利用空閒時間刷了一些算法題,以前我都是作各類落地應用,並無把注意力放在算法上,今年有空就刷了一些,感受還蠻有趣的,累了的時候能夠放鬆。
同時今年參加了幾回培訓和比賽,雖然也收穫了幾個獎,不過就比不上在學校的時候了……
培訓仍是讓我接觸了不少之前不瞭解的東西,10月份參加了網絡安全的培訓(雖然我學得不是很好),不過簡直打開新世界的大門,加密解密、逆向、滲透,這些都是之前我很憧憬的東西,如今有半個月的系統學習確實受益不淺,不過感受此次學得還不是很充分,有大量的知識得繼續補充……
12月又參加了大數據相關的培訓,系統學了雲計算基礎、分佈式存儲、分佈式計算、高可用架構各方面的知識,這個對實際工做的幫助更大,不過仍是得在工做中繼續實踐才能夠造成本身的知識框架~
2020年過得太快了,過去這一年各方面離個人設想仍是有點差距,不是特別滿意,感受本身愈來愈懶,效率也不高,不少計劃作的事情都沒有動力去完成……
不過也有改善一些的,今年沒花那麼多時間在技術上了,開始讀書、看各類社評,中間也參加了幾個考試,收穫了一些不同的東西,固然遺憾也是挺多的,好比公衆號運營得不是很好,今年增加量不高(自媒體之夢破滅),各類各樣,最後總歸是本身的緣由,只能說:接下來繼續努力吧!
PS:最近好久沒有更新文章了,(這篇總結花了一個多星期的時間),我已經完成了好幾篇技術記錄的文章,這篇總結髮完以後就會陸續發佈~
程序設計實驗室專一於互聯網熱門新技術探索與團隊敏捷開發實踐,在公衆號「程序設計實驗室」後臺回覆 linux、flutter、c#、netcore、android、kotlin、java、python 等可獲取相關技術文章和資料,同時有任何問題均可以在公衆號後臺留言~