Linux期末复习笔记
一、管理文件系统
1、文件系统类型
- ext2:早期Linux中常用的文件类型。
- ext3:ext2的升级版,带日志功能。
- RAMFS:内存文件系统,速度很快。
- NFS:网络文件系统,由SUM发明,主要用于远程文件共享
- PROC:虚拟的进程文件。
- ISO9660:大部分光盘所采用的文件系统。
2、Linux文件系统的目录结构
/ | 根目录,整个文件系统的根目录 |
/dev | 存放Linux系统下的设备文件 |
/etc | 存放系统的配置文件 |
/home | 系统默认的用户主目录 |
/root | 超级权限用户的root目录 |
/opt | 自定义软件包 |
3、硬链接和软链接
- 硬链接:即便原始文件被删除,依然可以通过硬链接文件来访问。
- 软链接:当原始文件被删除后,链接文件也将失效。
4、命令
1、工作目录切换类:
- pwd [目录名称] :显示或查看当前所在的目录路径。
- cd [目录名称]:切换工作目录。
- cd-:返回上一次所处的目录
- cd..:进入上级目录
- cd~:切换到当前用户的家目录
- ls [选项] [文件]:
- ls ./:查看当前目录的所有文件和目录,可省略./
- ls -l:查看当前目录所有的文件和目录的详细信息
- ls -a:查看文件的属性、大小等详细信息。
2、文本文件查看类:
- cat [选项] [文件]:查看纯文本文件(内容较少的)
- cat -n [文件]:显示行号
- more [选项] [文件]:查看纯文本文件(内容较多的),空格键向下翻页或回车键向下翻行,只能向前浏览,按q退出more程序。
- less [选项] [文件]:查看纯文本文件(内容较多的),允许向前向后浏览文件,PageUP或b键向上翻页,用PageDown或空格向下翻页。按q键可退出。
- head [选项] [文件]:查看纯文本文档前面部分的内容。
- head -n 20 [文件]:查看纯文本中前20行的内容。
- tail [选项] [文件]:查纯文本中后面部分或持续刷新内容。
- tail -n 20:查看文本内容的最后20行。
- tail -f 文件名:可以实时查看最新日志文件的效果。
- wc [参数] [文件]:统计指定文本的行数、字数、字节数。
-l 只显示行数 -w 只显示单词数 -c 只显示字节数
3、目录操作类:
- mkdir [选项] [目录]:创建空白的目录
- mkdir -p a/b/c/d:创建具有嵌套的文件目录。
- rmdir [选项] [目录]:删除空白目录
- 可以结合-p删除具有嵌套叠层关系的文件目录。
4、文件操作类:
- touch [选项] [文件]:创建空文件或设置文件的时间。
-a 仅修改“读取时间”(atime) -m 仅修改“修改时间”(mtime) -d 同时修改atime与mtime - cp [选项] [源文件] [目标文件]:复制文件或目录。
- 如果目标文件是目录,则会把源文件复制到该目录中。
- 如果目标文件是存在的普通文件,则会询问是否要覆盖它。
- 如果目标文件不存在,则执行正常的复制操作。
-p 保留原始文件的属性 -d 若对象为“链接文件”,则保留其属性 -r 递归持续复制(用于目录) -i 若目标文件存在则询问是否覆盖 -f,--force 强行复制文件或目录,不论目标文件或目录是否已存在 -a 相当于-pdr
- mv [选项] [源文件] [目标路径] [目标文件名]:剪切文件或将文件重命名
- rm [选项] [文件]:删除文件或目录。
- rm -f:强制删除。
- rm -r:删除一个目录。
- diff [参数] [文件]:比较多个文本文件的差异。
- diff --brief:判断文件是否相同。
- diff -c:描述出文件内容具体的不同。
- dd [参数]:按照指定大小和个数的数据块来复制文件或转换文件
if 输入的文件名称 of 输出的文件名称 bs 设置每个“块”的大小 count 设置要复制“快”的个数 - ln [选项] 目标:创建链接文件。
-s 创建“符号链接”(如果不带-s参数,则默认创建硬链接) -f 强制创建文件或目录的链接 -i 覆盖前先询问 -v 显示创建链接的过程
5、压缩解压命令:
- tar [选项] [文件]:建立,还原备份文件。
-c 创建新的文档 -v 显示详细的tar处理的文件信息 -f 要操作的文件名,切记,这个参数是最后一个参数 -x 解压 -t 查看内容 -z 有gzip属性的 -j 有bz2属性的 -r 表示增加文件,把要增加的文件追加在压缩文件的末尾 - gzip [参数] [文件]:文件压缩工具。
- gzip -c能指定输出并保留源文件。
- gunzip [参数] [文件]:解压缩gzip格式的文件。(会删除源文件)
-l 创建新的文档 -d 指定文件解压缩后要存储的目录 -f 要操作的文件名,切记,这是最后一个参数 - zip [参数] [打包后的文件名] [打包的文件路径]:压缩文件,适用于压缩多个文件的格式
-r 递归压缩子目录下的所有文件,不然只压出来一个空目录 -y 保持符号链接,而不用把符号链接指向的文件也压进来 -f 要操作的文件名,这是最后一个参数 - unzip [参数] [文件名.zip]:解压缩zip文件。
-l 创建新的文档 -d 指定文件解压缩后所要存储的目录 -f 要操作的文件名,这是最后一个参数
6、查找类命令:
- which [参数] [命令名称]:查找系统PATH目录下的可执行文件命令所在的位置。
- whereis [参数] [命令名称]:寻找二进制程序、源代码文件和man手册等相关文件的路径。
- locate [参数] [文件名.zip]:查找文件或目录。
- find [查找路径] [寻找条件操作]:按指定条件来寻找文件。
-name 匹配名称 -perm 匹配权限(mode为完全匹配,-mode为包含即可) -user 匹配所有者 -group 匹配所有组 -mtime-n+n 匹配修改内容的时间(-n指n天以内,+n指n天以前) -atime-n+n 匹配访问文件的时间(-n指n天以内,+n指n天以前) -ctime-n+n 匹配修改文件权限的时间(-n指n天以内,+n指n天以前) -nouser 匹配无所有者的文件 -nogroup 匹配无所有组的文件 -newer f1 ! f2 匹配比文件f1新但比f2旧的文件 --type b/d/c/p/l/f 匹配文件类型(后面字母依次表示设备、目录、字符设备、管道、链接文件、普通文件) -size 匹配文件的大小(+50为查找超过50KB的文件) -prune 忽略某个目录 -exec...{}\; 后面可跟用于进一步处理搜索结果的命令
7、修改文件权限命令:
- chmod [选项] [模式,模式] [文件]:修改文件或目录的权限。
- 数字法:将读取(r)、写入(w)、执行(x)分别以4、2、1来表示。
- 文字法:
- u:user,表示所有者。
- g:group,表示属组。
- o:other,表示其他用户。
- a:all,表示以上三种用户。
- r:read,可读。
- w:write,写入。
- x:execute,执行。
8、文件的隐藏属性
- chattr [参数] [文件]:设置文件的隐藏权限。用+-某个功能。
- lsattr [参数] [文件]:显示文件的隐藏权限。lsattr -al
二、shell与文本处理
1、Vim编辑器
dd | 删除(剪切)光标所在整行 |
5dd | 删除(剪切)从光标开始的5行 |
yy | 复制光标所在整行 |
5yy | 复制从光标处开始的5行 |
n | 显示搜索命令定位到的下一个字符串 |
N | 显示搜索命令定位到的上一个字符串 |
u | 撤销上一步的操作 |
p | 将之前删除(dd)或复制(yy)过的数据粘贴到光标后面 |
:w | 保存 |
:q | 退出 |
:q! | 强制退出(放弃对文档的修改) |
:wq! | 强制保存退出 |
:set nu | 显示行号 |
:set nonu | 不显示行号 |
:命令 | 执行该命令 |
:整数 | 跳转到该行 |
2、通配符
用于匹配文件名,通常包含四种“*,?,[],{}”。
* | 匹配0或多个字符 | a*b:a与b之间可以有任意长度的任意字符,也可以无。如aabcd、a012b、ab。 |
? | 匹配任意一个字符 | a?b:a与b之间必须也只能有一个字符,可以是任意字符,如aab、abb、a0b。 |
[list] | 匹配list中的任意单一字符 | a[xyz]b:a与b之间必须也只能有一个字符,只能是x或y或z,如axb、ayb,azb。 |
[! list] 或 [^list] | 匹配除list中的任意单一字符 | 同上,不能是x或y或z。 |
[c1-c2] | 匹配c1-c2中的任意单一字符,如[0-9] | |
[! c1-c2]或[^c1-c2] | 与上相反 | |
{string1,string2,...} | 匹配string1或string2其单一字符 |
3、基本正则表达式
^ | 匹配以...开头的行 | ^ab匹配以ab开头的行 |
$ | 匹配以...结尾的行 | ab$匹配以ab结尾的行 |
^$ | 匹配空行 | ^$匹配空行,不匹配空格 |
. | 匹配任意单个字符 | ab.匹配abc或abb等,不匹配abcd,包括空格 |
\ | 转义符,将特殊字符符号进行转义 | a\.b匹配a.b。不匹配ajb |
* | 匹配前面项0次或多次 | ab*匹配a或ab或abbb |
. * | 匹配任意字符 | ab.*匹配ab或abc或abcd,包含空行 |
4、重定向与管道命令
- 标准输入:stdin,由0表示,默认接收来自键盘的输入。
- 标准输出:stdout,由1表示,默认输出到终端窗口。
- 标准错误:stderr,由2表示,默认输出到终端窗口。
- 管道命令:“|”:把前一个命令原本要输出到屏幕的标准正常数据当做是后一个命令的标准输入
三、管理Linux服务器的用户组群及特殊权限
- 管理员UID为0:系统的管理员用户。
- 系统用户UID为1~999:默认服务器程序会有独立的系统用户负责运行。
- 普通用户UID从1000开始:由管理员创建的普通用户的UID默认是从1000开始的。
1、用户账户文件
- /etc/passwd:例子:bin:x:2:2:bin:/bin:/bin/sh,共有七个域:
- 账号名称
- 口令
- UID
- GID
- 用户信息说明栏
- 家目录
- shell
- etc/shadow:了解不同账号的权限。例子:bin:*:14126:0:99999:7:::,有九个字段:
- 账号名称
- 口令
- 最近更改口令的日期(14126)
- 口令不可被更动的天数
- 口令需要重新变更的天数(与第三字段相比)
- 口令需要变更期限前的警告天数(与第五段相比)
- 口令过期后的账号宽限时间(口令失效日)
- 账号失效日期
- 保留
2、用户组文件
- /etc/group:记录GID与组名的对应关系。例:root:x:0:,有四栏:
- 组名
- 群组口令
- GID
- 此群组支持的账号名称
- /etc/gshadow:是上面的加密资讯文件,比如用户组(Group)管理员密码就是存放在这个文件中。
3、命令
1、用户账号的创建和管理
- su:切换用户
- useradd [选项] [用户名]
-d 指定用户的家目录(默认/home/username) -e 账户的到期时间,格式为YYYY-MM-DD -u 指定该用户的默认UID -g 指定一个初始的用户基本组 -G 指定一个或多个扩展用户组 -N 不创建于用户名同名的基本用户组 - passwd [选项] [用户名]:设置用户口令。
-l 锁定用户,禁止其登录 -u 解除锁定,允许用户登录 -d 使该用户可用空密码登录 -e 强制用户在下次登录时修改密码 - username [选项] [用户名]:修改用户的属性。
-f 强制删除用户 -r 同时删除用户及用户家目录
2、组群管理
- groupadd或addgroup [选项] 组群名:创建组群
- groupmod [选项] 组名:修改组群
-g gid 把组群的GID改成gid -n group -name 把组群的名称改为group -name - groupdel [选项] 组名:删除组群。
gpasswd [选项] [用户] [组]:为组群添加用户。
-a | 把用户加入组 |
-d | 把用户从组中删除 |
-r | 取消组的密码 |
-A | 给组指派管理员 |
四、管理磁盘
1、物理设备的命名规范
IDE设备 | /dev/hd[a-d] |
SCSI/SATA/U盘 | /dev/sd/[a-p] |
软驱 | /dev/fd/[0-1] |
打印机 | /dev/lp[0-15] |
光驱 | /dev/cdrom |
鼠标 | /dev/mouse |
磁带机 | /dev/st0或/dev/ht0 |
2、磁盘分区-fdisk
- fdisk [磁盘名称]:管理磁盘分区。
p 查看分区信息 n 添加新的分区 w 保存并退出
步骤:管理/dev/sdb硬盘设备
- 输入命令:fdisk /dev/sdb
- 输入p查看硬盘设备内已有的分区信息
- 输入n添加新的分区,系统会要求选择输入p创建主分区或e创建扩展分区,这里用p。
- 系统要求先输入主分区的编号(1~4)
- 起始扇区默认,Last扇区+2G,即创建容量为2GB的硬盘分区
- 输入p再次查看信息,OK后输入w后回车!
- 使用file /dev/sdb1查看文件的属性,若无,则输入partprobe同步。
3、格式化分区-mkfs(建立文件系统)
分区后还要进行格式化操作。
- mkfs.文件类型名称:例如要格式分区为XFS的文件系统
- mkfs
- mkfs.xfs /dev/sdb1
4、挂载分区
1、mount-手动挂载分区
- mount 文件系统 挂载目录;例如:把设备/dev/sdb1挂载到/newFS目录:
- mkdir /newFS
- mount /dev/sdb1 /newFS
2、/etc/fstab-自动挂载分区
3、umount-撤销挂载分区
5、磁盘列阵管理
例:创建RAID5
1、创建四个磁盘分区
- 使用fdisl命令创建4个磁盘分区/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1
2、使用mdadm命令创建RAID5
- mdadm --create /dev/md0 -l 5 -n 3 -x 1 /dev/sd[b-e]1
- --create代表创建一个RAID阵列卡,设备名称/dev/md0;--lever=5参数代表RAID5方案‘--raid-devices=3参数代表使用3块硬盘来部署这个RAID磁盘列阵;--spare-devices=1参数代表使用1块硬盘空闲作为热备,最后在加上4块硬盘设备就OK了
3、为新建立的/dev/md0建立ext4的文件系统
- mkfs -t ext4 -c /dev/md0
4、查看建立的RAID5的具体情况
- mdadm --detail /dev/md0
5、将RAID设备挂载(将RAID设备挂载到指定目录/RAID中)
- mkdir /RAID
- mount /dev/md0 /RAID
- df -h(显示该设备中的内容)
五、Linux系统监视和进程管理
1、进程
- 进程是具有独立功能的程序的一次运行过程,是系统进行资源分配和调度的基本单位。
- 进程不是程序,但由程序产生。
2、作业
-
正在执行的一个或多个相关进程可形成一个作业。
- 前台作业:运行于前台,用户可对其进行交互操作
- 后台作业:运行于后台,不接收终端的输入,但向终端输出执行结果。
3、进程的状态
- 就绪状态:进程已获得除CPU以外的运行所需要的全部资源
- 运行状态:进程占用CPU正在运行
- 等待状态:进程正在等待某一事件或某一资源
- 挂起状态:正在运行的进程因为某个原因失去CPU而暂时停止运行
- 终止状态:进程已结束
- 休眠状态:进程主动暂时停止运行
- 僵死状态:进程 已停止运行,但是相关控制信息仍保留
4、进程调度
对于偶尔运行的进程,采用at调度或batch调度
对于特定时间重复运行的进程,采用cron调度
- at [选项] [时间]:设置指定时间执行指定的命令。
- batch [选项] [时间]
六、网络配置与网络服务部署
1、NetworkManager
- nmcli是命令行的管理NetworkManager的工具,会自动把配置写到/etc/sysconfig/network-scripts/目录下。
2、网络接口配置文件
在网卡配置文件中,各字段的作用如下:
- DEVICE=name:name是物理设备名。
- IPADDR=addr:addr是IP地址。
- HWADDR=addr:addr是物理地址。
- NETMASK=mask:mask是网络掩码值。
- NETWORK=addr:addr是网络地址
- BROADCAST=addr:addr是广播地址。
- GATEWAY=addr:addr是网关地址。
- ONBOOT=answer:answer是yes(引导时激活设备)/no
3、DHCP服务器
工作原理:
- 客户端主机使用0.0.0.0IP地址和UDP68端口在局域网内发送DHCPDISCOVER广播包(包含了客户端计算机网卡的MAC地址和NetBIOS名称)寻找DHCP服务器。
- DHCP服务器收到DHCPDISCOVER广播包,在局域网中使用UDP67端口,发送DHCPOFFER广播数据包,包含待出租的IP地址及地址租期等。
- 局域网中客户端主机发送DHCPREQUEST广播包(包含选择的DHCP服务器的IP地址),正式向服务器请求租用分配服务器已提供的IP地址。
- DHCP服务器向请求的客户端主机发送DHCPACK单播包,正式确认客户端主机的租用请求。
七、Shell编程
1、求两个数相加,编写add.sh文件
[root@localhost script]# vim add.sh
[root@localhost script]# cat add.sh
#!/bin/bash
#文件名为:add.sh
#版本:v1.1
#功能:求和
VAR=`expr 3 + 6`
echo "两个数相加为:" $VAR
[root@localhost script]# chmod a+x add.sh
[root@localhost script]# . add.sh
两个数相加为: 9
[root@localhost script]#
-
2、算术运算符,进行综合运算
-
算术运算符有以下几个。
- (1)+ 加法。如: `expr $X + $Y`。
- (2)- 减法。如: `expr $X - $Y`。
- (3)* 乘法。如: `expr $X \* $Y`。
- (4)/ 除法。如: `expr $X / $Y`。
- (5)% 取余。如: `expr $X % $Y`。
- (6)= 赋值。如:X=$Y,将把变量Y的值赋给A。
- (7)= = 相等。用于比较两个数字,相同则返回true。
- (8)!= 不相等。用于比较两个数字,不相同则返回true。
[root@localhost script]# vim zhys.sh
[root@localhost script]# cat zhys.sh
#!/bin/bash
#文件名为:zhys.sh
#版本:v1.1
#功能:综合运算
X=100
Y=5
VAR=`expr $X + $Y`
echo "X+Y=$VAR"
VAR=`expr $X - $Y`
echo "X-Y=$VAR"
VAR=`expr $X \* $Y`
echo "X*Y=$VAR"
VAR=`expr $X / $Y`
echo "X/Y=$VAR"
VAR=`expr $X + $Y`
if [ $X == $Y ]; thenecho "X等于Y"
fi
if [ $X != $Y ]; thenecho "X不等于Y"
fi
[root@localhost script]# . zhys.sh
X+Y=105
X-Y=95
X*Y=500
X/Y=20
X不等于Y
[root@localhost script]#
乘号(*)前边必须加反斜杠(\)才能实现乘法运算,条件表达式必须放在方括号之间,并且要有空格。
3、关系运算符,进行综合运算
运算符 | 功能说明 | 举例 |
-eq | 检测两个数是否相等,相等返回 true | [ $X -eq $Y ] 返回 false |
-ne | 检测两个数是否不相等,不相等返回 true | [ $X -ne $Y ] 返回 true |
-gt | 检测左边的数是否大于右边的,如果是,则返回 true | [ $X -gt $Y ] 返回 false |
-lt | 检测左边的数是否小于右边的,如果是,则返回 true | [ $X -lt $Y ] 返回 true |
-ge | 检测左边的数是否大于等于右边的,如果是,则返回 true | [ $X -ge $Y ] 返回 false |
-le | 检测左边的数是否小于等于右边的,如果是,则返回 true | [ $X -le $Y ] 返回 true |
运算关系综合运算
[root@localhost script]# vim gxys.sh
[root@localhost script]# cat gxys.sh
#!/bin/bash
#文件名为:gxys.sh
#版本:v1.1
#功能:运算关系综合运算X=10
Y=20
if [ $X -eq $Y ]
thenecho "$X -eq $Y : X 等于 Y"
elseecho "$X -eq $Y: X 不等于 Y"
fi
if [ $X -ne $Y ]
thenecho "$X -ne $Y: X 不等于 Y"
elseecho "$X -ne $Y : X 等于 Y"
fi
if [ $X -gt $Y ]
thenecho "$X -gt $Y: X 大于 Y"
elseecho "$X -gt $Y: X 不大于 Y"
fi
if [ $X -lt $Y ]
thenecho "$X -lt $Y: X 小于 Y"
elseecho "$X -lt $Y: X 不小于 Y"
fi
if [ $X -ge $Y ]
thenecho "$X -ge $Y: X 大于或等于 Y"
elseecho "$X -ge $Y: X 小于 Y"
fi
if [ $X -le $Y ]
thenecho "$X -le $Y: X 小于或等于 Y"
elseecho "$X -le $Y: X 大于 Y"
fi
[root@localhost script]# . gxys.sh //执行脚本
10 -eq 20: X 不等于 Y
10 -ne 20: X 不等于 Y
10 -gt 20: X 不大于 Y
10 -lt 20: X 小于 Y
10 -ge 20: X 小于 Y
10 -le 20: X 小于或等于 Y
[root@localhost script]#
4、流程控制
if多分支语句测试:
[root@localhost script]# vim if-select.sh
[root@localhost script]# cat if-select.sh
#!/bin/bash
#文件名为:if-select.sh
#版本:v1.1
#功能:if多分支语句测试
read -p "请输入您的成绩:" x
if [ "$x" == "" ];thenecho "您没有输入成绩...."exit 5
fi
if [[ "$x" -ge "90" && "$x" -le "100" ]];thenecho "您的成绩为:A(优秀)"
elif [[ "$x" -ge "80" && "$x" -le "89" ]];thenecho "您的成绩为:B(良好)"
elif [[ "$x" -ge "70" && "$x" -le "79" ]];thenecho "您的成绩为:(中等)"
elif [[ "$x" -ge "60" && "$x" -le "69" ]];thenecho "您的成绩为:(合格)"
elif [[ "$x" -lt "60" ]];thenecho "您的成绩为:(不合格)"
elseecho "输入错误"
fi
[root@localhost script]# chmod a+x if-select.sh
[root@localhost script]# . if-select.sh
请输入您的成绩:88
您的成绩为:B(良好)
[root@localhost script]#
case命令语句测试
[root@localhost script]# vim case.sh
[root@localhost script]# cat case.sh
#!/bin/bash
#文件名为:case.sh
#版本:v1.1
#功能:case命令语句测试
read -p "【1:优秀,2:良好,3:中等,4:合格,5:不合格】请输入数字(1-4):" x
case $x in1) echo "您的成绩为:A(优秀)";;2) echo "您的成绩为:B(良好)";;3) echo "您的成绩为:C(中等)";;4) echo "您的成绩为:D(合格)";;5) echo "您的成绩为:E(不合格)";;
esac
[root@localhost script]# . case.sh
【1:优秀,2:良好,3:中等,4:合格,5:不合格】请输入数字(1-4):3
您的成绩为:C(中等)
[root@localhost script]#
for循环实现从1+2+...+N之和:
[root@localhost script]# vim for.sh
[root@localhost script]# cat for.sh
#!/bin/bash
#文件名为:for.sh
#版本:v1.1
#功能:for循环实现从1+2+...+N之和
read -p "请输入数字,将要计算1+2+...+N之和:" N
sum=0
for (( i=1; i<=$N; i=i+1 ))
do sum=$(( $sum + $i ))
done
echo "结果为‘1+2+...+$N’==>$sum"
[root@localhost script]# chmod a+x for.sh
[root@localhost script]# . for.sh //执行脚本
请输入数字,将要计算1+2+...+N之和:100 //1到100之和
结果为‘1+2+...+100’==>5050
[root@localhost script]#
......
相关文章:
Linux期末复习笔记
一、管理文件系统 1、文件系统类型 ext2:早期Linux中常用的文件类型。ext3:ext2的升级版,带日志功能。RAMFS:内存文件系统,速度很快。NFS:网络文件系统,由SUM发明,主要用于远程文件…...
PHP实现多继承
php支持多继承吗 不可以,只支持单继承。 可以使用 interface 或 trait 实现 。 实现方法 https://www.php.cn/faq/430197.html https://blog.58heshihu.com/index.php/archives/2288/...
pulsar原来是这样操作topic的
本篇主要讲述pulsar topic部分,主要从设计以及源码的视角进行讲述。在pulsar中,一个Topic的新建、扩容以及删除操作都是由Broker来处理的,而Topic相关的数据是存储在zookeeper上的。本篇文章模拟一个高效的学习流程进行展开 介绍使用方式(To…...
日常工作 经验总结
1,在使用vue2开发项目时,快捷有效的组件化component 若有参数传递时,可以通过这样传递 在component中: 2,上拉加载,下拉刷新 若是使用局部进行上拉加载 下拉刷新 且需要用到scroll-view时 那么需要切记scroll-view在内被mescroll-uni包裹。若场景有限 对于无数据显示…...
【Proteus仿真】【Arduino单片机】水箱液位监控系统
文章目录 一、功能简介二、软件设计三、实验现象联系作者 一、功能简介 本项目使用Proteus8仿真Arduino单片机控制器,使用LCD1602液晶、按键、蜂鸣器、液位传感器、ADC转换器、水泵等。 主要功能: 系统运行后,LCD1602显示当前水位、上下限阈…...
【已解决】若依系统前端打包后,部署在nginx上,点击菜单错误:@/views/system/role/index
上面错误,是因为/views/system/role/index动态路由按需加载时候,错误导致。 解决办法: 如果您的前端项目访问时候,需要带有项目名称的话,参考凯哥上一篇文章:【已解决】若依前后端分离版本࿰…...
Java中compareTo方法使用
compareTo方法 1. compareTo方法参数2. compareTo方法返回值3. String类型使用CompareTo方法进行比较 compareTo 是实例方法,只能对象调用。所以不能比较基本类型 1. compareTo方法参数 public int compareTo(参数类型 值) {... }参数类型可以是一个 Byte, Double…...
【霹雳吧啦】手把手带你入门语义分割の番外11:U2-Net 源码讲解(PyTorch)—— 代码的使用
目录 前言 Preparation 一、U2-Net 网络结构图 二、U2-Net 网络源代码 1、train.py (1)parse_args 参数 (2)SODPresetTrain 类 (3)SODPresetEval 类 (4)main 函数 &#x…...
威尔仕2023年的统计数据
威尔仕健身房更新了2023年的统计数据,大家可以猜一猜我是哪一个称号?虽然小伙伴们的健身时长各有不同,有时候在课程中我也会分享自己健身的案例,看似一个简单的增强环路,旁边会有很多的调节环路来限制增强环路的增长&a…...
Spring——Spring基于注解的IOC配置
基于注解的IOC配置 学习基于注解的IOC配置,大家脑海里首先得有一个认知,即注解配置和xml配置要实现的功能都是一样的,都是要降低程序间的耦合。只是配置的形式不一样。 1.创建工程 1.1 pom.xml <?xml version"1.0" encoding…...
spring常用注解(一)springbean生命周期类
一、PostConstruct: 被PostConstruct修饰的方法会在服务器加载Servlet的时候运行,并且只会被服务器调用一次,类似于servlet的inti()方法。被PostConstruct修饰的方法会在构造函数之后,init()方法之前运行。...
【软件测试】2024年准备中/高级测试岗技术面试...
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、软件测试基础知…...
第11课 实现桌面与摄像头叠加
在上一节,我们实现了桌面捕获功能,并成功把桌面图像和麦克风声音发送给对方。在实际应用中,有时候会需要把桌面与摄像头图像叠加在一起发送,这节课我们就来看下如何实现这一功能。 1.备份与修改 备份demo10并修改demo10为demo11…...
SAP 检验批状态修改(QA32质检放行报错:BS002 不允许 “访问使用决定“ (INL 101105415 ))
问题:在做QA32进行使用决策处理的时候发现这个报错: BS002 不允许 "访问使用决定" (INL 101105415 ) 原因:是因为这个检验批的状态已经变成Relase的状态了,但是决策还没有做 解决方案:将这个检验批的REL状态…...
华为交换机如何同时配置多个端口参数
知识改变命运,技术就是要分享,有问题随时联系,免费答疑,欢迎联系! 华为交换机如何批量配置端口 使用端口组功能可以实现一次配置多个端口,以减少重复配置工作。端口组分为如下两种方式: 永久端口组。如果用户需要多次…...
Mybatis之多表查询
目录 一、简介 1、使用嵌套查询: 2、使用多个 SQL 语句: 3、使用关联查询: 4、使用自定义映射查询: 二、业务场景 三、示例 1、一对一查询 2、一对多查询 一、简介 MyBatis 是一个优秀的持久层框架,它提供了强大的支持来执…...
部署node.js+express+mongodb(更新中)
1-Linux服务器部署MongoDB 1.升级 yum -y update 2.下载MongoDB安装包 3.上传安装包 上传目录 : /usr/local/ 2-配置MongoDB环境变量并启动 1.配置环境变量全局启动 vi ~/.bash_profile 使用i命令进入编辑模式 添加: export PATH/usr/local/mongodb/bin:$P…...
百度CTO王海峰:文心一言用户规模破1亿
“文心一言用户规模突破1亿。”12月28日,百度首席技术官、深度学习技术及应用国家工程研究中心主任王海峰在第十届WAVE SUMMIT深度学习开发者大会上宣布。会上,王海峰以《文心加飞桨,翩然赴星河》为题作了主旨演讲,分享了飞桨和文…...
简单最短路径算法
前言 图的最短路径算法主要包括: 有向无权图的单源最短路径 宽度优先搜索算法(bfs) 有向非负权图的单源最短路径 迪杰斯特拉算法(Dijkstra) 有向有权图的单源最短路径 贝尔曼福特算法(Bellman-Ford&#…...
答案解析——C语言—第3次作业—算术操作符与关系操作符
本次作业链接如下: C语言—第3次作业—算术操作符与关系操作符 1.在C语言中,表达式 7 / 2 的结果是多少? - A) 3.5 - B) 3 - C) 4 - D) 编译错误 答案:B) 3 解析: 在C语言中,当两个整数进行除法运算时&…...
【数据结构】二叉树的链式实现
树是数据结构中非常重要的一种,在计算机的各方个面都有他的身影 此篇文章主要介绍二叉树的基本操作 目录 二叉树的定义:二叉树的创建:二叉树的遍历:前序遍历:中序遍历:后序遍历: 二叉树节点个数…...
八、QLayout 用户基本资料修改(Qt5 GUI系列)
目录 一、设计需求 二、实现代码 三、代码解析 四、总结 一、设计需求 在很多应用程序中会有用户注册或用户编辑信息等界面。本文就设计一个用户信息编辑界面。要求包含用户名、姓名、性别、部门、年龄、头像、个人说明等信息。 二、实现代码 #ifndef DIALOG_H #define D…...
tomcat、java、maven
JDK|JRE Tomcat官网介绍的更清楚 Java 环境安装 安装 wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u392-b08/openlogic-openjdk-8u392-b08-linux-x64.tar.gz tar -xf openlogic-openjdk-8u392-b08-linux-x64.tar.gz mv openlogic-openjdk…...
IDEA好用插件
CodeGlance Pro 右侧代码小地图 Git Commit Template git提交信息模板 IDE Eval Reset 无限试用IDEA Maven Helper 图形化展示Maven项 One Dark theme 好看的主题 SequenceDiagram 展示方法调用链 Squaretest 生成单元测试 Translation 翻译 Lombok lombok插件…...
面试官:CSS3新增了哪些新特性?
面试官:CSS3新增了哪些新特性? 一、是什么 css,即层叠样式表(Cascading Style Sheets)的简称,是一种标记语言,由浏览器解释执行用来使页面变得更美观 css3是css的最新标准,是向后兼…...
Vite5 + Vue3 + Element Plus 前端框架搭建
为了开发一套高效使用的 Vite5 + Vue3 + Element Plus 前端框架,你可以按照以下步骤进行。话不多说,先上演示地址:Vue Shop Vite。 1, 安装开发环境 开发之前,确保你的电脑已经安装了 Node.js(建议使用最新稳定版 LTS),然后安装 Vite CLI。在命令行中运行以下命令: …...
STM32 内部 EEPROM 读写
STM32 的某些系列 MCU 自带 EEPROM。笔者使用的 STM32L151RET6 自带 16 KB 的 EEPROM,可以用来存储自定义的数据。在芯片选型时,自带 EEPROM 也可以作为一个考量点,省去了在外接 EEPROM 的烦恼。 下面简单介绍下 STM32 内部 EEPROM 的读写流…...
androidStudio sync failed GradlePropertiesModel (V2)
大家在增加模块的时候经常遇到吧?重启后就好了。 Cannot get GradlePropertiesModel (V2) for project ‘GradleProject{path’:app’}’ 然而,今天开机以后,无论如何,点击gradle的大象图标(Sync Project with Gradle Files)&…...
结构方程模型(SEM)
结构方程模型(Structural Equation Modeling)是分析多变量间因果关系的利器,在众多学科领域具有巨大应用潜力。我们前期推出的《基于R语言结构方程模型》课程通过结构方程原理介绍、结构方程全局和局域估计、模型构建和调整、潜变量分析、复合…...
基于UDP的网络编程
UDP服务端 #ifdef _WIN32 #define _WINSOCK_DEPRECATED_NO_WARNINGS #define close closesocket #include <winsock2.h> #else #include <arpa/inet.h> #include <netdb.h> #include <netinet/in.h> #in…...
网站建设初学者必学/seo 优化公司
目录 分析静态页面静态vs动态本次项目页面分析模板抽取base目录下的base.htmlnewsnews下主页index.htmlnews下的new_detail.htmlnews下search.htmldocdoc下docDownload.htmlusersusers下的login.htmlusers下的registercoursecourse下的course.htmlcourse下的course_detail.html…...
政务网站建设工作计划/上海网络推广
一、数据库名什么是数据库名?数据库名就是一个数据库的标识,就像人的身份证号一样。他用参数DB_NAME表示,如果一台机器上装了多全数据库,那么每一个数据库都有一个数据库名。在数据库安装或创建完成之后,参数DB_NAME被…...
wordpress能否做网站/产品50个关键词
内容摘要:随着供应链管理的发展,供应商库存管理作为一种先进库存管理理念逐渐流行起来。文章根据核心企业在供应链中的不同位置提出了VMI运行结构,并按照不同的运行结构分析了企业可以采用的运行模式,以及各种模式的特点与运作方式…...
会员型网站/策划方案怎么做
2019独角兽企业重金招聘Python工程师标准>>> 处理部分WordPress核心代码或功能,让你的网站更快 http://www.wpdaxue.com/speed-up-wordpress.html 转载于:https://my.oschina.net/u/1260221/blog/421850...
网站建设费用包括哪些方面/舆情监测软件免费版
图片的属性complete可以检查一个图片是否完全加载成功了,图片加载会有一个事件img.onload发生(它只代表图片已经开始加载了,不代表是否加载成功)。...
品牌创意型网站开发/成人教育培训机构排名
前言现实生活中存在一个这样的问题:节假日的高速公路极易发生拥堵;原因是:大幅增加的车辆超过了高速公路的车流通行能力;结果是:所有车辆滞留拥堵,越堵越多,直到拥堵问题得到解决,方…...