Linux四剑客及正则表达式
正则表达式
- 基础正则(使用四剑客命令时无需加任何参数即可使用)
^ # 匹配以某一内容开头 如:'^grep'匹配所有以grep开头的行。
$ # 匹配以某一内容结尾 如:'grep$' 匹配所有以grep结尾的行。
^$ # 匹配空行。
. # 匹配任意单个字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* # 前一个字符出现0次及0次以上 如:'a*'匹配所有有a的行。
.* # 表示文件中所有内容。
[] # 匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] # 匹配一个不在指定范围内的字符,如:'[^A-Z]rep' 匹配不包含 A-Z 中的字母开头的行注意:在[]中,除位置在第一个字符的^外,其余任何带含义的特殊符号都会被还原。
-
扩展正则
- 使用方法
grep命令:grep -E …… 或egrep …… sed命令:sed -r …… awk命令:awk -E ……
- 表达式
+ #匹配前一个字符连续出现1次或1次以上 如:'a+' 匹配字符a连续出现1次或多次的行。注:通常与[]配合使用,过滤连续的内容。 {n,m} #匹配前一个字符至少n次,最多m次,优先匹配后面的数字例:'[0-9]{18}' 匹配连续的18个数字 | #或者例:'^$|^#' 匹配文件的空行或以井号开头的 () #表示一个整体;反向引用/后向引用
-
单词边界符
\b # 单词锁定符,如: '\bgrep\b'只匹配grep;'\b[0-9]{18}\b'只匹配连续的18位数字
\< # 锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> # 锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
\<……\> # 相当于\b...\b
\w # 匹配文字和数字字符,也就是[A-Za-z0-9];
\W # \w的反置形式,匹配一个或多个非单词字符,相当于[^A-Za-z0-9]
四剑客
find 在指定目录下查找文件
语法形式
find [参数] [选项] #单条件查找
find [参数] [选项] [or/and] [选项] #多条件查找
or/and
#使用find命令可以多条件查找;
-a #需要同时满足两个、多个条件时(and可以省略);
-o #只需满足其中之一条件时;
选项
-type f/d/l/b/c #按照文件类型查找;
-name "NAME" #按照文件名字查找;
-iname "NAME" #按照文件名字查找(忽略大小写);
-inum "INUM" #按照文件iNode号查找;
-maxdepth n #按照深度等级查找(向下遍历);
-size +n/-n/n #按照文件大小查找;
-mtime +n/-n/n #按照文件修改时间查找;当n=0,代表24小时内被修改过的文件;
示例
#查找/目录下文件名为dezyan.txt的文件(不区分大小写)
[root@Dezyan ~]# find / -iname "dezyan.txt"
/proc/kcore
#查找/目录下文件大小大于1M的目录
[root@Dezyan ~]# find / -size +1M -type d
注意:当一个目录大小大于1M,说明该目录中存在非常多的小文件
#查找/目录下的字符设备或块设备文件
[root@Dezyan ~]# find / -type c -o -type b
或 find / -type c,b
#以深度等级为1查找/目录下以.log结尾的文件
[root@Dezyan ~]# find / -maxdepth 1 -name "*.log" -type f
#查找24小时内被修改过的文件
[root@Dezyan ~]# find ./ -mtime 0
xargs 给其他命令传递参数的一个过滤器
注意:在xargs后别名失效
语法形式
find ………… | xargs [文件操作,命令]
#可以理解为将|前执行的结果甩到末尾,再执行|后的命令
相关使用方法
-n1 #按照第一列方式输出内容
ls -l/cat #查看找到的文件;
rm [选项] #将查找的文件删除;
-i cp/mv {} [参数] #将查找到的文件复制/移动到[参数位置];
cp/mv -t [参数] #将查找到的文件复制/移动到[参数位置];
示例
#将/etc/下大于9M的文件复制到~目录下
[root@Dezyan ~]# find /etc/ -size +9M | xargs cp -t ~
[root@Dezyan ~]# ls ~ | grep 'hwd'
hwdb.bin
#查找出所有大写的.TXT结尾的文件 然后打包成test.tar.gz
[root@Dezyan ~]# find ./ -name "*.TXT"|xargs tar zcvf a.tar.gz
exec 调用并执行指定的命令
注意:使用exec将多个文件压缩成一个压缩包是不可取的,因为按照exec的逻辑,是将前一命令的每一次执行结果依次放入{},进行压缩时,会不断覆盖文件;
语法形式
find ………… -exec [命令] {} [参数] \;
注意:其中==;==为shell中命令的分隔符,可将多个命令同时执行:mkdir test;touch 1.txt。
相关使用方法
rm [选项] {} \; #将查找的文件删除;
cp/mv {} [参数] \; #将查找到的文件复制/移动到[参数位置];
示例
#将/etc/下大于9M的文件复制到~目录下
[root@Dezyan ~]# find /etc/ -size +9M -exec cp {} ~ \;
使用``和$()
语法形式
[命令+选项] `find ……………`
[命令+选项] `find ……………` [参数]
$()效果与``相同
注意:如果一段命令被添加上了``,那么在整体命令中,需要先执行``中的命令,类似于运算法则中的加减乘除先算()。
相关使用方法
cp/mv `find ……` [参数]
ls/rm……
示例
#将/etc/下大于9M的文件复制到~目录下
[root@Dezyan ~]# cp -a `find /etc/ -size +9M` ~
grep 强大的文本搜索工具
语法形式
grep [选项] '[word]' [参数]
选项
-v #反转查找;
-r #当指定要查找的是<目录>而非文件时,必须使用这项参数;
-E #识别扩展正则进行过滤;等同于egrep;
-o #展示匹配过程;
------------------------------------------------------------
--color #对筛选出的WORD加颜色显示;建议设置永久别名;
-i #搜索时不区分大小写;
-n #搜索出的结果显示行号;
-w #过滤的内容两边必须是空格(类似于边界符)
-c #统计单词出现的次数;
-A #过滤到内容往下2行;
-B #过滤到内容往上2行;
-C #过滤到内容上下各2行;
示例
#在/etc/passwd文件中过滤出root的行
[root@Dezyan ~]# grep 'root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
#不区分大小写过滤出 /etc/ssh/sshd_config 文件中包含`port 22`的行并输出行号
[root@Dezyan ~]# grep -i -n 'port 22' /etc/ssh/sshd_config
17:#Port 22
#排除(取反)/etc/selinux/config文件中的#和注释
[root@Dezyan ~]# grep -v '^#|^$' /etc/ssh/sshd_config
#统计word.txt文件中shutdown单词的个数
[root@Dezyan ~]# grep -c 'shutdown' word.txt
2
#显示文件word.txt中config的上下各两行
[root@Dezyan ~]# grep -C 2 'config' word.txt
test 测试
server 服务
configure 配置 config conf cfg
continue 继续
next 下一个
sed 功能强大的流式文本编辑器
- 语法形式
sed [选项] '[模式][动作]' [参数]
- 选项
-n #取消内存空间默认输出;不添加时sed命令会默认输出文件所有内容及匹配到的内容;
-r #使模式中的正则表达式支持扩展正则;
-i #对源文件进行修改;不添加时不会修改;
- 模式
number #按行查找,查找第n行
number或正则符号,number或正则符号 #查找n到m行
/字符串或正则表达式/ #模糊查询,查询包含此字符串的行
/字符串/,/字符串/ #匹配区间:查询两个字符串之间的内容(也可用正则)
n[动作];m[动作] #指定第n行和第m行进行操作
- 动作
p #输出打印过滤出的内容
d #删除过滤出的内容
a 字符串 #add 在……后追加xxx
i 字符串 #insert 在……前插入xxx
c 字符串 #replace 将……替换为xxx
w 文件 #将过滤到的内容写入到文件中
--------------------------------------------------
s###g #1.其中,g代表全局替换#2.s///g、s@@@g等与s###g效果相同
注意:
-
动作中有p,模式中必有n
-
在使用匹配区间( /开头字符串/,/结尾字符串/ )时,尽量使用文件内容中唯一的、不重复的字符串;
- 若只有一个开头,有两个甚至多个结尾时:输出的内容只会是开头到第一个结尾字符串之间的内容;
- 若只有开头,结尾字符串没有:输出的内容为开头字符串到文件末尾;
-
sed的后向引用
sed 's#(正则)(数字)(字符串)#\1\3#g' #\n获取第n个()中的内容
实例
#获取IP地址
[root@Dezyan ~]# ip add show ens33 | sed -rn '3s#.*et (.*)/24 .*$#\1#gp'
10.0.0.101#批量创建用户test01..test03
[root@Dezyan ~]# echo test{01..03} | xargs -n1 | sed -r 's#(.*)#useradd \1#g' | bash##批量创建用户test01..test03并设置密码为dingzhiyan1016
echo test{01..03} | xargs -n1 | sed -r 's#(.*)#useradd \1 ; echo dingzhiyan1016 | passwd --stdin \1#g' | bash
或
[root@Dezyan ~]# echo test11{01..03} | xargs -n1 | sed -r 's#(.*)#useradd \1 ; echo \1:dingzhiyan1016 | chpasswd #g' | bash#批量删除用户
[root@Dezyan ~]# echo user{1..20} | xargs -n1 | sed -r 's#(.*)#userdel -r \1#g' | bash
- 示例
1.a.txt文件
[root@Dezyan ~]# cat -n a.txt 1 The first snow came. 2 How beautiful it was, falling so silently all day long,3 all night long.4 on the mountains, on the meadows, 5 on the roofs of the living, on the graves of the dead! A2.查看a.txt文件第三行的内容
[root@Dezyan ~]# sed -n '3p' a.txt
all night long.3.查看a.txt文件中第三行到结尾的内容
[root@Dezyan ~]# sed -n '3,$p' a.txt
all night long.
on the mountains, on the meadows,
on the roofs of the living, on the graves of the dead! A4.查看a.txt中以o开头或以T开头的行
[root@Dezyan ~]# sed -rn '/^o|^T/p' a.txt
The first snow came.
on the mountains, on the meadows,
on the roofs of the living, on the graves of the dead! A5.查看a.txt文件中包含so与meadows行之间的内容
[root@Dezyan ~]# sed -n '/so/,/meadows/p' a.txt
How beautiful it was, falling so silently all day long,
all night long.
on the mountains, on the meadows,6.在a.txt文件1到3行后都添加一行Dezyan
[root@Dezyan ~]# sed '1,3i Dezyan' a.txt
Dezyan
The first snow came.
Dezyan
How beautiful it was, falling so silently all day long,
Dezyan
all night long.
on the mountains, on the meadows,
on the roofs of the living, on the graves of the dead! A7.将a.txt文件中所有的(第一个)on替换为under
[root@Dezyan ~]# sed 's#on#under#g' a.txt (只替换第一个只需将g去掉即可)
The first snow came.
How beautiful it was, falling so silently all day lunderg,
all night lunderg.
under the mountains, under the meadows,
under the roofs of the living, under the graves of the dead! A8.查找roofs所在行,并将其替换为floor,并且只显示替换行
[root@Dezyan ~]# sed -n '/roofs/s#roofs#floor#gp' a.txt
on the floor of the living, on the graves of the dead! A9.删除文件amount.txt中的所有字母
[root@Dezyan testdir]# sed -r 's#[a-Z]##g' amount.txt
awk 文本和数据进行处理的编程语言
- 语法形式
awk [选项] '哪一行{print 哪一列}' [file]
#逻辑:按行取列,先将符合条件的行尽数找出,再对其中的某一列进行选取;
#awk本质上其实是一种编程语言,其中可以进行运算;
- 选项
-F "" #指定分隔符;
- 取行
#当语法形式中的`{print 哪一列}`为空即为取行
1.指定某行或某几行
语法形式:awk 'NR[运算符]n' file
使用awk内置变量:NR --> 存储每行的行号
运算符:== 等于> 大于>= 大于等于< 小于<= 小于等于!= 不等于&& 且|| 或
#可使用内置函数取出文件内容的最后一行awk 'END{print}' file
2.模糊过滤取行
语法形式:awk '模式' file
模式'可以使用正则符号':// #模糊查找文件中的字符串//,// #模糊查找两字符串之间的内容
- 字符比对查取行
语法形式:awk [选项] '[取列内置变量] [模式匹配符] "[表达式]"' file
模式匹配符:== #某列等于……!= #某列不等于……~ #使用正则匹配字符串!~ #使用正则匹配字符串并取反
表达式:任意字符正则表达式
- 数字比对查取行
语法形式:awk [选项] '[取列内置变量] [模式匹配符][运算符]n' file
- 取列
#当语法形式中的`哪一行`为空即为取列
语法形式:awk '{print [内置变量]}' file
awk内置变量:$0 # 表示整行$n # 表示文件的第n列 , # 逗号表示空格NF # 表示每一行最后一列的列号$NF # 表示最后一列;`$(NF-1)`表示倒数倒数第二列 --> 也体现了awk支持运算的特性
- 指定分隔符取列
语法形式:awk -F "[表达式]" '{print [内置变量]}' file
表达式:任意字符正则表达式
- 指定分隔符按行取列
awk -F "[表达式]" '取行方式+取列方式' file
- BEGIN的用法
#BEGIN 是一个特殊的模式,它在处理任何输入行之前执行一次。
awk -F "[表达式]" 'BEGIN{print 任意内容}' file
- 示例
#过滤文件的选择:/etc/passwd文件的前10行,存储到了~/passwd.txt中
#即:head /etc/passwd >> ~/passwd.txt
#在未明确说明分隔符时,默认指定分隔符为":"
1.指定取行
#取出文件最后一行
[root@Dezyan ~]# awk 'END{print}' passwd.txt
#取出第7行和第9行以及两行之间的内容
[root@Dezyan ~]# awk 'NR>=7&&NR<=9' passwd.txt2.模糊取行
#取出文件中以root开头和以adm开头以及两行之间的内容
[root@Dezyan ~]# awk '/^root/,/^adm/' passwd.txt3.字符比对取行
#取出文件中用户名为root的行
[root@Dezyan ~]# awk -F: '$1=="root"' passwd.txt
#取出文件中以nologin结尾的行
[root@Dezyan ~]# awk -F: '$NF~"nologin$"' passwd.txt4.数字比对取行
#取出用户uid大于6的行
[root@Dezyan ~]# awk -F: '$3>6' passwd.txt5.取列
#输出文件每一行最后一列的序号(以:或\或:\为分隔符)
[root@Dezyan ~]# awk -F "[:/]+" '{print NF}' passwd.txt
#输出文件的第一列和最后一列(以:或\或:\为分隔符)
[root@Dezyan ~]# awk -F "[:/]+" '{print $1,$NF}' passwd.txt6.BEGIN用法示例
#在输出文件第一列内容前,先输出“用户名”
[root@Dezyan ~]# awk -F: 'BEGIN{print "用户名"}{print $1}' passwd.txt
#让输出的第一列内容前,都有“用户名:”几个字
[root@Dezyan ~]# awk -F: '{print "用户名:" $1}' passwd.txt7.综合运用
#输出文件最后一行的最后一列
[root@Dezyan ~]# awk -F: 'END{print $NF}' passwd.txt
#输出大于第5行到结尾的内容,并取出第3列
[root@Dezyan ~]# awk -F: 'NR>5{print $3}' passwd.txt
#输出用户uid大于6的行并输出用户名
[root@Dezyan ~]# awk -F: '$3>6{print $1}' passwd.txt
#将系统重不能登录的用户输出到nologin.txt文件中,并在文件的开头显示“不能登录的用户有:”##注:使用awk命令;不能使用管道符
[root@Dezyan ~/testdir]# awk -F: 'BEGIN{print "不能登录的用户有:"} $NF~"nologin$"{print $1}' /etc/passwd >> nologin.txt
不能登录的用户有:
bin
daemon
……………………
相关文章:

