局部变量

java 成员变量和局部变量

好久不见. 提交于 2020-03-10 13:58:51
作用范围:   成员变量作用于整个类中   局部变量作用于函数中,或者语句中 存储位置:   成员变量:堆内存中,因为对象的存在,才在内存中存在   局部变量:栈内存中 来源: https://www.cnblogs.com/hongxiao2020/p/12455051.html

{php 编程技巧}

泪湿孤枕 提交于 2020-03-10 11:40:32
每种开发语言都有自己的特有的东西,PHP也不例外,虽然我只是刚刚开始学习PHP,但2年的Java经验,一年的.NET经验对于我来说,PHP一点也不难,关键是于积累,收集了一些PHP的编程技巧,记录下,以后备用。 用单引号代替双引号来包含字符串,这样做会更快一些。因为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、如果你想知道脚本开始执行

提高PHP性能的实用方法+40个技巧优化您的PHP代码

荒凉一梦 提交于 2020-03-10 08:21:13
1、用单引号代替双引号来包含字符串,这样做会更快一些。因为PHP会在双引号包围的字符串中搜寻变量,单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的"函数"(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号)。 2、如果能将类的方法定义成static,就尽量定义成static,它的速度会提升将近4倍。 3、$row['id'] 的速度是$row[id]的7倍。 4、echo 比 print 快,并且使用echo输出时用逗号而不是句点代替字符串连接效率更高,比如 echo $str1,$str2。 5、在执行for循环之前确定最大循环数,不要把 count/strlen/sizeof 等每次都要重复做的但结果都一样的事情放到 for 循环的条件语句中,另外最好运用foreach代替for循环。 6、及时注销那些不用的变量,尤其是大数组,对象之类的,以便释放内存。 7、require_once()代价昂贵,据测试数据来看,使用require_once比require慢3-4倍,具体的解决办法可先检查是否存在引用然后决定是都需要require。 8、include和require文件时尽量不要使用相对路径,因为使用相对路径的时候它会首先查找指定的php包含路径,然后查找当前目录,因此会检查过多路径,所以最佳选择是使用绝对路径。 9

如何在Razor中声明局部变量?

