Linux命令awk详细用法

简介

  awk 是一种强大的文本处理工具,用于在命令行环境下对文件或数据流进行逐行处理和分析。它是由 Alfred Aho、Peter Weinberger 和 Brian Kernighan 在 1977 年开发的,并以他们三人的姓氏命名。awk 在 Unix/Linux 系统中非常常见,也有 Windows 版本可用。

  awk 基于一种脚本语言,语法类似于 C 语言,因此熟悉 C 或类似语言的开发者能够轻松上手。它的主要功能是对于输入数据的逐行处理和分析,可以通过灵活的模式匹配、操作符和函数对数据进行处理和转换。awk 的工作方式是逐行读取输入数据,然后根据用户指定的模式和动作对数据进行处理。

目录

1. 语法

1.1. 参数选项

1.2. 内置变量

1.3. 转义符

1.4. 正则表达式

1.5. 操作符

1.6. 控制语句

1.7. 内置函数

2. 数据过滤

2.1. 基础用法

2.2. 过滤行方法

2.3. 过滤列方法

2.4. 组合过滤行、列

2.5. 输出行号

2.6. 输出列号

2.7. 忽略大小写

2.8. 指定分隔符

3. 正则表达式

3.1. 模糊匹配

3.2. 精确匹配

3.3. 逻辑匹配

3.4. 范围匹配

4. 控制语句

4.1. 条件判断语句

4.2. 循环控制语句

5. 内置函数方法

5.1. 字符串转换

5.2. 构造随机数

5.3. 生成大数据文件

5.4. 数学运算

5.5. BEGIN用法

5.6. END用法


1. 语法

1.1. 参数选项

-F:指定分隔符
-v:定义变量
-f:指定文件读取awk代码
-o:优化Awk程序以提高性能
-W:兼容旧版本
-r:启用扩展正则表达式中的重复操作符

          

1.2. 内置变量

FS :指定字段之间的分隔符。默认为连续的空白字符(空格和制表符)。
OFS:输出字段分隔符。默认为连续的空白字符(空格和制表符)。
RS :记录分隔符,默认为换行符。
ORS:输出记录分隔符,默认为换行符。
NF :字段数量,表示当前记录中字段的数量。
NR :记录数量,表示已读取的记录的总数。
$0 :所有的列。
$n :指定n列。$1表示第1列,$2表示第2列...
FILENAME:当前正在处理的文件的名称。
ARGV:包含命令行中的所有参数。

          

1.3. 转义符

\n:换行符
\t:制表符(Tab)
\b:退格符
\r:回车符
\f:换页符
\\:反斜杠本身
\":双引号
\':单引号

          

1.4. 正则表达式

.:匹配除了换行符之外的任意字符。
*:匹配前面字符的零个或多个重复。
+:匹配前面字符的一个或多个重复。
?:匹配前面字符的零个或一个重复。
^:匹配行的开头。
$:匹配行的结尾。
[ ]:字符类,匹配方括号内的任意一个字符。
[^ ]:否定字符类,匹配除了方括号内字符之外的任意一个字符。
( ):分组,将括号内的表达式作为一个整体。
|:或操作符,匹配两个或多个表达式中的任意一个。

          

1.5. 操作符

算术操作符

+:加法
-:减法
*:乘法
/:除法
%:取余数
^:幂运算

关系操作符

> :大于
< :小于
==:等于
!=:不等于
>=:大于等于
<=:小于等于

逻辑操作符

&&:逻辑与(and)
||:逻辑或(or)
! :逻辑非(not)

赋值操作符

= :直接赋值
+=:加法赋值
-=:减法赋值
*=:乘法赋值
/=:除法赋值
%=:取模赋值

字符串操作符

"":双引号用于拼接字符串
~ :匹配字符串
!~:不匹配字符串

增减操作符

++:自增
--:自减

          

1.6. 控制语句

条件控制

if (条件) {代码块} else {代码块}

循环控制

