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

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

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

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

MySQL 数据库使用SQL SELECT语句来查询数据

你可以使用星号(*)来代替其他字段,SELECT语句会返回所有字段数据 你可以使用 WHERE 语句来包含任何条件。 你可以使用 LIMIT 属性来设定返回记录数。...---- 通过命令提示符获取数据 以下实例我们将通过 SQL SELECT 命令来获取 MySQL 数据表 runoob_tbl 数据: 实例 以下实例将返回数据表 runoob_tbl 所有记录:...mysqli_fetch_array() 函数从结果集中取得一行作为关联数组,或数字数组,或二者兼有 返回根据从结果集取得行生成数组,如果没有更多行返回 false。...在上面的例子中,PHP mysqli_fetch_array() 函数第二个参数为 MYSQLI_ASSOC, 设置该参数查询结果返回关联数组,你可以使用字段名称来作为数组索引。...PHP 提供了另外一个函数 mysqli_fetch_assoc(), 该函数从结果集中取得一行作为关联数组返回根据从结果集取得行生成关联数组,如果没有更多行,则返回 false

2.6K20

PHP 常用函数大全

,并返回当前元素值 end 将数组内部指针指向最后一个元素,并返回该元素值(如果成功) reset 把数组内部指针指向第一个元素,并返回该元素值 list 用数组元素为一组变量赋值 array_shift...从结果集中取得一行作为关联数组,或数字数组,或二者兼有 mysql_fetch_assoc 从结果集中取得一行作为关联数组 mysql_fetch_field 从结果集中取得列信息并作为对象返回 mysql_fetch_lengths...取得结果集中每个输出长度 mysql_fetch_object 从结果集中取得一行作为对象 mysql_fetch_object 从结果集中取得一行作为枚举数组 mysql_field_flags...建立一个具有唯一文件名文件 tmpfile 建立一个临时文件 touch 设定文件访问和修改时间 umask 改变当前 umask unlink 删除文件 GD and Image 函数...imagestring 水平地画一行字符串 imagestringup 垂直地画一行字符串 imagesx 取得图像宽度 imagesy 取得图像高度 imagetruecolortopalette

3.6K21

正则表达式 - 边界

就像 ^ 和 $ 一样,\b 是个零宽度断言,表面上它会匹配空格或者是行起始,实际上它匹配是个零宽度不存在东西。这个理解起来不是很容易,但可以通过观察它匹配和不匹配内容来理解。.../2 原因是,MySQL 8.0.17之前有bug,结果返回是UTF-16字符集,不是原字符串字符集,导致 length 函数返回值会翻倍。...\Z 会匹配一行(主题词)尾部MARINERE或Marinere,之后是任何可选字符。在本例中可选字符就是标点符号或者字母S。点号两边括号不是必需。...可以利用 \A 特性轻松实现。如前所述,无论是否使用多行模式,替换结果都一样。(\\A.*) 捕获分组获取第一行,$1 在第一行首尾加标签。...1 row in set (0.00 sec)         也可以将正则表达式改为 ^(.*)$ 匹配整行,然后只替换多行模式一行,能达到相同效果。

2.5K10

PHP7原生MySQL数据库操作实现代码

PHP5中连接mysql是过程性PHP7中强调了类使用与面向对象方法 $user = new mysqli(); //Connect to mysql $user- connect("localhost...从结果集中取得一行作为关联数组,或数字数组,或二者兼有 mysqli_fetch_array ( mysqliResult [, resultType] ) – 参数:resultType是一个常量,...取值:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引) – 返回返回根据从结果集取得行生成数组,如果没有更多行返回 FALSE。...:MYSQLI_BOTH(两者兼有,默认)、MYSQLI_ASSOC(关联索引)、MYSQLI_NUM(数字索引) – 返回返回根据从结果集取得行生成数组,如果没有更多行返回 FALSE。...从结果集中取得一行作为关联数组 array mysqli_fetch_assoc(mysqliResult) – 返回值:从结果集取得行生成关联数组,如果没有更多行返回 FALSE; – 注意

4.6K41

Redis协议规范(译文)

RESP 错误信息 RESP具有错误特定数据类型。 实际上错误与RESP 单行字符串完全相同,但第一个字符是减号' - '字符不是加号。...这只是Redis使用约定,不是RESP错误格式一部分。 例如,ERR是一般错误,WRONGTYPE是一个更具体错误,意味着客户端尝试对错误数据类型执行操作。...例如,三个整数数组编码如下: "*3\r\n:1\r\n:2\r\n:3\r\n" 数组可以包含混合类型,元素不必具有相同类型。...例如,当BLPOP命令超时时,它返回一个计数为-1Null数组,如下例所示: "*-1\r\n" 当Redis使用Null数组回复时,客户端库API应返回空对象不是数组。...客户端库应返回如下内容: ["foo",nil,"bar"] 注意,这不是前面部分中所述例外,只是进一步指定协议示例。

