区别

jdk与jre的区别

可紊 提交于 2020-12-23 03:58:39
很多程序员已经干了一段时间java了依然不明白jdk与jre的区别。 JDK就是Java Development Kit.简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。 JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你的电脑有两套JRE,一套位于 \jre 另外一套位于 C:\Program Files\Java\jre1.5.0_15 目录下,后面这套比前面那套少了Server端的Java虚拟机,不过直接将前面那套的Server端Java虚拟机复制过来就行了。而且在安装JDK可以选择是否安装这个位于 C:\Program Files\Java 目录下的JRE。如果你只安装JRE,而不是JDK,那么只会在 C:\Program Files\Java 目录下安装唯一的一套JRE。 JRE的地位就象一台PC机一样,我们写好的Win32应用程序需要操作系统帮我们运行,同样的,我们编写的Java程序也必须要JRE才能运行。所以当你装完JDK后,如果分别在硬盘上的两个不同地方安装了两套JRE,那么你可以想象你的电脑有两台虚拟的Java PC机

php数组合并用加号和用array_merge()的区别

可紊 提交于 2020-04-24 23:07:42
第一先看数组元素: <?php$a = array('r'=>1,2,3,4); var_dump('a',$a); $b = array('r'=>5,6,7,8); var_dump('b',$b); $c = array('r'=>5,6,7,8,9); var_dump('c',$c); var_dump('a+b',$a+$b); var_dump('a+c', $a+$c); var_dump('amb', array_merge($a, $b)); var_dump('amc', array_merge($a, $c)); 第二看输出: string 'a' (length=1)array 'r' => int 1 0 => int 2 1 => int 3 2 => int 4string 'b' (length=1)array 'r' => int 5 0 => int 6 1 => int 7 2 => int 8string 'c' (length=1)array 'r' => int 5 0 => int 6 1 => int 7 2 => int 8 3 => int 9string 'a+b' (length=3)array 'r' => int 1 0 => int 2 1 => int 3 2 => int 4string 'a+c' (length

snprintf和sprintf区别分析

﹥>﹥吖頭↗ 提交于 2020-04-15 16:44:14
【推荐阅读】微服务还能火多久?>>> 今天在项目中使用snprintf时遇到一个比较迷惑的问题,追根溯源了一下,在此对sprintf和snprintf进行一下对比分析。 因为sprintf可能导致缓冲区溢出问题而不被推荐使用,所以在项目中我一直优先选择使用snprintf函数,虽然会稍微麻烦那么一点点。这里就是sprintf和snprintf最主要的区别:snprintf通过提供缓冲区的可用大小传入参数来保证缓冲区的不溢出,如果超出缓冲区大小则进行截断。但是对于snprintf函数,还有一些细微的差别需要注意。 snprintf函数的返回值 sprintf函数返回的是 实际输出 到字符串缓冲中的字符个数,包括null结束符。而snprintf函数返回的是 应该输出 到字符串缓冲的字符个数,所以snprintf的返回值可能大于给定的可用缓冲大小以及最终得到的字符串长度。看代码最清楚不过了: char tlist_3[10] = {0}; int len_3 = 0; len_3 = snprintf(tlist_3,10,"this is a overflow test!\n"); printf("len_3 = %d,tlist_3 = %s\n",len_3,tlist_3); 上述代码段的输出结果如下: len_3 = 25,tlist_3 = this is a

静态代码块、构造代码块、构造函数的区别

百般思念 提交于 2020-03-01 02:59:55
首先,静态代码块,构造代码块,和构造函数都存在于一个类中,只不过,他们执行的先后顺序和执行的次数不同。 静态代码块,只执行一次,比如,当你想要创建10个对象时,当创建第一个对象时,执行一次,然后当你继续创建剩余的对象时,这个静态代码块就不会被执行了。 而构造代码块与构造函数的异同点: 相同点:每创建一个对象,构造代码块和构造函数都执行一次,不同点:执行的顺序不同,先执行构造代码块,再执行构造方法。 public class statictest { //构造代码块 { System.out.println("我是构造代码块1"); } //静态构造代码块 static{ System.out.println("我是静态构造代码块1"); } //构造函数 statictest() { System.out.println("我是构造函数"); } //构造代码块 { System.out.println("我是构造代码块2"); } //静态构造代码块 static{ System.out.println("我是静态构造代码块2"); } public static void main(String[] args) { //第一次创建对象 new statictest(); System.out.println("----------------------------------

truncate delete drop 区别

谁都会走 提交于 2020-01-09 01:43:30
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 1. truncate和 delete只删除数据不删除表的结构(定义); drop语句将删除表的结构被依赖的约束(constrain),触发器(trigger),索引(index); 依赖于该表的存储过程/函数将保留,但是变为invalid状态。 2. delete语句是dml(Data Manipulation Language),这个操作会放到rollback segment中,事务提交之后才生效;如果有相应的trigger,执行的时候将被触发。 truncate,drop是ddl(Data Definition Language),操作立即生效,原数据不放到rollback segment中,不能回滚。操作不触发trigger。 3. delete语句不影响表所占用的extent, 高水线(high watermark)保持原位置不动,显然drop语句将表所占用的空间全部释放。 truncate 语句缺省情况下可以使空间释放到minextents个extent,除非使用reuse storage; truncate会将高水线复位(回到最开始)。 4. 速度,一般来说: drop>; truncate >; delete(没有测试过) 5. 安全性: 小心使用drop 和truncate,尤其没有备份的时候

attachEvent 与addEventListener到底有什么区别呢?

只愿长相守 提交于 2020-01-08 12:14:23
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> attachEvent 与addEventListener到底有什么区别呢? 总结如下: 一、适应的浏览器版本不同 attachEvent方法适用于IE addEventListener方法适用于FF 二、针对的事件不同 attachEvent中的事件带on 而addEventListener中的事件不带on 三、参数的个数不同 attachEvent方法两个参数:第一个参数为事件名称,第二个参数为接收事件处理的函数; addEventListener 有三个参数:第一个参数表示事件名称(不含 on,如 "click");第二个参数表示要接收事件处理的函数;第三个参数是一个bool值,一般为false 第三个参数叫做useCapture,是一个boolean值,就是true or false,如果送出true的话就是瀏览器会使用Capture方式,false的话是Bubbling,只有在特定状况下才会有影响,通常建议是false,而会有影响的情形是目标元素(target element)有祖先元素(ancestor element),而且也有同样的事件对应函数,我想,看图会比较清楚。 像这张图所显示的,我的范例有两层div元素,而且都设定有click事件,一般来说

js中substring和substr的用法区别

心不动则不痛 提交于 2019-12-18 21:53:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 用法: 1.substring 方法用于提取字符串中介于两个指定下标之间的字符 substring(start,end) 开始和结束的位置,从零开始的索引 参数 描述 start 必需。一个非负的整数,规定要提取的子串的第一个字符在 stringObject 中的位置。 stop 可选。一个非负的整数,比要提取的子串的最后一个字符在 stringObject 中的位置多 1。如果省略该参数,那么返回的子串会一直到字符串的结尾。 返回值 一个新的字符串,该字符串值包含 stringObject 的一个子字符串,其内容是从 start 处到 stop-1 处的所有字符,其长度为 stop 减 start。 说明 substring 方法返回的子串包括 start 处的字符,但不包括 end 处的字符。 如果 start 与 end 相等,那么该方法返回的就是一个空串(即长度为 0 的字符串)。 如果 start 比 end 大,那么该方法在提取子串之前会先交换这两个参数。 如果 start 或 end 为负数,那么它将被替换为 0。 2.substr 方法 定义和用法 substr 方法用于返回一个从指定位置开始的指定长度的子字符串。 语法 stringObject.substr(start [, length ]

htmlentities和htmlspecialchars 的区别

僤鯓⒐⒋嵵緔 提交于 2019-12-10 11:13:05
多人都以为htmlentities跟htmlspecialchars的功能是一样的,都是格式化html代码的,我以前也曾这么认为,但是今天我发现并不是这样的。 代码如下: '&' (ampersand) becomes '&' '"' (double quote) becomes '"' when ENT_NOQUOTES is not set. ''' (single quote) becomes ''' only when ENT_QUOTES is set. '<' (less than) becomes '<' '>' (greater than) becomes '>' htmlspecialchars 只转化上面这几个html代码,而 htmlentities 却会转化所有的html代码,连同里面的它无法识别的中文字符也给转化了。 我们可以拿一个简单的例子来做比较: 代码如下: $str='<a href="test.html">测试页面</a>'; echo htmlentities($str); // <a href="test.html">²âÊÔÒ³Ãæ</a> $str='<a href="test.html">测试页面</a>'; echo htmlspecialchars($str); // <a href="test.html">测试页面</a> 结论是

DB2、ORACLE SQL写法的主要区别

柔情痞子 提交于 2019-12-07 15:54:49
说实话,ORACLE把国内的程序员惯坏了,代码中的SQL充斥着大量ORACLE特性,几乎没人知道ANSI的标准SQL是什么样子,导致程序脱离了ORACLE根本无法运行,还好随着hibernate的流行,情况有了很大改观 DB2 作为众多国际大客户的选择(据说世界500强80%用 DB2 ,前100强更是全部采用 DB2 ),在国内真的很不流行,属于小众数据库,但是没办法,现在的项目要用 DB2 ,所以不得不面对熟悉ORACLE的开发同事们写出的“ORACLE版代码”,众多的兼容性问题搞得很是头大,遂整理了一份经常遇到的兼容性问题列表供大家参考,貌似最近问题少了些,但愿这个势头能继续下去 1、数据类型转换函数 整型转 字符型 字符串 转整形 字符串 转浮点型 浮点型 转字符串 字符串 转日期 字符串 转时间戳 日期 转字符串 ORA to_char(1) to_number ('1') to_number ('1.1') to_char (1.1) to_date ('2007-04-26','yyyy-mm-dd') to_date ('2007-04-26 08:08:08','YYYY-MM-DD HH24:MI:SS') to_char ( to_date ('2007-04-29','yyyy-mm-dd'),'yyyy-mm-dd') DB2 char(1) int('1

Debug与Release的区别

老子叫甜甜 提交于 2019-12-06 21:58:54
VC下Debug和Release区别 最近写代码过程中,发现 Debug 下运行正常,Release 下就会出现问题,百思不得其解,而Release 下又无法进行调试,于是只能采用printf方式逐步定位到问题所在处,才发现原来是给定的一个数组未初始化,导致后面处理异常。网上查找了些资料,在这 罗列汇总下,做为备忘~ 一、Debug 和 Release 的区别 Debug 通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release 称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。 Debug 和 Release 的真正区别,在于一组编译选项。 Debug 版本 参数 含义 /MDd /MLd 或 /MTd 使用 Debug runtime library(调试版本的运行时刻函数库) /Od 关闭优化开关 /D "_DEBUG" 相当于 #define _DEBUG,打开编译调试代码开关(主要针对assert函数) /ZI 创建 Edit and continue(编辑继续)数据库,这样在调试过程中如果修改了源代码不需重新编译 GZ 可以帮助捕获内存错误 Release 版本 参数含义 /MD /ML 或 /MT 使用发布版本的运行时刻函数库 /O1 或 /O2 优化开关,使程序最小或最快 /D