随笔分类 - Java基础
摘要:打开开发环境服务器(我的服务器应用是单独部署的,几乎没有人访问),偶然间看到命令窗口报异常,java.lang.OutOfMemoryError:heap space,还包括一大堆的其他错误——后面发现其他错误都是内存溢出引起的 用jconsole和jvisualvm尝试打开服务器,行不通——堆内存
阅读全文
摘要:instanceof,两个单词组成,instance of,意为, "… 是 …的实例"。 本身包含null值的判断。但是有不少人,先来个 obj != null,然后来个 obj instanceof Type
阅读全文
摘要:反序列化的过程: 读取二进制文件; 读取序列化的对象,读取过程中虚拟机会在当前工程当中寻找序列化的目标类(反序列化类): 如果没找到报ClassNotFoundException; 如果找到了目标类(立即加载该类),但是反序列化类的ID和序列化类的ID不同,则报InvalidClassExcepti
阅读全文
摘要:在异常调用链当中:异常对象创建顺序(栈内进行),和异常堆栈链显示顺序恰好相反(出栈顺序) 源码: 执行结果: 以上:上半部分是栈内正常执行顺序;下半部分的异常信息顺序。
阅读全文
摘要:异常处理的优势【存在意义】:异常检测者有检测出异常的能力,但不知道在出现该异常的情况下应该怎么处理。故库方法一般会抛出异常给调用者来处理。所以总结而言,异常处理的优势就是,将处理错误(调用者处理)从检测错误(被调用者检测)中分离出来。 异常的分类: 系统错误:内部系统错误,虚拟机抛出。免检。 异常:
阅读全文
摘要:公司项目代码有个奇葩的泛型处理现象,用代码模拟,大致如下: public class Response<T>{}; public class LoginInfo{}; 服务器A中的某个方法返回Response类型对象,然后容器放的是LoginInfo类型的对象,但是方法返回类型里没有声明具体类型;
阅读全文
摘要:java.lang.String类内存问题详解 字符串理解的难点在于其在堆内存空间上的特殊性,字符串String对象在堆内存上有两种空间: 字符串池(String pool):特殊的堆内存,专门存放String对象,且不会有重复的值。 普通堆内存空间:此处的String对象一般是通过调用new操作符
阅读全文
摘要:hashCode:说白了,简单的就看做一个函数,但是该函数有可能出现:对于某个x值,存在不止一个y值与之对应。这种情况就叫哈希碰撞。 那么: 1、如果hashCode相等,两个对象不一定是同一个对象(比如,两个对象的哈希值出现了哈希碰撞现象),这就证明了hashCode相同的两个对象,未必满足equ
阅读全文
摘要:ArrayList的数据结构主体是Object[]数组,数组对象在内存的位置是成块成块的。 1、对数组进行非尾部修改,会引发System.arrayCopy()行为。这就需要对后半部要移动的对象进行内存位置的调整,这是性能瓶颈最关键的地方之一; 2、对数组进行非尾部修改,如果要增加数组长度,倘若要增
阅读全文
摘要:一、ArrayList的扩容机制 1、扩容的计算方式是向右位移,即:newSize = this.size + (this.size>>1)。向右位移,只有在当前值为偶数时,才是除以2;奇数时是抹去最后一位,也就是先减1,然后除以2;附上源码,如下图: 2、扩容的上限:ArrayList的长度并不是
阅读全文
摘要:回调(diao):往回调用,反向调用。 英文 call back。call:调用,back:返回,往返。 回调的意思就是杀个回马枪。。。。。。 回调(callback),既然是往回调用,那自然有一个正向调用。也就是说,先有一个call,然后有一个callback。 回调的过程: 类A的a()方法调用
阅读全文

浙公网安备 33010602011771号