异常和错误有共同的超类,Throwable. 错误是程序没法处理的,比如虚拟机崩溃,无法为一个对象分配地址,栈溢出等等。这些错误有个共同点是程序无能为力,无法处理。 异常是程序能够处理的,异常分为编译期异常和运行期异常。 一。编译期异常是编译的时候出现的,也就是说通不过编译,必须处理。 二。运行期异 ...
分类:
其他好文 时间:
2018-07-29 23:22:23
阅读次数:
175
每个线程都有自己专属的栈,栈的最大尺寸是固定的,超出则引发栈溢出。 栈上的变量离开作用域,栈上的数据会自动释放。 选择用栈还是堆???? 明确知道数据占用内存,且数据量很小的情况下看,选择用栈。 在数据量很大,且不确定需要多少内存的情况下使用堆。 在栈上不能创建动态数组,在堆中能创建动态数组。 ...
分类:
其他好文 时间:
2018-07-29 00:48:00
阅读次数:
141
--递归本质 函数调用是通过栈(stack)这种数据结构实现的 每当进入一个函数调用,栈区就会加一层栈帧, 每当函数返回,栈区就会减一层栈帧,但栈区空间有限,要注意防止栈溢出 # 递归函数:在函数内部,自己调用其自身即是递归函数# 递归最简易的原型 """ 递归非常占用内存空间,使用递归如果层级过大 ...
分类:
编程语言 时间:
2018-07-28 18:31:13
阅读次数:
176
定义:在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数。 递归特性: 1. 必须有一个明确的结束条件 2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少 3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构... ...
分类:
编程语言 时间:
2018-07-28 18:20:19
阅读次数:
125
工作中无意间发现了一段可能存在栈溢出的代码, 就在本地仿者写了一段栈溢出的小程序, 先记录下,待以后看操作系统知识的时候,再深入分析 1 #include <stdio.h> 2 #include <stdlib.h> 3 4 int main(int argc, char *argv[]) 5 { ...
分类:
其他好文 时间:
2018-07-27 21:11:21
阅读次数:
145
# 在函数内部,可以调用其他函数。如果一个函数在内部调用自身本身,这个函数就是递归函数 # 计算阶乘n! = 1 x 2 x 3 x ... x n,用函数fact(n)表示,可以看出: # fact(n) = n! = 1 x 2 x 3 x ... x (n-1) x n = (n-1)! x ... ...
分类:
编程语言 时间:
2018-07-24 21:16:42
阅读次数:
184
内存溢出异常 除了程序计数器之外,jvm的其他几个运行时区域都存在着OOM异常的可能性 java堆溢出 对象数量达到最大堆的容量限制后 虚拟机栈和本地方法栈溢出 线程请求的栈深度大于虚拟机所允许的最大深度 虚拟机在扩展栈时无法申请到足够的内存空间 方法区和运行时常量池溢出 生成大量的class的情况JDK的可视化工具 JConsole:java监视与管理控制台 概述;类;vm摘要;MBe
分类:
其他好文 时间:
2018-07-22 12:03:41
阅读次数:
206
递归函数 尾递归调用时,如果做了优化,栈不会增长,因此,无论多少次调用也不会导致栈溢出。 遗憾的是,大多数编程语言没有针对尾递归做优化,Python解释器也没有做优化,所以,即使把上面的fact(n)函数改成尾递归方式,也会导致栈溢出。 小结 使用递归函数的优点是逻辑简单清晰,缺点是过深的调用会导致 ...
分类:
编程语言 时间:
2018-07-13 13:26:11
阅读次数:
142
1、函数参数的默认值 ES6 之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数log的参数y有没有赋值,如果没有,则指定默认值为World。这种写法的缺点在于,如果参数y赋值了,但是对应的布尔值为false,则该赋值不起作用。就像上面代码的最后一行,参数y等于空字符,结果 ...
分类:
其他好文 时间:
2018-07-10 23:43:49
阅读次数:
267
# 递归函数其实就是一种编程技巧,实际开发中很少用,因为当参数值过大时,会导致栈溢出 # 递归函数俩个特点:1、一定要写出口 2、自己调用自己 def jc(num): if num == 1: # 递归函数一定要有出口,否则会导致死循环 return 1 temp = jc(num-1) # 自己... ...
分类:
其他好文 时间:
2018-07-06 19:37:14
阅读次数:
109