# 迭代循环
for (i=1; i<=10; i+=1) {代码块}
# 只有条件为真,才能循环
while (条件为真) {代码块}
# 至少打印1次代码
do {代码块} while (条件为真)

控制流语句

continue:跳出当前循环
break:跳出整个循环
exit:终止整个Awk程序

          

1.7. 内置函数

字符串函数

length(str)'返回字符串 str 的长度。'
index(str, search)'返回字符串 str 中第一次出现 search 的位置。'
substr(str, start, length)'返回字符串 str 中从 start 开始长度为 length 的子字符串。'
split(str, arr, sep)'将字符串 str 按照分隔符 sep 分割,并将结果存储到数组 arr 中。'
tolower(str)'将字符串 str 转换为小写。'
toupper(str)'将字符串 str 转换为大写。'

数值函数

int(n) :返回 n 的整数部分。
sqrt(n):返回 n 的平方根。
sin(n) :返回 n 的正弦值。
cos(n) :返回 n 的余弦值。
rand() :返回一个 0 到 1 之间的随机数。

文件和输入函数

getline:读取下一行输入并赋值给特定变量。
NF:当前行的字段数。
NR:当前行的行号。
FNR:当前文件的行号。

          

2. 数据过滤

2.1. 基础用法

用法:[ ] 表示可选,<> 表示必选

awk [参数] <条件> [文件]

1、查看文件内容

# 查看文件全部内容
awk // tmp.txt

          

# 匹配包含c的行
awk /c/ tmp.txt

 

          

# 指定分隔符为逗号,匹配包含c的行,只输出第1列和第3列
awk -F , '/c/{print $1, $3}' tmp.txt

          

2、直接输出内容(使用BEGIN)

# 使用print直接打印内容
awk 'BEGIN{print 1, "abc"}'

          

# 使用变量赋值
awk -v num=100 'BEGIN{print "number is", num}'

          

3、管道符过滤

# 条件判断第1列的值
seq 10 |awk '$1 > 5 && $1 < 9'

          

2.2. 过滤行方法

1、输出第1行

awk 'NR==1{print}' file.txt

          

2、输出最后1行

# 倒数第2行(先获取最后一行数据,再获取它的上一行),处理大数据文件较快
awk '{ line[NR] = $0 } END { print line[NR-1] }' file.txt# 最后1行使用END
awk 'END{print}' file.txt

          

3、输出第3~6行

# 通过判断的方式获取3~6行
awk 'NR>=3 && NR<=6' file.txt

          

4、输出第2、6、8行数据

awk 'NR==2 || NR==6 || NR==8' file.txt

          

5、每隔3行输出一次

awk 'NR % 3 == 0' file.txt

          

6、过滤n行后面/前面的全部行

# 输出5行以后的全部行
awk 'NR > 5' file.txt# 输出3行以前的全部行
awk 'NR < 3' file.txt

          

7、不输出空行

awk 'NF' file.txt

          

8、输出包含关键字的行

# 输出包含c的行
awk /c/ file.txt# 输出包含c和f的行
awk '/c/ && /f/' file.txt# 输出包含a或c的行
awk '/a/ || /c/' file.txt

          

9、输出匹配到的行的下1行

# 输出包含5的下一行
awk '/5/ {getline; print}'# 输出包含5的行和它的下一行
awk '/5/ {print; getline; print}'

          

10、匹配开始行和结束行

# 指定开始行:以2开头,结束行:以4开头。输出这中间的行
awk '/^2/, /^4/' file.txt

          

2.3. 过滤列方法

文件内容

1,17083,d7fce2,zhangsan,boy,18
2,13246,6de9bb,lisi,boy,39
3,8405,4c6e62,xiaomei,girl,28
4,11783,095676,wangwu,boy,20
5,23251,e14d02,zhangjie,girl,21

1、输出第1、3、5列

awk -F , '{print $1, $3, $5}' file.txt

          

2、过滤比较多的列(例如3~20列)不建议使用awk,使用cut

# 指定分隔符为逗号,过滤第3~20列
cut -d , -f 3-20 file.txt

          

