后端总结序

后端总结序 在 2018/11/07 17:07:14 发布于 编程实践 分类

2014年毕业,按照毕业算工作年限是四年,如果是2014年初的实习开始,就快五年了。五年来,从一无所知的小白到现在前端后端都能写,虽然自认业务能力充足,但很多时候还是带点心虚。

有的时候不得不承认,不是科班出生的,总归是要比别人慢一点。当别人已经开始学习大数据、AI、区块链的时候,我还在补数据结构、操作系统、编译原理,还补得磕磕绊绊。五年了,因为没有系统的检验,即使学了,还是不明白自己究竟有几斤几两。对事物的控制欲望让我想知道方方面面的细节,否则我就不放心。对于自身也是一样。虽然我知道面对寻常的后端开发工作,90%以上的工作都可以胜任,但只有在问题出现的时候才能判断这件事是否在这90%之中,让我非常的焦虑。这种焦虑,有点像以前做数学考卷的时候,知道某个题是用什么知识点来解的,但能不能解出来,还得算来看看——本质上是知识没有条理性。

最近一长段时间,大概有个一年半,尝试过用一些方法来梳理自己的知识体系。用过思维导图,感觉太过简单;用过wiki,但会陷入到细节中拔不出来。不管怎么做,总是不那么如意和顺畅。做准备工作的时候,明明觉得提纲里的东西都用得顺手,但是实际写来却艰苦卓绝。最近想明白了,我自己的心里本来是没有把所有的东西理顺的,总结的提纲挈领的东西,有一点缘木求鱼的意思。

所以,这次我将尝试用重新学习方式,来总结一些自己在后端开发领域的知识。这种总结有点像期末复习,对应的期末考试就是面试了。

真正的期末复习有课本可循,科科目目比较明白。但自己这次复习,没有课本,科目上也只能自己设置了。目前后端开发上大致要包括下面一些组成。

语言基础。

开发语言的学习,对于后端开发者来说,理论上不应该是主要的障碍。语言的基础语法部分,根据SICP的

  1. primitive expressions, which represent the simplest entities the language is concerned with,
  2. means of combination, by which compound elements are built from simpler ones, and
  3. means of abstraction, by which compound elements can be named and manipulated as units.

三个组成部分进行学习,应该在一周之内可以了解到上手写代码的程度。

之后需要了解的应该是该语言的一些常用的标准库,包括文件系统、系统调用、网络、数据库链接组件、缓存等等。有了这些东西之后,应该可以写一个很基础的http服务了。

最后再去了解该语言下的常用框架,一些最佳实践。

因为我的工作语言是PHP,以这样的过程来叙述会难免会先入为主。我就想选一个自己之前完全没用过的语言,也是顺便学习一下了。最后的选择是Java。说来也巧,我是真的一点都没有用java写过HTTP服务。

网络知识

以HTTP为主,也要了解TCP/IP以及UDP相关的知识。

数据库

SQL 语言、事务、锁、索引,传统的数据库系统对于后端来说,说来说去其实就是这些东西。NOSQL方面更多需要的是对各种数据库做一个了解,知道不同数据库的适应方向,在实际应用的时候知道如何取舍。

缓存

很少有人会提这一块内容。但是缓存其实对后端开发来说非常重要。后端开发中,很多地方都涉及到缓存。缓存的使用没有定式,可能只会讲讲自己的一些经验。

消息队列

上面这些基本事纯后端的知识,而且基本事面向业务开发。其他还有两个大的组成,一个机计算机基础知识,一个是系统架构设计。这两块的内容,在开发中不那么日常,但也很重要,等有时间再做整理了。