精华内容
下载资源
问答
  • 自定义变量
    2021-10-05 18:33:13

    前言:

    变量

    1,系统变量 :全局变量,会话变量。
    2,自定义变量 :用户变量,局部变量。

    自定义变量

    用户变量

    作用域:针对于当前的会话(连接)有效同于会话变量的作用域 ,同于会话变量的作用域,应用在任何地方,也就是begin end 里面或begin end 外面

    赋值的操作符: = 或 :=

    1,声明并初始化

    set @用户变量名 =; 
    set @用户变量名 := 值;
    select @用户变量名 := 值; 
    

    2,赋值(更新用户变量的值)

    方式一:通过set 或者select

    set @用户变量名 =; 
    set @用户变量名 := 值;
    select @用户变量名 := 值; 
    

    方式二:通过select into

    select 字段 into @变量名 from;
    

    第三步 : 使用(查看用户变量的值)

    select @用户变量名;
    

    案例:

    声明并初始化

    set @name = 'join';
    set @name = 100;
    set @count = 1;
    

    赋值

    select count(*) into @count from employees;
    

    查看

    select @count;
    

    局部变量

    作用域 :仅仅定义在它的begin end 中有效,应用在begin end 中的第一句话

    1,声明

    declare 变量名 类型
    declare 变量名 类型 default;
    

    2,赋值

    方式一:通过set 或者select

    set 用户变量名 =; 
    set 用户变量名 := 值;
    select @用户变量名 := 值; 
    

    方式二:通过select into

    select 字段 into 变量名 from;
    

    3,使用

    select 局部变量名;
    

    对比用户变量和局部变量:

    作用域定义和使用的位置语法
    用户变量当前会话会话中的任何地方必须加@符号,不用限定类型
    局部变量begin end中只能在begin end 中 且为第一句话一般不加@符号,需要限定类型

    案例:声明两个变量并赋初始值,求和,并打印。

    1,用户变量

    set @m = 1;
    set @n = 2;
    set @sum = @m + @n;
    

    2,局部变量

    declare m int default 1;
    declare n int default 2;
    declare sum int;
    set sum = m + n;
    select sum;
    

    局部变量会报错,因为没有在begin end 语句中

    更多相关内容
  • 而nginx中的变量分为两种,自定义变量与内置预定义变量 内置变量 声明 可以在sever,http,location等标签中使用set命令(非唯一)声明变量,语法如下 set $变量名 变量值 注意nginx中的变量必须都以$开头。 ...
  • 易语言自定义变量类型讲解视频教程。Tags:易语言视频教程单课基础课程集合。
  • 以下是对MySQL中使用自定义变量,编写一个UNION的示例进行了详细的介绍,需要的朋友可以过来参考下
  • Mysql自定义变量的使用

    千次阅读 2021-01-18 18:00:17
    用户自定义变量是一个容易被遗忘的MySQL特性,但是如果能用的好,发挥其潜力,在某些场景可以写出非常高效的查询语句。在查询中混合使用过程化和关系化逻辑的时候,自定义变量可能会非常有用。单纯的关系查询将所有...

    用户自定义变量是一个容易被遗忘的MySQL特性,但是如果能用的好,发挥其潜力,在某些场景可以写出非常高效的查询语句。在查询中混合使用过程化和关系化逻辑的时候,自定义变量可能会非常有用。单纯的关系查询将所有的东西都当成无序的数据集合,并且一次性操作它们。MySQL则采用了更加程序化的处理方式。MySQL的这种方式有它的弱点,但如果能够熟练地掌握,则会发现其强大之处,而用户自定义变量也可以给这种方式带来很大的帮助。

    用户自定义变量是一个用来存储内容的临时容器,在连接MySQL的整个过程中都存在,可以使用下面的SET和SELECT语句来定义它们:

    mysql> SET @one := 1;

    mysql> SET @min_actor := (SELECT MIN(actor_id) FROM sakila.actor);

    mysql> SET @last_week := CURRENT_DATE - INTERVAL 1 WEEK;

    然后可以在任何可以使用表达式的地方使用这些自定义变量:

    SELECT ... WHERE col <= @last_week;

    在了解自定义变量的强大之前,我们先来看看它自身的一些属性和限制,看看在哪些场景下我们不能使用用户自定义变量:

    使用自定义变量的查询,无法使用查询缓存

    不能再使用常量或者标识符的地方使用自定义变量,例如表名、列名和LIMIT子句中。

    用户自定义变量的生命周期是在一个连接中有效,所以不能用它们来做连接间的通信。

    如果使用连接池或者持久化连接,自定义变量可能让看起来毫无关系的代码发生交互。

    自定义变量的类型是一个动态类型。

    MySQL优化器在某些场景下可能会将这些变量优化掉,这可能导致代码不按预想的方式运行。

    赋值的顺序和赋值的时间点并不总是固定的,这依赖于优化器的决定。

    赋值符号 :=的优先级非常低,所以需要注意,赋值表达式应该使用明确的括号。

    使用未定义变量不会产生任何语法错误,如果没有意识到这一点,非常容易犯错。

    优化排名语句

    使用自定义变量的一个特性是你可以在给一个变量赋值的同时使用这个变量,即“左值”特性。例如:

    mysql> SET @rownum := 0;

    mysql> SELECT actor_id, @rownum := @rownum + 1 AS rownum

    FROM actor order by actor_id LIMIT 3;

    +----------+--------+

    | actor_id | rownum |

    +----------+--------+

    | 1 | 1 |

    | 2 | 2 |

    | 3 | 3 |

    +----------+--------+

    这个例子的实际意义并不大,它只是实现了一个和该表主键一样的列。不过,我们可以把这当作一个排名。现在我们来看一个更复杂的用法。我们先编写一个查询获取演过最多电影的前10位演员,然后根据他们的出演电影次数做一个排名,如果出演的电影数量一样,则排名相同。我们先编写一个查询,返回每个演员参演电影的数量。

    mysql> SET @curr_cnt := 0, @prev_cnt := 0, @rank := 0;

    mysql> SELECT actor_id, COUNT(*) as cnt

    -> FROM film_actor

    -> GROUP BY actor_id

    -> ORDER BY cnt DESC

    -> LIMIT 10;

    +----------+-----+

    | actor_id | cnt |

    +----------+-----+

    | 107 | 42 |

    | 102 | 41 |

    | 198 | 40 |

    | 181 | 39 |

    | 23 | 37 |

    | 81 | 36 |

    | 37 | 35 |

    | 106 | 35 |

    | 60 | 35 |

    | 13 | 35 |

    +----------+-----+

    现在我们再把排名加上去,这里看到有四个演员都参演了35部电影,所以他们的排名应该是相同的。我们使用三个变量来实现:一个用来记录当前的排名,一个用来记录前一个演员的排名,还有一个用来记录当前演员参演的电影数量。只有当前演员参演的电影的数量和前一个演员不同时,排名才变化。我们试试下面的写法:

    mysql> SELECT actor_id,

    -> @curr_cnt := COUNT(*) AS cnt,

    -> @rank := IF(@prev_cnt <> @curr_cnt, @rank + 1, @rank) AS rank,

    -> @prev_cnt := @curr_cnt AS dummy

    -> FROM film_actor

    -> GROUP BY actor_id

    -> ORDER BY cnt DESC

    -> LIMIT 10;

    +----------+-----+------+-------+

    | actor_id | cnt | rank | dummy |

    +----------+-----+------+-------+

    | 107 | 42 | 0 | 0 |

    | 102 | 41 | 0 | 0 |

    | 198 | 40 | 0 | 0 |

    | 181 | 39 | 0 | 0 |

    | 23 | 37 | 0 | 0 |

    | 81 | 36 | 0 | 0 |

    | 106 | 35 | 0 | 0 |

    | 60 | 35 | 0 | 0 |

    | 13 | 35 | 0 | 0 |

    | 37 | 35 | 0 | 0 |

    +----------+-----+------+-------+

    我们发现跟我们设想的不太一样。这里,通过EXPLAIN我们看到将会使用临时表和文件排序,所以可能是由于变量赋值的时间和我们预料的不同。

    使用SQL语句生成排名值通常需要做两次计算,例如,需要额外计算一次出演过相同数量电影的演员有哪些。使用变量则可一次完成---这对性能是一个很大的提升。

    针对这个案例,另一个简单的方案是在FROM子句中使用子查询生成的一个中间的临时表:

    mysql> SELECT actor_id,

    -> @curr_cnt := cnt AS cnt,

    -> @rank := IF(@prev_cnt <> @curr_cnt, @rank + 1, @rank) AS rank,

    -> @prev_cnt := @curr_cnt AS dummy

    -> FROM (

    -> SELECT actor_id, COUNT(*) AS cnt

    -> FROM film_actor

    -> GROUP BY actor_id

    -> ORDER BY cnt DESC

    -> LIMIT 10

    -> ) as der;

    +----------+-----+------+-------+

    | actor_id | cnt | rank | dummy |

    +----------+-----+------+-------+

    | 107 | 42 | 1 | 42 |

    | 102 | 41 | 2 | 41 |

    | 198 | 40 | 3 | 40 |

    | 181 | 39 | 4 | 39 |

    | 23 | 37 | 5 | 37 |

    | 81 | 36 | 6 | 36 |

    | 37 | 35 | 7 | 35 |

    | 106 | 35 | 7 | 35 |

    | 60 | 35 | 7 | 35 |

    | 13 | 35 | 7 | 35 |

    +----------+-----+------+-------+

    避免重复查询刚刚更新的数据

    如果在更新行的同学又希望获得该行的信息,避免重复查询,可以用变量巧妙的实现。例如,我们的一个客户希望能够更高效地更新一条记录的时间戳,同时希望查询当前记录中存放的时间戳是什么。简单地,可以用下面的代码来实现:

    UPDATE t1 SET lastUpdated = NOW() WHERE id = 1;

    SELECT lastUpdated FROM t1 WHERE id = 1;

    使用变量,我们可以按如下方式重写查询:

    UPDATE t1 SET lastUpdated = NOW() WHERE id = 1 AND @now := NOW();

    SELECT @now;

    上面看起来仍然需要两个查询,需要两次网络来回,但是这里第二个查询无需访问数据表,所以会快很多。

    统计更新和插入的数量

    INSERT INTO t1(c1, c2) VALUES(4, 4), (2, 1), (3, 1)

    ON DUPLICATE KEY UPDATE

    c1 = VALUES(c1) + (0 * (@x := @x + 1));

    当每次由于冲突导致更新时对变量@x自增一次,然后表达式乘以0让其不影响更新的内容,另外,MySQL的协议会返回被更改的总行数,所以不需要单独统计。

    确定取值的顺序

    使用用户自定义变量的一个最常见的问题就是没有注意到在赋值和读取变量的时候可能是在查询的不同阶段。例如,在SELECT子句中进行赋值然后再WHERE子句中读取变量,则可能变量取值并不如你所想:

    mysql> SET @rownum := 0;

    mysql> SELECT actor_id, @rownum := @rownum + 1 AS cnt

    -> FROM actor

    -> WHERE @rownum <= 1;

    +----------+------+

    | actor_id | cnt |

    +----------+------+

    | 58 | 1 |

    | 92 | 2 |

    +----------+------+

    因为WHERE和SELECT是在查询执行的不同阶段被执行的。如果在查询中再加入ORDER BY的话,结果可能会更不同;

    mysql> SET @rownum := 0;

    mysql> SELECT actor_id, @rownum := @rownum + 1 AS cnt

    -> FROM actor

    -> WHERE @rownum <= 1

    -> ORDER BY first_name;

    这是因为ORDER BY 引入了文件排序,而WHERE条件是在文件排序操作之前取值的,所以这条查询会返回表中的全部记录。解决这个问题的办法是让变量的赋值和取值发生在执行查询的同一阶段:

    mysql> SET @rownum := 0;

    mysql> SELECT actor_id, @rownum AS rownum

    -> FROM actor

    -> WHERE (@rownum := @rownum + 1) <= 1;

    +----------+--------+

    | actor_id | rownum |

    +----------+--------+

    | 58 | 1 |

    +----------+--------+

    编写偷懒的UNION

    假设需要编写一个UNION查询,其第一个子查询作为分支条件先执行,如果找到了匹配的行,则跳过第二个分支。例如先在一个频繁访问的表查找热数据,找不到再去另外一个较少访问的表查找冷数据。

    SELECT id FROM users WHERE id = 123;

    UNION ALL

    SELECT id FROM users_archived WHERE id = 123;

    上面的查询可以工作,但是无论第一个表找没找到,都会在第二个表再找一次,如果使用变量的话可以很好地规避这个问题。

    SELECT GREATEST(@found := -1, id) AS id, 'users' AS which_tbl

    FROM users WHERE id = 1

    UNION ALL

    SELECT id, 'users_archived'

    FROM users_archived WHERE id = 1 AND @found IS NULL

    UNION ALL

    SELECT 1, 'reset' FROM DUAL WHERE (@found := NULL) IS NOT NULL;

    用户自定义变量的其他用处

    通过一些实践,可以了解所有用户自定义变量能够做的有趣的事情,例如下面这些用法:

    查询运行时计算总数和平均值

    模拟GROUP语句中的函数FIRST()和LAST()

    S对大量数据做一些数据计算

    计算一个大表的MD5散列值

    编写一个样本处理函数

    模拟读/写游标

    在SHOW语句的WHERE子句中加入变量值

    mysql自定义变量

    mysql可以实现自定义变量,使用方式非常简单,代码如下: SELECT @i:=@i + 1 // 查询变量,值+1 FROM () i // 声明变量,初始值为0 如果有多条数据,那么这个变量就会 ...

    MySQL数据库&lpar;3&rpar;----设置和使用自定义变量

    MySQL支持定义自己的变量.这些变量可以被设置为查询结果,这使我们可以方便地把一些值存储起来供今后查询使用. ; +-----------------+ | @HisName:= name | +- ...

    mysql查询语句中自定义变量(转)

    转:http://blog.sina.com.cn/s/blog_1512521570102wrfl.htmlselect cost,@a:=@a+1 from testone,(select @a: ...

    mysql 自定义函数

    原文:http://www.cnblogs.com/zhangminghui/p/4113160.html 引言 MySQL本身提供了内置函数,这些函数的存在给我们日常的开发和数据操作带来了很大的便利 ...

    Mysql 的变量

    变量 MySQL是一门编程语言.所以存在变量.流程控制.函数.存储过程.触发器 MySQL分系统变量,与自定义变量 MySQL的某些功能是通过系统变量来实现的.例如:autocommit 查看系统变量 ...

    MySQL的变量分类总结

    在MySQL中,my.cnf是参数文件(Option Files),类似于ORACLE数据库中的spfile.pfile参数文件,照理说,参数文件my.cnf中的都是系统参数(这种称呼比较符合思维习惯 ...

    mysql之变量

    本文内容: 系统变量 用户变量 局部变量 首发日期:2018-04-18 系统变量: 系统变量就是系统已经提前定义好了的变量 系统变量一般都有其特殊意义.比如某些变量代表字符集.某些变量代表某些mys ...

    Mysql的变量一览

    Server System Variables(系统变量) MySQL系统变量(system variables)是指MySQL实例的各种系统变量,实际上是一些系统参数,用于初始化或设定数据库对系统资 ...

    mysql自定义函数并在存储过程中调用,生成一千万条数据

    mysql 自定义函数,生成 n 个字符长度的随机字符串 -- sql function delimiter $$ create function rand_str(n int) returns VA ...

    随机推荐

    coding题都在考察我们的什么技能

    其实不是都在考我们的算法设计,有的时候算法简单,但是coding却可能不那么简单,比如下面这道题目: 题:写一个把字符串的IP地址变成32位整数的函数,要求考察程序健壮性. 这题初看起来一点都不难,但 ...

    Appium 解决不能输入中文字符问题

    只需在初始化driver方法时,写这两行代码即可:   capabilities.setCapability("unicodeKeyboard", "True" ...

    poj 2406&colon;Power Strings(KMP算法,next&lbrack;&rsqb;数组的理解)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 30069   Accepted: 12553 D ...

    记录整合sprinmvc&plus;log4j的的过程

    简介 由于进一步的学习以及便于自己更好的调试程序中遇到的错误,开始了将log4j整合到web项目中,项目是基于springmvc的,所以就做了一个springmvc和web项目的整合demo,本篇博客 ...

    c&num; 关键字delegate、event(委托与事件)&lbrack;MSDN原文摘录&rsqb;&lbrack;1&rsqb;

    A delegate is a type that safely encapsulates a method, similar to a function pointer in C and C++. ...

    Java学习中,常用的命令管理(Java 学习中的小记录)

    Java学习中,常用的命令管理      作者:王可利(Star·星星) 一.Window中常见的dos命令 在哪里操作dos命令: Win7 ---> 开始  ---->所有程序---& ...

    Android中GridView滚动到底部加载数据终极版

    之前在项目中有一个需求是需要GridView控件,滚动到底部自动加载.但是呢GridView控件并不提供诸如ListView监听滚动到底部的onScrollListener方法,为了实现这样一个效果, ...

    FarPoint Spread ChildView子视图

    有一种需求场景在很多地方都会用到,就是父子关系(头表和子表的关系),比如订单和订单明细. 做过winform的朋友第spread控件应该比较熟悉,或者了解.他的展示方式就通过一个关联关系就可以了,下面 ...

    c语言之数据类型

    #include int main(void) { float weight, value; printf("Are you worth your weight ...

    IOS初级:story board的跳转

    本文要实现view1跳到view2,view2又跳回view1. 首先要在视图中拉出一条连接view1和view2的线. 下面是在view1的控制器中实现,从view1跳到view2 //发生跳转前会 ...

    展开全文
  • 6Nginx自定义变量

    千次阅读 2021-04-12 19:43:05
    文章目录19、nginx 变量1、nginx变量简介2、nginx 变量的定义和使用1、自定义变量2、内置预定义变量 19、nginx 变量 Nginx的配置文件使用语法的就是一门微型的编程语言。既然是编程语言,一般也就少不了“变量”这种...

    19、nginx 变量

    Nginx的配置文件使用语法的就是一门微型的编程语言。既然是编程语言,一般也就少不了“变量”这种东西。

    1、nginx变量简介
    • 所有的 Nginx变量在 Nginx 配置文件中引用时都须带上 $ 前缀

    • 在 Nginx 配置中,变量只能存放一种类型的值,而且也只存在一种类型,那就是字符串类型

    • 所有的变量值都可以通过这种方式引用:

      $变量名
      
      2、nginx 变量的定义和使用

      nginx中的变量分为两种,自定义变量与内置预定义变量

      1、自定义变量

      1、声明变量
      可以在sever,location等标签中使用set命令声明变量,语法如下

      set $变量名 变量值
      

      注意:

      • nginx 中的变量必须都以$开头
      • nginx 的配置文件中所有使用的变量都必须是声明过的,否则 nginx 会无法启动并打印相关异常日志

      nginx安装echo模块

      查看已经安装的nginx的版本
      [root@192 ~]# nginx -V 
      上传或者下载一个相同版本的nginx包
      [root@192 ~]# ls
      anaconda-ks.cfg  nginx-1.16.0.tar.gz
      下载echo模块的安装包
      [root@192 ~]# wget https://github.com/openresty/echo-nginx-module/archive/v0.61.tar.gz
      [root@192 ~]# ls
      anaconda-ks.cfg  nginx-1.16.0.tar.gz  v0.61.tar.gz
      解压到相同路径下:
      [root@192 ~]# tar xzf nginx-1.16.0.tar.gz -C /usr/local/
      [root@192 ~]# tar xzf v0.61.tar.gz -C /usr/local/
      安装编译工具
      [root@192 ~]# cd /usr/local/
      [root@192 local]# yum -y install pcre pcre-devel openssl openssl-devel gcc gcc-c++   zlib zlib-devel gd-devel
      添加模块:
      [root@192 local]# cd nginx-1.16.0/
      添加上原来已经有的参数和新添加的模块:
      [root@192 nginx-1.16.0]# ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/usr/local/echo-nginx-module-0.61
      [root@192 nginx-1.16.0]# make   #编译,不要make install 否则会覆盖原来的文件
      [root@192 nginx-1.16.0]# mv /usr/sbin/nginx /usr/sbin/nginx_bak #将原来的nignx备份
      [root@192 nginx-1.16.0]# cp objs/nginx /usr/sbin/  拷贝nignx
      [root@192 nginx-1.16.0]# systemctl restart nginx  #启动
      [root@192 nginx-1.16.0]# nginx -V  查看模块是否添加成功
      nginx version: nginx/1.16.0
      built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
      built with OpenSSL 1.0.2k-fips  26 Jan 2017
      TLS SNI support enabled
      configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib64/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-compat --with-file-aio --with-threads --with-http_addition_module --with-http_auth_request_module --with-http_dav_module --with-http_flv_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_mp4_module --with-http_random_index_module --with-http_realip_module --with-http_secure_link_module --with-http_slice_module --with-http_ssl_module --with-http_stub_status_module --with-http_sub_module --with-http_v2_module --with-mail --with-mail_ssl_module --with-stream --with-stream_realip_module --with-stream_ssl_module --with-stream_ssl_preread_module --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' --add-module=/usr/local/echo-nginx-module-0.61
      

      2、配置 $foo=hello

    [root@192 ~]# cd /etc/nginx/conf.d/
    [root@192 conf.d]# vim echo.conf
    server {
            listen 80;
            server_name     localhost;
            location /test {
                    set $foo hello;
                    echo "foo: $foo";
            }
    }
    

    输出

    [root@192 conf.d]# nginx -s reload
    [root@192 conf.d]# curl localhost/test
    foo: hello
    

    Nginx 变量的创建只能发生在 Nginx 配置加载的时候,或者说 Nginx 启动的时候。而赋值操作则只会发生在请求实际处理的时候。这意味着不创建而直接使用变量会导致启动失败。

    2、内置预定义变量

    内置预定义变量即无需声明就可以使用的变量,通常包括一个http请求或响应中一部分内容的值,以下为一些常用的内置预定义变量

    变量名定义
    $arg_PARAMETERGET请求中变量名PARAMETER参数的值。
    $args这个变量等于GET请求中的参数。例如,foo=123&bar=blahblah;这个变量只可以被修改
    $binary_remote_addr二进制码形式的客户端地址。
    $body_bytes_sent传送页面的字节数
    $content_length请求头中的Content-length字段。
    $content_type请求头中的Content-Type字段。
    $cookie_COOKIEcookie COOKIE的值。
    $document_root当前请求在root指令中指定的值。
    $document_uri与$uri相同。
    $host请求中的主机头(Host)字段,如果请求中的主机头不可用或者空,则为处理请求的server名称(处理请求的server的server_name指令的值)。值为小写,不包含端口。
    $hostname机器名使用 gethostname系统调用的值
    $http_HEADERHTTP请求头中的内容,HEADER为HTTP请求中的内容转为小写,-变为_(破折号变为下划线),例如:$http_user_agent(Uaer-Agent的值);
    $sent_http_HEADERHTTP响应头中的内容,HEADER为HTTP响应中的内容转为小写,-变为_(破折号变为下划线),例如: $sent_http_cache_control, $sent_http_content_type…;
    $is_args如果$args设置,值为"?",否则为""。
    $limit_rate这个变量可以限制连接速率。
    $nginx_version当前运行的nginx版本号。
    $query_string与$args相同。
    $remote_addr客户端的IP地址。
    $remote_port客户端的端口。
    $remote_user已经经过Auth Basic Module验证的用户名。
    $request_filename当前连接请求的文件路径,由root或alias指令与URI请求生成。
    $request_body这个变量(0.7.58+)包含请求的主要信息。在使用proxy_pass或fastcgi_pass指令的location中比较有意义。
    $request_body_file客户端请求主体信息的临时文件名。
    $request_completion如果请求成功,设为"OK";如果请求未完成或者不是一系列请求中最后一部分则设为空。
    $request_method这个变量是客户端请求的动作,通常为GET或POST。包括0.8.20及之前的版本中,这个变量总为main request中的动作,如果当前请求是一个子请求,并不使用这个当前请求的动作。
    $request_uri这个变量等于包含一些客户端请求参数的原始URI,它无法修改,请查看$uri更改或重写URI。
    $scheme所用的协议,比如http或者是https,比如rewrite ^(.+)$ $scheme://example.com$1 redirect;
    $server_addr服务器地址,在完成一次系统调用后可以确定这个值,如果要绕开系统调用,则必须在listen中指定地址并且使用bind参数。
    $server_name服务器名称。
    $server_port请求到达服务器的端口号。
    $server_protocol请求使用的协议,通常是HTTP/1.0或HTTP/1.1。
    $uri请求中的当前URI(不带请求参数,参数位于args),不同于浏览器传递的args),不同于浏览器传递的args),不同于浏览器传递的request_uri的值,它可以通过内部重定向,或者使用index指令进行修改。不包括协议和主机名,例如/foo/bar.html
    展开全文
  • // CLI-FunctionParameterPass.cpp : main project file. #include stdafx.h #include #pragma managed #include using namespace System; using namespace System::Collections::Generic; using namespace System...
  • shell的自定义变量

    千次阅读 2022-01-11 23:35:46
    shell的自定义变量 目标 理解自定义变量的分类 能够自定义变量进行增删改查 自定义变量介绍:就是自己定义的变量 自定义变量1—局部变量 介绍:就是定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量就是绝...

    shell的自定义变量

    目标
    理解自定义变量的分类
    能够自定义变量进行增删改查
    自定义变量介绍:就是自己定义的变量
    

    自定义变量1—局部变量

    介绍:就是定义在一个脚本文件中的变量,只能在这个脚本文件中使用的变量就是绝不变量
    定义语法:var _name=value
    变量定义规则
      1.变量名称可以由字母数字下滑线,但是不能以数字开头
      2.等号两侧不能有空格
      3.在bash环境中,变量的默认类型都是字符创类型,无法直接进行数值计算
      4.变量的值如果有空格必须使用双引号括起来
    	5.不能使用shell的关键字为变量名称
    
    查询变量值的语法
      语法1:直接使用变量名查询 $name
      语法2:使用花括号${name}
    	区别:花括号方式适合拼接字符串
      eg: var name=张三 
        	echo $name123 无法使用 
        	echo ${name}123 输出 张三123
     
    
    删除变量的语法
    unset 变量名
    

    自定义变量2—常量

    介绍:就是变量设置值之后不可以修改的变量叫常量 也叫只读变量
    语法:readonly name=张三
    

    自定义变量3—全局变量

    父子shell环境介绍
      eg:有两个shell脚本文件a.sh和b.sh,如果a.sh脚本文件中执行了b.sh脚本文件,那么a.sh就是父shell环境,b.sh就是子shell环境
        
    自定义全局变量介绍:就是在当前脚本文件中定义全局变量,这个全局变量可以在当前shell环境与子shell环境中都可以使用.
    
    语法:export name1 name2=value
    
    案例实现步骤
    1.创建2个脚本文件demo2.sh和demo3.sh
    2.编写demo2.sh
      命令1:定义全局变量var4
      命令2:执行demo3.sh脚本文件
    3.编写demo3.sh脚本文件
        输出全局变量var4
    4.执行demo2.sh脚本文件
    

    代码如下

    touch demo2.sh demo3.sh
    vim demo2.sh
      #!/bin/bash
      export var4=value
      sh demo3.sh
    vim demo3.sh
      #!/bin/bash
      echo "输出全局变量var4的值为${var4}"
    sh demo3.sh
    

    特殊符号变量

    目标
      能够说出常用的特殊变量有哪些 $n $# $* s@ $? $$
    
    特殊变量$n
    语法:$n
    $0是用于获取当前脚本文件名称的 
    $1-$9代表获取第一输入参数到第九个输入参数,第十个及以上的输入参数获取的格式是${10},否则无法获取
    
    执行脚本文件传入参数语法
      sh 脚本文件	输入参数1 输入参数2 ....
    

    案例需求:打印脚本文件名字,第一个输入参数,第二个输入参数

    1.创建脚本文件demo4.sh
    2.编辑demo4.sh的文件内容
     打印当前脚本文件的名字
     打印第一个输入参数
     打印第二个输入参数
     打印第十个输入参数
    3.执行脚本文件demo4.sh
    
    touch demo4.sh
    vim demo4.sh
      #!/bin/bash
      echo "当前脚本文件名称:$0"
      echo "第一个输入参数$1"
      echo "第二个输入参数$2"
      echo "第十个输入参数${10}"
    
    特殊符号变量 $#
    语法:$#
    含义:获取所有输入参数的个数
    

    案例需求:获取demo4.sh中输入参数的个数

    vim demo4.sh
      echo "输入参数的个数为:$#"
    
    特殊符号变量 $* $@
    含义:都是获取所有输入参数,用于以后输出所有参数
    区别:
    	1.不使用双引号括起来,功能一样
        $*和$@获取所有输入参数,格式为:$1 $2 ....$n
      2.使用双引号括起来
        "$*" 获取所有参数拼接为一个字符串,格式为:"$1 $2 ... $n"
        "$@" 获取一组参数列表对象,格式为:"$1" "$2"..."$n"
        使用循环打印所有输入参数可以看出区别
    循环语法: for var in 列表变量
      			 do  #循环开始
              命令 #循环体
             done #循环结束
    

    案例需求:在demo4.sh 脚本文件中循环打印输出所有输入参数,体验 ∗ 和 *和 @区别

    在这里插入图片描述

    在这里插入图片描述

    特殊符号变量$?

    含义:用于获取上一个shell命令的退出状态码,或者是函数的返回值
      解释:每个shell命令的执行都会有一个返回值,这个返回值用于说明命令执行是否成功.一般来说返回0代表命令执行成功,0代表失败
    

    特殊符号变量$$

    含义:用于获取当前shell环境的进程id号
    

    小结

    $n 获取第几个输入参数 除了$0外 因为$0是获取当前shell脚本的名字
    $# 获取输入参数个数
    $* $@ 获取输入参数 
    $?获取上个shell退出状态码或者函数返回值
    $$获取shell环境的进程id
    
    展开全文
  • Jenkins自定义变量

    千次阅读 2022-02-14 14:08:22
    1、全局变量 所有Job都可以使用的变量。 操作:Jenkins=》系统管理=》系统设置=》全局属性=》勾选【环境变量】=》填写键值对; 2、Job变量 仅所属Job内部使用的变量。 (1)、安装Environment Injector插件; (2)...
  • MySQL如何自定义变量

    千次阅读 2021-04-10 00:22:26
    相信大家对join,where 以及子查询等等操作已经非常熟悉,在此基础上如果对于mysql的用户自定义变量再熟练掌握了,那么对于数据分析来说就又多了一个工具。虽然这个功能不是经常用,但是...
  • Jmeter用户自定义变量

    千次阅读 2022-03-31 20:03:46
    1.咱们先在jmeter里面写两个需要查询的内容,就像我查询的就是手机号和天气。...4.给自定义变量起一个名字,类似咱们的全局变量。 6.然后把他放在手机号查询和天气预报查询里面,放在服务器名称或IP里面,用${}. ...
  • select,set定义变量
  • 【MySQL 每日一技】在 SQL 语句中使用自定义变量
  • MySQL 是可以自定义临时变量的,而临时变量在做查询优化和静态查询分析时十分有用。而实际上很少有人记得 MySQL 的自定义变量
  • SQL变量的使用(自定义变量

    千次阅读 2021-03-28 11:22:11
    文章目录一、系统变量1.1 全局变量1.2 会话变量二、自定义变量(重点)2.1 用户变量①声明并初始化②赋值(更新变量的值)③使用(查看变量的值)★2.2 局部变量三、案例3.1 案例13.2 案例2四、用户变量和局部变量的...
  • 用户自定义变量 我们通过实际栗子去讲述理论知识点 测试计划树结构 测试计划 设置了一个变量 d1 线程组 模拟两个用户,各循环五次 线程组下的用户自定义变量 只设置了一个变量 d1 ...
  • MySQL用户自定义变量

    2021-01-30 02:35:06
    一、MySQL的变量分类MySQL变量一共分为两大类:用户自定义变量和系统变量。如下:用户自定义变量局部变量会话变量系统变量会话变量全局变量局部变量局部变量一般用于SQL的语句块中,比如存储过程中的begin和end语句...
  • 文章目录一、用户自定义变量1. 添加2. 使用方法3. 用户自定义变量实栗二、用户参数1. 添加2. 使用方法3. 用户参数实栗 一、用户自定义变量 1. 添加 测试计划下的用户自定义变量:直接在测试计划中添加 线程组或其他...
  • 1、用户自定义变量介绍 我们可以看到前面一篇文章的例子中,数据文件login_data.csv的后三个参数都是一样的,我们可以把这些变量提取出来,放在一个公共的位置,方便我们随时提取。(凡是可以输入的位置,都可以...
  • Linux之用户自定义变量

    千次阅读 2021-06-30 08:49:34
    为什么我们需要变量这个东西呢? 因为当shell脚本需要保存一些信息时,如一个文件名或是一个数字,就需要把它存放在一个变量当中。使用变量可以保存有用信息,让系统获知用户相关设置,也可用于保存暂时信息。 变量...
  • Grafana自定义变量使用笔记

    千次阅读 2022-02-25 02:38:08
    简介 随便记录一下,为什么要使用自定义参数,用这个有...我们要做的事情就是将具有共同监控指标的拿来分分组,展示出来,Grafana自定义变量就是用来干这事的!不废话了,看实例: 文档地址 函数 作用 labe
  • 文章目录Shell变量:环境变量目标Shell变量的介绍变量类型系统环境变量介绍Shell的配置文件分类环境变量分类查看当前Shell系统环境变量查看Shell变量(系统环境变量+自定义变量+函数)常用系统环境变量小结Shell变量:...
  • 如何在linux中定义变量 定义变量很简单,直接在当前bash下输入params1=xx1,也就是给变量赋值,然后通过echo $params1 就可以看到了 使用echo调用变量 需要用$开头echo $params1或者echo ${params1}都可以,更多echo...
  • 自定义变量:变量是计算机内存的单元,其中存放的值可以改变。当Shell脚本需要保存一些信息时,如一个文件名或是那一个数字,就把它存放在一个变量中。每个变量有一个名字,所以很容易引用它。使用变量可以保存有用...
  • Nginx 内置变量和自定义变量

    千次阅读 2020-01-11 15:59:06
    Nginx 内置变量和自定义变量 nginx的变量可以在配置文件中引用,作为功能判断或者日志等场景使用,变量可以分为内置变量和自定义变量,内置变量是由nginx模块自带,通过变量可以获取到众多的与客户端访问相关的值。 ...
  • 管道与重定向2.1 管道符号 |2.2 重定向操作shell 变量用户自定义变量echo ${VERSION}6.1特殊变量 一. shell脚本的编写过程 1.1 新建脚本文件 第一行#!/bin/bash 表示脚本声明,表示此行以后的语句通过/bin/bash...
  • Hive命名空间-自定义变量

    千次阅读 2021-02-09 14:00:27
    Hive命名空间 ...3、evn的命名空间是指环境变量,包含Shell环境下的变量信息,如 HADOOP_HOME一类的 4、hivevar为临时变量 可以使用: $ hive --define foo=bar hive> set foo; foo=bar; hive&g
  • 4-2 4.2自定义变量.mp4

    2021-10-13 11:40:10
    4-2 4.2自定义变量.mp4

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,057,089
精华内容 422,835
关键字:

自定义变量