3、输出第列1为2,第2列小于50000的行

awk -F , '$1==2 && $2<50000{print}' file.txt

          

4、模糊匹配第2列以1开头的行

# 使用 ~ 模糊匹配,^1正则匹配以1开头
awk -F , '$2 ~ /^1/' file.txt

          

5、输出倒数第2列、最后1列

# $NF表示最后1列,倒数第2列-1,倒数第2列-2...
awk -F , '{print $(NF-1), $NF}' file.txt

          

6、不输出第3列和最后1列

# 将第3列和最后1列替换为空
awk -F , '{$3=""; $NF=""; print}' file.txt

          

7、每列顺序随意控制

awk '{print $3, $1, $2}' file.txt

          

8、在最后添加一列字符串($0可以换成其他列)

awk '{print $0, "ooo"}' file.txt

          

2.4. 组合过滤行、列

1、输出2~3行的第1列

awk -F , 'NR>1 && NR<4{print $1}' file.txt

          

2、输出第4行的第1列和最后1列

awk -F , 'NR==4{print $1, $NF}' file.txt

          

3、输出前3行,不包含最后1列

awk -F , 'NR<4{$NF=""; print}' file.txt

          

4、输出第1列等于5的第3列的值

awk -F , '$1==5{print $3}' file.txt

          

2.5. 输出行号

1、输出每行的行号

# NR输出行号,$0输出全部内容
awk '{print NR, $0}' file.txt

          

2、输出过滤关键字行的行号

# 过滤包含e的行,输出行号和内容
awk '/e/{print NR, $0}' file.txt

          

3、输出包含关键字的总行数

# 过滤包含e的行,每匹配到一次n+1,最后打印n
awk '/e/ {n++} END{print n}' file.txt

          

4、输出总行数

# 输出文件总行数
awk 'END{print NR}' file.txt# 输出文件总行数,不包含空行
awk 'NF!=0 {n++} END{print n}' file.txt

          

2.6. 输出列号

1、遍历所有列

awk -F , '{ for (i=1; i<=NF; i++) print "第" NR "行," "第" i "列: " $i }' file.txt

          

2、获取每行的列数

# 只输出列数
awk -F , '{print NF}' file.txt# 输出内容
awk -F , '{print "第" NR "行, 共" NF "列: ", $0}' file.txt# 不输出内容
awk -F , '{print "第" NR "行, 共" NF "列"}' file.txt

          

2.7. 忽略大小写

  •  忽略大小写(IGNORECASE=1)
awk 'BEGIN{IGNORECASE=1} /C/' file.txt

          

2.8. 指定分隔符

  • awk 默认分割符为单个或多个空格、以及制表符。

1、使用默认匹配分隔符

awk '{print $1}' file.txt

          

2、指定匹配分隔符

# 方法一:参数 -F
awk -F ',' '{print $1}' file.txt# 方法二:BEGIN
awk 'BEGIN{FS=","} {print $1}' file.txt

          

3、OFS 指定输出分隔符(默认是空格)

awk -F ',' '{OFS="|"; print $1, $2}' file.txt

          

3. 正则表达式

3.1. 模糊匹配

1、匹配以 ab 开头的行

awk /^ab/ file.txt

          

2、匹配以 bc 结尾的行

awk /bc$/ file.txt

          

3.2. 精确匹配

1、只匹配a与c之间拥有一个字符的行

awk /a.c/ file.txt

          

2、匹配a与c之间任意字符的行,不包含ac

awk /a.+c/ file.txt

          

3、匹配a与c之间任意字符的行,包含ac

awk /a*c/ file.txt

          

4、逻辑匹配单个字符,只匹配包含 abc 或 adc 的行

# b和d任取一个都可以
awk '/a(b|d)c/' file.txt

          

5、逻辑匹配多个字符,可匹配:abc、adc、abbc、addc、abbbc...

awk '/a(b|d)+c/' file.txt

          

3.3. 逻辑匹配

