【笔记】shell基本使用,超全,更新ing

news2024/11/24 17:43:07

一、shell的执行

1、执行命令但不输出结果到命令行

[root@localhost ~]$ command >/dev/null

2、多命令顺序执行

命令 1;命令 2 #顺序执行命令,命令间无逻辑关联
命令 1&&命令 2 #命令1正确执行才执行命令2,否则不执行
命令 1||命令 2 #命令1不正确执行才执行命令2,否则不执行

3、执行shell的命令

[root@localhost ~]$ chmod u+x test.sh
[root@localhost ~]$ ./test.sh

[root@localhost ~]$ bash test.sh

二、shell变量

1、shell变量名称定义规则:

  • 命名只能使用英文字母、数字、下划线,不能以数字开头
  • 等号前后不能包含空格
  • 环境变量一般使用大写
  • 单引号内都是普通字符
  • 双引号内可以实现转义、且有些字符有特殊含义,如"$"有调用变量的值的含义
[root@localhost ~]$ a=1
[root@localhost ~]$ a="$a"2
[root@localhost ~]$ echo $a
12
#叠加变量a
[root@localhost ~]$ a=${a}3
[root@localhost ~]$ echo $a
123
#再叠加变量a
  • 双引号内可以实现转义、且有些字符有特殊含义,如"$",可以用来调用命令

单引号、双引号、反引号用法

-反引号用法:反引号括起来的内容是系统命令,在Bash中会先执行它

[root@localhost ~]$ name=wulei
#定义变量name 的值是wulei
[root@localhost ~]$ echo '$name'
$name
#如果输出时使用单引号,则$name原封不动的输出
[root@localhost ~]$ echo "$name"
wulei
#如果输出时使用双引号,则会输出变量name的值 wulei
[root@localhost ~]$ echo `date`
2018年10月21日星期一18:16:33 CST
#反引号括起来的命令会正常执行
[root@localhost ~]$ echo '`date`'
`date`
#但是如果反引号命令被单引号括起来,那么这个命令不会执行,―date会被当成普通字符输出
[root@localhost ~]$ echo "`date`"
2018年10月21日星期一18:14:21 CST
#如果是双引号括起来,那么这个命令又会正常执行
[root@localhost ~]$ echo ls
ls
#如果命令不用反引号包含,命令不会执行,而是直接输出
[root@localhost ~]$ echo `ls`
anaconda-ks.cfginstall.loginstall.log.syslog sh test testfile
#只有用反引号包括命令,这个命令才会执行
[root@localhost ~]$ echo $(date)
2018年10月21日星期一18:25:09 CST
#使用$(命令)的方式也是可以的

#在shell脚本中使用Linux命令,也需要使用$()或者``包裹命令,例如
num=$(cat /etc/passwd | grep $username | wc -l)
numt=`cat /etc/passwd | grep $username | wc -l`

位置参数变量

位置参数变量作用
$nn为数字,$0表示当前 Shell 脚本程序的名称,$1-9 代表第一到第九个参数 , 十以上的参数需要用大括号包含,如 9代表第一到第九个参数,十以上的参数需要用大括号包含,如9代表第一到第九个参数,十以上的参数需要用大括号包含,如{10}
$*这个变量代表命令行中所有的参数,$把所有的参数看成一个整体
$@这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待
$#这个变量代表命令行中所有参数的个数

$*会把接收的所有参数当成一个整体对待,而$@则会区分对待接收到的所有参数。举个例子:

[root@localhost sh]$ vi parameter2.sh
#!/bin/bash
for i in"$*"
#定义for循环,in后面有几个值,for会循环多少次,注意“$*”要用双引号括起来
#每次循环会把in后面的值赋予变量i
#Shell把$*中的所有参数看成是一个整体,所以这个for循环只会循环一次
	do
		echo "The parameters is: $i"
		#打印变量$i的值
	done
## 带参数输入:sh parameter2.sh 1 2 3 5
## 输出结果:The parameters is: 1 2 3 5

x=1
#定义变量x的值为1,用于跟踪参数的索引
for y in"$@"
#同样in后面的有几个值,for循环几次,每次都把值赋予变量y
#可是Shel1中把“$@”中的每个参数都看成是独立的,所以“$@”中有几个参数,就会循环几次
	do
		echo "The parameter$x is: $y"
		#输出变量y的值
		x=$((x +1))
		#然变量x每次循环都加1,为了输出时看的更清楚
	done
