现在是2022年4月1日,整个大学生活即将过半,是时候做个总结了。
从2020年9月算起,到现在已经19个月了

大一上学期

整个大一上学期更多的是在练编程基础,开的第一门专业课是C语言,因为有一些C语言的基础(大概到指针之前),所以在上课还是比较轻松的,课下看看教材也就差不多,很幸运,我们学校选择的C语言教材是《C语言程序设计 现代方法》而不是谭浩强先生的书,感觉这本书和《C Primer Plus》有的一拼,只是学到结构体指针和数组指针的时候懵逼了一阵子,后来去B站找了一些学习视频,学的也差不多了

这个学期晚自习的大部分时间都在PTA上做一些基础题,做的大多都是一些用代码模拟一些简单的问题,刚开始是使用的纯C,后来在几位老师和学长的影响下就使用C++STL做题,在此期间想过学C++ 但看了下面向对象的一点点知识,感觉特别抽象 可能是代码量还不够,然后就放弃了,也就在这个时候使得自己的编程能力得到了锻炼,作为大一新生的我很荣幸的参加了GPLT天梯赛凑合的做了113分,又去参加了PAT乙级考试,最终得分90分。

寒假

寒假在家简单的学了下数据结构,因为我报了蓝桥杯,看了下蓝桥杯的题目,有不少都是和数据结构相关的,所以就开始学数据结构了,刚开始是自己买了一本《大话数据结构》跟着这本书学,后来大概学到树那一块,实在是看不下去了,就去找相关的视频,听一个老师经常提起浙江大学的陈越(因为GPLT天梯赛的题大部分都是她出的),就找的她的数据结构视频看的,但这个视频是在中国大学MOOC上的,中国大学MOOC上的课程都有个特点,就是时间特别短,看了几集是实在是看不下去了,又跑去B站找到了青岛大学王卓老师的数据结构视频,感觉真的很不错,也就在这个时候感觉自己并不适合跟着各种文档和文字教程学习,而是适合跟着视频学,也就是从那个时候开始就用markdown做笔记(说来也惭愧,我在此之前从来没有做过笔记,大概是因为字丑吧),学完图论之后,多多少少心里边有点浮躁了,就感觉数据结构太无聊了,没有再往继续下学了

我的学习效率并不高,每天大概最多学个四五个小时,一般都一两个小时,这个时候就开始突发奇想去阿里云买个服务器玩玩,正好是有学生身份,又开始瞎折腾服务器...,然后剩下的时间抱着手机玩...

数据结构学烦之后,又想找点其他事干,误打误撞学了下HTML,同样在B站,看的是黑马的前端视频(pink老师),不过看的也不多,只看了简单的标签和简单的CSS属性

大一下学期

大一下学期开学之后,又一次的参加了GPLT,因为有了一些数据结构的基础,这次比赛得了147分,我感觉自己的提升并不大,因为这次比赛之前并没有刷多少题。这次的蓝桥杯比赛我出乎意料的水了个省一等奖,这让我很吃惊,都说蓝桥杯是圈钱杯,这次我也体会到了。也就在这个时候,感觉到自己并不适合学算法,所以就没有准备蓝桥杯国赛,以至于到最后的国赛只给了一个优秀奖(相当于没奖 只要参赛的不是0分都有),不喜欢算法很大的原因就是感觉到算法太枯燥太无聊太费脑子了,有的算法题还和数学有很大的关系,做过几次牛客上的比赛,爆过0分,这让数学不好的我也没有什么办法,其实我参加这些比赛的目的也很单纯,没想过获奖,只想去锻炼下编程能力就好。

我到现在很后悔没有好好利用大一下学期的时间,在大一下学期的不少空闲时间都被我浪费掉了,这个学期也学过一段时间的CSS,大概学完定位那块也就放弃了,又学了几天的Java,学到面向对象那块感觉不到有啥用,然后放弃了,玩了一段时间后,感觉光这么混也不行,又瞄准了Python

我在高考完的暑假里学了几天的Python,再加上有之前的编程基础,Python上手也比较快,我就通过Python了解了什么是面向对象,学了这些又听说Python爬虫挺火的,就又去看爬虫相关的视频,例如Request库和Beautiful Soup库,但里边的GET请求和POST请求看得我一头雾水,完全不知道是什么东西,后来就由于马上期末考试了 落下的其他课程太多,就在最后一个月恶补其他课程,Python的后续学习就那么耽搁了,但我对Python各种奇技淫巧多多少少有点反感,不想C语言那样,很多东西只有一种用法

暑假

