软件测试 —— Linux基础命令行

这篇具有很好参考价值的文章主要介绍了软件测试 —— Linux基础命令行。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、Linux介绍     

1、为什么要学习Linux?

2、 什么是操作系统?

3、 Linux系统

Linux 发⾏版本

4、Linux文件路径

二、远程连接操作

1、常见的远程连接⼯具 

2、远程连接基本步骤 

 2.1、获取服务器 IP 地址

 2.2、远程连接⼯具设置步骤 

3、远程连接注意事项 

3.1、修改连接信息选项

三、Linux常用命令 

1、Linux命令学习原则

2、Linux 命令的基本组成 

3、相对路径和绝对路径 

4、案例1: ls/pwd/cd/touch/mkdir/cp/mv/rm

4.1、Part1: ls/pwd/cd/touch/mkdir

4.2、Part2: cd其他⽤法和mv 

4.3、Part3: cp 复制⽂件和⽂件夹 

4.4、Part4: mv/touch 创建多个⽂件/rm 删除⽂件和⽂件夹及所有⽂件 

5 、案例2: cat/more/grep/重定向/管道符/clear

5.1、Part 1: cat/重定向

5.2、Part2: less/more 分屏显示⽂件内容 

5.3、Part3: grep/|管道符/clear

6、案例3: head/tail/tail -f

6.1、Part 1: head/tail

 6.2、Part2: tail -f 实时查看⽇志⽂件内容

6.3、扩展: 通过 head 和 tail 同时使⽤获取特定⾏和⾏之间信息 

7、案例4: 重启关机/查看系统信息 

7.1、查看系统信息

7.2、重启和关机: 如果账号没有对应权限, 可能⽆法执⾏重启和关机操作 

8、案例5: ps/kill/top 

8.1、Part1: 查看进程信息/⽂件上传操作

8.2、Part2: 运⾏程序/获取进程ID/结束程序 

8.3、Part3: 命令⾏形式的任务管理器

9、案例6: netstat/lsof 

9.1、Part1: netstat 查询端⼝号信息

9.2、Part2: lsof 查询端⼝号信息

10、案例8: which/su/passwd/exit/who 

10.1、which(查看程序位置)

10.2、 su(切换⽤户)

10.3、who(查看⽤户信息)

10.4、exit

11、 chmod 修改⽂件权限

11.1、⽂件权限的解读法

11.2、修改⽂件权限: 数字法[掌握] 

11.3、修改⽂件权限: 字⺟法[了解] 

11.4、⽂件权限修改注意事项

12、案例9: find 查找⽂件

13、案例10: ln -s 链接⽂件 

14、案例11: tar/gzip/zip/unzip 

14.1、Part1: tar/gzip 打包压缩和解压解包

14.2、Part2: zip 压缩/unzip 解压 

15、案例12: vi 命令⾏⽂本编辑器 

四、yum 软件包管理⼯具 

yum常⽤命令


一、Linux介绍       

1、为什么要学习Linux?

1、为了将来⼯作中与服务器设备进⾏交互⽽准备的技能(远程连接/命令的使⽤)

2、Linux命令行非常值得学。今天学会的技能,在10年后仍然有用。换言之,命令行是能够历经时间考验的

2、 什么是操作系统?

所有硬件设备组装完成后的第⼀层软件, 能够使⽤户使⽤硬件设备的软件 即为操作系统。

常见操作系统

1. 桌⾯操作系统: Windows/macOS/Linux

2. 移动端操作系统: Android(安卓)/iOS(苹果)

3. 服务器操作系统: Linux/Windows Server

4. 嵌⼊式操作系统: Android(底层是 Linux)

3、 Linux系统

在服务器端最常⻅的操作系统类型。

Linux 发⾏版本

说明: 在原版 Linux 系统的基础上, 额外增加⼀些常⽤软件的操作系统

注释: 类似与原⽣安卓系统和现⾏的华为系统/⼩⽶系统等之间的关系

常见类型:软件测试 —— Linux基础命令行

4、Linux文件路径

说明: 不同于 Windows 系统的⽂件路径的起点是盘符, Linux 系统的路径起点 是'/'(根⽬录)

注意:

