Java1.8新特性
-
Java1.8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法
-
Lambda表达式,是一种简洁的语法,实际上是一个匿名函数。所有的lambda表达式都是用新的lambda运算符->。运算符将表达式分为两部分,左边指定输入参数,右边是lambda主体。Lambda表达式返回右边表达式的结果。
-
方法和构造函数引用:Java8允许使用 :: 关键字来传递方法或者构造函数引用
-
函数式接口:函数式接口是指仅仅只包含一个抽象方法的接口,一般是和lambda表达式配合使用
-
访问局部变量,我们可以直接在lambda表达式中访问外层的局部变量
-
hashmap中添加了红黑树结构,在冲突较多的情况下提高了查询时的性能
-
stream流的扩展以及DATE API扩展
一次网络请求的具体过程是怎么样的
https://my.oschina.net/u/4248053/blog/4299070
Stream相关操作
- 查找流中满足条件的第一个元素
【集合】.stream() .filter(item -> 【条件】) .findAny() .get();
【集合】.stream() .filter(item -> 【条件】) .findFirst() .get();
- 内循环
【集合】.stream() .forEach(item -> { 【代码】 });
- 将集合转换为MAP
// Function.identity() 当前实体 【集合】.stream() .collect(Collectors.toMap(item -> 【键值】), Function.identity()));
- 集合类型转换 【集合】.stream() .map(item -> 【代码】) .collect(Collectors.toList());
- 求和 long result = 【集合】.stream() .map(item -> { 【代码】 }) .reduce(0, Integer::sum);
- 分组
【集合】.stream() .map(item -> 【代码】) .collect(Collectors.groupingBy(Record::getUserId));
【集合】.stream() .map(item -> 【代码】) .collect(Collectors.groupingBy(Record::getUserId, Collectors.reducing(BigDecimal.ZERO, Record::getOutput, BigDecimal::add)));
- 排序(取前N个对象)
【集合】.stream() .map(item -> 【代码】) .sorted(Comparator.comparing(Expression::getPriority)) .collect(Collectors.toList());
【集合】.stream() .map(item -> 【代码】) .sorted((x, y) -> y.getOutput().compareTo(x.getOutput())) .limit(10) .collect(Collectors.toList());
- 判断所有为真或假
【集合】.stream() .map(item -> update(item)) .allMatch(result -> 1 == result);
restful式接口了解过吗?有什么好处
REST是英文representational state transfer(表象性状态转变)或者表述性状态转移;Rest是web服务的一种架构风格;它是一种设计风格
Rest架构的主要原则
网络上的所有事物都被抽象为资源
每个资源都有一个唯一的资源标识符
同一个资源具有多种表现形式(xml,json等)
对资源的各种操作不会改变资源标识符
所有的操作都是无状态的
符合REST原则的架构方式即可称为RESTful
RESTful架构优点:
- 前后端分离,减少流量
- 安全问题集中在接口上,由于接收json格式,防止了注入型等安全问题
- 前端无关化,后端只负责数据处理,前端表现方式可以是任何前端语言(android,ios,html5)
- 前端和后端人员更加专注于各自开发,只需接口文档便可完成前后端交互,无需过多相互了解
- 服务器性能优化:由于前端是静态页面,通过nginx便可获取,服务器主要压力放在了接口上
来源:oschina
链接:https://my.oschina.net/u/4248053/blog/4304426