暑假也没闲着,学了下Java,跟的是尚硅谷的视频,我做梦也想不到我会入Java的坑,在学C语言写Hello world的时候

#include <stdio.h>

int main()
{
   printf("Hello, World!");
   return 0;
}

public class Main {
    public static void main(String []args) {
       System.out.println("Hello world");
    }
}

我也搜过其他语言的写法,因为我英语一直处与什么都不会的状态,在我当时看来,C语言写Hello world里边有6个不认识的词,分别是include/stdio/int/main/printf/return
而Java的写法中有10个不认识的词,分别是public/class/Main/static/void/string/args/system/out/println
Python中只有一个不认识的词

由此我对Java打心底产生了厌恶,当时在想,这代码太长了

而我暑假学Java的第一个原因就是大二上学期要开Java课,就喜欢做一个抢跑者。第二个原因是看到过全网都在吹Java和前端,然后就提前学了。开着两倍速陆陆续续每天都看个两三个小时,一个月凑合着看了看大部分的内容,要说懵逼的地方也有,就是当时看着泛型、lambda、多线程、Java8的针对于数组集合的Stream、网络编程、注解 挺懵的,但学了Java后多多少少让我感觉还挺舒服的,原来比较系统的学一个编程语言是这么奇妙的感觉。这时候距离开学还有一周,想再学点其他东西,然后就在B站学了一周的MySQL,只简单的学了一下增删改查的SQL语句

大二上学期

开学后就开始学JDBC了,学了大概一两个星期学的差不多之后,然后又开始学Java WebJava Web看的是尚硅谷的旧版视频,Java Web学的时间比较长,大概学了一个半月,因为Java刚学了一个月,基础并不是那么牢靠,这个过程还是比较痛苦的,对于我来说就相当于学Java Web练习了Java基本语法,收获还是有的,也就在这个时候让我对Web端的开发有了新的看法:原来那些能够联网的应用大多都是通过GET或者POST请求而向服务器获取相关数据的。

我在之前其实一直想学Android开发,而对Web开发特别排斥,我在接触安卓手机之后,一直在瞎搞自己的手机,搞过RootXposed框架、刷机等,而我又经常逛酷安,酷安里边有一大堆个人开发者开发的应用,我一直对他们那些应用非常羡慕,就一直在想什么时候也能搞出自己的应用。我也对电脑端带有图形界面的应用非常羡慕,因为在写C语言的时候一直在黑乎乎的控制台运行,凭当时学过的C语言做出来的东西大多都只能自己在控制台自娱自乐,我在初中也瞎搞过易语言,所以有点看不上只能在控制台运行的东西。

我第一次接触搭建网站也在初中,当时Hostinger有活动,能给送一年的免费用空间,我使用云空间也搭建过博客,心里边就一直想:这玩意离开了浏览器就啥也不是(这大概是我当时排斥Web开发的原因吧)。我也挺想学做电脑端带有图形界面的应用,对要学哪些东西简单的了解了一下,看到的在Windows端推荐用C#C++QT,另外还有electronflutter和较为落后的VB,但这些都需要另外的去学一门编程语言,这无疑中又使我心里边莫名其妙的搞到厌烦...在大学上了一年啥也不会。我也听说Java也能搞图形界面,但等我查阅了相关资料后,发现Java那套图形界面的东西到现在都没人用了。

学完Java Web后我对服务后端有了一个新的认识,但总感觉Java Web写的时候太麻烦了,要写一堆xml和重复性的代码(例如每次重新新建项目之后,在这向浏览器返回数据的时候都需要设置字符集编码,否则中文会乱码),看到JSP el表达式时看到弹幕都再说这些东西没人用,对于Java Web我还有一个痛点,就是前端页面写起来太费事了,我一直在想,要搞web开发,岂不是还要去学会怎么写网页,后来我经过搜集各方面资料,就了解到了现在还有一种前后端分离的开发方式,我就也没别的办法,都学到这儿了,继续往下学呗。

然后开始看Spring5,好家伙,这玩意更枯燥无聊还有抽象,当时学的时候在想啥是IOCAOP,这破东西有什么应用场景...,然后硬着头皮往下看,看到JdbcTemplate后实在不想接着看了,也就那么的停了,因为当时的代码量确实不够。