98730

python入门:进来吧,给自己10分钟,这篇文章带你直接学会python

裙里有大量学习资料,有大神解答交流问题,每晚都有免费直播课程 Python具有列表(list)、元组(tuple)和字典(dictionaries)三种基本数据结构,集合(sets)则包含在集合库中...列表特点跟一维数组类似(当然你也可以创建类似多维数组“列表列表”),字典则是具有关联关系数组(通常也叫做哈希表),元组则是不可变一维数组(Python中“数组”可以包含任何类型元素,这样你就可以使用混合元素...多行字符串可以通过三个连续单引号(”’)或是双引号(“””)来进行标示。Python可以通过u”This is a unicode string”这样语法使用Unicode字符串。...这是因为只传递了该变量内存地址,并且只有丢弃了旧对象后,变量才能绑定一个对象,所以不可变类型是被替换不是改变(译者注:虽然Python传递参数形式本质上是引用传递,但是会产生值传递效果)。...类 Python支持有限多继承形式。私有变量和方法可以通过添加至少两个前导下划线和最多尾随一个下划线形式进行声明(如“__spam”,这只是惯例,不是Python强制要求)。

88800

MySQL 查询专题

NULL 与不匹配 在通过过滤选择出不具有特定值行时,你可能希望返回具有 NULL 值行。但是,不行。因为未知具有特殊含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。...因此,在过滤数据时,一定要验证返回数据中确实给出了被过滤列具有 NULL 行。 计算次序 WHERE 可包含任意数目的 AND 和 OR 操作符。允许两者结合以进行复杂和高级过滤。...❑ 如果分组列中包含具有 NULL 值行,则 NULL 将作为一个分组返回。如果列中有多行NULL值,它们将分为一组。...这些问题不是理论问题,其答案取决于数据库设置方式。 limit 关键字 行0 检索出来一行为行 0 不是行 1。因此,LIMIT 1, 1 将检索出第二行不是一行。...例如,一个特殊词搜索将会返回包含该词所有行,不区分包含单个匹配行和包含多个匹配行(按照可能是更好匹配来排列它们)。类似,一个特殊词搜索将不会找出不包含该词但包含其他相关词行。

5K30

MySQL】C语言连接数据库

,包含头文件时使用mysql/mysql.h,不仅仅是 mysql.h,所以不需要指定。...,不需要我们手动指定访问是哪一列。...同时,由于 MYSQL_RES 中保存是查询到多行结果,所以我们可以将 MYSQL_RES 看作是一个二级指针数组数组每个元素都是二级指针 (MYSQL_ROW)。...如上,将 MYSQL_RES 当作一个二维数组,那么 MYSQL_RES 中每一个元素就代表查询结果中一行数据 (不包含属性行),这行数据是一个一维数组,且数组每个元素都是 char* 类型 (...市场上关于 MySQL 图形化工具有很多,其中比较优秀是 Navicat 和 SQLyog,但他们都是收费,当然如果个人使用的话可以在网上下载破解版

72320

MySQL(六)常用语法和数据类型

create [or replace] view viewname as select ...; 8、delete:从表中删除一行多行 delete from tablename [where ......[order by ...] 15、start transaction:一个新事务处理块开始 start transaction; 16、update:更新表中一行多行 uptable tablename...,分别是定长串和变长串 定长串:接受长度固定字符串,其长度实在创建表时指定;定长列不允许多余指定字符数目,它们分配存储空间与指定一样多(比如char) 变长串:存储可变长度文本,有些变长数据类型具有最大定长...,有些是完全变长,不论哪种,指定数据得到保存即可(灵活) PS:MySQL处理定长列比变长列快速很多,且MySQL不许云对变长列(或一个列可变部分)进行索引 串数据类型表: ?...; 2、数值数据类型 数值数据类型存储数值,MySQL支持多种数值数据类型,每种存储数值具有不同取值范围; 数值数据类型表: ?

46320

Redis协议规范(译文)

RESP 错误信息 RESP具有错误特定数据类型。 实际上错误与RESP 单行字符串完全相同,但第一个字符是减号’ - ‘字符不是加号。...例如,Ruby库应返回’nil’,C库应返回NULL(或在reply对象中设置特殊标志),依此类推。 RESP 数组 客户端使用RESP 数组将命令发送到Redis服务器。...例如,三个整数数组编码如下: "*3\r\n:1\r\n:2\r\n:3\r\n" 数组可以包含混合类型,元素不必具有相同类型。...例如,当BLPOP命令超时时,它返回一个计数为-1Null数组,如下例所示: "*-1\r\n" 当Redis使用Null数组回复时,客户端库API应返回空对象不是数组。...客户端库应返回如下内容: ["foo",nil,"bar"] 注意,这不是前面部分中所述例外,只是进一步指定协议示例。

1K30

SQL从入门到入魔之select简单查询

未排序数据 如果没有明确排序查询结果,可能会发现显示输出数据顺序与原表不同,返回数据顺序没有特殊意义,可能是数据被添加到表中顺序,也可能不是,只要返回相同数目的行就是正常。...SQL语句可以在一行上给出,也可以分成许多行,多数SQL开发人员认为将SQL语句分成多行更容易阅读和调试。...带一个值LIMIT总是从第一行开始,给出数为总行数。带两个值LIMIT可以指定从行号为第一个值位置开始。 行0开始 检索出来一行为行0不是行1。...因此,LIMIT 1, 1将检索出第二行不是一行。...行数不够时 LIMIT中指定要检索行数为检索最大行数,如果没有足够行(例如,给出LIMIT 10, 5,但只有13行),MySQL将只返回它能返回那么多行。 以上 That's all.

1.6K70

SQLite 判断 JSON 数组是否包含某元素

,在 MySQL 中有 JSON_CONTAINS 可以使用,比如下面的 SQL: SELECT * from my_table WHERE JSON_CONTAINS(tags, '"love"')...2.json_each() 如果要在 SQLite 中判断一个JSON 数组中是否包含某个值,可以使用 SQLite JSON1 扩展库。...所谓表值函数,指函数结果是由多行构成一个虚拟表,而非单一值。 json_each() 函数遍历指定 JSON 文档,为每个直接子元素生成一行,最终返回由所有的行组成结果集。...json_each() 函数返回一个具有以下列结果集: key 如果 JSON 为数组,则 key 列为数组索引;如果 JSON 为对象,则 key 列为对象成员名称;其他情况, key 列为 NULL...回到最初问题,可以借助 json_each() 查询 JSON 数组包含指定元素记录。

48530

java注释和分隔符

单行注释 -// 多行注释 -/**/ 文档注释 -javadoc  2 分隔符:  Java语言里分号(;)、花括号({})、方括号([])、圆括号(())、空格、圆点(.)都具有特殊分隔作用,     ...因此被统称为分隔符        分号:Java语言里对语句分隔不是使用回车来完成,java语言采用分号(;)作为语句分隔,     因此每个java语句必须使用分号作为结尾。 ...注意:java语句可以跨越多行书写,但字符串和变量名不能跨越多行。 ...虽然java语法允许一行书写多个语句但从程序可读性角度来看,         应该避免在一行书写多个语句          花括号:花括号作用就是定义一个代码块,一个代码块指就是”{”和”}”所包含一段代码...方括号:方括号主要作用是用于访问数组元素,方括号通常紧跟数组变量名,  方括号里指定希望访问数组元素索引        圆括号:圆括号是一个功能非常丰富分隔符:定义方法时必须使用圆括号来包含所有的形参声明

1.8K30

MySQL EXPLAIN执行计划详解

MySQL会在查询上设置一个标记。当执行查询时,这个标记会使其返回关于在执行计划中每一步信息,不是真正完全执行该语句。 它会返回一行多行信息,显示出执行计划中每一部分和执行次序。...在查询中,每个表输出只有一行,若多表关联,则输出多行。别名表单算为一个表,因此如果把表和自己连接,输出中也会有两行。这里定义非常广:可以是一个子查询,一个 UNION 结果。...index:跟全表扫描一样,只是MySQL扫描表时按照索引次序进行不是行,主要优点是避免了排序;缺点是要承担按索引次序读取整个表开销。这通常意味着如实按照随机次序访问行,开销较大。...常见重要值如下: Using index:表示MySQL将使用覆盖索引,这发生在对表请求列都是同一索引部分时候,返回列数据只使用了索引中信息,没有再去访问表中行记录。是性能高表现。...Using filesort:MySQL会对结果使用一个外部索引排序,不是按索引次序从表里读取行,即filesort(文件排序)。

1.7K140
领券