局部变量

提高PHP性能效率的几个技巧

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

编译器对内存的分配

我的梦境 提交于 2019-12-04 00:11:04
在正式开始今天的博文之前,先看一段代码,思考这段代码有可能出现的情况: int main() { int j, b[10]; for(j = 1; j <= 10; ++j){ b[j] = 0; } } 看完这段代码后,如果觉得这段代码没有什么坑,那不妨注意一下j的范围是从1-10,而b[10]会导致b数组越界哦。思考到结果了吗?先来看看一些内存知识吧。 我们在C/C++中学的变量分三种:局部变量、全局变量(静态变量和全局变量)、堆变量 局部变量 由程序员定义普通变量时编译器在内存中的栈空间为其分配一段内存,如: int b[10], j; 全局变量 由编译器在内存中的静态存储区分配空间,如: int x, y; // 全局 int main(){   static int m, n; // 静态 } 堆变量 由程序员用malloc或new在堆上申请一段内存空间,如: int *a = new int[10], *i = new int; // 动态内存分配 可见编译器通过将内存逻辑划分为不同区段来提供程序员访问内存的权限,而每段空间都有各自的大小,一旦程序员在使用过程中将该大小哦耗尽,就会出现内存不足错误,比如典型的Stack OverFlow 了解了变量的存储后,再来思考一个问题,当我在同一个变量区定义几个不同变量时,他们在内存中是如何排列的? 比如我定义两个局部变量 int

JVM指令手册

≯℡__Kan透↙ 提交于 2019-12-03 23:38:59
栈和局部变量操作 将常量压入栈的指令 aconst_null 将null对象引用压入栈 iconst_m1 将int类型常量-1压入栈 iconst_0 将int类型常量0压入栈 iconst_1 将int类型常量1压入栈 iconst_2 将int类型常量2压入栈 iconst_3 将int类型常量3压入栈 iconst_4 将int类型常量4压入栈 iconst_5 将int类型常量5压入栈 lconst_0 将long类型常量0压入栈 lconst_1 将long类型常量1压入栈 fconst_0 将float类型常量0压入栈 fconst_1 将float类型常量1压入栈 dconst_0 将double类型常量0压入栈 dconst_1 将double类型常量1压入栈 bipush 将一个8位带符号整数压入栈 sipush 将16位带符号整数压入栈 ldc 把常量池中的项压入栈 ldc_w 把常量池中的项压入栈(使用宽索引) ldc2_w 把常量池中long类型或者double类型的项压入栈(使用宽索引) 从栈中的局部变量中装载值的指令 iload 从局部变量中装载int类型值 lload 从局部变量中装载long类型值 fload 从局部变量中装载float类型值 dload 从局部变量中装载double类型值 aload 从局部变量中装载引用类型值(refernce)

Python--函数

雨燕双飞 提交于 2019-12-03 21:39:41
以下方法均在python解释器中进行了测试,读者复制代码时,记得去掉注释符。 #!/usr/bin/env python # -*- coding: utf-8 -*- # ******************************一:函数的定义和目的****************************** # 函数的格式如下: # def 函数名(参数1,参数2,参数3....参数n): # 函数体 #定义: # 1:"def"为函数的开始,在声明建立函数时一定要用def;def所在的这一行被称为函数头; # "test"为函数名称,注意名称最好要有一定意义,比如可以从名称看出来函数作用; # "(a,b)"为参数列表,通常称为形参; # ":"注意冒号,表示函数头结束; # 2: "c = a + b"从这一行起就是函数体,函数体是缩进了4个空格的代码块 # 3:"return" 是函数的关键字,意思是返回一个值;return作用:1:返回一个值;2:结束函数的运行,并返回到调用这个函数的地方 # 4:"res = add_fun(2,3)"调用函数,并传入两个参数(实参) # def add_fun(a,b): # c = a + b # return c # res = add_fun(2,3) # 目的: # 1:降低编程难度 2:代码重用 3:实现特定功能 # *

提高PHP性能效率的几个技巧!

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

Python学习day8面向对象编程2-类的属性和方法