or:匹配包含 bd 或 ac 的行

awk '/bd|ac/' file.txt

 

          

and:匹配包含ab且包含c的行

awk '/ab/ && /c/' file.txt

          

not:匹配不包含ab的行

awk '!/ab/' file.txt

          

3.4. 范围匹配

1、匹配方括号中的任一字符

# 匹配任意包含d或e的行
awk /[de]/ file.txt# 匹配除了包含d或e的全部行
awk '!/[de]/' file.txt# 匹配除了abd以外的其他行
awk '/[^abd]/' file.txt

          

2、匹配数字

# 匹配包含数字的行
awk /[0-9]/ file.txt# 匹配不包含数字的行
awk '!/[0-9]/' file.txt

          

3、匹配小写字母

# 匹配包含小写字母的行
awk /[a-z]/ file.txt# 匹配不包含小写字母的行
awk '!/[a-z]/' file.txt

          

4、匹配大写字母

# 匹配包含大写字母的行
awk /[A-Z]/ file.txt# 匹配不包含大字母的行
awk '!/[A-Z]/' file.txt

          

5、组合用法

# 匹配所有包含字母的行(不区分大小写)
awk /[A-Za-z]/ file.txt# 匹配所有包含字母、数字的行
awk /[A-Za-z0-9]/ file.txt

 

          

6、匹配多个相同字符

# 匹配ab,且ab连续的a为2个以上
awk /a{2}b/ file.txt# 匹配ab,且ab连续的b为2个以上
awk /ab{2}/ file.txt

          

7、范围匹配数字、字母

# 匹配连续出现小写字母2次以上的行
awk /[a-z]{2}/ file.txt# 匹配连续出现数字2次以上的行
awk /[0-9]{2}/ file.txt

 

          

4. 控制语句

4.1. 条件判断语句

  • awk '{if (条件判断) <为真> ;else <为假>}'

1、判断数字大小

awk '{if ($1 < 18) print $1 "岁,未成年" ;else print $1 "岁,已成年"}'

          

2、判断第1列的值小于4,或者最后1列等于5

awk '{if ($1 < 4 || $NF == 5) print $0}'

          

3、多分支判断,没有elif,通过else if构造(判断第1列的值为4、6、9)

# vim test.awk
{
if($1==4){print "yes"}
else if($1==6){print "yes"}
else if($1==9){print "yes"}
else{print "no(" $1 ")"}
}

 

          

4、三元表达式

语法

awk '{result = (条件1) ? 结果1 :(条件2) ? 结果2 :(条件3) ? 结果3 :条件以外的结果print result
}' file.txt

案例

# vim test.awk
{
label = ($2 < 60) ? "不及格":($2 < 71) ? "及格":($2 < 85) ? "良好":($2 < 101) ? "优秀":"分数超出范围"
print $1, label
}

          

4.2. 循环控制语句

1、for 循环

  • awk 'BEGIN{for (条件) {循环体代码}}'
# 循环5次
awk 'BEGIN{for (i=1; i<=5; i+=1) {print "循环" i}}'
awk 'BEGIN{for (i=1; i<=5; i+=1) {print "循环" i} print "不在循环体中"}'

          

跳出循环

  • awk 'BEGIN{for (条件) {if (条件) {跳出当前循环}; if (条件) {跳出整个循环}; 循环体代码块}}'
# 如果i=2,跳出当前循环;如果i=6,跳出整个循环
awk 'BEGIN{for (i=1; i<=10; i+=1) {if (i==2) {continue}; if (i==6) {break}; print "循环" i}}'

          

2、while 循环

  • awk 'BEGIN{while (条件) {循环体代码}}'
# 循环5次
awk 'BEGIN{i=1; while (i<=5) {print "循环" i; i+=1}}'
awk 'BEGIN{i=1; while (i<=5) {print "循环" i; i+=1} print "不在循环体中"}'

          

跳出循环

  • awk 'BEGIN{while (循环条件) {if (判断条件) {跳出当前循环}; if (判断条件) {跳出整个循环}; 循环体代码}}'
