局部变量

JVM执行引擎

风格不统一 提交于 2019-12-25 07:30:23
1.概述    执行引擎是jvm核心组成部分之一,建立在物理器,硬件和操作系统层面之上,引擎在执行代码时会有解释执行和编译执行两种选择,输入字节码文件,字节码解析输出结果. 2.栈帧    栈帧是用于支持虚拟机进行方法调用和执行方法的结构,是虚拟机运行时数据区中的虚拟机栈的栈元素,存储方法的局部局部变量,操作数栈,动态链接和方法返回地址等信息,对应着入栈和出栈的过程. 上面是栈帧的基本结构,在线程中的方法调用链中同时执行很多方法,但只有栈顶的栈帧才是有效的,称为当前栈帧,与这个帧关联的叫当前方法,而栈帧的结构中主要分为局部变量表,操作栈,动态链接和方法返回地址 3.局部变量表    Local Variable Table是一组变量存储空间,用于存放方法参数和方法内部定义的局部变量,当java去编译class文件时,方法的code属性中的max_locals数据项用于确定和分配局部变量表的大小容量,在局部变量表中容量以slot为最小单位,在32位中可以存放基本数据类型,但是reference中的引用通过直接或间接的查找java堆中的起始地址索引,或者直接找到对象所属数据类型在方法区中的存储信息。而在64位中,虚拟机会以高位对齐的方式分配两个连续的slot空间,而只有long和double处于64位空间中,所以java规定将读写分为2个32位的读写做法.由于局部变量是线程私有的数据

提高PHP执行效率的50个技巧

喜夏-厌秋 提交于 2019-12-25 04:07:17
今天给大家带来,如何提高PHP执行效率的50个技巧,话不多说迈入主题 1、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故 把函数加上了双引号)。 2、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 3、$row['id'] 的速度是$row[id]的7倍。 4、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。 5、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 6、注销那些不用的变量尤其是大数组,以便释放内存。 7、尽量避免使用__get,__set,__autoload。 8、require_once()代价昂贵。 9、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。 10、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用 $_SERVER['REQUEST_TIME'] 要好于 time() 11

Go语言基础介绍

前提是你 提交于 2019-12-25 01:07:12
Go是一个开源的编程语言。Go语言被设计成一门应用于搭载Web服务器,存储集群或类似用途的巨型中央服务器的系统编程语言。目前,Go最新发布版本为1.10. Go语言可以运行在Linux、FreeBSD、Mac OS X和Windows系统上。 1. 结构:Go语言的基础组成有以下几个部分:包声明、引入包、函数、变量、语句&表达式、注释。 (1)、必须在源文件中非注释的第一行指明这个文件属于哪个包,如:package main (2)、注释与C++相同,有单行注释即”//”和多行注释即”/* … */”两种。 (3)、当标识符(包括常量、变量、类型、函数名、结构字段等等)以一个大写字母开头,那么使用这种形式的标识符的对象就可以被外部包的代码所使用(客户端程序需要先导入这个包),这被称为导出;标识符如果以小写字母开头,则对包外是不可见的,但是它们在整个包的内部是可见并且可用的。 2. 基础语法: (1)、Go标记:Go程序可以由多个标记组成,可以是关键字、标识符、常量、字符串、字符。 (2)、行分隔符:在Go程序中,一行代表一个语句结束。每个语句不需要像C++语言一样以分号”;”结尾,因为这些工作都将由Go编译器自动完成。如果你打算将多个语句写在同一行,它们必须使用”;”为区分,但在实际开发中我们并不鼓励这种做法。 (3)、注释:注释不会被编译,每一个包应该有相关注释。单行注释以”//

嵌入式软件工程师经典面试题

[亡魂溺海] 提交于 2019-12-23 21:01:56
1、int a[10]={1,2,3,4,5,6,7,8,9,0}; int *p=&a[1]; 则p[6]等于8 2、整数数组清零:bzero(),memset()。 3、sizeof();测试变量所占地址的字节数 4、 main() { char *str[]={“ab”,“cd”,“ef”,“gh”,“ij”,“kl”}; char t; t=(str+4)[-1]; printf("%s",t); }则显示"gh" 5、小端:低位字节数据存储在低地址 大端:高位字节数据存储在低地址 例如:int a=0x12345678;(a首地址为0x2000) 0x2000 0x2001 0x2002 0x2003 0x12 0x34 0x56 0x78 大端格式 6、异步IO和同步IO区别 如果是同步IO,当一个IO操作执行时,应用程序必须等待,直到此IO执行完,相反,异步IO操作在后台运行, IO操作和应用程序可以同时运行,提高系统性能,提高IO流量; 在同步文件IO中,线程启动一个IO操作然后就立即进入等待状态,直到IO操作完成后才醒来继续执行,而异步文件IO中, 线程发送一个IO请求到内核,然后继续处理其他事情,内核完成IO请求后,将会通知线程IO操作完成了。 7、用变量a定义 一个整型数 int a; 一个指向整型数的指针 int a; 一个指向指针的指针

提升php速度

戏子无情 提交于 2019-12-23 11:11:50
0、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的“函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 1、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 2、$row[’id’] 的速度是$row[id]的7倍。 3、echo 比 print 快,并且使用echo的多重参数(译注:指用逗号而不是句点)代替字符串连接,比如echo $str1,$str2。 4、在执行for循环之前确定最大循环数,不要每循环一次都计算最大值,最好运用foreach代替。 5、注销那些不用的变量尤其是大数组,以便释放内存。 6、尽量避免使用__get,__set,__autoload。 7、require_once()代价昂贵。 8、include文件时尽量使用绝对路径,因为它避免了PHP去include_path里查找文件的速度,解析操作系统路径所需的时间会更少。 9、如果你想知道脚本开始执行(译注:即服务器端收到客户端请求)的时刻,使用$_SERVER[‘REQUEST_TIME’]要好于time()。 10、函数代替正则表达式完成相同功能。 11、str_replace函数比preg

