精华内容
下载资源
问答
  • 让函数参与入参与

    千次阅读 2015-10-22 14:56:56
    2.实现入参是个函数,能提供什么,出又能干什么,这好比把两个水管对接,而该函数正是该桥梁,既然是桥梁,那么我们就做桥梁的事情吧   @1.桥梁可以充当简单的拼接剪切路或加减路长度的功能   我们来拼接路   ...

    1.这个语法并不是难点,毕竟C++就可以用指针实现了,所以语法并不是我们的见解部分,我们是要知道该函数的作用!

     

    2.实现入参是个函数,能提供什么,出参又能干什么,这好比把两个水管对接,而该函数正是该桥梁,既然是桥梁,那么我们就做桥梁的事情吧

     

    @1.桥梁可以充当简单的拼接剪切路或加减路长度的功能

     

    我们来拼接路

     

     

    定义函数FN

    1.他接受一个函数,放回另一个函数,所以我们把它type成一种数据("这里只是别名")

     type Func[A,B,C] = (A => B) => (B => C)


    fn函数

    scala> def func1(fc:Func[Int,String,String]){
         | val c = fc(_ + " one\n")(" two")
         | println(c)
         | }

     

    接着我们定义Func类型的参数

    scala> val fn = (f1:Int=>String) => f1(1) + "2" + _
    fn: (Int => String) => (Any => String) = <function1>


    我们测试一下

    scala> func1(fn)
    1 one
    2 two


     

    2.其实这里看不出蹊跷的地方

     

    我们来设计一个校验权限的简单框架

     

    功能

    1.根据所给的名字(可以从数据库获取),来判断用户是否有对应的权限

    2.由于后期维护,多人用户拥有对应的权限

     

    这时用该高级函数就容易维护系统了

     

     

    1.同样定义别名

     

    scala>  type Func[A,B,C] = (A => B) => (B => C)
    defined type alias Func


    2.定义权限检查

    val fn1 = (f1:String=>String) => f1("Auth:2015.10").endsWith(_)


    3.定义fn

    scala> def func1(fc:Func[String,String,Boolean]){
         | val res = fc(_ + " name0")("0")
         | res match {
         |  case true => println("name0 has Auth!")
         |  case _ => println("name0 has no Auth!")
         | }
         | }

    4.测试

    scala> func1(fn1)
    name0 has Auth!


    对于2步骤我们可以利用保存log

    scala>  val fn1 = (f1:String=>String) => {val log = f1("Auth:2015.10");println(log);log.endsWith(_)}
    fn1: (String => String) => (String => Boolean) = <function1>
    
    scala> func1(fn1)
    Auth:2015.10 name0
    name0 has Auth!
    
    scala>


    这样我们就保存了log

     

    几个月后突然老板说要加上一种验证方式,这时我们完全可以

    scala>  def func1(fc:Func[String,String,Boolean]){
         | val res = fc(_ + " name0")("0")
         | val res1 = fc(_ + " name0")("1")
         | res match {
         | case true => println("name0 has Auth  _1!")
         |  case _ => println("name0 has no Auth _1!")
         | }
         |  res1 match {
         |  case true => println("name0 has Auth  _2!")
         |  case _ => println("name0 has no Auth _2!")
         | }
         | }
    func1: (fc: Func[String,String,Boolean])Unit
    
    scala> func1(fn1)
    Auth:2015.10 name0
    Auth:2015.10 name0
    name0 has Auth  _1!
    name0 has no Auth _2!
    
    scala>


    或者如果只是一个用户多个权限验证的话

    scala>  def func1(fc:Func[String,String,Boolean]){
         | val res = fc(_ + " name0")("0") && fc(_ + " name0")("1")
         |
         | res match {
         |  case true => println("name0 has Auth!")
         |  case _ => println("name0 has no Auth!")
         | }
         | }
    func1: (fc: Func[String,String,Boolean])Unit
    
    scala> func1(fn1)
    Auth:2015.10 name0
    Auth:2015.10 name0
    name0 has no Auth!

    这里我们用高级函数,让普通函数具备输入函数和输出函数的功能,主要目的是耦合目的是耦合度

     


     

     

     

     

     


     


     

     

     

     

    展开全文
  • swagger-ui页面接口的入参参与代码实体类不一致有差异 后端开发,在进行后端接口开发时,会用到swagger进行接口管理。 路径:http://local:8080/xxx/swagger-ui.html 但是在swagger-ui页面,查看接口时,发现入参...

    swagger-ui页面接口的入参出参与代码实体类不一致有差异

    后端开发,在进行后端接口开发时,会用到swagger进行接口管理。
    路径:http://local:8080/xxx/swagger-ui.html

    但是在swagger-ui页面,查看接口时,发现入参出参列表自己开发的接口出入参实体类不一样

    class
    碰到这个问题,很多人第一反应,以为是 浏览器缓存,客户端缓存等导致的,其实不是的,真正原因是开发人员定义的实体类的api model名导致的。

    比如工程中有两个实体类,这两个实体类是完全不一样的,只是ApiModel命名一样。

    如下两个实体类
    PerionInfo.java 是你的接口用的入参实体类
    CarInfo.java 是工程里已有的实体类
    但是由于两个实体类都叫同一个名:@ApiModel(“查询详细信息入参”)
    所以就导致了,你的接口swagger-ui展示成了其他的实体类参数了。

    @ApiModel("查询详细信息入参")
    public class PerionInfo implements Serializable{
    	private static final long seriUID = -1L;
        @ApiModelProperty("姓名")
        private String name;
        @ApiModelProperty("性别")
        private String sex;
        @ApiModelProperty("生日")
        private String birday;
    }
    
    @ApiModel("查询详细信息入参")
    public class CarInfo implements Serializable{
    	private static final long seriUID = -1L;
        @ApiModelProperty("车名")
        private String name;
        @ApiModelProperty("颜色")
        private String col;
    }
    

    总结:

    1. 在抄别人代码的时候,一定要注意不能硬抄,关键位置代码一定要改
    2. swagger 管理接口比较常见,开发人员需要用心维护好
    3. 这个坑,有缘人就不要再踩了
    展开全文
  • 下面就对比一下整个对象入参与整个对象单个参数入参 整个对象入参 整个对象单个属性入参 2020-04-27 20:20:58 |WARN |http-nio-8110-exec-8 |AbstractHandlerExceptionResolver.java:194 |org.springframework.web....

    蛮久没写分页查询了,今天业务中需要用于是搞了一下…最后拉了。
    问题:前端传过来一个对象如下,后台已经写好Vo @ApiModel(value = “登陆日志查询实体”)
    public class LoginLogVo implements Serializable {
    @ApiModelProperty(value = “登陆名”)
    private String userName;
    @ApiModelProperty(value = “登陆状态0失败1成功”)
    private Integer loginResult;
    @ApiModelProperty(value = “开始时间”)
    private Date beginTime;
    @ApiModelProperty(value = “结束时间”)
    private Date endTime;
    }
    但查询条件并不是每一个都是必须的,刚开始我用@RequestBody LoginLogVo loginLogVo 来入参就出问题了,于是我把入参对象前面的注去掉就可以了。

    下面就对比一下整个对象入参与整个对象单个参数入参

    整个对象入参
    在这里插入图片描述
    在这里插入图片描述

    整个对象单个属性入参
    在这里插入图片描述
    在这里插入图片描述

    2020-04-27 20:20:58 |WARN |http-nio-8110-exec-8 |AbstractHandlerExceptionResolver.java:194 |org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver |Resolved exception caused by handler execution: org.springframework.http.converter.HttpMessageNotReadableException: Required request body is missing: public com.ref.common.vo.R com.ref.his.controller.admincontroller.AdminLoginLogController.getLoginListByPage(java.lang.Long,java.lang.Long,com.ref.his.pojo.vo.admin.LoginLogVo)
    2020-04-27 20:20:58 |WARN |http-nio-8110-exec-7 |ExceptionHandlerExceptionResolver.java:411 |org.springframework.web.servlet.mvc.method.annotation.ExceptionHandlerExceptionResolver |Failed to invoke @ExceptionHandler method: public com.ref.common.vo.R com.ref.common.handler.GlobaIExceptionHandler.error(com.fasterxml.jackson.core.JsonParseException)
    java

    展开全文
  • 大概总结一下吧 入参的化,其实不用太担心,无论你使用的是@JSONField、@JsonFormat及@DateTimeFormat它都将会yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss...

    概述

    大多时候注解不会用、用错,可能是你不了解这个注解导致的,有时候做测试得出的结论也会是片面的,建议根据其所属jar包看看官方文档,来理解、找解决方案

    @JSONField

    结束@JSONField之前,介绍一下fastjson,fastjson是阿里的开源解析库,支持将Java Bean序列化为JSON字符串,也可以将JSON字符串反序列化为Java Bean

    JSONField可以用在字段上或者getter/setter方法上,它的作用有很多,包括,日期格式化,指定不序列化的字段,指定字段的顺序

    对于日期的格式化,在注解上写一下就好了,它就会按照你指定的格式输出

          @JSONField(format="yyyyMMdd")
          public Date date;
    

    @JsonFormat

    @JsonFormat是jackson提供的一个注解,主要用来控制日期和日历类型的输出格式,它可以作用在字段上,也可以作用在getter方法上。当然你也可以为它指定时区

    比如

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd")
    private Date createdDate;
    

    输出:

    { ... , "currentDate":"2016-12-18", ...}
    

    @DateTimeFormat

    @DateTimeFormat是SpringMVC提供的一个注解,作用的化,格式化前台的输入数据,虽然@JSONField、@JsonFormat也都可以做到,而且@DateTimeFormat不好的一点就是,从后端读取数据出来的话,是以long类型输出的,不会格式化为你想要的类型输出

    做个测试:

    出参,数据库类型为Date
    在这里插入图片描述

    在这里插入图片描述
    转换为long类型。

    出参,数据库类型为DateTime

    在这里插入图片描述
    在这里插入图片描述

    转换为long类型

    有没有看到。

    大概总结一下吧

    入参的化,其实不用太担心,无论你使用的是@JSONField、@JsonFormat及@DateTimeFormat它都将会yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss转换为yyyy-MM-dd或yyyy-MM-dd HH:mm:ss存储到数据库中

    有时候,你前端传yyyy-MM-dd HH:mm:ss 而使用@JSONField、@JsonFormat及@DateTimeFormat指定为yyyy-MM-dd,也能正确的转换为yyyy-MM-dd HH:mm:ss存到数据库中,我想应该是fastJson、jackson、springMVC底层做了转换,以前端传过来的数据为主

    但是当数据库类型为DateTime类型时,传入格式为yyyyMMdd HH:mm:ss时,@JsonFormat及@DateTimeFormat是不支持这种格式的,会报错

    对于出参,@JSONField、@JsonFormat都可以转化为你想要的日期格式,而@DateTimeFormat对于格式为yyyyMMdd、yyyy/MM/dd、yyyyMMdd HH:mm:ss、yyyy/MM/dd HH:mm:ss、yyyy-MM-dd、yyyy-MM-dd HH:mm:ss都以long类型输出

    展开全文
  • java项目统一打印入参等日志 1.背景 2.设计思路 3.核心代码 3.1 自定义注解 3.2 实现BeanFactoryPostProcessor接口 3.3 实现MethodInterceptor编写打印日志逻辑 3.4 实现BeanPostProcessor接口 3.5 启动类配置...
  • 想到的统一封装的方法就是创建一接口或是抽象类,每种电视产品的出或是入参都继承,或使用map形式,根据每种不同的产品进行个性化添加; 代码结构图: 电视生产统一接口: public interface ProductTV { // 场景说明:...
  • mybatis 的入参和出

    2019-09-06 09:50:25
    1.关于resulttype 返回值 1.1 实体类 resulType ='user',,返回的实例类,或者...2.2dao层 注解@param入参 2.3 下标入参 2.4 list 入参   2.5 map 入参      
  • 文章目录源码 & 原理入参与返回值 源码 & 原理 https://juejin.cn/post/6844903815859322893 Spring 入参与返回值 ...
  • create or replace procedure testmz(inYear in NUMBER, inmonth in VARCHAR, qtynum out number ) as begin sel...
  • 话不多说,直接上Code ... import java.lang.annotation.*;... * 日志处理(结合SysLogAspect.java使用,作用于方法上,自动记录方法的入参、出等信息) * * @author : She Leiming * @date : 2019-08-20 14:48 */...
  • 的高阶应用篇,由于增加了框架级别的入参和出定义,导致swagger无法识别外部的定义,仅仅识别为控制器方法的定义。如果追根溯源,这个跟swagger也没太大的关系,应该是asp提供的ApiExplorer的问题,毕竟是静态反射...
  • Java面试题大全(2020版)

    万次阅读 多人点赞 2019-11-26 11:59:06
    首先根据key的hashcode重新计算hash值,根绝hash值得到这个元素在数组中的位置(下标),如果该数组在该位置上已经存放了其他元素,那么在这个位置上的元素将以链表的形式存放,新加入的放在链头,最先加入的放链尾....
  • <p>WEBSERVICE接口用xml来写入和返回的参数</p>
  • 1、控制器入参String无法转为java.util.Date 2、控制器返回时间字段便成时间戳 解决 1、控制器入参无法转化类型 在入参属性加上@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”) 2、返回值时间字段便成了时间错 ...
  • 在使用webservice的时候,我们有时候需要使用XML格式来进行传递入参或者是出,那么入参格式怎么来进行拼接呢? 请看 /** * @Author: yld * @Date: 2018-12-03 10:36 * @Version 1.0 */ public class XmlUtils ...
  • vue-router的传参与汇总一. params方法1.通过传参与params取2.通过编程式路由传参与params取二.query方法1.通过传参与query取2.通过编程时路由传参与query取 一. params方法 1.通过传参与params取 ...
  • 1. 调用某些方法是有时候要自己方法的入参和出很麻烦,可以用Aspect做统一日志处理,仅对Class类(注意非接口)使用,在类的方法上加上@ApiOperation 注解如下@ResponseBody @RequestMapping(value = "/url&...
  • // run()方法不同的是,call()方法具有返回值 @Override public Integer call() { int sum = 0; for (; i ; i++) { System.out.println(Thread.currentThread().getName() + " ," + Test.arr.get(i)); sum ...
  • 功能点描述:对某个service的方法执行前,获取出入,对入参的参数进行修改,将参数进行替换。然后在这个方法执行完毕后,再对其返回结果进行修改。主要就是对一个方法装饰一下。说到装饰,第一想到的是采用装饰器...
  • TensorFlow入门

    千次阅读 多人点赞 2019-04-23 10:09:29
    它通常CPU结合用于CPU共享RAM,这对于大多数计算任务都是有益的。它是高端图形密集处理所必需的。独立GPU单元包含自己的RAM,称为VRAM,用于视频RAM。先进的GPU系统多核CPU协同工作。起初,图形单元是由英特尔...
  • 参数说明 使用举例 字段说明 检索调用记录 查看调用信息 重做一次调用 总结
  • Postman接口测试实践总结

    千次阅读 2019-12-05 14:19:51
    接口测试:就是通过测试不同情况下的入参与之相应的出信息来判断接口是否符合或满足相应的功能性、安全性要求。 测试步骤: 第一步:打开接口文档,在接口文档中可以看出每个接口的共有部分,比如地址、Headers...
  • Java的List和Map作为入参与clone

    千次阅读 2015-07-12 13:56:52
    然后把修改后的list作为出return回去,这样才不影响入参。 需要注意的是List和Map都是接口,是没有clone的。ArrayList和HashMap才有clone,而且是浅拷贝,而不是深拷贝 2 。 ps:以前对Map烂熟,现在啥都不...
  • oracle存储过程出

    千次阅读 2019-08-26 19:50:09
    out create or replace procedure GET_POINT_ID_BY_NAME_TMP(p_name varchar,p_point_id out varchar)
  • list集合根据对象某一属性排序: Collections.sort(xxlist, Comparatro.comparing(ClassName :: methodClass)) // 按照成功率进行升序排序 Collections.sort(list, Comparator.comparing...
  • 解放双手——相机IMU外的在线标定 一、相机IMU的融合 在SLAM的众多传感器解决方案中,相机IMU的融合被认为具有很大的潜力实现低成本且高精度的定位建图。这是因为这两个传感器之间具有互补性:相机在...
  • 本文主要介绍VINS状态估计器模块(estimator)中的视觉惯性联合初始化以及相机到IMU的外估计,其中前半部分对应论文第五章(V. ESTIMATOR INITIALIZATION B. Visual-Inertial Alignment),后半部分参考了沈老师组...
  • Http方式请求get、post(带、不带) import java.io.IOException; import java.util.ArrayList; import java.util.List; import java.util.Map; import org.apache.http.Consts; import org.apache....
  • 如何参与到开源项目中去

    千次阅读 2016-09-23 10:19:02
    编者:开源项目是程序员学习的一个途径,面对那些发展多年的代码,我们到底该如何才能参与其中?  如果你想参与到开源项目中去,却又不知道从何入手,这里提供一些参考方法或许能给你提供一些帮助,哪怕你对你目前...
  • 2018年类生命机器人仿生系统国际会议会议官网链接 介绍篇 《类生命机器人仿生系统》国际会议于2018年10月25-27日在中国科学院深圳先进技术研究院召开。此次会议由国际电气电子工程师学会机器人和自动化协会...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 18,231
精华内容 7,292
关键字:

参与与参入