Linux基础命令和工具使用详解
Linux基础命令和工具使用详解
- 一、grep搜索字符
- 二、find查找文件
- 三、ls 显示文件
- 四、wc命令计算字数
- 五、uptime机器启动时间+负载
- 六、ulimit用户资源
- 七、curl http
- 八、scp远程拷贝
- 九、dos2unix和unix2dos
- 十、sed 行处理
- 10.1、简单模式
- 10.2、替换模式
- 十一、awk 列处理
- 11.1、打印某几列
- 11.3、判断语句
- 11.4、BEGIN 定义表头
- 11.5、END 添加结尾符
- 11.6、数据计算
- 11.7、使用示例:网络状态统计
一、grep搜索字符
grep 命令用于在文件中执行关键词搜索,并显示匹配的效果。部分常用选项 :
- -c 仅显示找到的行数
- -i 忽略大小写
- -n 显示行号
- -v 反向选择 – 仅列出没有关键词的行。v 是 invert 的缩写。
- -r 递归搜索文件目录
- -C n 打印匹配行的前后n行
(1)在指定文件查找,查找login关键字:
grep battery ./shell/battery.sh
(2)在多个文件搜索的时候,可以使用通配符。比如在以 sh结尾的文件中,搜索包含battery的行:
grep battery *.sh
(3)递归搜索目录下所有文件, 搜索 msg_server目录下所有文件,打印出包含battery的行:
grep battery -r msg_server
(4)反向查找,查找文件中,不包含battery的行:
grep -v battery ImUser.cpp
(5)找出文件中包含 battery 的行,并打印出行号:
grep -n battery ./shell/battery.sh
(6)找出文件中包含 login的行,打印出行号,并显示前后3行。
grep login -C 3 -n test.cpp
(7)找出文件中包含 login的行,打印出行号,并显示前后3行,并忽略大小写:
grep login -n -C 3 -i test.cpp
二、find查找文件
通过文件名查找文件的所在位置,文件名查找支持模糊匹配。
find [指定查找目录] [查找规则] [查找完后执行的action]
常用的操作:
find . -name FILE_NAME
find . -iname FILE_NAME #忽略文件名称大小写
find /etc -maxdepth 1 -name passwd ##查找/etc/下名称中带有passwd的文件,查找一层
find /mnt -size 20K ##查找/mnt文件大小近似20k的文件
find /mnt -size +20K ##查找/mnt文件大小大于20k的文件
find /mnt -size -20K ##查找/mnt文件大小小于20k的文件
find /etc -maxdepth 2 -mindepth 2 -name .conf ##查找/etc/下名称中带有.conf的文件,且只查找第二层
find /mnt -type d ##按type查找/mnt中目录
find /mnt -type f ##按type查找/mnt中文件
find /mnt -cmin 10 ##查找/mnt中十分钟左右修改的
find /mnt -cmin +10 ##查找/mnt中十分钟以上修改的
find /mnt -cmin -10 ##查找/mnt中十分钟以内修改的
find /mnt -ctime 10 ##查找/mnt中十天左右修改的
find /mnt -ctime +10 ##查找/mnt中十天以上修改的
find /mnt -ctime -10 ##查找/mnt中十天以内修改的
三、ls 显示文件
参数 作用
- -t 查看最新修改时间
- -l 每行显示一个条目
- -h 可以结合显示文件的GB,MB等(human);
- -R 递归显示
- -n 显示组id和gid
(1)按最新修改的时间排序,新修改的在前面显示。
ls -lt
(2)按最新修改的时间排序,新修改的在前面显示,并显示子目录的文件信息 。
ls -ltR
(3)以单位显示文件大小。
ls -lh
四、wc命令计算字数
wc命令用于计算字数。 利用wc指令我们可以计算文件的Byte数、字数、或是列数,若不指定文件名称、或是所给予的文件名为"-",则wc指令会从标准输入设备读取数据。
语法:
wc [-clw][--help][--version][文件...]
参数:
- -c或–bytes或–chars:只显示Bytes数。
- -l或–lines:只显示行数。
- -w或–words:只显示字数。
- –help: 在线帮助。
- –version:显示版本信息。
示例:
$ wc ./shell/battery.sh 125 333 3157 ./shell/battery.sh
行数为125、单词数333、字节数3157。
五、uptime机器启动时间+负载
查看机器的启动时间、登录用户、平均负载等情况,通常用于在线上应急或者技术攻关中,确定操作系统的重启时间。
示例:
$ uptime 15:29:42 up 9 days, 5:58, 1 user, load average: 0.00, 0.00, 0.00
从上面的输出可以看到如下信息:
- 当前时间:15:29:42
- 系统已经运行的时间:9天5小时58分钟。
- 前在线用户:1个用户,是总连接数量,不是不同用户数量(开一个终端连接就算一个用户)。
- 系统平均负载:0.00 , 0.00, 0.00,为最近1分钟、5分钟、15分钟的系统负载情况。
系统的平均负载是指在特定的时间间隔内队列中运行的平均进程数。如果一个进程满足以条件,它就会位于运行队列中。
- 它没有在等待I/O操作的结果。
- 它没有主动进入等待状态(也就是没有调用’wait’相关的系统API ) 。
- 没有被停止(例如:等待终止)。
如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能还算可以支持。
如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了。
负载说明(针对单核情况,不是单核时则乘以核数):
- load<1:没有等待
- load==1:系统已无额外的资源跑更多的进程了
- load>1:进程都堵着等待资源
注意:
- load < 0.7时:系统很闲,要考虑多部署一些服务
- 0.7 < load < 1时:系统状态不错
- load == 1时:系统马上要处理不多来了,赶紧找一下原因
- load > 5时:系统已经非常繁忙了
不同load值说明的问题:
- 1分钟 load >5,5分钟 load < 3,15分钟 load <1 ,短期内繁忙,中长期空闲,初步判断是一个抖动或者是拥塞前兆 。
- 1分钟 load >5,5分钟 load >3,15分钟 load <1 ,短期内繁忙,中期内紧张,很可能是一个拥塞的开始。
- 1分钟 load >5,5分钟 load >5,15分钟 load >5 ,短中长期都繁忙,系统正在拥塞 。
- 1分钟 load <1,5分钟Load >3,15分钟 load >5 ,短期内空闲,中长期繁忙,不用紧张,系统拥塞正在好转。
补充:
- 查看cpu信息:cat /proc/cpuinfo 。
- 直接获取cpu核数:grep ‘model name’ /proc/cpuinfo | wc -l 。
六、ulimit用户资源
Linux系统对每个登录的用户都限制其最大进程数和打开的最大文件句柄数。为了提高性能,可以根据硬件资源的具体情况设置各个用户的最大进程数和打开的最大文件句柄数。
(1)可以用ulimit -a来显示当前的各种系统对用户使用资源的限制:
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31574
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1048576
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31574
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
(2)设置用户的最大进程数:
ulimit -u 1024
(3)设置用户可以打开的最大文件句柄数:
ulimit -n 65530
七、curl http
由于当前的线上服务较多地使用了RESTful风格的API,所以集成测试就需要进行HTTP调用,查看返回的结果是否符合预期,curl命令当然是首选的测试方法。
使用方式:
curl -i "http://www.sina.com" # 打印请求响应头信息
curl -I "http://www.sina.com" # 仅返回http头
curl -v "http://www.sina.com" # 打印更多的调试信息
curl -verbose "http://www.sina.com" # 打印更多的调试信息
curl -d 'abc=def' "http://www.sina.com" # 使用post方法提交http请求
curl -sw '%{http_code}' "http://www.sina.com" # 打印http响应码
八、scp远程拷贝
secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令。
scp命令是Linux系统中功能强大的文件传输命令,可以实现从本地到远程,以及从远程到本地的双向文件传输,用起来非常方便,常用来在线上定位问题时将线上的一些文件下载到本地进行详查,或者将本地的修改上传到服务器上。
语法:
scp [option] username@IP:filepath savepath
前提:
sudo apt-get install openssh-server
使用方式:
# 下载192.168.11.59的文件
scp fly@192.168.11.59:~/workspace/battery.sh .
# 上传文件到122.152.222.180
scp mi9.aac fly@192.168.11.59:~/workspace/
# 下载test整个目录到本地
scp -r fly@192.168.11.59:~/workspace/ .
# 上传本地test整个目录到192.168.11.59
scp -r test fly@192.168.11.59:~/workspace/
九、dos2unix和unix2dos
用于转换Windows和UNIX的换行符,通常在Windows系统开发的脚本和配置,UNIX系统下都需要转换。
使用方式:
dos2unix test.txt
unix2dos test.txt
#转换整个目录
find . -type f -exec dos2unix {} \;
find ./ -type f # 此命令是显示当前目录下所有的文件
十、sed 行处理
命令格式1:
sed 's/原字符串/新字符串/' 文件
命令格式2:
sed 's/原字符串/新字符串/g' 文件
这两种命令格式的区别在于是否有个“g”。没有“g”表示只替换第一个匹配到的字符串,有“g”表示替换所有能匹配到的字符串,“g”可以认为是“global”(全局的)的缩写,没有“全局的”结尾就不要替换全部。
sed命令是用来批量修改文本内容的,比如批量替换配置中的某个ip。
sed命令在处理时,会先读取一行,把当前处理的行存储在临时缓冲区中,处理完缓冲区中的内容后,打印到屏幕上。然后再读入下一行,执行下一个循环。不断的重复,直到文件末尾。
10.1、简单模式
一个简单的sed命令包含三个主要部分: 参数 、 范围 、 操作 。要操作的文件,可以直接挂在命令行的最后。
sed -n '2,5 p' filename.txt
# -n是参数
# 2,5 是范围
# p 是操作
# filename.txt是文件
(1)参数 :
-n 这个参数是 --quiet 或者 --silent 的意思。表明忽略执行过程的输出,只输出我们的结果即可。
还有另外一个参数 : -i 。使用此参数后,所有改动将在原文件上执行。你的输出将覆盖原文件。非常危险,一定要注意。
(2)范围:
2,5 表示找到文件中,2,3,4,5行的内容。
这个范围的指定很有灵性,比如:
5 选择第5行。2,5 选择2到5行,共4行。1~ 2 选择奇数行,2~2 选择偶数行。
范围的选择还可以使用正则匹配。比如:
/void/,+3 选择出现void字样的行,以及后面的三行。2^void/,/mem/选择以void开头的行,和出现mem字样行之间的数据。
例子:
sed -n '5p' sed1.cpp
sed -n '2,5 p' sed1.cpp
sed -n '1~2 p' sed1.cpp
sed -n '2~2 p' sed1.cpp
sed -n '2,+3p' sed1.cpp
sed -n '2,$ p' sed1.cpp
sed -n '/void/,+3 p' sed1.cpp
sed -n '/^void/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp
sed -n '/^BroadcastPdu/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp
sed -n '/^void CImUserManager::BroadcastPdu/,/CLIENT_TYPE_FLAG_BOTH/p' sed1.cpp
(3)操作 :
最常用的操作就是 p ,意思就是打印。比如,以下两个命令就是等同的:
cat file
sed -n 'p' file
除了打印,还有以下操作:
- p 对匹配内容进行打印。
- d 对匹配内容进行删除。这个时候就要去掉 -n 参数了,思考为什么?
- w 将匹配内容写入到其他地方。
- a , i , c 等操作虽基本但使用少,不做介绍。
sed -n '2,5 p' sed2.cpp
sed '2,5 d' sed2.cpp
sed -n '2,5 w output.txt' sed2.cpp
10.2、替换模式
sed还有一个强大的替换模式,意思就是查找替换其中的某些值,并输出结果。
使用替换模式很少使用 -n 参数。
sed '/^sys/S/a/b/g' filename
替换模式的参数有点多,但第一部分和第五部分都是可以省略的。替换后会将整个文本输出出来。前半部分用来匹配一些范围,而后半部分执行替换的动作。
(1)范围 :
这个范围和上面的范围语法类似。比如:
/sys/,+3 选择出现sys字样的行,以及后面的三行。/^sys/,/mem/ 选择以sys开头的行,和出现mem字样行之间的数据。
示例:
sed -n '/void/,+3 s/void/int/g' sed2.cpp
sed '/^void/,/CLIENT_TYPE_FLAG_BOTH/s/ImUser/User/g' sed2.cpp
(2)命令 :
这里的命令是指s。也就是substitute的意思。 查找部分会找到要被替换的字符串。这部分可以接受纯粹的字符串,也可以接受正则表达式。比如:
a 查找范围行中的字符串 a。[a,b,c] 从范围行里查找字符串a或者b或者c。
示例:
sed 's/a/b/g' file
sed 's/[a,b,c]/<&>/g' file
(3)替换 :
将替换查找匹配部分找到的内容。 可惜的是,这部分不能使用正则。常用的就是精确替换。比如把a替换成b。
但也有高级功能。和java或者python的正则api类似,sed的替换同样有 Matched Pattern 的含义,同样可以得到Group,不深究。常用的替位符,就是 &,当它用在替换字符串中的时候,代表的是原始的查找匹配数据。
[&] 表明将查找到的数据使用[]包围起来。“&” 表明将查找的数据使用””包围起来。
下面这条命令,将会把文件中的每一行,使用引号包围起来。
sed 's/.*/"&"/' file
(4)flag 参数 :
这些参数可以单个使用,也可以使用多个,仅介绍最常用的。
- g 默认只匹配行中第一次出现的内容,加上g,就可以全文替换了。常用。
- p 当使用了 -n 参数, p 将仅输出匹配行内容。
- w 和上面的w模式类似,但是它仅仅输出有变换的行。
- i 这个参数比较重要,表示忽略大小写。e 表示将输出的每一行,执行一个命令。不建议使用,可以使用xargs配合 完成这种功能。
看两个命令的语法:
sed -n 's/a/b/gipw output.txt' file
sed 's/^/ls -la/e' file
十一、awk 列处理
awk同sed命令类似,只不过sed擅长取行,awk命令擅长取列。
原理:一般是遍历一个文件中的每一行,然后分别对文件的每一行进行处理
用法:
awk [可选的命令行选项] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名