停了Spring5后,我竟然破天荒的想要继续学Spring家族中的其他东西,听说Spring MVC可以搞Web开发,我就又想去学那个,看的好几个教程,上来就说用什么Thymeleaf模板引擎,然后我跟着代码一步一步的敲,第一个例子是后端向前端返回一个Hello World,但我一直卡在这儿,不知道是什么原因,前端一直收不到后端传过来的数据,把我心态搞崩了,一时间什么也不想学了,想要放弃Java,但又想起之前学了那么多东西又不忍心放弃掉,硬着头皮又去学Spring Boot,正是因为Spring Boot,又让我喜欢上了Java,也是因为Spring Boot让我知道了··这个东西,原来Java项目中引入和移除依赖的jar包这么方便,我又深深地被这些东西所折服。

Spring Boot让我又重新找回学习Java的信心,因为不用去写大量的乱七八糟的···真是舒服得很,因为Spring boot中内置Tomcat,对我这种不会Tomcat的来说简直就是福音!还集成了Hikaricp数据库连接池,只需要引入相关的驱动再从application.xml文件中填写数据库的相关信息就可以直接用(当时我对数据库的操作使用的是JdbcTemplate,这也可能是我学Spring最大的收获),简直不要太舒服。

然后我就尝试着用Spring BootSpring MVC,结果就发现Spring MVC能用的注解在Spring Boot中也能用,于是我就用Spring Boot简单的学了下Spring MVC,目前只能说是会用几个重要的API和注解。而在当时我发现目前最大的短板就是所学到的东西不能展示出它的效果,对于JS啥也不会的我又破天荒的直接去学Vue,看了十几集结果发现啥也听不懂,就这么放弃了,然后距离期末还有一个月了,想要停下来学一下其他科目,在学期末的Java课程项目中就是用的Spring Boot+Thymeleaf,也算是对前段学的一个知识的全部汇总吧,只是前端的页面写的我要吐血了...

寒假

寒假在家也总不能完全闲着吧,我就想学点东西,最初的打算是学一下Android开发(下学期要开,也算是想要完成之前的一个心愿吧)和JavaScript,但Android开发一直没能找到什么好的学习课程,B站上大部分都是老旧的视频教程,刚开始凑合着看了几个,但发现Android SDK更新太快了,有不少方法属性都弃用了,导致学习起来没什么动力,特别是学到ListView那块的时候,就在想实现一个简简单单的列表,用得着写这么一堆关于适配器代码吗...再加上Android每次编译调试运行比较慢,这让我对Gradle有点心生厌恶了,Android studio环境是我见到最难配置的,有不少都是卡到SDK和创建虚拟设备这一步的。至于JavaScript,大致的看了一下,也明白了JavaScript是怎么和页面联系起来的,也知道了几个事件和浏览器开放给JavaScript的几个API

看完JavaScript,又看了一些ES6相关知识,看完之后又简单的了解了一下Node.jsAJAXAxios,知道了AJAXAxios这俩货是用来在不刷新网页的条件下和后端进行交互的工具,也就明白了为什么用控制台看我上学期末写的那个小项目在Chrome控制台的网络请求里边的东西只有简简单单的几个,而其他网站能看到一堆。然后我又去看了Vue2,而Android基本放掉了。等Vue2看的差不多后,我对MVVM的架构模式感到特别的赞,充分的实现了前后端分离,后端只需要往前端返回JSON数据就能实现两者的分离,而这时候我又对Android开发感到了排斥,Android开发和前端比起来真的是太麻烦了!
这个时候,发现了我前端的最大的短板就是CSS了...

大二下学期(现在)

因为Vue2看的差不多之后没几天就开学了,这次开学之后刚开始看了几天的Android开发,把基础的东西顺了一遍,发现自己现在实在不喜欢这个东西,主要还是受了前端MVVM的影响,虽然听说Android可以通过Jetpack系列能够实现更便捷的开发效率,但不知道怎么回事提不起学习的兴趣了,这个时候我为了巩固之前学的东西,试着把之前所学的所有东西结合起来做点东西,发现自己在对数据库访问方面有点吃力,因为一直在使用SpringJdbcTemplate,所以萌生了学一和关于数据库访问的框架,就花了大概一周学了下MyBatis。又配合MyBatis完善了下项目。
现在的话先简单的学一下Redis,想着还得抓紧学学GitLinux,等有时间了在准备重学Spring(源码方面)、自己造个轮子、学学设计模式、学Spring Security、学其他中间件(nginx k8s等)、Spring Clouddocker等,以后大概率不会去考研,因为数学和英语实在是太差了,我对一系列有用的新技术仍保持着热情,学自己感兴趣的、学一些有用的、学一些符合实际的、学自己想学的,至于学校教的一些过时的东西该摒弃的时候就摒弃掉吧,总不能一直故步自封吧?

Q.E.D.


念念不忘,必有回响。