# 如果i=2,跳出当前循环;如果i=6,跳出整个循环
awk 'BEGIN{i=0; while (i<=10) {i+=1; if (i==2) {continue}; if (i==6) {break}; print "循环" i}}'

          

5. 内置函数方法

5.1. 字符串转换

1、全部转换为大写(toupper)

awk '{print toupper($0)}' file.txt

          

2、全部转换为小写(tolower)

awk '{print tolower($0)}' file.txt

          

3、单词首字母大写

awk '{for(i=1;i<=NF;i++){$i=toupper(substr($i,1,1))tolower(substr($i,2))}print}' file.txt

          

4、浮点数取整(int)

awk '{print int($1)}'

          

5.2. 构造随机数

1、生成0~1的随机数

awk 'BEGIN{srand(); print rand()}'

          

2、生成0~100的随机数

awk 'BEGIN{srand(); print int(rand()*101)}'

          

3、生成100~200的随机数

awk 'BEGIN{srand(); print int(rand()*101) + 100}'

          

4、生成100次500~800的随机数

awk -v num=100 'BEGIN{srand(); for (i=1; i<=num; i+=1) {print int(rand()*301) + 500}}'

          

5、生成6位数随机数

awk 'BEGIN{srand(); printf "%06d\n", int(rand()*1000000)}'

          

6、生成6位随机字符串

awk 'BEGIN{srand(); print rand()}' |md5sum |cut -c 1-6

          

5.3. 生成大数据文件

1、生成1000w行简单数据

# 直接使用for循环1000w次,打印需要输出的内容
awk 'BEGIN { for (i=1; i<=10000000; i++) print "abc" }'

          

2、生成1GB简单数据

# 使用while无限循环,再利用head让其最大输出1GB大小
awk 'BEGIN{w=0; while (w<1) {print "abc"}}' |head -c 1G

          

3、生成复杂数据

BEGIN{ OFS=","; srand(); for (i=1; i<=100; i+=1){col1 = icol2 = "abc"col3 = sprintf("%c", int(rand() * 26) + 97)col4 = int(rand() * 100)col5 = "2000-01-01"print col1, col2, col3, col4, col5}
}
  • 第1列:从1开始叠加
  • 第2列:固定字符"abc"
  • 第3列:一个随机字母
  • 第4列:0~100的随机数
  • 第5列:固定字符"2000-01-01" 

          

5.4. 数学运算

1、求和

awk '{sum += $1} END{print sum}'

          

2、求平均数

awk '{sum += $1} END{print sum/NR}'

          

3、求最大值

# NR==1 表示初始化变量max为第一个数值
awk 'NR==1 {max=$1} $1>max {max=$1} END{print max}'

          

4、求最小值

# NR==1 表示初始化变量min为第一个数值
awk 'NR==1 {min=$1} $1<min {min=$1} END {print min}'

          

5、数学运算

# 第1列的值 + 2(加法)
awk '{print $1 + 2}'# 第1列的值 - 2(减法)
awk '{print $1 - 2}'# 第1列的值 * 2(乘法)
awk '{print $1 * 2}'# 第1列的值 / 2(除法)
awk '{print $1 / 2}'# 第1列的值 ^ 2(幂运算)
awk '{print $1 ^ 2}'# 第1列的值 % 2(取余)
awk '{print $1 % 2}'

          

5.5. BEGIN用法

  • BEGIN 是在处理输入之前执行一次。

1、初始化变量

awk 'BEGIN{OFS=","; a=1; b=2; print a, b}'

          

2、设置分隔符

awk 'BEGIN{FS=","} {print $2}'

          

3、输出表头信息

awk 'BEGIN{print "数字如下:"} {print $0}'

          

4、调用外部命令

awk 'BEGIN{system("echo $RANDOM |md5sum")}'

          

5.6. END用法

  • END 是在处理完所有输入行之后执行一次。

1、输出结束后的字符串

awk '{print $0} END{print "结束后执行"}'

          

