5

我的2020回顾——技术篇

 3 years ago
source link: https://www.cnblogs.com/deali/p/14329055.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

我的2020回顾——技术篇

看着笔记里写了一半的「2019年总结」,总觉得莫名喜感,然后我又想说时间过得真快了,又到了每年写总结复盘的时候,2020年是我长这么大以来经历过最魔幻的一年,疫情、金融危机、世界格局“百年未有之大变”……巨大信息量的冲击下人很难有独立思考的空间和意识,还好本文只是对2020年技术方面的总结,不然不知道要写到什么时候才写完。

首先看一下我主要使用的两个代码托管平台上的代码提交概览,分别是Github和Gitee。

GitHub

Gitee

第一季度的代码提交集中在Github上,在这之前我只是把Gitee作为一个国内的备份,随着美国的制裁不断收紧,Github又几次宣布封杀某几个国家之后,我就觉得国外的东西始终还是不那么靠谱,转而把代码提交到Gitee,并把GitHub作为备份,而且后来在公司也开始使用Gitee的企业版,所以后半年在Gitee的提交特别多~

我看了一下,今年主要涉及的技术(语言)按代码量排序:Python -> C# -> Flutter(Dart) -> 前端(JS) -> Kotlin -> Go -> Java -> PHP

下面挑几个说说相关的应用和心得吧~

Python

1240

Python排在第一位毫无悬念的,我一直的主力语言都是Python,今年用到的主要领域是Web后端、机器学习(深度学习)、数据分析处理、爬虫、桌面程序等,都是工作生产上赚钱的东西,用Python又快又稳,比如Web开发,用上Django半天可以完成静态类型语言至少一天的工作,事半功倍,人生苦短,我用python这句话真不是说说而已~

Python Web

1240

Python的Web后端方面主要是用Django框架,在之前简单使用的基础上深入了一些,读了一部分的框架代码(大呼牛逼),然后今年也用上了做RESTFul Api标配的DRF框架,同样啃了一部分框架代码(PS:drf很多功能不看代码根本不知道咋用,文档有待提高)

1240

因为在工作中做后端服务主要用Django的缘故,今年对这个框架的学习和研究比较多,还自己做了一个快速开发模板,功能包括:Docker部署,缓存,自动业务代码生成器,接口限流,DjangoAdmin验证码,登录次数尝试,屏蔽了RestFramework默认的API主页等,代码也开放出来了~

部分关于Django的折腾研究记录我发了专栏,这里整理一部分出来:

篇幅关系只整理关于Django这一部分,看更多文章可以在我公众号或者知乎上搜一下……(偷懒)

1240

除了Django之外,我还试用了今年很火的异步开发框架 FastApi,一个要和Go语言比速度的框架,而且还把静态类型(100%类型注解覆盖)作为卖点,emm用起来感觉就像Flask一样简单方便,不过和Flask一样,这个框架本身提供的功能不多,拿来开发的话需要搭配一大堆第三方库使用,可以用Flask的生态,前景应该蛮好的~ 不过还是Django全家桶用着舒服hhh

机器(深度)学习

1240

今年在机器学习这一块也做了一些小东西,年初继续做我的NLP,包括情感分析、对话预测这类…没啥特别好说的,值得一提的是我入坑了BERT,果然是挺强的,做了一个中文文本分类项目(主要是新闻文章的分类),效果蛮好的,同样是开源代码自取

1240

除了完善之前开坑的NLP之外,今年还入坑了推荐系统,搭配上爬虫、元搜索引擎、上面提到的文本分类,做了一个类似今日头条那样的聚合阅读 & 推荐的App,帮我拿了毕设全级第一和优秀毕业生,发现四年大学也不算白读了~

(此处插播这个App的视频)

后面在工作中又做了一些计算机视觉的东西,调研了人脸检测识别这块的几个技术栈,因为我们的服务要分两个部分部署,一个部署在GPU服务器上,一个要部署在NVIDIA的那个嵌入式设备(Jetson),服务器性能够随便用,主要看准确度,嵌入式设备只能用轻量的算法,不追求准确了,但求性能不要崩~

1240

然后就MTCNN、FaceNet、ResNet还有OpenCV的几个机器学习的检测器都用上了,搭配着使用,还有同事用YOLO做另外的目标检测部分,我就打打酱油~

剩下的数据分析、爬虫、桌面(PyQt),大部分都跟工作有关,也比较容易没啥值得记录的,我当时没写博客,(或许接下来有时间再来水一水)

1240

