对于二叉树的三种遍历方法, 递归方法实现起来简单,明白。但是效率不好,并且不安全,可能会栈溢出。循环的实现,肯定是基于栈的数据结构来实现,要复杂一些。代码如下: 前序遍历的实现: 中序遍历的实现: 后序遍历的实现: 最后,补充一个宽度优先遍历的实现,即一层层地遍历: 分层遍历: ...
分类:
其他好文 时间:
2019-04-08 01:21:28
阅读次数:
158
一.手动加栈 我们有时候会栈溢出,类似于递推的时候,这时候我们就可以用到下面这个操作,来手动加栈。 原理自行百度,预处理指令详解。 二.寄存器的运用 其实这个相信大家C时很早就知道了,但是貌似用的人比较少。下面可以给出实际应用实例: 但是,其实C++会自动优化,所以C++没必要用这个操作了。 三.几 ...
分类:
其他好文 时间:
2019-04-05 09:19:54
阅读次数:
157
环境:STM32F103C8T6,MDK5 在最近的一个项目的开发中,每当调用到一个函数,程序就直接跑飞。debug跟进去看不出什么逻辑错误,但发现函数内局部变量声明之后,全局变量的值被清零,后来查看局部变量地址已经超出栈的范围,于是确定是栈溢出。如果不稍微了解一下堆栈,在开发过程中可能碰到各种奇怪 ...
分类:
其他好文 时间:
2019-04-04 13:08:17
阅读次数:
1185
谈到斐波那契数列常想到的是递归,由于在电脑中存储数据是开辟栈来存储,若是所要计算的值太大,要面对两个问题,一个是时间问题:对一数的计算,递归和回溯过程中会重复对一个值(例如f(3))进行开辟空间释放空间,因而会十分耗时;另一个问题是空间问题:由于系统分给程序的栈空间是有限的,当数字太大,最终产生的栈空间的情况,即栈溢出,导致我们无法计算。第二个想到的是通过数组来存储,即将每一个计算后的值都存到数组
分类:
其他好文 时间:
2019-04-02 21:06:23
阅读次数:
172
1.JVM运行时内存区域划分? 2.内存溢出OOM和堆栈溢出SOE的案例、原因、排查及解决? 3.常用的JVM性能监控工具? 4.JVM参数设置? 5.类加载过程? 6.JVM内存模型? 7.四大引用类型?区别? 8.JVM性能调优? 9.Minor GC和Full GC 分别在什么时候触发? 10 ...
分类:
其他好文 时间:
2019-04-01 22:40:14
阅读次数:
227
第三章主要学习了关于栈和队列的知识,知道了有关栈和队列的初始化和基本操作。栈是只在一头进行插入与删除操作的数据结构,而队列是可以在两头进行插入与删除操作的数据结构。此外栈和队列分别可以分为链栈与顺序栈,链队与顺序队列。栈的特点是先进后出,队列的特点是先进先出。 在这里分享有关栈的函数: #inclu ...
分类:
其他好文 时间:
2019-03-30 01:20:33
阅读次数:
166
这篇文章主要介绍拷贝构造函数和赋值运算符的区别,以及在什么时候调用拷贝构造函数,什么情况下调用赋值运算符。 拷贝构造函数和赋值运算符 在默认情况下(用户没有定义,但是也没有显示的删除),编译器会自动隐式生成一个拷贝构造函数和赋值运算符,但用户可以使用delete来指定不生成拷贝构造函数和赋值运算符, ...
分类:
编程语言 时间:
2019-03-29 17:22:35
阅读次数:
169
由于在Hotspot虚拟机中中不区分虚拟机栈和本地方法栈,因此通过-Xoss修改参数是无效的,可以通过修改-Xss设定。 如果线程请求的栈深度大于虚拟机允许的最大深度,将抛出StackOverflowError异常。 如果虚拟机在扩展栈时无法申请到足够的内存空间,将抛出OutOfMemoryErro ...
分类:
编程语言 时间:
2019-03-29 01:18:04
阅读次数:
190
缓冲区溢出是一类特殊的数组及数字边界错误。大多数缓冲区溢出的发生是由于输入超出了所分配的空间大小,然而数据还是被写入了,并且覆盖了分配空间以外的内存。 堆栈溢出:堆栈溢出是一种写入的数据超出了给堆栈分配的缓冲区大小而发生的溢出。 整型溢出:用来保存某个确定数值范围的特定数据类型或CPU寄存器,当分配 ...
分类:
其他好文 时间:
2019-03-25 14:41:19
阅读次数:
167
上一篇文章我们讲了JVM运行时数据区域与内存溢出异常,其中对于内存溢出异常这部分将的不够详细,这篇文章将着重讲解Java内存溢出异常的相关知识。如果有没看过上一篇文章的小伙伴们,请点击Java内存区域与内存溢出异常。 Java的内存溢出异常主要分为两类:分别是内存溢出和栈溢出。在以下几种情况,会抛出 ...
分类:
编程语言 时间:
2019-03-19 13:45:49
阅读次数:
192