状态变量

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

心不动则不痛 提交于 2020-02-25 12:04:39
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara

Shell特殊变量:Shell $0, $#, $*, $@, $?, $$和命令行参数

蹲街弑〆低调 提交于 2020-02-25 12:04:11
特殊变量列表 变量 含义 $0 当前脚本的文件名 $n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。 $# 传递给脚本或函数的参数个数。 $* 传递给脚本或函数的所有参数。 $@ 传递给脚本或函数的所有参数。被双引号(" ")包含时,与 $* 稍有不同,下面将会讲到。 $? 上个命令的退出状态,或函数的返回值。 $$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。 命令行参数 运行脚本时传递给脚本的参数称为命令行参数。命令行参数用 $n 表示,例如,$1 表示第一个参数,$2 表示第二个参数,依次类推。 请看下面的脚本: #!/bin/bash echo "File Name: $0" echo "First Parameter : $1" echo "First Parameter : $2" echo "Quoted Values: $@" echo "Quoted Values: $*" echo "Total Number of Parameters : $#" 运行结果: $./test.sh Zara Ali File Name : ./test.sh First Parameter : Zara Second Parameter : Ali Quoted Values: Zara

烂泥:学习Nagios(二):Nagios配置

我们两清 提交于 2020-02-24 17:46:45
本文由 秀依林枫 提供友情赞助,首发于 烂泥行天下 nagios安装完毕后,我们现在就来配置nagios。有关nagios的安装,可以参考《 烂泥:学习Nagios(一):Nagios安装 》这篇文章。 说明:为了和nagios版本的保持一直,我们在此使用的是nagios最新版nagios-4.1.0rc1。 注意:最新版的nagios可在web页面查看其运行的PID。 一、nagois监控对象 nagios监控的对象比较多,我们可以从颗粒度的不同进行划分,分为笼统对象和详细对象。 1.1 笼统对象 nagios监控的笼统对象可以分为两种类型:网络服务和主机资源。 网络服务包括主机(含网络设备)存活状态、web服务、ftp服务、数据库服务、自定义服务等。 主机资源包括系统负载、当前IP链接数、磁盘空间使用情况、当前进程数、自定义资源等。 1.2 详细对象 nagios监控的详细对象,有以下对象: 网站监控、主流数据库监控、协议监控、操作系统监控、应用监控、应用服务器监控、网络监控、动力环境监控、存储监控、邮件监控、安全监控、日志监控、虚拟化监控。 网站监控主要包括网站、网站应用、网站内容、HTTP、SSL等。 主流数据库监控主要包括MySql、Oracle、DB2、MSSQL等。 协议监控主要包括HTTP、DNS、FTP、SNMP、SMTP、SSH、LDAP、IMAP、POP

Java并发编程(三)概念介绍

狂风中的少年 提交于 2020-02-23 16:28:26
在构建稳健的并发程序时,必须正确使用线程和锁。但是这终归只是一些机制。要编写线程安全的代码,其核心在于要对状态访问操作进行管理,特别是对 共享的(Shared) 和 可变的(Mutable) 状态的访问。 对象的状态是指存储在 状态 变量(例如实例或静态域)中的数据。 对象的状态可能包括其他 依赖对象的域 。比如某个HashMap的状态不仅是HashMap对象本身,还存储在许多Map.Entry对象中。 "共享"意味着变量可以由多个线程同时访问,而"可变"则意味着变量的值在其生命周期内可以变化。 线程安全性在于如何防止数据上发生 不可控的并发访问 。 一个对象是否 需要是线程安全的 ,取决于它是否被多个线程访问。 要使对象是线程安全的,需要采用 同步机制 来协同对对象可变状态的访问。如果无法实现协同,那么可能导致数据破坏以及其他不该出现的结果。 协同多个线程对变量访问的同步机制主要有: 1. 关键字 synchronized 2. 关键字 volatile 3. 显式锁 (Explicit Lock) 4. 原子变量 协同多线程访问一个可变的状态变量的方法有: 1. 不在线程之间共享该状态变量 2. 将状态变量修改为不可变的变量 3. 在访问状态变量时使用同步 什么是线程安全? 一个类在多线程环境下被访问,这个类始终能表现出正确的行为,那么就称这个类是线程安全的。

简单看看ThreadPoolExecutor原理

你。 提交于 2020-02-15 22:20:12
  线程池的作用就不多说了,其实就是解决两类问题:一是当执行大量的异步任务时线程池能够提供较好的性能,在不使用线程池时,每当需要执行异步任务是需要直接new一个线程去执行,而线程的创建和销毁是需要花销的,而线程池中的线程是可复用的,不需要每次执行异步任务时都去创建和销毁线程;二是线程池提供了一种资源限制和管理的手段,比如可以限制线程的个数、动态新增线程等; 一.Executors工具类   我们创建一个线程池最好直接用这个工具类去创建,常用的线程池有几种,一种是用newFixedThreadPool方法创建固定大小的线程池,一种是newSingleThreadExecutor方法创建单线程的线程池,一种是newCachedThreadPool方法创建线程最多个数为Integer.MAX_VALUE的线程池,还有一些其他的线程池;   看一下Executors工具类中一些重要的方法,先是newFixedThreadPool方法,只看这个,我们可以实际的线程池类型是ThreadPoolExecutor,而且内部是以LinkedBlockingQueue这个并发队列实现的,前面说过,这是一个有界阻塞队列,底层是一个单向链表,入队和出队是用独占锁实现的一个生产者消费者模式,比较容易;   newSingleThreadExecutor方法,其实可以看到就是用上面的这种线程池实现的

