optional

Protobuffer 官方文档学习

戏子无情 提交于 2020-05-01 19:26:40
Protobuffer proto3 proto3 比 proto2 新,所以一般选用proto3进行构建项目。 下面英文版可以在 Language Guide (proto3) 上看到。 假设您要定义搜索请求消息格式,其中每个搜索请求都有一个查询字符串。 syntax = "proto3"; message SearchRequest { string query = 1; int32 page_number = 2; // Which page number do we want? int32 result_per_page = 3; // Number of results to return per page. } 该文件的第一行指定您使用的是proto3语法:如果不这样做,协议缓冲区编译器将假定您正在使用proto2。 这必须是文件的第一个非空,非注释行。 指定类型 在上述示例中,所有字段都是标量类型:两个整数(page_number和result_per_page)和一个字符串(查询)。 但是,您也可以为字段指定复合类型,包括枚举和其他消息类型。 分配标签 消息定义中的每个字段都有唯一的编号标签。这些标签用于以消息二进制格式标识字段,并且在使用消息类型后不应更改它们。 请注意,值范围为1到15的标签需要一个字节进行编码,包括标识号和字段的类型

.net中的WebForm引人MVC的控制器

落爺英雄遲暮 提交于 2020-05-01 17:53:02
  当下.net中比较火的模式MVC模式,说实话对于菜鸟的我还没有遇到一个比较健全的MVC模式的项目也是比较遗憾。偶然间在网上看到WebForm实现MVC中的模式(主要是控制器。。。)就学习了一波,下面是介绍一下是如何实现的。   小主用的是VS2010,首先打开VS新建一个空Web应用程序: 之后在新建一个MVC的Web如下图。。。 项目新建完成后,如下图 分别打开MVC与WebForm的Web.config配置文件如图(左:MVC,右:WebForm) 左边的<system.web>下面的 <compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> <add assembly="System.Web.Mvc, Version=2.0.0.0, Culture=neutral,

SpringMvc @RequestParam 使用推荐使用包装类型代替包装类型

本秂侑毒 提交于 2020-05-01 17:48:46
SpringMvc 中@RequestParam注解使用    建议使用包装类型来代替基本数据类型     public String form2( @RequestParam(name= "age") int age){     public String form2( @RequestParam(name= "age") Integer age) { 上述两种方式 这种情况下使用起来基本没有差别,但是为什么要说建议使用包装类型而不是基本类型呢? 一.@RequestParam属性作用 因为当@RequestParam注解 required 属性(默认为true,代表该参数在请求中必不可少) 设置为false时,判断的标准是这样的: Object arg = resolveName(resolvedName.toString(), nestedParameter, webRequest); if (arg == null) { if (namedValueInfo. defaultValue != null) { arg = resolveStringValue(namedValueInfo. defaultValue); } else if (namedValueInfo. required && !nestedParameter.isOptional()) {

Java知识回顾 (18)Java 8、9、11的新特性

百般思念 提交于 2020-05-01 17:40:14
Java 8 Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。 新特性 Java8 新增了非常多的特性,我们主要讨论以下几个: Lambda 表达式 − Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中。 方法引用 − 方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。 默认方法 − 默认方法就是一个在接口里面有了一个实现的方法。 新工具 − 新的编译工具,如:Nashorn引擎 jjs、 类依赖分析器jdeps。 Stream API −新添加的Stream API(java.util.stream) 把真正的函数式编程风格引入到Java中。 Date Time API − 加强对日期与时间的处理。 Optional 类 − Optional 类已经成为 Java 8 类库的一部分,用来解决空指针异常。 Nashorn, JavaScript 引擎 − Java 8提供了一个新的Nashorn javascript引擎

阿里云容器Kubernetes监控(十)

不打扰是莪最后的温柔 提交于 2020-05-01 17:38:15
前言 kube-eventer 是Kubernetes社区中针对事件监控、报警、chatOps场景的开源组件,更多信息可以 点击查看 。在早期的 kube-eventer 中已经支持了钉钉、微信、slack等即时通信软件机器人的接入,但是每个机器人的演进速度、功能支持有所不同,造成开发者无法在不同的即时通信机器人之间拥有一致性的体验。为了解决这个问题,在最新版本的 kube-eventer 推出了支持泛化能力的 Webhook Sink。开发者可以通过自定义请求地址、鉴权方式、请求体结构等内容支持各种类Webhook的事件离线信道。 功能介绍 新推出的 Webhook Sink支持根据事件的Kind、Reason、Level、Namespace进行过滤,支持通过泛化的逻辑将数据离线给自定义Webhook系统、钉钉、微信、贝洽(bear chat)、slack等等。那么如何使用泛化的Webhook来实现上述的逻辑呢?首先我们先来看下Webhook Sink的参数与定义。 --sink=webhook:<WEBHOOK_URL>?level=Warning&namespaces=ns1,ns2&kinds=Node,Pod&method=POST&header=customHeaderKey=customHeaderValue 参数全部声明如下 level - Level of

Java Optional 类

。_饼干妹妹 提交于 2020-05-01 15:27:52
Optional 类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。 Optional 是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就不用显式进行空值检测。 Optional 类的引入很好的解决空指针异常。 创建 Optional 对象 Optional<String> empty = Optional.empty(); System.out.println(empty); // 输出:Optional.empty 可以使用静态方法 of() 创建一个非空的 Optional 对象 Optional<String> opt = Optional.of("张三" ); System.out.println(opt); // 输出:Optional[张三] 传递给 of() 方法的参数必须是非空的,也就是说不能为 null,否则仍然会抛出 NullPointerException。 可以使用静态方法 ofNullable() 创建一个即可空又可非空的 Optional 对象 String name = null ; Optional <String> optOrNull = Optional.ofNullable(name); System.out.println

java如何消除太多的if else判断?

大憨熊 提交于 2020-05-01 14:37:41
1.简介 if判断语句是很多编程语言的重要组成部分。但是,若我们最终编写了大量嵌套的if语句,这将使得我们的代码更加复杂和难以维护。 让我们看看能否使用别的方式来做呢。 设计模式是为了更好的代码重用性,可读性,可靠性,可维护性,它有六大原则       1)单一职责原则(Single Responsibility Principle,简称SRP):该原则是针对类来说的,即一个类应该只负责一项职责.       2)开放--封闭原则(The Open-Closed Principle简称OCP):是说软件实体(类、模块、函数等等)应该可以扩展,但是不可以修改。       3)依赖倒转原则(Dependence Inversion Principle :针对接口编程,不要对实现编程       4)里氏代换原则(Liskov Substitution Principle,简称LSP):里氏代换原则,子类型必须能够替换掉他们的父类型       5)迪米特法则(Law of Demeter):如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用       6)合成/聚合复用原则(Composition/Aggregation Principle],简称CARP):尽量使用合成/聚合,尽量不使用类继承。合成聚合是“has a”的关系,而继承是“is a”的关系。 2.示例

