草庐IT

original_options

全部标签

Optional源码解析与实践

1导读NullPointerException在开发过程中经常遇到,稍有不慎小BUG就出现了,如果避免这个问题呢,Optional就是专门解决这个问题的类,那么Optional如何使用呢?让我们一起探索一下吧!2源码解析2.1Optional定义Optional类是Java8为了解决null值判断问题而创建的容器类,在java.util下,使用Optional类可以避免显式的null值判断,避免null导致的NullPointerException。首先,Optional是一个容器,它可以保存类型T的值,也可以为null的容器对象。Optional容器只能存一个值。2.2Optional的属性

Optional源码解析与实践

1导读NullPointerException在开发过程中经常遇到,稍有不慎小BUG就出现了,如果避免这个问题呢,Optional就是专门解决这个问题的类,那么Optional如何使用呢?让我们一起探索一下吧!2源码解析2.1Optional定义Optional类是Java8为了解决null值判断问题而创建的容器类,在java.util下,使用Optional类可以避免显式的null值判断,避免null导致的NullPointerException。首先,Optional是一个容器,它可以保存类型T的值,也可以为null的容器对象。Optional容器只能存一个值。2.2Optional的属性

Go语言实践模式 - 函数选项模式(Functional Options Pattern)

什么是函数选项模式大家好,我是小白,有点黑的那个白。最近遇到一个问题,因为业务需求,需要对接三方平台.而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.为此我们封装了一个独立的包xxx-go-sdk以便维护和对接使用.其中核心的部分是自定义HTTPClient,如下:typeClientstruct{}func(c*Client)do(){//实现统一的加密和签名逻辑//统一调用net/http}//订单列表接口func(c*Client)OrderList(){c.do()}//订单发货接口func(c*Client)OrderDelivery(){c.do()}//...其

Go语言实践模式 - 函数选项模式(Functional Options Pattern)

什么是函数选项模式大家好,我是小白,有点黑的那个白。最近遇到一个问题,因为业务需求,需要对接三方平台.而三方平台提供的一些HTTP(S)接口都有统一的密钥生成规则要求.为此我们封装了一个独立的包xxx-go-sdk以便维护和对接使用.其中核心的部分是自定义HTTPClient,如下:typeClientstruct{}func(c*Client)do(){//实现统一的加密和签名逻辑//统一调用net/http}//订单列表接口func(c*Client)OrderList(){c.do()}//订单发货接口func(c*Client)OrderDelivery(){c.do()}//...其

使用Optional优雅避免空指针异常

本文已收录至Github,推荐阅读?Java随想录微信公众号:Java随想录目录摘要Optional介绍Optional使用创建Optional对象orElse()与orElseGet()orElse()和orElseGet()的区别map()与flatMap()filter()总结摘要空指针异常(NullPointerException)可以说是Java程序员最容易遇到的问题了,影响说大不大,说小也不小。为了解决这个问题,Java8版本中推出了Optional类。Optional类是一个容器对象,它可以包含或不包含非空值。使用Optional类可以有效地避免空指针异常的问题。在本篇博客中,我

使用Optional优雅避免空指针异常

本文已收录至Github,推荐阅读?Java随想录微信公众号:Java随想录目录摘要Optional介绍Optional使用创建Optional对象orElse()与orElseGet()orElse()和orElseGet()的区别map()与flatMap()filter()总结摘要空指针异常(NullPointerException)可以说是Java程序员最容易遇到的问题了,影响说大不大,说小也不小。为了解决这个问题,Java8版本中推出了Optional类。Optional类是一个容器对象,它可以包含或不包含非空值。使用Optional类可以有效地避免空指针异常的问题。在本篇博客中,我

Maven 中<optional>true</optional>和<scope>provided</scope>之间的区别

传递依赖依赖管理是maven提供的主要功能之一,无论我们需要什么依赖,只需将它们添加到POM.xml中,在构建或运行时所有必要的类和资源都会自动添加到项目的classpath中。Maven中的依赖是有传递(Transitive)性的,默认会包含传递的依赖,这样就不用手动引用每一个依赖了。比如下面这个依赖关系中,A依赖B,B依赖了C……,如果你依赖A的话,就会自动包含A/B/C/D/EA├──B│└──C│└──D└──E└──D但是传递依赖也带来了一个问题,比如下面这个例子:A├──B│└──C│└──D2.0└──E└──D1.0由于传递依赖,D2.0 和 D1.0 都会被加入ClassPa

Maven 中<optional>true</optional>和<scope>provided</scope>之间的区别

传递依赖依赖管理是maven提供的主要功能之一,无论我们需要什么依赖,只需将它们添加到POM.xml中,在构建或运行时所有必要的类和资源都会自动添加到项目的classpath中。Maven中的依赖是有传递(Transitive)性的,默认会包含传递的依赖,这样就不用手动引用每一个依赖了。比如下面这个依赖关系中,A依赖B,B依赖了C……,如果你依赖A的话,就会自动包含A/B/C/D/EA├──B│└──C│└──D└──E└──D但是传递依赖也带来了一个问题,比如下面这个例子:A├──B│└──C│└──D2.0└──E└──D1.0由于传递依赖,D2.0 和 D1.0 都会被加入ClassPa

Protobuf Options 自定义插件使用

ProtoOptions简介使用protobuf的options,我们可以添加我们自己的option,然后根据option生成代码添对proto中的参数进行处理,例如添加message的校验。extension能够对已经存在的消息进行扩展,这种扩展只是动态增加字段,而没有增加接口。例子:扩展protobuf的FieldOptionsmessageMyFileOptions{optionalboolok=1;}//扩展protobuf的MessageOptionsextendgoogle.protobuf.FileOptions{optionalMyFileOptionsmy_file_opti

Protobuf Options 自定义插件使用

ProtoOptions简介使用protobuf的options,我们可以添加我们自己的option,然后根据option生成代码添对proto中的参数进行处理,例如添加message的校验。extension能够对已经存在的消息进行扩展,这种扩展只是动态增加字段,而没有增加接口。例子:扩展protobuf的FieldOptionsmessageMyFileOptions{optionalboolok=1;}//扩展protobuf的MessageOptionsextendgoogle.protobuf.FileOptions{optionalMyFileOptionsmy_file_opti