内存参数

tmp_table_size参数

倖福魔咒の 提交于 2019-11-27 21:30:28
1、参数查看 方法一:mysql> show variables like 'tmp_table_size'; 方法二:直接查看my.cnf文件tmp_table_size参数值 2、参数配置 方法一:mysql> set global tmp_table_size=16*1024*1024; 重启后会丢失使用my.cnf参数 方法二:直接修改my.cnf文件tmp_table_size参数值,但需要重启实例生效 3、参数值意义   tmp_table_size参数配置内部内存临时表的大小。 此参数不适用用户创建的MEMORY表,用户创建的MEMORY表用max_heap_table_size参数配置。 实际限制由tmp_table_size和max_heap_table_size的值中较小的一个确定,如果内存中的临时表超出限制,MySQL自动将其转换为磁盘上的MyISAM表。如果要执行许多 GROUP BY查询,可以增加tmp_table_size的值(或如有必要,也可以使用max_heap_table_size)。    执行计划中Extra字段包含有“Using temporary” 时会产生临时表。 4、外料   MySQL中临时表主要有两类,包括外部临时表和内部临时表。外部临时表是通过语句create temporary table...创建的临时表,临时表只在本会话有效

花了近十年的时间,整理出史上最全面Java面试题

自作多情 提交于 2019-11-27 21:30:28
1、String 是最基本的数据类型吗? 不是。Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。 2、float f=3.4;是否正确? 不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;。 3、short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗? 对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转换。 4、int和Integer有什么区别? Java是一个近乎纯洁的面向对象编程语言,但是为了编程的方便还是引入了基本数据类型,但是为了能够将这些基本数据类型当成对象操作

Java基础整理

烈酒焚心 提交于 2019-11-27 20:54:39
1、泛型: a) 提到参数第一时间想到的应该是定义方法时设置的形参,并且在调用这个方法的时候为该方法传递的实参。泛型其实就是类型化参数,顾名思义,就是将方法参数由原来的具体类型参数化。这就类似于方法的变量参数,只是在这里把类型也当成参数可变的,在后边调用这个方法的时候传入具体。 b) 泛型的本质是为了再不创建新的参数类型方法的情况下,通过泛型指定的不同的类型来控制形参具体限制的类型。 c) 泛型的特点:泛型只在编译阶段有效,在编译之后程序会采取去泛型化的措施,在编译过程中,虚拟机正确检验泛型结果后会将泛型的相关信息擦除,并且在对象进入和离开方法的边界添加类型检验和类型转换的方法,类型信息不会进入到运行阶段。 d) 泛型的使用包括泛型类、泛型方法、泛型接口。 2、 多态: a) 面向对象编程中的三大特性就是封装、继承和多态。 b) 封装就是隐藏了类的内部实现细节,在不影响使用的情况下可以改变类的内部结构,这样也能保护数据,暴露给外界的只有对该对象的访问方法。 c) 继承是为了实现代码的重用,只要是两个类之间满足IS-A的关系,就可以使用继承,但是需要注意Java中的继承的单继承,一个类只能继承一个类,换言之一个类只能有一个父类,同时继承也为多态的实现做了铺垫。 d)

基础之java知识

