项目七 熟练使用Vim程序编辑器与shell

项目七 熟练使用Vim程序编辑器与shell

#职业能力目标和要求
1,学会使用vim编辑器。
2,了解shell的强大功能和shell的命令解释过程。
3,学会使用重定向和管道的方法。
4,掌握正则表达式的使用方法。

7.1 熟悉使用vim编辑器

7.1.1 启动与退出vim

1,vim命令格式:vim +创建/编辑文件

2,vim编辑环境:

3,编译时的命令

:w			#保存
:w filename	#另存为filename
:wq!		#保存退出
:x			#保存退出
:wq!		#注:以filename为文件名保存后退出
:q!			#不保存退出

7.1.2 熟悉掌握vim的工作模式.

1,编辑模式

  • 首先进来的就是该模式。
  • 在编辑行是_表示;不在编辑行~表示。
  • 如果左下角是[New File],则表示该文件是新建文件。
  • 该模式下左下角什么都没有。

2,插入模式

  • 进入编辑模式的命令:插入命令i,附加命令a,打开命令o,修改命令c,取代命令r/替换命令s都可以进入该模式
  • 按“esc”键就可以回到编辑模式。
  • 该模式下左下角有-- INSERT –

3,命令模式

  • (如果是插入模式,先按"Esc” 键进人编辑模式)在编辑模式下,按“:”键即可进入命令模式;此时左下角有”:“提示符,可以输入命令;执行完自动回到编辑模式。
  • 若改变主意,按退格键全删即可回到编辑模式。

7.1.3 使用vim命令

1,编辑模式

image.png

image.png

image.png

image.png

2,命令模式

image.png

7.2 熟悉掌握shell环境变量

shell是用与操作写入内核之间的接口,起着交互作用;shell支持具有字符串值的变量。

1,变量的定义和引用

变量赋值格式:name=string
#name是变量名,=是赋值符号,string是值
  • 变量名是以字母或下划线开头的;字母,数字和下划线字符序列组成的。

  • 通过在变量名( name)前加 字符 ( 如 字符(如 字符(name )引用变量的值,引用的结果就是用字符串string代替

    $name,此过程也称为变量替换。

  • 若包含空格,制表符和换行符,则string必须用单引号/双引号括起来;双引号内运行变量替换,而单引号内则不行。

2,shell变量的作用域

shell变量分为局部变量和全局变量。

  • 局部变量的作用范围仅限制在其命令行所在的shell或shell脚本文件中。
  • 全局变量的作用范围则包括本shell进程及其所有子进程。
  • 可以使用export内置命令将局部变量设置为全局变量。
#举例:
#定义两个变量
[root@localhost ~]# var1=Linux
[root@localhost ~]# var2=unix
#用export命令改成全局变量
[root@localhost ~]# export var2
#显示引用的变量
[root@localhost ~]# echo $var1 
Linux
[root@localhost ~]# echo $var2
unix
#显示当前shell的pid
[root@localhost ~]# echo $$
2972
#调用子shell
[root@localhost ~]# bash
#查看子shell的pid
[root@localhost ~]# echo $$
66239
#引用子shell的变量,可以看出var1,没有显示,说明var1为局部变量
[root@localhost ~]# echo $var1

[root@localhost ~]# echo $var2
unix
#退出子shell,并重新引用变量
[root@localhost ~]# exit
exit
[root@localhost ~]# echo $$
2972
[root@localhost ~]# echo $var1 
Linux
[root@localhost ~]# echo $var2
unix

3,环境变量

  • 环境变量是指由shell定义和赋初值的shell变量。shell 用环境变量来确定查找路径、注册目录、终端类型、终端名称、用户名等。所有环境变量都是全局变量,并可以由用户重新设置

  • 在bash中,设置环境变量用set命令。格式:set 环境变量=变量的值

image.png

  • 不加参数的set命令,可以显示当前所有环境变量的设置

  • 环境变量前加$符号,表示引用

  • 当修改环境变量时

    #例如:将一个路径/tmp加到PATH变量前
    [root@localhost ~]# PATH=/tmp:$PATH
    
  • unset命令:将环境变量重新设置为系统默认值。

4,命令运行的判读依据:;,&&,||

  • cmd;cmd(不考虑命令相关性的连续命令执行)
  • $?(命令回传值)与”&&“或“||”

image.png

**注意:**两个&之间是没有空格的,“1”则是按“Shift+\” 组合键的结果。

#例题1:如果不管/tmp/abc存在与否,都要创建/tmp/abc/hehe文件,怎么办呢?
[root@localhost ~]# ls /tmp/abc || mkdir /tmp/abc && touch /tmp/abc/hehe

#例题2:以ls测试/tmp/bobbying是否存在:若存在,则显示“exist"; 若不存在,则显示“not exist”
[root@localhost ~]# ls /tmp/bobbying && echo "exist" || echo "not exist"

5,工作环境设置文件

环境变量文件有两种

  • 系统中的用户环境变量设置文件
    • 登录环境设置文件:/etc/profile
    • 非登录环境设置文件:/etc/profile
  • 用户设置的环境变量设置文件
    • 登录环境设置文件:$HOME/.Bash_profile
    • 非登录环境设置文件:$HOME/.bashrc

注:只有在特定的情况下才读取profile文件,确切地说是在用户登录的时候读取。当运行shell 脚本以后,就无须再读profile文件。

  • 用户可以修改自己的用户环境设置文件来覆盖系统环境设置文件中的全局设置。

7.3 熟悉掌握正则表达法

正则表示法就是处理字符串的方法,它以“行”为单位来进行字符串的处理。

7.3.1 掌握grep的高级使用

格式: grep [-A] [-B] [–color=auto] ‘查找字符串’ filename

  • -A:后面可加数字,为after的意思,除了列出该行外,后续的n行也列出来。
  • -B:后面可加数字,为befor的意思,除了列出该行外,前面的n行也列出来。
  • –coloreauto.可将搏寻出的正确数掘用特殊颜色标记。
#例1:用demsg列出核心信息,再以grep找出内含IPv6的那行
[root@localhost ~]# dmesg | grep 'IPv6'
[    6.769531] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[    6.778049] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[    6.778875] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
[   11.978750] IPv6: ADDRCONF(NETDEV_UP): virbr0: link is not ready
[   87.408060] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[   87.409345] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
[  117.501771] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[  117.503142] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
[  128.247837] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[  128.249073] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
[51085.622677] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
[51085.626092] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
#例2:承上賄要将本取到的关键字显色,日加上行号(-n)来表示
[root@localhost ~]# dmesg | grep -n --color=auto 'IPv6'
1831:[    6.769531] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1833:[    6.778049] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1834:[    6.778875] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1846:[   11.978750] IPv6: ADDRCONF(NETDEV_UP): virbr0: link is not ready
1852:[   87.408060] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1854:[   87.409345] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1855:[  117.501771] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1857:[  117.503142] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1858:[  128.247837] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1860:[  128.249073] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1863:[51085.622677] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1865:[51085.626092] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
#例3:
[root@localhost ~]# dmesg | grep -n -A1 -B1 --color=auto 'IPv6'
1830-[    6.559585] NET: Registered protocol family 40
1831:[    6.769531] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1832-[    6.773124] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1833:[    6.778049] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1834:[    6.778875] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1835-[   11.501269] ip6_tables: (C) 2000-2006 Netfilter Core Team
--
1845-[   11.978664] virbr0: port 1(virbr0-nic) entered listening state
1846:[   11.978750] IPv6: ADDRCONF(NETDEV_UP): virbr0: link is not ready
1847-[   12.022448] virbr0: port 1(virbr0-nic) entered disabled state
--
1851-[   33.946364] TCP: lp registered
1852:[   87.408060] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1853-[   87.408574] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1854:[   87.409345] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1855:[  117.501771] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1856-[  117.502326] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1857:[  117.503142] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1858:[  128.247837] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1859-[  128.248338] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1860:[  128.249073] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready
1861-[22294.767165] e1000: ens33 NIC Link is Down
1862-[22304.806220] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1863:[51085.622677] IPv6: ADDRCONF(NETDEV_UP): ens33: link is not ready
1864-[51085.625314] e1000: ens33 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: None
1865:[51085.626092] IPv6: ADDRCONF(NETDEV_CHANGE): ens33: link becomes ready

7.3.2 练习基础正则表达式

在root下编写sample.txt测试文件

"Open Source" is a good mechanism to develop programs.
apple is my favorite food.
Football game is not use feet only.
this dress doesn't fit me.
However, this dress is about $ 3183 dollars.^M
GNU is free air not free beer.^M
Her hair is very beauty.^M
I can't finish the test.^M
Oh! The soup taste good.^M
motorcycle is cheap thancar.
This window is clear.
the symbol '*' is represented as start.
Oh!     My god!
The gd software is a library for drafting programs.^M
You are the best is mean you are the no. 1.
The world <Happy> is the same with "glad".
I like dog.
google is the best tools for search keyword.
goooooogle yes!
go! go! Let's go.
#I am Bo

1,查找特定字符串

#查找“the”字符串
[root@localhost ~]# grep -n 'the' /root/sample.txt 
8:I can't finish the test.^M
12:the symbol '*' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world <Happy> is the same with "glad".
18:google is the best tools for search keyword.
#反向选择(就是除去the字符串)
[root@localhost ~]# grep -vn 'the' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
5:However, this dress is about $ 3183 dollars.^M
6:GNU is free air not free beer.^M
7:Her hair is very beauty.^M
9:Oh! The soup taste good.^M
10:motorcycle is cheap thancar.
11:This window is clear.
13:Oh!	My god!
14:The gd software is a library for drafting programs.^M
17:I like dog.
19:goooooogle yes!
20:go! go! Let's go.
21:#I am Bo
[root@localhost ~]# grep -in 'the' /root/sample.txt 
8:I can't finish the test.^M
9:Oh! The soup taste good.^M
12:the symbol '*' is represented as start.
14:The gd software is a library for drafting programs.^M
15:You are the best is mean you are the no. 1.
16:The world <Happy> is the same with "glad".
18:google is the best tools for search keyword.

2,利用中括号[]]来搜寻集合字符。

#如何查找含“test”,“teste”?
[root@localhost ~]# grep -n 't[ae]st' /root/sample.txt 
8:I can't finish the test.^M
9:Oh! The soup taste good.^M
#[]里面无论几个字符,都只代表一个字符。
#如何查找含“oo”的字符?
[root@localhost ~]# grep -n 'oo' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.^M
18:google is the best tools for search keyword.
19:goooooogle yes!

#例如大写英文/小写英文/数字等,可以用[a-z][A-Z][0-9]
#查询含数字的行
[root@localhost ~]# grep -n '[0-9]' /root/sample.txt 
5:However, this dress is about $ 3183 dollars.^M
12:the symbol '*' is represented as start.

#[:lower:]表示a-z的意思。
[root@localhost ~]# grep -n '[^[:lower:]]oo' /root/sample.txt 
3:Football game is not use feet only.

3,首行与行尾字节^$

#显示"the"只在行首
[root@localhost ~]# grep -n '^the' /root/sample.txt 
12:the symbol '*' is represented as start.

#显示以小写开头
[root@localhost ~]# grep -n '^[a-z]' /root/sample.txt 
2:apple is my favorite food.
4:this dress doesn't fit me.
10:motorcycle is cheap thancar.
12:the symbol '*' is represented as start.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.

#显示不要字母
[root@localhost ~]# grep -n '^[^a-zA-Z]' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
21:#I am Bo

^符号在[]之内表示“反向选择”,在[]之外表示定位在行首

#找出行尾结束为小数点的行(用跳转字节\)
[root@localhost ~]# grep -n '^[^a-zA-Z]' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
21:#I am Bo
[root@localhost ~]# grep -n '\.$' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
4:this dress doesn't fit me.
10:motorcycle is cheap thancar.
11:This window is clear.
12:the symbol '*' is represented as start.
15:You are the best is mean you are the no. 1.
16:The world <Happy> is the same with "glad".
17:I like dog.
18:google is the best tools for search keyword.
20:go! go! Let's go.

#利用cat显示不打印字符,行尾显示“$”
[root@localhost ~]# cat -An /root/sample.txt | head -n 10 |tail -n 6
     5	However, this dress is about $ 3183 dollars.^M$
     6	GNU is free air not free beer.^M$
     7	Her hair is very beauty.^M$
     8	I can't finish the test.^M$
     9	Oh! The soup taste good.^M$
    10	motorcycle is cheap thancar.$

#不要空行的打印(-v '^$')
[root@localhost ~]# grep -v '^$' /etc/rsyslog.conf |grep -v '^$'

4,任意一个字符“.“与重复字节”*“

  • “*”:代表0个或多个字符。
  • “.”:代表绝对有一个任意字符。
#找“g??d”的字符串
root@localhost ~]# grep -n 'g..d' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
9:Oh! The soup taste good.^M
16:The world <Happy> is the same with "glad".

#查找两个“oo”以上的字符串(两个oo以后可以是0个或无数个)
[root@localhost ~]# grep -n 'ooo*' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.^M
18:google is the best tools for search keyword.
19:goooooogle yes!

#开头查找开头结尾都是g的字符串,之间有无字节皆可
[root@localhost ~]# grep -n 'g*g' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
3:Football game is not use feet only.
9:Oh! The soup taste good.^M
13:Oh!	My god!
14:The gd software is a library for drafting programs.^M
16:The world <Happy> is the same with "glad".
17:I like dog.
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.
#改结果有问题,我们重新定义一下
[root@localhost ~]# grep -n 'g.*g' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
14:The gd software is a library for drafting programs.^M
18:google is the best tools for search keyword.
19:goooooogle yes!
20:go! go! Let's go.

#“.*”代表任意字符;RE:正则表达式

#显示仅有数字,用RE法
[root@localhost ~]# grep -n '[0-9][0-9]*' /root/sample.txt 
5:However, this dress is about $ 3183 dollars.^M
15:You are the best is mean you are the no. 1.

5,限定连续RE字符范围

#查找含有两个o的字符串的行
[root@localhost ~]# grep -n 'o\{2\}' /root/sample.txt 
1:"Open Source" is a good mechanism to develop programs.
2:apple is my favorite food.
3:Football game is not use feet only.
9:Oh! The soup taste good.^M
18:google is the best tools for search keyword.
19:goooooogle yes!
#再假设要找后面接2~5个o,然后再接一个g的字符串
[root@localhost ~]# grep -n 'go\{2,5\}g' /root/sample.txt 
18:google is the best tools for search keyword.
#再假设查两个以上o的
[root@localhost ~]# grep -n 'go\{2,\}g' /root/sample.txt 
18:google is the best tools for search keyword.
19:goooooogle yes!

7.3.3 基础正则表达式的特殊字符汇总

image.png

7.4 掌握输入输出重定向与管道命令的应用

7.4.1 使用重定向

1,重定向就是不用系统的标准,而进行重新指定

2,重定向分为输入重定向,输出重定向和错误重定向

image.png

3,在执行命令前,命令解释程序会自动打开(如果文件不存在,则自动创建)且清空该文件(文中已存在的数据将被删除)实际环境要慎重使用输入重定向。当执行完成时,命令解释程序会正确地关闭该文件,而命令在执行时并不知道它的输出已被重定向。

#1,将ls命令生成的/tmp目录的一个清单存到当前目录中的dir文件中
[root@localhost ~]# ls -l /tmp/ >dir
[root@localhost ~]# cat dir 
total 0
drwx------. 2 lzl  lzl  24 Jun 17  2022 ssh-J3eKGQfk53Ap
.....

#2,将ls命令生成的/etc目录的一个清单(就是显示出的内容)以追加的方式存到当前目录中。
[root@localhost ~]# ls -l /etc/ >>dir 
[root@localhost ~]# cat dir 
total 0
drwx------. 2 lzl  lzl  24 Jun 17  2022 ssh-J3eKGQfk53Ap
.....

#3,将命令myprogram的错误信息保存在当前目录下的err file文件中
[root@localhost ~]# myprogram &>err_file

#4,将命令myprogram的输出信息和错误信息保存在当前目录下的output file 文件中。
[root@localhost ~]# myprogram &>output_file

#5,将命令ls的错误信息保存在当前目录下的err file文件中。
[root@localhost ~]# ls -l 2>err_file 
total 4669476
.....
#该命令并没有产生错误信息,但err file文件中的原文件内容会被清空。

#6,Bash输人输出重定向可以通过使用下面选项设置为不覆盖已存在文件:
[root@localhost ~]# set -o noclobber
#这个选项仅用于对当前命令解释程序输人输出进行重定向,而其他程序仍可能覆盖已存

#7,/dev/null	空设备(相当于垃圾桶)
#典型用法是丢弃从find或grep等命令送来的错误信息:
[root@localhost ~]# grep delegate /etc/* 2>/dev/null 
/etc/sudoers:## of related commands, which can then be delegated out to particular

**4,wc命令:**用来计算数字,可以计算文件的byte数,字数或是列数,若不指定文件名称,或是所给予的文件名为“_”,则wc指令会从标准输入设备读取数据。

[root@localhost ~]# wc</etc/passwd
  43   87 2256

7.4.2 使用管道

1,定义:将这些命令前后衔接在一起,形成一个管道,格式命令1|命令2|…|命令n

2,每条命令都是单独的进程运行,每条命令的输出作为下条命令的输入

3,由于命令的是从左到右顺序执行的,所以管道线是单向的

#1,以长格式递归的方式分屏显示/etc目录下的文件和目录列表。
[root@localhost ~]# ls -Rl /etc | /more

#2,分屏显示文本文件/etc/passwd的内容。
[root@localhost ~]# cat /etc/passwd | more 

#3,统计文本文件/et/passwd的行数、字数和字符数。期出
[root@localhost ~]# cat /etc/passwd | wc

#4,查看是否存在john用户账号。
[root@localhost ~]# cat /etc/passwd |  grep john

#5,查看系统是否安装了ssh软件包。
[root@localhost ~]# rpm -qa |grep ssh

#6,显示文本文件中的若干行。
[root@localhost ~]# tail -15 myfile |head -3

4,管道仅能操控命令的标准输出流。如果标准错误输出未重新定向,那么任何写入其中的信息都会在终端显示屏幕上显示。

[root@localhost ~]# who | grep root | wc -l
**。

```shell
#1,以长格式递归的方式分屏显示/etc目录下的文件和目录列表。
[root@localhost ~]# ls -Rl /etc | /more

#2,分屏显示文本文件/etc/passwd的内容。
[root@localhost ~]# cat /etc/passwd | more 

#3,统计文本文件/et/passwd的行数、字数和字符数。期出
[root@localhost ~]# cat /etc/passwd | wc

#4,查看是否存在john用户账号。
[root@localhost ~]# cat /etc/passwd |  grep john

#5,查看系统是否安装了ssh软件包。
[root@localhost ~]# rpm -qa |grep ssh

#6,显示文本文件中的若干行。
[root@localhost ~]# tail -15 myfile |head -3

4,管道仅能操控命令的标准输出流。如果标准错误输出未重新定向,那么任何写入其中的信息都会在终端显示屏幕上显示。

[root@localhost ~]# who | grep root | wc -l

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

el-table,列表合并,根据名称列名称相同的品名将其它列值相同的进行合并

el-table,列表合并,根据名称列名称相同的品名讲其它列值相同的进行合并,并且不能垮品名合并 如图 用到el-table合并行的方法合并 tableSpanMethod({ row, column, rowIndex, columnIndex }) {if (column.property "materielName") {//合并商品名const _row this…

LeetCode-805.保持城市天际线 C/C++实现 超详细思路及过程[M]

&#x1f388;归属专栏&#xff1a;深夜咖啡配算法 &#x1f697;个人主页&#xff1a;Jammingpro &#x1f41f;记录一句&#xff1a;摆烂一天后&#xff0c;写的第一篇博客 文章目录 LeetCode-807. 保持城市天际线&#x1f697;题目&#x1f686;题目描述&#x1f686;题目示…

Java程序连接 nacos集群

我们在bootstrap.yml文件里可以直接连一个nacos集群的. 架构如下 没错,我们程序直连的是通过Nginx的,利用nginx的反向代理来做到连接nacos集群. 我们先把nginx的配置贴上来 upstream cluster{server 127.0.0.1:8848;server 127.0.0.1:8849;server 127.0.0.1:8850; }server{l…

视频字幕处理+AI绘画,Runway 全功能超详细使用教程(4)

runway的视频字幕处理、AI绘图功能介绍&#xff0c;感觉完全就是为了做电影而布局&#xff0c;一整套功能都上线了&#xff01;想系统学习的必收藏&#xff01; 在深度研究Runway各个功能后&#xff0c;无论是AI视频生成及后期处理技术&#xff0c;还是AI图像生成技术&#xff…

如何控制Spring工厂创建对象的次数?详解Spring对象的声明周期!

&#x1f609;&#x1f609; 学习交流群&#xff1a; ✅✅1&#xff1a;这是孙哥suns给大家的福利&#xff01; ✨✨2&#xff1a;我们免费分享Netty、Dubbo、k8s、Mybatis、Spring...应用和源码级别的视频资料 &#x1f96d;&#x1f96d;3&#xff1a;QQ群&#xff1a;583783…

怎么更新BI报表数据?问我就对了

BI大数据分析工具上有大量的BI报表模板&#xff0c;这些模板都是一个个完整的BI报表&#xff0c;只需将数据源更换&#xff0c;立即就能用来分析我们自己的数据。那&#xff0c;BI报表的数据怎么更新&#xff1f;接下来就来说说这事。 目的&#xff1a;更新BI报表数据 工具&a…

如何编写自己的python包,并在本地进行使用

如何编写自己的python包,并在本地进行使用 一、直接引用 1.创建Python项目pythonProject。 2.并且在此项目下创建pg_message包。 3.pg_message包下默认生成_init_.py文件。 Python中_init_.py是package的标志。init.py 文件的一个主要作用是将文件夹变为一个Python模块,Pyt…

如何使用企业微信 WorkTool API 开源框架快速开发企微聊天机器人(详细教程)

WorkTool 基本框架概述 WorkTool 是一个依附于企业微信来运行的无人值守群管理机器人程序&#xff0c;WorkTool 开源&#xff0c;并且永久免费。您可以使用本应用程序来自动执行一个自己企业微信里的账号&#xff08;当做机器人账号&#xff09;可通过后台调用对应的 API 来驱…

Jmeter和Testlink自动化测试框架研究与实施

摘 要 目前基于Jmeter的接口自动化测试框架&#xff0c;大多只实现脚本维护和自动调度&#xff0c;无法与Testlink进行互通&#xff0c;实现测试方案与自动化实施流程连接&#xff0c;本文基于Testlink、Jmeter、Jenkins实现&#xff1a;通过Testlink统一维护接口自动化测试用…

ArrayList和顺序表

目录 线性表 顺序表 实现顺序表&#xff1a; 1&#xff0c;添加元素的时候我们要判断是否需要扩容 2&#xff0c;写异常 3,数组清空 ArrayList&#xff1a; ArrayList的构造方法&#xff1a; ArrayList的add方法&#xff1a; ArrayList的subList 知识点补充&#xff…

知识蒸馏—原理+代码实战(Distillation CNN 和 Progressive Distillation Diffusion)

文章目录 1. Distillation 基本概念2. Distillation MNIST CNN分类代码实战3. Progressive Distillation Diffusion生成代码实战3.1 Progressive Distillation原理3.2 v-parameterization3.2 渐进蒸馏 cifar 代码实战 1. Distillation 基本概念 知识蒸馏被广泛的用于模型压缩和…

使用STM32 HAL库驱动光电传感器的设计和优化

光电传感器在许多应用中起着重要的作用&#xff0c;例如自动计数、距离测量等。STM32微控制器和HAL库提供了丰富的功能和易于使用的接口&#xff0c;使得光电传感器的设计和优化变得更加便捷。本文将介绍如何使用STM32 HAL库驱动光电传感器的设计和优化&#xff0c;包括硬件设计…

Linux Nmap命令解析(Nmap指令)(功能:主机发现、ping扫描、arp扫描、端口扫描、服务版本检测、操作系统识别等)

文章目录 Linux Nmap 命令解析简介Nmap 的核心功能主机发现端口扫描服务版本检测OS 指纹识别&#xff08;操作系统指纹识别&#xff09;脚本扫描 安装 NmapNmap 命令结构Nmap 命令文档英文中文 主机发现Ping 扫描ARP 扫描关于nmap -PR&#xff08;ARP Ping Scan&#xff09;和n…

接口测试工具(Jmeter)必学技巧

安装 使用JMeter的前提需要安装JDK&#xff0c;需要JDK1.7以上版本 目前在用的是JMeter5.2版本&#xff0c;大家可自行下载解压使用 运行 进入解压路径如E: \apache-jmeter-5.2\bin&#xff0c;双击jmeter.bat启动运行 启动后默认为英文版本&#xff0c;可通过Options – Choos…

web:NewsCenter

题目 打开页面显示如下 页面有个输入框&#xff0c;猜测是sql注入&#xff0c;即search为注入参数点&#xff0c;先尝试一下 返回空白显示错误 正常显示如下 是因为单引号与服务端代码中的’形成闭合&#xff0c;输入的字符串hello包裹&#xff0c;服务端代码后面多出来一个‘导…

java学习part18抽象类

Java抽象类 详解-CSDN博客 111-面向对象(高级)-抽象类与抽象方法的使用_哔哩哔哩_bilibili 1.概念 2.抽象类 抽象类不能实例化&#xff0c;可以有属性&#xff0c;也可以有方法。 方法可以实现或者只声明不实现&#xff0c;要加一个abstract abstract class A{//定义一个抽…

51单片机使用串口查看程序执行的数据

51单片机使用串口查看程序执行的数据 1.概述 这篇文章介绍利用串口输出程序执行的数据&#xff0c;辅助我们调试程序&#xff0c;提高代码定位问题的效率。 2.硬件电路原理 3.串口助手查看程序数据 输出串口数据的方式分为CPU查询方式和中断方式。他们各有优缺点&#xff0…

【CVE-2023-49103】ownCloud graphapi信息泄露漏洞(2023年11月发布)

漏洞简介 ownCloud owncloud/graphapi 0.2.x在0.2.1之前和0.3.x在0.3.1之前存在漏洞。graphapi应用程序依赖于提供URL的第三方GetPhpInfo.php库。当访问此URL时&#xff0c;会显示PHP环境的配置详细信息&#xff08;phpinfo&#xff09;。此信息包括Web服务器的所有环境变量&a…

k8s部署sonarqube

1.先决条件需要storageClass,动态制备,自动创建pv/pvc.详情参见 k8s-StoargClass的使用-基于nfs-CSDN博客 部署postgresql 2.创建ServiceAccount,用于权限管控. [rootmaster /zpf/test]$cat init-sc-serviceaccount.yaml apiVersion: v1 kind: ServiceAccount metadata:nam…

Joint Bilateral Upsampling

Abstract 图像分析和增强任务&#xff08;例如色调映射、着色、立体深度和蒙太奇&#xff09;通常需要在像素网格上计算解决方案&#xff08;例如&#xff0c;曝光、色度、视差、标签&#xff09;。计算和内存成本通常要求在下采样图像上运行较小的解决方案。尽管通用上采样方…