daemon

JAVA并发编程——守护线程(Daemon Thread)

不羁的心 提交于 2020-03-15 02:43:22
在Java中有两类线程:用户线程 (User Thread)、守护线程 (Daemon Thread)。 所谓守护 线程,是指在程序运行的时候在后台提供一种通用服务的线程,比如垃圾回收线程就是一个很称职的守护者,并且这种线程并不属于程序中不可或缺的部分。因 此,当所有的非守护线程结束时,程序也就终止了,同时会杀死进程中的所有守护线程。反过来说,只要任何非守护线程还在运行,程序就不会终止。 用户线程和守护线程两者几乎没有区别,唯一的不同之处就在于虚拟机的离开:如果用户线程已经全部退出运行了,只剩下守护线程存在了,虚拟机也就退出了。 因为没有了被守护者,守护线程也就没有工作可做了,也就没有继续运行程序的必要了。 将线程转换为守护线程可以通过调用Thread对象的setDaemon(true)方法来实现。在使用守护线程时需要注意一下几点: (1) thread.setDaemon(true)必须在thread.start()之前设置,否则会跑出一个IllegalThreadStateException异常。你不能把正在运行的常规线程设置为守护线程。 (2) 在Daemon线程中产生的新线程也是Daemon的。 (3) 守护线程应该永远不去访问固有资源,如文件、数据库,因为它会在任何时候甚至在一个操作的中间发生中断。 代码示例: import java.util.concurrent

shell入门-sed-2替换功能

故事扮演 提交于 2020-03-14 11:27:24
sed的替换功能和vim语法挺像的 把1到10行的nologin替换成login [root@wangshaojun ~]# sed '1,10s/nologin/login/g' 1.txt root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/login daemon:x:2:2:daemon:/sbin:/sbin/login .... vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin $ 把1到10行的/sbin/nologin改成login [root@wangshaojun ~]# sed '1,10s/\/sbin\/nologin/login/g' 1.txt [root@wangshaojun ~]# sed '1,10s#/sbin/nologin#login#g' 1.txt [root@wangshaojun ~]# sed '1,10s@/sbin/nologin@login@g' 1.txt

Shell脚本之awk详解

三世轮回 提交于 2020-03-13 14:08:18
一.基本介绍 1.awk: awk是一个强大的文本分析工具,在对文本文件的处理以及生成报表,awk是无可替代的。awk认为文本文件都是结构化的,它将每一个输入行定义为一个记录,行中的每个字符串定义为一个域(段),域和域之间使用分割符分割。 2.功能:流控制、数学运算、进程控制、内置的变量和函数、循环和判断 3.工作原理: awk 会把每行进行一个拆分,用相应的命令对拆分出来的“段”进行处理。 (1)行工作模式,读入文件的每一行,会把一行的内容,存到$0里 (2)使用内置的变量FS(段的分隔符,默认用的是空白字符),分割这一行,把分割出来的每个段存到相应的变量$(1-100) (3)输出的时候按照内置变量OFS(out FS),输出 (4)读入下一行继续操作 简单实例 [root@tx3 ~]# echo "this is a book" > awk.txt [root@tx3 ~]# awk '{print $2,$1,$3,$4}' awk.txt is this a book 4. Awk常用内置变量表: 1 $0 当前记录(作为单个变量) 2 $1~$n 当前记录的第n个字段,字段间由FS分隔 3 FS 输入字段分隔符 默认是空格 4 NF 当前记录中的字段个数,就是有多少列 5 NR 已经读出的记录数,就是行号,从1开始 6 RS 输入的记录他隔符默 认为换行符 7 OFS

laravel框架中queue:listen 和 queue:work --daemon 的区别

送分小仙女□ 提交于 2020-03-12 12:01:17
三种情况: queue:work 默认只执行一次队列请求, 当请求执行完成后就终止; queue:listen 监听队列请求, 只要运行着, 就能一直接受请求, 除非手动终止; queue:work --daemon 同 listen 一样, 只要运行着, 就能一直接受请求, 不一样的地方是在这个运行模式下, 当新的请求到来的时候, 不重新加载整个框架 , 而是直接 fire 动作. 能看出来, queue:work --daemon 是最高级的, 一般推荐使用这个来处理队列监听. 注意: 使用 queue:work --daemon , 当更新代码的时候, 需要停止, 然后重新启动, 这样才能把修改的代码应用上. 至于存在的必要 首先, --daemon 是在 Laravel 4.2 以后才加入的. 其次, 从上面的分析来看, queue:listen 和 queue:work --daemon 还是有区别的. 在laravel中可以选择多种队列服务,常见的有redis和beanstalk,由于redis是单纯的db,数据完全透明所以这里用redis作为讲解对象会更加好理解。 laravel中队列的启动方式有queue:listen和queue:work, 其中queue:work表示单独运行下一个job. 关于区别请看:queue:listen 和 queue:work -

Docker安装

十年热恋 提交于 2020-03-12 08:29:28
一、docker简介: Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux或Windows 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。 一个完整的Docker有以下几个部分组成: 1.DockerClient客户端 2.Docker Daemon守护进程 3.Docker Image镜像 4.DockerContainer容器 二、Docker架构: Docker 使用客户端-服务器 (C/S) 架构模式,使用远程API来管理和创建Docker容器。Docker 容器通过 Docker 镜像来创建。容器与镜像的关系类似于面向对象编程中的对象与类。 Docker 面向对象 容器 对象 镜像 类 一句话:镜像是容器运行的基石,容器是镜像运行之后的实例。 Docker采用 C/S架构 Docker daemon 作为服务端接受来自客户的请求,并处理这些请求(创建、运行、分发容器)。 客户端和服务端既可以运行在一个机器上,也可通过 socket 或者RESTful API 来进行通信。 Docker daemon 一般在宿主主机后台运行,等待接收来自客户端的消息。 Docker 客户端则为用户提供一系列可执行命令,用户用这些命令实现跟 Docker daemon 交互。 三