开始说C#篇啦,这是优雅的好语言,netcore平台今年的发展也很迅猛,年底已经推出了正式版的 net5平台打算一统天下了,不过好像今年一年的时间生态也不见有什么大的进步,所以在生态没有大发展之前我暂时不会把netcore这一套拿来当主力。不过会持续关注学习~

netcore这块主要就都是Web开发的东西了,年初本来打算用ASPNetCore来做毕设的后端框架,后面因为时间关系还是换了Django,不过我倒是认真做了一个练习项目放在Github,代码在下面。

1240

当时接触ASPNetCore不久,很多东西都不熟悉,不过中间件、依赖注入这些跟Spring那套差不多(你问我为啥跟Django不一样?动态语言可以不需要依赖注入,懂的都懂),后面我继续学习和用了这方面的技术做了一些东西,主要是熟悉了MVC的那套,虽然现在MVC没啥用了,不过架不住一个人开发快啊,ASPNetCore的MVC多好用也说不上,不过功能挺丰富的,整体性能也还可以(虽然我还是觉得Django的MVC顺手)

然后跟着杨旭大佬学了一些ORM、RPC、WebAssembly这类的,最重要是还比较系统的复习了一下C#基础,感觉受益匪浅,可惜没那么多时间去刷完所有课程,希望接下来的2021年把杨旭大佬的课都赚下来~

1240

后面又接触了一下下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 未来可期~

Flutter

时间来到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

Kotlin是19年开始接触的,说是要取代Java,也不知道在Java被淘汰之前能不能实现这个目标。

Kotlin的语言设计真不戳,函数变成一等公民,我喜欢这种设计,比C#高多了~

今年用Kotlin+Springboot做了一个网站,ORM用了Ktorm,还是有不习惯的地方,后来我写了一篇总结的推文,里面吐槽了一下,结果被ktorm的作者看到…… 后面加了微信接受大佬教育…

整理了两篇文章:

除此外就是用Kotlin来写Android,自从Android可以kotlin写之后就很舒服了,不用写繁琐的Java代码也可以开发Android真好~

Go、Java、PHP

关于语言技术栈的最后说一下这三个,Go语言之前接触过,今年继续学了一些,因为编译成原生代码之后部署很方便,所以有时拿来做一点小东西很方便,不过要拿来写业务还是不如Java、C#、Python这些…

Java这块主要还是写写Android,维护一下我之前上架的App,那时候Kotlin还没学,只能Java…

关于Android开发我还想写几篇文章,但是年底状态差有点懒,差不多两个月没发新文章了…… 不过关于Android开发的我已经基本写好一篇了,等完善后就发出来。

PHP本来是很久没用了,不过最近要魔改WordPress的一些插件主题,也就小用了一下下~

今年利用空闲时间刷了一些算法题,之前我都是做各种落地应用,并没有把注意力放在算法上,今年有空就刷了一些,感觉还蛮有趣的,累了的时候可以放松。

同时今年参加了几次培训和比赛,虽然也收获了几个奖,不过就比不上在学校的时候了……

培训还是让我接触了很多以前不了解的东西,10月份参加了网络安全的培训(虽然我学得不是很好),不过简直打开新世界的大门,加密解密、逆向、渗透,这些都是以前我很憧憬的东西,现在有半个月的系统学习确实受益匪浅,不过感觉这次学得还不是很充分,有大量的知识得继续补充……

12月又参加了大数据相关的培训,系统学了云计算基础、分布式存储、分布式计算、高可用架构各方面的知识,这个对实际工作的帮助更大,不过还是得在工作中继续实践才可以形成自己的知识框架~

2020技术词云

2020年过得太快了,过去这一年各方面离我的设想还是有点差距,不是特别满意,感觉自己越来越懒,效率也不高,很多计划做的事情都没有动力去完成……

不过也有改善一些的,今年没花那么多时间在技术上了,开始读书、看各种社评,中间也参加了几个考试,收获了一些不一样的东西,当然遗憾也是挺多的,比如公众号运营得不是很好,今年增长量不高(自媒体之梦破灭),各种各样,最后总归是自己的原因,只能说:接下来继续努力吧!

PS:最近很久没有更新文章了,(这篇总结花了一个多星期的时间),我已经完成了好几篇技术记录的文章,这篇总结发完之后就会陆续发布~

程序设计实验室专注于互联网热门新技术探索与团队敏捷开发实践,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~

本文作者:画星星高手

本文链接:https://www.cnblogs.com/deali/p/14329055.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

我整理了一系列的技术文章和资料,在公众号「程序设计实验室」后台回复 linux、flutter、c#、netcore、android、kotlin、java、python 等可获取相关技术文章和资料,同时有任何问题都可以在公众号后台留言~


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK