我的2020技术总结和学习回顾

老早以前就想着要写一篇2020的年度总结了,奈何虽是元旦佳节,期末,实训,实习面试加身,终未能得闲。 所幸一切都快划上了句号,总算能暂时喘口气了。有很多话想说,就慢一点点地讲吧。 技术部分如下,生活部份和其他八卦闲鱼就暂时不贴了(想看就联系我hhh)。

技术学习

回顾2020这一年,可能最大的收获就是在这个方面吧。

学习Linux

2020/1/17,我买了人生的第一台服务器,也就是我现在的个人博客:xgpax.top 下完单后,在阿里云官网的ssh终端的黑框框里敲下了第一行:ls -l,直到今天我仍然记得并怀念那个时候的兴奋感和新鲜感。当天瞎折腾wordpress到凌晨三点多,换了换主题,把发在CSDN平台的两三篇博客搬了过来。 也是因为买了服务器(毕竟买了得用不是),我开始学习一些Linux的基础操作,一些简单的命令。当时是在B站找了一个黑马的Linux教程,对着学了一遍,撸了一遍简单的操作命令(cd,ls,top,vi,tar,ps,su之类),了解了一下Linux的用户管理和权限控制(当然后来一直是无脑用的root,hhhhh) 买了服务器,自然也买了域名并且备案(吐槽一句,当时还被迫做了钉钉验证,挺麻烦的),迫不及待地就分享给了朋友们。后来某位聚聚朋友在问了我一些基本问题,也买了服务器和域名后,把我在他空间里挂了大半年(置顶的那种,落泪笑) 现在回头看,我非常感谢那个无所畏惧地踏出第一步的自己。

学小程序开发

学习小程序大概是在1月底二月初吧,当时从图书馆里掏了两本小程序的书,两本都是从项目出发进行编写的,第一本书里最终是实现一个叫Orange can的项目,是一个社交app,当时基础还比较差,并没能完全地啃下来,那个项目的数据是本地存储的一个json文件(说白了也就是没有后端) 在这本书里我接触到了flex布局,接触到了一些移动端的前端代码编写,了解了小程序的一些基本概念,同时这个书有个特点:它在很多地方会通过同时编写es5和es6代码的方式来教一些es6的写法。 也是因为这本书,潜移默化地导致我后来做项目,很多时候第一反应就是做移动端(泪目) 第二本书,里面有用到go语言去编写后端,同时作者夹带了一些私货(当时比较反感,现在则是觉得是正常的),很不幸我并不会go,这本书也没有教我go,当时觉得作者的行文风格不对我胃口,感觉对小白并不足够友好,也就没有深入去看。 学习小程序的过程是比较快乐的,因为是我第一次真的实现一些还不错的效果,就是最后也没有完全把它做完,等到回头再看第一本书的这个烂尾项目的时候,我也已经不再需要这本书籍了。

学Vue语法

真正开始学习Vue大概是2月份中旬吧,在之前有请教过学长(偶像!yyds!),学完基础的JavaScript,html,css后是该学jQuery还是Vue,学长当时的原话:想做点东西出来就去学Vue。 很不幸,问题是11月提的,当时的我打开Vue的官网文档,一脸懵逼地看着那些es6的代码,感到非常陌生,于是11月去看了阮一峰老师的es6教程,同时从图书馆带了本es2018从入门到精通(这本书很薄,也不够深入,但是对于当时的我来说很是合适,特别适合入门和速学) 文档还是有一些难以理解,毕竟是第一次阅读一份框架文档,但是跟着文档写了一遍示例代码后,这种体会要好了许多,不过之后我还是在网易云课堂以及B站找到了一些视频教程(都是讲基本的Vue语法),其中我很是推荐B站的那个4小时入门Vue,跟着把那几个小demo做下来之后,我才感觉Vue语法算是正式入门啦。 然后当时就有点飘,感觉自己大概明白了前端是怎么一回事(太年轻)。有朋友约着我准备国创项目,当时屁颠屁颠地跟着过去了,但是我不会后端,不会python,不会数据挖掘,两个队友当时跟我说不准备打了,虽然失落但是也没办法,后来在国创申请截止的最后一天,其中一个朋友告诉我他们和另外一位大佬组了队(也就是空间挂我的那个朋友),菜鸡落泪,也是因为这个打击,让我意识到了自己的问题,也不再那么浮躁。其实我后来回想起,还挺感谢有这样的一次打击。

学nodejs

nodejs的学习其实来的很突然,因为在用别人免费api写一些小demo的过程中,遇到了跨域问题,但是我又不会后端,就决定自己学一下基本的nodejs搭建服务器来做别人免费API的转发。大概就对着一个比较简单(而且过时)的视频教程过了一遍,学了一下fs,http等原生模块的用法,当时还看了一点express(现在全忘了)

学Vue全家桶

在Vue语法有了一定的熟练度后,就开始学Vue全家桶了,当时是在B站找的codewhy老师的免费教程,跳过了Vue语法基本部分,大概是从组件通信开始学习,然后是webpack和一些es6的深入讲解,Vue Cli的使用,Vue Router以及Vuex的基本使用。 这里大概啃了1个月左右,加上了老师的微信并且买了接口地址,然后跟着教程搭了一半左右的项目(没错,又烂尾了hhhhh) 也是在这个时候,有个朋友跟我说,打算写一个接口爬取课表数据,问我有没有兴趣写个前端。我花了大概8个小时的时间写了一个很简单的课表web应用,并利用DCloud的打包功能打包成了app,不过由于实在是不够精致,并没有什么人使用,自己也没有太过于理会,不过这次实践让我很是兴奋,当时还发了个说说hhhh

较为匆忙的计算机设计大赛

项目只做了一半就是因为计算机设计大赛即将开始了,当时和余家头计算机那边开源协会的小伙伴、信息学院的token后端聚聚一起做了一个疫情项目,借助elementUI完成了那个项目,就是一个疫情的主题网站。这个项目做了16个页面和一个起点页面,我很愚蠢的用了一个大轮播图去做16个页面的分发(服了) 也是在这个项目里,我和另一个小伙伴一起用到git进行了项目的协作,大概学到了怎么用git和GitHub去协作。 后端的聚聚也很是给力,基本需求都能很快的解决。 最后这个项目取得了中南赛区二等奖,挺惊喜的,是我第一个计算机领域省级奖。

学习Python和Flask

在计设结束后,迎来了计算机数值分析这一门课程的实验,这个实验涉及到了许多的数值计算算法,老师要求用matlab或者python去实现,然后我就去学习了python,买了那本绿色的蟒蛇书,一天不到就看完了,过于小白和基础让我不由得感叹:学了个寂寞,另外这本书真的对不起它的名声,真的不行! 度过了期中考试周后,课程一下变得恐怖起来,原本打算全学期开课的os被挤到后八周,我失去了所有的完整空天(周一到周日全部上课) 技术上的学习进度也慢了起来。 看了看廖雪峰老师的免费教程,大概学会了python的语法后借助实验进一步熟悉了python。之后又在B站找了非常基础的爬虫视频,大概是企业人员给某个学校上课的录屏,然后大概的学习了一下。后来去看了requests和bs4的文档,又跟着官方文档学习了Flask。 为了练手,我搭建了一个爬取课表的接口,并且把之前那个web课表应用的接口对接到了自己的这个接口上。 第一次前后端对接成功的时候,也是无比兴奋的,当时成功后很开心的喊了出来,我妈还问我怎么了(hhh)

学习编写浏览器拓展

其实浏览器拓展没有太多可讲的,浏览器拓展的编写也就是学着写manifest.json 然后自己就写了个浏览器拓展,支持在武汉理工选课系统进行课表的显示和抢课(抢课的具体实现是用了一位目前在tx的超级大佬在他大一的时候写的demo,略微做了时间上的修改)

学习React

一转眼就6月了,也进入了巨忙碌的考试月,也是在这个时候,我开始学习React。 关于React的入门,我首先就冲过去买了偶像在掘金写的书,结果发现自己完全看不懂,只好啃文档,嘿,这文档可比Vue麻烦多了…反正跟着做了一遍也还不是很会,被React灵活写法搞得一愣一愣的。 后来找到了一个腾讯next学院的视频,快速跟着做了以后,感觉好了很多,在看完视频后再读文档,效果也好了很多。

学习C++ QT和C++11

学习QT是因为数据结构与算法实验和通信原理,数据结构算法实验最后的作业是完成一个连连看小游戏,而我当时学过的GUI只有Java的swing,但是我当时比较排斥Java,于是决定学习QT 关于QT我看的是黑马的教程,完整看完了,了解到了QT平台的不同。很不幸的是那个时候我正好感冒了,吊了半个月的水,整个连连看,2000行代码,几乎都是单手写完的… 医生不知道我在干嘛,问了问我,我当时还很骄傲地说我在写游戏hhhhhh! 学习QT的过程里看了一点点的C++11写法,不过没有深入。后来在通信原理的课程里也用到了qt去做界面hhh。

继续学习React

学期结束后又继续跑过来学React,林林总总地看了很多文章和教程。但是一直没有去写一个大一点地项目。。。

bytecamp的失败

七月底的时候投了字节跳动的bytecamp,当时是想着尝试一下,结果由于太久没刷题,编程大题一道都没做出来(哭死,其实回头看真不应该) 再次被打击

开始学习python爬虫

当时朋友很热情的推荐了B站路飞学院的python教程,这个教程大概是50多小时吧,涵盖了selenium,requests,lxml乃至scripy(这个放弃了,没看下去)等爬虫相关的库或框架。 学习后写了挺多小博客的,对爬虫有了蛮多的了解。

学习Koa2

因为发现自己node基本忘了…然后就决定滚回去学node,大概看了一下koa2,后来做了个后台管理系统的后端(山海经)

云开发大赛(serverless)

在这里学了serverless的概念,同时做了一个面试工具小demo(一个看面经做题的小程序) 我后来把这个写进了简历里(但是没有人问过www)

用uniapp和lxml重构课表

学完爬虫后,大概看了看uniapp的文档,感觉没有什么学习门槛和难度,就花了一天左右的时间,重写了后端的api接口,并且用uniapp重构了第一版的课表,打包到了安卓端和web端。 这个课表,在开学后,大概有几十个用户在使用,甚至有时候走在学校路上,看到并不认识的同学点开手机,打开这个课表,让我很是开心,算是对我很大的一种肯定和振奋吧。

备战蓝桥杯(Java)

为了蓝桥杯,重学了Java的基本语法,刷了150多题吧,和好友一起拿了湖北组省一,结果国赛还要交钱,没打了。 10月中旬打完后就没刷题了,导致我后来实习算法挺烂的(埋下伏笔了) 唉,这块还挺后悔的。

学习electron

electron大概就是买了个课程,然后跟着做完了那个项目(这次没有烂尾!!!) 不过也就仅限于此了,毕竟感觉没有很多地方能应用上,打包出来的体积庞大是个比较尴尬的问题

学习React Native

大概也是看了看课程,并没有深入学习,拓宽了自己的知识面hhhh

学习框架底层,重学js,学习浏览器的一些机制

这块的话,我目前还在进行,也是为找实习做的准备之一,暂时就不深入展开了。

myqq的编写(学习eggjs,提高React熟练度)

编写myqq最直接的目的就是为了做一个较为完整的前后端独立demo,我完成了从设计到部署的全过程,并且上手学习了eggjs,期间遇到了很多很多很多的坑,一度觉得可以写个开发日记 在这个项目里对React全家桶的东西有了更深的了解,也更加熟练了,这个也是我后来面试里经常被问到的地方。

一些小建议

其实我给不了很多的学习启发,大概就以下三点吧

  1. 学某个库/框架之前一定要明白为什么要学,这个库/框架是为了解决什么问题。 只有明白了这一点,才是有意义的,就像很多人没有使用过原生js进行开发,上来就是Vue/React,对原生js也不够熟悉,甚至DOM的概念都不清楚(还挺多的…)这样的我觉得走不长远。
  2. 学习顺序可以遵照:文档->入门视频(非必须)->文档->博客 首先学一个技术栈最好的就是官方文档,但是由于有些文档实在是不做人…所以有些视频教程就能起到一定的作用,但是文档一定是要看的,在看视频之前,我个人是非常建议先看一遍文档,大致过一过,在视频结束后回过头再看文档,体会一定是会不一样的!然后在入门后,多看看博客来提升深度。
  3. 提高深度而非广度 与技术而言,深度重要过广度,广度一定是你有某一部分达到一定深度后才能体现出来的。坚持提高深度,在同时去扩展自己的视野。很多时候,什么都会等于什么都不会。