2、输出计算完成后的结果

# {sum += $1}是在持续进行,END后面的代码则是所有事情做完后最后执行
awk '{sum += $1} END{print sum}'

          

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

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

相关文章

代码随想录算法训练营之JAVA|第四十一天|139. 单词拆分

今天是第 天刷leetcode&#xff0c;立个flag&#xff0c;打卡60天。 算法挑战链接 139. 单词拆分https://leetcode.cn/problems/word-break/ 第一想法 看完之后完全没有想法。 看完代码随想录之后的想法 这是一个完全背包的问题&#xff0c;使用完全背包的解法。 单词就…

栈和队列(优先级队列)

一)删除字符串中所有相邻字符的重复项 1047. 删除字符串中的所有相邻重复项 - 力扣&#xff08;LeetCode&#xff09; 算法原理:栈结构模拟&#xff0c;只是需要遍历所有字符串中的字符&#xff0c;一次存放到栈里面即可&#xff0c;也是可以使用数组来模拟一个栈结构的: class…

RabbitMQ从原理到实战—基于Golang【万字详解】

文章目录 前言一、MQ是什么&#xff1f;优势劣势 二、MQ的用途1、应用解耦2、异步加速3、削峰填谷4、消息分发 三、RabbitMQ是什么1、AMQP 协议2、RabbitMQ 包含的要素3、RabbitMQ 基础架构 四、实战1、Simple模式(即最简单的收发模式)2、Work Queues 模型3、Publish/Subscribe…

C++贪吃蛇(控制台版)

C自学精简实践教程 目录(必读) 目录 主要考察 需求 输入文件 运行效果 实现思路 枚举类型 enum class 启动代码 输入文件data.txt 的内容 参考答案 学生实现的效果 主要考察 模块划分 文本文件读取 UI与业务分离 控制台交互 数据抽象 需求 用户输入字母表示方…

学习JAVA打卡第四十七天

日期的格式化 程序可能希望按照某种习惯来输出时间。例如时间的顺序&#xff1a;年/月/日或年/月/日/时/分/秒。可以直接使用String类调用format方法对日期进行格式化。 Format方法 Format方法&#xff1a; format&#xff08;格式化模式,日期列表&#xff09; 按照“格式…

T8461 ICS TRIPLEX 通过商业编程工具进行离线编辑

T8461 ICS TRIPLEX 通过商业编程工具进行离线编辑 ICS Triplex isa graf及其日本总经销商Nissin高兴地宣布Almega AX-V6焊接机器人获得成功。由国际公认的弧焊电源和工业机器人供应商OTC DAIHEN Corporation制造的Almega机器人以其高速和平稳运动而闻名&#xff0c;可缩短生产…

NameError: name ‘_mysql‘ is not defined

