首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

一文读懂《Effective Java》第43条:返回零长度的数组或集合,不是null

对于一个返回null 不是零长度数组或者集合的方法,客户端几乎每次用到该方法都可能会忘记写专门处理null 返回值的代码,进而导致NPE。...返回值为null 与性能 有时候会有程序员认为:null 返回值比零长度数组更好,因为它避免了分配数组所需要的开销,但这种观点站不住脚。...在返回值这种级别上担心性能问题是不明智的,除非分析表明这个方法是造成性能问题的真正源头 对于不返回任何元素的调用,每次返回同一个零长度数组是有可能的,因为零长度数组不可变的,不可变对象可能被自由的共享...,没理由返回null,二是返回一个零长度的数组或者集合。...Java 的返回值为null 的做法,很可能是从C 语言沿袭过来的,在C 中,数组长度是与实际的数组分开返回的,如果返回的数组长度为0,再分配一个数组就没有任何好处了。

1.6K20
您找到你想要的搜索结果了吗?
是的
没有找到

69.精读《SQL vs Flux

InfluxDB InfluxDB 创造了一种新的查询语言,这里是 Flux 文法....(了解更多文法相关知识,可以移步 精读《手写 SQL 编译器 - 文法介绍》) InfluxDB 为什么创造 Flux 语法 InfluxDB 之所以创造 Flux 语法,不使用 SQL,主要有两个原因...时间序列的查询需要基于流的函数模型,不是 SQL 的代数模型。...关于语法糖与 SQL 标准 作者认为,虽然有观点认为,Flux 的语法糖比 SQL 更简洁,但代码的可维护性并不是行数越少越好,而是是否容易被人类理解。...如果你更看中查询语言,不是具体执行逻辑,SQLl 依然是最好的选择。 3 总结 之所以制作这一期精读,是为了探索 SQL 与其他查询语言的关系,去理解为什么 SQL 沿用至今。

44730

漫话:如何给女朋友解释为什么计算机从0开始计数,不是从1开始?

当我们想要写一个循环体,期望执行10次的时候,我们会使用以下方式: for (int i=0; i<10; i++){ } 可以看到,为了保证循环10次,我们定义了一个整数变量从0开始。...所以,他建议我们使用0作为第一个下标。...计数表示偏移量 很多人学习编程都是从C语言开始的,那么,C语言就是一个典型的0-base语言(以0作为计数的开始),其实,这一约定早在BCPL时代就是这样的了。...那么,BCPL的作者采用了0作为数组第一个元素的下标,因为他认为,数组的下标应该和指针的偏移量是相对应的。这样在使用第一个内存单元的时候,直接使用arr[0]或者*(p+0)就可以了。...因为指针*(p+0)这种表达形式中的0表示的是偏移量,所以,无论数组的下标从几开始,*(p+0)都是用于存取内存中的p+0位址的值,也就是0X0000001这块内存单元的值。

1K40

Spring Boot 中的响应式编程和 WebFlux 入门

Spring Boot 2.0 是基于 Spring5 构建而成,因此 Spring Boot 2.X 将自动继承了 Webflux 组件,本篇给大家介绍如何在 Spring Boot 中使用 Webflux...响应式编程是基于异步和事件驱动的非阻塞程序,只需要在程序内启动少量线程扩展,不是水平通过集群扩展。...Flux 表示的是包含 0 到 N 个元素的异步序列。在该序列中可以包含三种不同类型的消息通知:正常的包含元素的消息、序列结束的消息和序列出错的消息。...Mono 表示的是包含 0 或者 1 个元素的异步序列。该序列中同样可以包含与 Flux 相同的三种类型的消息通知。Flux 和 Mono 之间可以进行转换。...响应式编程的返回值必须是 Flux 或者 Mono ,两者之间可以相互转换。

3.3K20

2018年终总结

netflix的部分组件宣布将要进入维护阶段,国内spring cloud alibaba组件逐渐活跃起来,目前看来处于PublicEvolving阶段;java自身也处在不断进化中,今年发布了java10...java9代码 命令行一键切换java版本的几种方式 easy-rules小试牛刀 使用kotlin改善java代码 jib打包docker镜像实战 jib自定义entrypoint jmxtrans+influxdb...JvmGcMetrics的managementExtensionsPresent 聊聊micrometer的HistogramGauges micrometer自定义metrics spring-boot-admin 2.0...streams的tranform操作 使用SseEmitter不断向网页输出结果 spring 5 webclient使用指南 spring webflux文件上传下载 spring webflux返回...TcpClient的封装 reactor-netty中TcpClient的create过程 reactor-netty中TcpClient的newHandler过程 reactor-netty的TcpClient如何

1.2K20

Spring认证中国教育管理中心-Spring Data R2DBC框架教程三

如果持久性构造函数需要该属性,则提供 null 或(对于原始类型)默认值。 下表显示了查询方法支持的关键字: 14.2.1.修改查询 前面的部分描述了如何声明查询以访问给定的实体或实体集合。...将 SpEL 表达式与普通参数结合使用时,请使用命名参数表示法不是本机绑定标记,以确保正确的绑定顺序。...这说明了如何使用域对象制作简单的探针。在这种情况下,它将根据Employee对象的name字段等于 进行查询Frodo。 null字段被忽略。...在您Repository中声明一个覆盖基本方法的方法(例如,在 中声明CrudRepository,特定于商店的存储库接口或Simple…Repository)会导致对基本方法的调用,不管声明的返回类型如何...使用可为空包装器的投影接口 interface NamesOnly { Optional getFirstname(); } 如果基础投影值不是null,则使用包装器类型的当前表示返回

2.3K30
领券