## 带参数输入:sh parameter2.sh 1 2 3 5
## 输出结果:The parameters is: 1
# The parameters is: 2
# The parameters is: 3
# The parameters is: 5

x=1
for y in"$#"
#同样in后面的有几个值,for循环几次,每次都把值赋予变量y
	do
		echo "The parameter$x is: $y"
		#输出变量y的个数
	done
## 带参数输入:sh parameter2.sh 1 2 3 5
## 输出结果:The parameters1 is: 4

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/w918589859/article/details/108752592

举一反三,看看shell数组中${a[@]}、${a[*]}、${#a[@]}、${#a[*]}之间的关系

首先解释下shell遵循的几个关联原则

  1. 使用变量时需要加上${}符号
  2. a=(e1 e2 e3 e4)是shell数组的表达,读取数组中元素的格式为${a[下标]}
  3. 一般情况下,$@、$*都表示传递给函数或脚本的所有参数,因此${a[@]}等价于${a[*]},${#a[@]}等价于${#a[*]}
  4. 但当他们被双引号包含后,$@会将每个参数看作单独的数据,彼此之间独立、$*将所有参数从整体上看做一份数据(看上面的bash示例即可)
  5. $# 这个变量代表命令行中所有参数的个数

因此:

  1. ${#a[@]}、${#a[*]}指的都是这个数组中所有参数的个数
  2. 直接打印${a[@]}、${a[*]}会一次性输出这个数组中所有参数
  3. 在for循环中,for i in “${a[@]}”,会循环多次输出,每次输出一个参数
  4. 在for循环中,for i in “${a[*]}”,会一次性输出这个数组中所有参数

再举个例子:

#!/bin/bash
pids=(num1 num2 num3)

echo "\${#pids[@]}表示参数总数:   ${#pids[@]}"
echo "####################"
echo "\${#pids[*]}表示参数总数:   ${#pids[*]}"

echo "######### 一般情况 ########"
echo "\${pids[@]}输出每个参数:  ${pids[@]}"
echo "\${pids[*]}输出每个参数:  ${pids[*]}"

echo "######### 带双引号区别 ########"
for i in "${pids[*]}";do
        echo "双引号下\${pids[*]}作为一个整体输出:$i"
done
echo "####################"
for i in "${pids[@]}";do
        echo "双引号下\${pids[@]}依然输出每个参数:$i"
done
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_39677803/article/details/125147594

输出为:

${#pids[@]}表示参数总数:   3
####################
${#pids[*]}表示参数总数:   3
######### 一般情况 ########
${pids[@]}输出每个参数:  num1 num2 num3
${pids[*]}输出每个参数:  num1 num2 num3
######### 带双引号区别 ########
双引号下${pids[*]}作为一个整体输出:num1 num2 num3
####################
双引号下${pids[@]}依然输出每个参数:num1
双引号下${pids[@]}依然输出每个参数:num2
双引号下${pids[@]}依然输出每个参数:num3
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/qq_39677803/article/details/125147594

三、read交互式输入

用法:

read [-t 输出后等待时间 ] [-p 提示语 ] [-s (隐藏输入)] [-n 输入参数数量校验(若不符合则输入无效) ]  

举例:

read -s -t 10 -p "your age is :" age
echo $age
echo -e "\n"      #-e表示输出转义字符

四、运算符

算数运算符

用法:

`expr $a + $b `
`expr $a - $b `
`expr $a \* $b `
`expr $a / $b `
`expr $a % $b `    #取余
[ $a == $b ]      #判断两数值是否相等,注意前后空格及花括号,返回布尔值
[ $a != $b ]      #判断两数值是否不相等,注意前后空格及花括号,返回布尔值

关系运算符

对象:数字

-eq equal 相等
-ne not equal 不相等
-gt great than 大于
-lt less than 小于
-ge great than or equal 大于等于
-le less than or equal 小于等于
# 均返回布尔值

逻辑运算符

! 非运算
-o 或运算
-a 与运算
# 均返回布尔值

字符串运算符

= 相等
!= 不相等
-z 字符串长度为0,用法[ -z $a ]
-n 字符串长度不为0,用法[ -n $a ]
str 字符串不为空,用法[ $a ]
# 均返回布尔值

文件测试运算符

用于校验文件属性

-b file 是块设备文件,用法[ -b $file ]
-c file 是字符设备文件,用法[ -c $file ]
-d file 是目录,用法[ -d $file ]
-f file 是普通文件,用法[ -f $file ]
-r file 文件可读,用法[ -r $file ]
-w file 文件可写,用法[ -w $file ]
-x file 文件可执行,用法[ -x $file ]
-s file 文件大小是否为0,用法[ -s $file ]
-e file 文件是否存在,用法[ -e $file ]
# 均返回布尔值

-e举例:

[root@localhost ~]$ vi mk_dir.sh
#!/bin/bash
#创建目录,判断是否存在,存在就结束,反之创建
DIR="/tmp/dir"
if [ ! -e $DIR ]
then
	mkdir -p $DIR
fi
echo "$DIR 创建成功"

五、流程控制

if条件语句

单分支语法:

if [ 条件语句 ]
    then
        ...
fi

双分支语法:

if [ 条件语句 ]
    then
        ...
    else
        ...
fi

多分支语法:

if [ 条件语句 ]
    then
        ...
elif [ 条件语句 ]
    then
        ...
else        
        ...
fi

case多分支语句

当只有一种条件关系且与多级时可以使用case语句

case $变量名 in
	"值1")
	    ...
	    ;; ##每个条件分支必须以;;结尾
	"值2")
	    ...
	    ;;
	"值3")
	    ...
	    ;;
	*)  ## 如果以上都不符合,则执行这个分支
	    ...
	    ;;
esac  #以esac结尾
	

for循环语句

for  变量 in 值1 值2 值3 值4 ...(可以是一个文件)
    do
       ...
    done

举例:

[root@localhost ~]$ vi sh/auto-tar. sh
#!/bin/bash
#批量解压缩脚本

cd/lamp
#进入压缩包目录
ls *.tar.gz > ls.log
#把所有.tar.gz结尾的文件的文件覆盖到ls.log 临时文件中
for i in $(cat ls.log) `
#或者这样写for i in `cat ls.log`

#读取ls.log文件的内容,文件中有多少个值,就会循环多少次,每次循环把文件名赋予变量i
	do
		tar -zxf $i &>/dev/null
		#加压缩,并把所有输出都丢弃
	done
rm -rf /lamp/ls.log
#删除临时文件ls.log

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                        
原文链接:https://blog.csdn.net/w918589859/article/details/108752592
for  变量 in ((初始值;循环控制条件;变量变化))
    do
       ...
    done

举例:

[root@localhost ~]$ vi sh/add. sh
#!/bin/bash
#从1加到100

s=0
for (( i=1;i<=100;i=i+1 ))
#定义循环100 次
do
	s=$(( $s+$i ))  #注意这里是算术运算,因此需要2组小括号,
	#每次循环给变量s赋值
	done
echo "The sum of 1+2+...+100 is : $s"
#输出1加到100的和

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。                        
原文链接:https://blog.csdn.net/w918589859/article/details/108752592

while循环语句

while [ 条件判断语句 ]
    do 
        ...
    done

exit、break、conti

  1. exit:直接退出整个程序,可以自定义返回值,如exit 10
  2. break:退出所在循环语句,继续直接程序后续语句
  3. continue:退出本次循环,不执行循环内后面的语句,进入下一次循环

六、函数

function 函数名(){
    ...
}

举例:

#!/bin/bash
function add(){
    s=$(($a+10))
	echo $s
}
read -p "请输入原始数据:" a
add $a

七、字符截取、替换和处理命令

正则表达式

字符描述示例
.匹配一个任意字符a.b可以匹配a1b、aab等
^匹配以指定字符串开头字符串^ab可以匹配abc,不能匹配aab
$匹配以指定字符串结尾字符串ab$可以匹配aab,不能匹配abc
[]匹配括号中的任意一个字符[abc]d可以匹配ad、bd、cd
[^]匹配^字符之外的任意一个字符[^abc]d不能匹配ad,能匹配kd
[-]匹配指定范围内的任意一个字符,需要顺序递增[0-9][a-f][A-F]可以匹配一位十六进制数据
?匹配?之前的单元1次或0次a?k可以匹配ak、k,不能匹配aak
*匹配*之前的单元0次或多次g*可以匹配ggoo
+匹配+之前的单元1次或多次
{N}匹配{}之前的单元N次[1-9][0-9]{2}匹配从100-999的整数
{N,}匹配{}之前的单元至少N次[1-9][0-9]{2,}匹配大于100的整数
{,M}匹配{}之前的单元至多M次[1-9]{,1}等价于[1-9]?
{N,M}匹配{}之前的单元至少N次,至多M次[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}可以匹配IP地址
| 连接2个子表达式,表示或的关系n(oe)可以匹配no和ne

grep 中使用正则表达式

  1. egrep等价于grep -e,表示采用extended正则表达式语法
  2. grep表示采用basic语法
  3. fgrep等价于grep -F,表示只搜索指定字符串不搜索正则表达式,不按正则表达式语法解释
  4. extended规范下正则表达式需要使用单引号’ '表示,否则可能会被shell解释器解释成其他含义,且?+{}()|不需要加转移字符\,如果使用basic规范,?+{}()|需要加转移字符\才能表达为正则表达式

sed中使用正则表达式

sed支持使用特殊元字符进行查找和替换,sed -n ‘/^mmm/p’ file1可以查找file1文件中以mmm开头字符串

cut字符截取

cut用法:
cut [选项] 文件名
命令 | cut  [选项] 
参数:
-d 分隔符,默认分隔符是制表符tab
-f 与-d一起使用时,-d将字符串分割后,用-f提取出第几段;默认分隔符下,表示列号,提取第几列
-c 以字符char为单位截取固定字符区间
-b 以字节byte为单位截取固定字节区间
-n 与-b一起使用,表示不分割占多字节的字符,比如一个汉字占2给字符,加上-n就不会将其分割成多个字节进行截取
--complement 用于排除所指定的字段
--output-delimiter   更改输出内容的分隔符

举例:

cut -b 4    #截取每一行的第4个字节
cut -b 1,3,4   #截取每一行的第1,3,4个字节(此时输出内容没有分隔符)
cut -b 1,3,4 --output-delimiter="    "    #此时每一行的第1、3、4个字节之间就有了    分隔符
cut -b 1-3   #截取每一行的第1-3个字节

一般情况下,-c和-b的功能一样,但对于占多个字节的中文字符,使用-b时,一般加-n
举例:

[root@localhost]:echo "今天也开心" |cut -c 1-2
今天
[root@localhost]:echo "今天也开心" |cut -b 1-3
今
[root@localhost]:echo "今天也开心" |cut -b 1-3 -n
今天也

-f的几种参数传值:

  • N:选取第N段,从1开始计数
  • N-:从第N段到最后一段
  • N-M:从第N段到第M段
  • N,M:第N段和第M段
  • -M:从第一段到第M段
    举例:
cut -d "%" -f 1   #以%作为分隔符分隔数据,并取出第一个数

–complement 用法举例:

[root@localhost]echo "今。天。也。开。心" | cut  -d "。"   --complement  -f  2    #排除第二个字段
今也开心

printf使用

https://blog.csdn.net/cumtglad/article/details/139837186

printf相比于print的区别:

  • printf 支持%d %s %i等格式化输出
  • printf不能自动换行,需要手动添加\n

awk基本使用

基础语法:

awk 参数 参数值 '条件1 {动作1}  条件2 {动作2}  ... ' 文件名
命令|awk 参数 参数值  '条件1 {动作1}  条件2 {动作2}  ... '

条件
一般使用关系表达式作为条件,如:

  • x > 10
  • x == y
  • A ~ B 判断字符串A中是否包含能匹配B表达式的子字符串
  • A !~ B 判断字符串A中是否不包含能匹配B表达式的子字符串
    也可使用awk保 留字:
  • BEGIN 在awk程序一开始时,尚未读取任何数据之前执行。BEGIN后的动作只在程序开始时执行一次
  • END 在awk程序处理完所有数据,即将结束时执行。END后的动作只在程序结束时执行一次
    还可使用正则表达式//,//中间可以填写正则表达式或字符

动作:

  • 格式化输出(printf、print)
  • 流程控制语句

举几个例子介绍下条件和动作的使用:

awk 'BEGIN{printf "这是每个学生的平均成绩\n" } {printf $2 "\t" $6 "\n"}’ student.txt #stuedent表中列为姓名,列6为成绩
#输出:
这是每个学生的平均成绩
张三    66
李四    77
王五    88
awk 'END{printf "上面是姓李的学生的平均成绩\n"} $2 ~ /李/ {printf $2 "\t" $6 "\n"}’ student.txt #stuedent表中列为姓名,列6为成绩
#输出:
李四    77
上面是姓李的学生的平均成绩

注意:BEGIN和END可以一起使用

awk 'cat student.txt | awk '$6 > 70 {printf $2 "\t" $6 "\n"}#stuedent表中列为姓名,列6为成绩
#输出:
李四    77
王五    88
#输出成绩大于70分的学生姓名和成绩 
awk 'cat student.txt | awk '/[6-7][0-9]/ {printf $2 "\t" $6 "\n"}#stuedent表中列为姓名,列6为成绩
#输出:
张三    66
李四    77
#输出成绩大于在60~80分之间的学生姓名和成绩 

参数:

  • -F 指定输入分隔符
# 以:作为输入的列分隔符,查看admin用户的UID
cat /etc/passwd |grep admin |awk  -F':' '{print $3}'
  • -f 从脚本读取awk命令
#脚本pass.awk
BEGIN {FS=":"}
{print $1 "\t" $3}
# awk调用脚本
awk -f pass.awk /etc/passwd
  • -m 对val值设置内在限制
  • -V 自定义变量
# 输出aA的值kkk
awk -v aA="kkk" 'BEGIN{print aA}'

再看几个内置变量

参考:https://blog.csdn.net/w918589859

awk内置变量作用
$0代表目前awk所读入的整行数据。我们已知awk是一行一行读入数据的,$0就代表当前读入行的整行数据。
$n代表目前读入行的第n个字段。比如,$1表示第1个字段(列),$2表示第2个字段(列),如此类推
NF当前行拥有的字段(列)总数。
NR当前awk所处理的行,是总数据的第几行。
FS用户定义分隔符。awk的默认分隔符是任何空格,如果想要使用其他分隔符(如“:”),就需要FS变量定义。
ARGC命令行参数个数。
ARGV命令行参数数组。
FNR当前文件中的当前记录数(对输入文件起始为1)。
OFMT数值的输出格式(默认为%.6g)。
OFS输出字段的分隔符(默认为空格)。
ORS输出记录分隔符(默认为换行符)。
RS输入记录分隔符(默认为换行符)。

以上变量的解释参考:https://blog.csdn.net/qq_40531442
注意:这个例子的输出怀疑有问题,不应该以#分割在这里插入图片描述
另外补几个示例:
参考:https://blog.csdn.net/w918589859

#打印文本第一行
awk 'NR==1{print}' filename

#打印文本第二行第一列
sed -n "2, 1p" filename | awk 'print $1'

#获取第一行的第一列,第二列,第三列
ps -aux | grep watchdog | awk 'NR==1{print $1, $2, $3}'

#获取行数NR
df -h | awk 'END{print NR}'

#获取列数NF(这里是获取最后一行的列数,注意每行的列数可能是不同的)
ps -aux | grep watchdog | awk '{print $NF}'

#统计PHIP成绩的总分
[root@localhost ~]$ awk 'NR==2 {php1=$3}
NR==3 {php2=$3}
NR==4 {php3=$3;totle=phpl+php2+php3;print "totle php is " totle}' student.txt

#假设如果Linux成绩大于90,就是一个好男人
[root@localhost ~]$ awk '{if (NR>=2) {if ($4>60) printf $2 "is a good man!\n"}}’ student.txt
[root@localhost ~]$ awk "NR>=2 {test=$4}
test>90 {printf $2 "is a good man! \n"}" student.txt
#

几个awk书写格式小tips:

  1. 多个条件 {动作} 可以用空格分割,也可以用回车分割。
  2. 在一个动作中,如果需要执行多个命令,需要用 “;” 分割,或用回车分割。
  3. 在awk中,除了$0 $n变量的赋值与调用都不需要加入“$”符。
  4. 条件中判断两个值是否相同,请使用 “==”,以便和变量赋值进行区分。

sed命令选取、替换、删除、新增文本

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

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

相关文章

记录IDEA编译报错:不支持发行版本

一共四个地方&#xff0c;版本均保持一致

成分喵(一键查询食品/化妆品成分)

一款免费可以一键查询各大品牌食品和化妆品成分神器&#xff0c;无论是拍照、扫码又或者是商品链接都能查成分&#xff0c;还能根据成分查商品&#xff0c;而且各种成分的功效、作用和安全性都会一一标注出来&#xff0c;包括是否对身体有害、敏感风险等级等等。 下载&#xf…

大模型应用开发速成:一本通向LLM专家之路

大家好&#xff0c;今天给大家推荐一本大模型应用开发入门书籍《大模型应用开发极简入门》&#xff0c;本书对很多AI概念做了讲解和说明&#xff01; 朋友们如果有需要 《大模型应用开发极简入门》&#xff0c;扫码获取~ 本书主要讲解了以下几个方面的大模型技术&#xff1a; G…

技术发明一等奖!FISCO BCOS研究成果荣获CCF权威认可

近日&#xff0c;中国计算机学会&#xff08;CCF&#xff09;正式揭晓了2024年度“CCF科技成果奖”的获奖名单。FISCO BCOS开源工作组组长单位微众银行与清华大学合作的“安全可控高性能区块链基础平台”项目&#xff0c;凭借卓越的技术创新与显著的社会经济效益&#xff0c;荣…

MFC项目如何使用hiredis库连接redis

如何在windows平台使用c连接redis 1. 下载hiredis的vs工程文件2. 使用vs2022编译hiredis3.项目中调用4. 集群连接5. 简单的封装下 最近需要在windows PC终端读取redis数据。我这里使用hiredis连接redis. 工程是vs2022开发的。 注意&#xff1a;如果是使用的‘hiredis’就不能在…

【鸟类识别系统】Python+卷积神经网络算法+人工智能+深度学习+ResNet50算法+计算机课设项目

一、介绍 鸟类识别系统。本系统采用Python作为主要开发语言&#xff0c;通过使用加利福利亚大学开源的200种鸟类图像作为数据集。使用TensorFlow搭建ResNet50卷积神经网络算法模型&#xff0c;然后进行模型的迭代训练&#xff0c;得到一个识别精度较高的模型&#xff0c;然后在…

ORA-65096:公用用户名或角色名无效

CREATE USER DATA_SHARING IDENTIFIED BY "Ab2"; Oracle建立用户的的时候&#xff0c;可能会出现一直提示 ORA-65096:公用用户名或角色名无效&#xff1b; 我查了一下&#xff0c;好像是 oracle 12版本及以上版本的特性&#xff0c;用户名必须加c##或者C##前缀才能创…

对ElementPlus的el-select二次封装,添加分页和搜索功能,实现一个自定义的下拉选择框

组件展示效果图 在 Vue3 的 elementPlus项目中&#xff0c;我们经常需要使用下拉选择框 (el-select) 来展示大量数据。然而&#xff0c;默认情况下 el-select 不支持分页和搜索功能。本文将介绍如何通过二次封装 el-select 组件来实现这一需求&#xff0c;并使用自定义的 Hook …

一周热门|OpenAI 回击马斯克:为了自己的竞争优势,不断骚扰我们;微软、清华团队提出 Diff Transformer

「一周热门」将从【企业动态】【技术前瞻】【政策法规】【专家观点】四部分&#xff0c;带你快速跟进大模型行业热门动态。 企业动态 OpenAI 回击马斯克&#xff1a;为了自己的竞争优势&#xff0c;他不断骚扰我们 日前&#xff0c;OpenAI 指控马斯克在一场法律诉讼中对其进行…

谷歌浏览器 文件下载提示网络错误

情况描述&#xff1a; 谷歌版本&#xff1a;129.0.6668.90 (正式版本) &#xff08;64 位&#xff09; (cohort: Control)其他浏览器&#xff0c;比如火狐没有问题&#xff0c;但是谷歌会下载失败&#xff0c;故推断为谷歌浏览器导致的问题小文件比如1、2M会成功&#xff0c;大…

基于Transformer的诗句生成

基于Transformer的诗句生成 前言相关介绍Transformer一、基本原理与结构二、关键技术三、应用领域四、优缺点 Transformer应用&#xff1a;诗句生成优缺点 前提条件实验环境基于Transformer的诗句生成准备数据集读取数据集分割数据集设置相关参数创建自己DataSet对象定义网络模…

双十一速购清单!如何才能挑到性价比高的宠物空气净化器

对于很多上班族而言&#xff0c;平时都不敢大手大脚的花钱&#xff0c;甚至很想将一份钱掰成两份来用&#xff0c;所以双十一是很多人都不会错过的购物狂欢节。 当然&#xff0c;我这个996的社畜也一样&#xff0c;而且我还养了一只爱掉毛的猫咪&#xff0c;每天下班回去都看到…

光路科技TSN交换机和电力专用交换机即将亮相第31届中国国际电力设备及技术展览会

在全球能源领域正经历深刻转型之际&#xff0c;可再生能源技术的飞跃进步正为电力行业的未来开辟新径。太阳能、风能等绿色能源&#xff0c;凭借其无可比拟的优势&#xff0c;正稳步取代化石燃料&#xff0c;成为电力行业的主流趋势。多国政府积极响应&#xff0c;出台多项政策…

日均千万订单的交易平台设计稿

业务背景 平台主要售卖电子商品和少量特定的实物商品。 经营模式&#xff0c;主要分为平台商家和自营店&#xff0c;自营店的流量占整个平台业务的50%以上&#xff0c;我负责自营店交易履约相关业务。 以前的架构&#xff0c;平台交易和履约中心是所有流量共享&#xff0c;在…

day01-Qt5入门

day01-Qt5入门 1.下载Qtcreate 官网地址&#xff1a;http://qt-project.org/downloads 2.配置环境变量 将类似于 D:\Qt\Qt5.1.1\5.1.1\mingw48_32\bin 的目录添加到环境变量中 3.创建一个新项目 输入自己的项目名称&#xff0c;后面默认下一部 4.运行第一个项目 在窗口…

计算机网络:数据链路层 —— PPP 点对点协议

文章目录 PPP 帧PPP帧的格式PPP帧的透明传输面向字节的异步链路面向比特的同步链路 PPP帧的差错检测 PPP 的工作状态 点对点协议&#xff08;Point-to-Point Protocol&#xff0c;PPP&#xff09;是目前使用最广泛的点对点数据链路层协议&#xff0c;用于在两个节点之间进行数据…

10.12面试题

代理模式 为什么需要代理模式&#xff1f; 1.中介隔离 客户类不想或者不能直接引用委托对象&#xff0c;需要使用代理类作为中介&#xff0c;需要代理类和委托对象都实现同一接口 2.满足开闭原则 若客户类需要委托对象新增某些功能&#xff0c;就需要代理类在调用委托对象…

【ProtoBuf】基础使用与编译

文章目录 ProtoBuf的使用基本使用指定proto3语法package声明符定义消息(message)定义消息字段字段唯一编号 编译序列化与反序列化序列化与反序列化使用 ProtoBuf的使用 流程如下&#xff1a; 编写 .proto文件&#xff0c;定义结构对象(message)及属性内容使用 protoc 编译器编…

常用类(二)--String类的简单总结

文章目录 1.基本介绍1.1创建对象1.2找到对应下标的字符1.3找到对应字符的下标1.4指定位置开始遍历1.5反向进行遍历1.6大小写之间的转换1.7字符串转换为数组1.8元素的替换1.9字符串的分割1.10字符串的截取 2.StringBuilder和StringBuffer2.1 StringBuilder的引入2.2面试题目 1.基…

拆解学习【无线充,EMMC,锂电池电量计,OTA】(二)

主要学习到了&#xff1a;无线充&#xff0c;EMMC&#xff0c;手表CPU方案&#xff0c;锂电池电量计&#xff0c;OTA。 无线充电功能是产品的核心卖点之一&#xff0c;充电头网通过拆解发现&#xff0c;手表内部使用恒玄BES2500BP智能手表单芯片解决方案&#xff0c;内置四核C…