帅比萌擦擦* 提交于 2019-11-27 19:50:33
1.面向对象和面向过程的区别 面向过程 : 面向过程性能比面向对象高。 因为类调用时需要实例化,开销比较大,比较消耗资源,所以当性能是最重要的考量因素的时候,比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发。但是, 面向过程没有面向对象易维护、易复用、易扩展。 面向对象 : 面向对象易维护、易复用、易扩展。 因为面向对象有封装、继承、多态性的特性,所以可以设计出低耦合的系统,使系统更加灵活、更加易于维护。但是, 面向对象性能比面向过程低 。 2.java语言有哪些特点 面向对象(封装,基础,多态),平台无关性(java虚拟机实现平台无关性),可靠性,安全性等 3.java和c++的区别 都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存 4.字符型常量和字符串常量的区别 形式上: 字符常量是单引号引起的一个字符; 字符串常量是双引号引起的若干个字符 含义上: 字符常量相当于一个整型值( ASCII 值),可以参加表达式运算; 字符串常量代表一个地址值(该字符串在内存中存放位置) 占内存大小 字符常量只占2个字节; 字符串常量占若干个字节(至少一个字符结束标志

JVM(java 虚拟机)内存设置

梦想的初衷 提交于 2019-11-27 17:19:29
一、设置JVM内存设置 1. 设置JVM内存的参数有四个: -Xmx Java Heap最大值,默认值为物理内存的1/4,最佳设值应该视物理内存大小及计算机内其他内存开销而定; -Xms Java Heap初始值,Server端JVM最好将-Xms和-Xmx设为相同值,开发测试机JVM可以保留默认值; -Xmn Java Heap Young区大小,不熟悉最好保留默认值; -Xss 每个线程的Stack大小,不熟悉最好保留默认值; 2. 如何设置JVM内存分配: (1)当在命令提示符下启动并使用JVM时(只对当前运行的类Test生效): java -Xmx128m -Xms64m -Xmn32m -Xss16m Test (2)当在集成开发环境下(如eclipse)启动并使用JVM时: a. 在eclipse根目录下打开eclipse.ini,默认内容为(这里设置的是运行当前开发工具的JVM内存分配): -vmargs -Xms40m -Xmx256m -vmargs表示以下为虚拟机设置参数,可修改其中的参数值,也可添加-Xmn,-Xss,另外,eclipse.ini内还可以设置非堆内存,如:-XX:PermSize=56m,-XX:MaxPermSize=128m。 此处设置的参数值可以通过以下配置在开发工具的状态栏显示: 在eclipse根目录下创建文件options

缓冲区溢出攻击

只愿长相守 提交于 2019-11-27 16:39:08
转自 http://www.cnblogs.com/fanzhidongyzby/archive/2013/08/10/3250405.html 缓冲区溢出( Buffer Overflow )是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《 0day 安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如 MS 的 Visual Studio2010 。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘缓冲区溢出背后的底层机制。 一、代码 <=> 数据 顾 名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成 意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统 提供了溢出的容器——缓冲区。 缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组

缓冲区溢出攻击

。_饼干妹妹 提交于 2019-11-27 16:38:02
缓冲区溢出攻击 缓冲区溢出( Buffer Overflow )是计算机安全领域内既经典而又古老的话题。随着计算机系统安全性的加强,传统的缓冲区溢出攻击方式可能变得不再奏效,相应的介绍缓冲区溢出原理的资料也变得“大众化”起来。其中看雪的《 0day 安全:软件漏洞分析技术》一书将缓冲区溢出攻击的原理阐述得简洁明了。本文参考该书对缓冲区溢出原理的讲解,并结合实际的代码实例进行验证。不过即便如此,完成一个简单的溢出代码也需要解决很多书中无法涉及的问题,尤其是面对较新的具有安全特性的编译器——比如 MS 的 Visual Studio2010 。接下来,我们结合具体代码,按照对缓冲区溢出原理的循序渐进地理解方式去挖掘缓冲区溢出背后的底层机制。 一、代码 <=> 数据 顾名思义,缓冲区溢出的含义是为缓冲区提供了多于其存储容量的数据,就像往杯子里倒入了过量的水一样。通常情况下,缓冲区溢出的数据只会破坏程序数据,造成意外终止。但是如果有人精心构造溢出数据的内容,那么就有可能获得系统的控制权!如果说用户(也可能是黑客)提供了水——缓冲区溢出攻击的数据,那么系统提供了溢出的容器——缓冲区。 缓冲区在系统中的表现形式是多样的,高级语言定义的变量、数组、结构体等在运行时可以说都是保存在缓冲区内的,因此所谓缓冲区可以更抽象地理解为一段可读写的内存区域

面试题整理

风流意气都作罢 提交于 2019-11-27 16:07:09
&和&&的区别 &运算符有两种用法:(1)按位与;(2)逻辑与。&&运算符是短路与运算。逻辑与跟短路与的差别是非常巨大的,虽然二者都要求运算符左右两端的布尔值都是true整个表达式的值才是true。&&之所以称为短路运算是因为,如果&&左边的表达式的值是false,右边的表达式会被直接短路掉,不会进行运算。很多时候我们可能都需要用&&而不是&,例如在验证用户登录时判定用户名不是null而且不是空字符串,应当写为:username != null &&!username.equals(""),二者的顺序不能交换,更不能用&运算符,因为第一个条件如果不成立,根本不能进行字符串的equals比较,否则会产生NullPointerException异常。 int和Integer有什么区别? int的包装类就是Integer,从Java 5开始引入了自动装箱/拆箱机制,使得二者可以相互转换。 Java 为每个原始类型提供了包装类型: 原始类型: boolean,char,byte,short,int,long,float,double 包装类型:Boolean,Character,Byte,Short,Integer,Long,Float,Double String 和StringBuffer的区别 JAVA 平台提供了两个类:String和StringBuffer,它们可以储存和操作字符串

大牛是怎么思考设计SQL优化方案的?

会有一股神秘感。 提交于 2019-11-27 12:43:23
今天我们看看,大牛是怎么思考设计 MySQL 优化方案的,在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程。很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下公司。MySQL 最流行的关系型数据库管理系统,在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。 一、优化的哲学 注:优化有风险,涉足需谨慎 1.1.优化可能带来的问题? 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统; 优化手段本来就有很大的风险,只不过你没能力意识到和预见到; 任何的技术可以解决一个问题,但必然存在带来一个问题的风险; 对于优化来说解决问题而带来的问题,控制在可接受的范围内才是有成果; 保持现状或出现更差的情况都是失败! 2.优化的需求? 稳定性和业务可持续性,通常比性能更重要; 优化不可避免涉及到变更,变更就有风险; 优化使性能变好,维持和变差是等概率事件;

成为Java GC专家(5)—Java性能调优原则

南笙酒味 提交于 2019-11-27 12:34:58
这是“ 成为Java GC专家 ”系列的第五篇文章。在第一篇 深入浅出Java垃圾回收机制 中,我们已经学习了不同的GC算法流程、GC的工作原理、新生代(Young Generation)和老年代(Old Generation)的概念。你应该了解了JDK7中5种GC类型以及各种类型对应用程序的影响。 在第二篇 如何监控Java的垃圾回收 中,阐述了 JVM 是怎样实际执行垃圾回收的,我们怎样去监控GC以及哪些工具能让这个过程更高效。 第三篇 如何如何优化Java垃圾回收机制 中展示了一些基于真实案例的最佳实践。同时讲解了怎样尽量少地将对象放入老年代空间(Old Area),避免频繁地执行完全垃圾回收(Full GC)。还说明了如何设置GC的类型和内存大小。 在第四篇 Apache的MaxClients参数详解及其在Tomcat执行FullGC时的影响 中,解释了MaxClients参数的重要性以及它在垃圾回收过程中对整个系统性能的显著影响。 第五篇文章将讲解Java程序性能调优的原则,尤其是在这个过程中必要的知识以及判断你的程序是否需要调优。还会介绍调优过程中你可能遇到的问题。本文最后会给出一些建议,依据这些你能在对Java程序调优时做出更好的决策。 概述 并不是每个程序都需要调优。如果一个程序性能表现和预期一样,你不必付出额外的精力去提高它的性能。然而,在程序调试完成之后