首页 文章 精选 留言 我的

精选列表

搜索[快速入门],共10000篇文章
优秀的个人博客,低调大师

【从入门到放弃-Java】并发编程-JUC-ConcurrentLinkedQueue

简介 队列是一种先进先出的数据结构,在排队、削峰、缓存等多种场景下都会用到。今天学习下JUC中提供的并发队列-ConcurrentLinkedQueue可以看他的继承和实现接口非常简单,继承了AbstractQueue类,实现了Queue接口。 ConcurrentLinkedQueue add 在队列尾部新添加一个元素 /** * Inserts the specified element at the tail of this queue. * As the queue is unbounded, this method will never throw * {@link IllegalStateException} or return {@code false}. * * @return {@code true} (as s

优秀的个人博客,低调大师

Python3入门(十四)正则表达式

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。Python自1.5版本起增加了re模块,它提供Perl风格的正则表达式模式。re模块使Python语言拥有全部的正则表达式功能。compile函数根据一个模式字符串和可选的标志参数生成一个正则表达式对象。该对象拥有一系列方法用于正则表达式匹配和替换。re模块也提供了与这些方法功能完全一致的函数,这些函数使用一个模式字符串做为它们的第一个参数。 本文将给大家介绍Python中常用的正则表达式处理函数 一、正则表达式修饰符-可选标志 正则表达式可以包含一些可选标志修饰符来控制匹配的模式。修饰符被指定为一个可选的标志。多个标志可以通过按位OR(|)它们来指定。如re.I | re.M被设置成I和M标志 修饰符 描述 re.I 使匹配对大小写不敏感 re.L 做本地

优秀的个人博客,低调大师

Python3入门(三)基本数据类型

Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如: count = 10 name = "python" price = 12.5 也支持同时为多个变量赋值。例如 a = b = c = 1 e, f, g = 1, 2, 3 如果想删除一个变量,可以使用del,删除后将不能在进行调用,例如 a = b = c = 1 del a, b Python的数据类型 Number(数字) String(字符串) List(列表) Tuple(元组) Set(集合) dictionary(字典) 不可变数据(3 个):Num

优秀的个人博客,低调大师

一篇文章从了解到入门shell

请注明文章来源:http://blog.zjiecode.com/2019/04/15/shell/ 1、shell介绍 shell 俗称叫做壳,计算机的壳层,和内核是相对的,用于和用户交互,接收用户指令,调用相应的程序。 因此,把shell分为2大类 1.1、图形界面shell(Graphical User Interface shell 即 GUI shell) 也就是用户使用GUI和计算机核交互的shell,比如Windows下使用最广泛的Windows Explorer(Windows资源管理器),Linux下的X Window,以及各种更强大的CDE、GNOME、KDE、 XFCE。 他们都是GUI Shell。 1.2、命令行式shell(Command Line Interface shell ,即CLI shell) 也就是通过命令行和计算机交互的shell。 Windows NT 系统下有 cmd.exe(命令提示字符)和近年来微软大力推广的 Windows PowerShell。 Linux下有bash / sh / ksh / csh/zsh等 一般情况下,习惯把命令行shell(CLI shell)直接称做shell,以后,如果没有特别说明,shell就是指 CLI shell,后文也是主要讲Linux下的 CLI shell。 2、交互方式 根据交互方式的不一样,命令行式shell(CLI shell),又分为交互式shell和非交互式shell。 2.1、交互式shell 交互式模式就是shell等待你的输入,并且执行你提交的命令,然后马上给你反馈。这种也是我们大多数时候使用的。 2.2、非交互式shell 非交互式shell,就是把shell放在写在一个文件里面,执行的时候,不与用户交互,从前往后依次执行,执行到文件结尾时,shell也就终止了。 3、shell的种类 在Linux下 ,各种shell百花齐放,种类繁多,不同的shell,也有不同的优缺点。 我们要查看当前系统下支持的shell,可以读取/etc/shells文件。 3.1、bash Bourne Again Shell 用来替代Bourne shell,也是目前大多数Linux系统默认的shell。 3.2、sh Bourne Shell 是一个比较老的shell,目前已经被/bin/bash所取代,在很多linux系统上,sh已经是一个指向bash的链接了。 下面是CentOS release 6.5 的系统 3.3、csh/tcsh C shell 使用的是“类C”语法,csh是具有C语言风格的一种shell,tcsh是增强版本的csh,目前csh已经很少使用了。 3.4、ksh 最早,bash交互体验很好,csh作为非交互式使用很爽,ksh就吸取了2者的优点。 3.5、zsh zsh网上说的目前使用的人很少,但是感觉使用的人比较多。 zsh本身是不兼容bash的,但是他可以使用仿真模式(emulation mode)来模拟bash等,基本可以实现兼容。 在交互式的使用中,目前很多人都是zsh,因为zsh拥有很强大的提示和插件功能,炫酷吊炸天。推荐在终端的交互式使用中使用zsh,再安利一个插件Oh My Zsh 其实我个人的理解是,在终端中使用shell,基本上只是调用各种命令,比如:curl cat ls等等,基本不会使用到zsh的编程,所以终端中使用zsh是可以的。但是在写shell脚本的时候,需要考虑兼容性, 最主流的还是bash shell,所以,后文我们介绍的shell脚本也是bash shell的。 4、shell脚本 4.1、基础 #!/bin/bash echo "Hello World !" #!:是一个特殊的标记,表明使用啥解释器来执行,比如这里使用了:/bin/bash 来执行这个脚本。 #:只用一个#,就是注释 echo:输出 我们把上面的脚本保存成一个文件, 1.sh 后面的这个sh是shell脚本的扩展名。 然后要怎嚒来执行呢?执行一个shell脚本有很多种方式: sh 1.sh 这样可以直接执行这个1.sh 也可以直接 ./1.sh ,但是这种要注意,才编辑好的文件这样执行可能会报错 这个是因为没有这个脚本没有执行权限,运行 chmod a+x 1.sh 加上执行权限即可。 这里顺带说一下,为啥直接运行1.sh不行呢?因为他默认是去PATH里面找程序,当前目录,一般都不在PATH里面。所以直接运行1.sh就回报找不到文件。 还可以使用类似curl http://xxxxx.xxx/xxx.sh|sh 这样的方式,来执行远程的脚本 根据测试,#!/bin/bash 的标记,只是针对第二种方式 ./xxx.sh的方式有效。本文中代码,第一行均为这个标记,为了节约篇幅,已经省略. 执行并获取返回结果,有点类似JavaScript 的eval函数。 #!/bin/bash dt=`date` #反引号内的字符串会当作shell执行 ,并且返回结果。 echo "dt=${dt}" 4.2、Shell 变量 shell的使用比较简单,就像这样,并且没有数据类型的概念,所有的变量都可以当成字符串来处理: #!/bin/bash myName="tom" youName="cat" 不需要申明,直接写就可以了,但是有几个点需要特别注意: 等号两边不能有空格!!!特别要注意,非常容易写错 命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。 中间不能有空格,可以使用下划线(_)。 不能使用标点符号。 不能使用bash里的关键字。 使用变量 ABC="tom" echo $ABC #使用变量前面加$美元符号 echo "ABC=$ABC" #可以直接在字符串里面引用 echo "ABC=${ABC}" #但是建议把变量名字用{}包起来 只读变量 ABC="tom" echo "ABC=${ABC}" readOnly ABC #设置只读 ABC="CAT" #会报错,因为设置了只读,不能修改 删除变量 ABC="tom" echo "ABC=${ABC}" unset ABC #删除 echo "ABC=$ABC" echo "ABC=${ABC}" 从这个例子当中,我们也发现,使用一个不存在的变量,shell不会报错,只是当作空来处理。 4.3、Shell 的字符串 使用字符串 NAME="tom" A=my #你甚至可以不用引号,但是字符串当中不能有空格,这种方式也不推荐 B='my name is ${NAME}' #变量不会被解析 C="my name is ${NAME}" #变量会解析 echo $A echo $B echo $C 执行结果 我们可以发现,这个字符串的单双号和PHP的处理非常类似,单引号不解析变量,双引号可以解析变量。但是都可以处理转义符号。 A='my\nname\nis\ntom' B="my\nname\nis\ntom" echo $A echo $B 执行结果 拼接字符串 其实shell拼接字符串,大概就是2种 一是直接在双引号内应用变量,类似模版字符串 二是直接把字符串写在一起,不需要类似Java链接字符串的“+” 和PHP链接字符串的“.” NAME="TOM" # 使用双引号拼接 echo "hello, "$NAME" !" #直接写在一起,没有字符串连接符 echo "hello, ${NAME} !" #填充模版 # 使用单引号拼接 echo 'hello, '$NAME' !' #直接写在一起,没有字符串连接符 echo 'hello, ${NAME} !' #上面已经提高过,单引号里面的变量是不会解析的 强大的字符串处理 shell中简单的处理字符串,可以直接使用各种标记,只是比较难记忆,要用的时候,可以查一下。 ABC="my name is tom,his name is cat" echo "字符串长度=${#ABC}" # 取字符串长度 echo "截取=${ABC:11}" # 截取字符串, 从11开始到结束 echo "截取=${ABC:11:3}" # 截取字符串, 从11开始3个字符串 echo "默认值=${XXX-default}" #如果XXX不存在,默认值是default echo "默认值=${XXX-$ABC}" #如果XXX不存在,默认值是变量ABC echo "从开头删除最短匹配=${ABC#my}" # 从开头删除 my 匹配的最短字符串 echo "从开头删除最长匹配=${ABC##my*tom}" # 从开头删除 my 匹配的最长字符串 echo "从结尾删除最短匹配=${ABC%cat}" # 从结尾删除 cat 匹配的最短字符串 echo "从结尾删除最长匹配=${ABC%%,*t}" # 从结尾删除 ,*t 匹配的最长字符串 echo "替换第一个=${ABC/is/are}" #替换第一个is echo "替换所有=${ABC//is/are}" #替换所有的is 运行结构 这里只是介绍了比较常用的一些字符串处理,实际shell支持的还有很多。 4.4、数组 Bash Shell 也是支持数组的,与绝大部分语言一样,数组下标从0开始。不过需要注意的是,它只支持一维数组。 定义一个数组,用小括号阔气来,当中用“空格”分割,就像下面这样: array=("item0" "item1" "item2") 也可以根据下标来定义元素 array[0]="new_item0" array[1]="new_item1" array[2]="new_item2" array[4]="new_item4" #数组下标可以是不连续的 读取数组元素,和变量类似 echo ${array[0]} echo "array[0]=${array[0]}" 获取数组所有的元素 echo "数组的元素为: ${array[*]}" echo "数组的元素为: ${array[@]}" 获取数组的长度 echo "数组的长度为: ${#array[*]}" echo "数组的长度为: ${#array[@]}" 4.5、输入输出 4.5.1、echo 在上文中,其实我们已经到多次,就是:echo “字符串” 来输出,一个很简单的例子 echo "Hello world!" 如果当中包含特殊符号,可以使用转义等: echo "Hello \nworld!" echo "\"Hello\"" echo '"Hello"' #当然,也可以这样,单引号不转义,上文提到过 echo `date` #打印执行date的结果 echo -n "123" #加-n 表示不在末尾输出换行 echo "456" echo -e "\a处理特殊符号" #-e 处理特殊符号 -n 让echo输出结束以后,在默认不输出换行符 -e 让echo处理特殊符号,比如: 符号 作用 \a 发出警告声 \b 删除前一个字符 \c 后不加上换行符号 \f 换行但光标仍旧停留在原来的位置 \n 换行且光标移至行首 \r 光标移至行首,但不换行 \t 插入tab 上面的特殊符号,写到mac的shell脚本里面要注意,执行的时候,要用bash执行才有效 ,sh无效。 当然,你也可以玩一点更有趣的,就是我们随时在终端中看到的五颜六色的文字: echo -e "\033[31m 红色前景 \033[0m 缺省颜色" echo -e "\033[41m 红色背景 \033[0m 缺省颜色" 其中 \033[是一个特殊标记,表示终端转义开始, 31m表示使用红色字体,你也可以使用其他颜色,[30-39]是前景颜色,[40-49]是背景颜色。 \033[0m回复到缺省设置 还可以有一些其他的动作 echo -e "\033[2J" #清除屏幕 echo -e "\033[0q" #关闭所有的键盘指示灯 echo -e "\033[1q" #设置"滚动锁定"指示灯(Scroll Lock) echo -e "\033[2q" #设置"数值锁定"指示灯(Num Lock) echo -e "\033[1m" #设置高亮度 echo -e "\033[4m" #下划线 echo -e "\033[7m" #反显 echo -e "\033[y;xH" #设置光标位置 其他更多的特殊码请自行查询。 4.5.2、read 有输出,必然有输入,read命令接收标准输入的输入。 read name echo "my name is ${name}" 可以使用-p给一个输入提示 read -p "please input your name:" name echo "my name is ${name}" 如果没有指定输入的变量,会把输入放在环境标量REPLY中 read -p "please input your name:" echo "my name is ${REPLY}" 计时输入,如果一段时间没有输入 ,就直接返回,使用-t 加时间 read -t 3 -p "please input your name in 3 senconds:" name 指定输入字符个数,使用-n ,后面的是输入字符个数 read -n 1 -p "Are you sure [Y/N]?" isYes 默读(输入不再监视器上显示),加一个-s参数。 read -s -p "Enter your password:" password 4.5.3、printf echo已经比较强大,但是有的时候,我们需要用到字符串模版输出,printf就比较好用了,他类似C里面的printf程序。 语法是:printf format-string [arguments...] 比如我们要输出一个表格 printf "%-10s %-8s %-4s\n" 姓名 性别 体重kg printf "%-10s %-8s %-4.2f\n" 郭靖 男 66.1234 printf "%-10s %-8s %-4.2f\n" 杨过 男 48.6543 printf "%-10s %-8s %-4.2f\n" 郭芙 女 47.9876 运行结果 %s %c %d %f都是格式替代符 %-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐),至少显示10字符宽度,如果不足则自动以空格填充,超过不限制。 %-4.2f 指格式化为小数,其中.2指保留2位小数。 4.5.4、重定向 大多数 UNIX 系统命令从你的终端接受输入并将所产生的输出发送回到您的终端。一个命令通常从一个叫标准输入的地方读取输入,默认情况下,这恰好是你的终端。同样,一个命令通常将其输出写入到标准输出,默认情况下,这也是你的终端。 命令 作用 command > file 将输出重定向到 file。 command < file 将输入重定向到 file。 command >> file 将输出以追加的方式重定向到 file。 n > file 将文件描述符为 n 的文件重定向到 file。 n >> file 将文件描述符为 n 的文件以追加的方式重定向到 file。 n >& m 将输出文件 m 和 n 合并。 n <& m 将输入文件 m 和 n 合并。 << tag 将开始标记 tag 和结束标记 tag 之间的内容作为输入。 需要注意的是文件描述符 0 通常是标准输入(STDIN),1 是标准输出(STDOUT),2 是标准错误输出(STDERR)。 输出到文件 echo "test">text.txt #直接输出 echo "test">>text.txt #追加在text.txt后面 重定向输入 read a <<EOF "测试" EOF echo "a=$a" 来个比较过分的 cat < 1.sh > text.txt 把1.sh文件的内容出入到cat,然后cat在输出到text.txt中,相当于,把1.sh的内容输出到text.txt中了 还有一种用法,把标准错误直接输出到标准输出,并且输出到文件file command > file 2>&1 /dev/null 文件 这个是一个特殊文件,他是一个黑洞,写入到它的内容都会被丢弃,如果我们不关心程序的输出,可以这样 command > /dev/null 2>&1 4.6、条件判断(if) 和其他语言一样,shell也有条件判断 单分支: if condition then command1 command2 ... fi 双分支: if condition then command1 command2 ... else command fi 多分支: if condition1 then command1 elif condition2 then command2 else commandN fi 比如 if [ "2" == "2" ]; then # "2" 的2边都有空格,不能省略 ,写在一行,条件后面加一个分号 echo "2==2" else echo "2!=2" fi 需要特别注意:[ "2" == "2" ] 其中的"=="两边都有空格,不能省略,否则结果不正确。 判断普通文件是否存在 if [ -f "1.sh" ]; then # 判断一个普通文件是否存在 echo "1.sh 存在" fi 判断目录是否存在 if [ -d "1.sh" ]; then # 判断一个目录是否存在 echo "1.sh 存在" fi 判断字符串长度为0 a="" if [ -z $a ]; then echo "a为空" fi 4.7、()、(())、[]、[[]]和{} 在shell中,有几个符号要非常注意,用的也比较多,不要搞混了,搞混了,逻辑运算很容易出错 4.7.1、单小括号() 命令组 括号中的命令将会新开一个子shell顺序执行,所以括号中的变量不能够被脚本余下的部分使用。括号中多个命令之间用分号隔开,最后一个命令可以没有分号,各命令和括号之间不必有空格。 a="123" (echo "123";a="456";echo "a=$a") echo "a=$a 命令替换 发现了$(cmd)结构,便将$(cmd)中的cmd执行一次,得到其标准输出,再将此输出放到原来命令。 用于初始化数组 如:array=(a b c d) 4.7.2、双小括号(()) 运算扩展,比如,你可以 a=$((4+5)) echo "a=$a" 做数值运算,重新定义变量 a=5 ((a++)) echo "a=$a" 用于算术运算比较 if ((1+1>1));then echo "1+1>1" fi 4.7.3、单中括号[] 用于字符串比较 需要注意,用于字符串比较,运算符只能是 ==和!=,需要注意,运算符号2边必须有空格,不然结果不正确!!!比如: if [ "2" == "2" ]; then # "2" 的2边都有空格,不能省略 echo "2==2" else echo "2!=2" fi 用于整数比较 需要注意,整数比较,只能用-eq,-gt这种形式,不能直接使用大于(>)小于(<)符号。只能用于整形。 if [ 2 -eq 2 ]; then echo "2==2" else echo "2!=2" fi 符号表 符号 运算 -eq 等于 -ne 不等于 -gt 大于 -ge 大于等于 -lt 小于 -le 小于等于 多个逻辑组合 -a 表示and 与运算 -o 表示or 或运算 if [ "2" == "2" -a "1" == "1" ]; then #注意,在这里,不能是[ "2" == "2" ] -a [ "1" == "1" ] 会报错 echo "ok" fi 4.7.4、双中括号[[]] [[是 bash 程序语言的关键字。并不是一个命令,[[ ]] 结构比[ ]结构更加通用。 字符串匹配时甚至支持简单的正则表达式 if [[ "123" == 12* ]]; then #右边是正则不需要引号 echo "ok" fi 支持对数字的判断,是支持浮点型的,并且可以直接使用<、>、==、!=符号 if [[ 2.1 > 1.1 ]]; then echo "ok" fi 多个逻辑判断 可以直接使用&&、||做逻辑运算,并且可以在多个[[]]之间进行运算 if [[ 1.1 > 1.1 ]] || [[ 1.1 == 1.1 ]]; then echo "ok" fi 4.7.5、大括号{} 统配扩展 touch new_{1..5}.txt #创建new_1.txt new_2.txt new_3.txt new_4.txt new_5.txt 5个文件 4.8、循环 4.8.1、for循环 语法格式为: for a in "item1" "item2" "item3" do echo $a done 输出当前目录下 .sh结尾的文件 for a in `ls ./` do if [[ $a == *.sh ]] then echo $a fi done 4.8.2、for循环 语法 while condition do command done 我们要输出1-10000 int=1; while(($int<=10000)) do echo $int ((int++)) done 4.8.3、until循环 语法 until condition do command done 用法类似,这里不再赘述。 循环中 continue命令与break作用和其他语言中类似。 4.9、case case和其他语言switch类型,多分支,选择一个匹配。匹配发现取值符合某一模式后,其间所有命令开始执行直至 ;;,有点类型Java的break。如果无一匹配模式,使用星号 * 捕获该值,再执行后面的命令。 echo '输入 1 到 4 之间的数字:' echo '你输入的数字为:' read aNum case $aNum in 1) echo '你选择了 1' ;; 2) echo '你选择了 2' ;; 3) echo '你选择了 3' ;; 4) echo '你选择了 4' ;; *) echo '你没有输入 1 到 4 之间的数字' ;; esac 4.10、函数 shell也可以用户定义函数,然后在shell脚本中可以随便调用。 注意:所有函数在使用前必须定义。这意味着必须将函数放在脚本开始部分,直至shell解释器首次发现它时,才可以使用。调用函数仅使用其函数名即可。 语法格式如下: [function] funname() { cmd.... [return int] } 一个最简单的函数 Line(){ echo "--------分割线--------" } echo "123" Line echo "456" 在Shell中,调用函数时可以向其传递参数。 在函数体内部,通过 $n 的形式来获取参数的值,例如,$1表示第一个参数,$2表示第二个参数... 调用的时候 ,函数名,参数直接用空格分割开。 带参数的函数示例: out(){ echo "1-->$1" echo "2-->$2" } out 1 2 #调用的之后 还有一些其他的特殊符号需要注意 符号 作用 $# 传递到脚本的参数个数 $* 以一个单字符串显示所有向脚本传递的参数 $$ 脚本运行的当前进程ID号 $! 后台运行的最后一个进程的ID号 $@ 与$*相同,但是使用时加引号,并在引号中返回每个参数。 $? 显示最后命令的退出状态。0表示没有错误,其他任何值表明有错误。 所以我们可以写一个代码参数,返回值的函数 out(){ echo "全部参数$*" for item in $* do echo "$item" done return $# #这类返回参数个数,返回值必须是整数 } out this is perfect echo "函数返回值:$?" 4.11、shell传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n。n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推…… 除了参数可以使用特殊符号,也可以使用上文中函数所使用的特殊符号,这里不再赘述 echo "执行的文件名:$0"; echo "全部参数:$*" echo "参数个数:$#" echo "第一个参数为:$1"; echo "第二个参数为:$2"; echo "第三个参数为:$3"; 5、其他实用技巧 shell脚本,他本身的功能并不强大,强大的是他可以调用其他程序,而在Linux下,系统自带的就有非常多的强大工具可以调用。 5.1、后台执行 后台执行一个脚本只需要在后面加上&符号即可,我们先用之前学习的,写一个脚本,1s输出一个数字 #!/bin/bash int=1 while : do echo $int ((int++)) sleep 1s #睡眠一秒 done 我们执行sh d.sh & 我们发现,的确会后台输出,但是会输出到当前控制台,我们可以用之前学的重定向,把输出重定向到文件 sh d.sh > out.log 2>&1 & 这样就把输出和错误重新定向到out.log文件了 但是,我们发现,关闭终端以后,文件就不输出了。 当我们端口连接远程主机的session或者关闭当前终端的时候, 会产生一个SIGHUP信号 ,导致程序退出,我们可以使用nuhup来忽略这个信号 ,达到真正的后台。 nuhup sh d.sh > out.log 2>&1 & 这样启动程序,就可以打到真正后台运行了。 那么问题来了,我们验证程序在后台运行呢?要怎嚒结束后台程序呢?请继续看。 5.2、cat 在本文中,我们已经多次用到cat,他的作用就是读取文件输出到标准输出上,也就是我们的终端。 语法是: cat [option] file 我们也可以使用:cat -n file ,来输出行号。 5.2、tail 类似上面的例子,我们要验证程序是不是在后台,每一秒输出一个数字到文件,使用cat读取,需要不断的多次查看,一次cat只能输出一次。 tail非常适合查看这种日志类文件,他的作用是读取文件末尾几行输出到标准输出上。 tail out.log 默认显示10行,可以使用参数-n指定行数 tail -20 out.log 显示文件末尾20行 tail -f out.log 持续监控文件out.log,如果有变化,他会试试的显示在我们的屏幕上面。 5.3、ps ps,查询进程 这个命令参数比较多,列举几个比较常用的 参数 作用 a 显示终端上的所有进程,包括其他用户的进程。 u 显示面向用户的格式信息。 x 显示没有控制终端的进程。 一般查询,使用 ps aux就可以了,查询出来比较多,可以筛选一下。 这里我们使用 ps u 就可以查询出我们刚才开启的后台进程了。 我们看到我们刚才启动的程序PID为7523, 使用kill命令就可以杀死他了 5.4、kill kill命令比较简单,就是根据PID结束一个程序,比如我们已经查询到,我们开的后台进行是7523,要结束他可以使用: kill 7523 以上是常用用法,其实kill是给程序发送一个信号,上面的程序给会程序发送一个SIGTERM信号,程序收到这个信号,完成资源的释放,就退出了。 但是也有程序不听话,收到信号就是不退出,这个时候,就要强制他退出,使用9号命令(SIGKILL),强制杀死他。 简单的说 kill PID 是告诉程序,你应该退出了,请自己退出。 kill -9 PID ,是直接告诉程序,你被终结了,这个命令信号,不能被抓取或者忽略。 6、总结 shell使用的比较少,但是特别强大; shell对语法比较敏感,并且应为解释器很多,每个解释器语法标准也可能不完全一致; 使用到的编号、编码、参数特别多,并且都是简写,很多记不住。其实不用死记硬背,记住有这个功能就可以了,需要用到的时候再查询。 推荐 推荐一个库,通过API把消息推送到个人微信上,SDK接入:https://github.com/zjiecode/wxpusher-client。 关注公众号开发者服务(wxpusher),万一有需要的时候呢? 参考资料 http://c.biancheng.net/shell/ https://baike.baidu.com/item/shell/99702?fr=aladdin https://blog.csdn.net/lixinze779/article/details/81012318 https://segmentfault.com/a/1190000008080537 https://blog.csdn.net/felix_f/article/details/12433171 http://www.runoob.com/linux/linux-shell-printf.html http://www.runoob.com/linux/linux-shell-process-control.html https://www.jb51.net/article/123081.htm http://www.runoob.com/linux/linux-shell-io-redirections.html https://www.cnblogs.com/mfryf/p/3336804.html https://blog.csdn.net/vip_wangsai/article/details/72616587

优秀的个人博客,低调大师

阿里云服务器[新手入门]如何使用

1.购买 登录官网查看云服务器购买列表,购买时选择地区、操作系统镜像等,购买云服务器后会发送短信通知,这里只列出一个: 【阿里云】尊敬的用户:您的云服务器ECS创建成功(实例名称:xxxxxxxxxx,公网IP:xxx.xxx.xxx.xxx)。系统用户名: root;若您忘记或未设置密码可进入ECS控制台-实例列表-重置密码。如您购买了数据盘请在实例创建后手动磁盘格式化分区,更多信息请查看站内信或邮件。 2.登录控制台此时便可登录阿里云控制台,输入账号密码或者阿里云app扫码进入即可: 进入后都是一些服务器介绍,安全管控你等信息,可以自己了解一下,这时候点击左侧菜单,点击云服务器ECS,显示界面如图: 点击实例,左上角的服务器区域选择购买时的区域,这时你的服务器信息就显示出来了,如图: 一些基本的功能大家可以慢慢去探索,这里简要讲一下怎么把

优秀的个人博客,低调大师

(Python)零起步数学+神经网络入门

在这篇文章中,我们将在Python中从头开始了解用于构建具有各种层神经网络(完全连接,卷积等)的小型库中的机器学习和代码。最终,我们将能够写出如下内容: 假设你对神经网络已经有一定的了解,这篇文章的目的不是解释为什么构建这些模型,而是要说明如何正确实现。 逐层 我们这里需要牢记整个框架: 1. 将数据输入神经网络 2. 在得出输出之前,数据从一层流向下一层 3. 一旦得到输出,就可以计算出一个标量误差。 4. 最后,可以通过相对于参数本身减去误差的导数来调整给定参数(权重或偏差)。 5. 遍历整个过程。 最重要的一步是第四步。我们希望能够拥有任意数量的层,以及任何类型的层。但是如果修改/添加/删除网络中的一个层,网络的输出将会改变,误差也将改变,误差相对于参数的导数也将改变。无论网络架构如何、激活函数如何、损

优秀的个人博客,低调大师

Java零基础入门学习1:初探Java世界

在我们的编程世界中,Java可以说是不可或缺的一部分,它可以实现C++中很多不能实现的地方,使用也与C++有一定差别。学过C或C++的,Java上手很快。如果你之前没学过C或C++,也没关系。我呢将用通俗的语言,生活中的栗子,来帮助大家理解、学习好Java编程。 有一句经典的话:计算机编程极其困难,它要求你获得计算机科学专业的学位,需要投入几千美元来购买计算机硬件和软件,需要极强的分析能力,需要有耐心,而且对含咖啡因的饮料有强烈的爱好。 而这句话除了最后一个,全是错的。我喜欢喝可乐,并发现百事比可口好喝,这是我当程序员来最大的收获之一,尽管不是很健康。 其实,编程不难,只要有兴趣,熟练掌握没问题。当你面对计算机时,你想告诉他,I love programming! 那么,你就可以用程序来坐到它。 首先,我们需要一个编程环境,也就是IDE,集成开发环境。一个友好的IDE能使人心情舒畅,愉悦,对做题有很大的帮助。 我们在这里一律采用Netbeans,可在这里下载。 首先,新建一个项目。 然后,选择类型Java。 之后给它命名为你喜欢的名字。这里以Java_class为例。 建好之后,我们按Ctrl+n键,新建文件。 文件名命名为My_first_java_program; 打出下面的源码: 代码1.1-我的第一个Java代码-I love programming! public class My_first_java_program{ public static void main(String args[]){ System.out.println("I love programming!"); } } 我们来讲解一下这段代码: public class My_first_java_program表示声明一个类。这里的类是什么意思呢?其实,每一个Java程序都是一个类,且只有一个主类。这个My_first_java_program是类名,而类名必须和文件名相符。否则就会出现CE(编译错误的情况)。 那我们所说的编译又是什么呢?编译就是将我们所编写的代码转化为程序的工作。因为代码本身无法进行任何运算,编程就是编写程序,而不仅仅是编写代码。 在Netbeans中,F6键是编译运行,按下F6,在下边就会出现程序运行框: 这就算完成了这个程序的编辑。 那让我们回到源代码上。 public static void main是指主函数。我们的类My_first_java_program中的主函数main,它是我们程序执行的重要来源。没有main,就没有我们的程序。 目前,在我们了解public,static,void为何物之前,你只要记住,一般主函数main都要这么写。当我们学习了数据类型,类的类型之后呢,我们在对它做一定调整。 我们输出I love programming的核心语句就是:System.out.println();这是输出语句。System是系统类,out是输出流。我们要记住,输入和输出都是以流出现的。println则是输出在换行。我们在深度学习之前,也只要记住这是输出就好了。记住,你想输出的话要用 “ ” 括起来。 那么,这就是Java最初始的一个程序。今天只是让大家浅浅地了解Java,并学会编写第一个程序。下一节课我们将讲解变量与变量类型,我们下次见

优秀的个人博客,低调大师

自然语言处理入门基础之hanlp详解

自然语言处理定义: 自然语言处理是一门计算机科学、人工智能以及语言学的交叉学科。虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分。这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言。 自然语言处理的目标是让计算机处理或说“理解”自然语言,以完成有意义的任务,比如订机票购物或QA等。完全理解和表达语言是极其困难的,完美的语言理解等效于实现人工智能。 自然语言处理涉及的几个层次: 自然语言处理的几个层次 作为输入一共有两个来源,语音与文本。所以第一级是语音识别和OCR或分词(事实上,跳过分词虽然理所当然地不能做句法分析,但字符级也可以直接做不少应用)。接下来是形态学,援引《统计自然语言处理》中的定义:形态学(morphology):形态学(又称“词汇形态学”或“词法”)是语言学的一个分支,研究词的内部结构,包括屈折变化和构词法两个部分。由于词具有语音特征、句法特征和语义特征,形态学处于音位学、句法学和语义学的结合部位,所以形态学是每个语言学家都要关注的一门学科。 Hanlp自然语言处理开发包: 从事大数据方面工作的人对自然语言处理必然都是不陌生的,在Github上用户量最多的开源汉语自然语言处理工具是HanLP。HanLP的初始版本是在2014年初开发的,3月份的时候开始在Github上开源。2015年的时候集成在了大快搜索的DKNLP中,目前大快已经把DKNLP技术成果已经开源,并且整体装如HanLP项目,HanLP的版本已经到了V1.50。 Hanlp自然语言处理技术优势: 支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词调、词性标注),命名实体识别(中国人民、音译人民、日本人民,地名,实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析(MaxEnt依存句法分析、神经网络依存句法分析)。提供Lucene查件,兼容Solr和ElasticSearch。 hanlp自然语言处理技术 Hanlp自然语言处理应用领域: Hanlp已经被广泛应用于Lucene、Solr、ElasticSearch、hadoop、android、Resin等平台,有大量开源作者开发各种查件与拓展,并且被包装或移植到Python、C#、R、JavaScript等语言上去。 hanlp自然语言处理应用领域 文章来源于网络

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册