变量

第12章 学习shell脚本

风格不统一 提交于 2020-02-24 12:52:40
12.1 什么是shell脚本 就字面上的意思,即针对shell所写的剧本,shell脚本是利用shell的功能所写的一个程序,这个程序使用纯文本文件,将一些shell的语法和命令(也可以是外部命令)写在里面,还能搭配正则表达式、管道命令和数据流重定向等功能,以达到我们需要的处理目的,执行一个“shell脚本”文件,就能一次执行多个命令,shell脚本还提供数组、循环、条件与逻辑判断等功能,用户可以直接用shell来编写程序,而不必使用类似C语言等传统程序语言来编写,shell脚本可以简单地被看成是批处理文件,也可以被说成是程序语言,且由于这个程序语言都是利用shell与相关工具命令,所以不需要编译即可执行 1学习shell脚本的作用 自动化管理:管理一台主机每天要进行的任务有查询日志文件、跟踪流量、监控用户使用主机状态、主机各项硬件设备状态、主机软件更新查询等,你可以每天手动处理这些事情,也可以写个简单的shell脚本,让它来帮你处理每天的任务 帮助管理系统:CentOS6.x以前的版本中系统服务启动的接口是在/etc/init.d/这个目录下,这个目录下所有文件都是脚本文件,另外,包括启动过程也要利用shell脚本来帮忙查询系统的相关设置参数,然后再代入各个服务中,从CentOS7开始,/etc/init.d/这个脚本启动的方式由systemd所替代

c++程序—变量

北城以北 提交于 2020-02-24 10:58:26
#include<iostream> using namespace std; int main() { int a = 10; cout << "a=" << a << endl; system("pause"); return 0; }    来源: https://www.cnblogs.com/hackerteen/p/12355913.html

闭包的理解

廉价感情. 提交于 2020-02-24 08:03:15
形成闭包的必须满足三个条件 functin a(){ var num=100; return function b(){ console.log(num) } } //mm 接受的是 a 函数执行以后的返回值 // mm 接受的就是函数 a 内部返回的一个复杂数据类型(函数b) var mm=a() mm() // 打印出来的就是 a 函数内部的私有变量 num 的值 1.在函数 A 内部直接或者间接返回一个函数 B 2. B 函数内部使用着 A 函数的私有变量(私有数据) 3. 3. A 函数外部有一个变量接受着函数 B 闭包的特点(优点和缺点并存) 1. 延长了变量的生命周期 + 优点: 因为执行空间不销毁, 变量也没有销毁 + 缺点: 因为执行空间不销毁, 会一直存在在内存中 2. 可以访问函数内部的私有变量 + 优点: 利用闭包函数可以访问函数内部的私有变量 + 缺点: 执行空间不会销毁, 会一直存在在内存中 3. 保护私有变量(只要是函数, 就有这个特点) + 优点: 保护私有变量不被外界访问 + 缺点: 如果向访问, 必须要利用闭包函数 闭包的函数的缺点 致命 + 因为当一段内存空间中有一个不会被销毁的东西一直存在 + 那么就会出现内存占用, 如果过多, 就会导致内存溢出 + 那么结果就是 内存泄漏 闭包的作用 + 就是当你需要延长变量的声明周期的时候 +

浅谈js闭包