1. / 为根⽬录, 是所有⽂件的路径的起点

2. 根⽬录下的所有第⼀层级的⽂件夹, 均不能随意进⾏修改操作

3. 掌握常⽤⽬录的作⽤即可

4. / 根⽬录, /home 普通⽤户所在⽂件夹, /root 系统管理员所在⽂件夹

5. 其余⽬录, 可以现⽤现查即可

如图 :

 二、远程连接操作

说明: 通过[远程连接⼯具]连接到服务器的操作即为远程连接

条件:

1、 服务器的 IP 地址

2、 服务器的账号和密码

注意: 必须要确保有⽹络连接条件

1、常见的远程连接⼯具 

1. FinalShell(推荐): 功能强⼤, 有颜值, 好操作(⾼级功能需要订阅)

2. XShell: 个⼈⽤免费/商⽤收费

3. Putty: 免费开源

4. SecureCRT: 收费

5. MobaXterm: 免费

6. WinSCP:免费开源

2、远程连接基本步骤 

1. ⼊职后需要向相关⼈员(运维/开发)获取服务器 IP 地址及账号密码等信息

2. 配合远程连接⼯具(根据公司要求使⽤对应⼯具), 配置连接使⽤服务器即可

2.1、获取服务器 IP 地址

注意: 在⼯作中此步骤可以省略, 可以直接向相关⼈员获取 IP 地址及账号和密码

1、虚拟机系统中的桌⾯上⿏标右键打开终端 软件测试 —— Linux基础命令行

2、通过 ifconfig 命令获取 IP 地址信息软件测试 —— Linux基础命令行

3、在本机上的命令⾏内使⽤ ping 命令⾏测试下连通性软件测试 —— Linux基础命令行

2.2、远程连接⼯具设置步骤 

注意:以 FinalShell 连接工具为例

1、如图:新建 -> SSH 连软件测试 —— Linux基础命令行

2、如图:设置连接信息

远程连接依赖的命令: SSH

注意: 有密钥,可直接使⽤ SSH 命令远程连接服务器 软件测试 —— Linux基础命令行

 3、如图:点击连接

软件测试 —— Linux基础命令行

4、如图:提示保存秘钥,接受并保存

软件测试 —— Linux基础命令行

5、如图:提示连接成功

软件测试 —— Linux基础命令行

3、远程连接注意事项 

3.1、修改连接信息选项

注意:如果服务器IP地址发生变化,可直接通过修改更新IP地址

如图:

软件测试 —— Linux基础命令行

三、Linux常用命令 

1、Linux命令学习原则

1、Linux的启蒙学习不存在任何捷径,不是因为它太难,而是它涵盖的内容太多

2、写好⾃⼰的笔记, 以备随时查阅使⽤即可

3、没学过,可能会⽤到, 现查现⽤

注意:

1. 不要去死记硬背 Linux 命令

2. 务必要明确命令的基本组成形式

2、Linux 命令的基本组成 

# 命令  [-选项]  [参数]

command  [-options]  [parameter]

说明:

command : 命令主体

[-options] : 命令选项(可选), 根据命令可以显示更加丰富的数据

[parameter] : 命令参数(可选), 命令的操作对象,⼀般⽂件、⽬录、⽤户 和进程等都可以作为参数被命令操作

3、相对路径和绝对路径 

说明: 在 Linux 系统中, 可以根据如下特点区分相对路径和绝对路径

相对路径: 凡是路径信息以 '.' 或 '..' 开头的均为相对路径

绝对路径: 凡是路径信息以 '/' 或 '~' 开头的均为绝对路径

注释:

        .  : 当前路径下(⼀般会省略)

        ..  : 上⼀层⽬录

        /  : 根⽬录

        ~ : 当前⽤户的家⽬录

4、案例1: ls/pwd/cd/touch/mkdir/cp/mv/rm

4.1、Part1: ls/pwd/cd/touch/mkdir

ls:查看当前目录下有哪些文件和文件夹

pwd:查看当前路径位置

cd:切换到xx目录

touch:创建文件

mkdir:创建文件夹软件测试 —— Linux基础命令行

4.2、Part2: cd其他⽤法和mv 

