正则表达式 文本三剑客

一 正则表达式:

由一类特殊字符及文本字符所编写的模式,其中有些字符(元字符)不表示字符字面意义,而表示控制或通配的功能,类似于增强版的通配符功能,但与通配符不同,通配符功能是用来处理文件名,而正则表达式是处理文本内容中字符。

正则表达式被很多程序和开发语言所广泛支持:vim, less,grep,sed,awk, nginx,mysql 等

一 元字符点(.)

① [root@localhost ~]#ls /etc/|grep rc[.0-6]

 ② [root@localhost ~]#ls /etc/ | grep 'rc\.'

③ [root@localhost ~]# grep r..t /etc/passwd   

④ [root@localhost ~]# echo abc |grep a.c  

⑤ [root@localhost ~]# echo abc |grep 'a\.c'   

      #标准格式需要加'' 或者 " "

⑥ [root@localhost ~]# ls |grep '[zhou].txt'  

 

⑦ [root@localhost ~]# ls [a-d].txt                
    #通配符
a.txt  A.txt  b.txt  B.txt  c.txt  C.txt  d.txt 

⑧ [root@localhost ~]# ls |grep '[^a-z].txt' 

⑨ [root@localhost ~]# ls |grep '[^a.z].txt'     
    #[]里就是本意不需要转义

⑩ [root@localhost ky15]#grep [[:space:]] zhen.txt 


 11 [root@localhost ky15]#grep [[:space:]] zhen.txt |cat -A

12 [root@localhost ~]#ls /etc/ |grep "rc[.0-6]"    rc.   rc0  rc1   rc2  rc3     rc6
     [root@localhost ~]#ls /etc/ |grep "rc[.0-6]." 

②[ ]:在正则表达式中[ ]表示匹配[ ]中任意一个字符


[root@pc1 data]#touch {a..c}.txt #创建a-c.txt文件夹
[root@pc1 data]#ls               #显示文件夹内容
a.txt  b.txt  c.txt 
[root@pc1 data]#ls |grep '[a-z].txt' #使用grep过滤ls中有任意一个a-z字母.txt的文件
a.txt
b.txt
c.txt

③[^]:在正则表达式中表示匹配[ ]中外的任意单个字符 


[root@pc1 data]#touch {a..b}.txt        #创建a-b.txt文件
[root@pc1 data]#touch {0..2}.txt        #创建0-2.txt文件
[root@pc1 data]#ls                      #显示文件
0.txt  1.txt   a.txt  b.txt  
[root@pc1 data]#ls |grep '[^0-9].txt'   #过滤ls显示文件中除去0-9任意字符.txt文件
a.txt
b.txt
c.txt
[root@pc1 data]#ls |grep '[^a-z].txt'   #过滤ls显示文件中除去a-z任意字符.txt文件
0.txt
1.txt
2.txt

