首页
学习
活动
专区
工具
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 沿用至今。

    46630

    漫话:如何给女朋友解释为什么计算机从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这块内存单元的值。

    1.1K40

    SpringBoot整合InfluxDB:封装方法助力高效时序数据处理

    面对如此庞杂的数据量,如何高效地存储、管理和分析这些数据成为了我们面临的关键问题。...本文将详细介绍如何在SpringBoot项目中整合InfluxDB,并封装常用的数据库操作方法,以帮助开发者更加便捷地使用这一强大的组合。...在InfluxDB中,我们可以使用InfluxQL或Flux查询语言来查询数据。为了方便开发者使用,我们可以封装一个查询数据的方法,该方法接受查询语句和查询参数,并返回查询结果。...(new Query(queryString, null)); }}使用InfluxQL查询数据InfluxQL是InfluxDB的查询语言,它类似于SQL,但专为时序数据设计。...(influxQL, "mydb"); return influxDB.query(query); }}结论通过本文的介绍,我们详细阐述了如何在SpringBoot项目中整合InfluxDB

    22631

    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.5K20

    深入探索Spring AI:源码分析流式回答

    与此同时,返回的数据类型也由之前的 String 变更为 Flux。在深入探讨其具体应用之前,首先让我来介绍一下 Flux 的概念与特性。...这意味着,只要我们的代码返回一个 Flux 对象,就能轻松实现响应功能。通过这种方式,应用程序能够高效地处理并发请求,不会因阻塞操作影响整体性能。...以下是 WebFlux 的几个关键特性:反应式编程:WebFlux 基于反应式编程模型,使用 Mono 和 Flux 类型来处理数据流。Mono 表示零或一个元素, Flux 则表示零个或多个元素。...源码分析现在我们来详细看看我们的 content 是如何操作的。...接下来的代码示例将展示具体的实现方式,帮助我们理解在 WebFlux 中如何处理数据流和响应:public Flux content() { return doGetFluxChatResponse

    15330

    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
    领券