cd ~ :当前用户的目录下,~  当前用户目录的路径信息

cd  / :   当前根目录下, /  当前根目录的路径信息

cd -  :   返回上一次所在的路径

cd .. :   返回上一级路径

mv  :默认是用来移动文件到某一路径下的,但是如果目标文件名不是文件夹名称或文件名不存在,即为修改文件名操作

软件测试 —— Linux基础命令行

4.3、Part3: cp 复制⽂件和⽂件夹 

-i  :提示文件是否覆盖

如果是文件夹,需要使用 -r

软件测试 —— Linux基础命令行

4.4、Part4: mv/touch 创建多个⽂件/rm 删除⽂件和⽂件夹及所有⽂件 

注意:

1、危险操作需要交互删除: -i

2、删除目录:-r

3、删除的文件不存在也不会提示信息,强制删除:-f

4、*,通配符,表示目录下的任意文件

5、删除目录下所有文件:rm -rf  /*

软件测试 —— Linux基础命令行

5 、案例2: cat/more/grep/重定向/管道符/clear

5.1、Part 1: cat/重定向

显示所有⽂件和详细信息:ls -al 路径信息

软件测试 —— Linux基础命令行

将命令执⾏结果信息输出到⽂件中 : 重定向  >

软件测试 —— Linux基础命令行

查看⽂件内容(较少内容⽂件):cat  文件 

软件测试 —— Linux基础命令行

追加重定向:>> 

软件测试 —— Linux基础命令行

cat 合并查看多个⽂件内容

软件测试 —— Linux基础命令行

5.2、Part2: less/more 分屏显示⽂件内容 

说明:

less和more都常用于查看内容较多的文件信息

快捷键,两个命令基本操作快捷键相同:

        向下翻页:空格键

        向上翻页:B

        退出查看:Q

注意:

想要以分屏样式查看大量内容的文件信息,文件的内容至少应该超过当前终端窗口的显示大小。

软件测试 —— Linux基础命令行

5.3、Part3: grep/|管道符/clear

clear:清除当前终端窗口的内容

grep  内容  文件名:从文件中查找包含特定内容的信息

通过管道符 |  可以方便快捷的讲两条指令结合起来,以省去需要先将结果写入到文件,再进行查找操作

注意:在测试工作中,我们只需要掌握管道符后侧,常使用的命令为grep软件测试 —— Linux基础命令行

6、案例3: head/tail/tail -f

6.1、Part 1: head/tail

需求 1: 准备⼯作软件测试 —— Linux基础命令行

head 和 tail 的使⽤:

head  -数字  文件名:查看特定文件前几行内容

tail  -数字  文件名:查看特定文件后几行内容

软件测试 —— Linux基础命令行

 6.2、Part2: tail -f 实时查看⽇志⽂件内容

准备⼯作: 模拟⽇志⽂件内容的实时变化

软件测试 —— Linux基础命令行

实时查看⽇志⽂件内容变化

tail  -f  文件名:实现实时监控文件内容变化的操作

注意:应用场景,动态查看日志文件内容

软件测试 —— Linux基础命令行

从实时变化的⽂件中获取特定⾏数内容

tail  -数字f  文件名

软件测试 —— Linux基础命令行

6.3、扩展: 通过 head 和 tail 同时使⽤获取特定⾏和⾏之间信息 

需求: 获取某⽂件 11-15 ⾏的信息

软件测试 —— Linux基础命令行

7、案例4: 重启关机/查看系统信息 

7.1、查看系统信息

查看当前系统内核版本信息:cat /proc/version

查看当前系统发行版本信息:cat /etc/redhat-release

注意:

1. 不同系统的版本信息查看都是通过查看特定文件内容来获取,不同系统文件名可能不一样

2. 其他系统需要获取系统版本信息,可以搜索:系统类型 + 内核版本 / 发行版本,例如:CentOS内核版本查询软件测试 —— Linux基础命令行

7.2、重启和关机: 如果账号没有对应权限, 可能⽆法执⾏重启和关机操作 

reboot:重启系统

poweroff / shutdown:关闭系统软件测试 —— Linux基础命令行

8、案例5: ps/kill/top 

进程

说明: 在任何系统中, 运⾏软件程序时, 都会有⼀个对应的进程信息存在, 如果结束掉进程, 就可以实现关闭对应软件程序的操作, 尤其是在服务系统(Linux) 中

8.1、Part1: 查看进程信息/⽂件上传操作

查看进程信息 

查看当前系统下的进程信息:ps  -aux

PID:进程ID,一般情况下,软件程序的PID值都是唯一的

CPU:CUP使用率

MEM:内存使用率

COMMAND:软件程序名称软件测试 —— Linux基础命令行

上传⽂件到服务器

软件测试 —— Linux基础命令行

Linux 系统中结束或关闭程序的基本步骤

1. ps -aux | grep 程序名 : 获取⽬标程序的进程ID(PID)

2. kill -9 进程ID : 强制结束或关闭对应软件程序

8.2、Part2: 运⾏程序/获取进程ID/结束程序 

运⾏程序

注意:如果提示文件权限不足,可使用 chmod 755 程序名 修改文件权限

软件测试 —— Linux基础命令行

 运⾏结果和程序介绍: 最好在系统端运⾏程序, 远程连接⼯具内进⾏操作

软件测试 —— Linux基础命令行

获取进程 ID

注意:通过查询系统内的所有进程信息,并配合grep命令进行信息过滤

软件测试 —— Linux基础命令行

结束程序

kill -9 进程ID:通过进程ID结束或关闭对应软件程序

-9:强制结束软件测试 —— Linux基础命令行

服务端显示以杀死!软件测试 —— Linux基础命令行 

使⽤命令确认程序已经退出软件测试 —— Linux基础命令行

8.3、Part3: 命令⾏形式的任务管理器

top:命令形式的任务管理器(动态查看进程信息)

软件测试 —— Linux基础命令行

9、案例6: netstat/lsof 

端口号

说明: 想要连接⾄计算机, 需要使⽤ IP 地址, 再想获取在计算机上运⾏程序, 需要通过端⼝号 注意: 同⼀台计算机不能有多个程序同时使⽤同⼀个端⼝号, 因此在运⾏程序 时, 如果提示"端⼝号被占⽤", 那就需要先找到占⽤端⼝号的程序并结束掉, 然 后才能运⾏⽬标程序.

常⻅见端⼝号:

1. HTTP: 80

2. HTTPS: 443

3. SSH: 22

4. MySQL : 3306

9.1、Part1: netstat 查询端⼝号信息

使⽤普通⽤户查看不了 PID 和程序名称

netstat -anptu

注意:使用netsat命令时,最好使用root用户,否则PID一栏可能没信息

软件测试 —— Linux基础命令行

直接使⽤命令 -> 查看系统内已开放的端⼝号

netstat -anptu

软件测试 —— Linux基础命令行

通过端⼝号获取对应程序及进程 ID

注意:配合grep命令过滤信息,获取占用某一端口号的程序及应用的进程ID,再使用kill命令结束端口占用 

软件测试 —— Linux基础命令行

9.2、Part2: lsof 查询端⼝号信息

使⽤普通⽤户 -> 命令运⾏⽆结果

注意:该命令必须使用root用户权限,普通用户使用无任何结果 

软件测试 —— Linux基础命令行

通过端⼝号获取对应程序及进程 ID : 注意命令选项的语法要求!

lsof -i:3306(端口号)软件测试 —— Linux基础命令行

10、案例8: which/su/passwd/exit/who 

10.1、which(查看程序位置)

软件测试 —— Linux基础命令行

10.2、 su(切换⽤户)

su -  : 普通用户 -> root用户:需要输入root用户的密码(Linux系统下密码没有显示效果,输入回车即可);

su - admin : root用户 -> 普通用户:无需输入密码

注意:切换普通用户时,su和 - 与普通用户名之间均有空格

软件测试 —— Linux基础命令行

10.3、who(查看⽤户信息)

whoami :查看当前的用户名

who -q :查看当前系统中所有登录用户的信息软件测试 —— Linux基础命令行

10.4、exit

退出终端窗⼝

软件测试 —— Linux基础命令行

退出远程连接软件测试 —— Linux基础命令行

退出⽤户

软件测试 —— Linux基础命令行

11、 chmod 修改⽂件权限

11.1、⽂件权限的解读法

软件测试 —— Linux基础命令行

对照表

软件测试 —— Linux基础命令行

11.2、修改⽂件权限: 数字法[掌握] 

权限对应数值

软件测试 —— Linux基础命令行

案例实现

软件测试 —— Linux基础命令行

11.3、修改⽂件权限: 字⺟法[了解] 

组别: u: 拥有者/ g: ⽤户组/ o: 其他⼈/ a: 以上全部

修改: +: 增加权限/ -: 删除权限/ =: 赋予权限

权限: r: 可读/ w: 可写/ x: 可执⾏/ -:⽆权限软件测试 —— Linux基础命令行

11.4、⽂件权限修改注意事项

1. 必须明确⽂件权限的含义(读懂)

2. 使⽤数字法还是字⺟法全凭个⼈喜好

3. 尽量注意不要随意赋予⽂件最⾼权限: 数字法(777)/字⺟法(rwxrwxrwx)

4. 建议适当修改⽂件权限: 数字法(755)/字⺟法(rwxr-xr-x), 除拥有者外其 余⽆可写权限, 以保证⽂件内容安全

12、案例9: find 查找⽂件

find 查找路径信息 name目标文件名

注意

1. 目标文件名可以省略引号

2. 文件名部分支持使用 * 实现模糊匹配

3. 如果当前用户对目标路径没有访问权限,则无法执行查找文件动作

软件测试 —— Linux基础命令行

13、案例10: ln -s 链接⽂件 

注意: 需要使⽤ -s 创建软链接(类似 Windows 系统下的快捷⽅式)

在Linux系统存在两种链接文件方式

1. ln -s 原文件名 链接文件名:软连接

2. ln 原文件名 链接文件名:硬链接(类似复制文件)

注意:删除原文件,链接文件会失效

软件测试 —— Linux基础命令行

硬链接

软件测试 —— Linux基础命令行

14、案例11: tar/gzip/zip/unzip 

14.1、Part1: tar/gzip 打包压缩和解压解包

注意:不要在目标文件夹内部,执行打包压缩文件操作,返回上一级目录,cd -

tar -zcvf 包名.tar.gz 目标文件(z:gzip压缩、c:打包、v:显示过程、f:指定文件)

tar -zxvf 包名.tar.gz C解压目录(z:gzip解压、x:解压、v:显示过程、f:指定文件、C:勇于指定解压目录)

软件测试 —— Linux基础命令行

14.2、Part2: zip 压缩/unzip 解压 

zip -r 压缩包名 目标文件

注意:压缩包名的后缀.zip可省略

unzip d 解压路径 压缩包名

注意:解压需要先指定的解压路径,也可以直接在当前目录下解压压缩文件

软件测试 —— Linux基础命令行

15、案例12: vi 命令⾏⽂本编辑器 

基本操作流程

软件测试 —— Linux基础命令行

命令模式

软件测试 —— Linux基础命令行

 输⼊模式软件测试 —— Linux基础命令行

末⾏模式软件测试 —— Linux基础命令行

四、yum 软件包管理⼯具 

yum( Yellow dog Updater, Modified)是⼀个在 Linux 系统中常⽤的软件包管理器。 yum 提供了查找、安装、删除某⼀个、⼀组甚⾄全部软件包的命令,⽽且命令简洁⽽⼜好记。

yum常⽤命令: 

yum list: 列出所有可安裝的软件清单

yum search: 查找软件包

yum install <package_name>: 安装指定的软件

yum update <package_name>: 更新指定的软件

yum update: 更新所有软件

yum remove <package_name>: 删除软件包 文章来源地址https://www.toymoban.com/news/detail-460112.html

到了这里,关于软件测试 —— Linux基础命令行的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 软件测试关于adb命令⼤全

    adb的全称为Android Debug Bridge 调试桥,是连接Android⼿机与PC端的桥梁,通过adb可以管理、操作模拟器和设备,如安装软件、 系统升级、运⾏shell命令等。 0. adb服务相关操作 adb kill-server #终⽌adb服务进程 adb start-server #重启adb服务进程 adb root #已root权限重启adb服务 adb wait-for-devic

    2024年03月09日
    浏览(41)
  • 软件测试面试01:自我介绍

    面试宫,您好,我叫XXX,来自于XXXX,目前从事软件测试工作,已经三年工作经验,个人性格,比较开朗,跟人关系比较好,做事也比较细心三年测试工作经验中,过了不少项目,积累不少项目经验,前面1-2年主要是功能测试,后面这一年主要做接口测试,app自动化测试能够独

    2024年02月06日
    浏览(45)
  • [软件测试] 第一部分 软件测试基础

    软件测试期末复习系列 课件知识点整合 : 软件测试基础 白盒测试 黑盒测试 PTA习题汇总 : 软件测试基础 白盒测试-逻辑覆盖测试 白盒测试-基本路径测试 白盒测试-静态测试 黑盒测试-等价类划分 黑盒测试-边界值测试 黑盒测试-场景法 软件危机 :软件危机是指落后的软件生

    2024年02月04日
    浏览(56)
  • 软件测试Pytest实现接口自动化应该如何在用例执行后打印日志到日志目录生成日志文件?

    Pytest可以使用内置的logging模块来实现接口自动化测试用例执行后打印日志到日志目录以生成日志文件。以下是实现步骤: 1、在pytest配置文件(conftest.py)中,定义一个日志输出路径,并设置logging模块。 2、在测试用例中调用logging模块,输入需要生成的日志信息。 3、运行p

    2024年02月10日
    浏览(51)
  • 软件测试-测试的概念,单元测试的详细介绍,如何设计测试用例

    作为测试工程师,你就必须掌握设计开发测试基础架构的关键技术。第三,随着自动化测试的规模化,测试数据准备的各种问题被逐渐暴露并不断放大,成为影响自动化测试效率以及稳定性的“拦路虎”。早期的传统测试数据准备方法,无论是从测试数据准备的时间成本,还

    2024年04月14日
    浏览(55)
  • MemTest内存软件测试介绍说明-1

    MemTest86 History - from 1994 MemTest86 was  originally  developed by Chris Brady (BradyTech Inc) with a first release in 1994. However, some of the  testing algorithms  used have been under development since 1981 and have been previously implemented on Dec PDP-11, VAX-11/780 and Cray XMP architectures. Since then there has been more than a dozen new ver

    2024年02月16日
    浏览(51)
  • 【软件测试学习笔记1】测试基础

    软件的定义: 控制计算机硬件工作的工具 软件的基本组成: 页面客户端,代码服务器,数据服务器 软件产生的过程: 需求产生(产品经理),需求文档,设计效果图(UI设计师),产品开发(研发人员),产品测试(测试人员),部署上线。 什么是软件测试: 使用技术手

    2024年01月18日
    浏览(45)
  • 软件测试面试怎样介绍自己的测试项目?会问到什么程度?

    想知道面试时该怎样介绍测试项目?会问到什么程度? 那就需要换位思考, 思考HR在这个环节想知道什么。 HR在该环节普遍想获得的情报主要是下面这2个方面: 1)应聘者的具体经验和技术能力, 2)应聘者的团队的沟通能力、合作能力和问题解决能力。 了解到HR目的后,我

    2024年02月05日
    浏览(43)
  • 软件测试:HttpUnit简单介绍和案例应用

    带大家一起了解一下什么是HttpUnit,同时也做了一个小的测试案例供大家学习,一起进步~~~😁😁😁😁😁😁 希望大家多多关注,您的鼓励将是我最大的动力! 我的主页: 不许代码码上红 欢迎来学习! HttpUnit是基于JUnit构建的一个开源的测试框架,专门针对Web应用的测试,

    2024年02月03日
    浏览(31)
  • 软件测试|Docker exec命令详细使用指南

    简介 Docker exec命令是Docker提供的一个强大工具,用于在正在运行的容器中执行命令。本文将详细介绍Docker exec命令的用法和示例,帮助大家更好地理解和使用这个命令。 Docker是一种流行的容器化平台,允许我们在容器中运行应用程序。有时候,在容器内执行命令可以帮助我们

    2024年02月13日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包