[:alnum:] 字母和数字
[:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
[:lower:] 小写字母,示例:[[:lower:]],相当于[a-z]
[:upper:] 大写字母
[:blank:] 空白字符(空格和制表符)
[:space:] 包括空格、制表符(水平和垂直)、换行符、回车符等各种类型的空白,比[:blank:]包含的范围广
[:cntrl:]    不可打印的控制字符(退格、删除、警铃...)
[:digit:]    十进制数字
[:xdigit:]  十六进制数字
[:graph:]  可打印的非空白字符
[:print:]   可打印字符
[:punct:] 标点符号


[root@pc1 data]#echo AB12ab | grep -o '[[:alpha:]]'  #过滤输出内容的字母
A
B
a
b
[root@pc1 data]#echo AB12ab | grep -o '[[:alnum:]]'  #过滤输出内容的字母和数字
A
B
1
2
a
b
[root@pc1 data]#echo AB12ab | grep -o '[[:lower:]]'  #过滤输出内容的小写字母
a
b
[root@pc1 data]#echo AB12ab | grep -o '[[:upper:]]'  #过滤输出内容的大写字母
A

2 表示次数

① *  :表示匹配前面字符任意次,包括0次


[root@pc1 ~]#echo  ac |grep 'ab*c'  #ab之间不输入b可匹配
ac
[root@pc1 ~]#echo  abc |grep 'ab*c' #ab之间输入1个b可匹配
abc
[root@pc1 ~]#echo  abbc |grep 'ab*c'#ab之间输入2个b可匹配
abbc

②  .*  :表示匹配前面字符任意次,包括0次


[root@pc1 ~]#echo ac |grep 'ab.*c'  #ac之间不输入b匹配不到
[root@pc1 ~]#echo abc |grep 'ab.*c' #ac之间输入1个b可以匹配
abc
[root@pc1 ~]#echo abbc |grep 'ab.*c' #ac直接输入2个b可以匹配
abbc

③  \?  :表示匹配前面字符1次或0次,可有可无


[root@pc1 ~]#echo ac | grep 'ab\?c'    #ac之间不输入b可以匹配
ac
[root@pc1 ~]#echo abc | grep 'ab\?c'   #ac之间输入1个b可以匹配
abc
[root@pc1 ~]#echo abbc | grep 'ab\?c'  #ac之间输入2个b匹配不到 

④ \+ :表示匹配前面字符最少1次。


[root@pc1 ~]#echo ac | grep 'ab\+c'  #ac之间不输入b匹配不到
[root@pc1 ~]#echo abc | grep 'ab\+c' #ac之间输入1个b可以匹配
abc
[root@pc1 ~]#echo abbbbc | grep 'ab\+c' #ac之间输入多个b可以匹配
abbbbc

⑤  \{n\}  :表示匹配前面的字符n次

[root@pc1 ~]#echo abbbc |grep 'ab\{3\}c'  #输出abbbc匹配ac之间b字符出现3次可以匹配
abbbc
[root@pc1 ~]#echo abbbbc |grep 'ab\{3\}c' #输出abbbbc匹配ac之间b字符出现3次匹配不到

⑥  \{m,n\}  :表示匹配前面字符最少m次最多n次


[root@pc1 ~]#echo abc |grep 'ab\{1,3\}c'  #输出abc匹配ac之间b出现最少1次最多3次可以匹配
abc
[root@pc1 ~]#echo abbc |grep 'ab\{1,3\}c' #输出abbc匹配ac之间b出现最少1次最多3次可以匹配
abbc
[root@pc1 ~]#echo abbbc |grep 'ab\{1,3\}c'#输出abbbc匹配ac之间b出现最少1次最多3次可以匹配
abbbc
[root@pc1 ~]#echo abbbbc |grep 'ab\{1,3\}c'#输出abbbbc匹配ac之间b出现最少1次最多3次匹配不到

⑦\{m,\}:

⑧\{,n\}:

3 位置锚定

①  ^  表示以什么字符开头的行。②  $  表示以什么字符为结尾的行。③ ^PATTERN$ 表示用于模式匹配整行 (单独一行  只有PATTERN字符)。④  ^$ 表示空行。⑤  \< 或 \b        #词首锚定,用于单词模式的左侧(连续的数字,字母,下划线都算单词内部)。⑥  \> 或 \b       #词尾锚定,用于单词模式的右侧。⑦  \<PATTERN\>    #匹配整个单词。

举例 

[root@pc1 ~]#cat a.txt                #查看a.txt内容 
root
abc   abd  abf abe 
asfase
asdfasfewe
[root@pc1 ~]#cat a.txt |grep '^a'     #查看a.txt内容过滤以a开头的行
abc   abd  abf abe 
asfase
asdfasfewe
[root@pc1 ~]#cat a.txt |grep 'e$'     #查看a.txt内容过滤以e为结尾的行
asfase
asdfasfewe
[root@pc1 ~]#cat a.txt |grep '^root$' #查看a.txt内容过滤只有root字符的行
root
[root@pc1 ~]#cat a.txt |grep '\ba'    #查看a.txt过滤以a开头的词
abc   abd  abf abe 
asfase
asdfasfewe
[root@pc1 ~]#cat a.txt |grep 'e\b'    #查看a.txt过滤以e为结尾的词
abc   abd  abf abe 
asfase
asdfasfewe
[root@pc1 ~]#cat a.txt |grep -o '\babc\b' #查看a.txt过滤次abc
abc

4 分组

()将多个字符捆绑在一起当做一个整体处理


[root@pc1 ~]#echo abcccc |grep "abc\{4\}"  #匹配输出内容c出现4次
abcccc
[root@pc1 ~]#echo abcccc |grep "\(abc\)\{4\}" #abc字符加()分组匹配输出内容abc出现4次,无abc出现4次匹配不到
[root@pc1 ~]#echo abcabcabcabc |grep "\(abc\)\{4\}"  #abc字符加()分组匹配输出内容abc出现4次匹配成功
abcabcabcabc

 文本三剑客之 grep

grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

 color  对匹配文件着色显示

案例 

二 扩展正则表达式

述了一种字符串匹配的模式(pattern),可以用来检查一个串是否含有某种子串、将匹配的子串替换或者从某个串中取出符合某个条件的子串等。在Linux中也就是代表我们定义的模式模板,Linux工具可以用它来过滤文本
①使用方法

grep  -E选项加正则表达式内容,与正常正则表达式区别在于不用在匹配时添加 \ 

②表示次数

*   匹配前面字符任意次
? 0或1次
+ 1次或多次
{n} 匹配n次
{m,n} 至少m,至多n次
{,n}  #匹配前面的字符至多n次,<=n,n可以为0
{n,} #匹配前面的字符至少n次,<=n,n可以为0

③表示分组

() 分组

三 文本三剑客之awk


awk为流编辑器,即读取文件一行处理一行。不同于vi编辑器等是将文件整个缓存在内容中处理。

使用格式
awk  [选项]   '处理模式{处理动作}'

'{ }'为固定格式


举例:取出sda硬盘的容量
[root@pc1 data]#lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   60G  0 disk 
├─sda1            8:1    0    2G  0 part /boot
└─sda2            8:2    0   54G  0 part ├─centos-root 253:0    0   50G  0 lvm  /└─centos-swap 253:1    0    4G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
sdc               8:32   0   20G  0 disk 
sdd               8:48   0   20G  0 disk 
sr0              11:0    1  4.2G  0 rom  
[root@pc1 data]#lsblk  |grep -w sda       #通过过滤sda字符将sda此行过滤出
sda               8:0    0   60G  0 disk 
[root@pc1 data]#lsblk  |grep -w sda | awk '{print $4}' #使用awk不指定分隔符 打印出第4列
60G

2 处理动作


①基本格式:awk  [选项]   '处理模式{处理动作}'

②print动作:打印,打印'{print $1}'即为打印第一列,'{print $n}'即打印为第n列,'{print $n,$m}'即为打印第n列和第m列。

③print打印顺序:'BEGIN{print "1"} END {print  "2"}  {print "3"} ',首先打印BEGIN后的print 1,然后打印print 3  最后打印END后的print 2,BEGIN表示第一个打印,END表示最后打印

举例1:
[root@pc1 data]#cat test.txt           #创建文件
1     2    3     4      5      6  7 8  @test.txt 文件内容
[root@pc1 data]#awk '{print $1}' test.txt  #使用awk处理文件test.txt打印第1列
1
[root@pc1 data]#awk '{print $5}' test.txt  #使用awk处理文件test.txt打印第5列
5
[root@pc1 data]#awk '{print $1,$5}' test.txt  #使用awk处理文件test.txt打印第1列和第5列
1 5举例2:
[root@pc1 data]#  awk 'BEGIN{print "1"} END{print "$2"} {print "3"}' test.txt
1
3
2

3 选项

①基本格式:awk  [选项]   '处理模式{处理动作}'

②选项若不写默认为以空格为分隔符处理,且会将空格自动压缩。

③-F 选项 指定分隔符,即指定以什么为分隔符处理内容

举例:
[root@pc1 data]#cat test.txt         #编辑test.txt内容
one    two   three
root:lisi:zhangsan
[root@pc1 data]#awk '{print $2}' test.txt  #默认过滤test内容以空格为分隔符打印出第2列为two
two
[root@pc1 data]#awk -F : '{print $2}' test.txt #使用-F选项指定以:为分隔符打印出第2列为lisilisi

4 处理模式

①基本格式:awk  [选项]   '处理模式{处理动作}'

②处理模式为空表示无其他额外条件。

③正则表达式匹配模式

正则匹配:与正则表达式配合使用。

举例:
[root@pc1 data]#cat test.txt      #创建test.txt
root 1   abc  2    3     4      5      6  7 8
abcdsadfasdf root
[root@pc1 data]#awk   '/^root/{print $2}' test.txt #使用awk配合正则表达式打印出test.txt文件中以root为开头的行的第二列,注意处理模式在固定格式'{}'的单引号中 
1                                 #匹配出的内容
[root@pc1 data]#awk   '/^root/,/root$/{print $2}' test.txt  #使用awk配合正则表达式打印出test.txt文件中以root为开头的且以root结尾的第二列,注意处理模式在固定格式'{}'的单引号中
1root                               #匹配出的内容

5 awk常见的内置变量 

比较操作符:==, !=, >, >=, <, <=

逻辑操作符:&&与 并且的关系,||或 或者关系,!非 取反关系

①FS :指定每行文本的字段分隔符,缺省为空格或制表符(tab)。与 “-F”作用相同 -v "FS=:"


[root@pc1 data]#cat a.txt 
a:b:c
[root@pc1 data]#awk -v "FS=:" '{print $2}' a.txt  使用FS变量指定:为分隔符打印a.txt文件的第二列
b

②OFS:输出时的分隔符

[root@pc1 data]#cat a.txt 
a:b:c
[root@pc1 data]#awk -v "FS=:"  -v OFS="==" '{print $1OFS$3}' a.txt  使用FS变量指定:为分隔符且指定输出分隔符OFS为==,打印a.txt文件的第1列和第3列
a==b

③NF:当前处理的行的字段个数即处理行有多少列,默认按空格分列,可指定。 

举例
awk -F : '{print NF}'  /etc/passwd  |head -n 1
#指定:为分隔符打印出文件/etc/passwd第一行有多少个字段,即多少列
7
awk -F : '{print $(NF-1)}'  /etc/passwd |head -n 1 
#指定:为分隔符打印出文件/etc/passwd第一行的倒数第二个字段,即倒数第二列
/root

 ④NR:当前处理的行的行号(序数)

举例
awk -F :   'NR==1{print $1}'  /etc/passwd
#指定:为分隔符打印出/etc/passwd文件第一行的第一个变量,注意模式要写在'模式{}'位置
root                       
awk -F :   'NR>=1 && NR<=3{PRINT $1}' /etc/passwd
#指定:为分隔符打印出/etc/passwd文件大于等于第一行且小于等于第三行的第三个变量
root
bin
daemon

 ⑤$0:当前处理的行的整行内容


#awk -F : 'NR==1{print $0}' /etc/passwd#指定:为分隔符打印出文件/etc/passwd第一行的所有内容
root:x:0:0:root:/root:/bin/bash
awk -F : 'NR>=1 && NR<=3{print $0}' /etc/passwd
#指定:为分隔符打印出文件/etc/passwd大于等于第一行且小于等于第三行的所有内容
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
 

⑥$n:当前处理行的第n个字段(第n列)

⑦FILENAME:被处理的文件名

⑧RS:行分隔符。awk从文件上读取资料时,将根据RS的定义就把资料切割成许多条记录,而awk一次仅读入一条记录进行处理。预设值是\n

 四文本三剑客之sed

定义
  • sed编辑器时一种流编辑器,流编辑器会在编辑器处理数据之前基于预先提供的一组规则来辑数据流。

  • sed编辑器可以根据命令来处理数据流中的数据,这些命令要么从命令行中输入,要存储在一个命令文本文件中。

2.工作流程


sed 的工作流程主要包括读取、执行和显示三个过程:

读取: sed从输入流(文件、管道、标准输入)中读取一行内容并存储到临时的缓冲区中(又称模式空间,pattern space )。


执行:默认情况下,所有的sed 命令都在模式空间中顺序地执行, 除非指定了行的地址,否则sed命令将会在所有的行上依次执行。


显示:发送修改后的内容到输出流(屏幕)。在发送数据后,模式空间将会被清空。在所有的文件内容都被处理完成之前,上述过程将重复执行,直至所有内容被处理完。

1 基本用法

sed [选项]... '{自身脚本语法};....' [input file...]

 常用选项:


-n            不输出模式空间内容到屏幕,即不自动打印
-e             多点编辑[root@www data]#sed -n -e '/^r/p'  -e'/^b/p' /etc/passwd
-f  FILE     从指定文件中读取编辑脚本
-r, -E          使用扩展正则表达式
-i.bak         备份文件并原处编辑

 基本操作

 

 打印内容


sed ' '      #交互模式输入一行,自动打印一行相同的sed -n ' '   #交互模式输入一行,关闭自动打印sed -n ' p'  #加上p又恢复自动打印,与sed ' '相同sed -n '4p' /etc/fstab    #打印第四行内容ifconfig ens33 |sed -n '2,4p'    #打印网卡信息的2至4行cat -n /etc/passwd |sed -n '2,+4p'#打印第2至6行,即第二行开始往后四行sed  '3q' /etc/passwd
#打印三行后退出sed -n '$p' /etc/passwd    #打印最后一行使用通配符

 查找文件


sed ' ' /etc/fstabsed -n ' p' /etc/fatab

 过滤关键字

sed -n '/root/p' /etc/passwd#从第二行开始,找到root为止

 匹配关键字

sed -n '2,/root/p' /etc/passwd‘#,/关键字/p’ 从第#行开始匹配#从第二行开始,找到root为止

 奇偶行

seq 10 |sed -n '1~2p'
seq 10 |sed '2~2d'#打印奇数行seq 10 |sed -n '2~2p'
seq 10 |sed '1~2d'#打印偶数行 

 删除内容

cat 1.txt |sed '3d'#删除第三行并显示出来
注 删除指定行并不是真正删除,只是将删除了的结果显示出来,并不是真正删除了

sed '2,4d' seq.txt #删除连续的2到4行

sed '/^$/d' /opt/seq.txt   #删除文本中的空行

sed '/nologin$/!d' /etc/passwd#删除不是以nologin结尾的行

sed '/nologin$/!d' /etc/passwd#删除不是以nologin结尾的行

 备份再删除

sed -i.bak '3d' 1.txt#原文件删除第三行,并原文备份

 插入内容

sed -i '2a charu' 1.txt#在第二行后插入内容
sed -i '2a\\n charu2' 1.txt#插入空行,多添加一个\

替换行内容 

sed -i '2ctihuan' 1.txt#将第二行的内容替换成tihuan

取反 

seq 10|sed -n '2!p'#不显示第二行

搜索替代

 ①查几点到几点之间的日志

sed -n '/2023:08:09/,/2023:09:42:37/p' access_log

②修改全局,后加g

sed -i 's/root/admin/g' /etc/passwd#将全局出现的root修改为admin

③修改多行,使用r及e

④修改selinux开机不启动配置文件

举例:
seq 5 |sed       #生成1-5数字传给sed
#该格式报错,基本格式中的'{自身脚本语法}'不可以不写,可以写空则是默认打印全部内容如下
seq 5 | sed ''
1
2
3
4
5
2、sed脚本语法及命令
①sed脚本语法:地址+sed自己脚本命令,地址即范围例如全文或第一行,第一行至第三行等范围②sed脚本命令:p 将内容打印到屏幕,使用时关闭自动打印功能,-n选项

 打印内容

 q 到指定的内容即退出,例如打印到第三行直接退出

 IP 内容忽略大小写,使用时关闭自动打印功能,-n选项

 删除 插入  

 d 删除指定内容

a 在指定位置添加内容

c 替换指定内容

 ~ 步进,0~2,2个间隔,1~2,1个间隔 seq 10 |sed -n '0~2p'每间隔2个打印一次

 sed选项


① -n 选项,sed默认有自动打印功能,-n选项是关闭打印功能,一般配合脚本命令p使用

②-r  选项,开启扩展正则表达式

③-i  选项,在文件中添加内容,可以在-i是加.bak后缀备份修改的文件。例如 sed -i.bak  a.txt会在同目录下生成一个a.txt.bak文件

查找 替换

格式:sed '/可使用正则表达式选择范围/'s/查找内容/替换内容/g g表示全文,固定格式的///可以用###等符号替换

注意:查找内容可使用正则表达式,替换内容不可使用正则表达式

举例1:搜索/etc/passwd 中包含root字符的行
sed -nr '/root/p'   /etc/passwd  #-n关闭自动打印,-r启用扩展正则表达式查询root字符并打印
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin   #查询结果举例2:使用sed关闭selinux
cat /etc/selinux/config   #查看selinux配置文件内容
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
SELINUX=enforcing
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
sed -i.bak 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config 
#-i选项备份selinux配置文件后缀加.bak,在config文件中找到SELINUX=enforcing修改为SELINUX=disabled,g表示所有搜索到的内容都替换。单引号中''s之前可加行号
后向引用

( )内的按顺序标为123 ,引用时\1调用第一个()的内容,\n表示调用第n个()的内容。

.*表示任意长度字符不管是什么字符

举例1:取ip地址ifconfig ens33 |sed -nr 's/.*inet (.*) netmask.*/\1/p'
#查看ens33的网卡信息传给sed处理,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式,.*inet 表示以inet为止的前面所有字符 (.*) 括号表示使用反向引用
.*表示该处的任意字符 netmask.*表示以netmask开头后面的所有字符。\1表示反向引用第一个()的
内容,p表示打印出来
192.168.30.11  #打印结果举例2:echo abc123XYZ | sed -nr 's/(abc)(123)(XYZ)/\3\2\1/p'
#打印abc123XYZ传给sed处理变成XYZ123ABC,-n选项关闭自动打印,-r选项开启扩展正则表达式
's///'查找替换标准格式。三个()括起来的内容分别表示元素123,调用时改变调用顺序打印即可改变内容顺序
XYZ123abc       #打印结果
变量

使用sed查询是可以直接调用变量,注意必须用“ ”号或者俩个双引号,单引号不识别变量

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/654938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023年算法GWCA -CNN-BiLSTM-ATTENTION回归预测(matlab)

2023年算法GWCA -CNN-BiLSTM-ATTENTION回归预测&#xff08;matlab&#xff09; GWCA -CNN-BiLSTM-Attention长城建造算法优化卷积-长短期记忆神经网络结合注意力机制的数据回归预测 Matlab语言。 长城建造算法&#xff08;Great Wall Construction Algorithm&#xff0c;GWC…

防御保护第四次作业

防火墙的智能选路 就近选路 --- 我们希望在访问不同运营商的服务器是&#xff0c;通过对应运营商的链路。这样可以高 通信效率&#xff0c;避免绕路。 策略路由 -- PBR 传统的路由&#xff0c;仅基于数据包中的目标IP地址查找路由表。仅关心其目标&#xff0c;所以&#…

排序【数据结构】

文章目录 一、 稳定性二、排序1. 插入排序(1) 直接插入排序(2) 希尔排序 2. 选择排序(1) 直接选择排序(2) 堆排序 3. 交换排序(1) 冒泡排序(2) 快速排序① 普通版快排② 关于优化快排③ 快速排序的非递归方式 4. 归并排序5. 计数排序 三、 总结 一、 稳定性 在计算机科学中&am…

CHS_03.2.3.2_2+进程互斥的硬件实现方法

CHS_03.2.3.2_2进程互斥的硬件实现方法 知识总览中断屏蔽方法TestAndSet指令Swap指令 知识回顾 进程互斥的四种软件实现方法 知识总览 这个小节我们会介绍另外的三种进程互斥的硬件实现方法 那么 这个小节的学习过程当中 大家需要注意理解各个方法的原理 并且要稍微的了解各个…

【Uni-App】Vue3如何使用pinia状态管理库与持久化

安装插件 pinia-plugin-unistorage 引入 // main.js import { createSSRApp } from "vue"; import * as Pinia from "pinia"; import { createUnistorage } from "pinia-plugin-unistorage";export function createApp() {const app create…

SpringBoot不同的@Mapping使用

文章目录 一、介绍二、使用 一、介绍 一般Mapping类注解在Spring框架中用于将HTTP请求映射到对应的处理器方法。它们各自对应于不同类型的HTTP方法&#xff0c;主要用于RESTful Web服务中。以下是每个注解的作用&#xff1a; GetMapping: 用于映射HTTP GET请求到处理器方法。通…

Life is Strange 奇异人生汉化指南

奇异人生汉化指南 引言&#xff1a;在搜索引擎上看了许多的攻略&#xff0c;都无法得到指向性明确的安装步骤&#xff0c;其中最令人不解的分别为汉化包与汉化包的安装地址&#xff0c;以下会以汉化包获取与汉化包安装地址两个维度来确保汉化的正确&#xff0c;以及在最终附上…

爬虫学习笔记-get请求获取豆瓣电影排名多页数据★★★★★

1. 导入爬虫需要使用的包 import urllib.request import urllib.parse 2.创建请求函数 def create_request(page): # 定义不变的url部分 base_url https://movie.douban.com/j/chart/top_list?type5&interval_id100%3A90&action& # 根据规律定义data拼接url …

算法沉淀——二分查找(leetcode真题剖析)

算法沉淀——二分查找 01.二分查找02.在排序数组中查找元素的第一个和最后一个位置03.搜索插入位置04.x 的平方根05.山脉数组的峰顶索引06.寻找峰值07.寻找旋转排序数组中的最小值08.LCR 173. 点名 二分查找&#xff08;Binary Search&#xff09;是一种在有序数组中查找特定元…

【算法专题】二分查找(入门)

&#x1f4d1;前言 本文主要是二分查找&#xff08;入门&#xff09;的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日…

幻兽帕鲁服务器怎么收费?4核16G配置

幻兽帕鲁服务器价格多少钱&#xff1f;4核16G服务器Palworld官方推荐配置&#xff0c;阿里云4核16G服务器32元1个月、96元3个月&#xff0c;腾讯云换手帕服务器服务器4核16G14M带宽66元一个月、277元3个月&#xff0c;8核32G22M配置115元1个月、345元3个月&#xff0c;16核64G3…

前言:穿越迷雾,探索C语言指针的奇幻之旅

各位少年&#xff0c;大家好&#xff0c;我是博主那一脸阳光&#xff0c;今天给大家分享指针&#xff0c;内存和地址的使用&#xff0c;以及使用。 前言&#xff1a; 在编程的世界中&#xff0c;若论灵活多变、深邃神秘的角色&#xff0c;非“指针”莫属。如同哈利波特手中的魔…

深度学习快速入门--7天做项目

深度学习快速入门--7天做项目 0. 引言1. 本文内容2. 深度学习是什么3. 项目是一个很好的切入点4. 7天做项目4.1 第一天&#xff1a;数据整理4.2 第二天&#xff1a;数据处理4.3 第三天&#xff1a;简单神经网络设计4.4 第四天&#xff1a;分析效果与原因4.5 第五天&#xff1a;…

基于SpringBoot的玩具租赁系统

文章目录 项目介绍主要功能截图&#xff1a;部分代码展示设计总结项目获取方式 &#x1f345; 作者主页&#xff1a;超级无敌暴龙战士塔塔开 &#x1f345; 简介&#xff1a;Java领域优质创作者&#x1f3c6;、 简历模板、学习资料、面试题库【关注我&#xff0c;都给你】 &…

【原创课程】KUKA机器人与S7-1200进行Profinet通讯

一、KUKA机器人与S7-1200进行Profinet通讯 1、硬件配置 ①硬件配置 名称 型号 数量 PLC S7_1217C 1个 机器人 KUKA_KR-210 1台 2、机器人一侧参数配置 ①添加备选软件包 首先&#xff0c;从KUKA机器人控制柜中将KOP备选软件包拷贝出来&#xff0c;然后在”WorkVi…

【lodash.js】非常好用高性能的 JavaScript 实用工具库,防抖,深克隆,排序等

前言&#xff1a;lodash是一款前端必须要知道的js库&#xff0c;它里面提供了许多常用的功能和实用的工具函数 基本上我参与的项目中都有lodash&#xff0c;只能说lodash太强大了&#xff0c;lodash.js 提供了超过 300 个实用的工具函数&#xff0c;涵盖了很多常见的编程任务 l…

【ascii码对照表】

计算机各种表 ascii码表BCD码&#xff08;Binary-Coded Decimal‎&#xff09;有权码-8421码有权码-2421码有权码-5421码无权码-余3码无权码-余3循环码无权码-格雷码 ascii码表 BCD码&#xff08;Binary-Coded Decimal‎&#xff09; BCD码也称二进码十进数 BCD用4位二进制数来…

数字图像处理(实践篇)三十六 OpenCV-Python 使用ORB和BFmatcher对两个输入图像的关键点进行匹配实践

目录 一 涉及的函数 二 实践 ORB(Oriented FAST and Rotated BRIEF)是一种特征点检测和描述算法,它结合了FAST关键点检测和BRIEF描述子。ORB算法具有以下优势: ①实时性:能够在实时应用中进行快速的特征点检测和描述。 ②

Windows系统云服务器自定义域名解析导致网站无法访问怎么解决?

本文九河云介绍Windows实例内部自定义域名解析与本地网络域名解析不一致导致无法访问网站的问题描述、问题原因和解决方案。 问题描述 在Windows实例内部通过浏览器无法访问某网站&#xff0c;但在其他设备上可以正常访问&#xff0c;排查发现Windows实例内部自定义域名解析与…

网络安全科普:SSL证书保护我们的网上冲浪安全

当我们在线上愉快冲浪时&#xff0c;各类网站数不胜数&#xff0c;但是如何判定该站点是安全还是有风险呢&#xff1f; 当当当&#xff0c;SSL数字证书登场&#xff01;&#xff01; SSL证书也称为数字证书&#xff0c;是一种用于保护网站和用户之间通信安全的加密协议。由权…