JavaScript--匿名函数和闭包(16)

≡放荡痞女 提交于 2019-12-23 05:18:44
// 匿名函数:没有名字的函数; // 闭包:可访问一个函数作用域里的变量的函数; 一 匿名函数 1 // 普通函数 2 function box(){ // 函数名是box; 3 return 'Lee'; 4 } 5 box(); // =>Lee; 调用函数; 6 // 匿名函数 7 function(){ // 匿名函数,会报错; 8 return 'Lee'; 9 } 10 // 通过表达式自我执行 11 (function(name){ 12 console.log(name); // =>Lee; 13 })("Lee"); // "()"表示执行函数,并且可以传参; 14 // 把匿名函数赋值给变量 15 var box = function(){ // 将匿名函数赋给变量; 16 return 'Lee'; 17 }; 18 console.log(box()); // 调用方式和函数调用相似; 19 // 函数里的匿名函数 20 function box(){ 21 return function(name){ // 函数里的匿名函数,产生闭包; 22 return name; 23 }; 24 }; 25 console.log(box()("Lee")); // 函数box()调用匿名函数,并传参; 二 闭包 // 闭包

局部变量和成员变量的区别

余生颓废 提交于 2019-12-22 08:06:06
局部变量和成员变量的区别 位置 局部变量:在方法内部 全局变量:在方法外部定义,直接写在类中。 范围 局部变量:只在方法中才可以使用,出来方法就不能在用。 全局变量:整个类中通用。 默认值 局部变量:没有默认值,如果想要使用,必须手动赋值。 全局变量:没有赋值时,不同类型有不同默认值。 内存位置 局部变量:栈内存 全局变量:堆内存 生命周期 局部变量:随方法进栈而诞生,随方法出栈而消失。 全局变量:随对象创建而诞生,随对象被垃圾回收而消失。 来源: CSDN 作者: zezea 链接: https://blog.csdn.net/zezea/article/details/103646135

阶段1 语言基础+高级_1-2 -面向对象和封装_12成员变量和局部变量的区别

旧城冷巷雨未停 提交于 2019-12-21 02:08:43
成员变量和局部变量有什么不一样 新建包demo03 默认值的问题:这个name没有被赋值输出的话就是null 方法内的局部变量age是int类型的。但是没有赋值输出就会报错。提示:变量age还没有被初始化 方法的参数就是局部变量 在类中的位置不同 重点 成员变量:类中,方法外 局部变量:方法中或者方法声明上(形式参数) 作用范围不一样 重点 成员变量:类中 局部变量:方法中 初始化值的不同 重点 成员变量:有默认值 局部变量:没有默认值。必须先定义,赋值,最后使用 在内存中的位置不同 了解 成员变量:堆内存 局部变量:栈内存 生命周期不同 了解 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 来源: https://www.cnblogs.com/wangjunwei/p/11197370.html

C语言面试问题

﹥>﹥吖頭↗ 提交于 2019-12-20 17:11:07
内容源自: C语言面试题大汇总 P.S.只摘取了自己觉得可能会被问到的以及不会的。 static有什么用途?(请至少说明两种) 1.限制变量的作用域2.设置变量的存储域 引用与指针有什么区别? 1) 引用必须被初始化,指针不必。2) 引用初始化以后不能被改变,指针可以改变所指的对象。3) 不存在指向空值的引用,但是存在指向空值的指针。 全局变量和局部变量在内存中是否有区别?如果有,是什么区别? 全局变量储存在静态数据库,局部变量在堆栈 不能做switch()的参数类型是:switch的参数不能为实型。 局部变量能否和全局变量重名? 局部变量可以与全局变量同名,在函数内引用这个变量时,会用到同名的局部变量,而不会用到全局变量。对于有些编译器而言,在同一个函数内可以定义多个同名的局部变量,比如在两个循环体内都定义一个同名的局部变量,而那个局部变量的作用域就在那个循环体内 如何引用一个已经定义过的全局变量? extern 可以用引用头文件的方式,也可以用extern关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变写错了,那么在编译期间会报错,如果你用extern方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错 全局变量可不可以定义在可被多个.C文件包含的头文件中?为什么? 可以,在不同的C文件中以static形式来声明同名全局变量。

JVM探索之——内存管理(二)

核能气质少年 提交于 2019-12-20 10:26:27
上篇文章 我们介绍了JVM所管理的内存结构也就是运行时数据区(Run-Time Data Areas),现在我们将介绍JVM的内存分配与回收 静态内存分配与动态内存分配 JVM的内存分配主要分为两种:静态内存分配与动态内存分配与之对应的是基本类型内存分配与对象内存分配; 1、静态内存分配 静态内存分配在编译时已确定好内存空间,程序载入时JVM把一次内存分配给它,此后不会再发生变化。这些内容包括:方法中的局部变量(基本数据类型)、类变量(基本数据类型)、对象的引用;对于方法中的局部变量是存储在Java栈的局部变量表中,方法执行结束栈帧出栈,局部变量也会跟着收回内存空间;而类变量是存储在方法区中的,这里的内存回收时间是不确定的。 2、动态内存分配 Java里给对象分配内存是动态分配的,编译的时候并不能确定对象的存储空间大小,只是创建对象时才能进行内存空间分配,而内存空间的回收是在对象不再被引用时才能回收。对象是存储在堆中,只有当GC触发时才清理回收那些没有被引用的对象的内存空间; 如下面代码段; public class Test { byte[] bytes=new byte[1024*1024*5]; long a=1000; public static void main(String[] args){ long b=2; byte[] base=new byte[1024