萝らか妹 提交于 2020-02-24 08:02:07
什么是闭包? 在了解闭包之前,让我们来回顾一下什么是变量作用域? 变量根据作用域的不同分为两种:全局变量(在函数外部)和局部变量(在函数内部)。 函数内部可以使用全局变量。 函数外部不可以使用局部变量。 当函数执行完毕,本作用域内的局部变量会销毁。 闭包的含义 闭包(closure)是指有权访问另一个函数作用域中变量的函数,是JavaScript中,函数的一种高级应用。 简单理解就是,一个作用域可以访问另外一个函数内部的局部变量。 生成闭包的三个必要条件(三个条件缺一不可) 在函数A内部直接或者间接返回一个函数B B函数内部使用着A函数的私有变量(私有数据) A函数外部有一个变量接收着函数B 闭包函数会形成一个不会销毁的函数空间 function a ( ) { //num变量就是函数a的私有变量 var num = 100 ; return function ( b ) { console . log ( num ) } } //res 接收的是a函数执行以后的返回值 //res接收的就是函数a内部返回的一个复杂数据类型(函数b) // =>导致函数a的执行空间不会销毁 //res 随时可以是一个函数a里面返回的函数b // =>res可以随时调用 res ( ) //当res调用的时候,打印num,打印出来的就是a函数内部的私有变量num的值

synchronized 与 volatile

爷,独闯天下 提交于 2020-02-24 07:47:35
synchronized 与 volatile: 可见性 :一个线程对共享变量的修改,能够及时的被其他线程看到 所有的变量都储存在主内存中,每个线程独有自己独立的工作内存,里面保存着主内存中该变量的拷贝副本 线程对共享变量的操作都必须在自己的工作内存中进行不能直接在主内存中读写。不同线程中的变量值需要通过主内存传递。 Synchronized :可以实现原子性(同步)、可见性。线程解锁前必须把共享变量的最新值刷新到主内存中。加锁时会清空工作内存中共享变量的值,从而使用共享变量时会重新从主内存中读取最新变量值(加锁解锁需要是同一把锁)。 重排序:代码书写顺序与实际执行顺序不一致 是编译器或者处理器为提高程序执行性能而做的优化 共享变量线程间不可见原因:重排序、线程交叉执行、共享变量值更新后没有在工作内存和主内存间及时更新 Synchronized 加到方法上时默认使用当前对象锁。方法一旦执行,就会独占该锁,一直到从该方法返回时或者出现异常时 jvm才将锁释放,此后被阻塞的线程方能获得该锁,从而重新进入可执行状态。 运行结果多运行几次会发现 如果不加synchronized 多个线程会存在交叉运行如:002、022或者线程的先后顺序会变化如002、222。 加了synchronized后虽然线程的先后顺序会变化但会一直到从该方法返回。 Volitale

JDK

霸气de小男生 提交于 2020-02-24 06:41:00
1.下载地址: www.oracle.com/technetwork/java/javase/downloads/index.html 2.环境变量配置: 计算机-属性-高级系统设置-高级-环境变量-系统变量中的有path-新建<变量名:JAVA_HOME 变量值:安装的JDK目录> -在系统变量区域,选择"新建按钮"输入"变量名"为CLASSPATH,输入"变量值”为 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar -在系统变量区域,选择Path,点击下面的编辑按钮,在弹出的框中选择新建添加2行,一行输入%JAVA_HOME%\bin,一行输入%JAVA_HOME%\jre\bin 3. 测试JDK安装成功: Win+R-cmd-输入java-出下面为失败 Cmd运行java 用纯文本编辑好代码保存 名称.java 例如Wlcome.java Cmd打开输入 E:      进入e盘 cd Javacode 进入Javacode文件 javac Wlcome.Java 编译Wlcome.java文件 Java Wlcome 运行出结果 3.集成开发环境 Eclipse Intellij ide Netbeans 来源: CSDN 作者: Manta__ 链接: https://blog.csdn.net/Manta__

JAVA基础补漏--内部类

扶醉桌前 提交于 2020-02-24 06:15:13
成员内部类 public class InnerClass { public static void main(String[] args) { System.out.println("+++++++++++++++++++++++"); Outer.Inner oi = new Outer().new Inner(); oi.methodInner(); } } public class Outer { int num = 10; public class Inner{ int num = 20; public void methodInner(){ int num =30; System.out.println(num); System.out.println(this.num); System.out.println(Outer.this.num); } } } 局部内部类 public class InnerClass { public static void main(String[] args) { Outer out = new Outer(); out.methodOuter(); } } public class Outer { int num = 10; public void methodOuter(){ class Inner{ int num = 10;

Lua中的错误处理与调试类

僤鯓⒐⒋嵵緔 提交于 2020-02-24 05:29:41
一、错误处理 任何程序语言都需要有错误处理,以帮助我们更好的调试程序,程序中的错误类型主要有两种:语法错误和运行错误;语法错误会导致程序无法运行,但是它很简单,能够快速定位修复,而运行错误是程序可以运行,在运行时出错; 1.assert 断言,终止正在执行的函数,这是几乎每个语言都会提供的一个函数;在lua中,assert函数有两个参数,第一个参数,检查是否为true,如果是则不做任何事情,否则就会将第二个参数作为错误信息抛出; local t={1,2,3} local func = function(s) assert(type(s) == "string", "not string") print(s) end func(t) 2.error error函数终止正在执行的函数;error(msg, level),第一个参数为错误信息,第二个参数level为系统附加的一些错误信息,帮助定位错误; level默认为1,为调用error的位置(文件+行号);为0时不包含任何其它信息,为1时会指出调用error函数的函数; local t={1,2,3} local func = function(s) if type(s) ~= "string" then error("not string", 1) else print(s) end end func(t) 3.pcall

php中的extract函数

纵饮孤独 提交于 2020-02-24 05:07:26
extract函数用来将一个数字分解成多个变量直接使用,下面是W3C的解释:PHP extract() 函数从数组中把变量导入到当前的符号表中。对于数组中的每个元素,键名用于变量名,键值用于变量值。第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。本函数返回成功设置的变量数目。 下面表格是参数说明: 语法 extract(array,extract_rules,prefix) 参数 描述 array 必需。规定要使用的输入。 extract_rules 可选。extract() 函数将检查每个键名是否为合法的变量名,同时也检查和符号表中的变量名是否冲突。 对非法、数字和冲突的键名的处理将根据此参数决定。可以是以下值之一: 可能的值: EXTR_OVERWRITE - 默认。如果有冲突,则覆盖已有的变量。 EXTR_SKIP - 如果有冲突,不覆盖已有的变量。(忽略数组中同名的元素) EXTR_PREFIX_SAME - 如果有冲突,在变量名前加上前缀 prefix。自 PHP 4.0.5 起,这也包括了对数字索引的处理。 EXTR_PREFIX_ALL - 给所有变量名加上前缀 prefix(第三个参数)。 EXTR_PREFIX_INVALID - 仅在非法或数字变量名前加上前缀 prefix。本标记是 PHP

JS闭包

假装没事ソ 提交于 2020-02-24 04:57:44
JS闭包 了解函数的两个阶段 函数的定义阶段 在内存中开辟一个存储空间 把函数体内的代码当作字符串一模一样的放在这个空间中(遇到的所有变量都不进行解析) 把这个空间地址赋值给函数名(变量名) 函数的调用阶段 按照函数名(变量名)找到对应的存储空间 从新开辟一个函数 执行空间 在这个执行空间里面进行形参赋值 在这个执行空间里面进行预解析 把函数存储空间的代码复制一份到执行空间里面执行一遍 执行完毕之后, 这个开辟出来的执行 空间销毁 注意 :函数每次调用的时候都会开辟一个执行空间,调用完毕代码就会被销毁,当你再次调用的时候会再开辟一个执行空间,执行完毕代码就会被销毁。 举个栗子: var num = 100 function fn ( ) { console . log ( '数字: ' + num ) } fn ( ) fn ( ) 函数的两个阶段上图代码的图解: 解析: 函数定义阶段 在内存中开辟了一个函数存储空间(xxff00) 把 console.log('数字: ’ + num) 这句代码放在这个存储空间中, 此时 num 变量没有解析, 存储的就是 num 把 xxff00 这个空间地址赋值给了 fn 这个函数名 函数调用阶段 按照 fn 里面存储的地址, 找到 xxff00 这个函数存储空间 开辟一个函数执行空间(xxff11), 在运行内存里面 在 xxff11