百般思念 提交于 2020-03-09 20:50:23
我正在asp.net mvc 3中开发一个Web应用程序。我对它很新。 在使用剃刀的视图中,我想声明一些局部变量并在整个页面中使用它。 如何才能做到这一点? 能够执行以下操作似乎相当微不足道: @bool isUserConnected = string.IsNullOrEmpty(Model.CreatorFullName); @if (isUserConnected) { // meaning that the viewing user has not been saved <div> <div> click to join us </div> <a id="login" href="javascript:void(0);" style="display: inline; ">join</a> </div> } 但这不起作用。 这可能吗? #1楼 您还可以使用: @if(string.IsNullOrEmpty(Model.CreatorFullName)) { ...your code... } 代码中不需要变量 #2楼 如果你正在寻找一个int变量,一个随着代码循环而递增的变量,你可以使用这样的东西: @{ int counter = 1; foreach (var item in Model.Stuff) { ... some code ... counter =

angular2的ElementRef在组件中获取不到

女生的网名这么多〃 提交于 2020-03-09 07:03:05
angular2的ElementRef在组件中获取不到 angular2不推荐操作dom,但是实际应用中不可避免的需要使用到dom操作,怎么操作,官方文档提供了一系列api( ElementRef, ViewContainerRef , TemplateRef )配合 @ViewChild或@ViewChildren就可以获取到dom元素,但是这个过程中有些文档未提及的坑,本人不小心踩进去,半天才爬出来,因此分享一下。 首先,需要在ng2的模板中使用 #bannersEL 定义一个模板局部变量,如: <div class="swiper-wrapper" #bannersEL></div>  接着在模板对应的组件类中,使用组件中元数据@ViewChild来获取模板局部变量的读写权限: export class DemoComponent implements AfterViewInit { @ViewChild("bannersEL") bannersEl: ElementRef; ngAfterViewInit(): void { console.log(this.bannersEl); } }  其中 @ViewChild("bannersEL") bannersEl: ElementRef 还可以使用如下语法限定局部变量的权限: @ViewChild("bannersEL",

java web----jsp语法

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-09 00:43:41
JSP学习 注意:jsp中${user},是在服务器上的,首先去request中找,没有去session中找。。。。。(自己总是错误的认识jsp是一个网页,在浏览器上进行的) Jsp的page指令学习   <%@page属性名=“属性值”属性名=“属性值”...%> 属性名:   1anguage:声明sp要被转译的语言。   import:声明转译的java文件要导入的包,不同的包使用逗号隔开。   pageEncoding:设置jsp文件的数据编码格式。   contentType="text/html;charset=utf-8"设置isp数据响应给浏览器时,浏览器的解析和编码格式。   session:设置转译的servlet中是否开启session支持,默认开启,true表示开启。false表示关闭。   errorPage:设置jsp运行错误跳转的页面。(里面传入跳转的jsp路径)   extends:设置jsp转译的java文件要继承的父类(包名+类名)。 作用:   配置sp文件的转译相关的参数。 jsp java代码块 使用:<% java代码 %>局部代码块   缺点:可阅读性极差 局部代码块   声明的java代码会被原样转译到jsp对应的servlet文件的_JspService方法中 <body> <% int a =3; if (a>1){ %> <b>

MySQL存储过程

穿精又带淫゛_ 提交于 2020-03-07 14:08:00
摘自:https://www.cnblogs.com/l5580/p/5993238.html MySQL5 中添加了存储过程的支持。 大多数SQL语句都是针对一个或多个表的单条语句。并非所有的操作都怎么简单。经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件。虽然他们的作用不仅限于批处理。 为什么要使用存储过程:优点 1 通过吧处理封装在容易使用的单元中,简化复杂的操作 2 由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果开发人员和应用程序都使用了同一存储过程,则所使用的代码是相同的。还有就是防止错误,需要执行的步骤越多,出错的可能性越大。防止错误保证了数据的一致性。 3 简化对变动的管理。如果表名、列名或业务逻辑有变化。只需要更改存储过程的代码,使用它的人员不会改自己的代码了都。 4 提高性能,因为使用存储过程比使用单条SQL语句要快 5 存在一些职能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码 换句话说3个主要好处简单、安全、高性能 缺点 1 一般来说,存储过程的编写要比基本的SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。 2 你可能没有创建存储过程的安全访问权限。许多数据库管理员限制存储过程的创建,允许用户使用存储过程

jvm学习006 jvm内存结构分配

穿精又带淫゛_ 提交于 2020-03-07 06:13:10
主要内容如下: JVM启动流程 JVM基本结构 内存模型 编译和解释运行的概念 一、JVM启动流程: JVM启动时,是由java命令/javaw命令来启动的。 二、JVM基本结构: JVM基本结构图: 《深入理解Java虚拟机(第二版)》中的描述是下面这个样子的: Java中的内存分配: Java程序在运行时,需要在内存中的分配空间。 为了提高运算效率,就对数据进行了不同空间的划分 ,因为每一片区域都有特定的处理数据方式和内存管理方式。 具体划分为如下 5个内存空间 :(非常重要) 栈 :存放 局部变量 堆 :存放所有 new出来的东西 方法区:被虚拟机加载的类信息、常量、静态常量等。 程序计数器(和系统相关) 本地方法栈 1、程序计数器: 每个线程拥有一个PC寄存器 在线程创建时创建 指向下一条指令的地址 执行本地方法时,PC的值为undefined 2、方法区: 保存装载的类信息   类型的常量池   字段,方法信息   方法字节码 通常和永久区(Perm)关联在一起 3、堆内存: 和程序开发密切相关 应用系统对象都保存在Java堆中 所有线程共享Java堆 对分代GC来说,堆也是分代的 GC管理的主要区域 现在的GC基本都采用分代收集算法,如果是分代的,那么堆也是分代的。如果堆是分代的,那堆空间应该是下面这个样子: 上图是堆的基本结构,在之后的文章中再进行详解。 4、栈内存:

Java内存划分--数组内存图

我是研究僧i 提交于 2020-03-07 03:28:44
Java内存划分 5 一,栈: 存放的都是方法中的 局部变量,方法的运行一定要在栈当中。 局部变量:方法的参数,方法{}中的变量 作用域:一旦超出作用域,立刻从栈内存中消失。 二,堆: 凡是 new 出来的东西,都在堆当中 堆内存里面的东西都有一个地址值:16进制 堆里面的数据都有默认值: ​ 整数 默认为0 ​ 浮点数 默认为0.0 ​ 字符 默认为 ‘\u0000’ ​ 布尔 默认为false ​ 引用类型 默认为null 三,方法区: 存储 .class 相关信息,包含方法的信息 四,本地方法栈 与操作系统相关 五,寄存器: 与 cpu 相关 一个数组的内存图 方法信息 存储在 方法区中 运行方法就必须将 方法信息 加载到栈中,并在栈中开辟空间,存储数组名 new的时候 是在堆里面,在堆中开辟一段内存空间,编号,赋予16进制地址值。 将地址值赋给栈里面的数组名。 根据索引赋值的时候,通过数组名的地址,在堆中找到相应内存地址,按照索引递增,找到相应地址 两个数组的内存图 类比一个数组,我都懒得写了… 还是要注意压栈的问题 画这个图,实际上是为下面做铺垫 两个引用指向同一个数组 其实图里面已经可以很清楚的看到,虽然 B数组是被 A数组赋值了,但是,B数组依然能够指向内存中new出来的数组地址, 由此,不难看出,通过 数组B 一样能够改变 堆内存中的数组 实际上,是堆内存共享了

Java 10 局部变量类型推断

喜欢而已 提交于 2020-03-06 23:50:25
java 10引入了var关键字,用于类型推断。 var userChannels = new HashMap < User , List < String > > ( ) ; userChannels会被判断为HashMap<User, List>类型。 var的局限性 var被oracle称为 Local variable Type inference(局部变量类型推断) ,从名字来看,它是有限制的。 不能用在类的字段(fields)和方法签名(method signatures) 。 也就是说,它只能用于方法的局部变量。 public void method(var temp) 声明的同时必须要有初始化表达式 。 var x; 或者 var x = null; 都不被允许,因为没有规定需要推断的类型。 令人困惑的是 var x = ArrayList<>() 居然是正确的代码,x会被判断为 ArrayList< Object > 。 lambda不被支持 。 var foo = () -> {} ,不能用lambda表达式非常遗憾,但是我们需要来思考一个问题:为什么lambda不被支持? 从 lambda的实现方式 说起,lambda表达式是一个模版,JVM会根据lambda表达式生成一个私有静态方法和一个内部类,而内部类实现了函数式接口,然后再在内部类实现接口的方法中