精华内容
下载资源
问答
  • 类似eclipse里面的那个,mark occurrences of the selected element in the current file
  • ansible官方文档翻译之变量

    千次阅读 2016-01-26 04:13:41
    ansible官方文档翻译之变量,主要是将官方文档进行翻译,后续会给出相关的练习

    Ansible变量

    在使用ansible变量的时候,主要是因为各个系统的不同,从而需要使用不同的变量来进行设置,例如在设置一些配置文件的时候,有大部分内容是相同的,但是一部分内容是和主机的ip地址或者其他一些所决定,从而需要用到ansible的变量。

    1、    变量名

    变量名用字母,数字和下划线,变量名的总是用字母进行开头,例如foo_port和foo5就是一个好的命名。而foo-port,foo.port,foo port和23则不是一个变量名。

    YAML支持以下的变量格式,用字典来进行存储变量,如下:

    foo:

      field1: one

      field2: two

     

    那么可以用下面的方式来引用变量,如下:

    foo['field1']
    foo.field1

    --两种方法均表示值为one

    在进行变量命名的时候,注意一些保留关键字,如下:

    addappendas_integer_ratiobit_lengthcapitalizecenterclearconjugatecopycountdecodedenominatordifference,difference_updatediscardencodeendswithexpandtabsextendfindformatfromhexfromkeysgethas_keyheximag,indexinsertintersectionintersection_updateisalnumisalphaisdecimalisdigitisdisjointis_integerislower,isnumericisspaceissubsetissupersetistitleisupperitemsiteritemsiterkeysitervaluesjoinkeysljustlower,lstripnumeratorpartitionpoppopitemrealremovereplacereverserfindrindexrjustrpartitionrsplitrstrip,setdefaultsortsplitsplitlinesstartswithstripswapcasesymmetric_differencesymmetric_difference_updatetitle,translateunionupdateuppervaluesviewitemsviewkeysviewvalueszfill.

    2、    定义变量

    定义变量的位置有很多,可以在playbook中定义变量,可以在inventory文件中定义变量,在playbook中定义变量形式如下:

    - hosts: webservers
      vars:
        http_port: 80

     

    在使用roles和inclued的时候,也是可以定义变量的

    在使用模板语言jinja2的时候,也是可以定义变量的

    Ansible允许你在playbook中引用变量使用jinja2的模板,在jinja2中可以使用更加复杂的模板

    在一个简单的模板中,可以使用如下的方式来使用变量:

    My amp goes to {{ max_amp_value }}

    --最基本的变量替换方式

    在playbook中,还可以使用如下的方式来使用变量:

    template: src=foo.cfg.j2 dest={{ remote_install_path }}/foo.cfg

    --使用一个变量来决定哪个位置去存放文件

     

    在模板中,jinja2允许你使用循环loops和条件conditions,但是在playbook中,是不会使用的,ansible的playbook是纯YAML,从而不会使用这些

     

    当你在使用变量的时候,如果是用变量名开头,那么必须用引号进行包括起来,如下是不能正常运行的:

    - hosts: app_servers
      vars:
          app_path: {{ base_path }}/22

     

    如下是可以正常运行的:

    - hosts: app_servers
      vars:
           app_path: "{{base_path}}/22"

    #如果是变量开头,那么必须将所有的用引号进行包括起来

    3、    系统变量:FACTS

    除了以上所讲述的变量的位置,还可以从系统变量FACTS中找到变量,查看系统信息如下所示:

    ansible hostname -m setup

     

    执行此命令后会返回大量的变量的内容,如下所示例子:

    "ansible_all_ipv4_addresses": [
        "REDACTED IP ADDRESS"
    ],
    "ansible_all_ipv6_addresses": [
        "REDACTED IPV6 ADDRESS"
    ],
    "ansible_architecture": "x86_64",
    "ansible_bios_date": "09/20/2012",
    "ansible_bios_version": "6.00",
    "ansible_cmdline": {
        "BOOT_IMAGE": "/boot/vmlinuz-3.5.0-23-generic",
        "quiet": true,
        "ro": true,
        "root": "UUID=4195bff4-e157-4e41-8701-e93f0aec9e22",
        "splash": true
    },
    "ansible_date_time": {
        "date": "2013-10-02",
        "day": "02",
        "epoch": "1380756810",
        "hour": "19",
        "iso8601": "2013-10-02T23:33:30Z",
        "iso8601_micro": "2013-10-02T23:33:30.036070Z",
        "minute": "33",
        "month": "10",
        "second": "30",
        "time": "19:33:30",
        "tz": "EDT",
        "year": "2013"
    },
    "ansible_default_ipv4": {
        "address": "REDACTED",
        "alias": "eth0",
        "gateway": "REDACTED",
        "interface": "eth0",
        "macaddress": "REDACTED",
        "mtu": 1500,
        "netmask": "255.255.255.0",
        "network": "REDACTED",
        "type": "ether"
    },
    "ansible_default_ipv6": {},
    "ansible_devices": {
        "fd0": {
            "holders": [],
            "host": "",
            "model": null,
            "partitions": {},
            "removable": "1",
            "rotational": "1",
            "scheduler_mode": "deadline",
            "sectors": "0",
            "sectorsize": "512",
            "size": "0.00 Bytes",
            "support_discard": "0",
            "vendor": null
        },
        "sda": {
            "holders": [],
            "host": "SCSI storage controller: LSI Logic / Symbios Logic 53c1030 PCI-X Fusion-MPT Dual Ultra320 SCSI (rev 01)",
            "model": "VMware Virtual S",
            "partitions": {
                "sda1": {
                    "sectors": "39843840",
                    "sectorsize": 512,
                    "size": "19.00 GB",
                    "start": "2048"
                },
                "sda2": {
                    "sectors": "2",
                    "sectorsize": 512,
                    "size": "1.00 KB",
                    "start": "39847934"
                },
                "sda5": {
                    "sectors": "2093056",
                    "sectorsize": 512,
                    "size": "1022.00 MB",
                    "start": "39847936"
                }
            },
            "removable": "0",
            "rotational": "1",
            "scheduler_mode": "deadline",
            "sectors": "41943040",
            "sectorsize": "512",
            "size": "20.00 GB",
            "support_discard": "0",
            "vendor": "VMware,"
        },
        "sr0": {
            "holders": [],
            "host": "IDE interface: Intel Corporation 82371AB/EB/MB PIIX4 IDE (rev 01)",
            "model": "VMware IDE CDR10",
            "partitions": {},
            "removable": "1",
            "rotational": "1",
            "scheduler_mode": "deadline",
            "sectors": "2097151",
            "sectorsize": "512",
            "size": "1024.00 MB",
            "support_discard": "0",
            "vendor": "NECVMWar"
        }
    },
    "ansible_distribution": "Ubuntu",
    "ansible_distribution_release": "precise",
    "ansible_distribution_version": "12.04",
    "ansible_domain": "",
    "ansible_env": {
        "COLORTERM": "gnome-terminal",
        "DISPLAY": ":0",
        "HOME": "/home/mdehaan",
        "LANG": "C",
        "LESSCLOSE": "/usr/bin/lesspipe %s %s",
        "LESSOPEN": "| /usr/bin/lesspipe %s",
        "LOGNAME": "root",
        "LS_COLORS": "rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arj=01;31:*.taz=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lz=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.axa=00;36:*.oga=00;36:*.spx=00;36:*.xspf=00;36:",
        "MAIL": "/var/mail/root",
        "OLDPWD": "/root/ansible/docsite",
        "PATH": "/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
        "PWD": "/root/ansible",
        "SHELL": "/bin/bash",
        "SHLVL": "1",
        "SUDO_COMMAND": "/bin/bash",
        "SUDO_GID": "1000",
        "SUDO_UID": "1000",
        "SUDO_USER": "mdehaan",
        "TERM": "xterm",
        "USER": "root",
        "USERNAME": "root",
        "XAUTHORITY": "/home/mdehaan/.Xauthority",
        "_": "/usr/local/bin/ansible"
    },
    "ansible_eth0": {
        "active": true,
        "device": "eth0",
        "ipv4": {
            "address": "REDACTED",
            "netmask": "255.255.255.0",
            "network": "REDACTED"
        },
        "ipv6": [
            {
                "address": "REDACTED",
                "prefix": "64",
                "scope": "link"
            }
        ],
        "macaddress": "REDACTED",
        "module": "e1000",
        "mtu": 1500,
        "type": "ether"
    },
    "ansible_form_factor": "Other",
    "ansible_fqdn": "ubuntu2.example.com",
    "ansible_hostname": "ubuntu2",
    "ansible_interfaces": [
        "lo",
        "eth0"
    ],
    "ansible_kernel": "3.5.0-23-generic",
    "ansible_lo": {
        "active": true,
        "device": "lo",
        "ipv4": {
            "address": "127.0.0.1",
            "netmask": "255.0.0.0",
            "network": "127.0.0.0"
        },
        "ipv6": [
            {
                "address": "::1",
                "prefix": "128",
                "scope": "host"
            }
        ],
        "mtu": 16436,
        "type": "loopback"
    },
    "ansible_lsb": {
        "codename": "precise",
        "description": "Ubuntu 12.04.2 LTS",
        "id": "Ubuntu",
        "major_release": "12",
        "release": "12.04"
    },
    "ansible_machine": "x86_64",
    "ansible_memfree_mb": 74,
    "ansible_memtotal_mb": 991,
    "ansible_mounts": [
        {
            "device": "/dev/sda1",
            "fstype": "ext4",
            "mount": "/",
            "options": "rw,errors=remount-ro",
            "size_available": 15032406016,
            "size_total": 20079898624
        }
    ],
    "ansible_nodename": "ubuntu2.example.com",
    "ansible_os_family": "Debian",
    "ansible_pkg_mgr": "apt",
    "ansible_processor": [
        "Intel(R) Core(TM) i7 CPU         860  @ 2.80GHz"
    ],
    "ansible_processor_cores": 1,
    "ansible_processor_count": 1,
    "ansible_processor_threads_per_core": 1,
    "ansible_processor_vcpus": 1,
    "ansible_product_name": "VMware Virtual Platform",
    "ansible_product_serial": "REDACTED",
    "ansible_product_uuid": "REDACTED",
    "ansible_product_version": "None",
    "ansible_python_version": "2.7.3",
    "ansible_selinux": false,
    "ansible_ssh_host_key_dsa_public": "REDACTED KEY VALUE"
    "ansible_ssh_host_key_ecdsa_public": "REDACTED KEY VALUE"
    "ansible_ssh_host_key_rsa_public": "REDACTED KEY VALUE"
    "ansible_swapfree_mb": 665,
    "ansible_swaptotal_mb": 1021,
    "ansible_system": "Linux",
    "ansible_system_vendor": "VMware, Inc.",
    "ansible_user_id": "root",
    "ansible_userspace_architecture": "x86_64",
    "ansible_userspace_bits": "64",
    "ansible_virtualization_role": "guest",
    "ansible_virtualization_type": "VMware"

     

     

    在以上的信息中,如果要在playbook中或模板中引用第一块硬盘的模型变量,那么可以使用如下:

    {{ansible_devices.sda.model }}

     

    使用hostname可以使用如下:

    {{ansible_nodename }}

     

    并且不合格的主机名称会显示第一个点前面的内容,如下:

    {{ansible_hostname }}

     

     

    FACTS主要使用在条件语句中和模板中。

    4、    关闭FACTS

    当你的主机系统不需要使用FACTS的时候,可以在playbook中关闭FACTS,从而可以减少数据的传输,如下所示:

    - hosts: whatever
      gather_facts: no

     

    5、    本地FACTS(Facts.d)

    Ansible中playbook里使用的变量值可以从FACTS获取得到。在使用的时候,ansible都是自动的获取到FACTS变量内容使用的是setup模块。

    当需要使用到一些指定的变量的时候,可以自己书写一份Facts.d,从而来使用这些本地的变量

     

    假设存在一份Facts.d的内容如下(/etc/ansible/facts.d/preferences.fact):

    [general]
    asdf=1
    bar=2

     

    在上面的例子中,从而创建了一个名称为general的组包括asdf和bar,在验证的时候可以使用如下命令:

    ansible <hostname> -m setup -a "filter=ansible_local"

     

    从而可以看到如下结果:

    "ansible_local": {
            "preferences": {
                "general": {
                    "asdf" : "1",
                    "bar"  : "2"
                }
            }
     }

     

    在playbook中或者是template中可以使用如下的方式来引用变量:

    {{ansible_local.preferences.general.asdf }}

     

    使用的是local这个命名空间,从而防止本地变量将系统变量进行了覆盖

     

    当有一个playbook是将本地的fact进行拷贝的时候,注意要显示进行运行setup的模块,否则只会在下一个play中得到这些变量,如下所示:

    - hosts: webservers
      tasks:
        - name: create directory for ansible custom facts
          file: state=directory recurse=yes path=/etc/ansible/facts.d
        - name: install custom impi fact
          copy: src=ipmi.fact dest=/etc/ansible/facts.d
        - name: re-read facts after adding custom fact
          setup: filter=ansible_local

     

    6. 缓存FACT

    在有的情况下,可能一个服务器在引用一个变量的时候同时也引用了另外一个变量,如下所示:

    {{hostvars['asdf.example.com']['ansible_os_family'] }}

     

    当使用缓存FACT的时候,主要是用来做临时任务的时候能直接hit到,从而提高速度

    当需要从缓存FACT中收益时,在play中需要修改gathering的配置,设置为smart或者explicit或者将gather_facts设置为false

    目前情况下,ansible使用redis和jsonfile来进行持久化缓存。

    当使用redis进行缓存的时候,在ansible.cfg中进行开启,如下:

    [defaults]
    gathering = smart
    fact_caching = redis
    fact_caching_timeout = 86400
    # seconds

     

    当使用redis的时候,需要用下面的os命令进行开启,如下:

    yum install redis
    service redis start
    pip install redis

     

     

    当使用jsonfile进行缓存的时候,在ansible.cfg中进行开启,如下:

    [defaults]
    gathering = smart
    fact_caching = jsonfile
    fact_caching_connection = /path/to/cachedir #本地写入路径
    fact_caching_timeout = 86400 #facts保存的时间
    # seconds

     

    6、    注册变量

    变量还有一个用途就是当运行一个命令的时候,可以使用变量来存储结果,这个变量在从模块到模块的时候,是可以发生变化的。在执行playbook的时候可以使用参数-v来显示变量的值。

    在ansible中执行完一个任务之后,可以将结果保存在变量中,从而在后面使用,如下所示:

    - hosts: web_servers
     
      tasks:
     
         - shell: /usr/bin/foo
           register: foo_result
           ignore_errors: True
     
         - shell: /usr/bin/bar
           when: foo_result.rc == 5

     

    在这个里面使用注册变量的时候,生命周期和fact的生命周期是一样的

     

    当任务失败或者跳过的时候,这个变量保存的是失败或者跳过的状态,唯一能避免这个变量的方法是使用tags

     

    7、    接触复杂的变量数据

    对于嵌套的数据结构,可以用如下的方式得到数据:

    {{ansible_eth0["ipv4"]["address"] }}

     

    或者使用如下的方式:

    {{ansible_eth0.ipv4.address }}

     

    类似的,可以使用数组中的第一个元素:

    {{foo[0] }}

     

     

    Ansible会提供一些神奇的变量,如hostvarsgroup_names, and groups重要的变量,,用户不能自己使用这些名字的变量,这些变量名是保留字,environment 也是的

    Hostvars可以让你询问其他主机的变量,包括收集到的其他主机的facts,这种是不能显示设置的,但是依然可以找到这个变量。

    如果数据服务器想使用fact的值从另外一个节点上,或者是另外节点分配的inventory文件,从而可以做如下操作:

    {{hostvars['test.example.com']['ansible_distribution'] }}

     

    另外group_names是inventory文件中的一个数组或者是列表,从而此种可以在一个组中进行遍历,如下所示:

    {% if 'webserver' in group_names %}
       # some part of a configuration file that only applies to webservers
    {% endif %}

     

    Groups是在inventory文件中的所有组或者是主机,这种可以在一个组中遍历所有的主机,如下所示:

    {% for host in groups['app_servers'] %}
       # something that applies to all app servers.
    {% endfor %}

     

    一种普遍的做法是使用组然后查找到所有的主机IP地址,如下所示:

    {% for host in groups['app_servers'] %}
       {{ hostvars[host]['ansible_eth0']['ipv4']['address'] }}
    {% endfor %}

     

    inventory_hostname 表示在ansible的inventory文件中设置的主机名

    inventory_hostname_short 表示从开始到第一个点的位置,剩余的domain不包含

    play_hosts 表示当前play中的主机列表

    delegate_to 表示当前主机的赋权操作

    inventory_dir 表示inventory文件名称

    role_path 表示会返回当前role的路径名称,只能在整个role中生效

    8、    分割变量文件

    在有的时候,会需要将变量分割开来,从而将变量保存在不同的文件之中。

    分割变量文件的时候,可以使用外部变量文件或者是文件,如下所示:

    ---
     
    - hosts: all
      remote_user: root
      vars:
        favcolor: blue
      vars_files:
        - /vars/external_vars.yml
     
      tasks:
     
      - name: this is just a placeholder
        command: /bin/echo foo

     

    在使用分割变量文件的时候,可以避免敏感的参数被获取

    变量文件中的内容是简单的YAML字典,如下所示:

    ---
    # in the above example, this would be vars/external_vars.yml
    somevar: somevalue
    password: magic

     

    9、    在命令行中传递参数

    除了vars_promptvars_files,还可以直接在命令行中进行传递参数,如下所示:

    ansible-playbook release.yml --extra-vars "version=1.23.45 other_variable=foo"

     

    从而可以使用这种在playbook中进行设置主机和用户,如下所示:

    ---
     
    - hosts: '{{hosts}}'
      remote_user: '{{user}}'
     
      tasks:
         - ...
    ansible-playbook release.yml --extra-vars "hosts=vipers user=starbuck"

     

     

    传递外部变量的时候,也可以使用json数据的方式,如下所示:

    --extra-vars '{"pacman":"mrs","ghosts":["inky","pinky","clyde","sue"]}'

     

    在使用key=value的时候显得更加简单

     

    外部变量文件也可以使用@符号来进行引用,如下所示:

    --extra-vars "@some_file.json"

     

    10、 变量优先级

    如果变量在不同的地方进行定义,并且名字相同,那么是会造成覆盖的效果的。

    在2.x中,优先级顺序如下:

    ·         role defaults [1]

    ·         inventory vars [2]

    ·         inventory group_vars

    ·         inventory host_vars

    ·         playbook group_vars

    ·         playbook host_vars

    ·         host facts

    ·         registered vars

    ·         set_facts

    ·         play vars

    ·         play vars_prompt

    ·         play vars_files

    ·         role and include vars

    ·         block vars (only for tasks in block)

    ·         task vars (only for the task)

    ·         extra vars

    优先级逐步上升的原则

    11、 变量范围

    Ansible具有三个变量范围:

    Global:这个是由配置文件、环境变量和命令行所设置

    Play:每个play包含的结构,变量入口,include_Vars,默认的role和变量

    Host:和主机直接关联的变量,如inventory文件中,facts中和注册的任务输出结果

    12、 变量举例

    组变量超级强大。定义的路径为group_vars/al,如下所示:

    ---
    # file: /etc/ansible/group_vars/all
    # this is the site wide default
    ntp_server: default-time.example.com

     

    局部变量定义的位置为:group_vars/region如果这个组是all组中的一员,会覆盖整个变量,如下所示:

    ---
    # file: /etc/ansible/group_vars/boston
    ntp_server: boston-time.example.com

     

    当使用主机变量的时候,会覆盖组的变量值,如下所示:

    ---
    # file: /etc/ansible/host_vars/xyz.boston.example.com
    ntp_server: override.example.com

     

    规则如下:

    Child groups override parent groups, and hosts always override their groups.

     

    在使用roles的时候,默认路径下roles/x/defaults/main.yml的优先级比较低,如下:

    ---
    # file: roles/x/defaults/main.yml
    # if not overridden in inventory or as a parameter, this is the value that will be used
    http_port: 80

     

    当要使用roles的时候,如果要确保变量值不会被默认值覆盖,也不会被inventory文件中的变量覆盖,那么放置路径为roles/x/vars/main.yml,如下所示:

    ---
    # file: roles/x/vars/main.yml
    # this will absolutely be used in this role
    http_port: 80

     

     

    当在使用role的时候,如果想覆盖默认值,那么可以像如下例子传递参数:

    roles:
       - { role:apache,http_port:8080 }

     

     

    从而也可以使用如下的方式:

    roles:
       - { role:app_user,name:Ian    }
       - { role:app_user,name:Terry  }
       - { role:app_user,name:Graham }
       - { role:app_user,name:John   }

     

     

    一般来说,变量在一个role中设置之后,对于其他的role来说,变量也是可以使用的,如下所示:(变量定义位置:roles/common/vars/main.yml

    roles:
       - { role:common_settings }
       - { role:something,foo:12 }
       - { role:something_else }

     

     

    展开全文
  • 之前在项目的存储过程发现有通过 `DECLARE` 关键字定义的变量如`DECLARE cnt INT DEFAULT 0;`,还有形如 `@count` 这样的变量,存储过程拿过来直接就进行设置,像这样`set @count=1;`,这两种类型的变量究竟有...

    前言

    之前在项目的存储过程中发现有通过 DECLARE 关键字定义的变量如DECLARE cnt INT DEFAULT 0;,还有形如 @count 这样的变量,存储过程中拿过来直接就进行设置,像这样set @count=1;,这两种类型的变量究竟有什么区别却弄不清楚,赶紧上网查询资料,发现还有@@sql_mode这样的变量,这一个圈俩圈的到底是什么啊?会不会出现三个圈的情况?

    变量分类与关系

    经过一段时间学习和测试,再配合官方的文档,现在大致弄清楚了这些变量的区别,一般可以将MySQL中的变量分为全局变量、会话变量、用户变量和局部变量,这是很常见的分类方法,这些变量的作用是什么呢?可以从前往后依次看一下。

    首先我们知道MySQL服务器维护了许多系统变量来控制其运行的行为,这些变量有些是默认编译到软件中的,有些是可以通过外部配置文件来配置覆盖的,如果想查询自编译的内置变量和从文件中可以读取覆盖的变量可以通过以下命令来查询:

    mysqld --verbose --help
    

    如果想只看自编译的内置变量可以使用命令:

    mysqld --no-defaults --verbose --help
    

    接下来简单了解一下这几类变量的应用范围,首先MySQL服务器启动时会使用其软件内置的变量(俗称写死在代码中的)和配置文件中的变量(如果允许,是可以覆盖源代码中的默认值的)来初始化整个MySQL服务器的运行环境,这些变量通常就是我们所说的全局变量,这些在内存中的全局变量有些是可以修改的。

    当有客户端连接到MySQL服务器的时候,MySQL服务器会将这些全局变量的大部分复制一份作为这个连接客户端的会话变量,这些会话变量与客户端连接绑定,连接的客户端可以修改其中允许修改的变量,但是当连接断开时这些会话变量全部消失,重新连接时会从全局变量中重新复制一份。

    其实与连接相关的变量不只有会话变量一种,用户变量也是这样的,用户变量其实就是用户自定义变量,当客户端连接上MySQL服务器之后就可以自己定义一些变量,这些变量在整个连接过程中有效,当连接断开时,这些用户变量消失。

    局部变量实际上最好理解,通常由DECLARE 关键字来定义,经常出现在存储过程中,非常类似于C和C++函数中的局部变量,而存储过程的参数也和这种变量非常相似,基本上可以作为同一种变量来对待。

    变量的修改

    先说全局变量有很多是可以动态调整的,也就是说可以在MySQL服务器运行期间通过 SET 命令修改全局变量,而不需要重新启动 MySQL 服务,但是这种方法在修改大部分变量的时候都需要超级权限,比如root账户。

    相比之下会话对变量修改的要求要低的多,因为修改会话变量通常只会影响当前连接,但是有个别一些变量是例外的,修改它们也需要较高的权限,比如 binlog_formatsql_log_bin,因为设置这些变量的值将影响当前会话的二进制日志记录,也有可能对服务器复制和备份的完整性产生更广泛的影响。

    至于用户变量和局部变量,听名字就知道,这些变量的生杀大权完全掌握在自己手中,想改就改,完全不需要理会什么权限,它的定义和使用全都由用户自己掌握。

    测试环境

    以下给出MySQL的版本,同时使用root用户测试,这样可以避免一些权限问题。

    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 7
    Server version: 5.7.21-log MySQL Community Server (GPL)
    Copyright © 2000, 2018, Oracle and/or its affiliates. All rights reserved.
    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective owners.
    Type ‘help;’ or ‘\h’ for help. Type ‘\c’ to clear the current input statement.

    变量查询与设置

    全局变量

    这些变量来源于软件自编译、配置文件中、以及启动参数中指定的变量,其中大部分是可以由root用户通过 SET 命令直接在运行时来修改的,一旦 MySQL 服务器重新启动,所有修改都被还原。如果修改了配置文件,想恢复最初的设置,只需要将配置文件还原,重新启动 MySQL 服务器,一切都可以恢复原来的样子。

    查询

    查询所有的全局变量:

    show global variables;
    

    一般不会这么用,这样查简直太多了,大概有500多个,通常会加个like控制过滤条件:

    mysql> show global variables like 'sql%';
    +------------------------+----------------------------------------------------------------+
    | Variable_name          | Value                                                          |
    +------------------------+----------------------------------------------------------------+
    | sql_auto_is_null       | OFF                                                            |
    | sql_big_selects        | ON                                                             |
    | sql_buffer_result      | OFF                                                            |
    | sql_log_off            | OFF                                                            |
    | sql_mode               | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION |
    | sql_notes              | ON                                                             |
    | sql_quote_show_create  | ON                                                             |
    | sql_safe_updates       | OFF                                                            |
    | sql_select_limit       | 18446744073709551615                                           |
    | sql_slave_skip_counter | 0                                                              |
    | sql_warnings           | OFF                                                            |
    +------------------------+----------------------------------------------------------------+
    11 rows in set, 1 warning (0.00 sec)
    
    mysql>
    

    还有一种查询方法就是通过select语句:

    select @@global.sql_mode;
    

    当一个全局变量不存在会话变量副本时也可以这样

    select @@max_connections;
    

    设置

    设置全局变量也有两种方式:

    set global sql_mode='';
    

    或者

    set @@global.sql_mode='';
    

    会话变量

    这些变量基本来自于全局变量的复制,与客户端连接有关,无论怎样修改,当连接断开后,一切都会还原,下次连接时又是一次新的开始。

    查询

    类比全局变量,会话变量也有类似的查询方式,查询所有会话变量

    show session variables;
    

    添加查询匹配,只查一部分会话变量:

    show session variables like 'sql%';
    

    查询特定的会话变量,以下三种都可以:

    select @@session.sql_mode;
    select @@local.sql_mode;
    select @@sql_mode;
    

    设置

    会话变量的设置方法是最多的,以下的方式都可以:

    set session sql_mode = '';
    set local sql_mode = '';
    set @@session.sql_mode = '';
    set @@local.sql_mode = '';
    set @@sql_mode = '';
    set sql_mode = '';
    

    用户变量

    用户变量就是用户自己定义的变量,也是在连接断开时失效,定义和使用相比会话变量来说简单许多。

    查询

    直接一个select语句就可以了:

    select @count;
    

    设置

    设置也相对简单,可以直接使用set命令:

    set @count=1;
    set @sum:=0;
    

    也可以使用select into语句来设置值,比如:

    select count(id) into @count from items where price < 99;
    

    局部变量

    局部变量通常出现在存储过程中,用于中间计算结果,交换数据等等,当存储过程执行完,变量的生命周期也就结束了。

    查询

    也是使用select语句:

    declare count int(4);
    select count;
    

    设置

    与用户变量非常类似:

    declare count int(4);
    declare sum int(4);
    set count=1;
    set sum:=0;
    

    也可以使用select into语句来设置值,比如:

    declare count int(4);
    select count(id) into count from items where price < 99;
    

    其实还有一种存储过程参数,也就是C/C++中常说的形参,使用方法与局部变量基本一致,就当成局部变量来用就可以了

    几种变量的对比使用

    操作类型全局变量会话变量用户变量局部变量(参数)
    文档常用名global variablessession variablesuser-defined variableslocal variables
    出现的位置命令行、函数、存储过程命令行、函数、存储过程命令行、函数、存储过程函数、存储过程
    定义的方式只能查看修改,不能定义只能查看修改,不能定义直接使用,@var形式declare count int(4);
    有效生命周期服务器重启时恢复默认值断开连接时,变量消失断开连接时,变量消失出了函数或存储过程的作用域,变量无效
    查看所有变量show global variables;show session variables;--
    查看部分变量show global variables like 'sql%';show session variables like 'sql%';--
    查看指定变量select @@global.sql_mode
    select @@max_connections;
    select @@session.sql_mode;
    select @@local.sql_mode;
    select @@sql_mode;
    select @var;select count;
    设置指定变量set global sql_mode='';
    set @@global.sql_mode='';
    set session sql_mode = '';
    set local sql_mode = '';
    set @@session.sql_mode = '';
    set @@local.sql_mode = '';
    set @@sql_mode = '';
    set sql_mode = '';
    set @var=1;
    set @var:=101;
    select 100 into @var;
    set count=1;
    set count:=101;
    select 100 into count;

    相信看了这个对比的表格,之前的很多疑惑就应该清楚了,如果发现其中有什么疑惑的地方可以给我留言,或者发现有什么错误也可以一针见血的指出来,我会尽快改正的。

    总结

    1. MySQL 中的变量通常分为:全局变量、 会话变量、 用户变量、 局部变量
    2. 其实还有一个存储过程和函数的参数,这种类型和局部变量基本一致,当成局部变量来使用就行了
    3. 在表格中有一个容易疑惑的点就是无论是全局变量还是会话变量都有select@@变量名的形式。
    4. select@@变量名这种形式默认取的是会话变量,如果查询的会话变量不存在就会获取全局变量,比如@@max_connections
    5. 但是SET操作的时候,set @@变量名=xxx 总是操作的会话变量,如果会话变量不存在就会报错
    展开全文
  • Mac 环境变量的配置和理解

    万次阅读 多人点赞 2017-01-19 18:13:11
    1. 环境变量介绍 1.1 环境变量的作用 环境变量和全局的变量有什么用呢? 1.1.1 使用场景1 我们先来看这样的一个使用场景1,我们有一个程序Java,需要读取某个文件(/data/file.txt)。 那么我们在运行的时候...

    1. 环境变量介绍

    1.1 环境变量的作用

    环境变量和全局的变量有什么用呢?

    1.1.1 使用场景1

    我们先来看这样的一个使用场景1,我们有一个程序Java,需要读取某个文件(/data/file.txt)。
    那么我们在运行的时候是不是需要做如下的步骤:

    1. cd 到Java的目录下;
    2. 执行Java命令;

      但是,当我们需要同时使用多个工具的时候,比如又有java、maven、git等等,而且是多台机器的时候,我们通常需要很多繁琐的cd操作。而配置环境变量 就可以使我们可以快速的运行这些脚本了。

    1.1.1 使用场景2

    如果我们又有JDK1.7,又有JDK1.8,而且需要经常的切换,那么怎么办?
    可以配置局部变量比如:

    export JDK1.7=/usr/apps/jdk1.7
    export JDK1.8=/usr/apps/jdk1.8
    export PATH=$JDK1.7/bin

    这样,在改变的时候,就不需要去不到改变,而改变部分句可以了。

    1.2 环境变量的作用

    ok,有了上面的介绍,我们大概就可以知道环境变量到底有什么用处了。用处就是可以在操作系统的各个目录下,都能访问到需要的工具目录内的内容,和Windows的桌面的思想十分相似,而且相当于在系统的各处都具有这个桌面的快捷方式。


    2. Mac环境变量配置

    在讲解Mac环境变量配置之前,大家可以打开dos框,输入
    “echo $PATH” 查看当前的path下有什么东西。
    个人的结果是这样的:

    localhost:/ Sean$ echo $PATH
    /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/Sean/Software/hadoop/hadoop-2.2.0/bin:/Users/Sean/Software/Scala/scala-2.11.8/bin:/Users/Sean/Software/Spark/spark-2.0.2-bin-hadoop2.7/bin

    可以看出,我的目录下有”/usr/local/bin、/usr/bin、/Users/Sean/Software/hadoop/hadoop-2.2.0/bin”都被作为环境变量进行加载了。
    那么下面我就讲解下,这个东西到底应当如何配置。

    2.1 环境变量文件的优先级

    其配置文件的优先级如下所示:

    /etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc

    2.2 Mac配置环境变量的地方

    1. /etc/profile (建议不修改这个文件 ) 全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
    2. /etc/bashrc (一般在这个文件中添加系统级环境变量) 全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
    3. ~/.bash_profile (一般在这个文件中添加用户级环境变量) 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!

    2.3 常见操作命令

    2.3.1 操作系统判断

    1. 首先要知道你使用的Mac OS X是什么样的Shell,使用命令 echo $SHELL
      如果输出的是:csh或者是tcsh,那么你用的就是C Shell。
      如果输出的是:bash,sh,zsh,那么你的用的可能就是Bourne Shell的一个变种。 Mac OS X 10.2之前默认的是C
      Shell。 Mac OS X 10.3之后默认的是Bourne Shell。
    2. 如果是Bourne Shell。
      那么你可以把你要添加的环境变量添加到你主目录下面的.profile或者.bash_profile,如果存在没有关系添加进去即可,如果没有生成一个。

    2.3.2 修改host文件

    sudo vi /etc/hosts

    2.3.3 linux下查看和添加PATH环境变量

    PATH的格式为:
    PATH=$PATH::::——: ,中间用冒号隔开。

    2.3.4 添加PATH环境变量:

    [root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH

    2.3.5 查看PATH环境变量:

    [root@localhost u-boot-sh4]#echo $PATH
    /usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

    2.3.6 操作示例

    • 通过编辑 启动文件 来改PATH。
    # vim /etc/profile
    • 在文档最后,添加:
    export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"

    保存,退出。

    • 想立即生效请运行:
    #source /etc/profile

    不报错则成功。

    如果想立刻生效,则可执行下面的语句:”$ source .bash_profile(这是文件名”。环境变量更改后,在用户下次登陆时生效。


    3. 软连接

    另外有很多小伙伴可能发现了,在mac上不设置环境变量有的时候也可以直接就访问到了某些文件。这个是为什么呢?答案是用了软连接。

    3.1 查看加载文件

    可以使用cat命令查看paths文件

    localhost:/ Sean$ cat etc/paths
    /usr/local/bin
    /usr/bin
    /bin
    /usr/sbin
    /sbin

    答案就是mac会自动加载paths目录,自动加载这些文件夹下的文件,所以使用软连接,在这些文件夹下建立软连接,可能达到相同的效果。

    3.2 软连接查看

    ls -li
    406876 lrwxr-xr-x   1 root   wheel        73  7  9  2016 jar -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar
    406877 lrwxr-xr-x   1 root   wheel        79  7  9  2016 jarsigner -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner
    406878 lrwxr-xr-x   1 root   wheel        74  7  9  2016 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
    406879 lrwxr-xr-x   1 root   wheel        75  7  9  2016 javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
    406880 lrwxr-xr-x   1 root   wheel        77  7  9  2016 javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc
    406881 lrwxr-xr-x   1 root   wheel        75  7  9  2016 javah -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javah
    406882 lrwxr-xr-x   1 root   wheel        75  7  9  2016 javap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javap
    406883 lrwxr-xr-x   1 root   wheel        76  7  9  2016 javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws
    406884 lrwxr-xr-x   1 root   wheel        74  7  9  2016 jcmd -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jcmd
    406885 lrwxr-xr-x   1 root   wheel        78  7  9  2016 jconsole -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jconsole
    406886 lrwxr-xr-x   1 root   wheel        73  7  9  2016 jdb -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdb
    406887 lrwxr-xr-x   1 root   wheel        75  7  9  2016 jdeps -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdeps
    406888 lrwxr-xr-x   1 root   wheel        74  7  9  2016 jhat -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jhat
    406889 lrwxr-xr-x   1 root   wheel        75  7  9  2016 jinfo -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jinfo
    406890 lrwxr-xr-x   1 root   wheel        73  7  9  2016 jjs -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jjs
    406891 lrwxr-xr-x   1 root   wheel        74  7  9  2016 jmap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmap
    406892 lrwxr-xr-x   1 root   wheel        73  7  9  2016 jmc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmc

    3.3 软连接建立和测试

    ln -s /data/kafka  /kafka
     ls -li
    11373698 lrwxr-xr-x   1 root  wheel    11  1 19 18:09 kafka -> /data/kafka

    4. 参考文献

    [1]. Mac 可设置环境变量的位置、查看和添加PATH环境变量
    [2]. Mac 的环境变量设置
    [3]. Linux下建立软连接
    [4]. Linux软连接和硬链接

    展开全文
  • Photoshop脚本 > 另存当前文档

    千次阅读 2014-11-17 13:50:43
    本节将演示如何使用脚本,保存一个文档。首先创建一个空白的脚本文档,并保存在硬盘上某个位置。 首先创建一个空白的脚本文档,并保存在硬盘...//定义一个变量[document],用来表示Photoshop当前的活动文档。 var doc

    源自:http://coolketang.com/tutorials/menu2lesson5.php


    本节将演示如何使用脚本,保存一个文档。首先创建一个空白的脚本文档,并保存在硬盘上某个位置。

    首先创建一个空白的脚本文档,并保存在硬盘上某个位置。

    接着输入脚本代码:

    //定义一个变量[document],用来表示Photoshop当前的活动文档。
    var document = app.activeDocument;
    
    //定义一个变量[fileOut],用来指定文件保存的路径。
    var fileOut = new File("E:\\newPic.png");
    
    //定义一个变量[options],用来指定图片保存的格式为PNG。
    var options = PNGSaveOptions;
    
    //定义一个变量[asCopy],用来指定图片以副本的方式保存。
    var asCopy = true;
    
    //定义一个变量[extensionType],用来指定图片名称的后缀为小写的.png。
    var extensionType = Extension.LOWERCASE;
    
    //使用[document]对象的[saveAs]方法保存当前图片。
    document.saveAs(fileOut, options, asCopy, extensionType);

    我们的脚本已经编写完成,把它保存下来。

    然后切换到Photoshop,然后依次点击[文件] > [脚本] > [浏览],打开刚刚保存的脚本文件。Photoshop将直接调用并执行该脚本。

    在弹出的[载入]窗口中,直接双击脚本名称,Photoshop将直接调用并执行该脚本。

    脚本执行完毕后,可打开图片另存的文件夹,检查保存后的文件。






    展开全文
  • 对于Python语言变量,我想大家都不陌生,但是在Python变量也有很多种类。如私有变量、共有变量、全局变量、局部变量等。这里给大家介绍Python类(class)变量之间的区别。参考代码: class G(): fly ...
  • Photoshop脚本 > 输出当前文档的信息

    千次阅读 2014-11-17 13:38:17
    本节将演示如何使用脚本,查看已打开的所有文档的尺寸信息。...定义一个变量[docs],它是一个数组,用来存储Photoshop当前已打开的所有文档。 定义一个变量[message],它的默认值为空。这个变量将在后面的代码
  • Ansible自定义变量的使用

    千次阅读 2017-12-02 22:44:23
    Ansible自定义变量的定义方式有以下四种: 1,通过命令行定义变量 2,在playbook定义变量 3,在主机清单文件定义变量 4,通过roles角色定义变量 本文将主要针对Ansible定义变量的四种方式进行简单介绍
  • Windows的环境变量一览

    万次阅读 多人点赞 2017-01-04 00:07:03
    Windows的环境变量
  • MakeFile变量定义

    万次阅读 2009-07-10 14:28:00
    2. 出现在规则命令行shell变量(一般为执行命令过程的临时变量,它不属于Makefile变量,而是一个shell变量)引用使用shell的“$tmp”格式。3. 对出现在命令行的make变量我们同样使用“$(C
  • MySQL中变量的定义和变量的赋值使用

    千次阅读 2018-03-23 09:44:28
    说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。前言MySQL存储...
  • 模型变量对模型的解释程度

    万次阅读 2018-12-02 22:00:46
    在建立一个模型后,我们会关心这...但对于大多数非线性模型,是比较难确定各个变量的贡献程度,本文仅讨论广义线性模型变量贡献程度。因此本文分为两种情况来看:普通线性模型与广义线性模型。 普通线性回归...
  • GitLab CI/CD Variables 中文文档

    千次阅读 2019-06-27 18:29:00
    官方文档链接(这篇文章也算是翻译自官网文档): GitLab CI/CD environment variables 当GitLab CI 接受到一个job后,Runner就开始准备构建环境。开始设置预定义的变量(环境变量)和用户自定义的变量。 variables...
  • Shell语言变量和引用

    千次阅读 2019-06-05 21:33:22
    变量就是程序设计语言的一个可以变化的量,当然,可以变化的是变量的值。变量几乎所有的程序设计语言中都有定义,并且其涵义也大同小异。从本质上讲,变量就是在程序保存用户数据的一块内存空间,而变量名就是...
  • Python的全局变量

    千次阅读 2020-07-11 08:54:52
    In this tutorial, We will look into Python Global Variables. We will learn how to define a global variable and then how to access them in a ... 我们将学习如何定义全局变量,然后如何在函数访问它们。...
  • Python变量和数据类型

    千次阅读 2018-10-29 12:38:45
    目录 变量 全局变量和局部变量 ...变量是计算机内存的一块区域,变量可以存储任何值(也称指向),而且值可以改变。变量是存储在内存的值。这就意味着在创建变量时会在内存开辟一个空间。基于变...
  • 说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin...end块,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。 前言 MySQL...
  • MySQL变量定义与赋值(干货)

    万次阅读 2019-04-09 20:17:21
    说明:现在市面上定义变量的教程和书籍基本都放在存储过程上说明,但是存储过程上变量只能作用于begin…end块,而普通的变量定义和使用都说的比较少,针对此类问题只能在官方文档中才能找到讲解。 前言 MySQL存储...
  • linux环境变量自定义环境变量

    千次阅读 2016-12-20 14:37:17
    shell变量可以简单分为环境变量和自定义变量。环境变量有时也被称为全局变量,它是操作系统为Shell事先定义的一组变量,这些变量共同描述了当前shell运行的系统环境;而自定义变量则是用户根据所需而定义的变量...
  • Pygame 中文文档

    万次阅读 多人点赞 2018-03-01 16:44:12
    pygame | pygame中文文档pygamePygame 最顶层的包。函数 &amp; 属性pygame.init() — 初始化所有导入的 pygame 模块pygame.quit() — 卸载所有导入的 pygame 模块pygame.error() — 标准 pygame 异常模块pygame....
  • linux变量赋值及改变、显示

    千次阅读 2017-11-12 02:08:00
    一,SHELL本地变量:本地变量就如同局部变量一样,只在本SHELL起作用。它不会影响到其他SHELL变量。格式:NAME=value1,变量的调用:在变量前加$$ echo $HOME/home/hbwork$ WEEK=Satur$ echo Today is $...
  • Qt中文文档-QAbstractAnimation

    千次阅读 2017-10-28 11:41:51
    Qt中文文档-QAbstractAnimation 类 QAbstractAnimation 是所有的动画相关的基类 简述 公共类型 属性 public函数 公有槽 公有信号 protect函数 ...成员变量文档 enum QAbstractAnimationDeletionPoli
  • Java环境变量中classpath是必须配置吗

    千次阅读 2020-12-19 20:29:23
    在java 需要设置三个环境变量(1.5之后不用再设置classpath了,但个人强烈建议继续设置以保证向下兼用问题)。 JDK安装完成之后我们来设置环境变量:右击“我的电脑”,选择“属性”,选择“高级”标签,进入环境...
  • 顺风详解Nginx系列—Ngx变量

    千次阅读 2018-05-11 08:53:02
    在计算机语言变量是用来存储和表示数据的,但不同的语言表示变量的方式不同,像java语言会把变量抽象成各种类型,并且每种类型都会用一个特殊的符号表示,比如表示一个整数...
  • vue-cli的index.html使用环境变量

    千次阅读 2020-01-03 10:35:19
    项目使用了公司定义的统一头部文件,需要引入header.js和header.css。负责人希望各个环境引入各自的js和css。 ...感觉很麻烦。 翻阅cli官方文档后看到了这样一段话。....env.xxx环境文件定义变量...
  • LUA的全局变量环境

    千次阅读 2014-09-05 23:43:42
    LUA的全局变量环境  2011-01-24 18:33:00| 分类: LUA|举报|字号 订阅 LUA中文手册 Chapter14笔记。 一、全局变量的环境 LUA这货在全局变量的实现方式上用了一个绝对让我喜闻乐见的...
  • java获取环境变量

    千次阅读 2010-07-27 22:41:00
    获取JVM相关的一些变量 在运行时设置一个环境变量 debug 为 true: java -Ddebug=true YourClass 在程序设置一个环境变量 debug 为 true: System.setProperty( "debug", "true" ); 获取一个环境...
  •  在OpenGL ES,内建特殊变量部分来自顶点着色器的输出变量,部分来自于片元着色器的输入变量和输出变量。不同于用户定义的varying变量,内建特殊变量不用在顶点语言和片元语言之间保持严格的一对一对应。相反,两...
  • JavaScript变量 JavaScript使用var关键字声明变量。声明变量的5种常规用法如下: var a; //声明单个变量。var关键字与变量名之间以空格分隔 var b, c; //声明多个变量变量之间以逗号分隔 var d = 1; //声明...
  • using System; using System.Text; namespace MyTest ...,此时已超出for循环块定义范围,所以会出现:当前上下文不存在名称“ num ”的错误提示。   Console.ReadLine();   }   } }

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 451,053
精华内容 180,421
关键字:

当前文档中不是变量