彻底理解synchronized

喜欢而已 提交于 2020-02-13 12:41:22
1. synchronized简介 在学习知识前,我们先来看一个现象: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 public class SynchronizedDemo implements Runnable { private static int count = 0; public static void main(String[] args) { for (int i = 0; i < 10; i++) { Thread thread = new Thread(new SynchronizedDemo()); thread.start(); } try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("result: " + count); } @Override public void run() { for (int i = 0; i < 1000000; i++) count++; } } 开启了10个线程,每个线程都累加了1000000次,如果结果正确的话自然而然总数就应该是10 * 1000000 = 10000000

简单理解符号执行技术

允我心安 提交于 2020-02-10 20:02:22
0X00 前言 因为最近看的很多静态检测的论文中涉及到了符号执行的概念,而在我第一次听到符号执行实际上是在我的一些搞二进制学长口中,自然认为是和 web 没啥关系,但是现在看来只是因为我我太菜了,很多知识在更高的层次看起来都是交融的,而不是我现在看到的全部都是互不相关的板块,或许这也就是为什么要读研吧, 不读研那就疯狂努力吧 。好了,废话不多讲了,由于我对符号执行的理解没有达到很高的层次,不能进行更详尽的总结分析 ,故我只能在网上找了一些我个人认为总结的比较好,并且通俗易懂的文章进行一些摘录, 在此之前先对这些优秀的作者表示感谢,文章之后我会附上我引用的文章或者论文的链接。 0X01 通俗地解释符号执行 Wiki中的定义是:在计算机科学中,符号执行技术指的是通过程序分析的方法,确定哪些输入向量会对应导致程序的执行结果为某个向量的方法(绕)。通俗的说, 如果把一个程序比作DOTA英雄,英雄的最终属性值为程序的输出(包括攻击力、防御力、血槽、蓝槽),英雄的武器出装为程序的输入(出A杖还是BKB)。那么符号执行技术的任务就是,给定了一个英雄的最终属性值,分析出该英雄可以通过哪些出装方式达到这种最终属性值效果。 可以发现, 符号执行技术是一种白盒的静态分析技术 。即,分析程序可能的输入需要能够获取到目标源代码的支持。 同时,它是静态的,因为并没有实际的执行程序本身,而是分析程序的执行路径

权限修饰符、

亡梦爱人 提交于 2020-02-05 02:36:03
3.1 修饰符分两大类: 权限修饰 和状态修饰 状态修饰符 final为最终的意思,用户修饰 方法、变量、类 放在前面; 例: 在变量中: 在类中: 在方法中: 意思是 引用类型可以变,意思是 栈内存的可以变,但是堆内存的不可以。 基本类型 是 堆内存的。 来源: https://www.cnblogs.com/gxtoo/p/12262337.html

多线程面试60题超详解

久未见 提交于 2020-01-31 09:24:54
多线程面试60题 1.多线程有什么用? 2.线程和进程的区别是什么? 3.Java 实现线程有哪几种方式? 4.启动线程方法 start()和 run()有什么区别? 5.怎么终止一个线程? 6.一个线程的生命周期有哪几种状态?它们之间如何流转的? 7.线程中的 wait()和 sleep()方法有什么区别? 8.多线程同步有哪几种方法? 9.什么是死锁?如何避免死锁? 10.多线程之间如何进行通信? 11、线程怎样拿到返回结果? 12、violatile 关键字的作用? 13、新建 T1、T2、T3 三个线程,如何保证它们按顺序执行? 14、怎么控制同一时间只有 3 个线程运行? 15、为什么要使用线程池? 16、常用的几种线程池并讲讲其中的工作原理。 什么是线程池? 线程池的好处 如何提交线程 submit 和 execute 分别有什么区别呢? 如何关闭线程池es.shutdown()? 17、线程池启动线程 submit()和 execute()方法有什么不同? 18、CyclicBarrier 和 CountDownLatch 的区别? 19、什么是活锁、饥饿、无锁、死锁? 20、什么是原子性、可见性、有序性? 21、什么是守护线程?有什么用? 什么是守护线程? 22、一个线程运行时发生异常会怎样? 23、线程 yield()方法有什么用? 24、什么是重入锁? 25

Hidden Markov Model

一个人想着一个人 提交于 2020-01-31 05:53:36
HMM隐马尔科夫模型 ①通俗的理解 首先举一个例子,扔骰子,有三种骰子,第一个是比较常见的6个面 x = [ 1 , 2 , 3 , 4 , 5 , 6 ] x = [1,2,3,4,5,6] x = [ 1 , 2 , 3 , 4 , 5 , 6 ] ,每一个面的概率都是1/6。第二个只有4个面, x = [ 1 , 2 , 3 , 4 ] x = [1,2,3,4] x = [ 1 , 2 , 3 , 4 ] ,每一个面的概率是1/4。第三个有8个面, x = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] x = [1,2,3,4,5,6,7,8] x = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] ,每一个面的概率是1/8。 首先先选择一个骰子,挑到每一个骰子的概率1/3,然后投掷,可以得到 x = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] x = [1,2,3,4,5,6,7,8] x = [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 ] 。最后会得到一堆的序列,比如会得到 O = [ 1 , 5 , 3 , 8 , 6 , 5 , 7 , 2 ] O = [1,5,3,8,6,5,7,2] O = [ 1 , 5 , 3 , 8 , 6 , 5 , 7 , 2 ] 等等