Linux四剑客及正则表达式
正则表达式 基础正则(使用四剑客命令时无需加任何参数即可使用) ^ # 匹配以某一内容开头 如:^grep匹配所有以grep开头的行。 $ # 匹配以某一内容结尾 如:grep$ 匹配所有以grep结尾的行。 ^$ # 匹配空行。 . # 匹配…...

ALS 推荐算法案例演示(python)
数学知识补充:矩阵 总结来说: Am*k X Bk*n Cm*n ----至于乘法的规则,是数学问题, 知道可以乘即可,不需要我们自己计算 反过来 Cm*n Am*k X Bk*n ----至于矩阵如何拆分/如何分解,是数学问题,知道可以拆/可以分解即可 ALS 推荐算法案例:电影推…...

labview中连接sql server数据库查询语句
当使用数据库查询功能时,我们需要用到数据库的查询语句,这里已调用sql server为例,我们需要按照时间来查询,这里在正常调用数据库查询语句时,我们需要在前面给他加一个限制条件这里用到了,数据库的查询语句…...

leetcode_二叉树最大深度
对二叉树的理解 对递归调用的理解 对内存分配的理解 基础数据结构(C版本) - 飞书云文档 每次函数的调用 都会进行一次新的栈内存分配 所以lmax和rmax的值不会混在一起 /*** Definition for a binary tree node.* struct TreeNode {* int val;* …...

Elasticsearch 重建索引 数据迁移
Elasticsearch 重建索引 数据迁移 处理流程创建临时索引数据迁移重建索引写在最后 大家都知道,es的索引创建完成之后就不可以再修改了,包括你想更改字段属性或者是分词方式等。那么随着业务数据量的发展,可能会出现需要修改索引,或…...

2411rust,异步函数
原文 Rust异步工作组很高兴地宣布,在实现在特征中使用异步 fn的目标方面取得了重大进度.将在下周发布稳定的Rust1.75版,会包括特征中支持impl Trait注解和async fn. 稳定化 自从RFC#1522在Rust1.26中稳定下来以来,Rust就允许用户按函数的返回类型(一般叫"RPIT")编…...

前端网络性能优化问题
DNS预解析 DNS 解析也是需要时间的,可以通过预解析的⽅式来预先获得域名所对应的 IP。 <link rel"dns-prefetch" href"//abcd.cn"> 缓存 强缓存 在缓存期间不需要请求, state code 为 200 可以通过两种响应头实现&#…...

优选算法——双指针
前言 本篇博客为大家介绍双指针问题,它属于优选算法中的一种,也是一种很经典的算法;算法部分的学习对我们来说至关重要,它可以让我们积累解题思路,同时也可以大大提升我们的编程能力,本文主要是通过一些题…...

【Rabbitmq篇】RabbitMQ⾼级特性----消息确认
目录 前言: 一.消息确认机制 • ⾃动确认 • ⼿动确认 手动确认方法又分为三种: 二. 代码实现(spring环境) 配置相关信息: 1). AcknowledgeMode.NONE 2 )AcknowledgeMode.AUTO 3&…...

开源TTS语音克隆神器GPT-SoVITS_V2版本地整合包部署与远程使用生成音频
文章目录 前言1.GPT-SoVITS V2下载2.本地运行GPT-SoVITS V23.简单使用演示4.安装内网穿透工具4.1 创建远程连接公网地址 5. 固定远程访问公网地址 前言 本文主要介绍如何在Windows系统电脑使用整合包一键部署开源TTS语音克隆神器GPT-SoVITS,并结合cpolar内网穿透工…...

【idea】更换快捷键
因为个人习惯问题需要把快捷键替换一下。我喜欢用CTRLD删除一下,用CTRLY复制一样。恰好这两个快捷键需要互换一下。 打开file——>setting——>Keymap——>Edit Actions 找到CTRLY并且把它删除 找到CTRLD 并且把它删除 鼠标右键添加CTRLY 同样操作在Delet…...

最小的子数组(leetcode 209)
给定一个正整数数组,找到大于等于s的连续的最小长度的区间。 解法一:暴力解法 两层for循环,一个区间终止位置,一个区间起始位置,找到大于等于s的最小区间长度(超时了) 解法二:双指…...

IDEA-Plugins无法下载插件(网络连接问题-HTTP Proxy Settings)
IDEA-Plugins无法下载插件(网络连接问题) 改成如下配置: 勾选 添这个url即可:https://plugins.jetbrains.com/ 重启插件中心,问题解决。...

AWTK-WIDGET-WEB-VIEW 发布
awtk-widget-web-view 是通过 webview 提供的接口,实现的 AWTK 自定义控件,使得 AWTK 可以方便的显示 web 页面。 项目网址: https://gitee.com/zlgopen/awtk-widget-web-view webview 提供了一个跨平台的 webview 接口,是一个非…...

Mysql每日一题(if函数)
两种写法if()和case if()函数 select *,if(T.xT.y>T.z and T.xT.z>T.y and T.yT.z>T.x,Yes,No) as triangle from Triangle as T; case方法 select *, case when T.xT.y>T.z and T.xT.z>T.y and T.yT.z>T.x then Yes else No end as triangle from Trian…...

Spring Cloud Alibaba [Gateway]网关。
1 简介 网关作为流量的入口,常用功能包括路由转发、权限校验、限流控制等。而springcloudgateway 作为SpringCloud 官方推出的第二代网关框架,取代了Zuul网关。 1.1 SpringCloudGateway特点: (1)基于Spring5,支持响应…...

【动手学深度学习Pytorch】2. Softmax回归代码
零实现 导入所需要的包: import torch from IPython import display from d2l import torch as d2l定义数据集参数、模型参数: batch_size 256 # 每次随机读取256张图片 train_iter, test_iter d2l.load_data_fashion_mnist(batch_size) # 将展平每个…...

技术周总结 11.11~11.17 周日(Js JVM XML)
文章目录 一、11.11 周一1.1)问题01:js中的prompt弹窗区分出来用户点击的是 确认还是取消进一步示例 1.2)问题02:在 prompt弹窗弹出时默认给弹窗中写入一些内容 二、11.12 周二2.1) 问题02: 详解JVM中的本地方法栈本地方法栈的主要…...

MATLAB 使用教程 —— 矩阵和数组
矩阵和数组MATLAB 中矩阵和数组长什么样?MATLAB 怎么用矩阵计算?创建和操作矩阵矩阵运算示例串联 访问矩阵的元素 矩阵和数组 MATLAB 是“matrix laboratory”的缩写形式。MATLAB 主要用于处理 整个的矩阵和数组,而其他编程语言大多逐个处理…...

React教程第二节之虚拟DOM与Diffing算法理解
1、什么是虚拟DOM 虚拟DOM 是javascript的一个对象,是内存中的一种数据结构,以树的形式存储UI的状态,树中的每个节点都代表着真实的DOM,用来描述我们希望在页面看到的 HTML结构; 现在的MVVM 框架,大多使用…...

C++——类和对象(part2)
前言 本篇博客继续为大家介绍类与对象的知识,承接part1的内容,本篇内容是类与对象的核心内容,稍微有些复杂,如果你对其感兴趣,请继续阅读,下面进入正文部分。 1. 类的默认成员函数 默认成员函数就是用户…...

【FFmpeg系列】:音频处理
前言 在多媒体处理领域,FFmpeg无疑是一个不可或缺的利器。它功能强大且高度灵活,能够轻松应对各种音频和视频处理任务,无论是简单的格式转换,还是复杂的音频编辑,都不在话下。然而,要想真正发挥FFmpeg的潜…...

Python绘制雪花
文章目录 系列目录写在前面技术需求完整代码代码分析1. 代码初始化部分分析2. 雪花绘制核心逻辑分析3. 窗口保持部分分析4. 美学与几何特点总结 写在后面 系列目录 序号直达链接爱心系列1Python制作一个无法拒绝的表白界面2Python满屏飘字表白代码3Python无限弹窗满屏表白代码4…...

vue3 如何调用第三方npm包内部的 pinia 状态管理库方法
抛砖引玉: 如果在开发vue3项目是, 引用了npm第三方包 ,而且这个包内使用了Pinia 状态管理库,那我们如何去调用 npm内部的 Pinia 状态管理库呢? 实际遇到的问题: 今天在制作npm包时遇到的问题,之前Vue2版本的时候状态管理库用的Vuex ,当时调用npm包内的状态管理库很简单,直接引…...

uni-app快速入门(七)--组件路由跳转和API路由跳转及参数传递
uni-app有两种页面路由跳转模式,即使用navigator组件跳转和调用API跳转,API调转不要理解为调用后台接口的API,而是指脚本函数中使用跳转函数。 一、组件路由跳转 1.1 打开新页面 打开新页面使用组件的open-type"navigate",见下面…...

Flink升级程序和版本
Flink DataStream程序通常设计为长时间运行,如几周、几个月甚至几年。与所有长时间运行的服务一样,Flink streaming应用程序也需要维护,包括修复错误、实现改进或将应用程序迁移到更高版本的Flink集群。 这里就来描述下如何更新Flink streaming应用程序,以及如何将正在运行…...

从0安装mysql server
安装 MySQL Server 首先,你需要在 Ubuntu 上安装 MySQL 服务器。运行以下命令来安装:sudo apt update sudo apt install mysql-server安装完成后,MySQL 服务会自动启动。你可以通过以下命令检查 MySQL 服务是否正在运行: sudo systemctl status mysql如果 MySQL 正在运行,…...

web安全测试渗透案例知识点总结(上)——小白入狱
目录 一、Web安全渗透测试概念详解1. Web安全与渗透测试2. Web安全的主要攻击面与漏洞类型3. 渗透测试的基本流程 二、知识点详细总结1. 常见Web漏洞分析2. 渗透测试常用工具及其功能 三、具体案例教程案例1:SQL注入漏洞利用教程案例2:跨站脚本ÿ…...

PHP访问NetSuite REST Web Services
“同等看待欢乐和痛苦、得到和失去、胜利和失败、投入战斗。以此方式履行职责,你就不会招致任何罪恶。” -Bhagavad Gita 为了帮助PHP开发者快速起步,以REST Web Services方式打通与NetSuite的接口,我们答应给一个样例。但是我是不懂PHP的&a…...

【编译】多图解释 什么是短语、直接短语、句柄、素短语、可归约串
一、什么是短语二、什么是“直接”短语?三、什么是句柄?四、什么是素短语?五、什么是最左素短语可归约串就是“最左素短语” 首先,这些概念 都是相对于【句型】的,都是相对于【句型】的,都是相对于【句型】…...