x+=1与x=x+1一样的效果执行一次x=x+1,就等于给x重新赋了值,这个值就是x+1例如:int x=1;x+=1;最后x的值是2x+=1一般在循环下使用,能发挥它的最大的作用.例如:while(true){if(x>10)break;x+=1;}…
在JVM中内存一共有3种:Heap(堆内存),Non-Heap(非堆内存) [3]和Native(本地内存). [1] 堆内存是运行时分配所有类实例和数组的一块内存区域.非堆内存包含方法区和JVM内部处理或优化所需的内存,存放有类结构(如运行时常量池.字段及方法结构,以及方法和构造函数代码).本地内存是由操作系统管理的虚拟内存.当一个应用内存不足时就会抛出java.lang.OutOfMemoryError 异常. [1] 问题 表象 诊断工具 内存不足 OutOfMemoryError Jav…
内存泄漏定义(memory leak):一个不再被程序使用的对象或变量还在内存中占有存储空间. 一次内存泄漏似乎不会有大的影响,但内存泄漏堆积后的后果就是内存溢出.内存溢出 out of memory :指程序申请内存时,没有足够的内存供申请者使用,或者说,给了你一块存储int类型数据的存储空间,但是你却存储long类型的数据,那么结果就是内存不够用,此时就会报错OOM,即所谓的内存溢出.二者的关系: 内存泄漏的堆积最终会导致内存溢出 内存溢出就是你要的内存空间超过了系统实际分配给你的空间,此时…
原址:http://wangle.iteye.com/blog/196972 工厂模式, 工厂方法模式,单例模式, 外观(Facade)模式, 观察者(Observer)模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些. 其他的模式我找了一下,都列出来了. ====================== Java常用的设计模式 创建型模式 1.FACTORY—追MM少不了请吃饭了,麦当劳的鸡翅和肯德基…
通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习. Java中的合并与重组上部分链接:https://www.cnblogs.com/youruike1/p/12376482.html 推力 如果你尝试将重新建立基础的主分支推送回远程存储库,Git将阻止你这样做,因为它与远程主分支冲突. 但是,你可以通过传递--force标志来强制执行推送,如下所示: # Be very careful with this command! git push --fo…
package com.study.oop.day01; /**  * 如果某个方法是静态 的,它的行为就不具有多态性  * @author LuHongGang  * @date 2017年6月5日  * @time 下午4:19:21  * @since 1.0  * 构造函数并不具有多态性,它们实际上是static方法,  * 只不过该static声明是隐式的.因此,构造函数不能够被override.  */ public class staticDemo { public static…
懒汉模式和饿汉模式: public class Demo { //private static Single single = new Single();//饿汉模式 private static Single single2 = null;//饿汉模式 public Demo() { if (single2 == null) {//1 single2 = new Single();//2 } } } 在多线程环境下,代码1和代码2之间,这里会有线程安全问题,线程A和线程B同时到代码1和代码2之…
关于RSA的基础过程介绍 下文中的 k 代表自然数常数,不同句子,公式中不一定代表同一个数 之前接触RSA,没有过多的思考证明过程,今天有感而发,推到了一遍 假设公钥 (e, N) , 私钥 (d, N) ,那么 ed =  k * g (N) + 1 , g是欧拉函数,假设 N = p * q ,p 和 q 都是 大素数, 那么 g (N) = ( p - 1 ) * ( q - 1 ) , k 是自然数 假设明文是 M , 那么 密文 C = M ^ e (mod N) 密文再次运算的结果是…
转自http://blog.csdn.net/alanzyy/article/details/8591534 在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: 对于除数a和被除数b (a=0), (1)如果二者均为int型(long也是int型),结果会抛出异常:java.lang.ArithmeticException: / by zero (2)如果其中有一个为double或者float型,结果则是Infinity 另外,对于Double和Float的…
首先要明白一点向上转型和向下转型他们都是建立在继承的基础上. 一.向上转型 子类到父类的转换通常称作向上转型,通俗的说就是定义父类对象指向子类对象. 下面通过一个例子来深入理解向上转型. //定义一个抽象的动物父类 public abstract class Animal { public abstract void Play();//此处需注意抽象方法没有方法体 } //定义一个狗狗类,继承自Animal public class Dog extends Animal { //重写父类的Pla…
有这样一个问题,异常处理大家应该都不陌生,类似如下代码: public class Test { public static void main(String[] args) { int d1 = 0; int d2 = 1; try { d2--; d1 = 1 / d2; System.out.println("try"); }catch (Exception e){ System.out.println("Catch An Exception."); }fin…
在从事web开发工作中,经常需要对本地某一个目录下的文件进行处理,而在这之前,我们需要做的就是获取到这个目录下的文件. String filepath = "D:\file";//D盘下的file文件夹的目录 File file = new File(filepath);//File类型可以是文件也可以是文件夹 File[] fileList = file.listFiles();//将该目录下的所有文件放置在一个File类型的数组中 如果只需要处理文件,可以用一个新的File类型的数…
java.lang.OutOfMemoryError: Java heap space // TODO Auto-generated method stub Vector v = new Vector(10); for (int i = 1; i<1000000000; i++) {Object o = new Object(); v.add(o); o = null; } 因为每一次生成一个新的对象,都会放入到堆区(heap)里面,所以堆区的空间肯定就不够了. 那就只能去修改循环的次数…
HttpServletRequest request //获取的是ROOT项目在tomcat下的路径 方法1: String path = request.getSession().getServletContext().getRealPath("/"); path值如下: C:\develop\apache-tomcat-7.0.75\webapps\ROOT\ 方法2: String path=System.getProperty("catalina.home"…
最近在学习java的语法,发现java中两个字符串某些情况下不能用==这个来判断,比如自己定义的类中有String属性,那么就不能用==判断两个是否相等.这才开始比较C#和Java在这里的区别,最后发现区别不大,只有一个地方有一点区别. 一.C#中Equals(),==区别 C#代码 // 1) string类型 Console.WriteLine("1)"); string s1 = "abc"; string s2 = "abc"; stri…
Java中的方法 一:什么是方法: 所谓方法,就是用来解决一类问题的代码的有序组合,是一个功能模块. 学过C语言或者其他语言的应该都知道函数这个东西,在Java中,其实方法就是函数,只不过叫法不同,在Java中,函数被称为方法. 二:如何定义Java中的方法: 一般情况下,定义一个方法的语法是: 其中: 访问修饰符:方法允许被访问的权限范围, 可以是 public.protected.private 甚至可以省略 ,其中 public 表示该方法可以被其他任何代码调用,其他几种修饰符的使用在后面…
NO.1 java.lang.NullPointerException 这个异常比较容易遇到,此异常的解释是“程序遇上了空指针”,简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,刚开始学习编程的朋友经常犯这个错误,当然我也不例外,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的,所以还…
1.java.lang.nullpointerexception程序遇上空指针 这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,…
问题:请讲下mysql中undo log的作用 分析:mysql中有很多日志,例,bin log undo log redo log,要弄清楚这些日志的作用,就要了解这些日志出现的背景及要解决的问题: 回答要点: 主要从以下几点去考虑 1.undo log产生的背景: 2.undo log的作用: 开发中经常使用到mysql数据库,用mysql数据库时在新建库或表的时候,最常使用的存储引擎是innodb,在innodb中经常提到事务,那么事务是怎么实现的,可参见:<java面试一日一题:mysq…
本文出处:http://www.cnblogs.com/wy123/p/7003157.html 最近无意间看到一个MySQL分页优化的测试案例,并没有非常具体地说明测试场景的情况下,给出了一种经典的方案,因为现实中很多情况都不是固定不变的,能总结出来通用性的做法或者说是规律,是要考虑非常多的场景的,同时,面对能够达到优化的方式要追究其原因,同样的做法,换了个场景,达不到优化效果的,还要追究其原因.个人对此场景在不用情况表示怀疑,然后自己测试了一把,果然发现一些问题,同时也证实了一些预期的想法.…
ava中字符串对象创建有两种形式,一种为字面量形式,如String str = "droid";,另一种就是使用new这种标准的构造对象的方法,如String str = new String("droid");,这两种方式我们在代码编写时都经常使用,尤其是字面量的方式.然而这两种实现其实存在着一些性能和内存占用的差别.这一切都是源于JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池. 工作原理 当代码中出现字面…
原文:http://blog.csdn.net/luoweifu/article/details/46613015 作者:luoweifu 转载请标名出处 <编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程>一文详细讲述了线程.进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础.本文将接着讲一下Java线程同步中的一个重要的概念synchronized. synchronized是Java中的关键字,是一种同步锁.它修饰的对象有以下几种: 1. 修饰一个代码块,被修饰…
1. 一个简单的swing public class Test(){ public static void main(String[] args){ JFrame frame = new JFrame(); JPanel panel = new JPanel(); JTextArea textArea = new JTextArea(); panel.setLayout(new GridLayout()); textArea.setText("test"); //当TextArea里的…
1. Java.lang.NullPointerException  这个异常大家肯定都经常遇到,异常的解释是"程序遇上了空指针",简单地说就是调用了未经初始化的对象或者是不存在的对象,这个错误经常出现在创建图片,调用数组这些操作中,比如图片未经初始化,或者图片创建时的路径错误等等.对数组操作中出现空指针,很多情况下是一些刚开始学习编程的朋友常犯的错误,即把数组的初始化和数组元素的初始化混淆起来了.数组的初始化是对数组分配需要的空间,而初始化后的数组,其中的元素并没有实例化,依然是空的…
在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题.通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利.本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景. [@more@] 认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个队列在数据结构中所起的作用大致如下图所示: 从上图我们可以很清楚看到,通过一个共享的队列,可以使得数据由队列的一端输…
之前曾经有讲过在heap size<=3G的情况下完全不要考虑CMS GC,在heap size>3G的情况下也优先选择ParallelOldGC,而不是CMS GC,只有在暂停时间无法接受的情况下才考虑CMS GC(不过当然,一般来说在heap size>8G后基本上都得选择CMS GC,否则那暂停时间是相当吓人的,除非是完全不在乎响应时间的应用),这其实也是官方的建议(每年JavaOne的GC Tuning基本都会这么讲). 为什么给了一个这么“武断”的建议呢,不是我对CMS GC有…
java中传值及引伸深度克隆的思考 大家都知道java中没有指针.难道java真的没有指针吗?句柄是什么?变量地址在哪里?没有地址的话简直不可想象! java中内存的分配方式有两种,一种是在堆中分配,一种是在堆栈中分配,所有new出来的对象都是在堆中分配的,函数中参数的传递是在栈中分配的.通常情况下堆的内存可以很大,比如32位操作系统中的虚拟内存都可以被堆所使用(当内存紧张的时候甚至硬盘都可以是堆的存储空间),而堆栈的内存分配是有限的. 这和c++中内存分配差不多(c++中还要有另一种方式用于全…
产生时间 Java程序运行时,有时会产生JavaCore及HeapDump文件,它一般发生于Java程序遇到致命问题的情况下. 有时致命问题发生后,Java应用不会死掉,还能继续运行: 但有时致命问题发生,Java进程会死掉: 为了能够保留Java应用发生致命错误前的运行状态,JVM在死掉前产生两个文件,分别为JavaCore及HeapDump文件. 有何区别 JavaCore是关于CPU的,而HeapDump文件是关于内存的. JavaCore文件主要保存的是Java应用各线程在某一时刻的运行…
首先要说明的是,此文章转载自 http://blog.csdn.net/zzhangxiaoyun/article/details/7518917 谢谢作者.是本人认为对方法区解释得比较清楚的一篇文章了. 另外,这里ps一下,Class对象是存放在堆区的,不是方法区!这点很多人容易犯错.类的元数据(元数据并不是类的Class对象!Class对象是类加载的最终产品,类的方法代码,变量名,方法名,访问权限,返回值等等都是在方法区的)才是存在方法区的!Class对象可以认为是类的反射对象,所有的反射相…
先看一道题 public class HasStatic{ private static int x=100; public static void main(String args[]){ HasStatic hs1=new HasStatic(); hs1.x++; HasStatic hs2=new HasStatic(); hs2.x++; hs1=new HasStatic(); hs1.x++; HasStatic.x--; System.out.println("x="+…