假设①新建Company类,然后继续②创建Company实例,即Company company = new Company(); 下面解释①②两部动作所涉及到的虚拟机运行时内存区域划分: 1,方法区:存放类信息,常量,静态变量(①总新建类(类信息)存放在方法去中); 2,虚拟机栈:创建栈帧,存放局部 ...
分类:
其他好文 时间:
2017-02-20 18:28:41
阅读次数:
176
除了调用其他方法,方法也可以调用自身方法。这就叫做递归 递归的例子: int Factorial(int _intvalue) { if(_intvalue<=0) return _intvalue; else return _intvalue + Factorial(_intvalue-1);// ...
分类:
其他好文 时间:
2017-02-13 22:02:04
阅读次数:
163
一个闭包小案例 两种方式概括: 闭包是javascript支持头等函数的一种方式,它是一个能够引用其内部作用域变量(在本作用域第一次声明的变量)的表达式,这个表达式可以赋值给某个变量,可以作为参数传递给函数,也可以作为一个函数返回值返回。 或是 闭包是函数开始执行的时候被分配的一个栈帧,在函数执行结 ...
分类:
其他好文 时间:
2017-01-22 12:28:40
阅读次数:
152
1 相关概念 1)栈帧 C语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。 栈帧也叫过程活动记录,是编译器用来实现过程/函数调用的一种数据结构。 2)单步执行与单步函数执行 单步执行又被称为逐语句执行,单步函数执行又被称为逐过程执行。单步函数执行不会进入函数体。 3 ...
分类:
编程语言 时间:
2017-01-19 21:34:48
阅读次数:
245
一 函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,具体区别,我们后面会讲,编程中的函数在英文中也有很多不同的叫法。在BASIC中叫做subroutine(子过程或子程序),在Pascal中叫做procedure(过程)和function,在C中只有funct ...
分类:
编程语言 时间:
2017-01-15 19:31:19
阅读次数:
288
注:本文操作基于CentOS 系统 准备工作 开始测试 火焰图分析: 附上一张openresty C部分nginx的火焰图 火焰图上下表示函数调用栈(类似于gdb中bt命令看到的栈帧顺序),可以通过函数调用栈来定位到具体的执行路径;每一个函数的宽度表示该函数占用的cpu时间片,可以重点分析占用cpu ...
分类:
其他好文 时间:
2017-01-05 01:13:38
阅读次数:
915
Buffer lab 缓冲区溢出攻击的原理 缓冲区溢出是指程序试图向缓冲区写入超出预分配固定长度数据的情况。这一漏洞可以被恶意用户利用来改变程序的流控制,甚至执行代码的任意片段。这一漏洞的出现是由于数据缓冲器和返回地址的暂时关闭,溢出会引起返回地址被重写。从逻辑上讲进程的堆栈是由多个堆栈帧构成的,其 ...
分类:
其他好文 时间:
2016-12-25 18:13:31
阅读次数:
320
以下是JVM的一个基本架构图,在这个基本架构图中,栈有两部份,Java线程栈以及本地方法栈,栈的概念与C/C++程序基本上都是一个概念,里面存放的都是栈帧,一个栈帧代表的就是一个函数的调用,在栈帧里面存放了函数的形参,函数的局部变量, 返回地址等,但是与C/C++的一个重要区别是,C/C++里面有传 ...
分类:
其他好文 时间:
2016-12-24 13:54:54
阅读次数:
229
3.2 栈帧组成之操作数栈 操作数栈是栈帧的主要内容之一,它主要用于保存计算过程中的中间结果,同时作为计算过程中变量临时的存储空间。 操作数栈也是一个先进后出的数据结构,只支持入栈和出栈两种操作,许多java字节码指令都需要通过操作数栈进行参数传递。比如add指令,它就会在操作数栈中弹出两个整数并进 ...
分类:
其他好文 时间:
2016-12-19 00:03:42
阅读次数:
247
# Auther: Aaron Fan"""递归特性:1. 必须有一个明确的结束条件2. 每次进入更深一层递归时,问题规模相比上次递归都应有所减少3. 递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧, 每当 ...
分类:
编程语言 时间:
2016-12-11 08:02:16
阅读次数:
175