11.1、打印某几列
比如:
$ echo 'I do that' | awk '{print $3 $2 $1}'
thatdoI
将字符串 I do that 通过管道传递给awk命令,相当于awk处理一个文件,该文件的内容就是I do that,默认通过空格作为分隔符(不管列之间有多少个空格都将当作一个空格处理) I do that就分割成三列了。假如分割符号为.,可以这样用:
$ echo '192.168.1.1' | awk -F "." '{print $2}'
168
11.2、条件过滤
awk的用法是这样的:
awk [可选的命令行选项] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名
那么pattern部分怎么用呢?示例如下:
$ cat score.txt
tom 60 60 60
kitty 90 95 87
jack 72 84 99
$ awk '$2>=90{print $0}' score.txt
kitty 90 95 87
$2>=90 表示如果当前行的第2列的值大于90则处理当前行,否则不处理。说白了pattern部分是用来从文件中筛选出需要处理的行进行处理的,这部分是空的代表全部处理。pattern部分可以是任何条件表达式的判断结果,例如>,<,==,>=,<=,!=同时还可以使用+,-,*,/运算与条件表达式相结合的复合表达式,逻辑 &&,||,!同样也可以使用进来。另外pattern部分还可以使用 /正则/ 选择需要处理的行。
11.3、判断语句
判断语句是写在pattern{ 命令 }命令中的,他具备条件过滤一样的作用,同时他也可以让输出更丰富。
$ awk '{if($2>=90 )print $0}' score.txt
kitty 90 95 87
$ awk '{if($2>=90 )print $1,"优秀"; else print $1,"良好"}' score.txt
tom 良好
kitty 优秀
jack 良好
$ awk '{if($2>=90 )print $0,"优秀"; else print $1,"良好"}' score.txt
tom 良好
kitty 90 95 87 优秀
jack 良好
11.4、BEGIN 定义表头
awk [可选的命令行选项] 'BEGIN{命令 } pattern{ 命令 } END{ 命令 }' 文件名
示例:
$ awk 'BEGIN{print "姓名 语文 数学 英语"}{printf "%-8s%-5d%-5d%-5d\n",$1,$2,$3,$4}' score.txt
姓名 语文数学英语
tom 60 60 60
kitty 90 95 87
jack 72 84 99
要注意,例子中为了输出格式好看,做了左对齐的操作(%-8s左对齐,宽8位),printf用法和c++类似。不仅可以用来定义表头,还可以做一些变量初始化的工作,例如:
$ awk 'BEGIN{OFMT="%.2f";print 1.2567,12E-2}'
1.26 0.12
这里OFMT是个内置变量,初始化数字输出格式,保留小数点后两位。
11.5、END 添加结尾符
和BEGIN用法类似
$ echo ok | awk '{print $1}END{print "end"}'
ok
end
11.6、数据计算
$ awk 'BEGIN{print "姓名 语文 数学 英语 总成绩"; \
sum1=0;sum2=0;sum3=0;sumall=0} \
{printf "%5s%5d%5d%5d%5d\n",$1,$2,$3,$4,$2+$3+$4;\
sum1+=$2;sum2+=$3;sum3+=$4;sumall+=$2+$3+$4}\
END{printf "%5s%5d%5d%5d%5d\n","总成绩",sum1,sum2,sum3,sumall}'\score.txt
姓名 语文 数学 英语 总成绩tom 60 60 60 180
kitty 90 95 87 272jack 72 84 99 255
总成绩 222 239 246 707
因为命令太长,末尾用\符号换行。
- BEGIN体里输出表头,并给四个变量初始化0。
- pattern体里输出每一行,并累加运算。
- END体里输出总统计结果 当然了,一个正常人在用linux命令的时候是不会输入那么多格式化符号来对齐的,所以新命令又来了 column -t。
11.7、使用示例:网络状态统计
采用awk统计netstat命令的一些网络状态,来看一下awk语言的基本要素。netstat命令的执行后显示的结果在第6列标明了网络连接所处于的网络状态。awk命令看一下统计结果。
netstat -ant |
awk ' \BEGIN{print "State","Count" } \/^tcp/ \{ rt[$6]++ } \END{ for(i in rt){print i,rt[i]} }'
netstat -ant |
awk ' \BEGIN{print "State","Count" } \/^tcp/ \{ if($4=="0.0.0.0:3306" ) rt[$6]++ } \END{ for(i in rt){print i,rt[i]} }'
输出结果:
State Count
LAST_ACK 1
LISTEN 64
CLOSE_WAIT 43
ESTABLISHED 719
SYN_SENT 5
TIME_WAIT 146
awk和通常的程序不太一样,它分为四个部分:
- BEGIN 开头部分,可选的。用来设置一些参数,输出一些表头,定义一些变量等。上面的命令仅打印了一行信息而已。
- END 结尾部分,可选的。用来计算一些汇总逻辑,或者输出这些内容。上面的命令,使用简单的for循环,输出了数组rt中的内容。
- Pattern 匹配部分,依然可选。用来匹配一些需要处理的行。上面的命令,只匹配tcp开头的行,其他的不进入处理。
- Action 模块。主要逻辑体,按行处理,统计打印,都可以。
注意:
- awk的主程序部分使用单引号‘包围,而不能是双引号。
- awk的列开始的index是0,而不是1。
更多的详细内容

