optional

Guava 2:Basic utilities基本工具

别说谁变了你拦得住时间么 提交于 2020-11-06 05:43:11
一、引子 Guava的经典很大一部分原因来源于对于基础工具类的封装,使用这些类能够让我们的代码更加优雅且完善,这些类大部分都在com.google.common.base包下。 注:JDK有很多借鉴guava的地方,本文只讲解guava,如果jdk中有类似的实现,不必疑虑。 二、基本工具 按照官网介绍,Guava base包下有一些经典工具,如下: 2.1 Optional<T> 1.作用 在构造对象的时候就明确申明该对象是否可能为null,快速失败拒绝null值,可以避免空指针异常。 2.简单使用 1 /** 2 * @Description Optional:一个指向值对象引用的对象实例,使得构造对象时就明确申明是否支持null 3 * @author denny 4 * @date 2018/7/24 下午2:23 5 */ 6 public class OptionalTest { 7 public static void main(String[] args) { 8 Integer a = null ; 9 Integer b = 1 ; 10 // 支持null、非null 11 Optional<Integer> optionalA1 = Optional. fromNullable (a); 12 Optional<Integer> optionalA2 =

ABAP学习(14):ABAP面向对象

对着背影说爱祢 提交于 2020-11-04 05:22:44
ABAP面向对象 1、类的定义与实现 类定义: 语法:Class <类名> definition. Public section. Methods:<方法名> Importing <参数名> type <参数类型> Exporting <参数名> type <参数类型>. Endclass. 类实现: 语法:Class <类名> implementation. Public section. Method <方法名>. 实现具体代码块. Endmethod. Endclass. 2、抽象类 抽象类定义,抽象方法定义,使用Abstract关键字。 示例: " 抽象类定义 " 抽象类可以包含静态成员 class-data ,class-methods,class-events " 抽象类可以包含非抽象方法 " 抽象类可以不定义任何方法 " 抽象类 不可以create object 创建实例,但是可以用create object type ref to 创建抽象类引用,并接受子类实例 CLASS base_class DEFINITION ABSTRACT. " 抽象类 关键子abstract,基类 PUBLIC SECTION . METHODS :message ABSTRACT " 抽象方法 IMPORTING msg TYPE String OPTIONAL. METHODS

微服务海量日志怎么处理,推荐你试试这款工具....

我是研究僧i 提交于 2020-11-02 05:43:29
点击上方“ 方志朋 ”,选择“ 设为星标 ” 回复” 666 “获取新整理的面试文章 作者: CarpenterLee cnblogs.com/CarpenterLee/p/6637118.html 前面我们已经学会如何使用Stream API,用起来真的很爽,但简洁的方法下面似乎隐藏着无尽的秘密,如此强大的API是如何实现的呢?Pipeline是怎么执行的,每次方法调用都会导致一次迭代吗?自动并行又是怎么做到的,线程个数是多少?本节我们学习Stream流水线的原理,这是Stream实现的关键所在。 首先回顾一下容器执行Lambda表达式的方式,以ArrayList.forEach()方法为例,具体代码如下: // ArrayList.forEach() public void forEach (Consumer<? super E> action) { ... for ( int i= 0 ; modCount == expectedModCount && i < size; i++) { action.accept(elementData[i]); // 回调方法 } ... } 我们看到ArrayList.forEach()方法的主要逻辑就是一个for循环,在该for循环里不断调用action.accept()回调方法完成对元素的遍历。这完全没有什么新奇之处

数字图像处理&OpenCV学习

为君一笑 提交于 2020-11-01 14:30:14
OpenCV仿射变换——平移 OpenCV仿射变换——平移 OpenCV仿射变换——平移 公式及原理 OpenCV函数 实现代码 代码执行效果 公式及原理 定义原坐标为(x,y),平移后(xoffect,yoffset)后的坐标为(x * ,y * ): 也就是说,原来在(x,y)位置的像素值,被平移到(x ’ ,y ’ )位置处,为方便计算机运算,可以写成矩阵样式: 在OpenCV中的防射变换矩阵 M 就是: OpenCV函数 通过cv::getAffineTransform函数得到变换矩阵 cv::Mat getAffineTransform(cv::InputArray src, cv::InputArray dst) 输入 InputArray src:表示输入的三个点 InputArray dstL:表示输出的三个点 返回 cv::Mat对象 通过cv::warpAffine得到平移或旋转的cv::Mat对象 void warpAffine(InputArray src, OutputArray dst, InputArray M, Size dsize, int flags=INTER_LINEAR, int borderMode=BORDER_CONSTANT, const Scalar& borderValue=Scalar()); src : Source

【Java】Java8 新特性

筅森魡賤 提交于 2020-10-31 15:07:55
Java8 新特性 Lambda表达式 语法格式: Lambda表达式的使用 函数式接口 方法引用与构造器引用 方法引用 情况一:对象::实例方法 情况二:类::静态方法 情况三:类::实例方法 构造器引用 数组引用 强大的StreamAPI 创建Stream Stream的中间操作 筛选与切片 映射 排序 Stream的终止操作 匹配与查找 归约 收集 Optional类 创建Optional类对象的方法 判断Optional容器中是否包含对象 获取Optional容器的对象 Lambda表达式 语法格式: lambda表达式的本质:作为函数式接口的实例 Lambda表达式的使用 总结: 左边:Lambda形参列表的参数类型可省略(类型推断);如果形参列表只有一个参数,其()可以省略 右边:Lambda体应该使用一对{}包裹;如果Lambda体只有一条执行语句(可能是return语句),则{}和return可以省略 eg1:无参无返回值 原: 用lambda表达式写: eg2:Lambda需要一个参数,无返回值 语法格式3:基于类型推断,数据类型可以省略 语法格式4:Lambda只需要一个参数时,小括号可以省 语法格式5:Lambda需要两个或以上的参数,多条执行语句,并且可以有返回值 语法格式6:当lambda体只有一条,return与大括号若有,都可以省略 函数式接口

要去面试,先刷完这16道高频面试题,阿里,字节跳动,美团任你选

╄→гoц情女王★ 提交于 2020-10-31 07:29:48
1.JDK8 新特性 Lambda 表达式-也是函数编程的一种方式(将函数做为参数) 方法的应用,应用已有的java类对象的方法或者构造器。与Lambda表达式相结合,方法应用使得语言构造更加简洁,从而减少代码的冗余 默认方法,默认方法就是一个在接口里边有了一个实现的方法 新工具-新的编译工具,如:Nashorn引擎jjs,类依赖分析器jdeps Stream API - 把真正的函数式编程风格引入到Java中。 Date Time API - 加强对日期与时间的处理 Optional 类 - Optional 类已经成为Java 8 类库的一部分,用来解决空指针异常 Base64 Java8 内置了Base64 编码的编码器和解析器 2.hashMap 底层实现?当你put一个元素时,在底层结构是如何执行的? 首先需要知道在不同的JDK版本上面hashMap 的实现是有区别的: JDK8之前: 数组 + 链表 JDK8之后:数组 + 链表 + 红黑树 当你put元素时: 执行步骤: a.计算该元素的hashCode 值 b.通过计算它的hashCode 值去确定数组下标,数组的初始化16大小,增长因子为0.75 c.当存在哈希冲突是,相同的hashCode 值得到的数组下标就是会一样的,则单纯的数组则不满足,需要链表的支持 d.链表满足长度大于8时转成红黑树,那为啥8呢