code学习

2021 个人年度小结

前言

因为不用考研,所以大四一整年可以自由自在地学习一直以来想学却又没时间去学的东西。快乐的大四时光总是显得十分短暂,这篇博客主要用来总结过去一年所学的知识。

基础类课程

计算机组成原理

上的是哈尔滨工业大学的慕课,讲了计算机的几个组成部分,包括CPU、存储器、总线和 IO,上起来没什么新鲜感,和大二下的微机系统很像。

深入理解计算机系统

上的是 CMU15-213,《深入理解计算机系统》的两位作者亲自授课,第一次上国外网课,每集一个小时,体验和每集 10 分钟左右的慕课完全不同。这门课主要讲解了计算机的信息表示方式(整数和浮点数)、x86-64 指令集、存储器层次结构、链接、异常控制流、虚拟内存和并发编程,就像是大杂烩,把计算机中的很多知识都汇集到了一起,包括操作系统,但是又没有把各个知识点讲的很深入。

这门课有几个小巧精致的实验,令人印象深刻的是汇编相关的实验,包括拆炸弹和利用缓冲区溢出错误进行攻击,光看书上的知识而不做这些实验是没有灵魂的,做了之后才能知道自己的掌握程度。

数据库系统

上的是 CMU15-445,主讲教师 Andy 的语速飞快,还好在知乎找到了老哥为爱发电的熟肉视频😇,不然真就当场劝退。这门课讲解的是磁盘数据库,包括磁盘管理器、缓冲池管理器、索引、SQL 执行计划、并发控制理论和错误恢复几个部分。并发控制部分名词太多了,没怎么听懂(中间有 3 集是别人代课的),以后有时间再二刷吧。

配套一个 bustub 实验,会让你完成数据库的几个主要组件,因为要用 C++14 进行开发,所以为了完成实验还复习了一周的《C++ Primer》,这门课可以说是十分硬核了,和实验相关的博客汇总在 标签 - CMU15445。

操作系统

上的是南京大学蒋炎岩老师在疫情期间录的网课,教材用的是《操作系统导论》,分成三个部分:虚拟化、并发和持久化,但是老师把并发放在了第一个讲。虚拟化分为 CPU 的虚拟化和内存虚拟化,并发部分讲了自旋锁、互斥锁、读写锁、条件变量和信号量以及几种协议,持久化讲了 Windows 古老的 FAT 文件系统,和教材有较大的差异(推荐看教材上讲的)。说实话,操作系统如果不敲代码的话很快就忘了上课所讲的东西,说的就是自己 😇

语言类课程

后端技术栈

MySQL

上的是动力节点老杜的 MySQL 课程,主要讲解的是 SQL 语句的写法,不包括触发器这些,不过还是很推荐小白学习这么课的,比如大四时候的我 😭

Java SE

去年刚开学就被隔离,隔离期间花了 10天 时间刷完了动力节点老杜的 Java SE 课程,前面有 178 集是重复的,建议从 179 集开始食用。

JDBC

上的也是动力节点老杜的课程,感觉这部分的知识还是挺旧的,学了 MyBatis 之后就没用过了。

Servlet

上的是动力节点老杨的课,讲解了互联网通信模型和使用 Servlet 和 JSP 进行 Web 开发的方式。这老师天天开车,还举了一个香蕉应该横着吃还是竖着吃的例子,记忆犹新🥵

Spring 全家桶

上的是动力节点王鹤老师的 Spring 系列课程以及尚硅谷雷丰阳老师的 SpringBoot 源码解读,前者是应用类的,后者则是原理类的(所以会有些枯燥)。先是学了 Spring,包括 IOC 和 AOP 的思想,然后是持久层的 MyBatis,接着是用于 Web 开发的 SpringMVC 框架,三个框架加起来好几个配置文件,做起项目来简直是配置地狱。还好有 SpringBoot,把配置浓缩到一个文件中,使用注解进行开发就是香啊。

但是写了一段时间之后发现平时用 Spring 全家桶也都是写 CRUD 的接口,发请求啥的还是用 Python 的 requests 方便啊。

Redis

上的是尚硅谷王泽老师的 Redis6 课程,主要讲了 Redis 语句的写法、事务和锁和主从复制,印象不是很深,上了个寂寞系列,开发中直接把工具类拿来就用了~~

JVM

刚开始看的是周志明老师的《深入理解Java虚拟机》,看了三章之后实在是太枯燥无聊了,所以上了尚硅谷宋红康老师的 JVM 课程,主要有三个篇章:内存与垃圾回收篇、类加载器篇以及性能监控与调优篇,极力推荐这门网课!如果你只看了网上的博客或者一些过时的网课可能会告诉你类对象和字符串常量池是放在方法区(Java8 开始称作元空间)中的,但实际上是放在堆里面的,如果没学过这门课光看帖子很容易被误导。

JUC

上的是尚硅谷周阳老师的 JUC 课程,主要讲解了 CompletableFuture、并发中的各种“锁”事、多线程中断机制、Java 内存模型、CAS 原理、LockSupport 原理、ThreadLocal 技术、synchronized 锁升级以及最重要的抽象同步队列 AQS 原理。周阳老师会讲解源代码,并且一步步地进行源码拆分、调试和讲解,十分清晰,这不比《Java 并发编程之美》燃?

前端技术栈

HTML、CSS 和 JS

这些其实大二和大三的时候就有接触过一些,主要是写爬虫用到了。JavaScript 是大三看《JavaScript高级程序设计(第4版)》 学的,红宝书又大又全,和《C++ Primer》 属于同一个级别的书籍,感觉不太适合入门,所以看了一段时间后就忘了😭 大四寒假又看了尚硅谷的 JS 课程才回忆起来。

Vue

上的是尚硅谷张天禹老师的 Vue 2 + Vue 3 全家桶课程,老师说话又好听,而且没有一开始就用脚手架进行教学,符合小白认知过程,课程内容可以覆盖 Vue 中的方方面面,推荐食用!

后记

蓦然回首,发现过去一年还是学了不少东西,上课时间外不是在敲代码就是在敲代码的路上,但是有得必有失,敲了一年代码发现微积分和线性代数以及自己的专业课都忘光了,明天开学又得把大一到大三的知识复习一遍,以上 😇