如果读者从事软件相关的行业,一定听说过“栈”这个名词。这个词在不同的语境中有不同的含义。“栈”对应的英文单词是Stack,意为“堆叠”。
“技术栈”可以理解为一项技术的垂直领域,例如前端技术栈、终端技术栈、后台技术栈等。技术栈由该垂直领域内的关键技术点组成。如果某个技术人员同时掌握多个技术栈,就会被称为“全栈工程师”。
百度翻译提供的例句“There were stacks ofbooks on the bedside table and floor”翻译过来就是“床头桌和地板上有几摞书。”所以有关栈的一切,都离不开这个“层叠”的本意。栈的第一层含义是指一种数据结构,这种数据结构标识了一个有前后关系的列表,该列表要符合先进后出的原则。
总之,栈首先是一种数据结构。栈也表示由操作系统管理和分配的一些内存区域,这些内存区域用来存储程序中的变量及参数,程序员常说的“栈溢出”就是指这块内存空间被用完了,内存不够,程序就崩溃了。
与之对应还有一个“堆”的概念,堆是由程序员自己申请并控制的一块区域(不用的时候必须做好释放工作),而栈是由操作系统控制的。
栈也表示程序员常说的“栈信息”,常指程序出错的打印信息。如果再听到程序员说“栈信息打印出来了吗?”或“把栈发给我看看”,其实是在用栈信息定位问题。
领取专属 10元无门槛券
私享最新 技术干货