- 博客(20)
- 收藏
- 关注
转载 java8-Stream原理
前言 java8新特性目前使用非常广泛,其中Stream更是最常用的特性,这篇文章将介绍Stream的原理,如果你现在还不怎么会用的话可以看一下菜鸟教 https://www.runoob.com/java/java8-streams.html,或者我的博客https://www.runoob.com/java/java8-streams.html。如果你想学更多实战中的运用最好 ...
2019-09-15 14:41:00
76
转载 FutrueTask原理及源码分析
1.前言 相信很多人了解到FutureTask是因为ThreadPoolExecutor.submit方法,根据ThreadPoolExecutor.submit的使用,我们可以先猜一下FutureTask的原理。 public static void main(String[] args) throws ExecutionException, InterruptedExcept...
2019-08-11 19:16:00
123
转载 jvm是怎样调用方法的
jvm内部有五种调用方法的指令 invokeinterface 用以调用接口方法,在运行时搜索一个实现了这个接口方法的对象,找出适合的方法进行调用。(Invoke interface method) invokevirtual 指令用于调用对象的实例方法,根据对象的实际类型进行分派(Invoke instance method; dispatch based on c...
2019-02-03 12:07:00
100
转载 从jvm角度来解析java语法糖
java有很多语法糖,比如自动拆箱,自动装箱,foreach等等,这些原理相信每一个入门教程里都有讲,但是我相信不是每一个人 都通过查看这些语法糖的字节码来确认这些原理,因为我也是现在才想看一下。 1.自动拆箱和自动装箱 public void test() { Integer integer = 1; int i = integer; } ...
2019-02-03 12:05:00
57
转载 从JVM的角度解析String
1.字符串生成过程 我们都知道String s = "hello java";会将“hello java”放入字符串常量池,但是从jvm的角度来看字符串和三个常量池有关,class常量池,运行时常量池,全局字符串常量池(也就是常说的字符串常量池) 第一个是class的常量池,看一下下面这个代码 public class StringTest { publ...
2019-01-24 16:45:00
117
转载 两个字符串相加究竟发生了什么
首先从一张图开始,图中对字符串相加和StringBuild.append()做了性能对比。 有人说字符串每次相加都新建了一个对象所以慢,事情真的是这样吗? 先要了解真相最好的方法当然是反编译了,使用 javap -c 反编译的结果 public void test(); Code: 0: ldc #2 ...
2018-12-22 18:02:00
234
转载 简单工厂搭配策略模式
简单介绍一下这两个设计模式。 策略模式的思想就是,当你要根据特定场景使用特定算法时,可以把用一个接口提供这个算法,不同的场景对他进行不同的实现。主流程通过不同的实现类 来完成这个功能。 简单工厂就是根据一个type返回对应的对象。 简单工厂+策略模式就可以实现根据调用方传过来的type通过简单工厂获取到对数据操作的实现类,然后操作数据返回,当新增一个type时,可以很清晰解决,避...
2018-12-20 20:09:00
77
转载 java返回集合为null还是空集合
个人认为在自己写接口时,需要返回集合时返回一个空集合,比如mybatis查询如果返回一个集合,结果为空时也会返回一个空集合而不是null。 那么这样有什么好处呢?最大的好处就是调用方不用在判断是否为null,可以直接用,因为不用抛空指针。 当然这也有缺点,如果返回Lists.newArrayList();或者new ArrayList();这会新建一个对象,而这个对象很可能是没...
2018-12-19 22:56:00
906
转载 idea常用快捷键
搜索功能 两下shift:查找类 ctrl+F:在当前文件查找 ctrl+shift+F:全局查找 ctrl+r:当前文件替换 ctrl+shift+r:全不文件替换 ctrl+shift+n:全局查找文件 重构功能 ctrl+shift+m:提取方法 ctrl+shift+f:提取成员变量 ctrl+shift+v:提取局部变量 ctrl+shift+c:提取...
2018-09-08 11:08:00
50
转载 (7)Stream简介
流的个人理解: 怎样获得流: 怎样处理流: 中间操作和终端操作介绍: 中间操作和终端操作的使用: 流的个人理解: Stream也就是流,他和IO流不一样,他是java8诞生的东西,我对他的理解就是一个更为高级的容器,他可以轻易的对立面存储的数据进行各种各样的操作,比如过滤,转换,迭代等等。 流对集合,数组等进行了进一步的封装,使开发人员更容...
2018-07-29 15:34:00
72
转载 (6)函数式接口的简单使用
突然间又来了一个新需求,比如,我想要所有人的名字,不要其他信息。 packagecom.qunar.hotel.java8; importcom.google.common.collect.ImmutableList; importcom.google.common.collect.Lists; importorg.juni...
2018-07-28 20:02:00
67
转载 (5)函数式接口的简单使用之Predicate
我们经常操作List,例如现在有一个功能要求在所有人中筛选出年龄在20岁以上的人。 publicclassMyTest { privatefinalList<Person> allPersonList; { Person p1 =newPerson("风清扬",42); ...
2018-07-28 20:00:00
61
转载 (4)函数式接口
java8之前,已经有一些函数式接口了,比如comparator,Thread,Runable,看到这里,可能已经忘了什么是函数式接口了。 函数式接口:只有一个抽象方法的接口叫做函数式接口。 函数式接口的存在使得lambda表达式,方法引用,只有一个方法,编译器非常方便对类型做判断,既然函数式接口这么好, 那么java8怎么可能全部让开发人员自己写函数式接口。 java.util...
2018-07-28 20:00:00
55
转载 (3)方法引用
首先定义一个接口 publicinterfaceCalculation<T> { publicT colculate(T t1, T t2); } 这个接口只有一个方法也就是计算,下面展示三种使用这个接口的方式。 //匿名内部类 @Test ...
2018-07-28 19:59:00
56
转载 (2)传递代码
java8之前,java只允许传基础数值或者对象的引用,而现在java允许传代码了。 接下来还是以Comparator来举例。 //匿名内部类 @Test publicvoidjava8Test() { Person p1 =newPerson(22); Person p2 =newPerson(23); ...
2018-07-28 19:58:00
64
转载 (1)java8初体验
很多博客都拿Comparator,我也贴一下吧。 java8以前的匿名内部类用来排序。 //匿名内部类 @Test public void java8Test() { Person p1 = new Person(22); Person p2 = new Person(23); Person p3 = new Person(21...
2018-07-28 19:57:00
48
转载 LeetCode第五题:Longest Palindromic Substring
Given a strings, find the longest palindromic substring ins. You may assume that the maximum length ofsis 1000. Example 1: Input: "babad" Output: "bab" Note: "aba" is also a valid answer....
2018-07-15 20:42:00
54
转载 LeetCode第三题:Longest Substring Without Repeating Characters
Given a string, find the length of thelongest substringwithout repeating characters. 给定一个字符串,找到最长无重复子串。 Examples: Given"abcabcbb", the answer is"abc", which the length is 3. Given"bbbbb"...
2017-12-24 14:20:00
52
转载 LeetCode第二题:Add Two Numbers
You are given twonon-emptylinked lists representing two non-negative integers. The digits are stored inreverse orderand each of their nodes contain a single digit. Add the two numbers and ret...
2017-12-24 13:54:00
49
转载 LeetCode第一题:Two Sum
Given an array of integers, returnindicesof the two numbers such that they add up to a specific target. You may assume that each input would haveexactlyone solution, and you may not use the...
2017-12-24 13:25:00
53
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人