馋奶兔 提交于 2019-12-03 20:57:14
一、类的属性 1.语法格式 修饰符 类型 属性名 = 初值 说明:修饰符 private :该属性只能由该类的方法使用。在同一类内可见。使用对象:变量、方法。 注意:不能修饰类(外部类)    修饰符 public: 该属性可以被该类以外的方法访问。对所有类可见。使用对象:类、接口、变量、方法      类型: 任何基本类型,如int、boolean或任何类 补充:修饰符可以用来修饰变量,可以指明变量是公有还是私有,私有的变量不能通过 对象.属性 的方式调用 2.变量的分类:   1.成员变量:在方法体外,类体内,声明的变量称为成员变量       成员变量包括:1.实例变量(不以static修饰)             2.类变量(以static修饰)   2.局部变量:在方法体内部声明的变量称为局部变量       局部变量包括:1.形参(方法签名中定义的变量)              2.方法局部变量(在方法内定义的变量)              3.代码块局部变量(在代码块内定义的变量) 实例: public class Person{ public String name = "赵云";//public:公有的,这样的类不仅可以在本类的方法中使用,也可以在类的外部使用 private int age;//private:私有的,只可以在本类方法中使用

这一次,终于系统的学习了 JVM 内存结构

こ雲淡風輕ζ 提交于 2019-12-03 13:55:19
摘自: https://www.cnblogs.com/jamaler/p/11797273.html 这一次,终于系统的学习了 JVM 内存结构 最近在看《 JAVA并发编程实践 》这本书,里面涉及到了 Java 内存模型,通过 Java 内存模型顺理成章的来到的 JVM 内存结构,关于 JVM 内存结构的认知还停留在上大学那会的课堂上,一直没有系统的学习这一块的知识,所以这一次我把《 深入理解Java虚拟机JVM高级特性与最佳实践 》、《 Java虚拟机规范 Java SE 8版 》这两本书中关于 JVM 内存结构的部分都看了一遍,算是对 JVM 内存结构有了新的认识。JVM 内存结构是指:Java 虚拟机定义了若干种程序运行期间会使用的运行时数据区,其中有一些会随着虚拟机启动而创建,随着虚拟机退出而销毁,另一些则与线程一一对应,随着线程的开始而创建,随着线程的结束而销毁。具体的运行时数据区如下图所示: 在 Java 虚拟机规范中,定义了五种运行时数据区,分别是 Java 堆、方法区、虚拟机栈、本地方法区、程序计数器,其中 Java 堆和方法区是线程共享的。接下来就具体看看这 五种运行时数据区。 Java 堆(Heap) Java 堆是所有线程共享的一块内存区域,它在虚拟机启动时 就会被创建,并且单个 JVM 进程有且仅有一个 Java 堆。Java 堆是用来存放对象实例及数组

属性和局部变量的区别

白昼怎懂夜的黑 提交于 2019-12-03 11:48:24
---恢复内容开始--- 相同点:   定义变量的格式: 数据类型 变量名=变量值   先声明后使用   变量都有其对应的作用域 不同点:   1.在类中声明的位置不同     属性:直接定义在类的一对{}内     局部变量:声明在方法内、方法形参、代码块内、构造器形参、构造器内部的变量   2.关于权限修饰符的不同     属性:可以在声明属性时,指明其权限,使用权限修饰符     局部变量:不可以使用权限修饰符   3.默认初始化值     属性:类的属性,根据其类型,都有默认初始化值         整形:0 浮点型:0.0 字符型:0 布尔型:false 引用数据类型:null     局部变量:没有默认初始化值         意味着:我们在调用时,一定要显示赋值         形参在调用时,我们赋值即可   4.内存中加载的位置     属性:加载到堆空间中(非static)     局部变量:栈     来源: https://www.cnblogs.com/ergePython/p/11794795.html

mysql全局变量和局部变量

风流意气都作罢 提交于 2019-12-03 11:12:22
全局变量和局部变量 在服务器启动时,会将每个全局变量初始化为其默认值(可以通过命令行或选项文件中指定的选项更改这些默认值)。然后服务器还为每个连接的客户端维护一组会话变量,客户端的会话变量在连接时使用相应全局变量的当前值初始化。 举一个例子,在服务器启动时会初始化一个名为default_storage_engine,作用范围为GLOBAL的系统变量。之后每当有一个客户端连接到该服务器时,服务器都会单独为该客户端分配一个名为default_storage_engine,作用范围为SESSION的系统变量,该作用范围为SESSION的系统变量值按照当前作用范围为GLOBAL的同名系统变量值进行初始化。 很显然,通过启动选项设置的系统变量的作用范围都是GLOBAL的,也就是对所有客户端都有效的,因为在系统启动的时候还没有客户端程序连接进来呢。了解了系统变量的GLOBAL和SESSION作用范围之后,我们再看一下在服务器程序运行期间通过客户端程序设置系统变量的语法: SET [GLOBAL|SESSION] 系统变量名 = 值; 或者写成这样也行: SET [@@(GLOBAL|SESSION).]var_name = XXX; 比如我们想在服务器运行过程中把作用范围为GLOBAL的系统变量default_storage_engine的值修改为MyISAM

python作用域

纵饮孤独 提交于 2019-12-03 10:59:37
局部和全局作用域   在被调用函数内赋值的变元和变量,处于该函数的“局部作用域”。在所有函数之外赋值的变量,属于“全局作用域”。处于局部作用域的变量,被称为“局部变量”。处于全局作用域的变量称为“全局变量”。作用域遵循如下的原则: 全局作用域的代码不能使用任何局部变量 局部作用域可以访问全局变量 一个函数的局部作用域的代码,不能使用其他局部作用域的变量。 在不同的作用域中,可以使用相同的名字命名不同的变量。 1 def spam(): 2 eggs = 31337 3 spam() 4 print(eggs)   如上所示的代码,运行之后将会报出如下所示的错误: Traceback (most recent call last): NameError: name 'eggs' is not defined   报错的原因是没有找到变量eggs,因为在全局变量域中引用了局部变量,而程序执行在全局作用域重视,不存在局部作用域,所以不会有任何局部变量。这就是为什么只有全局变量能用于全局作用域。   2.局部作用域不能使用其他局部作用域内的变量    一个函数被调用时,就创建了一个新的局部作用域,这包括一个函数被另一个函数调用时的情况。 def spam(): eggs = 99 bacon() print(eggs) def bacon(): ham = 101 eggs=0 spam(