Cordova - Windows 下创建第一个 Android App

我们两清 提交于 2020-03-12 00:32:15
官方文档: Create your first Cordova app Android Platform Guide 安装 JDK 和 Android SDK 注意: 需要将 JK 和 Android SDK 所在目录添加到环境变量中,分别命名为 JAVA_HOME 和 ANDROID_HOME ,否则编译时 Cordova 报错。 安装 Cordova 因为 Cordova 命令行工具是作为一个 npm 包来分发的,因此需要预先安装 Node.js ,并且能够调用 node 和 npm 命令 。 假设已经安装好 Node.js 以及 npm,利用 npm 工具能自动下载 Cordova 模块。 Windows 下: C:\>npm install -g cordova on OS X and Linux: $ sudo npm install -g cordova 创建App 切换到你的源代码目录,创建一个 Cordova 项目: $ cordova create hello com.example.hello HelloWorld 这将会创建 Cordova app 需要的文件夹结构,默认情况, cordova create 脚本会生成一个基于Web应用的骨架,主页是项目下 www/Index.html 文件。 添加平台 以下所有命令都需要在项目目录下运行,或任意的子目录: $

linux service start|stop|restart

谁都会走 提交于 2020-03-09 20:27:58
用了这么些日子的linux/unix系统,也和别人一起合作开发了不少程序,发现高手都喜欢在命令行上操作,而且控制程序的运行偏好于使用脚本,加上参数如:start、restart、stop等。 后来自己开发程序,也越来越觉得这样是个好的方法: 1)节省时间,一键操作一系列步骤,需要记住的操作只有一两个。 2)降低出错概率,一次成功,次次成功。 3)提高通用性,同一套启动脚本的代码,可以被用在不同的程序上,需要修改的仅仅是待执行的程序命令。这也在另一个方面说明在命令行上操作程序的好处(其实每个linux程序归根到底都得在命令行上执行)。 4)通过启动脚本,可以做更多的控制,比如一次只运行一个程序实例,把输出的信息重定向到日志文件中,查看状态,结束进程等。 5)可以和别的命令结合使用。 具体而言,linux的系统服务大多通过start|stop这类方式操作。在目录/etc/init.d中放着linux服务的启动脚本,在安装系统时,会把一些服务的启动脚本放在这个目录下。 同时,根据系统运行级别的不同,linux会运行/etc/rc$level.d/目录下的启动脚本。 http://www.360doc.com/content/12/0820/17/9336047_231349272.shtml http://blog.csdn.net/acs713/article/details

多线程 - 守护线程Daemon是什么

北战南征 提交于 2020-03-08 12:05:42
Java线程分为用户线程和守护线程。 守护线程是程序运行的时候在后台提供一种通用服务的线程。这意味着,当一个 Java 虚拟机中不存在非 Daemon 线程的时候, Java 虚拟机也会同时停掉所有守护线程,然后退出。 Java中把线程设置为守护线程的方法:在 start 线程之前调用线程的 setDaemon(true) 方法。 注意: setDaemon(true) 必须在 start() 之前设置,否则会抛出IllegalThreadStateException异常,该线程仍默认为用户线程,继续执行 Daemon 线程被用作完成支持性工作,但是在 Java 虚拟机退出时, Daemon 线程中的 finally 块并不一定会执行 。 在构建 Daemon 线程时,不能依靠 finally 块中 的内容来确保执行关闭或清理资源的逻辑 。 守护线程创建的线程也是守护线程 守护线程不应该访问、写入持久化资源,如文件、数据库,因为它会在任何时间被停止,导致资源未释放、数据写入中断等问题 来源: https://www.cnblogs.com/frankcui/p/12441626.html

docker-ce配置镜像加速和信任私有仓库

柔情痞子 提交于 2020-03-08 09:42:43
一、docker镜像加速和信任私有仓库 1.配置docker-ce镜像加速和信任私有仓库harbor.hiibm.com cat > /etc/docker/daemon.conf <<EOF { "registry-mirrors": ["https://ofjd111b.mirror.aliyuncs.com"], "insecure-registries": ["harbor.hiibm.com"]" } EOF 2.修改/usr/lib/systemd/system/docker.service文件 将ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock 修改为【ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --insecure-registry=harbor.hiibm.com】 3.重启docker systemctl daemon-reload systemctl restart docker 二、如果启动docker报错 [root@harbor system]# systemctl status docker.service ● docker

《云计算》-shell脚本编程-shell中的正则表达式

风流意气都作罢 提交于 2020-03-07 04:00:49
使用正则表达式 4.1 问题 本案例要求熟悉正则表达式的编写,完成以下任务: 利用egrep工具练习正则表达式的基本用法 提取出httpd.conf文件的有效配置行 编写正则表达式,分别匹配MAC地址、E-Mail邮箱地址 4.2 方案 表-1 基本正则列表 表-1 扩展正则列表 4.3 步骤 实现此案例需要按照如下步骤进行。 步骤一:正则表达式匹配练习 1)典型的应用场合:grep、egrep检索文本行 使用不带-E选项的grep命令时,支持基本正则匹配模式。比如“word”关键词检索、“^word”匹配以word开头的行、“word$”匹配以word结尾的行……等等。 输出以“r”开头的用户记录: [root@svr5 ~]# grep '^r' /etc/passwd root:x:0:0:root:/root:/bin/bash rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin 输出以“localhost”结尾的行: [root@svr5 ~]# grep 'localhost$' /etc/hosts 127.0.0.1 localhost.localdomain localhost