乐字节-Java8新特性之Optional

孤街醉人 提交于 2020-05-01 04:46:41
上一篇小乐带大家了解了 Java新特性之Stream ,接下来将会继续述说Java新特性之Optional Optional <T> 类(java.util.Optional)是一个容器类,代表一个值存在或不存在,原来用null表示一个值不存在,现在Optional可以更好的表达这个概念。并且可以避免空指针异常。 1、of 为非null的值创建一个Optional,如果值为null,则会抛出NullPointerException Optional < Integer > optional = Optional. of( 13); System. out. println( optional) 2、 ofNullable 为指定的值创建一个Optional,如果指定的值为null,则返回一个空的Optional。 Optional < String > optional2 = Optional. ofNullable( null); System. out. println( optional2); optional2 = Optional. ofNullable( "aaa"); System. out. println( optional2); 3、 isPresent 如果值存在返回true,否则返回false。 Optional < String > optional2 =

java8新特性之Optional类

时光总嘲笑我的痴心妄想 提交于 2020-05-01 03:47:58
NullPointException可以说是所有java 程序员 都遇到过的一个异常,虽然java从设计之初就力图让程序员脱离指针的苦海,但是指针确实是实际存在的,而java设计者也只能是让指针在java语言中变得更加简单、易用,而不能完全的将其剔除,所以才有了我们日常所见到的关键字 null 。 空指针异常是一个运行时异常,对于这一类异常,如果没有明确的处理策略,那么最佳实践在于让程序早点挂掉,但是很多场景下,不是开发人员没有具体的处理策略,而是根本没有意识到空指针异常的存在。当异常真的发生的时候,处理策略也很简单,在存在异常的地方添加一个if语句判定即可,但是这样的应对策略会让我们的程序出现越来越多的null判定,我们知道一个良好的程序设计,应该让代码中尽量少出现null关键字,而java8所提供的 Optional 类则在减少NullPointException的同时,也提升了代码的美观度。但首先我们需要明确的是,它并 不是对 null 关键字的一种替代,而是对于null判定提供了一种更加优雅的实现,从而避免NullPointException 。 一. 直观感受 假设我们需要返回一个字符串的长度,如果不借助第三方工具类,我们需要调用 str.length() 方法: if(null == str) { // 空指针判定 return 0; } return str

Java8新特性——Optional

烈酒焚心 提交于 2020-05-01 03:42:03
前言 在开发中,我们常常需要对一个引用进行判空以防止空指针异常的出现。Java8引入了Optional类,为的就是优雅地处理判空等问题。现在也有很多类库在使用Optional封装返回值,比如Spring Data JPA等。下面,我们就来了解下Optional的常用用法 原创声明 本文发布于掘金号【Happyjava】。Happy的掘金地址: https://juejin.im/user/5cc2895df265da03a630ddca ,Happy的个人博客:( http://blog.happyjava.cn )[ http://blog.happyjava.cn ]。欢迎转载,但须保留此段声明。 Optional方法列表 Optional的方法列表如下: 初始化 初始化一个Optional有三种方式,如下: // 创建一个空的optional Optional<Object> empty = Optional.empty(); // 此方式不可为null Optional<String> optional = Optional.of("Happyjava"); // 此方式可以为null Optional<Object> optional1 = Optional.ofNullable(null); 这里需要注意一点,Optional.of初始化一个Optional