最近在项目中遇到了一个小小的问题,和大家分享一下,简单的接口但是在不同的业务场景下需要有不同的校验逻辑,有的参数在特定的场景下需要校验,有的参数在另外的场景下则不需要校验。...利用了自定义注解的方式。废话不多说给大家看一下核心代码。...* 自定义注解校验参数 */ @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Inherited @...但是在我们的业务场景中多个参数接口使用的参数类是同一个,所以使用Spring的@Valid和@Validated自然是不行了。...其实换种想法也不是不可以那就是检验参数的再新建一个类,我觉得完全没必要,因为这样很容易就造成类爆炸。不知你是怎么样呢。欢迎评论。
,将返回一个布尔值,使用!! name,我们可以确定name的值是真的还是假的。如果name是真实的,那么!name返回false。 !false返回true。...通过将hasName设置为name,可以将hasName设置为等于传递给getName函数的值,而不是布尔值true。 new Boolean(true)返回一个对象包装器,而不是布尔值本身。...name.length返回传递的参数的长度,而不是布尔值true。
/fontend/js/24-hide-input-params/ 01 原生js 对于不显示在界面上的元素,但在提交表单时,却又要携带上去,是有这种需求的,比如用户修改某件商品信息时,商品的id,商品的...id并不是用户想要关心的 但是这个id又是数据库表格的标识,往往是一个必传的字段,因此使用隐藏变量把这个参数隐藏起来,可以很好的解决这个问题 具体如下代码所示 // 展示表单参数的函数 function...var str = "表单将提交的参数包括" // 定义字符拼接变量 // 拼接年份参数 str += '\n年份:'+document.forms[0].myyear.value...showParams()" /> 02 Vue版本实现 如下是vue方式实现,其实都是类似的 <el-form :inline="<em>true</em>...,有时是需要传给后端的,传统的方法,隐藏表单的数据,然后在提交时,传递给后端,是<em>一个</em>比较常见的操作
使用Object.defineProperty为对象添加属性 let person = {name:'name',sex:'male'}; Object.defineProperty(person,'age...以下写法使之可枚举 Object.defineProperty(person,'age',{value:18,enumerable:true}); 默认不可修改,使用person.age=19无法修改属性值...以下写法使之可改 Object.defineProperty(person,'age',{value:18,writable:true}); 默认不可删除,使用delete person.age无法删除属性...以下写法使之可删 Object.defineProperty(person,'age',{value:18,configurable:true}); 实现属性读写器 let number = 18; Object.defineProperty
EventArgs类,封装事件参数信息 public class ActionCancelEventArgs:System.ComponentModel.CancelEventArgs ...//2.定义委托 public delegate void ActionEventHandler(object sender, ActionCancelEventArgs ev); ... //3.声明事件(用到委托类型) public static event ActionEventHandler Action; //4.定义事件处理函数... time = "The time is "+DateTime.Now.ToLongTimeString(); retVal = true...ActionCancelEventArgs(); OnAction(this, cancelEvent); //抛出事件后,将根据询问订阅者是否取消事件的接受e.Cancle=False/True
每天一个小知识,不定期更新 ---- 一、问题 之前有人问我这样一个问题:如果你运行下面的代码,你会得到什么?...为什么 Java 中 200==200为false,而 100==100为true?...所以… Integer c = 100, d = 100; 指向了同一个对象。 这就是为什么我们写 System.out.println(c == d); 我们可以得到true。...Integer中有个静态内部类IntegerCache,里面有个cache[],也就是Integer常量池,常量池的大小为一个字节(-128~127)。...除了 Integer 可以通过参数改变范围外,其它的都不行。 还是那句话:你的支持是我前进的最大动力
node_modules/html-webpack-plugin/index.js 搜索 postProcessHtml 修改代码增加如下: if (assetTags && assetTags.body...index]; if (element && element.attributes && element.attributes.src === '/app.js...') element.attributes.src = '/app.js?...导致每次都要app清理缓存才能加载新的js。所以服务端来做这个事情。只要每次重启服务端就好拉。
Javascript1.8.5开始可以使用Object.freeze来冻结对象实现一个类似”枚举”类型。...Object.freeze(DaysEnum) 这就是js中的”枚举”!是不是很简单? 不过现在是2019年了,我们还可以使用const来定义对象。
判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in...遍历属性,为真则为“非空数组”;否则为“空数组” 2.通过JSON自带的.stringify方法来判断: 3
离散存储【链表】 定义: N个节点离散分配 彼此通过指针相连 每个节点只有一个前驱节点,每个节点只有一个后驱节点。...首节点没有前驱节点,尾节点没有后续节点 专业术语: 首节点: 第一个存放有效数据的节点(有效节点) 尾节点: 最后一个有效节点 头结点: 一般加首节点前面,不存放有效数据...尾指针: 指向尾节点的指针变量 确定一个链表需要几个参数?/通过一个函数对链表进行处理,至少需要接收链表的哪些参数? ...只需要一个参数:头指针 因为可以通过头指针可以推算出链表的其他所有参数
前言 JS中分两种数据类型,一种是基本数据类型,另外就是复杂数据类型,在描述一个事物对象,当比较复杂时,一般可以用数组和对象来存储 在Js中的对象,指的是一系列互相嵌套的键值对,在做web开发时,大多数控件都是以对象或数组的形式来提供给开发人员使用...在Js当中有一些方法,如下所示 01 方法1-使用文本字面量形式 这种方法创建对象是比较直接,常见的一种方式,就是使用大括号的方式,可以看做是js对象的本本标识,也就是说,可以通过输出字符串的形式来了解对象有哪些键值对...,它也是JSON形式,用于js的数据存储和传递,给对象添加属性和添加方法 如下代码所示 // 用大括号创建对象的方法,这种方法最常见,使用最频繁 var obj1 = {}; // 使用大括号创建一个内容为空的对象...; 当值为函数时,那么对象下面绑定的就是方法,使用函数的作用厉害之处,除了可以复用代码,另一个就是可以接收传递参数 02 方法2-使用构造器函数创建对象 创建构造器函数创建对象也是一种创建对象的方法...); } // 调用对象的函数/方法 obj3.webSite(); 总结 创建对象,有三种方式,其中第一种字面量创建对象的方式最常见和简单,直观,每一种方式创建对象都有自己的好处,比如动态的设置参数
该集合是一个 Plugin 对象的数组,其中的元素代表浏览器已经安装的插件。Plug-in 对象提供的是有关插件的信息,其中包括它所支持的 MIME 类型的列表。...四、Navigator对象方法 1. javaEnabled() javaEnabled() 方法可返回一个布尔值,该值指示浏览器是否支持并启用了 Java。...如果是,则返回 true,否则返回 false。 可以使用 navigator.javaEnabled() 来检测当前浏览器是否支持 Java,从而知道浏览器是否能显示 Java 小程序。
js判断空对象的方法 判断一个js对象是否是空对象isEmptyObject author: @TiffanysBear 方法一:使用for…in遍历 var isEmptyObject =...function () { for (var i in this) { return false; } return true; } // 尽量不要使用object.prototype直接进行修改
js 判断一个 object 对象是否为空 转载原文 判断一个对象是否为空对象,本文给出三种判断方法: 1.最常见的思路,for...in......遍历属性,为真则为“非空数组”;否则为“空数组” for (var i in obj) { // 如果不为空,则会执行到这一步,返回true return true } return false...if (JSON.stringify(data) === '{}') { return false // 如果为空,返回false } return true // 如果不为空,则会执行到这一步...如果我们的对象为空,他会返回一个空数组,如下: var a = {} Object.keys(a) // [] 我们可以依靠Object.keys()这个方法通过判断它的长度来知道它是否为空。...,返回true 作者:言墨儿 链接:http://www.jianshu.com/p/972d0f277d45 转载补充: 原文中的代码,是写在一个 function 中的。
石竹 T.10: Specify concepts for all template arguments T.10:为所有的模板参数定义概念 Reason(原因) Correctness and readability...一个模板参数的假定含义(语法和语义)是模板接口的基础。概念大幅度改善了模板的文档化和错误处理。为模板参数定义概念是一个强有力的设计工具。...If you use GCC 6.1 or later, you can uncomment them: “概念”被ISO技术规格:concepts定义。...一套标准库concepts的初步版本可以在另一个ISO技术规格:ranges中找到。GCC6.1以后都支持concepts。...它应该被极少使用,仅限于表现“它是一个类型”。这通常只在我们操作纯表达式树,延迟类型检查时有(作为模板元编程的一部分)存在的必要。
auto' 当我们使用 ls 的时候,通常可以发现,目录 和 文件是不同的颜色的,其实普通的 ls 默认是没有颜色的 你可以取消别名后试试 或者直接使用 \ls ,其中 \ 是转义,即不使用别名 所以第一个作用就是对于一些命令的常用参数进行预设...,可以简化指令,同时,当你自己指定参数的时候,是会覆盖别名的预设参数的,比如 ls --color=none就可以取消 颜色 的显示 自定义一些复杂的指令 平时我们也许会用到多个命令的组合,这个时候也可以使用...比如我们平时删除文件 rm -rf 很容易造成一些不可逆转的后果,这个时候我们可以自定义一个 别名,让他帮我们完成备份并删除的功能。...但是,别名是不支持一些复杂逻辑的,所以需要另外想一个办法来实现,通常我们可以自定义一个函数,再将别名指向这个函数来完成这些操作,比如传参,命令组合什么的,下面就是一个 备份删除的列子 function...对于简单的函数,也可以这样 alias t_alias='test(){ echo $1;};test' 就完成了一个 别名的定义
现在 PHP、Go 写的比较多,之前常被参数多的问题所困扰,近期 Go 写多了后有一些感悟。 先说结论 分类合并,同类参数合并为数组(Go 中定义为 struct 结构体),不同类分开定义。...例: 参数 school_name,school_address,study_name,study_gender,需调用函数做逻辑处理。...伪代码: 函数定义: function anonymous(school, study); 调用点: school = [school_name, school_address]; study = [...PHP 中这个场景都平铺开来,字段很多,参数位会变得难以阅读,字段一多就想定义成数组算了,但都聚合起来又无法直观认识这个数组中可塞什么字段。...当然,不用 array 可以定义 Class,但参数这么定义感觉太重了。 Go 用结构体没有数组黑盒烦恼,这点 Go 确实更加优雅! 综上,可按同类合并思维进行处理,就这么办吧 :)
:字面量定义、构造函数定义 //字面量定义 function add(n1,n2){ } //构造函数定义 new Function("n1","n2","...."); 函数和对象一样,可以添加属性和方法...add(); function add(){ return 1; } 用var赋值表达式创建的函数,如果先调用,再创建,会报错 因为var在预解析时赋值为undefined add();...: 由于js中没有块级作用域,所以依然是处于全局作用域中 都会出现预解析中函数被提前声明 if(true){ function fn1(){ } }else{ function fn2(){...arr[0]=1; 函数的间接调用 .call 第一个参数是改变this的指向,后面传递参数的方式就是一个一个传 .apply 第一个参数是改变this的指向,后面传递参数的方式是通过数组来传递...什么做参数 1、没有参数 2、数字做参数 3、字符串( 如选择DOM节点,$("p") ) 4、布尔值(保持函数的纯洁性,建议一个函数只做一件事情) 5、undefined(可选参数必须放在最后) 6、
Arrays.sort()为什么不定义为接收一个Comparable[]数组? ...众所周知,在Arrays.sort()方法中,有一个重载方法为:Arrays.sort(Object[] a)。 ...这个方法要求Object[]数组中每一个元素都要实现Comparable接口,即提供compareTo(Object other)方法。一旦有某个元素没有实现该接口,将有可能抛出类型转换异常。 ...那么问题来了,为什么不强制要求传入一个Comparable[]数组呢?这样的话不就能够保证数组中每个元素都实现Comparable接口了吗? 1....比如下面这个数组: Object[]arr={ "hello","world" }; 它的实际类型就是Object[](大括号的简写法相当于Object[]arr=newObject[]{…};,因此其实例化类型为Object
领取专属 10元无门槛券
手把手带您无忧上云