相关文章:
Linux基础命令和工具使用详解
Linux基础命令和工具使用详解一、grep搜索字符二、find查找文件三、ls 显示文件四、wc命令计算字数五、uptime机器启动时间负载六、ulimit用户资源七、curl http八、scp远程拷贝九、dos2unix和unix2dos十、sed 行处理10.1、简单模式10.2、替换模式十一、awk 列处理11.1、打印某…...
一个好的python文件可以有几种用途?
大家好鸭!我是小熊猫~ 这次来带大家浅浅回顾一点python小知识~ 源码资料电子书:点击此处跳转文末名片获取 python文件总共有两种用途: 一种是执行文件另一种是被当做模块导入 编写好的一个python文件可以有两种用途: 1. 脚本,…...
HDFS优化
单节点多块磁盘数据均衡 生成HDFS块均衡计划 hdfs diskbalancer -plan node1 执行均衡计划,node1.plan.json均衡计划文件 hdfs diskbalancer -execute node1.plan.json 查看当前均衡任务的执行情况 hdfs diskbalancer -query node1 取消均衡任务hdfs diskbalancer -cancel nod…...
行测-判断推理-图形推理-样式规律-黑白运算
黑白元素个数不同,优先考虑黑白运算白白白黑黑白黑白黑选A考试时,这种题不要先把规律全部推出来,再去做题,太慢了直接看要推的图,通过排除法选答案黑白元素个数不同,优先考虑黑白运算白白白黑黑白黑白黑选B…...
java+springboot+vue高校学生医疗保险管理系统
医保管理系统是对与职工健康息息相关的档案进行的系统化、自动化的管理,主要是对职工办理的医疗保险的管理,本系统能够很好的适应社会的需求,最大化的为城镇职工提供服务。医疗保险是国家社会保障体系的重要组成部分,也是社会保险…...
[已解决] AHK 映射 ESC 延迟 500 ms 的严重问题
问题描述 今天发现一个重大bug,我竟然用了一年多都不知道! CapsLock::Esc 我的 ahk 脚本将 capslock 映射为 esc,但这在vim环境中,估算响应 500ms。 也就说按下 caps 键,还要等一会,才进入normal模式 如果…...
QML state详解
1.state简介 changes(list<Change>):保存当前State下的多个Change对象,比如PropertyChanges、StateChangeScript、ParentChange等。 extend(string):表示该状态要在哪个State的基础上进行扩展,当一个…...
一起Talk Android吧(第五百零六回:如何调整组件在约束布局中的角度)
文章目录背景介绍相关属性使用方法示例程序各位看官们大家好,上一回中咱们说的例子是"如何调整组件在约束布局中的大小",这一回中咱们说的例子是"如何调整组件在约束布局中的角度"。闲话休提,言归正转, 让我们一起Talk A…...
微信投票-课后程序(JAVA基础案例教程-黑马程序员编著-第七章-课后作业)
【实验7-5】 微信投票 【任务介绍】 1.任务描述 如今微信聊天已经普及到几乎每一个人,在聊天中,经常会有人需要帮忙在某个APP中投票。本案例要求编写一个模拟微信投票的程序,通过在控制台输入指令,实现添加候选人、查看当前投票…...
duboo+zookeeper分布式架构入门
分布式 dubbo Zookeeper 分布式系统就是若干独立计算机的集合(并且这些计算机之间相互有关联,就像是一台计算机中的C盘F盘等),这些计算对于用户来说就是一个独立的系统。 zookeeper安装 下载地址:Index of /dist/z…...
黑盒测试用例设计方法-等价类划分法
目录 一、等价类的作用 二、等价类的分类 三、等价类的方法 四、等价类的原则 五、按照测试用例的完整性划分等价类 六、等价类步骤 七、案例 一、等价类的作用 为穷举测试设计测试点。 穷举:列出所有的可能情况,对其一一判断。 测试点&#x…...
4.OCR文本识别Connectionist Temporal Classification(CTC)算法
文章目录1.基础介绍2.Connectionist Temporal Classification(CTC)算法2.1 什么是Temporal Classification2.2 CTC问题描述2.2关于对齐2.3 前向后向算法2.4 推理时3.pytorch中的CTCLOSS参考资料欢迎访问个人网络日志🌹🌹知行空间🌹dz…...
误删了Ubuntu/Linux的一些默认用户目录怎么办?
用户目录:指位于 $HOME 下的一系列常用目录,例如 Documents,Downloads,Music,还有 Desktop等。本文不是讲如何恢复原有目录及其重要文件,适用于仅恢复目录功能一:仅恢复个别目录如误删了Desktop…...
ArXiv简介以及论文提交
arXiv网站简介 arXiv是一个收集物理学、数学、计算机科学、生物学与数理经济学的论文预印本的网站。其中arXiv发音同“archive”,因为“X”代表希腊字母 ,国际音标为[kai]。它于1991年8月14日成立,现由美国康奈尔大学维护。 ——维基百科 对…...
pytorch学习
目录如下: pytorch常用操作 pytorch 常用操作 pytorch 的 detach()函数 1. 什么是detach()函数 我们在将输出特征矩阵进行存储的时候,经常需要将torch.Tensor类型的数据转换成别的如numpy类型的数据,但是Tensor类型的数据是会自动计算梯度…...
【OC】块初识
Block简介 Blocks是C语言的扩充功能。可以用一句话来表示Blocks的扩充功能:带有自动变量的匿名函数。 匿名函数 所谓匿名函数就是不带有名称的函数。C语言的标准不允许存在这样的函数。例: int func(int count);它声明了名称为func的函数。下面的源代…...
3-2 创建一个至少有两个PV组成的大小为20G的名为testvg的VG
文章目录1. 在vmware添加多块20G的硬盘,并创建分区2. 创建一个至少有两个PV组成的大小为20G的名为testvg的VG,要求PE大小为16M,而后在卷组中创建大小为5G的逻辑卷testlv;挂载至/users目录3. 新建用户archlinux,要求其家目录为/users/archlinu…...
【密码学】 一篇文章讲透数字证书
【密码学】 一篇文章讲透数字证书 数字证书介绍 数字证书是一种用于认证网络通信中参与者身份和加密通信的证书,人们可以在网上用它来识别对方的身份。 我们在上一篇博客中介绍了数字签名的作用和原理,数字签名可以防止消息被否认。有了公钥算法和数字签…...
Linux 操作系统原理 — 内存管理 — 虚拟地址空间(x86 64bit 系统)
目录 文章目录目录虚拟地址格式与内核页表(四级页表)虚拟地址格式与内核页表(四级页表) 在 x86 64bit 系统中,可以描述的最长地址空间为 2^64(16EB),远远超过了目前主流内存卡的规格…...
C语言深入知识——(2)指针的深入理解
1、字符指针 (1)字符指针的普通用法 char a A; char* pa &a;但是一般来说字符指针很少这么用……更多是拿来存储一个字符串 (2)字符串的两种存储以及区别 现在有了两种存储数组的方法 ①一个是使用char类型数组存储②另外…...
装饰模式(Decorator Pattern)重构java邮件发奖系统实战
前言 现在我们有个如下的需求,设计一个邮件发奖的小系统, 需求 1.数据验证 → 2. 敏感信息加密 → 3. 日志记录 → 4. 实际发送邮件 装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
python打卡day49
知识点回顾: 通道注意力模块复习空间注意力模块CBAM的定义 作业:尝试对今天的模型检查参数数目,并用tensorboard查看训练过程 import torch import torch.nn as nn# 定义通道注意力 class ChannelAttention(nn.Module):def __init__(self,…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
全面解析各类VPN技术:GRE、IPsec、L2TP、SSL与MPLS VPN对比
目录 引言 VPN技术概述 GRE VPN 3.1 GRE封装结构 3.2 GRE的应用场景 GRE over IPsec 4.1 GRE over IPsec封装结构 4.2 为什么使用GRE over IPsec? IPsec VPN 5.1 IPsec传输模式(Transport Mode) 5.2 IPsec隧道模式(Tunne…...
python报错No module named ‘tensorflow.keras‘
是由于不同版本的tensorflow下的keras所在的路径不同,结合所安装的tensorflow的目录结构修改from语句即可。 原语句: from tensorflow.keras.layers import Conv1D, MaxPooling1D, LSTM, Dense 修改后: from tensorflow.python.keras.lay…...
中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...
论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing
Muffin 论文 现有方法 CRADLE 和 LEMON,依赖模型推理阶段输出进行差分测试,但在训练阶段是不可行的,因为训练阶段直到最后才有固定输出,中间过程是不断变化的。API 库覆盖低,因为各个 API 都是在各种具体场景下使用。…...
