堆、栈、队列的理解:
一、栈
栈是一种遵循后进先出原则的有序结合:尝试理解就是有序的挤公交,最后上车的会在门口,门口的人最先下车。
二、堆
一般由操作人员分配释放,若操作人员不分配释放,将有操作系统回收释放。分配方式类似链表,堆存储在二级缓存中。
三、队列
队列和栈相反,遵循先进后出原则的一组有序集合,常识理解就是银行排号办理业务,先去领号排队的人,先办理业务。
队列分为任务队列、优先队列和循环队列
优先队列:元素的添加和删除基于优先级。常见的就是机场的登机顺序。头等舱和商务舱的优先级高于经济舱。
循环队列:击鼓传花
四、栈和堆的区别?
存储、速度、线程、垃圾回收
(1)存储:
栈区主要存储的是基本数据变量(int,float),由操作系统自动分配,调用完毕后立即释放内存。
堆区:主要存储的是实例变量,调用之后需要由操作人员匹配释放
(2)从速度角度:
栈区存取速度快,
堆区存取速度比较慢,因为要在运行时动态分配内存,存取速度慢
(3)从线程角度看