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

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

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

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

Laravel推荐使用的十个辅助函数

您还可以查看所有的官方文档 laravel helper functions. array_dot() array_dot() array_dot () 辅助函数允许你将多维数组转换为使用点符号的一维数组...$url = route('products', ['id' = 1]); 如果你想产生一个相对的 URL 不是一个绝对的 URL,你可以传递 false 作为第三个参数。...闭包返回无关紧要。...无论实际返回的方法如何,返回都将始终为。 在下面的例子中,它将返回 User Model 不是布尔。 update 方法返回布尔,但由于用了 tap ,所以它将返回 User Model。...如果传递的对象为 null,则方法和属性将返回 null,不是导致错误或抛出异常。 $user = User::find(1); return optional($user)- name;

3.7K20

Laravel Validation 表单验证(二、验证表单请求)

您可以通过在 validation 语言文件中定义 values 数组指定自定义表示形式,不是将 cc 显示为 payment_type 的: 'values' => [ 'payment_type...注意: 当使用 regex / not_regex 模式时, 可能需要在数组中指定规则,不是使用 | 分隔符 ,特别是在正则表达式包含 | 字符 的情况下。...required 验证的字段必须存在于输入数据中,不是空。如果满足以下条件之一,则字段被视为「空」: 为 null 。 为空字符串为空数组或空 Countable 对象。...passes 方法接收属性和名称,并根据属性是否符合规则返回 true 或 false。 message 方法应返回验证失败时应使用的验证错误消息: <?...消息应该被放到数组的第一位, 不是在只用于存放属性指定错误信息的 custom 数组内: "foo" => "Your input was invalid!"

29.1K10

Vuejs开发过程中一些常见问题的解决方法

5.绑定value到Vue实例的一个动态属性上 对于单选按钮,勾选框及选择框选项,v-model绑定的value通常是静态字符串(对于勾选框是逻辑): 但是有时候想绑定value到vue实例的一个动态属性上,这时可以用v-bind实现,并且这个属性的可以不是字符串...7.路由嵌套 路由嵌套会将其他组件渲染到该组件内,不是进行整个页面跳转router-view本身就是将组件渲染到该位置,想要进行页面跳转,就要将页面渲染到根组件,在起始配置路由时候写到: var App...例如实现当输入框中什么都没写的时候显示字符串‘empty’,否则显示输入框中的内容,代码如下: <input type="text" v-model="inputValue...问题2,需要一个空<em>数组</em>替换items。 除了$set(),<em>vuejs</em>也为观察<em>数组</em>添加了$remove()方法,用于从目标<em>数组</em>中查找并删除元素,在内部调用了splice()。

6.5K30

3分钟短文:Laravel应用跟用户打交道,就从拿到他们的数据开始!

laravel是偏重后端的,所以为了给后端的开发同学缓冲的时间,我们跳过视图,先来说说用户数据的获取和处理,这几乎是任何应用必备之功能。 用户数据同时又是危险的!本文不会教你规避危险!...laravel把用户的输入存储在 Input 对象内,从逻辑上看,用户输入应该归属于请求项的,所以 Request 也继承了 Input 的方法和数据。...has方法不仅会判断该键存在,如果该键的是 空(比如 null,空字符串,false,0,空数组,空对象等等),也是判断为false的。...用法很简单,直接调用方法即可: if ($request->has('utm')) { // Do some work } 如果对于输入键不存在,我们也可以为其设置一个默认,这就是 input...内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。

1.5K00

3分钟短文:Laravel应用跟用户打交道,就从拿到他们的数据开始!

laravel是偏重后端的,所以为了给后端的开发同学缓冲的时间,我们跳过视图,先来说说用户数据的获取和处理,这几乎是任何应用必备之功能。 用户数据同时又是危险的!本文不会教你规避危险!...laravel把用户的输入存储在 Input 对象内,从逻辑上看,用户输入应该归属于请求项的,所以 Request 也继承了 Input 的方法和数据。...has方法不仅会判断该键存在,如果该键的是 空(比如 null,空字符串,false,0,空数组,空对象等等),也是判断为false的。...用法很简单,直接调用方法即可: if ($request->has('utm')) { // Do some work } 如果对于输入键不存在,我们也可以为其设置一个默认,这就是 input...内获取数组可以使用点式方式读取,这是因为laravel解析的时候使用了助手类 Arr 的通用方法。

1.4K10

Laravel源码解析之事件系统

laravel 中事件系统由两部分构成,一个是事件的名称,事件的名称可以是个字符串,例如 event.email,也可以是一个事件类,例如 App\Events\OrderShipped;另一个是事件的...类中的 observers数组一样,只不过Laravel比那个复杂一些,它的 listener数组里会记录多个 Subject和对应 观察者的对应关系。...,那么就不会再去调用事件剩下的listener //否则就将返回加入到返回列表中,等所有listener执行完了一并返回 if ($halt && !...如果触发事件时传递了halt参数,在listener返回非 false后那么事件就不会往下继续传播给剩余的listener了,否则所有listener的返回会在所有listener执行往后作为一个数组统一返回...如果一个listener返回了布尔 false那么事件会立即停止向剩余的listener传播。

1K40

Laravel学习记录--request做文件上传

在创建控制器时,lavarel会自动创建request对象 使用不需要实例化 在方法中的使用 function show(Request $rep){ } // 将Request 对象的返回...title = $_POST[‘title’] 可改写为 $model->title = $rep->title dd()方法 = dump()+exit Request的input()方法:字段自动注入,其不是从...需建立public/storage 到storage/app/public的链接 创建public/storage到storage/app/public的连接 cmd 输入...Request对象 use Storage; $path = Storage::putFile('磁盘名',$reg->file('文件名')) helper辅助函数 array_collapse();将多个数组折合成一个数组...str_limit(str,字节限制);限制字符串长度,多余用省略号代替 str_random(num);随机生成指定长度的字符串包含字母数字 e(html);代码实体转义 app_path();//

1.2K20

如何在PHP中使用数组

2、PHP怎么查询数组中的指定元素 array_search()函数在数组中搜索给定的,找到后返回键值,否则返回 false 。...在 PHP 4.2.0之前,函数在失败时返回 null 不是 false。 下面实例综合应用数组函数,实现更新数组中的元素的,具体示例代码如下: <?...说明: each()函数用于返回当前指针位置的数组,同时将指针推进到下一个位置。返回数组包含4个键,键 0 和 key 包含键名,键 1 和 value 包含相应的数据。...如果程序在执行 each()函数时指针已经位于数组末尾,则返回 false。 5、PHP数组字符串相互转换 1.使用 explode()函数将字符串转换成数组 <?...当第二个参数为true时,print_r不会直接打印数组,而是将打印的内容作为字符串返回 <?

11.2K10

PHP面试题集锦

(重点看函数的‘参数’和‘返回’) ①array()创建数组; ②count()返回数组中元素的数目; ③array_push()将一个或多个元素插入数组的末尾(入栈); ④array_column(...)返回输入数组中某个单一列的; ⑤array_combine()通过合并两个数组来创建一个新数组; ⑥array_reverse()以相反的顺序返回数组; ⑦array_unique()删除数组中的重复...echo可以一次输出多个,多个之间用逗号分隔。echo是语言结构(language construct),不是真正的函数,因此不能作为表达式的一部分使用。...echo是php的内部指令,不是函数,无返回。 print():函数print()打印一个(它的参数),如果字符串成功显示则返回true,否则返回false。...用__set_state的返回做为var_export的返回。 14、__invoke() :将对象当作函数来使用时执行此方法,通常不推荐这样做。 laravel中服务提供者是什么?

6.9K20

3分钟短文 | Laravel 内3种数据校验的写法,你喜欢哪一个?

引言 web应用程序公开访问几乎没有不带用户交互的,难免要接收用户输入的奇奇怪怪的东西。对于后端程序,必须对输入的内容进行有效性过滤。 ? 这就是本文的重点,说一说laravel输入请求的校验。...学习时间 假设请求Request内有一个 names 字段,传送的是一个数组,对于数组,我们应该如何校验呢?其实需要两步,第一步校验names字段本身必须是数组,其次校验数组的元素规则。...接着使用星号匹配数组内元素,要求都是string字符串,且不得重复 distinct,且每个字符串长度最小为3。...laravel 5.5 以后的版本,你无需手动实例化 Validaor 对象,可以在 Request 对象直接调用 validate 方法实现。...distinct|min:3", ]); 上面两种方式校验之后,都可以使用 $validator->fails() 方法判断是否通过,如果 true 就是有错误,可以获取 error message,并返回给前端

1.2K20

Vue开发、学习笔记,持续记录

Render函数将createElement的返回放到了HTML中createElement这个函数中有3个参数 第一个参数(必要参数):主要用于提供DOM的html内容,类型可以是字符串、对象或函数...1.动态组件 keep-alive 包裹动态组件时,会缓存不活动的组件实例,不是销毁它们。...100 }, // 带有默认的对象 propE: { type: Object, // 对象或数组的默认必须从一个工厂函数返回 default...: { type: Function, // 与对象或数组的默认不同,这不是一个工厂函数——这是一个用作默认的函数 default() { return...官方文档:https://v3.cn.vuejs.org/api/instance-methods.html#watch 在变更 (不是替换) 对象或数组时,旧将与新相同,因为它们的引用指向同一个对象

8.5K30

CVE-2021-39165: 从一个Laravel SQL注入漏洞开始的Bug Bounty之旅

也就是说,传入scopeSearch的这个$search数组的键、都是用户可控的。...但是可以想象一下,我的输入中只要有一个key在this->searchable中,那么这里的交集就可以取到至少一个,这个if语句就不会成立。...所以,这个检查形同虚设,用户输入数组 0x03 Laravel代码审计 熟悉Laravel的同学对where()应该不陌生,简单介绍一下用法。...这个boolean既不是SQL语句中的“键”,也不是SQL语句中的“”,而就是SQL语句的代码,如果没有校验,一定存在SQL注入。 事实证明,这里并没有经过校验。...,这意味着注入到模板中的变量只是简单的字符串数组,没有任何对象。

66820

Laravel5.2之Demo1——URL生成和存储

可以再创建一个迁移文件php artisan make:migration create_links_table --table=links,生成的迁移文件中up()方法里引用了Schema::table()方法不是...2、创建Form表单 (1)、在resources/views/文件夹下创建一个urls文件夹,在urls文件夹下创建一个form.blade.php文件文件名需要有blade字符串laravel会自动识别这个文件为...,写好数据库连接配置、model配置、执行migrations表迁移),再在控制器controller里写好业务逻辑,返回response如blade视图view或直接一个"hello world"字符串吧...withInput()函数会在返回表单时在input里填上刚刚输入的旧数据。...'));//根据输入的link做hash哈希就行或者别的更简短的输入 Link::create([ 'url' => Input::get('link'), '

24K31
领券