精华内容
下载资源
问答
  • 动态参数

    万次阅读 2017-06-25 18:09:56
    动态参数

    动态参数

    1.

    def show(*arg):
        print(arg,type(arg))
    show(1,22,33,44)
    (1, 22, 33, 44) <class 'tuple'>   转化为元组

    2.

    def show(**arg):
        print(arg,type(arg))
    show(n1=1,n2=22,n3=33,n4=44)
    {'n1': 1, 'n2': 22, 'n3': 33, 'n4': 44} <class 'dict'>   转化为字典

    3.

    def show(*args,**kargs):
        print(args,type(args))
        print(kargs, type(kargs))
    show(1,22,33,44,n1=55,k2=66)
    (1, 22, 33, 44) <class 'tuple'>   转化为元组
    {'n1': 55, 'k2': 66} <class 'dict'>  转化为字典

    4.

    def show(*args,**kargs):
        print(args,type(args))
        print(kargs, type(kargs))
    l = [1,22,33,44]
    d=  {'n1':55,'k2':66}
    show(*l,**d)
    (1, 22, 33, 44) <class 'tuple'>   转化为元组
    {'n1': 55, 'k2': 66} <class 'dict'>  转化为字典

    使用动态参数实现字符串的格式化

    1.

    s = "{0} is {1}"
    result = s.format('dan','beautiful')
    print(result)
    dan is beautiful

    2.

    l = ['dan','beautiful']
    result = s.format(*l)
    print(result)
    dan is beautiful

    3.

    s = "{name} is {acter}"
    result = s.format(name='dan',acter='nice')
    print(result)
    dan is nice

    4.

    d = {'name':'dan','acter':'nice'}
    result = s.format(**d)
    print(result)
    dan is nice
    展开全文
  • java InvocationHandler invoke方法的第一个参数什么用?java InvocationHandler invoke方法的第一个参数什么用? 想知道它有什么用,就必须的先知道它到底是什么… 那InvocationHandler invoke的第一个参数...

    在知乎回答的一个问题,不过跑题了,但是还是有些价值的,搬到博客,原文链接
    java InvocationHandler invoke方法的第一个参数有什么用?

    java InvocationHandler invoke方法的第一个参数有什么用?
    想知道它有什么用,就必须的先知道它到底是什么…

    那InvocationHandler invoke的第一个参数到底是什么呢?
    这是 OpenJDK7中InvocationHandler.java接口的注释中的部分:

    * @param   proxy the proxy instance that the method was invoked 

    看样子是 代理类本身的一个实例.那代理类是什么梗?
    其实代理类就是动态代理动态生成的类.
    我自己写了一个动态代理,基本都差不多,就不全贴代码了,那么下面在InvocationHandler接口的invoke你增加点内容:

     public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println(proxy.getClass().getName());
            return method.invoke(object,args);
        }

    看下输出:
    这里写图片描述

    是个:com.sun.proxy.$Proxy0类的实例.
    那么这个类究竟是怎么来的呢?
    动态代理这个黑盒子又到底做了什么?
    生成的这个类为何叫做代理类的实例?
    其实动态代理的具体实现(大部分)在ProxyGenerator.java类里.我这里说个大概套路.
    其实本质做的事情就是合成你要的代理类,用什么合成,就是你传入的InvocationHandler接口的实现类和要代理的接口.这也是为什么咱们要自己保存要被代理的对象:

    public class MyProxy implements InvocationHandler{
        Object object;
    
        public MyProxy(Object object) {
            this.object = object;
        }

    因为生成的代理类就是个空壳子,下面修改下invoke方法.咱们把生成的字节码保存起来

        @Override
        public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
            System.out.println(proxy.getClass().getName());
            byte[]  b= ProxyGenerator.generateProxyClass(proxy.getClass().getSimpleName(),proxy.getClass().getInterfaces());
            FileOutputStream out = new FileOutputStream("./"+proxy.getClass().getSimpleName()+".class");
            out.write(b);
            out.flush();
            out.close();
            return method.invoke(object,args);
        }

    调用代理后,成功拿到$Proxy0.class
    这里写图片描述
    然后直接反编译,这个东西到底是什么…
    这是一个实现了我在生成代理传入的接口的class的类..
    然后看下如何找到这个invoke的

      public final int get(String var1) throws  {
            try {
                return ((Integer)super.h.invoke(this, m4, new Object[]{var1})).intValue();
            } catch (RuntimeException | Error var3) {
                throw var3;
            } catch (Throwable var4) {
                throw new UndeclaredThrowableException(var4);
            }
        }

    ….super.h就是你实现的InvocationHandler具体实例,那么很明显第一个传入的第一个参数就是this喽.
    this很明显就是生成代理类的实例,也就是楼主想要的知道的类型.

    然后invoke里面的method是怎么拿到的?
    在生成的代理类的static块你有如下部分:

     m1 = Class.forName("java.lang.Object").getMethod("equals", new Class[]{Class.forName("java.lang.Object")});
     m2 = Class.forName("java.lang.Object").getMethod("toString", new Class[0]);
     m3 =.......
    ........你接口声明的方法++++.........

    jdk动态代理只能代理接口怪我喽?

    补充:我好像看跑题了,,,,,,第一个参数有什么用,第一个参数有什么用,第一个参数有什么用第一次
    第一个参数卵用都没有,只有我这种闲的蛋疼的人….反编译看看…

    =======================================
    生成的代理类本身继承了Proxy,因此也一定能拿到传入的代理对象和自己写的Handle

            Field f = proxy.getClass().getSuperclass().getDeclaredField("h");
            f.setAccessible(true);
            System.out.println(f.get(proxy).getClass() + "------" + f.get(proxy));

    不过个人觉得纯属智障行为.

    不过经过查阅资料,有传说:

    (有点个人猜测)因为InvocationHandler是proxy对象的参数,在proxy调用某个目标对象的方法时,可能会采用回调机制调用InvocationHandler的invoke(Object proxy, Method method, Object[] args)方法,这个时候proxy对象则成为形式参数。(这方面的回调在jdk中比较多,例如filenamefilter,比较器,所以猜测了一下 :) )

    展开全文
  • 关键词:Retrofit 动态参数、非固定参数、非必须参数有如下场景: 请求数据时: 1. 用户未登录时,不带参数userId; 2. 登录时带上参数userId. 如下接口:@GET("index.php?r=default/homepage") Observable...

    关键词:Retrofit 动态参数、非固定参数、非必须参数

    有如下场景:

    请求数据时:
    1. 用户未登录时,不带参数userId;
    2. 登录时带上参数userId.

    如下接口:

    @GET("index.php?r=default/homepage")
    Observable<Response<Exercise>> getDataList(@Query("page") int page);
    
    @GET("index.php?r=default/homepage")
    Observable<Response<Exercise>> getDataList(@Query("page") int page, @Query("user_id") int userId);

    两个接口,区别就在于有没有『user_id』参数。

    这样做,总感觉有点罗嗦,体现不出Retrofit的优越性。有没有更好的方法呢?当然有,那就是动态参数(其实很简单)。

    上面的两个接口合并为一个:

    @GET("index.php?r=default/homepage")
    Observable<Response<Exercise>> getDataList(@Query("page") int page,@Query("user_id") Integer userId);

    使用

    登录:

    APIWrapper.getInstance().getDataList(mCurrentPage, 10);

    未登录:

    APIWrapper.getInstance().getDataList(mCurrentPage, null);

    Retrofit运行null值参数,如果在实际调用的时候传一个null, 系统也不会出错,会把这个参数当作没有。

    对于参数名称不固定的情况也可以使用Map

    @GET("applist/apps/detail")
    Call<ResponsePojo> getDetail(@QueryMap Map<String, String> param);
    

    当然,还可以支持固定参数与动态参数的混用

    @GET("applist/apps/detail?type=detail")
    Call<ResponsePojo> getDetail(@Query("appid") String appid);

    修改Header

    固定添加Header

    @Headers("Accept-Encoding: application/json")

    @GET("applist/apps/detail?type=detail")
    Call<ResponsePojo> getDetail(@Query("appid") String appid);

    动态添加Header

    @Headers("Accept-Encoding: application/json")

    @GET("applist/apps/detail?type=detail")
    Call<ResponsePojo> getDetail(@Header ("Accept-Encoding") String appid);

    多个Header

    @Headers({
        "X-Foo: Bar",
        "X-Ping: Pong"
      })
    @GET("applist/apps/detail?type=detail")
    Call<ResponsePojo> getDetail(@Header ("Accept-Encoding") String appid);

    固定与动态的Header的混合

    @Headers("Accept-Encoding: application/json")

    @GET("applist/apps/detail?type=detail")
    Call<ResponsePojo> getDetail(@Header ("Location") String appid);

    以上用法同样适用于Post请求。

    That’s all.

    或许你对这个也感兴趣:

    Retrofit2.0 公共参数(固定参数)

    展开全文
  • ROS使用动态参数

    千次阅读 2018-01-22 20:49:14
    在ROS系统中实现某个功能时,时常需要外部...在ROS中可以通过动态参数功能来实现。接下讲解ROS中动态参数的应用。 1. 创建cfg文件  roscd ROS_Test1  mkdir cfg  vim ROS_Test1_cfg.cfg  编辑内容如下所示:

     在ROS系统中实现某个功能时,时常需要外部动态调整参数。例如控制中PID参数的调节,或者需要查看机器人在不同参数

    的性能表现,此时外部参数的动态调节显得极其便利。在ROS中可以通过动态参数功能来实现。接下讲解ROS中动态参数的应用。

    1. 创建cfg文件

     roscd ROS_Test1

     mkdir cfg

     vim ROS_Test1_cfg.cfg

     编辑内容如下所示:

    #!/usr/bin/env python
    PACKAGE = "ROS_Test1"
    
    from dynamic_reconfigure.parameter_generator_catkin import *
    
    gen = ParameterGenerator()
    
    gen.add("int_param", int_t, 0, "int parameter", 1, 0, 10);
    gen.add("double_param", double_t, 0, "double parameter", .1, 0.0, 1.0);
    gen.add("bool_param", bool_t, 0, "bool parameter", True);
    gen.add("str_param", str_t, 0, "string parameter", "ROS_Test1");
    
    size_enum = gen.enum([ gen.const("Low",      int_t, 0, "Low is 0"),
                           gen.const("Medium",     int_t, 1, "Medium is 1"),
                           gen.const("High",      int_t, 2, "Hight is 2")],
                         "Select from the list")
    
    gen.add("size", int_t, 0, "Select from the list", 1, 0, 3, edit_method=size_enum)
    
    exit(gen.generate(PACKAGE, "ROS_Test1", "Test1_"))
     代码解释:

    #!/usr/bin/env python
    PACKAGE = "ROS_Test1"
    
    from dynamic_reconfigure.parameter_generator_catkin import *
    
    gen = ParameterGenerator()
     以上代码初始化ROS并导入参数生成器。

    gen.add("int_param", int_t, 0, "int parameter", 1, 0, 10);
    gen.add("double_param", double_t, 0, "double parameter", .1, 0.0, 1.0);
    gen.add("bool_param", bool_t, 0, "bool parameter", True);
    gen.add("str_param", str_t, 0, "string parameter", "ROS_Test1");
     以上代码为加入不同的参数。其中gen.add(...)格式如下:

     gen.add(name, type, level, description, default, min, max)

     name: 参数的名称

     type: 参数类型

     level:一个传递给回调的位掩码

     description: 一个描述参数

     default: 节点启动的初始值

     min: 参数最小值

     max: 参数最大值

    exit(gen.generate(PACKAGE, "ROS_Test1", "Test1_"))
    生成必要的文件并退出。上述的cfg中的代码为python代码。

     修改cfg文件的权限

     chmod a+x ROS_Test1_cfg.cfg(或 chmod 777 ROS_Test1_cfg.cfg)

    2. 编辑CMakeLists.txt文件

     加入以下代码

    find_package(catkin REQUIRED COMPONENTS
      roscpp
      std_msgs
      message_generation
      dynamic_reconfigure
    )
     generate_dynamic_reconfigure_options(
       cfg/ROS_Test1_cfg.cfg
     )

    3. 编辑cpp文件

     roscd ROS_Test1

     vim node_e.cpp

     编辑内容如下所示

    #include "ros/ros.h"
    #include <dynamic_reconfigure/server.h>
    #include <ROS_Test1/Test1_Config.h>
    
    void callback(ROS_Test1::Test1_Config &config, uint32_t level)
    {
    	ROS_INFO("Reconfigure Request: %d %f %s %s %d",
    		config.int_param,
    		config.double_param,
    		config.str_param.c_str(),
    		config.bool_param?"True":"False",
    		config.size);
    }
    
    int main(int argc, char **argv)
    {
    	ros::init(argc, argv, "node_e_dynamic_reconfigure");
    	dynamic_reconfigure::Server<ROS_Test1::Test1_Config> server;
    	dynamic_reconfigure::Server<ROS_Test1::Test1_Config>::CallbackType f;
    	f = boost::bind(&callback, _1, _2);
    	server.setCallback(f);
    	ros::spin();
    	return 0;
    }

    4. 编译运行

     cd ~/catkin_ws

     catkin_make

     roscore

     新开终端执行:

     cd ~/catkin_ws

     source devel/setup.bash

     roslaunch ROS_Test1 Test1_node_e

     新开终端执行:

     rosrun rqt_console rqt_console

     运行结果如下所示



    展开全文
  • mybatis动态参数及动态插入

    千次阅读 2018-10-18 19:32:54
    //动态拼接的参数 private String params ; //动态拼接的value private String targetValues ; public String getTableName ( ) { return tableName ; } public void ...
  • JMeter 动态参数请求

    千次阅读 2016-10-11 15:38:24
    JMeter 动态参数请求 添加执行任务 设置全局参数 设置cookice 添加http请求可设置 请求头信息 请求方式 数据传输方式 等 使用 BeanShell PreProcessor 前置处理参数 可添加 察看结果树 或者 图形结果 等观察 JMeter ...
  • C语言动态参数

    千次阅读 2012-10-10 17:47:52
    * 动态参数: * 在标准头文件中包含一组宏定义,它们对如何遍历 * 参数列表进行了定义。 * * va_list类型用于声明一个变量,该变量将一次引用个参数。定义变量ap * * va_list ap; * * 宏va_star
  • (0)">如何传递一个动态参数(PHP)
  • Jmeter接口压测之动态参数与动态token

    千次阅读 2019-01-28 11:57:03
    我理解的用户参数类似于变量,一个变量可以有多个值,每次请求刷新变量值来达到动态参数的目的 http 请求右键/添加前置处理器/用户参数。选择每次迭代更新一次 使用用户参数:${参数名} 运行线程组如下:每次...
  • Python scrapy 动态传入自定义参数

    万次阅读 2021-04-26 19:51:59
    动态传递自定义参数启动 def run(model_id): # 启动爬虫 car_images_spider是爬虫脚本文件名:spiders/car_images_spider.py # -a 传递参数 model_id print(12312312313) print(model_id) cmdline.execute(f'...
  • postman配置动态参数

    千次阅读 2018-07-23 18:24:00
    2、在接口中动态配置参数 var data = JSON.parse(responseBody); pm.environment.set("token", data.token); 3、查看 转载于:https://www.cnblogs.com/90909de0/p/9356183.html...
  • PostgreSQL查询 动态输入参数

    千次阅读 2019-08-30 18:42:38
    工作中会碰到临时几天查询相关报表的情况,sql写好后每天只需改日期...来实现动态参数输入的效果。现在公司使用pg/sql,还是想能像之前的pl/sql一样能动态输入参数,但是&却不起作用了,在网上寻找良久,发现都...
  • vue动态修改$router参数

    万次阅读 2018-05-14 17:47:42
    vue动态修改$router参数 import merge from 'webpack-merge'; 修改原有参数 this.$router.push({ query:merge(this.$route.query,{'maxPrice':'630'}) }) 新增一个参数: this.$router.push({ query:merge...
  • c# dapper 动态参数

    千次阅读 2017-03-24 11:48:31
    string where = null; var p = new DynamicParameters(); if (classId != null) { where = " and classId=:classId "; p.Add("classId", class
  • MyBatis动态SQL中Map参数处理

    万次阅读 2019-06-25 18:30:28
    在MyBatis中,如果我们需要传递两个参数,有一种方式是通过Map作为传入参数,在动态SQL中,我们需要对传入的Map参数中的值进行判断,然后进行动态SQL的条件拼接处理。 假设我们有传入参数map如下: map.put("name",...
  • Java基础--动态参数

    千次阅读 2016-10-08 23:12:15
    动态参数 package test.java15; public class Params { //动态参数--参数繁琐的问题,只能针对同一类型。对不同类型 用Object /** * 一个方法只能有1个动态参数 * 一个方法中,既有普通参数又有动态参数,...
  • 文章目录构建FeignClient接口实现动态url带参数的请求带动态参数的请求下载文件的请求带请求体的请求 官方使用文档:链接 构建FeignClient接口实现 public static final <T> T getFeignClient(Class<T> ...
  • IOS 函数传多个参数,动态参数

    千次阅读 2014-08-27 10:56:30
    1 -(void)exchangeTitles:(NSString *)titles,... { [titleArray removeAllObjects];...//定义一个指向个数可变的参数列表指针 va_start(params, titles);//va_start 得到第一个可变参数地址 NSString *arg;
  • 在Oracle的视图 v$parameter 中 ISSYS_MODIFIABLE 列能够查看参数属性,ISSYS_MODIFIABLE ='IMMEDIATE'为动态参数、 ISSYS_MODIFIABLE ='FALSE' 为静态参数 、 ISSYS_MODIFIABLE ='DERERRED' 为延迟参数(当前会话不...
  • MySql 存储过程 表名作为动态参数传入 DROP PROCEDURE IF EXISTS info_bak; CREATE PROCEDURE info_bak(IN talbeName VARCHAR(30), OUT retMsg VARCHAR(30)) BEGIN DECLARE v_err INT DEFAULT 0; DECLARE v_msg ...
  • vue的自定义指令动态参数

    千次阅读 2020-07-03 16:50:23
    动态指令参数参数动态的时候。 main.js //当参数的值是动态的时候 Vue.directive('color2', { bind: function(el, binding) { el.style.color = binding.value; } }) Vue.directive('color3', { bind: ...
  • c++为函数设置动态参数

    千次阅读 2017-11-19 11:33:18
    c++为函数设置动态参数 cstdarg
  • LoadRunner动态获取参数

    千次阅读 2014-06-10 17:07:30
    LoadRunner如果在脚本中需要动态获取参数,可以通过以下设置来实现 1.  点击Vuser->Parameter List获取如下设置界面   2.  New 设置参数,”NewParam”修改参数来源名字,然后点击”CreateTable”,设置参数...
  • 说明: 通过动态参数获取字段数据,抓取有规则列的字段值 在程序开发中,可能会遇到一些规则的字段名,在数据传递中通常需要对这些字段逐个赋值,以下报表是通过动态参数从数据表(结构体)中获取数据。 在透明表...
  • 润乾V4 润乾报表 参数模板 获取季度数据 动态参数
  • JavaWeb 为a标签添加动态请求参数

    千次阅读 2015-09-23 18:21:14
    JavaWeb 为a标签添加动态请求参数
  • Oracle区分参数动态、静态

    千次阅读 2012-09-20 08:50:02
    Oracle区分参数动态、静态 1、oracle参数文件概述 每一个数据库中都有一个操作系统文件叫参数文件,也叫初始化文件,该文件决定数据库的物理结构、内存、数据库的极限及系统大量的默认值,是进行数据库设计与...
  • birt api 实现动态参数报表

    热门讨论 2011-06-01 19:26:04
    使用Birt API 实现动态列参数报表 传入参数:columnNames字符串,动态绑定birt模板展现列,实现动态参数列报表。
  • vue中动态指令参数

    千次阅读 2020-11-22 22:23:34
    vue 在 2.6.0 版本的时候新增了动态参数,可以用方括号括起来的 JavaScript 表达式作为一个指令的参数: <a v-bind:[attributeName]="url"> ... </a> 这里的 attributeName 会被作为一个 JavaScript ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,552,840
精华内容 621,136
关键字:

动态参数是什么