报错信息 Traceback (most recent call last):File "/Users/xuruilong/Desktop/cmabc_back/.enve/lib/python3.9/site-packages/MySQLdb/__init__.py", line 18, in <module>from . import _mysql ImportError: dlopen(/Users/xuruilong/Desktop/cmabc_back/.…

提高工作效率的一键查询和保存大量快递物流信息的技巧

在如今快速发展的电商行业中&#xff0c;物流服务的准确与便捷是保证顺利交付商品的重要环节。为了方便用户追踪物流&#xff0c;固乔快递查询助手应运而生。这款软件不仅能够快速查询快递单号的物流信息&#xff0c;还具备保存查询结果的功能&#xff0c;方便用户随时查看。 首…

泰迪大数据实训平台产品介绍

大数据产品包括&#xff1a;大数据实训管理平台、大数据开发实训平台、大数据编程实训平台等 大数据实训管理平台 泰迪大数据实训平台从课程管理、资源管理、实训管理等方面出发&#xff0c;主要解决现有实验室无法满足教学需求、传统教学流程和工具低效耗时和内部教学…

【UE5】给模型指定面添加自定义材质

实现步骤 1. 首先我们向UE中导入一个简单的模型&#xff0c;可以看到目前该模型的材质插槽只有一个&#xff0c;当我们修改材质时会使得模型整体的材质全部改变&#xff0c;如果我们只想改变模型的某些面的材质就需要继续做后续操作。 2. 选择建模模式 3. 在模式工具栏中点击…

基于STM32的空气质量检测LCD1602显示报警仿真设计(仿真+程序+讲解)

本设计 基于STM32的空气质量检测报警仿真设计(仿真程序讲解&#xff09; 1.主要功能2.仿真3. 程序4. 资料清单&下载链接 基于STM32的空气质量检测报警仿真设计(仿真程序讲解&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a;C语言 设…

Java虚拟机内部组成

1、栈区 public class Math {public int compute(){//一个方法对应一块栈帧内存区域int a l;int b 2;int c (a b)*10;return c; } public static void main(String[] args){Math math new, Math() ;math.compute() ;System.out.println("test");}} 栈是先进后出…

怎么用postman连接websocket

点击右侧栏的Collections&#xff0c;然后点击旁边的New&#xff0c;然后点击其中的WebSocket Request,然后输入Url&#xff0c;点击Connection&#xff0c;这里需要注意的是Url不能加上http://&#xff0c;因为这个不是http协议。

Springboot 接口方式硬通知实现 动态刷新配置值,@ConfigurationProperties 、@Value 都可以

前言 看到这个文章标题&#xff0c;也许有的看官就觉得很多余&#xff0c; 因为Nacos 可以设置 NacosValue(value "${XXX}",autoRefreshed true) 实现动态刷新&#xff1b; 又因为cloud config的RefreshScope 实现动态刷新&#xff1b; 还有阿波罗...等 这…

进程Start

Linux中的命令解释器和Windows的程序管理器explorer.exe一样地位,都是在用户态下运行的进程 共享变量发生不同进程间的指令交错&#xff0c;就可能会数据出错 进程只作为除CPU之外系统资源的分配单位 CPU的分配单位是线程 每个进程都有自己的独立用户空间 内核空间是OS内核的…

docker-compose管理创建LNMP服务并运行Wordpress网站平台

文章目录 一&#xff0e;项目环境1. 环境描述2.项目需求 二&#xff0e;部署过程1.安装Docker2.安装Docker加速器3.Docker-Compose安装部署4.准备依赖文件、配置nginx5.配置mysql6.配置php7.编写docker-compose.yml8.验证 三.容器快照&#xff0c;然后将Docker镜像打包成tar包备…

springmvc没有绿标,怎么配置tomcat插件运行?

一、添加插件后&#xff0c;刷新&#xff0c;自动从maven仓库下载tomcat插件 二、写好项目后&#xff0c;添加tomcat配置 三、即可点击绿标运行

【广州华锐互动】AR昆虫认知学习系统实现对昆虫形态的捕捉和还原

随着科技的不断发展&#xff0c;人们对自然界的认识也在不断加深。在这个过程中&#xff0c;AR&#xff08;增强现实&#xff09;技术的出现为人们带来了全新的体验方式。为此&#xff0c;广州华锐互动开发了AR昆虫认知学习系统&#xff0c;本文将为大家详细介绍这款系统的特点…

jvm的内存划分区域

jvm划分5个区域&#xff1a; java虚拟机栈、本地方法栈、堆、程序计数器、方法区。 各个区各自的作用&#xff1a; 1.本地方法栈&#xff1a;用于管理本地方法的调用&#xff0c;里面并没有我们写的代码逻辑&#xff0c;其由native修饰&#xff0c;由 C 语言实现。 2.程序计数…

HTML基础--Form表单--内联元素

目录 Form表单 表单元素 创建表单 () 文本输入 () 密码输入 单选按钮 () 和 复选框 () 下拉列表 () 和 选项 ()提交按钮 () 重置按钮 () 块元素与行内元素&#xff08;内联元素&#xff09; Form表单 HTML中的表单&#xff08;<form>&#xff09;是一个重要的元…