摘要: jvm内部有五种调用方法的指令 看两个类 两个类对应的方法表 animal的方法表 bird方法表 如果重写父类的方法,父类方法的index和子类的一致,方便查找。 由上可知,使用继承或实现会让程序变慢,因为需要查方法表,但是没有必要因为慢而放弃面向对象良好的设计,因为这个时间很短并且jvm还有针对 阅读全文
posted @ 2019-02-03 12:07 刘皓lh 阅读(646) 评论(0) 推荐(0) 编辑
摘要: java有很多语法糖,比如自动拆箱,自动装箱,foreach等等,这些原理相信每一个入门教程里都有讲,但是我相信不是每一个人 都通过查看这些语法糖的字节码来确认这些原理,因为我也是现在才想看一下。 1.自动拆箱和自动装箱 字节码非常清楚的描述了装箱拆箱过程,关于Interger还有一个知识点就是In 阅读全文
posted @ 2019-02-03 12:05 刘皓lh 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1. 字符串生成过程 我们都知道String s = "hello java";会将“hello java”放入字符串常量池,但是从jvm的角度来看字符串和三个常量池有关,class常量池,运行时常量池,全局字符串常量池(也就是常说的字符串常量池) 第一个是class的常量池,看一下下面这个代码 如 阅读全文
posted @ 2019-01-24 16:45 刘皓lh 阅读(862) 评论(0) 推荐(0) 编辑
摘要: 首先从一张图开始,图中对字符串相加和StringBuild.append()做了性能对比。 有人说字符串每次相加都新建了一个对象所以慢,事情真的是这样吗? 先要了解真相最好的方法当然是反编译了,使用 javap -c 反编译的结果 这个时候你可能有疑问,这个循环执行了50000次,创建了50000个 阅读全文
posted @ 2018-12-22 18:02 刘皓lh 阅读(2743) 评论(0) 推荐(1) 编辑
摘要: 简单介绍一下这两个设计模式。 策略模式的思想就是,当你要根据特定场景使用特定算法时,可以把用一个接口提供这个算法,不同的场景对他进行不同的实现。主流程通过不同的实现类 来完成这个功能。 简单工厂就是根据一个type返回对应的对象。 简单工厂+策略模式就可以实现根据调用方传过来的type通过简单工厂获 阅读全文
posted @ 2018-12-20 20:09 刘皓lh 阅读(325) 评论(0) 推荐(0) 编辑
摘要: 个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。 那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用,因为不用抛空指针。 当然这也有缺点,如果返回Lists.newArrayList 阅读全文
posted @ 2018-12-19 22:56 刘皓lh 阅读(8419) 评论(0) 推荐(2) 编辑
摘要: 搜索功能 两下shift:查找类 ctrl+F:在当前文件查找 ctrl+shift+F:全局查找 ctrl+r:当前文件替换 ctrl+shift+r:全不文件替换 ctrl+shift+n:全局查找文件 重构功能 ctrl+shift+m:提取方法 ctrl+shift+f:提取成员变量 ctr 阅读全文
posted @ 2018-09-08 11:08 刘皓lh 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 流的个人理解: 怎样获得流: 怎样处理流: 中间操作和终端操作介绍: 中间操作和终端操作的使用: 流的个人理解: 怎样获得流: 怎样处理流: 中间操作和终端操作介绍: 中间操作和终端操作的使用: 中间操作和终端操作介绍: 中间操作和终端操作的使用: 流的个人理解: Stream也就是流,他和IO流不 阅读全文
posted @ 2018-07-29 15:34 刘皓lh 阅读(379) 评论(0) 推荐(0) 编辑
摘要: 突然间又来了一个新需求,比如,我想要所有人的名字,不要其他信息。 package com.qunar.hotel.java8; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists 阅读全文
posted @ 2018-07-28 20:02 刘皓lh 阅读(571) 评论(0) 推荐(0) 编辑
摘要: 我们经常操作List,例如现在有一个功能要求在所有人中筛选出年龄在20岁以上的人。 public class MyTest { private final List<Person> allPersonList; { Person p1 = new Person("风清扬", 42); Person 阅读全文
posted @ 2018-07-28 20:00 刘皓lh 阅读(1308) 评论(3) 推荐(0) 编辑