当前位置: 首页 > 后端技术 > Python

我的2020回顾—技术篇

时间:2023-03-26 16:06:00 Python

看着笔记里写了一半的“2019总结”,总觉得莫名的开心,然后想说时间过得真快,又到了每年写总结回顾的时候了在那个时候,2020年是我从小到大经历过的最神奇的一年。疫情、金融危机、“世界格局百年未有之大变局”……在海量信息的冲击下,人们很难有独立思考的空间。幸好这篇文章只是对2020年技术方面的总结,不然不知道什么时候能完结。首先来看一下我主要使用的两个代码托管平台Github和Gitee的代码提交概览。第一季度的代码提交集中在Github上。在此之前,我只是将Gitee作为国内备份。随着美国制裁的不断收紧,以及Github多次宣布封锁某些国家后,感觉国外的东西还是不太靠谱,所以把代码提交到Gitee,用GitHub做备份,后来开始用公司的企业版Gitee,所以下半年在Gitee上的投稿比较多~我看了一下,今年主要涉及的技术(语言)按代码量排序:Python->C#->Flutter(Dart)->前端(JS)->Kotlin->Go->Java->PHP下面挑几个相关的应用和我的心得~Python毫无悬念的排在第一位。我的主要语言一直是Python。我今年用的主要领域是Web后端,机器学习(深度学习),数据分析处理,爬虫,桌面程序等等,都是工作和生产赚钱的东西。使用Python既快速又稳定。比如web开发,使用Django半天可以完成静态类型语言至少一天的工作量。就这些啦~PythonWebPython的web后端主要使用了Django框架。之前在简单使用的基础上又深入了一遍,看了一部分框架代码(喊出来),然后今年用它来做RESTFulApi标准,配套的DRF框架也啃了一部分框架代码(PS:drf的很多功能不看代码不知道怎么用,文档有待完善)。因为工作中主要是用Django做后端服务,所以今年对这个框架的学习和研究相比,自己也做了一个快速开发模板。功能包括:Docker部署、缓存、业务代码自动生成器、接口限流、DjangoAdmin验证码、登录尝试、屏蔽RestFramework默认API主页等,代码也是开放的~项目主页:https:///deali-axy.github.io/D...代码:https://github.com/Deali-Axy/...Gitee代码主页:https://gitee.com/deali/Djang...部分关于Django的折腾研究记录我发了一个专栏,这里是其中的一部分:Django开发精选专栏(知识):https://www.zhihu.com/column/..Django-Filter使用:https://zhuanlan.zhihu.com/p/...drf-yasg接口文件自定义方法的几个细节的经验总结:https://zhuanlan.zhihu.com/p/...给Django的Admin添加自定义Action,去掉需要选择的限制:https://zhuanlan.zhihu.com/p/...Django中间件实现Admin后台IP白名单:https://zhuanlan.zhihu。com/p/...Django快速开发实践drf框架和xadmin配置指南:https://zhuanlan.zhihu.com/p/...一小时完成后台开发DjangoRestFramework开发实践:https://zhuanlan.zhihu.com/p/...“强行”使用Django中的MVVM设计模式:https://zhuanlan.zhihu.com/p/...Django应用容器化部署实践:https://zhuanlan.zhihu。com/p/...Django的信号机制:https://zhuanlan.zhihu.com/p/...在DjangoAdmin中添加验证码和多次登录尝试限制:https://zhuanlan.zhihu.com/p/...说说Django应用的部署和性能:https://zhuanlan.zhihu.com/p/...配置Django-TinyMCE组件上传图片:https://zhuanlan。zhihu.com/p/...关系篇幅只是为了梳理一下关于Django的部分。想看更多的文章,可以在我搜索公众号或者知乎……(懒)除了Django,今年也尝试了很多文章。流行的异步开发框架FastApi是一个和Go语言比拼速度的框架,也是以静态类型(100%类型注解覆盖率)为卖点的框架。emm感觉和Flask使用起来一样简单方便,但是和Flask一样,这个框架本身提供的功能并不多。如果你用它来开发,你需要用到很多第三方库。可以使用Flask生态。前景应该还是不错的~不过Django还是很舒服的,全家都用hhh机器(深度)学习。我在研究这方面的时候也做了一些小事情。继续做年初的NLP,包括情感分析,对话预测等,没什么特别的。不说了,值得一提的是我入了BERT,果然还是挺强的。做了一个中文文本分类项目(主要是新闻文章的分类),效果还不错。机器码:https://github.com/Deali-Axy/...除了完善了之前开的NLP,今年还进了推荐系统,有爬虫,元搜索引擎,还有上面说的文本分类,我做了一个像今日头条这样的聚合阅读推荐app,帮助我拿到了全班第一名和优秀毕业生,发现大学四年不是浪费时间~(这里是这个app的视频)后来在工作中做了一些计算机视觉的东西,调研了几个人脸检测和识别的技术栈,因为我们的服务需要分两部分部署,一个部署在GPU服务器上,一个部署在GPU上服务器。NVIDIA的嵌入式设备(Jetson),服务器随便用,主要看精度,嵌入式设备只能用轻量级算法,不追求精度,但又不想性能崩~然后MTCNN,FaceNet,ResNet还有一起用的OpenCV的几个machinelearningdetector,同事用YOLO做其他目标检测部分,就打酱油了~剩下的数据分析,爬虫,桌面(PyQt),大部分和工作相关,相对容易没有值得记录的东西。当时没写博客,(可能以后有空来水)C就开始讲C#了。这是一门优雅的好语言,netcore平台今年的发展也非常迅猛。年底推出net5平台正式版,计划一统天下。不过今年生态好像没有什么大的进展,所以在生态没有大发展之前我是不会用netcore的。这套就当做主力了,不过我会继续关注学习的~netcore主要是做web开发的。年初的时候打算用ASPNetCore作为后端框架来完成这个项目。后来因为时间关系改用Django,不过还是认真做了一个实践项目放在了Github上,代码如下。代码:https://github.com/Deali-Axy/...那个时候对不久前的ASPNetCore还不熟悉,不过中间件和依赖注入和Spring差不多(你问我为什么和Django不一样)?动态语言不需要依赖注入,我知道的都懂了),以后会继续研究用这个技术做一些东西,主要是熟悉了MVC的套路,虽然现在MVC没用了,但是我受不了一个人开发的很快。不能说ASPNetCore的MVC有多简单,但是功能还是挺丰富的,整体性能也不错(虽然我还是觉得Django的MVC很简单)。然后又跟杨旭老师学习了一些ORM,RPC,WebAssembly这类型,最重要的是比较系统的复习了C#的基础知识。我觉得我受益匪浅。不幸的是,我没有那么多时间完成所有课程。希望在接下来的2021年,能把杨旭老师的所有课程都学完~后来接触了AbpvNext框架,学习了gRPC、微服务网关、认证中心、监控系统的一些东西。我对整个netcore系统有一个了解。后来在生产环境中也使用了一些netcore。比如公司新版的数据中心和一个小程序的后端+PC端,感觉还不错,但是我不是特别精通,开发效率还不如Django。。。一样的,我在学习和使用的过程中写了一些文章,这里有一些:(本文由首页置顶推荐于“.net开发者之家”-博客园)一篇6000字的长文,耗时一周整理!深入思考技术本质,跨平台开发框架AspNetCore的简单实践:https://zhuanlan.zhihu.com/p/...Asp.NetCore学习笔记:入门:https:///zhuanlan.zhihu.com/p/...Asp.NetCore学习笔记:(二)视图、模型、持久化、文件、错误处理、日志:https://zhuanlan.zhihu.com/p/...Asp.NetCore学习笔记:(三)使用SignalR实时通讯框架开发聊天室:https://zhuanlan.zhihu.com/p/...Asp.NetCore学习笔记:(四)Getting从BlazorWebAssembly开始:https://zhuanlan.zhihu。com/p/...Asp.NetCore学习笔记:(五)构建与部署:https://zhuanlan.zhihu.com/p/...因为日常工作中各种爬虫、数据分析、机器学习,我也是用C#做爬虫和数据处理,效率还是挺高的。虽然用Python写爬虫是最快最方便的,但是经不起部署麻烦。C#是不同的。写好后可以部署在所有平台上。我可以用WinForm做界面。Windows系统无需安装任何东西即可使用。Linux或Mac也有相应的UI框架,通过.NetStandard标准,底层可以共享一套代码,很舒服但是dotnet项目中一个很麻烦的地方就是只能有一个main入口。虽然是理所当然的事情,但是对于爬虫来说并不方便。你必须在解决方案中创建一个新项目来测试,你必须重新导入你所依赖的一切,这很麻烦......虽然还有其他替代方案,例如单元测试,LinqPad,dotnetscript等,但它们不像Python、Java、kotlin和dart。一样方便~(go也一样)PS:今年爬虫用selenium的比较多。C#+selenium搭配IE驱动,千古系统统统安排得听话。NetCore的未来可期~Flutter时代到了2020年,如果选择开发者最喜欢的前端技术,那Flutter肯定榜上有名……虽然我们一直在抱怨它有多不稳定,但我们也hold不住支持大家对谷歌技术的热情。Flutter现在的生态很好,中文社区、教程、交流群比比皆是,这可能让单纯学习原生App开发(Android/iOS)的人越来越少了。。。今年的Flutter应用主要放在必社的聚合阅读&searchApp开发上了,综合使用了很多之前积累的东西。另外自己做了一个Flutter爬虫框架放在github上开源了(地址在下面),emmm也定期更新我19年做的极简诗的几个小版本。。。Flutter爬虫框架:https:///github.com/Deali-Axy/...虽然那个爬虫框架最后的效果不是很完美,但是我还是收获了很多,主要是深入了DartVMEventLoop和Isolate,当时(20年初)Dart的Isolate还是有很多缺陷,导致这个爬虫框架无法实现真正??的多线程爬虫。。。不知道dart团队现在改进了没有。。。因为我以前接触Flutter是从Android原生开发,所以很多Android的东西我都会在Flutter上寻找替代方案,比如EventBus,ORM,OKHttp等。现在看来Flutter的ORM还没有找到更成熟好用的。其他的还是可以的。OK,简单的可以直接用native调用。棘手的是Flutter框架更新太快,经常出现BreakChanges。很多第三方库往往跟不上Flutter的更新速度,所以……慎重升级(能用就凑合)。Flutter上的文章整理:把爬虫放到手机上跑起来!Flutter爬虫框架初探~:https://zhuanlan.zhihu.com/p/...Flutter跨平台App开发设置Android和iOS启动页:https://zhuanlan.zhihu.com/p/...极简诗开发背后:Flutter移动应用快速构建实践——状态管理、国际化、数据持久化、性能优化(一):https://zhuanlan.zhihu.com/p/...Flutter移动应用快速构建实践——状态管理、国际化、数据持久化、性能优化(二):https://zhuanlan.zhihu.com/p/...虽然前端前端经常写(代码量是还是挺多的),但是我不是很精通,可能是我没有系统的前端学习,经常被js坑。还好有高手带我飞~这一年接触了很多前端的新东西。发现了古老的LayUI,甚至还蛮好用的,但是在知乎上看到很多专业的前端批评,基本都是在说模块化,不过我觉得这个LayUI确实和官网说的一样,它是一个非常友好的后端开发框架。不需要太多的前端知识,cv操作就结束了。找了一个类似Bootstrap的前端风格框架,叫SemanticUI。语义类真有意思,看腻了。Bootstrap默认的样式,这个SemanticUI界面也很吸引眼球,不过我没有深入使用过,就随便看看。用惯了Bootstrap,突然改成这种语义类。我不习惯,但我有一种感觉,这是好事,我会继续关注它。可以用这个SemanticUI改写一些Bootstrap网站,工作量不要太大~后来因为接了个项目做小程序,时间比较紧,只有三天,所以用了大名鼎鼎的uni-appliver出来的时候遇到了很多坑。这个uniapp虽然标榜支持七八个终端,方便了很多,但是文档写得不是很好。文档中没有说明很多事情。你得搜他的论坛什么的,挺麻烦的,而且不同的终端有不同的陷阱。还好我只做微信小程序。如果我想做其他的事情,我不知道会遇到什么奇怪的问题,这很可怕。后来上网浏览了一下,发现有一个叫Taro的小程序框架,还不错,不过我还没用过,有机会可以看看。年底在高手的安利下开始入坑React。真的很棒。有了Flutter的基础知识来学习React并不太容易。继续关注~哦,对了,还有vue,双向绑定很适合管理后台需要很多表格的东西,不过感觉相关的东西太多了,还是喜欢React~PS:前端的东西太多了Already...KotlinKotlin是2019年接触的,说是要取代Java,不知道能不能在Java被淘汰之前实现这个目标。Kotlin的语言设计真的很神奇。函数成为一等公民。喜欢这个设计,比C#高很多~今年用Kotlin+Springboot做了一个网站,ORM用的是Ktorm。写了个总结推文,吐槽一下,结果被ktorm的作者看到了。。。加了微信,接受大佬的教育。。。编译了两篇文章:UsingKotlinwithSpringboottodevelopaRESTFul接口:https://zhuanlan.zhihu.com/p/...使用Kotlin配合Springboot开发RESTFul接口(2)自定义配置,跨域,分页:https://zhuanlan.zhihu.com/p/。..除了用Kotlin就是用来写Android的。Android既然可以用kotlin来写,那就很舒服了。不用写繁琐的Java代码就能开发Android真是太好了~Go、Java、PHP是语言技术栈的最后三个字。不过这一年还是继续学了一些东西,因为编译成原生代码后部署起来很方便,所以有时候用它做小东西还是很方便的,但是不如Java,C#,Python等等写业务...Java主要是写写Android和维护我之前上架的App。那时候还没学Kotlin,只能写Java。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。发了快两个月的新文章了…………不过Android开发的文章基本写完了,写完了再发。PHP好久没用了,不过最近想修改WordPress的一些插件主题,所以就用了一阵子~其他今年利用空闲时间刷了一些算法题。以前做各种落地应用,并没有关注算法,今年有空的时候看了一些。感觉挺有意思的,累了也能放松一下。同时,今年我参加了几次训练和比赛。虽然得过几个奖,但总比不上在学校的时候了……培训还是让我接触到了很多以前不知道的东西。培训(虽然学得不是很好),但就是打开了新世界的大门,加解密,逆向工程,渗透,这些都是我以前很期待的,现在受益匪浅半个月的系统学习,但是感觉这次自己学的还不够,还有很多知识要继续补充。。。12月份参加了大数据相关的培训,系统的学习了云计算基础、分布式存储、分布式计算、高可用架构。这个对实际工作还是比较有帮助的,但是还是要在工作中不断的去实践,形成自己的知识框架~最后写到2020年过的太快了,过去一年的方方面面离我的想象还很远.有差距,不是特别满意,感觉自己变懒了,效率不高,很多计划的事情都没有动力去完成……但是有一些改进。今年我没有在技术上花那么多时间。开始看书,看了各种社会评论,中间考了几次,收获了一些不一样的东西。当然,也有很多遗憾,比如公众号的运营不是很好,今年增速不高(自媒体梦破灭),种种,但是在最后是我自己的原因,所以我只能说:继续努力!PS:最近好久没更新文章了,(这篇总结用了一个多星期),完成了好几篇技术记录,这篇总结发表后会陆续放出~欢迎关注通信编程实验室专注于互联网流行新技术的探索和团队敏捷开发的实践。在公众号“编程实验室”后台回复linux、flutter、c#、netcore、android、kotlin、java、python等获取相关技术文章和资料,同时有任何问题,可以在公众号的后台留言哦~